feat(core/rust/ui): support ask_pagination flag in confirm_blob

[no changelog]
pull/2669/head
Martin Milata 2 years ago
parent 58276a7443
commit 452857757a

@ -28,6 +28,7 @@ static void _librust_qstrs(void) {
MP_QSTR_confirm_text;
MP_QSTR_confirm_value;
MP_QSTR_confirm_with_info;
MP_QSTR_confirm_more;
MP_QSTR_confirm_recovery;
MP_QSTR_show_checklist;
MP_QSTR_show_error;

@ -11,6 +11,10 @@ pub enum PageMsg<T, U> {
/// Messages from page controls outside the paged component, like
/// "OK" and "Cancel" buttons.
Controls(U),
/// Page component was instantiated with BACK button on every page and it
/// was pressed.
GoBack,
}
pub trait Paginate {

@ -1026,7 +1026,7 @@ impl Glyph {
/// Font constants. Keep in sync with FONT_ definitions in
/// `extmod/modtrezorui/fonts/fonts.h`.
#[derive(Copy, Clone, PartialEq, Eq)]
#[derive(Copy, Clone, PartialEq, Eq, FromPrimitive)]
#[repr(u8)]
pub enum Font {
NORMAL = 1,

@ -31,6 +31,7 @@ where
PageMsg::Content(_) => Err(Error::TypeError),
PageMsg::Controls(true) => Ok(CONFIRMED.as_obj()),
PageMsg::Controls(false) => Ok(CANCELLED.as_obj()),
PageMsg::GoBack => unreachable!(),
}
}
}

@ -31,6 +31,7 @@ where
PageMsg::Content(_) => Err(Error::TypeError),
PageMsg::Controls(true) => Ok(CONFIRMED.as_obj()),
PageMsg::Controls(false) => Ok(CANCELLED.as_obj()),
PageMsg::GoBack => unreachable!(),
}
}
}

@ -5,6 +5,7 @@ use crate::ui::{
},
display::{self, Color},
geometry::{Insets, Rect},
model_tt::component::{Button, ButtonMsg},
};
use super::{
@ -19,6 +20,7 @@ pub struct SwipePage<T, U> {
swipe: Swipe,
scrollbar: ScrollBar,
hint: Label<&'static str>,
button_back: Option<Button<&'static str>>,
fade: Option<i32>,
}
@ -36,10 +38,16 @@ where
swipe: Swipe::new(),
pad: Pad::with_background(background),
hint: Label::centered("SWIPE TO CONTINUE", theme::label_page_hint()),
button_back: None,
fade: None,
}
}
pub fn with_back_button(mut self) -> Self {
self.button_back = Some(Button::with_icon(theme::ICON_BACK));
self
}
fn setup_swipe(&mut self) {
self.swipe.allow_up = self.scrollbar.has_next_page();
self.swipe.allow_down = self.scrollbar.has_previous_page();
@ -66,7 +74,14 @@ where
let mut layout = PageLayout::new(bounds);
self.pad.place(bounds);
self.swipe.place(bounds);
self.hint.place(layout.hint);
if self.button_back.is_some() {
self.button_back.place(layout.hint_button);
self.hint.place(layout.hint_button_hint);
} else {
self.hint.place(layout.hint);
}
let buttons_area = self.buttons.place(layout.buttons);
layout.set_buttons_height(buttons_area.height());
self.scrollbar.place(layout.scrollbar);
@ -136,6 +151,9 @@ where
return Some(PageMsg::Controls(msg));
}
} else {
if let Some(ButtonMsg::Clicked) = self.button_back.event(ctx, event) {
return Some(PageMsg::GoBack);
}
self.hint.event(ctx, event);
}
None
@ -148,6 +166,7 @@ where
self.scrollbar.paint();
}
if self.scrollbar.has_next_page() {
self.button_back.paint();
self.hint.paint();
} else {
self.buttons.paint();
@ -165,6 +184,7 @@ where
if !self.scrollbar.has_next_page() {
self.buttons.bounds(sink);
} else {
self.button_back.bounds(sink);
self.hint.bounds(sink);
}
}
@ -187,11 +207,20 @@ where
}
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 buttons: Rect,
/// Swipe to continue (unless back button enabled).
pub hint: Rect,
/// Optional back button on every page.
pub hint_button: Rect,
/// Hint area when back button is enabled.
pub hint_button_hint: Rect,
}
impl PageLayout {
@ -208,12 +237,20 @@ impl PageLayout {
content.split_right(Self::SCROLLBAR_SPACE + Self::SCROLLBAR_WIDTH);
let (_space, scrollbar) = scrollbar.split_left(Self::SCROLLBAR_SPACE);
let (_, one_row_buttons) = area.split_bottom(theme::button_rows(1));
let (hint_button, hint_button_hint) = one_row_buttons.split_left(one_row_buttons.height());
let vertical_inset = (hint_button_hint.height() - Self::HINT_OFF) / 2;
let hint_button_hint =
hint_button_hint.inset(Insets::new(vertical_inset, 0, vertical_inset, 0));
Self {
content_single_page,
content,
scrollbar,
buttons,
hint,
hint_button,
hint_button_hint,
}
}

@ -19,9 +19,12 @@ use crate::{
image::BlendedImage,
paginated::{PageMsg, Paginate},
painter,
text::paragraphs::{
Checklist, Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort,
Paragraphs, VecExt,
text::{
paragraphs::{
Checklist, Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort,
Paragraphs, VecExt,
},
TextStyle,
},
Border, Component, Timeout, TimeoutMsg,
},
@ -29,7 +32,7 @@ use crate::{
layout::{
obj::{ComponentMsgObj, LayoutObj},
result::{CANCELLED, CONFIRMED, INFO},
util::{iter_into_array, ConfirmBlob, PropsList},
util::{iter_into_array, iter_into_objs, ConfirmBlob, PropsList},
},
},
};
@ -213,6 +216,7 @@ where
match msg {
PageMsg::Content(_) => Err(Error::TypeError),
PageMsg::Controls(msg) => msg.try_into(),
PageMsg::GoBack => Ok(CANCELLED.as_obj()),
}
}
}
@ -225,6 +229,7 @@ where
match msg {
PageMsg::Content(_) => Err(Error::TypeError),
PageMsg::Controls(msg) => msg.try_into(),
PageMsg::GoBack => unreachable!(),
}
}
}
@ -373,7 +378,6 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map
.get(Qstr::MP_QSTR_verb_cancel)
.unwrap_or_else(|_| Obj::const_none())
.try_into_option()?;
let _ask_pagination: bool = kwargs.get_or(Qstr::MP_QSTR_ask_pagination, false)?;
let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?;
let verb: StrBuffer = "CONFIRM".into();
@ -763,20 +767,56 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu
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 = ParagraphVecLong::new();
let mut paragraphs = ParagraphVecShort::new();
let mut iter_buf = IterBuf::new();
let iter = Iter::try_from_obj_with_buf(items, &mut iter_buf)?;
for text in iter {
for para in iter {
let [font, text]: [Obj; 2] = iter_into_objs(para)?;
let style: &TextStyle = theme::textstyle_number(font.try_into()?);
let text: StrBuffer = text.try_into()?;
paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, text));
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::new(title, Dialog::new(paragraphs.into_paragraphs(), buttons))
.with_border(theme::borders()),
)?;
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();
let mut iter_buf = IterBuf::new();
let iter = Iter::try_from_obj_with_buf(items, &mut iter_buf)?;
for para in iter {
let [font, text]: [Obj; 2] = iter_into_objs(para)?;
let style: &TextStyle = theme::textstyle_number(font.try_into()?);
let text: StrBuffer = text.try_into()?;
paragraphs.add(Paragraph::new(style, text));
}
let button =
theme::button_bar(Button::with_text(button).map(|msg| {
(matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed)
}));
let obj = LayoutObj::new(Frame::new(
title,
SwipePage::new(paragraphs.into_paragraphs(), buttons, theme::BG),
SwipePage::new(paragraphs.into_paragraphs(), button, theme::BG).with_back_button(),
))?;
Ok(obj.into())
};
@ -1116,7 +1156,6 @@ pub static mp_module_trezorui2: Module = obj_module! {
/// description: str | None,
/// extra: str | None,
/// verb_cancel: str | None = None,
/// ask_pagination: bool = False,
/// hold: bool = False,
/// ) -> object:
/// """Confirm byte sequence data."""
@ -1259,11 +1298,22 @@ pub static mp_module_trezorui2: Module = obj_module! {
/// title: str,
/// button: str,
/// info_button: str,
/// items: Iterable[str],
/// items: Iterable[Tuple[int, str]],
/// ) -> object:
/// """Confirm action but with third button."""
/// """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,

@ -9,6 +9,8 @@ use crate::ui::{
use super::component::{ButtonStyle, ButtonStyleSheet, LoaderStyle, LoaderStyleSheet};
use num_traits::FromPrimitive;
// Typical backlight values.
pub const BACKLIGHT_NORMAL: i32 = 150;
pub const BACKLIGHT_LOW: i32 = 45;
@ -363,6 +365,17 @@ pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, FG, BG, GREY_LIGHT,
.with_line_breaking(LineBreaking::BreakWordsNoHyphen)
.with_page_breaking(PageBreaking::Cut);
/// 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 =

@ -79,7 +79,6 @@ def confirm_blob(
description: str | None,
extra: str | None,
verb_cancel: str | None = None,
ask_pagination: bool = False,
hold: bool = False,
) -> object:
"""Confirm byte sequence data."""
@ -235,9 +234,21 @@ def confirm_with_info(
title: str,
button: str,
info_button: str,
items: Iterable[str],
items: Iterable[Tuple[int, str]],
) -> object:
"""Confirm given items but with third button. Always single page
without scrolling."""
# rust/src/ui/model_tt/layout.rs
def confirm_more(
*,
title: str,
button: str,
items: Iterable[Tuple[int, str]],
) -> object:
"""Confirm action but with third button."""
"""Confirm long content with the possibility to go back from any page.
Meant to be used with confirm_with_info."""
# rust/src/ui/model_tt/layout.rs

@ -527,7 +527,8 @@ async def confirm_payment_request(
_RustLayout(
trezorui2.confirm_with_info(
title="SENDING",
items=[f"{amount} to\n{recipient_name}"] + memos,
items=[(ui.NORMAL, f"{amount} to\n{recipient_name}")]
+ [(ui.NORMAL, memo) for memo in memos],
button="CONFIRM",
info_button="DETAILS",
)
@ -560,16 +561,12 @@ async def should_show_more(
if confirm is None or not isinstance(confirm, str):
confirm = "CONFIRM"
items = []
for _font, text in para:
items.append(text)
result = await interact(
ctx,
_RustLayout(
trezorui2.confirm_with_info(
title=title.upper(),
items=items,
items=para,
button=confirm.upper(),
info_button=button_text.upper(),
)
@ -587,6 +584,47 @@ async def should_show_more(
raise ActionCancelled
async def _confirm_ask_pagination(
ctx: GenericContext,
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(
ctx,
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="CLOSE",
items=[(ui.MONO, data)],
)
)
else:
paginated.request_complete_repaint()
result = await interact(ctx, paginated, br_type, br_code)
assert result in (trezorui2.CONFIRMED, trezorui2.CANCELLED)
assert False
async def confirm_blob(
ctx: GenericContext,
br_type: str,
@ -597,24 +635,32 @@ async def confirm_blob(
br_code: ButtonRequestType = BR_TYPE_OTHER,
ask_pagination: bool = False,
) -> None:
await raise_if_not_confirmed(
interact(
ctx,
_RustLayout(
trezorui2.confirm_blob(
title=title.upper(),
description=description or "",
data=data,
extra=None,
ask_pagination=ask_pagination,
hold=hold,
)
),
br_type,
br_code,
title = title.upper()
description = description or ""
layout = _RustLayout(
trezorui2.confirm_blob(
title=title,
description=description,
data=data,
extra=None,
hold=hold,
)
)
if ask_pagination and layout.page_count() > 1:
assert not hold
await _confirm_ask_pagination(ctx, br_type, title, data, description, br_code)
else:
await raise_if_not_confirmed(
interact(
ctx,
layout,
br_type,
br_code,
)
)
async def confirm_address(
ctx: GenericContext,

@ -330,27 +330,34 @@ def test_sanity_checks_eip1559(client: Client):
def input_flow_skip(client: Client, cancel: bool = False):
pytest.skip("Skip not supported")
yield # confirm sending
yield # confirm address
client.debug.press_yes()
yield # confirm amount
client.debug.wait_layout()
client.debug.press_yes()
yield # confirm data
if cancel:
client.debug.press_no()
else:
client.debug.press_yes()
yield
yield # gas price
client.debug.press_yes()
yield # maximum fee
client.debug.press_yes()
yield # hold to confirm
client.debug.press_yes()
def input_flow_scroll_down(client: Client, cancel: bool = False):
yield # confirm sending
yield # confirm address
client.debug.wait_layout()
client.debug.press_yes()
yield
yield # confirm amount
client.debug.wait_layout()
client.debug.press_yes()
yield # confirm data
client.debug.wait_layout()
client.debug.click(SHOW_ALL)
br = yield # paginated data
for i in range(br.pages):
@ -359,10 +366,12 @@ def input_flow_scroll_down(client: Client, cancel: bool = False):
client.debug.swipe_up()
client.debug.press_yes()
yield # confirm fee
yield # confirm data
if cancel:
client.debug.press_no()
else:
client.debug.press_yes()
yield # gas price
client.debug.press_yes()
yield # maximum fee
client.debug.press_yes()
@ -371,12 +380,12 @@ def input_flow_scroll_down(client: Client, cancel: bool = False):
def input_flow_go_back(client: Client, cancel: bool = False):
pytest.skip("Go back not supported")
br = yield # confirm sending
br = yield # confirm address
client.debug.wait_layout()
client.debug.press_yes()
br = yield # confirm amount
client.debug.wait_layout()
client.debug.press_yes()
br = yield # confirm data
client.debug.wait_layout()
client.debug.click(SHOW_ALL)
@ -391,6 +400,12 @@ def input_flow_go_back(client: Client, cancel: bool = False):
if cancel:
client.debug.press_no()
else:
client.debug.press_yes()
yield # confirm address
client.debug.wait_layout()
client.debug.press_yes()
yield # confirm amount
client.debug.wait_layout()
client.debug.press_yes()
yield # hold to confirm
client.debug.wait_layout()

@ -1108,212 +1108,212 @@
"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "2fd8d071689edab5e611bbb28f3ea562b9f20231e78f96fbe46d5fb5c65b5dd1",
"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "0741357649375673dfd5cf56b4e0e0c75d230c775b4793a9b0db2c1b32fffbb9",
"TT_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "c37aa27b95f8117e8878fea7b0c12a9a0e13698d52b627a5eec82d16f41c17ed",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "4f30c2076097af02dd3692e5e6b020ed7eac7a8f7ff26b7503e503b661750ec9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "32a67729d086de8cdeb9c021e3f8ecf4b12ee8b1d93fdf5f9296068601db2ebd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9932b8cd128fa9420fcf97b8c33595cd75ebfae1a4cfed0e9a91d5f6d65bcd15",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "4c2779981422442033937f15c843b6f7397de568ce7c44329c7bef2224412bcb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "4c2779981422442033937f15c843b6f7397de568ce7c44329c7bef2224412bcb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "a5b1615868489c966a3b97eec22b3ac0482bac9144a71d273a3bbe642bb86c99",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c83d2a7f517fbd7081ae8fcf89cc53c27862e9409f2658fe97b93bfbd20cf4d0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "5163e3fc8c579afd343094b7d69fc0a04c02df8517f3cd385e56d42b5a194b10",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "ce7f8956aec13fc7c081c3538d9ce2dae8cfcaed70c74324ec0f46b699b4b915",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6afd9d1934b1ca224bdbd5545e059592dbf27687b28c324c0b03234deb738113",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0828ee0cbe7aa3c22ee58331fd27d97c5bbb972f84fc0096dbb6aa891c76bbb3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "756111e6a186d5e6aa2686ce2511e5e720c9a3049f4c8f4b8a9242cb9bfee1f9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "5391e3c3d607caac3db80bb94d31129735dff66e09e81bea83f3caaef2fd12bd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "309aa015a235966a0d42fcd32bc93f1316f056d4964563f2b41709bd0b0c0a6c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "309aa015a235966a0d42fcd32bc93f1316f056d4964563f2b41709bd0b0c0a6c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "95ae62b77beb0bd27bb6019b685b2d0b34bcccf6ff651945f623d4fb8e1cdf5e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "6cf09b225ae15587f594f1464c93f18380881ed2555f88114843c0d17b37bfbd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "c7fe8efb4c9835ddd35108e2426870a3f607ba6870980a68864ce8f2fea697b0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "253b84740dd06494d09f752160257bd6e03fb9e060395954c1ea2cdb5205736e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5c5fd2d4d25fcf358f071321c5fcf26110d0deddb7b5b31ca7e40f24a550656d",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3fd262eb4b3f41781fc165b88893fa8a4dd1a4909189facb297d27bddeddea61",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f9a065359a5ff2e72b0b4dcbbd254f686bc2c87e3806cd04996bfe2e8e590d2e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "91f92a1df22465d9a3304860491f4f14271aaec46f4061a6701deb0f609af685",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "4c2779981422442033937f15c843b6f7397de568ce7c44329c7bef2224412bcb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3fd262eb4b3f41781fc165b88893fa8a4dd1a4909189facb297d27bddeddea61",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f9a065359a5ff2e72b0b4dcbbd254f686bc2c87e3806cd04996bfe2e8e590d2e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "11eecbb134a4d1631304d2e17a47fd99bd64d9fa796815cc75aa06aafed287cd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "253b84740dd06494d09f752160257bd6e03fb9e060395954c1ea2cdb5205736e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "6b1aa08d0204fed9e5eda2d12a6b062457f0b6497fae9d1f5ac46a3246b58054",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "24f306b8a94eb12a01cd95e4966f2724899a38f546a0f37d0092018d5aede921",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4b4507c38fe21359d888ea026a01291af162f50878ebe6df66d8416b3aa07fba",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "deb8173f8c22155840f799af341dcbe601574d925bb428ff9d7f0dc079c32aba",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "8b960a3ff728a4c21e2778c645ff2b6dd66be7c78678c9e1a050140e2a7e3973",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "fed7ee0073925ec11787a61622ff65eef7c15842dce6805ec9db7b000d0d232a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "9f591eafcd044e0dc67fd52c51624cb9da1a950de334655064e276a26826c80e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "505705aa5d025a58e44d0cb2e547bdf4437fba38f7fc262d26a7eda2d84608e2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "3286bf5fb05447659c006971c28cc6ae2694d30b8c3e9f3027f74b8dc49d9c8f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2a14f4fefa8987ade69e38f3f91c3f2096bf19c995ce469e2a67bd1a8134b8b5",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "34f3b0ff2d832977480a2f64b472e52d963c200fd2effcc8e96430fd6834690b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a28e0df4dac46467100eb3e31e50709a6e9d5858f6469a796519b651efa98955",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d9535e98382626774133ba9bbb07fb8c39daf47f3d0ac59317a6aa2d661fccaf",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "b7ad0569bb54ef3a6ff553bb187293daa86055181a25b7e33cd51fac305f1429",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "cc50c8896c4c8b90dae3f8c3a6cfc0f57ad38301105a12ba4437ce1554f7c8a7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "e868ab44ec8b90cde883d3cdaa3436e1c47e84e35d532a7e2d56e563552444ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "59b75043516dda16a4a260788b167d4657ad5c93fdb6e2ccefc13433b46f8ebd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "3a51754a660e1b302280ba3ccdabc99efe8aafcad7deeea1dbcd6fdb7f542af6",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "860eba3615ecd8056908434d9ae18978f489d070a7d7878576d329c8ff3004ed",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "b8444bf70948d8732059a69317a93aaf1834e3665f22631dbe8500648725fe21",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e3ff47775a88dd59a24b9dd78c2fcde3f5255b2be6435b5bd974141a1de62a76",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e3ff47775a88dd59a24b9dd78c2fcde3f5255b2be6435b5bd974141a1de62a76",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f17682c79e9b4d026be4e487f63abac761c5d72f538047dc805d07cc2a84ced7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "1cca043080f2e40b8bc37ac0a1de5acc045197279343534b6e9bcf3c85a94687",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8ce777dadd653c0f92d710bfa8e3238a8727d5d800ac205a2804266d9cea3727",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "952970d549bd6d48ec4c7ce48809cbe1d50be2026bb00b7227b3266e546ae97e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4984594fb9db1dbb5c214573d485b34c0c859a6be381d5d6e43dbe5e85f53e1c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "b59bb7d488052ad9d0d0f5edc230cd77f90d73bed2e3de9d9b4c16fdecf0a1a4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1e807ea06261fee172c9ae6a8f48741b7d6f1ad8ef84646a1bdab50176aaa7aa",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "253b84740dd06494d09f752160257bd6e03fb9e060395954c1ea2cdb5205736e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ec72a172971ec4eccf3b85ec729cf8b1533c7aebde5f7f29068e257ddd3ef19a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fce676db011dc9cab97b87401b5bf2107d49d5ae6cf2207ec0ae477ecf6801b1",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "60f1ecc38a97d39465008a80e8dbee555b4d8519698f7e380b9a9537b90fba59",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4fd5a9a14fdc81ca2faad55a688ea6210ec80a99809fa25a678e5eacbc63ecd9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "0260f84515ad2df908a519d0edc6da8432aed947447f451056eddcd29b5bd141",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "6efb96ea84967fc4b1ea1236a7eac445ce567b6e1eec68a7c8a8f460dc549640",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8a0fdb3f3ca64af038bac3d73d82b111ac382e0027171c988ddb786efda7fef9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "253b84740dd06494d09f752160257bd6e03fb9e060395954c1ea2cdb5205736e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "652f0ebc15aacf70ec60f7956497167f18efaf9fe25bf36cfb40bf42bd584974",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "51620c879ac7044e59409d60fadff35a2d9792866fd04eece1ac3c0d30ad7d80",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_governance_registration]": "4a7578ce040fdf4290136134809b6033159d4bcc47fe4bf20c77e83719291d01",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_governance_registratio-35e04232": "22ce734851d7399166ffbbae7911b5cc302a81ba6f12304f7af4f676a9815cbc",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_governance_registratio-f00c1b65": "a294cccc11cc64c9ff51642761b3855e1d5c14a742c649fbb596c377be61ee67",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "a30ad643ebe549c0091434099da34aa3a2392b26435c8ed1063beb50277fbcc2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f91bacd3e8f5cb580cc8872b9417759fca3f130532872ca9cde8496e9366a9e6",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f91bacd3e8f5cb580cc8872b9417759fca3f130532872ca9cde8496e9366a9e6",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "705eb7c29260e68622bce18b1e6a1618d89ef7603cef768cf4aabe54dca74036",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "bc26f786862a45167ab813a8fd30384143cd4c9bb2126e5c526f868ef3923c86",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "39ab8aa148c386955d54f7a947cce96178d166f50479e412864219a15000d30f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a1e5de601e5a884572d6de1d8a17aaee0cf5dc17e15bfb65044098c0d1044738",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca80ea1339c424e0364c7d74fe65197d9417eb32f2f809b83199f50b3a37d98d",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "589b57052ddfbed204ec3c9c7d8ea164ba72e79d8f6f32f8df117ec16f38812e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "4c2779981422442033937f15c843b6f7397de568ce7c44329c7bef2224412bcb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "4c2779981422442033937f15c843b6f7397de568ce7c44329c7bef2224412bcb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c38b30ddc969a5e8d46a182745b2efb32b500b6ba77a9f2a987ae11e0185efef",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "fd43027f1b59e1b3b7597485e4baff2ea5dffdcc220bd5c311fc823751eb1493",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "552959aba3be2ec8efe7ac24b8f35817f4d652451fa408e1410653dacee20ad5",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "4f30c2076097af02dd3692e5e6b020ed7eac7a8f7ff26b7503e503b661750ec9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "ce7f8956aec13fc7c081c3538d9ce2dae8cfcaed70c74324ec0f46b699b4b915",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "505f5bb1437978bf803ca98ae2f39d4ee39f2798116b1bdfd7440e9adf5546a8",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1224c16621df898cd11a6cce817e9fcca8ad782e0f78710bcce0b8d9cf99051e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4d5c91f8b4b27fcda4483c4801de7206afdaed013aee9c0dc13740f2bcba7a77",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "aa4f9eed5e70fff58c6018db8dbdaa319bfa256f2d088f1300849d9f8471c85f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "aa4f9eed5e70fff58c6018db8dbdaa319bfa256f2d088f1300849d9f8471c85f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f3232b40261cedfac96647ac9a7d351c6c13c4b7acec60024a540b27c6e0e741",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "e0f22c19af3d3ed5d31d03af536e4c6cb4177193c4f8760bbd7d2c9270550376",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "a56b65f8e4c19a243a513bb216729b35f86feb7671f7bcb4ee4df7056481f369",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6860b80bbb15e170015d41fef8a6e52b7cca56804cd806a71884b812b8c8402e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "e53cb22fcc618da83bd5651b6e759eb56b5995a7eb403ed5472ac0a33018ffce",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "dc302b9cb9b713ced705d28c08fe3d1c20bb1a32ae7c3f3bdf0c7e4514de1ad8",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "cb36994cc7e412e9373d02b9cd5022c8cac08cc982f9951e615d80403ddde346",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "0ec58ec9d720c4c17fda7520ba0ef0318b6899db4d22fdb9d434d276a96984ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9fcc6a558c575b9000cceb5499ba0f8dc5865d62921c7642d135e5d7e13df203",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9fcc6a558c575b9000cceb5499ba0f8dc5865d62921c7642d135e5d7e13df203",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "951f31a90354b0f1b3f6802c5453188a9d77dc4b666fb8cc52236789ca3efe14",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c1006d391004f07d9bd13760ef02f978f027bd29688239a569f06d3851344e45",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "326e164770c50dbbebbdf560b9a4d8d82e2bdeff34ec60bbf591cf72743bcd9b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "89df7cb04d0d51f86d337778aae92dbe9a8742d0a6d609f63677dc217d3b886c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5552844c1bba97fcf068c5092ec6665080f4d67fbd06002a9fad7f029b903005",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "01b598832c2382557313026756eb558e0c2abef243b5827c767e39e36b5e40d7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "d337d33b8f070e1fbd9fa10c64a9ffeb22a7688bf7efd0b978966d3d0bc46140",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "2d9ad42343f2d2911ffce49bacb8a34cd7038ff0cac567cf3eaacca8a9ec6a0b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "aa4f9eed5e70fff58c6018db8dbdaa319bfa256f2d088f1300849d9f8471c85f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "01b598832c2382557313026756eb558e0c2abef243b5827c767e39e36b5e40d7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "d337d33b8f070e1fbd9fa10c64a9ffeb22a7688bf7efd0b978966d3d0bc46140",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "34974c63739ad872aa3c36fa075b375a467d28e1690fbbf30c65a015a93258e7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "89df7cb04d0d51f86d337778aae92dbe9a8742d0a6d609f63677dc217d3b886c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "97d3e298dfbcf69299ecfb3afb05dbf785c4cdb85d654d50aaa1341902551060",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "2cf8383f7f42fdf7f889afa0e470e58439eee1ad35a4501736ea34057a87eed2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "aec96d64cc5593781bdace5bd7b3898d50045bf995906fd9e32a6d3da448c10e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "c627edea114d57d004cfee7ef7bf01302f4bc3213d0784f18a72e235b1d1f67d",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "cd8eb5284368264cab2527d52622fdc6507186d0f3ec351371770a815afec1b7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3ba03d08fd8e5beb0cf9142e531517c9ee278e5bae979106b493d48379fd6591",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "dbcc92f2792bb772af743731d05612f70e88ae803f9333cf2f4f4b1a6e52341e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e3c0c1f9ce6ec0111d9ceb7b7737c8daebd8893e9a5c141402d9a85e559cc277",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "42e27a6a8cb2abfa0e7f0c38716df323b106ab8f6e65ab9789ec985def0a3d0e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "289a702a874636a5d7a332932557d8f03ef1e0cd04c1f46f9556a12110bd5d1f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "fce8b50ac6dc098070f362e131761bcc17b9d9587fb95c2174e5c31b5d4c95cf",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "18f8cfa1e972bbbd7319fc28791065dd31db719671c4cb10679e6778effd9f7a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "e5bdb9fc49dee5d01b4f7dcef97d41e49070a8b739a6bbe349f9e23ef3ef9880",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "80ba728c16152c094961f062d6468da2cc8758d42c65ed097927bfb2759846f1",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "e88e1583002831cf1028d53c0c1b463089db4825626bcf0cb5dcb908d6bc42f7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "2c891a24861940ec8068a197b78c336fca793fe377893435dae98f13f7fac6c7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0236c837327a7479d9791260ffcf2c45f34d1c1181960d1d4e3fd13cceaf46d2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "33fcd118c1f72d3abc8660eae6d8b05ae4125286a5038c28732954a56d9dbf02",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "3f7fab657bcf6078eced0058b12816351c29319fc52c4570d3fa84cd2491ac12",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "9a2720a995a231f304991599c13ae0126cec77cb7ace9bfdaf938cd40a17bdf0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e3cfda244457e498ce29d79791cc457a0cc0703cd2530d0f02d28d4910b81623",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e3cfda244457e498ce29d79791cc457a0cc0703cd2530d0f02d28d4910b81623",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "47b0e9eb4399ce3bdb092977c9257045ea5c11afb099c08ebb34e9d1f476017e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "334df205f822a08d7dc0b524f07bd53ca982d6ed9d36063ec3e5cef42d37e375",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "a7173e7d863d9fb8e43169b015dd736eb3dd8c8688b07c4b1b1031defab21a85",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "0d9a9ddd5610cb015d42c55043d84fa7f4d5d42ec03f0034cb9961f854f124e0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c0d0b60c4b005117bb12a398718501a7f38953d7cce05d99821c1d51c6f80d67",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "0f5f9eb5767da17d8e95a26fa2df5f0eae2e0f8e5b81cb1088cade0343c92a8c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "014a4cef413f0dc9a48012290fcfcceed79011cfc17329cb3982723ec248f2af",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "89df7cb04d0d51f86d337778aae92dbe9a8742d0a6d609f63677dc217d3b886c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "596d1626638fc0917484d1f4246f2ec8d85ec67a556fb453d2424938e9e85749",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "1bcc06bafa194317e16b8dc30a657324c0b4f78a4553cbad15dc5cfa8a207565",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "505b663045e77d3ee58cc9dfb198f3770824dcc8e7ec9794db892616e237738c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e8b53097265783cbe9e96c21846068192a8e7b218b6a649301998e23a81711d2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "e2c59b9314474ec4a5df1089894190a43b0a3fdacc5e8f1c52932b62aca08a3b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "6e8805dfd99efb159061fe2bbee89d102b9bad292a5ac84756ab844dd5f8cc91",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5c5331ff5ecc9001b96d9d43ecb80120018c7f7a7993f01bca4511451fa84ecb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "89df7cb04d0d51f86d337778aae92dbe9a8742d0a6d609f63677dc217d3b886c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9d0048bc436c86d3c562bf09e72dad9a4ed3a4117c4e6eaaa2716bb94262e8d0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "8ee3556ba15446591a1d77af0e45fbb57bf6108a5d22b0b0ffb1e462065558c9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_governance_registration]": "bc748156e1556f72601beb421c48851bf4a0674c6017d8ae44a2e687867717f0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_governance_registratio-35e04232": "7481e493e89dc0ac6e65bdc1f496f7ea3b51444f4e7f1c415a8e29c454c5d10b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_governance_registratio-f00c1b65": "04504b0c5a5ba79e7bd26a6edd9757ebaab51f1f6b564c4f2f9924ab56e44ba8",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "fb9ee2bb9603ee222ce01d3b4123b5730a60e33568be61a3c80ea6a87f489590",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "296ab007509b1f523cf02f811c51b6d3536bdb5dd73f140d0372dd3d471763a0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "296ab007509b1f523cf02f811c51b6d3536bdb5dd73f140d0372dd3d471763a0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2f514076437cc1929ed587fccebd84210f6c9c629f0d63455258e93978fd70c1",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "9146bb71443b9981cfb5c36df2ea41879e36a0c3672c7c4c35bef3f0d3e3f630",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d486c7214a3b9269db0f204fdf6572e337e8872b4701243b8b08f1e012c7230c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "66caaafd6ec60c4e8b86fbd8a6ad9732076370dc544cff0b17c85195a22e9d3f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "69aef658cd7b6af1d0f2682efdb4291f910facaf131bff2a815f95154291e355",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "ecb7c00e308de7c93e9e9d3896a09cc10530f8596a70399cd6b8421d01a7940c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "aa4f9eed5e70fff58c6018db8dbdaa319bfa256f2d088f1300849d9f8471c85f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "aa4f9eed5e70fff58c6018db8dbdaa319bfa256f2d088f1300849d9f8471c85f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2b12b6a2941e594747cf2007b5b86afb996ec6176804ed2b8646ac26c9b539b9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "63b06367ba0d4c71c1a9aa0e0d9b8d091041b2149c597dcb6e6a8893e192cb88",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "5269748983fd41d70114f88f2dbaa3e302a010d84e7b432f05586f67c4e84843",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "505f5bb1437978bf803ca98ae2f39d4ee39f2798116b1bdfd7440e9adf5546a8",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6860b80bbb15e170015d41fef8a6e52b7cca56804cd806a71884b812b8c8402e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "36aecc1b576f7df095050368644c96f6c56eaca8372bb7b314087c5c075b4437",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "47fc737f5b35bc245c6f6edfd4f4ddd1177c6564590554b250c62d6b95382226",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8bb028d47ebd1d9f0cc5ac4059426e9f5fdb54043b3e50c6bd4f173ef066d097",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8bb028d47ebd1d9f0cc5ac4059426e9f5fdb54043b3e50c6bd4f173ef066d097",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4a3782fe2193f8fc6309dcf935a87b47f3a5f55604d467a4c1bf1976bc264cfd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4a3782fe2193f8fc6309dcf935a87b47f3a5f55604d467a4c1bf1976bc264cfd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "921039685cc31b73b25fa16678174cdee3bdf4512c811da3f4f5bd37b9c8444a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "0c5ec2cdde8f3a2951bdee6c7bc462fd9a85d9643cb92fb5a3f757cecd568433",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "253b84740dd06494d09f752160257bd6e03fb9e060395954c1ea2cdb5205736e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "6bc4848d19701188eb0e96d1edd3ec430e1adfbaa4b666e956ea719c7b07073f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9d4d3c9f98478ce248c391db14dc921675de5368b04c4a483c1004eec3929a9e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "89df7cb04d0d51f86d337778aae92dbe9a8742d0a6d609f63677dc217d3b886c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "cafdeeef28263fd48af6ea27c3639a58b38fb960e66aea8abed96967c3997b40",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "01d2d88cae2eff95d6f149a6239ad5d390bfe77678942da6cab9412bb2448ea4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "5bf57fad9179d04bca9ced9b14cbe25c40aee3390fcfaa7fcd1dbf4488c74564",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "52b75391633844b8e16542320a13e8a01483104195ed36ede5ce2d52696a6700",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "dde99708c96da28baf9210985c846de0dc223f1410477bc63605299d18348ac1",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2e0f33cd226d5ba5b791b756cb81addb2f9add683f98fa4df76d21b45e1e469b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "a264d3d7df836e15a98b2e4faa0c08a86e08e23771d6f27d7c5e39ddf14843a1",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "58beffb093ceec399dcef3ba163cc0336a7bf5ed7c041dee4e04678b4df8b558",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "edbd60425c847c0b8e220d20ccaa57b33095fdefe8830e7dc74f21f4d2b08382",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "af770c0c58be97298a77325fd64e1684eae2463565fdef199ed0b8e4569f8361",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "edbd60425c847c0b8e220d20ccaa57b33095fdefe8830e7dc74f21f4d2b08382",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "edbd60425c847c0b8e220d20ccaa57b33095fdefe8830e7dc74f21f4d2b08382",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "edbd60425c847c0b8e220d20ccaa57b33095fdefe8830e7dc74f21f4d2b08382",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "01d2d88cae2eff95d6f149a6239ad5d390bfe77678942da6cab9412bb2448ea4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "dc00ce8d9406d2da5f281c456377c015a98eba4fa6d1b9600c27f059b6e3e767",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "42be7027e831c6ab5e9c40d9d0b0f082f35a258243e229a09eba2f4aae07ba27",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "c1c07515d411f4b1f58c9aa793138e57f01e5b3ec12f167514c698a1b0580696",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "19967799d8bf312aeceb8bba830e56bdd16af8a587d8468db725abdb5a49bd9e",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "18a0ba5b88ce510f691200a4f1cc7bceeddb554702fac04ad69150a9c2603207",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "90a417eacc8891391e3be7dcff02345965a0380d63973e7c9424cae2503cfda3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "575c829f67f709a92996641057b119df8175f9b4dc487c9eda1ef324caa8d2c9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "af770c0c58be97298a77325fd64e1684eae2463565fdef199ed0b8e4569f8361",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "af770c0c58be97298a77325fd64e1684eae2463565fdef199ed0b8e4569f8361",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "af770c0c58be97298a77325fd64e1684eae2463565fdef199ed0b8e4569f8361",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "52b75391633844b8e16542320a13e8a01483104195ed36ede5ce2d52696a6700",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "4ba3dbb8022c1c76c98aa53b992f441991d557e3f9e5281b7cd265d6e3640457",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1d85fa81e1aa8a01b499b6c532c5594dc2f4ffd29828e4ade6d2ce06bc22fa82",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "8e045b41f916a735b2f936cc794f01145c31295b28f73f332cec43753d8517a3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "3923f51972964b7cd5923c6603eea3b9960d59afcda14fa737accaef6d2c2571",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "0a0ed967848d7e59ad0d8716125448a3875744b81f89e4bf3efc38b93b3f3dbf",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "7ffbf98999d2008606af11a6ea5bc04350d6c716c80fb4a79774f79e2a6a218b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "96eb42bbfbb2fb68b7fac4e468254c4c30f2dd7395d06b09d26d02e6e2ea14d9",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "90320361ddd59b67beb56717c482466bad57abfaa188ec3a54c2d056cf3bd54d",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "ca137c99981070e63151dd97428b8dbea9fcf015cc5a18d87469ee6eb1a43de7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "fb8deb05086cb514e3478073914a8846fa668b4be7eccb86878e87e7f117c3c4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "6c0b1c1b2642569775a19314155e8bfbcd80ffcca4fc718d7cec8d7489a54fe3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8bb028d47ebd1d9f0cc5ac4059426e9f5fdb54043b3e50c6bd4f173ef066d097",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "f4239a00f708dda4bae756d971cb50c0152e4abb992c7957a83bb6282c32f0e7",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "9940d1aa0e7483136588dc5cc634bb0dc66eed0dea6bbd7569d3d975bd0425c3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "1874ddaa7146fa35b1b10a056e7730a4a80625162079f3f05f406a8b1009c212",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8410e4154f56bb0964320cbc2fdd49e91be2ac0ddb6344bb551c0c83330a0871",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4a3782fe2193f8fc6309dcf935a87b47f3a5f55604d467a4c1bf1976bc264cfd",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e3ff47775a88dd59a24b9dd78c2fcde3f5255b2be6435b5bd974141a1de62a76",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e3cfda244457e498ce29d79791cc457a0cc0703cd2530d0f02d28d4910b81623",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e3ff47775a88dd59a24b9dd78c2fcde3f5255b2be6435b5bd974141a1de62a76",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e3cfda244457e498ce29d79791cc457a0cc0703cd2530d0f02d28d4910b81623",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4144c9c83120ec6bfe6e865afd84db25e7e152d4bc9f9bfdd69a38f101cc07e4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dca98474dbc06988577799ddcbda18dd41a031568f72944cdecd626e5f4f6e75",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "52934629dcd68007bbb0858710eaabd237230621c2b7de6239a2b371f663fc8b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "da287cafe417a9f5da66bc9a9ffdd1b9e15d6246f36e4ba582b0a71ec4f68970",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1f82db792c7f84be3892554596b7888e0ba7808947ff05e864d16d5466a3b6e6",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "6982531771c4d2494974e8f37a720a50fd51d1e94438d0c6cd08bb25265118e3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "b638a1563c47f75b2645311579e19ea431857837b9422add311fe765216091eb",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "96cb528ac586a674b964898f94993c9d975e1a18c2782e83d298b5ab75285079",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6f59841dc5e3597d0940a7b4be0813b25555652180043634c9018272c5a22a3a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-d83df998": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_voting_public_ke-0ded7777": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_governance_registrati-efb78b43": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "4ce6a2c9ffd6e26da53fa0a303b5a60c5d1bc4b0ec390fe70f08250fd0635ec2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "cbfd7d957541a2ab43c47ccdcf2fa61893d817f888c2ce65af0af14b61c11425",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "f503d6b7b96de8540ed7d424b3aa133860b162f52dc8a68d2f3050cbd1a88759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "912fc32a588f2c92d8187631747bfc798ad9339e93423af084da8be6aaff9a1a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "6d758feb5cdc4b6953a67fac95e67c03ba61c5e9a99e623950b0899a298a6b80",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c9c437245d9be8bc36607025240ed0dce2fe56489799709a281f5ce7e33f9759",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "ed773e474a7b39f31c6645515b31579b3bdf4c0c2b194c86fd38610b500d645a",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "a8048b2c1185c06407a194eb54290e4edf438dfc49f34eb9493d35cd11c00363",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "7b64ad790b0ca23960b981a45c7d918fbe14768fa2de59404298d03b4f763f78",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "37f28a7f70942647bf35aa40d24cc3d842f79e15e514624e1d9250f4377d818f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "b69211147aa82d37c434e1169a506f940330baa770039fcdfa3453bfbf26cf48",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "f67a37d001a8ea6c70d67285f010c6a100eb7c7d1621967c8653293cc7cb7115",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "1b2f379e101b91e6eb280e394d387fc10dedcd02bccd6b7bad27d3f426ef965b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_governanc-36bf9253": "03ead51a6a99f2b32cd9cb66a52622de49a8ce5416ca17720f877726fc3f3105",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "11868c64ad27c6b715cb9e598e94b9085c973ea885ea3526b84c06ec5637be5b",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-d83df998": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_voting_public_ke-0ded7777": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_governance_registrati-efb78b43": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "99a69a5c32d41dc453d538463145c453eaa25dde104024c931e7293e002eef4c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "b5c8dfc7cc49f38e522dccad951a245534d1dde7a6e36beb0ce63c3333f214f4",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "cbe921b418b34a29b9b8f273c67accf49f85198a272a62162b9ff703b734d3b3",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "48886924e4ab7f93b58398e3a97d043fc17994274e844c1a15fb2f8f782716ae",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "86e53000525ed705e48a75a1e582a8b9915d921f14f2fccc9e7bdf69b9512434",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5c66ec7042d875d70f4b5063b3a61550687515f9214eaffc4719a9e9f9b7651f",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "9b3c135bf9d0fa914156800ecf21c37d87bd3cd44769885635b348a6a1207e7c",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "0975ee263cbd8a57cb154ee6a1c5e0afd9eaa9736f41a1378c232018e5da4363",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "2e2dcebc0757ea352696e4d0342b0163f9ea9097ffd6a3c46a03dd89abbb0281",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "b7e639dc3b4c01b3170cc058b56b400eadce8ec7037217696f8e78e562f50fac",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "043e8ace7841d83e8a55ff5924072f01b55712f431c8ed6067a3d2380d4afb72",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "0616c02fb9e2a0b12cf55c81c8f09367f35daa33d6c2c09291e89ee109c113e2",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "b94c8eb90204894b61e1fcc8a1935b12342e07e82a77b460b061eb7031aba6e0",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_governanc-36bf9253": "ce2a0b491e97016b747dd9fcef4b4d2125c6209fa97cc88954b3cfe9e39e48a6",
"TT_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "1df8130886fd328d1cfb13682d514f8a0e139bf52d4bab37fe52cf001d0106f9",
"TT_eos-test_get_public_key.py::test_eos_get_public_key": "3d1ba8c6d2132b7e7f61511a3b49c18dd1b5563578ae57e7ab476e23c49b20dd",
"TT_eos-test_signtx.py::test_eos_signtx_buyram": "ed4c2fce8b8f9c65c4095239927fda115e3bb5a268e32a1c61c7f59d46072406",
"TT_eos-test_signtx.py::test_eos_signtx_buyrambytes": "115173e4c4c5e820980d8bcd879c39b9d35894445cb9038aa45bc7dc84bca752",
@ -1343,17 +1343,17 @@
"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c",
"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c",
"TT_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "95a40f79fa7ffceb10e89b513c203b4937112b8d764cdba3c1df538355dc129c",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "d956173e83f18021dfa4f78e474dccb865386e3ec02f2006b6e4886d5163029e",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "2b8bfb9dcca1ae83b230bbb93606e3d61209b8b78f766a85d86107cdf0b75956",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "30ccf9be3f61a51d98f98466edf73d9abb96d0082f2fd16d5d1ff4f4aef0fc20",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "f6e50b2b6bd147375a8792f82de775f1a479528f9d09d523633b59652b2d53aa",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1919cc5d3979d8c664d740b06a104409dedb21c171b8d1243c1cd8bcc7bcdca8",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "724869011909189b15b70ff5a5cc1cd64de94f7cd6dc7b5ecd85fbe060693b2c",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cb39f049291853a97887998967150c16c265c4c4d5de4c951732f12ebff82692",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "8c87d756d09f446a7ad7bf15d6126513c17d55346788bc9beab14cb102d851d5",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "d4cdb13cb952524cb9643df35185b7a5018cf3ac2b9c5d20006d7e11ad10b42f",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "a373610eb3a47f876331b93f09f0adf464557d3f6fe88c607dbf00e633598727",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "dff1b0e595c3794d56d85814fbe4a94465a2f602b2a1443a6ed510b7b3609ba5",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "26843235253c899a57e7fc0fce1ff84e67c77b56e386df315a92f688ca2c9557",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "266069f67cd5f96f348046dff22a76744d626cfb184e230a59255db6de2e08be",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ad6d82d22e92ce23ae61286561c6ab75c6bba88f99c6e1e6c7af7f4f35c325e9",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "dff1b0e595c3794d56d85814fbe4a94465a2f602b2a1443a6ed510b7b3609ba5",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "dff1b0e595c3794d56d85814fbe4a94465a2f602b2a1443a6ed510b7b3609ba5",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "dff1b0e595c3794d56d85814fbe4a94465a2f602b2a1443a6ed510b7b3609ba5",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5fdcecbcc9fe313b0b36b2b0419907e43480feae5590174a57a0ede123757473",
"TT_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "a2da9f029cd797a10b140b8e36d75aef264d83f938b6ccd34260920354296714",
"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "84d134d90391b168c62bb6f4f5bb57c66f3f0057c1befe49b4387292b0dfe8ac",
"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "39ddbd627c16721e3ff87b177ecf84ba92c5b96054dfd1e271844c5763214aa1",
"TT_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "aaa0cc0ec8efd2a7d4dfff1232f2c483f9f546e7f7c0228898d1ff523ee9e90e",
@ -1371,7 +1371,7 @@
"TT_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "62ceddfb9ef74dd45df751e002d724ea2e3ea4abd460e95feef16a0b04cf32a0",
"TT_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "07ee5bfc9f4a873ddde1c5e1a83d3ba591264a7c6717cc6e031a16eae4521cb1",
"TT_ethereum-test_sign_verify_message.py::test_verify_invalid": "ca75d569edabbf4b873a9a52d4b322502ac88164e83797393b00e553b656d05c",
"TT_ethereum-test_signtx.py::test_data_streaming": "d64be661a1380337ce6ddf8e76f79bc3183e636638f27cd89934c5a8650e30fa",
"TT_ethereum-test_signtx.py::test_data_streaming": "5b34af4146ca3e1d66b6e1a45ca8b6b63f45453aa8f61764826de06110d31b1b",
"TT_ethereum-test_signtx.py::test_sanity_checks": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1",
"TT_ethereum-test_signtx.py::test_sanity_checks_eip1559": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1",
"TT_ethereum-test_signtx.py::test_signtx[Auxilium]": "8210914d4e083ac53f0feec2bbbda3dffc2dc7ea13aad9ac1ba42cfdfd3a7fb1",
@ -1385,23 +1385,23 @@
"TT_ethereum-test_signtx.py::test_signtx[Ropsten]": "f4f2f7b08b8c0797cafb7e055b9435c80383b0ddafddb69ba8edf8f12a8e9fda",
"TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_eth_path]": "999f2dba5a4702dbfed806f541bca0f650f751e12fcba27af83239b6c93c5c35",
"TT_ethereum-test_signtx.py::test_signtx[Unknown_chain_id_testnet_path]": "999f2dba5a4702dbfed806f541bca0f650f751e12fcba27af83239b6c93c5c35",
"TT_ethereum-test_signtx.py::test_signtx[data_1]": "f03c8c1991c9ac51361160181ad2192bcdae5d1352b7ea6520a50330ab26a225",
"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "746d1d2891ef57f7f00b465495c624e56687a58cd5f3d3680aaed4a1fa9c22b6",
"TT_ethereum-test_signtx.py::test_signtx[data_1]": "22db9b529eb20b2981e961e81dec26a686bb5e672d608b8fe3e8336a2cbb3396",
"TT_ethereum-test_signtx.py::test_signtx[data_2_bigdata]": "c448a3487ebb722f83bef5c8260038e61f56e8afdc54b71f8b2b4d7931885f13",
"TT_ethereum-test_signtx.py::test_signtx[known_erc20_token]": "5a9313f98c8953020e11e731526acb1a87dffe5b6c2114880f473cbecbbeefbb",
"TT_ethereum-test_signtx.py::test_signtx[max_chain_id]": "999f2dba5a4702dbfed806f541bca0f650f751e12fcba27af83239b6c93c5c35",
"TT_ethereum-test_signtx.py::test_signtx[max_chain_plus_one]": "999f2dba5a4702dbfed806f541bca0f650f751e12fcba27af83239b6c93c5c35",
"TT_ethereum-test_signtx.py::test_signtx[max_uint64]": "999f2dba5a4702dbfed806f541bca0f650f751e12fcba27af83239b6c93c5c35",
"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "f93f6781a68279a0991f4b97e668d7261ae4a1a17f17b345e3ee1e5ebde4a256",
"TT_ethereum-test_signtx.py::test_signtx[newcontract]": "3e50a6b53b5ccc29ab7cd92df9b5fb5ca67ff64bed1c4b0a0d95e93cbca36e73",
"TT_ethereum-test_signtx.py::test_signtx[nodata_1]": "07340b504562add1d5011bdce15683f696ac07307219ea084b6320d6e873d181",
"TT_ethereum-test_signtx.py::test_signtx[nodata_2_bigvalue]": "d1dc780fa5e796f96c8d28058b9dab83014d2390aeddf3d2d012c49d485e8deb",
"TT_ethereum-test_signtx.py::test_signtx[unknown_erc20_token]": "aa670aec57d9248b50d23787b3776c2e552624f19fd32b4f406966b5e06c9f66",
"TT_ethereum-test_signtx.py::test_signtx[wanchain]": "20f0b34e41d4c2c4a412c5f5de03b2a6059d5ee874ec794e1706aed1c4e7b36e",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_go_back]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_scroll_down]": "189a52153189b8dac3ec2854f0d93f5207619b6a7499085e51596d8dc580e184",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_skip]": "f03b50df7f4a161078fa903c44f37272961b70358d4014d30a12888e1fd2caf1",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_go_back]": "9d5f9679d9e75a20b68bdd89afe335944b763b0114d03ceed4922ba7789dd6fd",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_scroll_down]": "b8be81c32d286cd54808cc50f26083e0c1bc63afe69cb3d290a5298847be4322",
"TT_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_skip]": "7882f2b019419acd1f5a7e196c63327ca4bb59436a94a34a104656a4badf36d1",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[Ledger Live legacy path]": "14f159d0b62d7697bcbcd56ed41b8affa86ffea1d7aa6f2d0c3ce168fb990431",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "2cc563c2ca3e4144ccabdb4700bbc62b7895840cfb06012a955e8b4a46462eef",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "8ed9263431c350c501d2a69d699818d8208f334b19f5231b8dce5912f5b5d611",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_1]": "6a4ab2fefa4d8fec26bfc8434371ba00859b9dbad37dac5ef04cd0c6c2da024b",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[data_2_bigdata]": "e6e66e9c54ae66f45ac83396611ae6ab6410bdc63eda3dc590dba13ebf382274",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[known_erc20]": "063198d50c0a9d5cb6b40d546f2f0af9cf1cb2e27ef385a18b46228f79ab5ff9",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[large_chainid]": "3df0408bb8f93821d26c9b2eae573d0ab55a89dab6d0468efd18a9be5a647b0d",
"TT_ethereum-test_signtx.py::test_signtx_eip1559[nodata]": "14f159d0b62d7697bcbcd56ed41b8affa86ffea1d7aa6f2d0c3ce168fb990431",

Loading…
Cancel
Save