From ca3231b1202ca745f557a6aaa0f2f3f50ba57d18 Mon Sep 17 00:00:00 2001 From: Alexandre Paillier Date: Mon, 29 Jan 2024 18:16:15 +0100 Subject: [PATCH] Ragger tests --- .../ethereum/eip712/InputData.py | 7 +- .../address_substitution.json | 29 ++++ .../eip712_address_substitution/00000.png | Bin 0 -> 472 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 414 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 338 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 336 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 324 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 364 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 472 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 371 bytes .../00003.png | Bin 0 -> 298 bytes .../00004.png | Bin 0 -> 285 bytes .../00005.png | Bin 0 -> 655 bytes .../00006.png | Bin 0 -> 433 bytes .../00007.png | Bin 0 -> 555 bytes .../00008.png | Bin 0 -> 709 bytes .../00009.png | Bin 0 -> 321 bytes .../00010.png | Bin 0 -> 774 bytes .../00011.png | Bin 0 -> 364 bytes .../00012.png | Bin 0 -> 381 bytes .../eip712_address_substitution/00000.png | Bin 0 -> 472 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 414 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 338 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 336 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 324 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 364 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 381 bytes .../00000.png | Bin 0 -> 472 bytes .../00001.png | Bin 0 -> 463 bytes .../00002.png | Bin 0 -> 371 bytes .../00003.png | Bin 0 -> 298 bytes .../00004.png | Bin 0 -> 285 bytes .../00005.png | Bin 0 -> 655 bytes .../00006.png | Bin 0 -> 433 bytes .../00007.png | Bin 0 -> 555 bytes .../00008.png | Bin 0 -> 709 bytes .../00009.png | Bin 0 -> 321 bytes .../00010.png | Bin 0 -> 774 bytes .../00011.png | Bin 0 -> 364 bytes .../00012.png | Bin 0 -> 381 bytes .../eip712_address_substitution/00000.png | Bin 0 -> 8031 bytes .../eip712_address_substitution/00001.png | Bin 0 -> 6969 bytes .../eip712_address_substitution/00002.png | Bin 0 -> 6355 bytes .../eip712_address_substitution/00003.png | Bin 0 -> 5665 bytes .../eip712_address_substitution/00004.png | Bin 0 -> 5874 bytes .../eip712_address_substitution/00005.png | Bin 0 -> 9258 bytes .../eip712_address_substitution/00006.png | Bin 0 -> 5084 bytes .../00000.png | Bin 0 -> 8031 bytes .../00001.png | Bin 0 -> 7705 bytes .../00002.png | Bin 0 -> 6584 bytes .../00003.png | Bin 0 -> 5585 bytes .../00004.png | Bin 0 -> 5497 bytes .../00005.png | Bin 0 -> 9307 bytes .../00006.png | Bin 0 -> 7170 bytes .../00007.png | Bin 0 -> 7964 bytes .../00008.png | Bin 0 -> 12020 bytes .../00009.png | Bin 0 -> 5642 bytes .../00010.png | Bin 0 -> 12371 bytes .../00011.png | Bin 0 -> 9258 bytes .../00012.png | Bin 0 -> 5084 bytes tests/ragger/test_eip712.py | 144 +++++++++++++++--- 63 files changed, 151 insertions(+), 29 deletions(-) create mode 100644 tests/ragger/eip712_input_files/address_substitution.json create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00012.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00012.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00000.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00001.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00002.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00003.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00004.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00005.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution/00006.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00000.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00001.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00002.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00003.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00008.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00010.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00011.png create mode 100644 tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png diff --git a/client/src/ledger_app_clients/ethereum/eip712/InputData.py b/client/src/ledger_app_clients/ethereum/eip712/InputData.py index 1d0263af3c..a19ccf3e83 100644 --- a/client/src/ledger_app_clients/ethereum/eip712/InputData.py +++ b/client/src/ledger_app_clients/ethereum/eip712/InputData.py @@ -337,12 +337,11 @@ def next_timeout(_signum: int, _frame): def enable_autonext(): - seconds = 1/4 if app_client._client.firmware.device == 'stax': # Stax Speculos is slow - interval = seconds * 3 + delay = 1.5 else: - interval = seconds - signal.setitimer(signal.ITIMER_REAL, seconds, interval) + delay = 1/4 + signal.setitimer(signal.ITIMER_REAL, delay, delay) def disable_autonext(): diff --git a/tests/ragger/eip712_input_files/address_substitution.json b/tests/ragger/eip712_input_files/address_substitution.json new file mode 100644 index 0000000000..3cff494e89 --- /dev/null +++ b/tests/ragger/eip712_input_files/address_substitution.json @@ -0,0 +1,29 @@ +{ + "domain": { + "chainId": 1, + "name": "Token test", + "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", + "version": "1" + }, + "message": { + "from": "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa", + "to": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", + "amount": "117", + "token": "0x6B175474E89094C44Da98b954EedeAC495271d0F" + }, + "primaryType": "Transfer", + "types": { + "EIP712Domain": [ + { "name": "name", "type": "string" }, + { "name": "version", "type": "string" }, + { "name": "chainId", "type": "uint256" }, + { "name": "verifyingContract", "type": "address" } + ], + "Transfer": [ + { "name": "from", "type": "address" }, + { "name": "to", "type": "address" }, + { "name": "amount", "type": "uint256" }, + { "name": "token", "type": "address" } + ] + } +} diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000x3ba4!+nDh2#^rmJ7o`%Hg zW!8!Ry-&rRYc`(gv*SgG%F4g{)mgjDCMG4`2I+qqw{g0-psn6gmU}1lg#>3e9F?Dc zC`I~{j8w>`N3%e(L9ni~mkKVA(6YQ14| zlPzlL(_1^&md@4r#v9r9Ufi^C^5?h-U;t-ZAP{Zof^ELT3xk~lc${APg_A2#ZAa|pKOjk$B!@=g85H=Gyd zibWSK-TuqOjD2UA^XylD*S~*Nf2O}-#qoo0E#h+0ZtiV7sPaat{)4FBy)!F5Yf zzszfNF@Bj~)}s9qmK{gd2P|n;nA{vK7zcD3GI(J2|I!43gUT}xi-LqbUHx3vIVCg! E0Dqgfm;e9( literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e9adb7c1d97fe855b51b4959b8e5dd43beaab5cb GIT binary patch literal 338 zcmV-Y0j>UtP)YMofNAg{IfrMxi2t+`+lJ^#oGcf%E8=PSP0D#*)qIck!T5I!3DJ5i2 zzFMtyS&5{6qj%sOQ$5mM5I@m7aDp-YG5T~@M*0FQ6VFwH^aaQ+eF2u8ey(94eF295 zy??Is0RV`%^9gqP*|Krb7BAJ&bHH>9zcZKjZuxr%eJ-W|O$y`N=5^k9I{&=;Rodm5}8nX0n^CW8N-%Jf6>4hR0ha-s> k0000000000001uY2cQ4mchRd&H2?qr07*qoM6N<$f-Vo4eEh4ZI1Tl}o6 zNhRhcJc1DeYSr%Z|~jet-0^w zbPmoHdPkFbDkfAFIZqLqV%`*AG>>tcN&nH>^A_QEv`^+LdQH$hHGNmkxd7@E$)dclxiT*9(Aip7j aA2ZEAeV^alyvFYmNYvBS&t;ucLK6UDv5k=c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6983285c24624ebde99cd01877237a671516fa43 GIT binary patch literal 324 zcmV-K0lWT*P)P@)+k$jgfEFlcoNftE&eQ%Wz6ixob;E-(t0D#ARjV|D1-}h=HrF1j% z>eY$-j4t5h2y~fn-w~?;SMrt7cBSf8c@5=urj%~pVXW`b1-w>9T&+>vrzxds^3j85 zs{K^-2DH1v)jmV74;spQz000000001hKl2Nk W9;9xsR+eP|0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000EaktG3V{gz`hm*o`%G7 zWAl&y+#l)vcDPj1D3-#N^{L*!N4djQ>#z(vP}hdL{t3~Vs+#kkTi!hs6Dy;+RK`)$ z#@%Cj*q!U@+bq2eExXiX?acbkvm;ZNClxB*ec-{~b!_pnm-!yrb}u&`@n%1_OMZV? zZB%XSO6~inChn5me|y&=y?XsRwg~=DTnb+OM ziEcpG8YmT+hg`Y6=xi@b_IY>tHRm^e6G{qy$N&H5wLtyJvuCs4y{z}vc~431zD)Bk ztMupF)$e-I%atAXE7m!z$0b)K8e}&W;q)k^UoA`A2;pBDM^7D9mR?US$D%%i#)sMV7T{9?9tbkyu*v$ zC$Y_Zk$;)P^y2*gTe~DWM4f Dk{idu literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..71834ce43012af5923f7bd568a947bbfc3c476b0 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WJba4!+nDh3gW6@y+9*4k7 zFMW6XpSZ(Y+{c8ADd`Q{$+z{ZZ?Ls-_;h%10(CKLxO#XubM4Y8bBZ;W#yy+!+E+8+ zy@_h>)WEeC`}SBHgeb3m|77_WsW8pV)h7Ad^^+?CQHqXGa}aZ@Ec(|Gwh*tbk+#e9rtjaxPZ?jncx?V`mm~aw_k~pI4FB!l zw*5W3h~FVrrle=xk<)SpD(?+)lIX0YlB2R MUHx3vIVCg!0N>@Gh5!Hn literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..25bfb06861285b56ddb2b859a1f2d024750d7f43 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QXf5C978JRyuIO=cUVDyH6ZG% zTJeA7!s&WCisC)OrYqT3zkl1b!TH|=$3-Fx3=dqlUW>~9rnRHL{|)Pu+{121eiZJX ze%r%ki)Fj;vF)YGzu9kBOgn#Py}o_3^yU7JbrQ+#nZ;I{qw-8E{_Fpoy8aETjCJR3 zp4;1Qf8ESJ{nXybEevNXQ+}syO54Z(bo+v$EBog67hS7AcF^?n=6Ci9x9>h*{ggz~*>`{DPbIRnD?AqKQpq^DhUYbv*oVwZc_x%1_=2eXDPv?*(_472O`JL_Y(nw8nyl1Cf;Ef8Cj^NnT|K7G`Hj`v@|s+ZU&*OW{(|*P-||m3 z&o1AxH=ehU>Dvo`&o5EuMD91-W|G}p{E^q=uIR2$uQ#l>w7YoUAL!i1xU7AFy>ZM< zwtE?!{|MI^^KvX>JZPeDV+*7I{>yCJ1=oMc-ypH+OTMx2)-UFVdQ&MBb@08{mI1^@s6 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..bb49e6dab8c96dc62f863b1fad7c06d6da735679 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|er&#V>5T?m-aXK&i=4@v2B<2{D^$< zVufmDewH#ZuX7YHc89m5AA4sw;N*4@wdLW_ugNvxsPMxi536M zq?WpUHE%Yw;4E7>xumPdFoH`z|9|fdHq(oV!cWUG-I;DIP_xQebVu)P$HaYNTO55$ zZn*4>y(M@lXOj!>TH#lE{_Va~qOH3p`3OAjYi6|Ysb?@-(aASkW4pI?QsPg;5)YV; zJ^Mk)gF#`=|NjkFb0+CJPIkCiB$$2F!d%hbFEGV>f#b8BgwKr*J=Q#I4-D$-8RYhH m+kTOd`XO-4Pz0otf#H<-Jyn^VXQJdkfOwv+elF{r5}E*?y(Y2% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d7e1524ad54d4ef68d258b2534e13a79754e09 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#bWy7UPebA@ zOY6e_-bwnk1!|L-Iz5;lefd9c&%|cO3C)^}KwYP6S&yBvJpHXu=CI(gQ%XV)?8z1VpKG&F6ax+&hf7+&PbDNIxzihA-)o5}rz5ITHhTY1IPrTL7?ULUg zQXBbqcTm{5QxmQF;&WpI^8d%y@NbY?6g~I4{#D7(p8`w$bfujhOFwvX;?sdwkCQL9 zy)MYRZhG_77sV61DzksQ)0|q@&;0L)aa!bT-^_-j4b$#MZ|>L_q#o z3&Jcw*V-zDJ0BMb-gSV}B73!Y%lS3;jY8wMNL5Y$Cmdd%mQh!+qB~-B(Aoc;|6_}L zFYj`jzg6tnn!6j19;`Hb%NSL^>`&=-U!%ARN9HBhPCSk&-Z^3WR8jeqFs*x%zqP9m z%v=53*79ros$Ge4dk%Jg+4uTprKa)8l=_)&t4{t)+H!ERMC-hgi7B@dv@UT29fJ&f ZJ~O{B@qF>TLEQ`_?CI*~vd$@?2>@N?!-N0; literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2191773cc1207ef058246a23188ceca2342bc2d8 GIT binary patch literal 555 zcmV+`0@VG9P)@xh$ss1VvJTmmikZuMC82>PsNqgfZN!wp>OQ~%EWwm@6+6+!W5No9}Ut6mN6RP-|l~D_5lC@002M>@my@sYpt2tFoeYYo^BlM zyIyO}%!X0pN8rP!U1>m#Yogs|cZCs<2*63F!HQ;gg%OYlkPYRFJH_G%#{8qP$;@UL z4c1hEtIXxko0$!x#+vVdA}S5RY#23i0eDV%!zog{CzZZJ#a0idQ<5x zs!2xnk5Nc9vVRz8pb5H=CY>ZhgRMx?J2N9RxF|zyP&zXsG`J{ZCJ9|0UkN`N^_gO1 zY&rPu7MeX4VEMK9F-FFgw&oVaArvLF%?vK`$VXOYl8~8kIu%g#9GnpvTpaH_-FGK8 z%jgI&Q)>nnWo&IY)jwzuo7++H--ozm(af>$9Q8#Wxf>{jnIsf<1ONa4001Ts|42XY z_(DiJusrX$k7Wn5mN0UywA=A8wggx>p42*M^%OM$X#a6fnd4zJD?mK3-0gT0O#yZv t_gv_>4;=w$^Ks8fM*si-00019&M!?|s>j(4WnBOO002ovPDHLkV1g(i>rVgx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..394eff681fe2041a832ef43e8911ba6509e32a51 GIT binary patch literal 709 zcmV;$0y_PPP)>Y4uIVBk4poGCE<%I>oN%w zLI@#*90zm^z0P^yAus1#Y8nmi)#T6AK5N>A>XB3yO2dq^th7zFQyLa?EG`3pw|rS& zZCL3!YKdLnHp!?1T38<0FOKwY@YAiK4q4({%_*dHWzt1}ot%w33dK8G~1m?(M6gs@j*#n~2)h zK9hl0Yt;b5B%=h>Xz~7S+x*CryIlc%bblJIZu)GigwIipcGQ52U@2lq_Iln`AX508 zGw#y>RNIIldkrbrYFBEt)VM8ocPgLQfKLnXYW>y;TXc_1h$Z)*D_7`RDl8jPE7T0;w^1b?O)YRaZytiA}ImK9x-YZLI@#* zkpIB4e^J8kT=Hy=D-d1DbIH|jFA%jy6_?!ls4Z|#W}}<%gvlr+&*dx*fU2W890bbX ztsSY`_B}RT0i{I!Y_z4hIwBYNQJ#;L0ceS-_8#qX*;>idV51eF5;a5DN}dLL1)!Sy r>Sv>dbn5ulld>ftgb+dq`H%bp+cV`DaUPO~00000NkvXXu0mjfy}d;v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..139d265572a5c3abfba0a635ee794e642b847283 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6%ba4!+nDh2VbWw|f0PBT$ zA!UdDO+OO%DX~@Q#TkqK8wclnPF>h>H9W8rsOg7z*4nMt-mLEE*pU+N;NlYB9psg* zvs7pItz!iT(!B3yTbwUgwXnLY|H#JKpLFZmHeOkG|3$fL_@mp;<#%m=YnHL-{GEs5 z{pZ+TKfca+R_Q-y#`jN4L~8=;82lsLP4g>$GH$8-v#@i;{J+=Nx9_gBF$X&F{U`Nn zO=VH_C49QGv%U5l54w}MRAZe^vd@>&`Tv!-U7q=`uKF^|hWjzx#p*l>dgu%eh z6F*RLj6v;J-HeNKKdt)5xK1qcEC1%etgH4jc#LMY8ddVA2gLzB1O-1#<3;vO{Zf{- Q*9auy>FVdQ&MBb@0GJ?-)Bpeg literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png b/tests/ragger/snapshots/nanosp/eip712_address_substitution_verbose/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c74d61ab02f3604d1df53fc978c547e4e1b42 GIT binary patch literal 774 zcmV+h1Nr=kP)dp|prcKq1ulx{aPydU579S?UkfH)47W!)riDW4?_!BCcRw2lV34 ztywzZ4Zd(Z;-`@2gBX%5laYmht7+?XH`5~?!!uft7JG5|w|4WEmvRokVs5QJl-JDa z^mwVp>)l)cGkT|kH-%_6?r}r_Ii%WFQDcU@u~`ib%OiFUkurVj^nC|_ltJ5!c+4~x zz+67_KsrpT!dFZ!#zOzMQm!^b4~l8FqCi?P)#zkzYHVQ z%>H6ngPpJo?IcJtYcLg^-dGJ4^FuALCWSfyIf|pNE<7cU`Vod7L7%jnT%b65q@z9} zGHR3bh?^ndh4}X3Fs$8$peNz$_b)8Naq|lKb6r2HVI z*=5PbDJ4e=C4>+{2qBp^HS}4;lUyip`X@Ls2&%SyBJL+p6DdJ~vo@mTNyiLyHFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000x3ba4!+nDh2#^rmJ7o`%Hg zW!8!Ry-&rRYc`(gv*SgG%F4g{)mgjDCMG4`2I+qqw{g0-psn6gmU}1lg#>3e9F?Dc zC`I~{j8w>`N3%e(L9ni~mkKVA(6YQ14| zlPzlL(_1^&md@4r#v9r9Ufi^C^5?h-U;t-ZAP{Zof^ELT3xk~lc${APg_A2#ZAa|pKOjk$B!@=g85H=Gyd zibWSK-TuqOjD2UA^XylD*S~*Nf2O}-#qoo0E#h+0ZtiV7sPaat{)4FBy)!F5Yf zzszfNF@Bj~)}s9qmK{gd2P|n;nA{vK7zcD3GI(J2|I!43gUT}xi-LqbUHx3vIVCg! E0Dqgfm;e9( literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..e9adb7c1d97fe855b51b4959b8e5dd43beaab5cb GIT binary patch literal 338 zcmV-Y0j>UtP)YMofNAg{IfrMxi2t+`+lJ^#oGcf%E8=PSP0D#*)qIck!T5I!3DJ5i2 zzFMtyS&5{6qj%sOQ$5mM5I@m7aDp-YG5T~@M*0FQ6VFwH^aaQ+eF2u8ey(94eF295 zy??Is0RV`%^9gqP*|Krb7BAJ&bHH>9zcZKjZuxr%eJ-W|O$y`N=5^k9I{&=;Rodm5}8nX0n^CW8N-%Jf6>4hR0ha-s> k0000000000001uY2cQ4mchRd&H2?qr07*qoM6N<$f-Vo4eEh4ZI1Tl}o6 zNhRhcJc1DeYSr%Z|~jet-0^w zbPmoHdPkFbDkfAFIZqLqV%`*AG>>tcN&nH>^A_QEv`^+LdQH$hHGNmkxd7@E$)dclxiT*9(Aip7j aA2ZEAeV^alyvFYmNYvBS&t;ucLK6UDv5k=c literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png b/tests/ragger/snapshots/nanox/eip712_address_substitution/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..6983285c24624ebde99cd01877237a671516fa43 GIT binary patch literal 324 zcmV-K0lWT*P)P@)+k$jgfEFlcoNftE&eQ%Wz6ixob;E-(t0D#ARjV|D1-}h=HrF1j% z>eY$-j4t5h2y~fn-w~?;SMrt7cBSf8c@5=urj%~pVXW`b1-w>9T&+>vrzxds^3j85 zs{K^-2DH1v)jmV74;spQz000000001hKl2Nk W9;9xsR+eP|0000FSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..b546f65af2e624cf54d7462335867daf18c90153 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl!1@zUYUn@802huw) z?fRqHv&kH0`to?FOand~0R4Elz%gFRzu3Y-*zSnjG9Fd{00000z+JzPLVxDA#@Ge` O0000EaktG3V{gz`hm*o`%G7 zWAl&y+#l)vcDPj1D3-#N^{L*!N4djQ>#z(vP}hdL{t3~Vs+#kkTi!hs6Dy;+RK`)$ z#@%Cj*q!U@+bq2eExXiX?acbkvm;ZNClxB*ec-{~b!_pnm-!yrb}u&`@n%1_OMZV? zZB%XSO6~inChn5me|y&=y?XsRwg~=DTnb+OM ziEcpG8YmT+hg`Y6=xi@b_IY>tHRm^e6G{qy$N&H5wLtyJvuCs4y{z}vc~431zD)Bk ztMupF)$e-I%atAXE7m!z$0b)K8e}&W;q)k^UoA`A2;pBDM^7D9mR?US$D%%i#)sMV7T{9?9tbkyu*v$ zC$Y_Zk$;)P^y2*gTe~DWM4f Dk{idu literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..71834ce43012af5923f7bd568a947bbfc3c476b0 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_WJba4!+nDh3gW6@y+9*4k7 zFMW6XpSZ(Y+{c8ADd`Q{$+z{ZZ?Ls-_;h%10(CKLxO#XubM4Y8bBZ;W#yy+!+E+8+ zy@_h>)WEeC`}SBHgeb3m|77_WsW8pV)h7Ad^^+?CQHqXGa}aZ@Ec(|Gwh*tbk+#e9rtjaxPZ?jncx?V`mm~aw_k~pI4FB!l zw*5W3h~FVrrle=xk<)SpD(?+)lIX0YlB2R MUHx3vIVCg!0N>@Gh5!Hn literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..25bfb06861285b56ddb2b859a1f2d024750d7f43 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QXf5C978JRyuIO=cUVDyH6ZG% zTJeA7!s&WCisC)OrYqT3zkl1b!TH|=$3-Fx3=dqlUW>~9rnRHL{|)Pu+{121eiZJX ze%r%ki)Fj;vF)YGzu9kBOgn#Py}o_3^yU7JbrQ+#nZ;I{qw-8E{_Fpoy8aETjCJR3 zp4;1Qf8ESJ{nXybEevNXQ+}syO54Z(bo+v$EBog67hS7AcF^?n=6Ci9x9>h*{ggz~*>`{DPbIRnD?AqKQpq^DhUYbv*oVwZc_x%1_=2eXDPv?*(_472O`JL_Y(nw8nyl1Cf;Ef8Cj^NnT|K7G`Hj`v@|s+ZU&*OW{(|*P-||m3 z&o1AxH=ehU>Dvo`&o5EuMD91-W|G}p{E^q=uIR2$uQ#l>w7YoUAL!i1xU7AFy>ZM< zwtE?!{|MI^^KvX>JZPeDV+*7I{>yCJ1=oMc-ypH+OTMx2)-UFVdQ&MBb@08{mI1^@s6 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..bb49e6dab8c96dc62f863b1fad7c06d6da735679 GIT binary patch literal 655 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|er&#V>5T?m-aXK&i=4@v2B<2{D^$< zVufmDewH#ZuX7YHc89m5AA4sw;N*4@wdLW_ugNvxsPMxi536M zq?WpUHE%Yw;4E7>xumPdFoH`z|9|fdHq(oV!cWUG-I;DIP_xQebVu)P$HaYNTO55$ zZn*4>y(M@lXOj!>TH#lE{_Va~qOH3p`3OAjYi6|Ysb?@-(aASkW4pI?QsPg;5)YV; zJ^Mk)gF#`=|NjkFb0+CJPIkCiB$$2F!d%hbFEGV>f#b8BgwKr*J=Q#I4-D$-8RYhH m+kTOd`XO-4Pz0otf#H<-Jyn^VXQJdkfOwv+elF{r5}E*?y(Y2% literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d7e1524ad54d4ef68d258b2534e13a79754e09 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|_89ba4!+nDh2#bWy7UPebA@ zOY6e_-bwnk1!|L-Iz5;lefd9c&%|cO3C)^}KwYP6S&yBvJpHXu=CI(gQ%XV)?8z1VpKG&F6ax+&hf7+&PbDNIxzihA-)o5}rz5ITHhTY1IPrTL7?ULUg zQXBbqcTm{5QxmQF;&WpI^8d%y@NbY?6g~I4{#D7(p8`w$bfujhOFwvX;?sdwkCQL9 zy)MYRZhG_77sV61DzksQ)0|q@&;0L)aa!bT-^_-j4b$#MZ|>L_q#o z3&Jcw*V-zDJ0BMb-gSV}B73!Y%lS3;jY8wMNL5Y$Cmdd%mQh!+qB~-B(Aoc;|6_}L zFYj`jzg6tnn!6j19;`Hb%NSL^>`&=-U!%ARN9HBhPCSk&-Z^3WR8jeqFs*x%zqP9m z%v=53*79ros$Ge4dk%Jg+4uTprKa)8l=_)&t4{t)+H!ERMC-hgi7B@dv@UT29fJ&f ZJ~O{B@qF>TLEQ`_?CI*~vd$@?2>@N?!-N0; literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..2191773cc1207ef058246a23188ceca2342bc2d8 GIT binary patch literal 555 zcmV+`0@VG9P)@xh$ss1VvJTmmikZuMC82>PsNqgfZN!wp>OQ~%EWwm@6+6+!W5No9}Ut6mN6RP-|l~D_5lC@002M>@my@sYpt2tFoeYYo^BlM zyIyO}%!X0pN8rP!U1>m#Yogs|cZCs<2*63F!HQ;gg%OYlkPYRFJH_G%#{8qP$;@UL z4c1hEtIXxko0$!x#+vVdA}S5RY#23i0eDV%!zog{CzZZJ#a0idQ<5x zs!2xnk5Nc9vVRz8pb5H=CY>ZhgRMx?J2N9RxF|zyP&zXsG`J{ZCJ9|0UkN`N^_gO1 zY&rPu7MeX4VEMK9F-FFgw&oVaArvLF%?vK`$VXOYl8~8kIu%g#9GnpvTpaH_-FGK8 z%jgI&Q)>nnWo&IY)jwzuo7++H--ozm(af>$9Q8#Wxf>{jnIsf<1ONa4001Ts|42XY z_(DiJusrX$k7Wn5mN0UywA=A8wggx>p42*M^%OM$X#a6fnd4zJD?mK3-0gT0O#yZv t_gv_>4;=w$^Ks8fM*si-00019&M!?|s>j(4WnBOO002ovPDHLkV1g(i>rVgx literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..394eff681fe2041a832ef43e8911ba6509e32a51 GIT binary patch literal 709 zcmV;$0y_PPP)>Y4uIVBk4poGCE<%I>oN%w zLI@#*90zm^z0P^yAus1#Y8nmi)#T6AK5N>A>XB3yO2dq^th7zFQyLa?EG`3pw|rS& zZCL3!YKdLnHp!?1T38<0FOKwY@YAiK4q4({%_*dHWzt1}ot%w33dK8G~1m?(M6gs@j*#n~2)h zK9hl0Yt;b5B%=h>Xz~7S+x*CryIlc%bblJIZu)GigwIipcGQ52U@2lq_Iln`AX508 zGw#y>RNIIldkrbrYFBEt)VM8ocPgLQfKLnXYW>y;TXc_1h$Z)*D_7`RDl8jPE7T0;w^1b?O)YRaZytiA}ImK9x-YZLI@#* zkpIB4e^J8kT=Hy=D-d1DbIH|jFA%jy6_?!ls4Z|#W}}<%gvlr+&*dx*fU2W890bbX ztsSY`_B}RT0i{I!Y_z4hIwBYNQJ#;L0ceS-_8#qX*;>idV51eF5;a5DN}dLL1)!Sy r>Sv>dbn5ulld>ftgb+dq`H%bp+cV`DaUPO~00000NkvXXu0mjfy}d;v literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..139d265572a5c3abfba0a635ee794e642b847283 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{6%ba4!+nDh2VbWw|f0PBT$ zA!UdDO+OO%DX~@Q#TkqK8wclnPF>h>H9W8rsOg7z*4nMt-mLEE*pU+N;NlYB9psg* zvs7pItz!iT(!B3yTbwUgwXnLY|H#JKpLFZmHeOkG|3$fL_@mp;<#%m=YnHL-{GEs5 z{pZ+TKfca+R_Q-y#`jN4L~8=;82lsLP4g>$GH$8-v#@i;{J+=Nx9_gBF$X&F{U`Nn zO=VH_C49QGv%U5l54w}MRAZe^vd@>&`Tv!-U7q=`uKF^|hWjzx#p*l>dgu%eh z6F*RLj6v;J-HeNKKdt)5xK1qcEC1%etgH4jc#LMY8ddVA2gLzB1O-1#<3;vO{Zf{- Q*9auy>FVdQ&MBb@0GJ?-)Bpeg literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png b/tests/ragger/snapshots/nanox/eip712_address_substitution_verbose/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c74d61ab02f3604d1df53fc978c547e4e1b42 GIT binary patch literal 774 zcmV+h1Nr=kP)dp|prcKq1ulx{aPydU579S?UkfH)47W!)riDW4?_!BCcRw2lV34 ztywzZ4Zd(Z;-`@2gBX%5laYmht7+?XH`5~?!!uft7JG5|w|4WEmvRokVs5QJl-JDa z^mwVp>)l)cGkT|kH-%_6?r}r_Ii%WFQDcU@u~`ib%OiFUkurVj^nC|_ltJ5!c+4~x zz+67_KsrpT!dFZ!#zOzMQm!^b4~l8FqCi?P)#zkzYHVQ z%>H6ngPpJo?IcJtYcLg^-dGJ4^FuALCWSfyIf|pNE<7cU`Vod7L7%jnT%b65q@z9} zGHR3bh?^ndh4}X3Fs$8$peNz$_b)8Naq|lKb6r2HVI z*=5PbDJ4e=C4>+{2qBp^HS}4;lUyip`X@Ls2&%SyBJL+p6DdJ~vo@mTNyiLyHFSd4J{-YHcY(QO5;J{<~e9q=7F?O4)!WO}6UUdH! zS+Hz=(4})vCM2-VD4nt3W%LdvkyzeG%km#`1t_mu*zR}#jNB{EKZnW}g5-=Bym-_% z`=7%C>zxJL|9msNSMXnbQRayy^)nr>EU7olTHqoc^vG(B%bo(Id*|kR{84!`z2x6n zZ`;PkbrPvd6U}A>Y0chs_tyHmLi6kw6c{>JvYiQ=+MTFTx8d*9^V|R0+_75oZt9or zLetinU!`YMvFyLCb8XxElhO0{v2rTkNR$jMW7~4}*8a52+MC^J%KMbxPN-JRb2RNP zEsp0ebAPS3=e2G53#Z$XZAI6Yd=YU4`s1;0 z?{f>9Zfbf|_00eLCwPudd#p2Mzfg8-=Z~Y&(Z3(6-dSPln_e}2 z&8bJe=5=w3_V0Wxpw!uqXV@ zTyg#0l&4R7|Ayyoo}1J3WZRs6lez;p_x-s3`O4ERHjEo5Zk@S4@1z`Oka)v{pj(C~ z>TB;CrkB0D2@>;k^>bP0l+XkKqsFS~ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00000.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..7c64769b176c514f251fa9f466298c59f18f49f3 GIT binary patch literal 8031 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%0DC zqi%z&d}qKAoHTIqM3>tYBlep2>e=1c@9XIvCqK6adlE-Az`tU`Kk7Uudy1GWbJyMZ z%Y*I9aX@HLxz9NPRHHpxH!=Vv3xh^ii4*{dSB5*i5S>(P^ybmKxgc z6A43Yl?v;oMxu4^b=t!+>4W@MO&5V&`cYl7nmaeqW;y)>>)t!HqS}Y7&(1o^tk;yV z7VX1#FYHwVT5HYK)Y|fB8g7DY{6S+UPUe5Iy7tCrDqB3x)vrmMbO|*t?xxL0v$GVE z_5%wwb_Z9ng18ljIgeorzF;RZ^vjzYX`R6eYoc|(gqc_66aISt{_pQZXrKGePj}AV z<_6?RVt{s;Wr&tlAKU zp8%d%1S?fw)t3g-Km^yuGY=lt-nvmvqScrf8`qfirGlZ)3H?)4<3U`t z9|a&pK;vANRyuqE7o1c5;^GakY;rgi5j-fp+;qk|Uzns=TwEMA1w`G<7h`SfL>bd2 ziYM@s1s;GVP!GEDO;0V=x${k@#PD8zp5T@r869wKMmVTntbI#@(|KxUf4rR`D;({; zLx7?Gx<&2Q+TIS>ps~&COOcuY>LNQ7&^3@;pIlJp`L?iJIgSC#~NP2QXw3IT(+8W&jn%Y)38wdtxarMuu&;JhbT9>jPC z?G59M$6rICgpu}urb@TF_HlyiMP`eK`6+ZK!>!DTW4tEr?AiBKRcI_$9C=Pi1vt{y zjksMIw;)}W&Trn1|AwDfsqxW4^CXV}UjEQO#$gW(sRVT2*qNGBfZUs_zWV)xJTU~| zkT{ieaDYy$^!yYY%3=JQSzixg)&tDANB=I9I-9dj$NfNLL!jdJ$sI-=UvPhew#u3x zdZyF#5pAT1RtA_Oi~ukw7C$H~Tz@Y@^;_s>01eJ`rh-jE$fDGXDg}X?(xG@Cb#rC^ zI+5uavkk0TdagFu$q5EaURt?A=Mn8KFb&7zV!596h2?vp^-rO7SO8N#nJ0#WcBv-3 zgcp7Aa2M}Z+aL4exa%o3qK+SI0Z@96oGpetfp1yWNWK6%m%~p?bip26{M^FA!s^-T zZtRktE8-Bw2ebMwa=b2b2r; z)g6!l^}2X4NtXXcvi-YHdI^UDc%gxKqpcaGRK3UWp)}CsB|!GIaa#P?QnwJ5wn1-x zpvdIi{{4Z=7?iIfS>w>a8nnu;H3r=Lc03+?8(2I%9A#&igT=?sCtpVqW%(_UZCTl? z>u`YZ=d-)vnPr;b6md#0^nt*)Lq~FNSo1%97)(pN34adBq}&Rb_PElAtC(MHUb{Oi z=VK+Qd;flu6UAQi%_sm_FgkBZo^>k~HNXi&fYm$lHW0Y#aAs2a2=$<3sOasN(xgnw h3wQo=CrKKe?eEmz2Qtxaz>%1in~T>kHK!ud{|lEl>P!Ft literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00002.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3100bcce085eca1d931f1e5f6f22aa72cffa65 GIT binary patch literal 6355 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 ZPCkOsu70uw__M<7bTIT(=U*>g`4^O0v;_bF literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00003.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..404c495539894757c43e33a5c0799dfcb9f8a6cb GIT binary patch literal 5665 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 IH0t{Q0Ju85O#lD@ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00005.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..726c927de78168fa07aa80608c7828216e71cc9c GIT binary patch literal 9258 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 N4D?KH!*4n#{ts`Zd}9Cr literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png b/tests/ragger/snapshots/stax/eip712_address_substitution/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a8fd4eb09009370b79a8e7d92355e84bad3426 GIT binary patch literal 5084 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 Lo+JJ}GVgx?7LW|_ literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..249ca4f627b2b8f0d0ab033f389152f211a33d4a GIT binary patch literal 5497 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f59eb18e3c3244c43b9cf0ebc801a89d412e99 GIT binary patch literal 9307 zcmeHtdmz*O+rQgQQAj5_MfZ&)=R-MjOOkR34a1yABb3ADymZi=La32rC~C}^v0+J> z^VDKaBMocKHjE*S-_-YczR&af{rCOj`8|Jp|J~m2>wR6<`+8mP>v~vC#Dzx{N98!yf002+H zDxqRsTB)T5>E7dff9*#lgUx3F04v7;`JBdmUBi-x1v*z7rBxygqe1c+co&CSB(n5W zmSU{kbpQZ-fRuXnqsaAw(Kize=tr4|?Dt~77t{Y-L$u1$hR0)`UZP_V?FPk!Xb=mE zeK~oEE%S$zokc=$>u z^+h~UPk}vU2}dG>zX-&FNYGECs39(^r?^{YG%>Jp3{y?V$c0zfZn^?SJnlWt^pQ+y zPfR6;DH{TgScM;LRyh0V)`QRvtR@G-%!H}(#Q6Q8pt<_)&@J4Gi9^=A%fKye2P99= z4qM2->71q5tRc15QXK3*5QdK2vgR2rwwJas)>=dkJBF|0W1<$jj4WE`jw-y_?wgz^Pcb53jnQz;dFf2mYr7Jpwrgy!G^euAImXM!lhL_ zIaj?pO0t`0H6gvcUyjB3>GI9$)_yTy9zQXrk4`*qwg;u@^sL3Om_XJ~TqjQc8EFb- zHXpUM6jkll$z59hdiF1~IxrBU?W??qH6A&AMXbj%Nb7fH<0;30Wz}?l^c!p_qD(L9 zUCKV;Bp!1;q1jLJqHEgGY01Z@*MdG2JHGt<-MnRJQEB{K znsxjX*`|wNoENP<^g*!m>Qs&tp;7M}j1NGnTQo*7& zSx>;Uq?kDny#qIIs-CTh8k~2y?CEqEzf4XU{6lFyiNEYr@S2posMywA<`XzK`XZ;Q zcqHz&$y;P%%$#BE+(S^g;o_y9=iy^(UuJJ<2l{m_k&jQmnCiaMX4ic!kIW+m~d z!yQZ}(W|&5CVu-^`UOYDerSNiRMD$oQ}uLzobPOG} zXIMp??yIfmWIWThRViq7F>0E;;+^f%$trnBaa$l;e`~VfFrc(xeHNP9nWk3fLfrxsqwyhrq z=}La-c>l^`UIMFvL>#l}vB-|jWoADtt*tCAy2iPP4^7A(4f&Mc20dd_IS8G_ijFJi zB@-HZ-V->5(jo z$ngA4<3C0~9f|~&T%)2*k<6h!H7}x`x3{;ir2R9uDF&36Kei^KmC5A9MhC=GW+(hG z=Rx3SUG-?ZBP~oseJs}n@Z9%K+6VKSd*ws-nDu>M z?}}T-HbfUb_C9p4{me9Z@P1svW!XmS{wFU(iN(BSHmZ-@%xk@Rr**?0INY=K=^YGS zyi;%V$LC0)jU|<2CG@*P`$hN6A1Ww4)mMMrPRrWyotlo;jI{v5wn+eoPWO1#prF(* zT013J?0BU8dWT3%INbsB`vJuhx>Qy4SeXIj@oQitN zE@0s35)U#a8E3Z-tJq}4)T~me)VOy0R_<~bdNP7RXTIlzG7Q2|1=MS?B=tjXVeY-* zWec&>-|v0Wv*WtNwR?GZi*@HJ+CZ@&v?bkCJ8`6g>2-Z(G@U)#7n@!RE8KY#ap(2Z zOQ<5!THKmj%@$W2e-phl8mtJ(5y(3;Xy-?rDF*m32U zN5ShskdsLn_k3HL{_DyQYt?L7x7eb|LixPXNM(x0WFRh1zs;+LBaEILG-IYb*A9%^ z?@&P;CWfIsil|s`AVPF)?=RKhl|M}`U? zu3nc}AYx6z;2rc9#ekXkc93X-tt0u=AWlj!5FGnhM=iUqUhG{nAMt=Hd6S(%O;}P{u{r$inik~l5 zkKc@-J8+i6sQufJZ9`WWC`1+?Thy;QmlV?Esu-tAvjJO}_&P4?S3D4q)@x4__8^Rf&rJKv7Jm!o zj;J?JPAuch=9n8(Nq5F;6#m}>Ambsz#gRsZya3ND->r92OCRI26{Rp!)&s3mud72^ zV@?a*E`ju$5c11`rBLsA6Esi7zNUMWwx)>Y$g4REy0s=95s*ANvHK^4I9u(q^I9Uj zi`hs~sKJ9c`xqyLQmTi=x^4u>Q$H~)3#c5wEsxgb8@mwaBz3)UJoD>gz~0uBE$T#DAHFZrW8# zZ**IL5b4G%6^b(UHk%q*CId)KBEqPeni>|1HLZ-lsmAsM1MMLJjz>PWX^Ajy!TVl* z>mT_K^#o;%hdfk+*2=yc?MFo&*p44h3%T|Z+YkDbgnpgjr9F)O)E_!x=?ad2y^FMM z7xVwzpi}gFzv&H2r5VwtQKzcRc@`obxG)@fH(vc*?eA3J-xWwbVahJLJZFx1X;Mk8S5*UnO1}Z0tA9mr3!Z?^~ma87a+#q?V?j2j@p+vE-q`PqLVA!AZZ=pZJMv4+G?7k6<;UB!~5q%VpM1H0EH?JF@OEU&(a1 z`J)`IB-gafU$NasT8e~3RNtm)+hi?5vAnW;PB}m&sI7pS5WyhCW+;>| z_rP{jbSnPl6u0wlB5h9YdCAtK^H9uxmBU(*cVlJ<+6~07>pTBnXRziCYs1j_rW!Cf zVS+pUX|zVyiMJc2!#0`W26L}#Hqk@bh?(e+Wmz|-!(MwsvJdt(syOCF!E!`Zi9BwR z!G=dLq$k_PVdPX^YUK*zu@)NDB>McZd0S21(?W$}(~6h1yBp1ZFZRTCpABCEp^XU1 z;Jt5j36GqHK+Kx0?wbYF);7WvYiU$wH9LefwjkO;ccJRmPL-?_e9)Yqnzz@BA}qAP zn`&6fr0TjsnFLa3GT{xztEQcGv~SsCh;SFUXDcxbch$TVnie|!85_1Afk6zDtZbeT zc~JM{mk{V2Rtzhm+7Yj86`(xhGR6+gS6zGkM%wWE6WxXaBytf)es<7RGDU$kMlI z(pOAUJ{LvLKNa+%pnu+P|Fa0CeN7?P8)_y@5e5;$x=-A|C*)LCv_Ts9Q^L)RNPK0TZ|lP-oSGv2Y{W4 z7;U;*Q-hrjxc0Jl<9S|0N*`n}r7!Ig6kBNg-Z+Xe7W5CJJcd#wWXq>bapEbnPmWX+ zP%la1^n3pKuREg9H9IL#pBK>w$hV$Gq3|70V!xS4YXHrc++B-eJNRxf!nF>X!va*WwBz zS7*d*$uCBBnXSocBE-NVFGGl~h+a>$goCDF@xfpYZS zbEP;pCd^+JPcEjK721cn&ahA{5^7h5-`~8n4YxjJlT}gys&QSXHq4Yk2k@$YA1s33 zErsO4w>Pb~Lm#zz)hIY#pMAyOoUm1HEqB*zL8r_8-Aq8V{@R z=zjerXmC*Frbldo;4*@T=|Y!Wc*i(5dCDN2ZIT14*h(YEdDM6qdkoI>QB?m%&*|=_ zkVJ(d`wBy=R%IlXdTR zM80+fks@Z@#04y!n`4Wx`}e!n6rvWw=f5~vth%4By)gX{#^YRe7(;hj-fGFlI^a5f zS`jj&`nUc9o1?>2`D06PO8_=Wn`xwv4!N+=D{K3{q{Vi~BNAblnL5peUsp#lIUr0i z&`AALh#y-O>*;u81tgtPQn;8K@oanar_q8%JjdzcD*UI2BhEv%li^p_k#)Pslmeb> zfBjQ!^W7!dJJbyFWv6iTWREVHuH`;hn{fd2H@wwz_bRHIW>cFQMt-1@Oxkb9xNdvX zh_ry23*EUT>jhgNqxy?+uLO+0UQ>VIRkv%$NJfRLI4d}_=H$99R5AsKXr&6f4&9=MC#;H|+-Fpk}Ywo+bfBT?Y{;-}Mh@?PiDu*mK=9n19)NW~kt4=$F_0- zkjxJSKVCzmH^W((QsXM<$JP%SVaD4nxh<^RJ8#^_HxsIneT7Kbc#D3Au}%ZwDd}>t*woaYaw}*<*!NGyRC)oz&qxGuOt(S9bIq^&MXw|x&j?d zjF81Q*BEs;H;Wt7%<9IbLs4C`!+L|XsNnhMZGSWE8BnZ#zUq_^;!G7S#-wkxR{LZs zk1lwt_2j_7FdOV-TO=!B0RUJ!G{4n~QYHmVj(Sec-gvB0#0>$F@RYh!so410Fpbdt zU03RRxsvAY4^74;Bn2#h2+lJYEVw78E+eZj>j4~AG1p1$dnXjS*-P_5P@GkwHY*M_ zpD%F_5GtU?R=%lM1D7r_?bk3Ki)8^7?&J~nrYGVhmbG+GZZ!DOKbUhH%igl-HP4%} z*fM3QI00OPG9mM&q>f93JX+z5A^B{5>x;ia*m`y^aSDc8=haanSvwQ06&0~+E>NUQ zj*c9UK~d{Bw6i*v+;mdPdUgBtI-AJ2FuqKBXSk-Zd1Xzk`~^|lYo%uah$ysI-XxYa ztro#++4BkvDJps_voLF~)X_Nn;~R+pfQ|Y4Z;2DbEd!DYck-wb4vz}dviIW6dsj$U z)&9WIdb^K-Qn~BfHWd3%+2p2jrph@QzX=%>H!&R56g4wtbyWR8;>qG_aKG1%U!o3w z$QfQ7=l=N}?BJf}AfsMVO`qP zzw`pLoMnC1Tvlw0J3UCO2#HlPt{6?NV5;CU3+u^28&*E3ZjRm5-u`-7;i^$@u%L?; zL%OiUEWIlFiQr=<<*?@6#tIdW{K=8ImCa&cf0^-_>?5l5{<+NQ_b-_fuItOYBc8`2 zZb>qGQtnoc|Ky~RNN!R%ZUhW+U@2e0IM&-cnK^R4G^rFr$B~dc9_yneLVlK`X9woO zDwR4LJz%??l&8i~k!=}E-H_O*iiL|=a|vepb`3KuM(KTnbdR8mi}ump?@kDno^qdW zmSv^!!elO;e#OmKQ?CPbgFhNx%9%aiyntw*IjlI*Bn zDmxZ8v)AG=Z~8$c=pU4{@=1J*saA4{vvPbw-HfaQAYT6Pr`fv@^`b$0EqosF3hfV= zS_={3Wpe<4yT!s0lPrACk5P$|0B?u+Ii?#bl>5Xk&XDaf~cUQ z*{pnRwj}6v7uZ*X9aTq9hK^b!pC0g?g~wq}M}v0Q1anm6LjWK#G4Z(A{bl}&a1X#p zu{qqG@WfewH~h(9?3tEMzIS4yur~{irC8)2v&l+;!@X-iiaNe*GemeEsZ8e)LULO_jyE4;1|Mu}xgO=hCSxd{eJO=huDh4hs{dGK|^ptem z!r{qgcd&d0Wz6gv;aoYyX#K`tf1D(nJAz1X?wTvB_&Vw24Hwte1A8pQd49110Me?G zb9vJZ;bz47MX2%S-o#UG0utMJ$!zd5V|HlS3**cHO5oQgUsglGT9N|EjCtVM20ja) z#8df#VBn>I7mx`fhoC_qE(zu#;}%&h`u6^bTC>b5$;a@?e!lgs#4N>j3J;j~yTLH$ z1!i+|Hh>h3&K7JDs&YV2G8T2#yJkOYz_NPFPY6BI&bZLK8XD>Y0F1;fY$i0PCA@;R zsUpsN-dT80pf((TE@*EXr8%|5rV=)ss%X4H$Tj-2k86{x^>$e9oBMviE~+Gu7KS|w zZAz|X9mXQQMYN77XK4E6wlFdpdOEOTm1`2w#{Iee8s<0cSsF8Ef429b<@++bLgrn$;CxAvea2 z^=qqE%WfdVoznsaH>~baCYxzLuaoRa(hbKlqO$QSM$G&m(l`Of=jh|k8#{(SX0pWFWj DT3bZ= literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..8da1fa8c0805cb0edcf8839681994135572bdfb3 GIT binary patch literal 7170 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 literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..26ca6796165df0fc68ba05a10bff3f188670d23e GIT binary patch literal 7964 zcmeHMd05hEyKc<1O>MEP+}bxyt1+$IY8o?FMh&+_ZE-=xt#C!DtZZ`3F}GZ4DmOG# zOi)m?{9Gv=B~(BpBPB${4G|GIKWom+_g&}v=UnId&R@fyKi=hjpXYg>_kQl@=bs#{ zRo3rXziQPg6`M;xI3g!Km{iDMQ&ZDeS>AhpKM(K5Z6DV`EUKM7v-~{3U?=td z_4Sz>lwFIIdi-n20~^D$65OF7Yr;KpHdbPIvzQ85FN2PQymB@5`5ni<(N9YBLTH`m zHmg0g9~t%TzEn755Kb|oa9^X*M%DCR_d+dDVP-`x`YM@E+I*7UJVTa6u(OW5a<+9m zn4xuFAP`hg(Uu<-o)d+(qQw0Npbs+-#z{No5Ytj=!i!6mDivtkJ>Wq&@?*A=t1ISh zbR?zaC^<6T!!@s-Z&v;EV3KD1?|40%X3yz0tPyGN0sEw9g?F+<0Zam@LLQ{T1iQ*>Sb0vM;0>3S|w-eMbU9j)Z*`SZk&y1N^YzQto} zq5MGkOxv||S0@kgy8SuLjqldAvm-p0#Y;UyTJT~6L+kL%Vxh|_0GgpGCO8M z1kRPsJ@38zY=_{?Dxc>5)Ny=MX&a}-9y9bODuy$oB!C;PJ;xNUaRSp zlxCC1damC!G&GD&l$C0Pr?fqXG3Mvmmrp<$#u{3w7fl6zC{^3>xCw%eYI4W0P}Y&A z3mGgfv3}9li?UP;yB`G#G;s|>y<%p>$GhZcUmcrdoN2VpCi{gZGOGbc|mgc?G4qx-Qy{`z%K zi(LDDwx35L0x^%u>*X|jSm>$h3w%At?@?9!g7WSecZxJ#!uRp<*ELit z8`G1cH|ccNnJF@3j#`q;7bgOMv_Kv^d7l~AG$mkLRu?zS4)bLs94!P_oB8MTIbeFu zq^%rg?!~{8%kD|PjQm^&VT_hv)8S1?tou;U7dk>wkGKDYm&RZaZ}K~{?QqxC)s4M8Z22&j ze)8dRiAMamTukGGuZznQ*x`H~R%qpj#TBB4J{&xlx20&SJ5pw<{LXSx(t(9Fc^l@C z0rWK&A|zSK@(Aslzq=4SUTaq1f%p^`hmL!?1z)PTTj>09yQ#5rd=Y5U)tj^ZbB&JOhXg8doDE7%`bl4vNVg3W^HQwRG9pt?af?_anB;R z0*#h`hB@$8;rBBX}im0 zoQM0WB#&>+gKnQj3>|2$v<&(1&xpUw2D_^nTJa9id&Is-hYPZd$tx?9Oq%4qX!&A# zsp&Eej=uM&vjEK2Ick-%#WD;}_OuM;+EyeCGnMN|&#Dz%sZO|GyE@rl?cT=+g#p3A zqNh>Ug$p#gc>_NBR#xpj;{_uX;0}h@M;yNvKvcfVZE1Ps!w)n9!g)@NIGOuWu4XE? zo0m^?=(jS&vHeq}|83cFQ^Ei=Rq{CNphQ(w=Th-%4HRuhy$}qhs=e|0Opyj^Mv=UU zDBL%fcNI^4dBnL2tjZrk^Ws>07iBu6!U~LPqc8jO?0!gh04Kjl_sr}qRDvA1Z}m*~ zrUYD6?-9762IB68GL`3ru{LLo4#|Jek!DQUC*7tiH62(Gh8bT0QzIMflisCDC^}yjpkL1#PA~nET|8Bn zn)dtD84Nf~9!i%ox{+tc-x&_=?2lC^7`_FCeznz~IO2%`1Xtg&zVVCA0ks~9`3roM zWO4CnFUJ&BXn(Lg1Ps>rX5Bw$gaI??o&2iQESXQ?=8(=X>zaVa35j2=F*(ou1A&@w zL`QJ+4*c{>k(I=PCyZ%Ir4zZiMYlOv`Q_`^NgG1yr zGcqi%1jZ;-wsxzaUaN6`<* zIz?-a%0{3I>D*&xm=x9}cxyY%KYC`C<1YyAv zPu@7$wfbI4W`K@4rD(B%O8FwSzQ2#Q`|p}>W-YP{f3!!>Y{tHoGQ@V zJz48rl|vp2F=h;1MU=0=7|H5Q~2E51gDKFQwT7wco=sr-6wljIM+FkvU>gY=5= zo7z{dX3nP5Arghv0DF-bWH^Jt^71)5EAA>-X~v< z{^3^QktTC2BxX|%YRh;^L8f0rm=&CXgBnoa5Q>pFC9_Av#u9WeV_!3B<>bJTtRrZf zUFDhS31p3oWvuM^Z=keFj)r=ZQwtQZa%a?NgjbBm1$p4oXzjV#nMy-Q)YR*W&65Dm zj@KL1J_FRCv4ul%373%Ta>#yh)ySz!BlstL)A>ZtZ&0*=f>0*XS#qW0GVcfq5nRWHdUIH7}eTE~5rz$!;1sxC{yl3GHL+D(%ob zg8V&qrG`SIjY*D4Z$6Gg^zuq_9ZSCwCk8(8fW$b+Xjk#(?AJ^FiUS8=zvORUsU5AH ze!2Ll?sqxaO>!Fr~R;jclKDI5&dwYy&m*B z8Edb}K+gCc@4QZJ)y&fCGG(S!Mg`C&`TSQr0#GTZCvnq;SY>^I^Y0h7S*#`Rnt}pS z9K+&2r0zhOjE`{5_CspGuOO3L!f#g@xY$%6E_Z4Gaq9|q*2#IaJ%y57;C=A*F7^cfbbZ2lt@9(jB70P{60 zUlcBkZfz!!N|1ETcvAl}Uo#!f%%vq99$+z_NJclv0N1d-LE#$R_eTy2KUKZ)4Uc)8 z(XOr8=Hl7Z+{}sS&hfNy`6xz^oJND{Y)#i&GRq1rUM*DgUxaORW3gCn6<{QzL498( zu^b&_oDWzuHR-{Tv?vT`*G45N%_T2R9Vsd*IC!k>(#>KSJGLZS6|a4`$l3SBVvLz1 zyD+o%&}(e^dG27NfO|uu(irw3%Bw`|I|#3!P849U4!%s6JnKnB5Jwaczaxv|V?E`< z$|hYlJ>&xYJ)(Ymb=#qgt`K88P(oc+VTbOlY<9Ku%p{hoGgLPJ%wx1Icgu(m#RyvP zgpZ(+VgW@4>U@*_>F3qT%MNA;J9_J5M(u6rhKS+3M$!jb(cbc znb%nwiAjYn4)|QI8MR||Wn789ftO!5|Nai#1Yq#*k4!Yrp08*nreb~rDvS(Dt6tip zW{;bER~?$~@p|&luDv$COb6SFRI78!lbT5{<897HvUNUwbC~s&zrF&Smu&@B=l)aRUD-Fes zAlSYloSImBsLTv8j#V6Bey*{Rzo7=fcUK!1Ip|eCV)yjXOxkUNwJ8dnGPZTm+FUi4 zQ1#x5E{aJ0&Xq)P3b3V?2>rO}g(-HDU>`{u5ESnE{Xv!FsEsafiGbi-RaNCcX(W-x z%-u8YO+CtS@ekhkeLqsSHx5zWpz10mZ>2As)jHi>iAisoVf@y*Gs@TmK; z$%CGdu?kK2j1Z%@mDZ41D?m_B$ z5&!$Rdljb&fFx0<&+j^mrN4G!3AX&K)|NRf!&Oa358VkgCADoWI@_MEO>B2t+6B+{ zi$%QbF4sJMK=E7sq4&V>y~9T$R!#5rtvz}1B892mwg1r;&GHrXwre%@(I%@bL}5h@QZgoOS z70{iykb6mr16u)wx2@X|4gtza%C+D+&thGSc_+|kfia#RMx&3CXVI{k+xF|ks1hhp zH^q8>`lW-Nd5b->*e_j5t z1sR0NgRU)l0W!aCQEOb2BXS;%#-ZNtshde(TwL6tnk?3hzcFwPv% zrCop)(HdI#X)lAESoQ2gh(S)tysU%erIv|A^@xs-v4c{|^UfEI`T^Vb0~Q|B2V|8a zC)?RG?Gc2@0wE8T{r(QTr{TQWx;w&O`XAkyziFW|Efm5}YfTj(f%7EHVL>kA6m0CT zR2+X{_l70Kfm+Sfi?O*9pyh>ZaG}#Kt6PD=KB-RtKrKOe{_HG(h%{vQ1QiOpu}U&| z;*3ZnGCQvqccLcY(+Cg~s)lW6Ng+kap^Yb1q~1P0(cV|@9`f^OojYCKZ>|QL4NBUN zbe#1>k45JCAYwMRru)g~x6{I^TIq`q7nE~1Hs`0Lhwjlk6 z;UPTV^|YMDhQy7L60R~hOCgOdCbh8xVbt>JAcic&4wlA4E_+qa{d+E>j4B~r7R=i$}TR#l4zA#@ToL?S^N z5wvD8w3IYLQ6wb@B8c(qey{WW2hKUyIp>GZ&JVe+Tzjvz*ORrL=YH<{etO6HrtlHz zBRo7j!sfTG{lmj^;3W?a@0-KCz%Pb2jg>q+YDDvESMEg@EsifD-ZgEnKcvSd$aq)) zpW9!LV-8-tV)6BO?Vqog$J35~IJhsmN^@oKAOC{rC$MA8Mo(Qite8K?xq+!yq2NzZ`kKpT_Wfyz-wL{=bTY z*H()P8Cy}&-7LYQEK-F9iKe&Cg~QkV51f8$e)#gMr+lhdO-DOBCs>4=4KbW&zkVON zb!JFPXTQ3_ug+P?Je$FdB-Ramk4U&A>-`bpWG{Zbm|=_JPfq&bo$?y#Tg-@XD>T+R znF}dEys2i62RTq8;7B^l=U4009r5dT#cff7$w|YV-1uS*kfn(#8M~Xvim#v)D`q&s3Toc3vhv8KAhM$Q2$NIm&pSDx zz0&ec(Oj=Eb1}ymB(Y9TI6I!B==s4YS!zgMaATX)ch)vetM}tw+W{5wppa4@Hh?&u zZO?Px(!CXHDaSRfU>cIOwnh)M6)w;j$jfGiZVNp8lLr$2Po5L64rs$U^M5Fu#Yh~h z-w7l^&#XX0DGEFEj8#!>NHOEA!=+F{f17#sOw7+HCp>L2l1Oboaed0=UBYK))onSw zlI4XLm#_5Jc!H1QL8$j@eseJUo2!OB*v9c7l+i=np!APpS}`uo)N8>F3wbe~@8xVgz2+)ps^pD`Z8?}qR@HvTf&Nom*=M2) z#CSC%`|++wite9b+ftO03KC3?VYTLZiTm#(I?!l!qm*C);FT65UH;^RP%Zb6F87Fu zs8JP1k8>Qi>Q?Le@t|4HW54@eePc0?kS16eX5MpWvV4s)!(IY&E>v&q+IO?5)KgwP z{`#y~(mJZp#0?=os!0ySeyazgXJ0G{RWUgY6D&%SY}U;QQ0hj1K59)%OaNwbhHv)O zNd=p({+;^1?h*Co2^PvBq}QSSJ0|{SGNQ%dkPOCk!Z6?V3ry#ZU|nY^3u-p$mI6u2 ziN7LyDZMk7;_w%A+*#7Zhaloos^xy-q+^ps&eL;F{49i~%NztqtNGfC7xXfR==eAt zD_dw-*Tvx~^iS4Ci(@{MBYjxJ$O)Q*;qn>z5MWj@H2&Q2Gl($VZU3c>xJ{2|2FO{~ zGu&r^lH-UOaHOfU>(6|ZY}^9_YX0Jai*VRr`$2n#E|H$Kfgx!F(d}(ZfgBZEN)VcX zo3tXbzCfFH1XZ5>iX{Q_F*$xO^tirZk<{0d3#pyco{Yd#R1F_O-#coia+aKXXTff$ zc8c%ouB!$b|5mZ{VR<*<+Yg#rj)1}~W4zY?H5QsN*YqJ|Bgk^M5GhJS3S=xWq%v`W zwfbxL9%tguYLTvfZ2h)#Uqb^>=G|}yHqATX0|5oG`i$3}QFvf@_(kXYornIU7e%jG)RVqWqV{HfN=reuhB*Rq*c#g=RWc z507Tg3so)q(G(+0Pc=q$1eE3#XkpI8Wt6zNx%HQ=`nym@g04-Z!Nzx*Pz%fpUD#fI zvLcxicqHaWom}6#ZGn15`@8c;%8q`KsZO-}=50 zBB7b?OSVM}>vx=n+dpPxc(r_3LbTgx9fzC{OAnL%AimM0+NJOL4+RH2w#TTSnVi_> zi9+SKRbd7W-W}>2RJ+V00ZNQ(tGY6?`HmBzc;Wuj^bmP_i5VIwTN_*x;q?NitHYXQVY-rJV)7b)CIx zuYW_0a^bzf-BVcM!A1=geQS?;X+ zdH%R6gM$iMm}*KTn?_YElP5%_1(xP(b!pEnY83|}^BTo{>pe|u& z-w;d|Z%!?NjS7SiU0$R5ZBZ31p@S;%yw5M7!%a)r#x_GbRzt=Ei|5@5Ml+xFdc=f_vl-NDH*|F0N&ZsXOJGNtK zQ^}}+%pv~90KAK~lbv0kOm_N3ee>gSs?pDf=4KS5VGy6QqH$8T&w(`0+C)|Ojdm&w zM_dff4qjAxg;YTkWZrV4V%mDLMZiIBlvU&weFMImSp~8o^kC+Fmf3Fm~p*#)qBQ2@Sf6r^h#KPWHhYzUjhh z!O^$oZNv5I)^CZpECGN)pxb?e?zY?HY2WwQx-RNQP$?zf6gY}thDx3GCXu5UY+^PW zrRU(77|3q;H1sU|->XX>`YRt<blo;|Z`hiBY^D=zT(-+r z{PB?aw}!FH8jn?j`jp@+*OVn^*z7_FCftgLeK3oD(JSTcKO~r{_IdhWq90tsW(&_^ zTKUTFUpgeeA6+1YI+v6FZO~^?Ep9os7b$qHb&GhjbkutjOTS)m$ANDET$5k*AsO7W zgH-nw&d3Q}8GT@RA{*6X$p=p zjc_AV%r8o0fU{gGm|MUh*@f5}-RXEmGuT0bh$2&qBT5l)tAV<&9Ry%wzfeY- zWryscF$tRbHzrU0zOhN|)3k968Yg(wxMDhK9!V|P?*C7paFKjy}2bK29q!Ok7Zp|pU>He&%W-%VZ`x;i9USWG=*tA(6>EiQsJ8IOGu`+yPC^Z0 zV3V;fu<7Txim&B{!vEmG=~@;lH<%g*UYq>h=*-NX67+st!}Uuu|9M$=GXEs5ALYz! zN4*vy{5Bq#eLf@+R$&_q1PKKMNg-n#ZyvxvRG4hW+j?|oew7wR1nbG%C^qY}nPpwU zd7gLZj%pkggri9(afrYO^{*Dgelv#p-SEd%kM#H|2?9p=mdX3pq4QQvDCLb}PvOq# zZ}w3(Wwtwz&kfaqF6JZR@wP#Fg~NUjXYdN8ER8T8L>v#Qb4J-$woZK|d;(zqUJV%S zqRK$#eJ}V_?qEKxe4qGx|u*KxsStyabrTsaS{l^H;bVsZ?T}K@C~l`E+F)i+o(C@ilPyOnr=KZ0L*1zfvM1f8^@ld}I8)P-bT(`VvV3 z;o=dZ$uQ+qZ3gP5Lu!R+jtOz zXnLBWu!{fg)P~9K*hwarj2xiodq*Ws#PGrW!FI1@uj$>GF{DHURys`SE6Vu7*Bj;$ zy{?wqeF?xWM()bYAX6h*6{ z)~V%{m6h!c7SM75*UHM&cHfg@&Ha_bJv&}Cj=gJo1Kej9I3}Db?s{-ll&)Y&QWQ8+ zB9>NNX4!GQAzouOKknT6KdDtOQ6=FVE#z>~o4 zUx^N%Z$ue|FGnUmlL$ZUcUF`RW(L&h4YXQ)S(bQ!0HO;u+Q@s>+EpJkDal2{K&L`ic1Ba0Y@?PVgG9<) zK@vVc;9>VW!y7oxP_o*sr6<08{+9nedZRXGW=Sx(E`R=YQ3w9Y?D2%kQ_6X28x1Vu zhiWNCB|S&J$CB!sol$)67Z*}3w%{#2Y-8jR*=B^*tHl`F*z;9?FMi^hGqiP&=hAy& zq;QpHd(qr?84Sutcly?b^$KF5o^|?boKl=p!o@H`TSY~DsvxibnXqe#g=jvlG0hkf zIIyf`F5GYZP00Y1cGSlqAjF*UDR8)6d_n0I7S#9q+48O5n~MM*gCkQg+Ubu@mIU&9 zrxP8vs>7UMk(9QzI#InqO}<|?q|e(?YQa^W-PS3Wa~$`i556N&68yR+%s{Pbc(Rwi zhSMha%l7UP`54Y0u4?@0L)e<9fwxU(ZL72)_27chj8Do!nAn0LH8@2s9f=6lC!nRodoEGKL*;?vC+ zi4W?=gBGp61I!CVvbj@8cmsu#-O2;FvX1P+Z)3<}#qL;AG3)K!oaf0|2AuexbxE1{ zL$G)aM~_<;@toUBT?dGsJSPuAoa&W5+$c>geyGh$3)C}YQ{)E#Y-${NE|oj|g+IXD zsfe=AD?050Whe+tdDcck3(DLrNiTAq8Uuq8lO~1~bI+!U?H{fM539yJ>D}5X7*X2l zPnx*3rf3c$&!XL%6L+_i1g6bb8E*WY`Pn^Ir*Qq&9tBew^78Uc5!Q4}H*+H)n?n?AR z>df=?tdyS{%Mwzyz2?@WSKAwhe1t#*TCdw#fYaf&i?}{GEM%EgptSQqoH6wIT(&W( zFv~N1o@VXQ?H}n2@8SFYymRFg-0Sw%&i0$A5$fErqh{)*1oxuhApT$Z{@#%tAaW7= z8tfyNrWcB6oq3TT{~-?jr!w?4pp;kYZz^u<6%6BJA(!l2ZQC!&Wm!jFYL+9})3|eC zO@#B$79;&jhSevOzR8YE8v9UO&xALa8FpefRLX-98Sg@1Od}0=VA%HM;|x~c^(<=>ZQ{FcLr=}iN+Y`4&! zpPD|>>u*zuF9it|pGhbhA%Z~vG!J57fZ@+#;wz>9ye-({(2bx<^Z23xMuA-JN+jJX zaJ>m8*+@r&EO3{!kA$}@(B%^*&gdgQ*x41tSf$po{0gayhRqA55upUW;wxLQ2ssZ+ z&2#Q4EDUOIwuN^&>wg3F**4M1#;-3VZWVwZE4m-2MjeAV{S4CI<~hwxo|am*y5qCn z#Sj>dNB}SoTwNkVGgu{Kj8`*wEQaEhpByP>`mmOwdLrHAc5O~P?&=`tqx&2{1*BON zGf-Jg;j&qsBVshuD4muKW2`5!gL*Wjv~vO3gia9f;h+z}*l&JxNydd&6IgQ{H#P;I z0N7hDc{kelOGFFZDELc}gOuW4OX$z6UspY*Tnez}`HUFoRi7n?B13hxi{!x#Yaf3c zwTsYeaXVWP02%8n`o$U4XMi1_kueWc9c*&P{~;Ht(tiP@rQSsEh&DPKkLGQ5RU?k8 z?Yuhzg`6qN&D>}Kzc+cpf{fTs)B)mtuKpnH7qqFsJ+__qVJ6NA8BpI_u6WKd(;)cwP6f*B>`^r?*q0#wl zr=0v2>;cK9VxD+ab?Hmal)A;1b&^9QjvAmRGjXeWXl{+mJ?Z#p@uMD#VsXtKyC5Dl z(z9oTjdH3kCM8dXcR1KV-0%G0nxxG3(7h+`Uw5O_qfMIPnh3mhcHK1|E&71ofQ9D9 z@CAnb3*bJnzQ*UYd%^&fjXM7tGM7<&t!Qw48=__CAS!IItn%`()`ywq**KfNq&)I$ zXJ;pCqS?&M>`w;`fR>S2JqD)+BKo|`4P{T4&uBlhcOqx~=#Y+ytcXt?@Bo9s0Gt}MZc2N5%h{hFBDKmuVJBe=mSbFHdt08&Q1zktq^9V_hvyJP4S<+KGg>fBwYDI zYsSs~7JV}>sn$RLWl$T7IsXZa#6mP(qZ1Dr1r~{Zg&(NHH%{ECXpPwz+Q0v}@NhC0Z z8SzQJ!60uTJyxfyI%?wO3IHhlZ3-5Lq=ftlXZI;7B&aiAP|U1$KJ(r!}^!R8h*V&F(0kG8~SeJIiO(R1VN&gBb%=W<@1BHV7u z;Gen@m~(Js46nq)XBorBwLWLoltH5J$H-vj3iWO7Ye5(0!m*^$7bC@?B|~%KQswu= zuQM?`)aw`hlYj!A#UEZ&SXh)Z8U46Td+Umb9~oOkI5ZOlr`6{uI-x0~ksMm_ig2Hl zquza9NdaL4@WbYbC}g2FntKzDYznKYPzm#_uJ&h439tX_HtAhIH<^28AWTdck#|h^ z+=AsRuNyF>B+)Yw{OC0G8R~2Otbd<4*-UQ3%gujOZuAgviW*l|qjK&<8mH&oKNmJ? zkC?{r?pjUt@6mOz1{b#LYfa{f9{}(105$z=^s7Y9pZ&zD)i;!{*oH;pgly0 zdaR7!0;%2s(o<>S=i5`lO7Gj8(t%d8;8@?{X^X(>;QH#o!RBe#p#A(;OZ{Ju5bm#i znszBr!tg&QWiuGDBvYV2|F4=C1}^4CO2pWAw!KpyFM_`!T>E{`kayr&h#Z9~JNMJ| z-R!+8OLQ~t_W`5x%9x^m3ZG%L2TfMY^aP?a=J+auIXw?ZXFH26Ru{0iwOH4C(OV%$ zE7{$8Qvz4h{gb9%EN|vLxTTrG2{7JoB2ZgXol_`rYo zfk4jXN3n&K(@lk?JRlBDEUAA1{&4xIHmj@f-L{s6P4qE^CVa4@BhO@O<@|yFNb>)& zCj7^u@gJ+o|Cg4XosFdvn`M9tq@mjAoa(bPRzs3i16g*k*}3rB*)!3`O>u4-O1%EJ z0pE$;uz?dCdHrsqM}jQG325jcRHmd!$;jX1LHca+T^QhY2zJ)B%xZ!EQ_NWHEoU}> z$Ut{D< z#E&{wK*LU?@D82DG(B#puBq!bweq#g`Rd27Q z_ud4IF#GjE1()B>HPy`4snY}dAo8%dgb@b8|qUmu&^z8rs|He)X1`Rdh6$KQK%CPU_cnY zaJX29K50%|TMV#_z)FMft6JGo2|o0Qta3U{atv@(yy^U7}~_;g6^@$R?Z0Pb1pV>b>c$@ zf%@Dp3G{A5cYip2v`4tp@-F1sx|txX@iZ&gDciSc9KHWCnJh*!U3GL~z8e<%*En{K zum9dVTi>#ve5ieYJV-gdH)|8W$L{G=-mTv~K`r~~ZCx?aky{@AsM$bcJF(eJE{p!Y z$-%gz5-R0DZ5mO^x$8b{!cD($0i?rk>-KB=^dHs@@`5$oidbz>M_r@8?^SLNfFK6Iwel$GYnO=-MdJx7gKbZpX z#P6por}JxG`0#w#iJQrMxvo{JO*~~4)W84AV$S8`t6mCx1wvOxrCQAXaNurKRH)@; zoXpf+e3qg-MXRDP`+RI+vp%?*=6N4i8|KLe6?c7#J{Y`T==0Zv5(@wkXV~vGvV0+i z8ie=R!Q+(8$KDgyw@KPWf}IA}DD8$?Y4F>Q^Ur>T8xBX10Iu#$di(t;SB09#eoJkN z=Bvg@WG{og!0(u!9maQCih_N-uiDuGy;ewWq34p%lScDOit){KvAr+6-z1vb z4#>AZajh}1o-=6Dwi?>JrBnt^R#y0L3#H+jUm?%F$`(dkL-bwDhBFWArtts0!nJ3S zJrhc3jML?LLrXHx7Qeo-G|ZD6q$BwM8bapZ0AlUb6nAksYnwH$noKGGBiiZg1FY^J z^Pcb?eQ2(h8j!7c;n}ZvQ&IQpr=PTJU8$(hsu=`KUTm&0s6Gf^$n6|^UG*oI15^tc zt78RqlW0IPb|hkaM_stJWH#Q^Y(;yF6@?qZf&3HwuJ#xx%4OZWE54eqNpcH?Pp>>M zReAP~)!1|a2Qre&>bnlGkDVVgdF_6;e%Y_Jx2vcCH2J)+z#0&F*sqSZ_{CkyEZ7MK zD1ZIA^y8oX>gFAUc7_gv6uV1`LF{0vTy4x<@%G)s{jDvmE&^D9x=8)AlBhaos(%uL z%}s1(ZN#y^&4y}Tu@`UW#MaemuqT+D+d0e7x8|E+oA5^)+a?2S`pu@a;@x87fdpHT ze2SCm_D1`C&;1AJzk~3!nnJ!K-{$tj?CdxzE8n(Wp+*(&hrizO%2oubPYf6a@esPU z(^#+cTj;4HnnIWV{?_A|<7Nqn3>@tRZvEZCg$8fBP4sF2xR3stuqGtSZ%iZqq@t z>cD=p`%btamEZZy{dY0bKN$>Y^m%*Wy-&?s`c@Kbg%ghD`I~+n%z2$S-AOMOw35L(W)^X z-(JgaKhx-Q+uhxf4VH)U2K908J~)2Hd`~D#YaceytCi*X0BkZAga;yT{I^QtPvZgL zKVp&|^-uEv28LEwv4^jYnSBP*(YjkNzaqQsv5r+?-P`_iFZk&Z2a88eQ_tyZRIS~d zQc<{n2&)`#>lqEcIWv1JbRPQ7{7H>{||fBy$D&eeGU literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a88e3c4e013d63c6ef463e1df88f6bee0b9ca GIT binary patch literal 5642 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 N4D?KH!*4n#{ts`Zd}9Cr literal 0 HcmV?d00001 diff --git a/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png b/tests/ragger/snapshots/stax/eip712_address_substitution_verbose/00012.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a8fd4eb09009370b79a8e7d92355e84bad3426 GIT binary patch literal 5084 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 str: + return "%s/eip712_input_files" % (os.path.dirname(__file__)) + + def input_files() -> list[str]: files = [] - for file in os.scandir("%s/eip712_input_files" % (os.path.dirname(__file__))): + for file in os.scandir(eip712_json_path()): if fnmatch.fnmatch(file, "*-data.json"): files.append(file.path) return sorted(files) @@ -87,7 +93,52 @@ def autonext(fw: Firmware, nav: Navigator): moves = [NavInsID.RIGHT_CLICK] else: moves = [NavInsID.USE_CASE_REVIEW_TAP] - nav.navigate(moves, screen_change_before_first_instruction=False, screen_change_after_last_instruction=False) + if snaps_config is not None: + nav.navigate_and_compare(ROOT_SCREENSHOT_PATH, + snaps_config.test_name, + moves, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False, + snap_start_idx=snaps_config.idx) + snaps_config.idx += 1 + else: + nav.navigate(moves, + screen_change_before_first_instruction=False, + screen_change_after_last_instruction=False) + + +def eip712_new_common(fw: Firmware, + nav: Navigator, + app_client: EthAppClient, + json_data: dict, + filters: Optional[dict], + verbose: bool): + assert InputData.process_data(app_client, + json_data, + filters, + partial(autonext, fw, nav)) + with app_client.eip712_sign_new(BIP32_PATH): + moves = list() + if fw.device.startswith("nano"): + # need to skip the message hash + if not verbose and filters is None: + moves = [NavInsID.RIGHT_CLICK] * 2 + moves += [NavInsID.BOTH_CLICK] + else: + time.sleep(1.5) + # need to skip the message hash + if not verbose and filters is None: + moves += [NavInsID.USE_CASE_REVIEW_TAP] + moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] + if snaps_config is not None: + nav.navigate_and_compare(ROOT_SCREENSHOT_PATH, + snaps_config.test_name, + moves, + snap_start_idx=snaps_config.idx) + snaps_config.idx += 1 + else: + nav.navigate(moves) + return ResponseParser.signature(app_client.response().data) def test_eip712_new(firmware: Firmware, @@ -124,26 +175,69 @@ def test_eip712_new(firmware: Firmware, settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) with open(input_file) as file: - assert InputData.process_data(app_client, - json.load(file), - filters, - partial(autonext, firmware, navigator)) - with app_client.eip712_sign_new(BIP32_PATH): - # tight on timing, needed by the CI otherwise might fail sometimes - time.sleep(0.5) - - moves = list() - if firmware.device.startswith("nano"): - if not verbose and not filtering: # need to skip the message hash - moves = [NavInsID.RIGHT_CLICK] * 2 - moves += [NavInsID.BOTH_CLICK] - else: - if not verbose and not filtering: # need to skip the message hash - moves += [NavInsID.USE_CASE_REVIEW_TAP] - moves += [NavInsID.USE_CASE_REVIEW_CONFIRM] - navigator.navigate(moves) - v, r, s = ResponseParser.signature(app_client.response().data) - - assert v == bytes.fromhex(config["signature"]["v"]) - assert r == bytes.fromhex(config["signature"]["r"]) - assert s == bytes.fromhex(config["signature"]["s"]) + v, r, s = eip712_new_common(firmware, + navigator, + app_client, + json.load(file), + filters, + verbose) + + assert v == bytes.fromhex(config["signature"]["v"]) + assert r == bytes.fromhex(config["signature"]["r"]) + assert s == bytes.fromhex(config["signature"]["s"]) + + +def test_eip712_address_substitution(firmware: Firmware, + backend: BackendInterface, + navigator: Navigator, + verbose: bool): + global snaps_config + + app_client = EthAppClient(backend) + if firmware.device == "nanos": + pytest.skip("Not supported on LNS") + else: + test_name = "eip712_address_substitution" + if verbose: + test_name += "_verbose" + snaps_config = SnapshotsConfig(test_name) + with open("%s/address_substitution.json" % (eip712_json_path())) as file: + data = json.load(file) + + with app_client.provide_token_metadata("DAI", + bytes.fromhex(data["message"]["token"][2:]), + 18, + 1): + pass + + with app_client.get_challenge(): + pass + challenge = ResponseParser.challenge(app_client.response().data) + with app_client.provide_domain_name(challenge, + "vitalik.eth", + bytes.fromhex(data["message"]["to"][2:])): + pass + + if verbose: + settings_toggle(firmware, navigator, [SettingID.VERBOSE_EIP712]) + filters = None + else: + filters = { + "name": "Token test", + "fields": { + "amount": "Amount", + "token": "Token", + "to": "To", + } + } + + v, r, s = eip712_new_common(firmware, + navigator, + app_client, + data, + filters, + verbose) + + assert v == bytes.fromhex("1b") + assert r == bytes.fromhex("d4a0e058251cdc3845aaa5eb8409d8a189ac668db7c55a64eb3121b0db7fd8c0") + assert s == bytes.fromhex("3221800e4f45272c6fa8fafda5e94c848d1a4b90c442aa62afa8e8d6a9af0f00")