From 51ee423be534ccdbb812347b4c090596ce204256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dj8yf0=CE=BCl?= Date: Wed, 20 Mar 2024 13:23:15 +0200 Subject: [PATCH 1/6] test: add `test_sign_function_call_string_with_newline` (nanos passes, 2 others panic) --- .../0_continue_to_actions/00000.png | Bin 0 -> 331 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 525 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 531 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 548 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 485 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 509 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 532 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 510 bytes .../0_continue_to_actions/00008.png | Bin 0 -> 497 bytes .../0_continue_to_actions/00009.png | Bin 0 -> 330 bytes .../0_continue_to_actions/00010.png | Bin 0 -> 322 bytes .../0_continue_to_actions/00011.png | Bin 0 -> 381 bytes .../2_sign/00000.png | Bin 0 -> 360 bytes .../2_sign/00001.png | Bin 0 -> 421 bytes .../2_sign/00002.png | Bin 0 -> 532 bytes .../2_sign/00003.png | Bin 0 -> 446 bytes .../2_sign/00004.png | Bin 0 -> 359 bytes .../2_sign/00005.png | Bin 0 -> 390 bytes .../2_sign/00006.png | Bin 0 -> 545 bytes .../2_sign/00007.png | Bin 0 -> 527 bytes .../2_sign/00008.png | Bin 0 -> 522 bytes .../2_sign/00009.png | Bin 0 -> 484 bytes .../2_sign/00010.png | Bin 0 -> 322 bytes .../2_sign/00011.png | Bin 0 -> 278 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 598 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 598 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../test_function_call.py | 59 ++++++++++++++++++ 51 files changed, 59 insertions(+) create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00011.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00011.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00004.png diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..031830835ac98eaabcaf516bcb156c0d25014d70 GIT binary patch literal 331 zcmV-R0kr;!P)k3zGl(_F6Y@n+ZwI5tl0zpA!-9nRO5Xbl~2 z99cQ%mLQG0Z@SKy2Wy%=-v}x}H9tvCrJynSjKY&M931~-Pr+7fM^uXirRZgC2T;QgGV}g+ifFDEtH-_xA@L7mR3mdA!%V zb>C#0bIl|>l-qCbH~9C*K|RX?>nuev&#u$}P~ebIWA@w27-#~+aAy#Qo{Ig(8ERP{ zOK{1j)Xf0jVP7{61ur*|>pDmYPtyeCIvedHO(ri=1HjJTQDAqoi$-!>&?()uH3!)% zpc@0borkY2Q*{QQh`^5%kQV@>id~1g-5rlpQ$Ao-r%eJ90C%X59g=RRl)qb>LY^J1 zVwD7~=WhEb!A#W|XkHmWtLgP6N6MgalC${b)bLehdpfeL3-aKyd)xNc_X6)X6X&;s z-38DwdSVg#&{I;qeqYF5 zRVq!CN?(_h%_k)_S+YXlyf%0l$KIOZZ5=B;8tR5hV(1<XP)w7(c?#KV%+aq`s zIwBfE8u#`5G_(4s5M~d_UqRd0ZtC+Q`o*iy|1WR<1b1PkNKS2Y@(A9 zWm0Q9NhPRG*GL-TJnJMh12*($=ufU>G|VKZ(DaTHp1ESkRvT$PO%WOZcK(h6-OVOV z;N+#ny(O<$gy;+~W8i!0RG~uJ9OIJa~)AH_!osgXC9CMOvia! zA*HVZ&K^_I>ZW8`s&hXAt;wE2`kO z`|~DzfcMd?`R-twFb+SyCj2a-t1AWvu(}RA*V3U_dNw>=MmIpxgSI^$v)QryyNRqr zB(#$Y3BXV<#Q>!{y=BHpx=@5o{RH=6oPK1eh|yy;*yuS{lVsQvB=&T{B(V0TlyPO2 zNw+-nWkN;|u-`V1*=7mStqsnAY5eJlc4m1y0(ibH(eL&PHmjD6%nv~0P6+gGReqUs zi8%dD_#QC9)jWG3z6{vEJr9e~cVN1}q83(W6xJT9mKCF4-%Oh&RYg%0MNt$5;SKZs Vi|V{jKK1|r002ovPDHLkV1lQh_UHfr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8f46fda4be60f454b028076bced13dccde58d2 GIT binary patch literal 548 zcmV+<0^9wGP)e6^Dn;u0rPTLABz@lmLOJ_9RM5~u1>k5U;UhVgNL?u9 z%u8!l%E{6gyvSE?hZo`=AJQH}<<3~qm1Uxw%Z?$BSXdA_d8;;`h7c-%IDdQ5(k(6; zjj!IMn!szzX7mbhHNXdX5M(fZHIA<0>u(5g0)YK<2_2?8L?^O?XnT9jJYWJ0>wLT+ z`RkO&7i$X%1zKv3Zc`h)x2DfjDksZzdjLXZFSA$l;azdgzV}nZM{V1~5jeV;Q0=z+ zbrN2{KAAQDTWl8s;p=O{*FvQ_HCTYD_b_QC8x?!sBKo?PVoc&r2PF2OA?`4TiboC7r6C3+b9{W%P}MML71sX5iGjC_7> zMlV^#4cuRS0Hht)S_n!i3(qyBskleqa!z5hT4_oRfpdU4e|zC_n~SET8bprf3JUz-e4l&|$f|8Vc8z0*6X99LfP>em+h}eVppfo3SbF zu)R@iWo!2A+Wu$F>{N}X1jPV4j$R&YARju})w%8MbmOfecP!YU&Gg12?`_+k-_h!e zDf7jic47#=ep~pr6s1ldEFkS-%czNO1m2_CCRh$DV zceTNh?_%g=+}P<_%C`vW`ifxR%xKOW{(Mg0f{4g$C>9H z0l_KtL3pB@SZ-Ck1I!HF3~fil|9>!t&Y>t+@%EfJbSnJBp#*R7meg!pp-?Ck3WZzYc)mZmGM7rzRCJ4+ z%v~9^{AY~qh5a$3Tab1N{4ls@MNr$2C}Q{>;Bi3hXh!ozZDoJFA1JTE#aV2tK;xsl zLzt@oj^+sJFS^+ITC5?F*Whv;WQ3>t38}&}u78uz9;2Q(IERMGZ=17T?AKS}fNW@*3SYH7ycn`fJMt89XbciPpKLb16?jhL` zi=*tULs-;)DF138G~!0?n?{8~p-?Ck3ZKFsydkfT0?u=%00000NkvXXu0mjfszl|c literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b699c39530569406e180cb3a625b0a8845a6389d GIT binary patch literal 532 zcmV+v0_**WP)7^2{mHj%c1k4&PO*R!gVi;z6t6-jVWIjkG^0^&9_5G0wxC+jwII& zPL{02Rb;OOMiy2bGDIK)I4uw~UR2n{8lE+%D`-ulBW#ba?!ju~tp|Y&fJe2Uq~==i zujyPPt@zpJDli2%5ZHj4`}{aeYb76Mnsh75e4+;;=F++n1pOGLs>T#OdhSIo*=G8a z*3yV$Z`cNya<(gc?PvXrgm9RCE|V5_QuvF0=}!6-Wu=-J+~Q9~=EsYALC?MD$FbUTTh zTYL<>HMCCZ&=MZwH7;3iUTsgpu+cU}Xu_26bJjv=U$3BMlm`1kEE@p3o60&sX=xb0 zf|~W0P~OI zh|cQ%nu*mfWX|G?om`7HW88r5^zpK&DU|eDHySp2H6}~AP-91lZ?Q>|BuSDa3E~H- WUUfXs3=h}<0000H9zMF1m{@hWG;lV!C8}cVmDQP*>JkQ4~c{6pwI3jII}PaOMPZ``qeH zTH<IN_7zuV{sT4|Y!jhSk{l<~S-KUP z=urj8YBG+69f0&i(0ozhkZZQrSX;$vnjNJ)?7?CwCw?0}4;FR++p0ql7?3@2cB{nR z?|B?9hHb~=LILi*kL@r$D^bn0=(EtR+2VI^C+`Si!CFP&Z{!>&9 zo}^BpCkfue$|W<%!`G2z3D?gO{gqHsOOc>wZ~TmzG=XBD(=s8j8+r?X`d+t-5_6($ zZ^F{g+l$P?6oz+#fZ^2JG*s4b6SQAvYpuA}xMcU=M+5i9m07*qoM6N<$f+i2@ A^8f$< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00008.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..fda4cfd7c1a5d4cc6a3c072aff9d039f48c19792 GIT binary patch literal 497 zcmV6kdH)CQMSEdqLpb~*=x#FMn_MI=AQ54e){3GiilTTQet#aHwKlg}v!-xL z%0V^~^8YKK^Uv)bo>jNj4W5j;&=%A~XDmm2&ngU{9vtqK#An`AiO~V*a^i53Haxd#bj7E>EQzSljlle_a;dKb)panGan3&cXo1B|mocucBgb zB~^v4Wbb+r8E`Ie?HIe8TX=g5l zxklgLO?hy$qDm}UWWnW)ir4=he!j-(_|%{r)w$`qcI8IvGIfGBv^tedx8HKNam~qs zdWo*91@#6i8r5Go&Aao;*5>f_dHT<~wmJAb3)4J%;tA`HGs`>bSy>C%pa|qa1_r)8 Y4AaGDu3GSFaUY25>FVdQ&MBb@08J-{X#fBK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00010.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4259c655f2efda6f0f36d2857a3a8e06b6f5aa GIT binary patch literal 322 zcmV-I0lof-P)V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00011.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/0_continue_to_actions/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..442171b47e4ff67193eef68ad31fe2a9ef0c4561 GIT binary patch literal 381 zcmV-@0fPRCP)CUrHL}9mpar7zVHv8nP0}>+L zp0n>6ha*1#00000$aK7j@o8^z=uW2GP3}8oPmbFUOzSILJou8)>VQ)5^+%ZVpb&qq zix~2iv_-Gy?u6e`7it%#HgkQ&PDQq9zYXN@BGAitPT_wLt&? b0D$uWy*A0b#6tqV00000NkvXXu0mjfVHdDg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f4acef043a11b523d3d4ecde8449e1318f98ced3 GIT binary patch literal 360 zcmV-u0hj)XP)lAzA=PeJ;1y8HC5`1$0pe9Z>g}y!XTYWB&|7%nAU@(9%3+`lqNBP-q=f`b@M_ zP{J|vPq@lO3;+NC006YWZ=Td%dmSC(-I!#~CH&cKDe&X-c>deu)bIUN$J&KE9A4ebfFk?B}KPVH_`g#Z8m*6;!KlBck6*bXxQ00003Bh-(} zS};=#8XE1TX2#F}C_G|S!f zNaJSj=reOR`xzqwU@=r_MrMU^t;tfn>;uhUl|E9`7}=?qcB~@>!QqL*6zR|*Ta9Cj zufsp4Uo}60{A~2>u^&zb`@qfiKgM7lPF;-{IN&-Dr?o`ikNu)lO_$pCj5STWGLO@# zPK}gN00dq;;RIc4rRU1iI(mqvAJS#jltRbTH(#;~5BXdyY_6zxK?$6L^sqR_7`hnE5!Sqs8%o1n*2W~4?srYIS3 zGa;Gd#Z_qFnyD}@AelP}S#=ji?0~$yod2vQ8}narVoGYxa9qB`8sx$><)Sve5L{BK z)Kkk25K#oKW1?ZvaMdz+L{tUz9hJrv)siYW0mc61qUYU&2(%*@!6@ZjiEKQA2F9IF zY})4js7+#Mq-6={NMo)$dMr?5bz=HFZ98Nj?(A8`L|cY&eo`v!u~o&lKRAws|4CY8 zP&p&|9R38L_K5ysL=JW$PNALnC-<;NXUE)XD`KAO0Yo#Bx;O#i+!5;n+R?TMu@kGk zGxL`et%F95yeC{3!4_LpiP%P_?zEnxNH`Z_A!ywdqf+dGGMGhQ2!o;Lvh!brr*}8F zn{k?Z-g@+~t!G$;K?x{gt+jt!2|aQ2Gc3WhFJeh)ntG@_8O6O^F8JLu2aX*;zh)Sh za4}fpNli^F0`WT+XBb!w?M?q10}smW50gF&x&uInE#Fe}BH4g>;$fP_Cs WoNAO}kSpT=0000Jk!a#S z-!fsBZg5-0d6e&(YEWZUl6M~P#lj z$jO<-G)T=$JNnN>b~1Hkgvs)MV@*XTS><<7!bPfZCL7Q$|I zzkmiS)k&piF#v5dDAokIOw4#wmy$iRxOVBKDpzIDMr>zFDD@^QQbFPFYsY~MSxKu- zOt*+WW5@t_`w{&wgE3eMs?bV){5jnGZulLpscIy<-C^HW#Bi+bE%qL+?)S3Y9=Z!u z^a)<58@X0Pe&!p+qbs;r23X7p)9TPiHW`2!RpJ_zXU;ETv!PD{_Egx79Wp@uG3$ap o!H$&v6)_cc6Bqyh0Qe{T0TV+L81nJ!l>h($07*qoM6N<$f|!fNP5=M^ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00004.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..620a0127126489a9aa839d0ca9799dbc57ce5f32 GIT binary patch literal 359 zcmV-t0hs=YP)-q| z*mVH2@b(_SGvZXFCbB0{87%;j8_dSik3G>1uRbtZ0PB|A;FZ1QX;0DBwLebe9d3qM4R7O&kLWQ(Dns#kU^)uCH z)h@@lB2ntwB5CE4j`WJ{E0xO1SaZXGn?mgOb;t{pxcE8 zS$cI^BuLrFPmUch4%VaWRmXVToB>yHn+a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00006.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..75739f72c38fcc845ad0cb61b73b13a6e4975a35 GIT binary patch literal 545 zcmV++0^a?JP)sAFGE*fJR* zRPuZ*`u)h+F9LS}>_=r0mm$O$gIk2S@>GJdqL1D)fX%bQL1f&vfrq(jK!+e&84;$E z9dIkE?22YV*Gl+^W(d2TuWG0~D~`R_%DLMcbxaxT|bkr8^FRid~$O5WiDNvF_^&cbGV*JgX(mBQu4?1Ew#?e zSPQv^hNMWUWZDcDhj?Z{F^&!fKOoW7n?BOcEbtIR;^;FQ6)ouL2lddN_PXIJs5M3U zDQ~O^mo}EFwvL@7$c9!RD$zT@c%5aZXIx*j=g^cjI3JEoK>}IjTSwu^~7pq{J3k5(P!MygFU-KR1t|1Fj2Uh;d6Ggu^izfPGfQ6)jRW3SKz%BN-lUR$f`|LS2XhSf4NF z+R|>(J|7*;xhFmub1;Z29GK&&=j@K@Ay@>yR6J8X3ao6wUxC1SO zfN#zZ-%K;qIR_iqdJgNd!H0KX^cX)j5bq^nxO<$StAoVK(ZI^NtVqPEigNkmnMs zh9+TV>;SQ(%zso-u>5xBQwDZ;l7~tcUML*0n*iJ*$>?MXI!sPLk|fFZ@(0IrQn|Oc RzG46X002ovPDHLkV1jz^>o5QS literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00008.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..aaef6b0fd6f5260492e7982b18014987ccc1ae72 GIT binary patch literal 522 zcmV+l0`>igP)&Uu|$_@`hqHvW1JeL+(U4;DN!Dg~?pY^G0hnO$NOYz5u` z)P+X|Ys$9}D%lu~dd(Q+;b2V-X*eN`R?4W@?*mORo*pWu4+ChlE(;&%l~S+7ni zuu3J9oOa}+d9m}f`9>Dns~6R7^v^|XllQy4I3M8K6&S%d{BV8v&kS9iF*v})$;V<4 zS!i_VmFL!1Q?2UUxO2WJ#oelOw;`)=`PC=@+lbwSS=cs_kVK$M_I?yZxGqh-&tBzLups~}4nIa}l+Y7(WcrTw)Q3|60Q>#kmun9H(iYpn zTC^ts-KUac_DZ^}RBG-wfDUJM z(ni!`HRI1Vta#+Hr|oUmLv=!Jv<1@nT-MPws8w|Ab$dDjz;YUqy+#d1jk3is#(6B& ze=30@*hmey%J3`)yo}>$KGsAD%o$F8dslsdoQOIL?x?Ln)&Mr!G~r>p)#Ba48i4%N z+Ju`kVN0#X%S!#DkZWK!eF4yKl}TKN5M>N5p>g8b2NgYYH#Md`fUUDa{wfo8;AY-5 zKRD^-xmHuP^$%6XqoHu@c27^rGmjG% z0|uI;S5V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00011.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2638362dcaef6dc6520939c7346a9aab1fa25f GIT binary patch literal 278 zcmV+x0qOpUP)bw0Npi3>n?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00000.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00002.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..90f3fb44ed7f2a8eb5d6ea8e091afa9fd97fcf63 GIT binary patch literal 598 zcmV-c0;&CpP)Q@-F@1)UhZLQT)ih&yStNjff~@16k()0AL$m6J>=E;(_;`YY_^O zU(a2Vqz|`d)n0>`ct90mI7P>Y7LK@=$@OXlEJEe{ z1t9)gD!unkSal{L7Mfdypow-bJCbS+|4fv zdUF2jpeahnq0Dn3F@k?JYVs zB~086>RR-P$c=J-FwsFhz|`-`U1>Csge}T6%)5SOnJX~P2b}LZLYKXy0@bxa2a+|V0cK}=UvKt94B+`EG|Y^X6Q=Xca<*I zbCw5iSeR+M=_7Y6fJKxzB=YS4lb(VtiF+e1@Bl93f0|5iB{To1-OEws0RR9100000 k0000000000004L)zfI-`O7uRT8~^|S07*qoM6N<$f@fL`4FCWD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00003.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..17a281a0d779816d9a399b95c1af4e96ed3be400 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#tk59^9=D6H zb_jplzvRu)_Hzb4O(Oq2F5UZ_621D&bSAFbYz%pM_jqS0DZNe9Ji1ynTt#UWL;9x= zc?X`~T6M+lqOD})GNvm9-&1a1a9z@C?fPZ6539z~E&M+cVs7a#)i`{2H>3P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&dn?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00000.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00002.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..90f3fb44ed7f2a8eb5d6ea8e091afa9fd97fcf63 GIT binary patch literal 598 zcmV-c0;&CpP)Q@-F@1)UhZLQT)ih&yStNjff~@16k()0AL$m6J>=E;(_;`YY_^O zU(a2Vqz|`d)n0>`ct90mI7P>Y7LK@=$@OXlEJEe{ z1t9)gD!unkSal{L7Mfdypow-bJCbS+|4fv zdUF2jpeahnq0Dn3F@k?JYVs zB~086>RR-P$c=J-FwsFhz|`-`U1>Csge}T6%)5SOnJX~P2b}LZLYKXy0@bxa2a+|V0cK}=UvKt94B+`EG|Y^X6Q=Xca<*I zbCw5iSeR+M=_7Y6fJKxzB=YS4lb(VtiF+e1@Bl93f0|5iB{To1-OEws0RR9100000 k0000000000004L)zfI-`O7uRT8~^|S07*qoM6N<$f@fL`4FCWD literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00003.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..17a281a0d779816d9a399b95c1af4e96ed3be400 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@9fba4!+nDh2#tk59^9=D6H zb_jplzvRu)_Hzb4O(Oq2F5UZ_621D&bSAFbYz%pM_jqS0DZNe9Ji1ynTt#UWL;9x= zc?X`~T6M+lqOD})GNvm9-&1a1a9z@C?fPZ6539z~E&M+cVs7a#)i`{2H>3P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&d Date: Wed, 20 Mar 2024 15:16:36 +0200 Subject: [PATCH 2/6] test: add `test_sign_function_call_string_ascii_subrange` --- .../0_continue_to_actions/00000.png | Bin 0 -> 331 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 525 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 531 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 548 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 485 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 509 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 532 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 510 bytes .../0_continue_to_actions/00008.png | Bin 0 -> 497 bytes .../0_continue_to_actions/00009.png | Bin 0 -> 330 bytes .../0_continue_to_actions/00010.png | Bin 0 -> 322 bytes .../0_continue_to_actions/00011.png | Bin 0 -> 381 bytes .../2_sign/00000.png | Bin 0 -> 360 bytes .../2_sign/00001.png | Bin 0 -> 421 bytes .../2_sign/00002.png | Bin 0 -> 525 bytes .../2_sign/00003.png | Bin 0 -> 516 bytes .../2_sign/00004.png | Bin 0 -> 414 bytes .../2_sign/00005.png | Bin 0 -> 359 bytes .../2_sign/00006.png | Bin 0 -> 390 bytes .../2_sign/00007.png | Bin 0 -> 571 bytes .../2_sign/00008.png | Bin 0 -> 585 bytes .../2_sign/00009.png | Bin 0 -> 593 bytes .../2_sign/00010.png | Bin 0 -> 601 bytes .../2_sign/00011.png | Bin 0 -> 544 bytes .../2_sign/00012.png | Bin 0 -> 546 bytes .../2_sign/00013.png | Bin 0 -> 322 bytes .../2_sign/00014.png | Bin 0 -> 278 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 708 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../2_sign/00005.png | Bin 0 -> 991 bytes .../2_sign/00006.png | Bin 0 -> 962 bytes .../2_sign/00007.png | Bin 0 -> 347 bytes .../2_sign/00008.png | Bin 0 -> 299 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 708 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../2_sign/00005.png | Bin 0 -> 991 bytes .../2_sign/00006.png | Bin 0 -> 962 bytes .../2_sign/00007.png | Bin 0 -> 347 bytes .../2_sign/00008.png | Bin 0 -> 299 bytes .../test_function_call.py | 59 ++++++++++++++++++ 62 files changed, 59 insertions(+) create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00011.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00011.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00012.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00013.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00014.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00008.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00008.png diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..031830835ac98eaabcaf516bcb156c0d25014d70 GIT binary patch literal 331 zcmV-R0kr;!P)k3zGl(_F6Y@n+ZwI5tl0zpA!-9nRO5Xbl~2 z99cQ%mLQG0Z@SKy2Wy%=-v}x}H9tvCrJynSjKY&M931~-Pr+7fM^uXirRZgC2T;QgGV}g+ifFDEtH-_xA@L7mR3mdA!%V zb>C#0bIl|>l-qCbH~9C*K|RX?>nuev&#u$}P~ebIWA@w27-#~+aAy#Qo{Ig(8ERP{ zOK{1j)Xf0jVP7{61ur*|>pDmYPtyeCIvedHO(ri=1HjJTQDAqoi$-!>&?()uH3!)% zpc@0borkY2Q*{QQh`^5%kQV@>id~1g-5rlpQ$Ao-r%eJ90C%X59g=RRl)qb>LY^J1 zVwD7~=WhEb!A#W|XkHmWtLgP6N6MgalC${b)bLehdpfeL3-aKyd)xNc_X6)X6X&;s z-38DwdSVg#&{I;qeqYF5 zRVq!CN?(_h%_k)_S+YXlyf%0l$KIOZZ5=B;8tR5hV(1<XP)w7(c?#KV%+aq`s zIwBfE8u#`5G_(4s5M~d_UqRd0ZtC+Q`o*iy|1WR<1b1PkNKS2Y@(A9 zWm0Q9NhPRG*GL-TJnJMh12*($=ufU>G|VKZ(DaTHp1ESkRvT$PO%WOZcK(h6-OVOV z;N+#ny(O<$gy;+~W8i!0RG~uJ9OIJa~)AH_!osgXC9CMOvia! zA*HVZ&K^_I>ZW8`s&hXAt;wE2`kO z`|~DzfcMd?`R-twFb+SyCj2a-t1AWvu(}RA*V3U_dNw>=MmIpxgSI^$v)QryyNRqr zB(#$Y3BXV<#Q>!{y=BHpx=@5o{RH=6oPK1eh|yy;*yuS{lVsQvB=&T{B(V0TlyPO2 zNw+-nWkN;|u-`V1*=7mStqsnAY5eJlc4m1y0(ibH(eL&PHmjD6%nv~0P6+gGReqUs zi8%dD_#QC9)jWG3z6{vEJr9e~cVN1}q83(W6xJT9mKCF4-%Oh&RYg%0MNt$5;SKZs Vi|V{jKK1|r002ovPDHLkV1lQh_UHfr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8f46fda4be60f454b028076bced13dccde58d2 GIT binary patch literal 548 zcmV+<0^9wGP)e6^Dn;u0rPTLABz@lmLOJ_9RM5~u1>k5U;UhVgNL?u9 z%u8!l%E{6gyvSE?hZo`=AJQH}<<3~qm1Uxw%Z?$BSXdA_d8;;`h7c-%IDdQ5(k(6; zjj!IMn!szzX7mbhHNXdX5M(fZHIA<0>u(5g0)YK<2_2?8L?^O?XnT9jJYWJ0>wLT+ z`RkO&7i$X%1zKv3Zc`h)x2DfjDksZzdjLXZFSA$l;azdgzV}nZM{V1~5jeV;Q0=z+ zbrN2{KAAQDTWl8s;p=O{*FvQ_HCTYD_b_QC8x?!sBKo?PVoc&r2PF2OA?`4TiboC7r6C3+b9{W%P}MML71sX5iGjC_7> zMlV^#4cuRS0Hht)S_n!i3(qyBskleqa!z5hT4_oRfpdU4e|zC_n~SET8bprf3JUz-e4l&|$f|8Vc8z0*6X99LfP>em+h}eVppfo3SbF zu)R@iWo!2A+Wu$F>{N}X1jPV4j$R&YARju})w%8MbmOfecP!YU&Gg12?`_+k-_h!e zDf7jic47#=ep~pr6s1ldEFkS-%czNO1m2_CCRh$DV zceTNh?_%g=+}P<_%C`vW`ifxR%xKOW{(Mg0f{4g$C>9H z0l_KtL3pB@SZ-Ck1I!HF3~fil|9>!t&Y>t+@%EfJbSnJBp#*R7meg!pp-?Ck3WZzYc)mZmGM7rzRCJ4+ z%v~9^{AY~qh5a$3Tab1N{4ls@MNr$2C}Q{>;Bi3hXh!ozZDoJFA1JTE#aV2tK;xsl zLzt@oj^+sJFS^+ITC5?F*Whv;WQ3>t38}&}u78uz9;2Q(IERMGZ=17T?AKS}fNW@*3SYH7ycn`fJMt89XbciPpKLb16?jhL` zi=*tULs-;)DF138G~!0?n?{8~p-?Ck3ZKFsydkfT0?u=%00000NkvXXu0mjfszl|c literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b699c39530569406e180cb3a625b0a8845a6389d GIT binary patch literal 532 zcmV+v0_**WP)7^2{mHj%c1k4&PO*R!gVi;z6t6-jVWIjkG^0^&9_5G0wxC+jwII& zPL{02Rb;OOMiy2bGDIK)I4uw~UR2n{8lE+%D`-ulBW#ba?!ju~tp|Y&fJe2Uq~==i zujyPPt@zpJDli2%5ZHj4`}{aeYb76Mnsh75e4+;;=F++n1pOGLs>T#OdhSIo*=G8a z*3yV$Z`cNya<(gc?PvXrgm9RCE|V5_QuvF0=}!6-Wu=-J+~Q9~=EsYALC?MD$FbUTTh zTYL<>HMCCZ&=MZwH7;3iUTsgpu+cU}Xu_26bJjv=U$3BMlm`1kEE@p3o60&sX=xb0 zf|~W0P~OI zh|cQ%nu*mfWX|G?om`7HW88r5^zpK&DU|eDHySp2H6}~AP-91lZ?Q>|BuSDa3E~H- WUUfXs3=h}<0000H9zMF1m{@hWG;lV!C8}cVmDQP*>JkQ4~c{6pwI3jII}PaOMPZ``qeH zTH<IN_7zuV{sT4|Y!jhSk{l<~S-KUP z=urj8YBG+69f0&i(0ozhkZZQrSX;$vnjNJ)?7?CwCw?0}4;FR++p0ql7?3@2cB{nR z?|B?9hHb~=LILi*kL@r$D^bn0=(EtR+2VI^C+`Si!CFP&Z{!>&9 zo}^BpCkfue$|W<%!`G2z3D?gO{gqHsOOc>wZ~TmzG=XBD(=s8j8+r?X`d+t-5_6($ zZ^F{g+l$P?6oz+#fZ^2JG*s4b6SQAvYpuA}xMcU=M+5i9m07*qoM6N<$f+i2@ A^8f$< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00008.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..fda4cfd7c1a5d4cc6a3c072aff9d039f48c19792 GIT binary patch literal 497 zcmV6kdH)CQMSEdqLpb~*=x#FMn_MI=AQ54e){3GiilTTQet#aHwKlg}v!-xL z%0V^~^8YKK^Uv)bo>jNj4W5j;&=%A~XDmm2&ngU{9vtqK#An`AiO~V*a^i53Haxd#bj7E>EQzSljlle_a;dKb)panGan3&cXo1B|mocucBgb zB~^v4Wbb+r8E`Ie?HIe8TX=g5l zxklgLO?hy$qDm}UWWnW)ir4=he!j-(_|%{r)w$`qcI8IvGIfGBv^tedx8HKNam~qs zdWo*91@#6i8r5Go&Aao;*5>f_dHT<~wmJAb3)4J%;tA`HGs`>bSy>C%pa|qa1_r)8 Y4AaGDu3GSFaUY25>FVdQ&MBb@08J-{X#fBK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00010.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4259c655f2efda6f0f36d2857a3a8e06b6f5aa GIT binary patch literal 322 zcmV-I0lof-P)V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00011.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..442171b47e4ff67193eef68ad31fe2a9ef0c4561 GIT binary patch literal 381 zcmV-@0fPRCP)CUrHL}9mpar7zVHv8nP0}>+L zp0n>6ha*1#00000$aK7j@o8^z=uW2GP3}8oPmbFUOzSILJou8)>VQ)5^+%ZVpb&qq zix~2iv_-Gy?u6e`7it%#HgkQ&PDQq9zYXN@BGAitPT_wLt&? b0D$uWy*A0b#6tqV00000NkvXXu0mjfVHdDg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f4acef043a11b523d3d4ecde8449e1318f98ced3 GIT binary patch literal 360 zcmV-u0hj)XP)lAzA=PeJ;1y8HC5`1$0pe9Z>g}y!XTYWB&|7%nAU@(9%3+`lqNBP-q=f`b@M_ zP{J|vPq@lO3;+NC006YWZ=Td%dmSC(-I!#~CH&cKDe&X-c>deu)bIUN$J&KE9A4ebfFk?B}KPVH_`g#Z8m*6;!KlBck6*bXxQ00003Bh-(} zS};=#8XE1TX2#F}C_G|S!f zNaJSj=reOR`xzqwU@=r_MrMU^t;tfn>;uhUl|E9`7}=?qcB~@>!QqL*6zR|*Ta9Cj zufsp4Uo}60{A~2>u^&zb`@qfiKgM7lPF;-{IN&-Dr?o`ikNu)lO_$pCj5STWGLO@# zPK}gN00dq;;RIc4rRU1iI(mqvAJS#jltRbTH(#;~5BXdyY_6zxKZwKRey57=-wc|$3wEd*$B-pouraJ=kbIW;e@#FdT1A5Lj;nyYzxSE`1 z>;pnZnM@kb;ouTt5XUJN(8NrduG&jR2K421|M!*j#{MTcur=0adW0Cn!Z_umHoOp$ zp7i6WHt~}s1GrhiFV=xV3&%T_l}E%>fG?17p!Drl9Q_@&13>;_(dXTS8pvc)vQ)Y8 z2uj>{JW!M7@p(VW0^tBhK8~q}pNWD&@+ldKV(Zh3RIZUho}c&*;GV54cYiqM5`RgP z7Fe6L`wt>&~ZVk6vV9Ji@!!ZT4ePeulepEZO_7PLyZ}jc{QxVC&1C)@p-&Od;eAE&W(8P7TK3o(hjJ1`W4psQy-2K>KZ3-NQj#P|k|f!}(fR*6|2jU!mM+!A z-d{37mmV0_#dY@Yx@l+~%KKdPWc{l_iKeN|> zeNcoN7n8+vG_sTcq(Mpr6m=y@f6WN8@CsW1yoO4PM2%(Ce^`LskX_I;!m2j2^K1@4>sQKyyU=sAj#2rtN17)E zO`LaXi1L-!JT73sYDU-*2aH8fU3YYwsEo#LB_mPn-FmUgSsC!49L~p7 zz2iit?4;R2#9?#x5mOvsZO_@ine@Rw(y4LJ$7<*{ z8cqDfig7EDZaWfXLG$tOeb!_QVgnhL547#dSW?~M2DHtBFAUKIre6WC9Qjqui zhLp9Tr(uh6H1Zuflv literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00004.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..da4949c052350a8363c35a5f15138f8bd71da173 GIT binary patch literal 414 zcmV;P0b%}$P)!5Jib)?tkDc;)1d(=>eKS0sXIB7;MN-4}c^D000003}MUsejabb-E7GcyZG&` zF6`D7!xnKKw;Nq=%_MERZbKv3Jlb_CoX1VjiZF-94{N7i6E-N`Wl&jjPC96%^SVeQe zT>;iD*_YCei582P%gnx7fU_gHk}V7}!>%?Cd;wtfYt4hBP>adQSmk9?P)EPZj%>av z?cOe6&>$iJbr}@vPHqzuqp5}5lEtN4FIBlJ<7#6mls3UwOH!=9ckD=)owPcLIV`-- z=n?>LJG}p85QC9m78(iG;gP_-vynTFo{;pOee^%uKR_PiR3AxAK-*#5JS^z?$eIDL zP9hg%%>XRxZpq?{aLb!&P($N;nECk3OL^etSEe8U008B@08_#7Pn>hT`2YX_07*qo IM6N<$f=KbTO8@`> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00005.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..620a0127126489a9aa839d0ca9799dbc57ce5f32 GIT binary patch literal 359 zcmV-t0hs=YP)-q| z*mVH2@b(_SGvZXFCbB0{87%;j8_dSik3G>1uRbtZ0PB|A;FZ1QX;0DBwLebe9d3qM4R7O&kLWQ(Dns#kU^)uCH z)h@@lB2ntwB5CE4j`WJ{E0xO1SaZXGn?mgOb;t{pxcE8 zS$cI^BuLrFPmUch4%VaWRmXVToB>yHn+a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00007.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3d51e6c4ee67973b0269a95b24b99043dc0ec9 GIT binary patch literal 571 zcmV-B0>u4^P)NGETxp&!!JeK z+&HxC7w~%SnxjEgQsv2#Spi>j&9oGU0&dgxh{V~i3^u-EFD)^%9`FT#vPr2zaY(Ar z)-7XP+oJu=h^&%@D8TN^E(~4n_xYyA+%ZH;^|!~dFJwbZ0<6sZ0M2Szn(vj zGH$49;|M_QyEWjR^lgO79#4;bKQ!UguBSY%a0h@ok$zUpX(;K8!4NAB3lYo)K&FTu zf8m6sQ#jD$hXVQ=t^@)wwr$-7#flyCydZg(Mx~zsk+Ubb2oMZ3K#s0 zYj@VH#d%t90M63^ZHo)y`jH#JUfTAp2U7$sp((C2r`b91^t|N$7o-S0&eC7m)jmx@ z^3|rMEd0TF{%tXmo{?jTdaxEPw076ly6IHdT0?&+BokWcDW#SS1pti<1>iq0H^pcn zu8CICS05XBzn{@l@>RH?#J~VV6TJy$iI!ni*uH$Y#_?kbwY%JQcD@t*wYLG~TbF2IhS`LJ__aeJpmZY%&yf z(-z%ZQiIZd_aHS+-O2<&wEKPwDIUpwOcwoVD5lc4=lPszN0|X&M`#lYNG#jE%lq~H z$Lt%zbg}{H18WoZq;Dfs_GCQvbHH@Z#_FS|JkA&k0CXa3*34x{amFBobFohx(M>7< zG(~v)B^NAQ!t3TA+A&h*Qn>bJrl7^Pm$~2$&@)WarrOad@zJyZt#P&Nr0eNDO{H#1?rU?)odaU4RB~_#J0} ze~RkriopdOoh)iWpc!mf)QW*OZ)|gcvUX2zKTLUaIW|>_L4FOYxmXUVs3`V=d!ZJgCOKMq5 zw)cxS$p#>|PFXKnMm8{B2A;~O_BwImoMv|8Ubq8JC9*e1bV|8E!Zw~Gz@$8RRRBDS zhqv=I`hR{J+5u48rD{*lEwWiJhryDZJp^nC@7SuOozS_+raqyDDEHk-dA}%%qPT?* XIOvqlXG43j00000NkvXXu0mjf41^4Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00009.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..3653bf513d3b183cd476014157b87c4dbbd74108 GIT binary patch literal 593 zcmV-X0Ni$Q_*hOQ;-l z?igy$6L>xUr-OCbDqWI}%yLLLAY`eKPO9w;A7kYz2WI`@6gPe+<{<1`J0a?%9c&Pj z?vhlY)ZasxDwlEXSrKrU)&TJ{IginzKLKM(eS4TYk!PF=OZ{}Bs#7JPMmmn={p&6! z!w3+wG3$W7u(e@N`UbAToAKzMKvyeI9u`X==K$4+s#t?zNa6HB2&Wd39HtyVQ-sG} zGGNsZUTE?G^6xVYZIA17czG5E##;hRyWz7LFE z5I(u=_*lZjdqq^z8dUo>tbyYkqr- z)3M!*)~R@i(YQ$7((Y6781lXxK7HIUx}oax1VDZ1gpkn?vW3(7^pvwc>rw>U(VY{^ zLdN+D0Cy&Ej>gR;xzLhq7S&@!Sp5Hh%dSvhZ^?Lc+HQMrPiJ5#v72$d0LaSj>}}oo zw!0*ytWaW{0M)+o<^xIv?pw)KhBaV$7Pk0@;(a^*2N!>MYwv*DKHsPDg>A08;QAJ9 fp-?Ck3Qqh1qgrTDv&%+d00000NkvXXu0mjfeS8=J literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00010.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..7371323dfbeb8231887d1da05f009d455b0460f2 GIT binary patch literal 601 zcmV-f0;c_mP)S;&XfTM?6Rf0^L?V$$Boen^n_B(aODSc0hEO@l zJkXRpPvEul<*H0JSV_{6AsSx;YdDF~y-k@^ns4ICeW|mp5xJK|X~+%}4p4EBs1&6> zY|v*+eO%W{`G*kthz?2uy$BIv;4!$4aiSj`x|H|!G}Vv^PA5A-YQ>;RK+QI==)Lxz zKemO#&A_Mw>aLc;h$fD!d`%GfQBVs`CD3nihB*hQMpUO2Hw-C2A9MjZt7~Y7@9tvg z3{dN=lfQCY4WGcnyh*^BBfYgU+e8N7o>wDU1*@3!Bh!;kJ04Y6&4i>Z*#)cGR)R|Y z;DxxMMQq+NohOaBfFR+FWmU^dY zr8Xg~h;SMhxJ-7V#s2{}QXeg=4bjcGyTBTA4tis-&c_$3iDh7!1J+%uKy%;$DUG3+uQF7wwb9~ z_B(LwA9bl;)I|}4Exiu>^{HW393JpCmG}|Pe&L`i2GQtKncflbC4eQnQXFL?wAVPy zanYsrO9?~cw5}~ZN)Gg?*Ld}-BG2GY#cAmM_7;Po(;Ny@`%qCY;p*HvcF}%r&jPfD z6t83)2`GI_0b7=DB~^Mn7W=JGn{0-PSl5Un+zC+X1&JlK3?arGG%@3_FoNC$z$L;m zUbMK_5*|3>RR`>fGa(6R8UnVWSF5HQ%-AF*1n$&aq^s0m~ zyZ~uP^J=`$fgvt6897V7PJi5QiJZ=;knMKPr||EW@VwDyXZ=bpcYuW%@WqS6FCz|h zW`x912tWP?5FCI>46yb^d;Y zAy~0izI)6jpp4p@ux9xdQYFtsV}FifnKqv+Hj6C*adPPr&_{u-Xcn|$!k=hYfMWSp>2yna*p(fvA!s0Z52yYso2)Yn z-x@@7HU@Ep1CB1~P1Rzr>c%5i$%XjNS81(&5dV7-TNHh^>vwXy11*?jhN`osaxDD98)yv}S!- zcmCmnvfOA9vB72IE`O27m0cR`l_z#UT6~s}!_+;#R{leR4zAHlxY8dF{QeJshw|UZ zm%7c+TKC!S(+d|>rzPpT2@94D_;mp6Xn4ix+*~y}^}%Q`km$x}x&!P(t8v|gAIORY kB${LLVLt*F1VK>q0fZyDVG$ZnsQ>@~07*qoM6N<$g0mR*+W-In literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00013.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00013.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4259c655f2efda6f0f36d2857a3a8e06b6f5aa GIT binary patch literal 322 zcmV-I0lof-P)V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00014.png b/tests/snapshots/nanos/test_sign_function_call_string_ascii_subrange/2_sign/00014.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2638362dcaef6dc6520939c7346a9aab1fa25f GIT binary patch literal 278 zcmV+x0qOpUP)bw0Npi3>n?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00000.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00002.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8476f535dc33e3c50dca055fd20c9232528354 GIT binary patch literal 708 zcmV;#0z3VQP)@G> z?e(Q5#ib2q*YLetK!`CWXMG?)GmORz>KYO z`~Vc|mx|tdCuA2>BQuoG+JXl9oi;4?tKQ~*0Rvfj4@mPa-xl)1YQvDZ!!wI}e|oXX z0RR910002s1Mxf)J>+@H^(5TYhlg~ym)WxI88I3kXOmEYgyd*wMGDa8g++)sh3{KZ z2-QMX43%w2@Xe(Nrb`FxY1K}PW%gPv78E^-?5BsL*`Avxi@&#K3m)0Mj2wVMw3J=y zHRu@$g9X3rE~ba0rR1>L)Ed_el&#}k0eP}ixd|7QB|F7`dsB~93oUN#lKm3e9ewC; zS%q>1ELh-lR!+T~j!lfY3l;b7nqMu~eN8S9;r+#640eKDXeSjXV+^LU z$i3`kW?Xy7Tbpm5bF)KC_DKA;7u+n!nG53WqzqxOFzRzN?M@kEB5%_UU> zu@6AL1=F1ESe#B=7Th;5eGBRhrc1kaKGJzfqct`uuT;}jf%h=-L+xIMCk7ssX#fBK z000000D+wkVm8>Pt*-b4aG_)!PK?+*D<5FyMAzROIRG@mdhX71Cxmp6?700003P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&d~uaU5fe*XvcG z%nz9-my+`e9LGV6OMx_H>NYd5;!(bqOHys9$&$?0o}4K_{>+xC&ia?uGK`)8r9Avy zE@^R&h^ebojwNFAu|7V_O8L_$RJgPhu2HpPXgV&iJ_Eqm0d1yj0E1V~beb8AILjfZ z3NUZ8Hkqt$c9L>I!&chU7}d9Utn8GZM_piQm%VHUUifQ-QonNeS6C;L|A?xfvnZlkg>MbnKt1w=2*zP17{Zf5O}ss~co`mbr{RT9VbA z$2U@%8aCg2BC&YOIbdO{r*@UJ={zbQ;ud93c&?oK`+x~Hhm6P3aY};_8MERTgBqXs zc$`5YHC?(0HAQuCPM?N-;C{bU?1GX5mZApurhL@}(SJR9Qiq0@u8+afa+$)APo)HF zb+zV=Q$uSGeNvY!=&J5gW=g07q>xYt{07#Bn3^c(gyr;EX5ja|&4{S_EFP$0VF#4M z7vYjxAJ_*`3U?DsY~pcKfobHn{x%d-xAiyEeQ+o3h3=%+;X9G$U4JWrhGhnP>2=l$ zQdG%IW2-pG1GK6Fx8+?}L74f6^B8#OIA8ytuj_h4eLw5Vt~DYl)o@?oz2Wl z+)Xp!QbieF4mD}5Bh@^fEx=P=Pj}+cxMVt)Krf=zFBoLvJ^LS;g7+#ivd{kYl*KiA zc2m~=D!-`q;VDI%?@rqKP17_@(=@lB+y}6onf#>$@D`>&bQ8^KC8|eg7EW*`Qhlt8 z1gpkS11UTdp(@1mR>NvToGtN@odqvJPF1T6Noi_vY&Q@``cli_P=SZXzHy)L%i1de zB^XD$!6QPA&WFfI2-(7EeLBnMq>n1*BoGayF+%73a-z;?>nZbZq0a*HpWLj;0V6CH zj@}kIdEcd=({`RawNRzjBmGWzE&y_6Ke?>($w96Xmr~`Ilo?=M%(9&iSSnuR7k-Ae zO&W&lu)4O~3tRe!#{28%4+P@vy9GZ7tVww?wOiOGKyoMDG)?pC`3Hx9YS!5wCL#a; N002ovPDHLkV1ivV*H8ce literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0139e8b8f87f131215a81f00aa089676c64f32 GIT binary patch literal 962 zcmV;z13mnSP)!}RO7<&oo@Z@dyJiAuFR~7mFu|YcmQ@vMGAH#>FRl_GzgF{f$GR@s6VY;6$76xN z(=Ao5;ZPM-pTs`KnUAlwQhv1v6^>0QX_XJn$O$HA0DCYz9ID>*0l?su)0|cY!>tt! zR0X2qXUo$@=0i|v8_^OO)YxLNvQhpV%qyysVpl$w18{(*)e0Pj6r&G@Fq+K%EP>28 zfQAT*z2tyZhj93_;qE|X@GB^sV}22)BO2QdER1YbkY8Pe&RMVSFRNsx71%+@Iwd+H zMZyAQ zT7Fo<(W1|2yz=IPz@3a!vYpE`I4L{fPD@_8)zDr!CK=bwNQcOu7?01VAA+QDyL&QA zHFax9zp^iSM#o^q0-d^WEZ&^ZUkZ*_x2eGoV%<^jF>_y?5O|jOliMBZebNAbEKMV) z^>0Hlbz1*s(g!=qD72G~k<$lDahZ3tF|Lo(yy{oR?DxCI(4KVk++l*9mP0k##+U;v zhZj6}YX*X*OIufFtS{;|oV;Y6mYY$mx3^kKw=a(}PYFT4mi_MqfxAhS51IH$k|arzY-a6WNp6JYHcs+lZ-IL)keXfb z&hL_Qz(aP5(=V+a-^?{1BE|vdH-+SfTZv+M^i@;4vOZ`|33(!hGgY-5%dJ2Wrj#G# zPvZyNFILGe1Qbpa7J}A=o#W?!)c^{B`!Xr8ey;L|^f6ZM5|fIkE7hatX`7d-tpF|v z<>%?ZC7a73IT~2(HDl*`%nXp}a=Kkxy(wZ|_YdcX?BX8HXpY`K1N>bN@yYiAD*{MP k4rTE$wpyV~k|aL<0YowX%(@~+{Qv*}07*qoM6N<$f;h{?2mk;8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00007.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00008.png b/tests/snapshots/nanosp/test_sign_function_call_string_ascii_subrange/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVtn?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00000.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00002.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8476f535dc33e3c50dca055fd20c9232528354 GIT binary patch literal 708 zcmV;#0z3VQP)@G> z?e(Q5#ib2q*YLetK!`CWXMG?)GmORz>KYO z`~Vc|mx|tdCuA2>BQuoG+JXl9oi;4?tKQ~*0Rvfj4@mPa-xl)1YQvDZ!!wI}e|oXX z0RR910002s1Mxf)J>+@H^(5TYhlg~ym)WxI88I3kXOmEYgyd*wMGDa8g++)sh3{KZ z2-QMX43%w2@Xe(Nrb`FxY1K}PW%gPv78E^-?5BsL*`Avxi@&#K3m)0Mj2wVMw3J=y zHRu@$g9X3rE~ba0rR1>L)Ed_el&#}k0eP}ixd|7QB|F7`dsB~93oUN#lKm3e9ewC; zS%q>1ELh-lR!+T~j!lfY3l;b7nqMu~eN8S9;r+#640eKDXeSjXV+^LU z$i3`kW?Xy7Tbpm5bF)KC_DKA;7u+n!nG53WqzqxOFzRzN?M@kEB5%_UU> zu@6AL1=F1ESe#B=7Th;5eGBRhrc1kaKGJzfqct`uuT;}jf%h=-L+xIMCk7ssX#fBK z000000D+wkVm8>Pt*-b4aG_)!PK?+*D<5FyMAzROIRG@mdhX71Cxmp6?700003P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&d~uaU5fe*XvcG z%nz9-my+`e9LGV6OMx_H>NYd5;!(bqOHys9$&$?0o}4K_{>+xC&ia?uGK`)8r9Avy zE@^R&h^ebojwNFAu|7V_O8L_$RJgPhu2HpPXgV&iJ_Eqm0d1yj0E1V~beb8AILjfZ z3NUZ8Hkqt$c9L>I!&chU7}d9Utn8GZM_piQm%VHUUifQ-QonNeS6C;L|A?xfvnZlkg>MbnKt1w=2*zP17{Zf5O}ss~co`mbr{RT9VbA z$2U@%8aCg2BC&YOIbdO{r*@UJ={zbQ;ud93c&?oK`+x~Hhm6P3aY};_8MERTgBqXs zc$`5YHC?(0HAQuCPM?N-;C{bU?1GX5mZApurhL@}(SJR9Qiq0@u8+afa+$)APo)HF zb+zV=Q$uSGeNvY!=&J5gW=g07q>xYt{07#Bn3^c(gyr;EX5ja|&4{S_EFP$0VF#4M z7vYjxAJ_*`3U?DsY~pcKfobHn{x%d-xAiyEeQ+o3h3=%+;X9G$U4JWrhGhnP>2=l$ zQdG%IW2-pG1GK6Fx8+?}L74f6^B8#OIA8ytuj_h4eLw5Vt~DYl)o@?oz2Wl z+)Xp!QbieF4mD}5Bh@^fEx=P=Pj}+cxMVt)Krf=zFBoLvJ^LS;g7+#ivd{kYl*KiA zc2m~=D!-`q;VDI%?@rqKP17_@(=@lB+y}6onf#>$@D`>&bQ8^KC8|eg7EW*`Qhlt8 z1gpkS11UTdp(@1mR>NvToGtN@odqvJPF1T6Noi_vY&Q@``cli_P=SZXzHy)L%i1de zB^XD$!6QPA&WFfI2-(7EeLBnMq>n1*BoGayF+%73a-z;?>nZbZq0a*HpWLj;0V6CH zj@}kIdEcd=({`RawNRzjBmGWzE&y_6Ke?>($w96Xmr~`Ilo?=M%(9&iSSnuR7k-Ae zO&W&lu)4O~3tRe!#{28%4+P@vy9GZ7tVww?wOiOGKyoMDG)?pC`3Hx9YS!5wCL#a; N002ovPDHLkV1ivV*H8ce literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0139e8b8f87f131215a81f00aa089676c64f32 GIT binary patch literal 962 zcmV;z13mnSP)!}RO7<&oo@Z@dyJiAuFR~7mFu|YcmQ@vMGAH#>FRl_GzgF{f$GR@s6VY;6$76xN z(=Ao5;ZPM-pTs`KnUAlwQhv1v6^>0QX_XJn$O$HA0DCYz9ID>*0l?su)0|cY!>tt! zR0X2qXUo$@=0i|v8_^OO)YxLNvQhpV%qyysVpl$w18{(*)e0Pj6r&G@Fq+K%EP>28 zfQAT*z2tyZhj93_;qE|X@GB^sV}22)BO2QdER1YbkY8Pe&RMVSFRNsx71%+@Iwd+H zMZyAQ zT7Fo<(W1|2yz=IPz@3a!vYpE`I4L{fPD@_8)zDr!CK=bwNQcOu7?01VAA+QDyL&QA zHFax9zp^iSM#o^q0-d^WEZ&^ZUkZ*_x2eGoV%<^jF>_y?5O|jOliMBZebNAbEKMV) z^>0Hlbz1*s(g!=qD72G~k<$lDahZ3tF|Lo(yy{oR?DxCI(4KVk++l*9mP0k##+U;v zhZj6}YX*X*OIufFtS{;|oV;Y6mYY$mx3^kKw=a(}PYFT4mi_MqfxAhS51IH$k|arzY-a6WNp6JYHcs+lZ-IL)keXfb z&hL_Qz(aP5(=V+a-^?{1BE|vdH-+SfTZv+M^i@;4vOZ`|33(!hGgY-5%dJ2Wrj#G# zPvZyNFILGe1Qbpa7J}A=o#W?!)c^{B`!Xr8ey;L|^f6ZM5|fIkE7hatX`7d-tpF|v z<>%?ZC7a73IT~2(HDl*`%nXp}a=Kkxy(wZ|_YdcX?BX8HXpY`K1N>bN@yYiAD*{MP k4rTE$wpyV~k|aL<0YowX%(@~+{Qv*}07*qoM6N<$f;h{?2mk;8 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00007.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00008.png b/tests/snapshots/nanox/test_sign_function_call_string_ascii_subrange/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVt?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u{7f}\"}" + + Transaction { + signer_id: AccountId( + "c4f5941e81e071c2fd1dae2e71fd3d859d462484391d9a90bf219211dcbb320f", + ), + public_key: ed25519:EFr6nRvgKKeteKoEH7hudt8UHYiu94Liq2yMM7x2AU9U, + nonce: 103595482000005, + receiver_id: AccountId( + "dc7e34eecec3096a4a661e10932834f801149c49dba9b93322f6d9de18047f9c", + ), + block_hash: Cb3vKNiF3MUuVoqfjuEFCgSNPT79pbuVfXXd2RxDXc5E, + actions: [ + FunctionCall( + FunctionCallAction { + method_name: test_payload_str_with_ascii_subrange, + args: eyIgISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8ifQ==, + gas: 127127122121, + deposit: 150000000000000000000000, + }, + ), + ], + } + """ + client = Nearbackend(backend) + chunks = [ + AsyncAPDU( + data=bytes.fromhex( + "80020057fa8000002c8000018d800000008000000080000001400000006334663539343165383165303731633266643164616532653731666433643835396434363234383433393164396139306266323139323131646362623332306600c4f5941e81e071c2fd1dae2e71fd3d859d462484391d9a90bf219211dcbb320f85aae733385e00004000000064633765333465656365633330393661346136363165313039333238333466383031313439633439646261396239333332326636643964653138303437663963ac299ac1376e375cd39338d8b29225613ef947424b74a3207c1226863a725831010000000224000000746573745f7061796c6f6164" + ), + navigable_conditions=NavigableConditions( + value=["Continue to actions"], + ), + expected_response=RAPDU( + SW_OK, + bytes(), + ), + ), + AsyncAPDU( + data=bytes.fromhex( + "80028057985f7374725f776974685f61736369695f73756272616e6765640000007b22202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f227dc9f05d991d0000000000c071f0d12b84c31f000000000000" + ), + navigable_conditions=NavigableConditions( + value=["Sign"], + ), + expected_response=RAPDU( + SW_OK, + # signature + bytes.fromhex( + "3e952a449a50a655c25e4ccad66e29f0e3f361805402e6687de19583eca37f5440570796c6efc9ccaf29261faf766e920f94f63491e480ddcf3994ebf5e2b706" + ), + ), + ), + ] + generic_test_sign(client, chunks, navigator, test_name) + def test_sign_function_call_binary_hexdump(firmware, backend, navigator: Navigator, test_name): """ From 5175dd6a8a3e2970a3708a19dd6e1a691950cafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dj8yf0=CE=BCl?= Date: Wed, 20 Mar 2024 18:44:33 +0200 Subject: [PATCH 3/6] feat: transform undisplayable ascii characters `0x00` - `0x1f` --- .../sign/common/action/delete_account.rs | 4 +-- .../common/action/function_call_common.rs | 4 +-- .../common/action/function_call_permission.rs | 4 +-- .../sign/common/action/function_call_str.rs | 2 +- src/app_ui/sign/common/action/mod.rs | 10 ++++---- .../sign/nep366_delegate_action/prefix.rs | 8 +++--- src/app_ui/sign/nep413/payload.rs | 10 ++++---- src/app_ui/sign/transaction/prefix.rs | 8 +++--- src/handlers/common/action/add_key.rs | 2 +- src/handlers/common/action/delete_account.rs | 2 +- src/handlers/common/action/function_call.rs | 23 ++++++++++++------ src/handlers/sign_nep366_delegate.rs | 2 +- src/handlers/sign_nep413_msg.rs | 2 +- src/handlers/sign_tx.rs | 2 +- src/utils/types/capped_string.rs | 10 +++++++- src/utils/types/elipsis_fields.rs | 2 +- .../2_sign/00007.png | Bin 527 -> 537 bytes 17 files changed, 56 insertions(+), 39 deletions(-) diff --git a/src/app_ui/sign/common/action/delete_account.rs b/src/app_ui/sign/common/action/delete_account.rs index ec38bd0..9041248 100644 --- a/src/app_ui/sign/common/action/delete_account.rs +++ b/src/app_ui/sign/common/action/delete_account.rs @@ -15,7 +15,7 @@ impl FieldsContext { } } pub fn format<'b, 'a: 'b>( - delete_account: &'a parsing::types::DeleteAccount, + delete_account: &'a mut parsing::types::DeleteAccount, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 3>, ) { @@ -25,7 +25,7 @@ pub fn format<'b, 'a: 'b>( })); let beneficiary_id = ElipsisFields::from_capped_string( - &delete_account.beneficiary_id, + &mut delete_account.beneficiary_id, "Beneficiary", &mut field_context.beneficiary_display_buf, ); diff --git a/src/app_ui/sign/common/action/function_call_common.rs b/src/app_ui/sign/common/action/function_call_common.rs index 92ffa0d..240b59c 100644 --- a/src/app_ui/sign/common/action/function_call_common.rs +++ b/src/app_ui/sign/common/action/function_call_common.rs @@ -23,7 +23,7 @@ impl FieldsContext { } } pub fn format<'b, 'a: 'b, const N: usize>( - func_call_common: &'a parsing::types::FunctionCallCommon, + func_call_common: &'a mut parsing::types::FunctionCallCommon, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, N>, ) { @@ -33,7 +33,7 @@ pub fn format<'b, 'a: 'b, const N: usize>( })); let method_name = ElipsisFields::from_capped_string( - &func_call_common.method_name, + &mut func_call_common.method_name, "Method Name", &mut field_context.method_name_display_buf, ); diff --git a/src/app_ui/sign/common/action/function_call_permission.rs b/src/app_ui/sign/common/action/function_call_permission.rs index 8e177d6..afe6507 100644 --- a/src/app_ui/sign/common/action/function_call_permission.rs +++ b/src/app_ui/sign/common/action/function_call_permission.rs @@ -25,7 +25,7 @@ impl FieldsContext { } pub fn format<'b, 'a: 'b>( - function_call_perm: &'a parsing::types::FunctionCallPermission, + function_call_perm: &'a mut parsing::types::FunctionCallPermission, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 10>, ) { @@ -42,7 +42,7 @@ pub fn format<'b, 'a: 'b>( })); let recevier_id = ElipsisFields::from_capped_string( - &function_call_perm.receiver_id, + &mut function_call_perm.receiver_id, "FnCall Receiver", &mut field_context.receiver_display_buf, ); diff --git a/src/app_ui/sign/common/action/function_call_str.rs b/src/app_ui/sign/common/action/function_call_str.rs index 06d83d8..667d6dd 100644 --- a/src/app_ui/sign/common/action/function_call_str.rs +++ b/src/app_ui/sign/common/action/function_call_str.rs @@ -15,7 +15,7 @@ impl FieldsContext { } } pub fn format<'b, 'a: 'b>( - args: &'b CappedString<200>, + args: &'b mut CappedString<200>, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 7>, ) { diff --git a/src/app_ui/sign/common/action/mod.rs b/src/app_ui/sign/common/action/mod.rs index aff3290..7871023 100644 --- a/src/app_ui/sign/common/action/mod.rs +++ b/src/app_ui/sign/common/action/mod.rs @@ -47,7 +47,7 @@ pub fn ui_display_create_account( } pub fn ui_display_delete_account( - delete_account: &parsing::types::DeleteAccount, + delete_account: &mut parsing::types::DeleteAccount, params: ActionParams, ) -> bool { let mut writer: FieldsWriter<'_, 3> = FieldsWriter::new(); @@ -91,7 +91,7 @@ pub fn ui_display_add_key_fullaccess( pub fn ui_display_add_key_functioncall( add_key: &parsing::types::AddKey, - function_call_per: &parsing::types::FunctionCallPermission, + function_call_per: &mut parsing::types::FunctionCallPermission, params: ActionParams, ) -> bool { let mut common_field_context: add_key_common::FieldsContext = @@ -123,8 +123,8 @@ pub fn ui_display_deploy_contract( } pub fn ui_display_function_call_str( - func_call_common: &parsing::types::FunctionCallCommon, - args: &CappedString<200>, + func_call_common: &mut parsing::types::FunctionCallCommon, + args: &mut CappedString<200>, params: ActionParams, ) -> bool { let mut writer: FieldsWriter<'_, 7> = FieldsWriter::new(); @@ -140,7 +140,7 @@ pub fn ui_display_function_call_str( } pub fn ui_display_function_call_bin( - func_call_common: &parsing::types::FunctionCallCommon, + func_call_common: &mut parsing::types::FunctionCallCommon, args: &HexDisplay<200>, params: ActionParams, ) -> bool { diff --git a/src/app_ui/sign/nep366_delegate_action/prefix.rs b/src/app_ui/sign/nep366_delegate_action/prefix.rs index b707240..4c0f127 100644 --- a/src/app_ui/sign/nep366_delegate_action/prefix.rs +++ b/src/app_ui/sign/nep366_delegate_action/prefix.rs @@ -25,19 +25,19 @@ impl FieldsContext { } fn format<'b, 'a: 'b>( - prefix: &'b parsing::types::nep366_delegate_action::prefix::Prefix, + prefix: &'b mut parsing::types::nep366_delegate_action::prefix::Prefix, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 5>, ) { let sender_id = ElipsisFields::from_capped_string( - &prefix.sender_id, + &mut prefix.sender_id, "Sender Id", &mut field_context.display_buf1, ); writer.push_fields(sender_id); let receiver_id = ElipsisFields::from_capped_string( - &prefix.receiver_id, + &mut prefix.receiver_id, "Receiver Id", &mut field_context.display_buf2, ); @@ -52,7 +52,7 @@ fn format<'b, 'a: 'b>( value: num_actions_str, })); } -pub fn ui_display(prefix: &parsing::types::nep366_delegate_action::prefix::Prefix) -> bool { +pub fn ui_display(prefix: &mut parsing::types::nep366_delegate_action::prefix::Prefix) -> bool { let mut field_writer: FieldsWriter<'_, 5> = FieldsWriter::new(); let mut field_context: FieldsContext = FieldsContext::new(); format(prefix, &mut field_context, &mut field_writer); diff --git a/src/app_ui/sign/nep413/payload.rs b/src/app_ui/sign/nep413/payload.rs index e9c9776..d0f6c8c 100644 --- a/src/app_ui/sign/nep413/payload.rs +++ b/src/app_ui/sign/nep413/payload.rs @@ -27,13 +27,13 @@ impl FieldsContext { } fn format<'b, 'a: 'b>( - payload: &'b Payload, + payload: &'b mut Payload, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 7>, ) { // 2 let message_fields = ElipsisFields::from_capped_string( - &payload.message, + &mut payload.message, "Message", &mut field_context.msg_display_buf, ); @@ -50,14 +50,14 @@ fn format<'b, 'a: 'b>( // 5 let recipient_fields = ElipsisFields::from_capped_string( - &payload.recipient, + &mut payload.recipient, "Recipient", &mut field_context.recipient_display_buf, ); writer.push_fields(recipient_fields); // 7 - if let Some(callback_url) = payload.callback_url.as_ref() { + if let Some(callback_url) = payload.callback_url.as_mut() { let callback_url_fields = ElipsisFields::from_capped_string( callback_url, "Callback Url", @@ -66,7 +66,7 @@ fn format<'b, 'a: 'b>( writer.push_fields(callback_url_fields); } } -pub fn ui_display(payload: &Payload) -> bool { +pub fn ui_display(payload: &mut Payload) -> bool { let mut field_writer: FieldsWriter<'_, 7> = FieldsWriter::new(); let mut field_context: FieldsContext = FieldsContext::new(); format(payload, &mut field_context, &mut field_writer); diff --git a/src/app_ui/sign/transaction/prefix.rs b/src/app_ui/sign/transaction/prefix.rs index e5023a0..9c2b590 100644 --- a/src/app_ui/sign/transaction/prefix.rs +++ b/src/app_ui/sign/transaction/prefix.rs @@ -25,19 +25,19 @@ impl FieldsContext { } fn format<'b, 'a: 'b>( - prefix: &'b parsing::types::transaction::prefix::Prefix, + prefix: &'b mut parsing::types::transaction::prefix::Prefix, field_context: &'a mut FieldsContext, writer: &'_ mut FieldsWriter<'b, 5>, ) { let signer_id = ElipsisFields::from_capped_string( - &prefix.signer_id, + &mut prefix.signer_id, "Signer Id", &mut field_context.display_buf1, ); writer.push_fields(signer_id); let receiver_id = ElipsisFields::from_capped_string( - &prefix.receiver_id, + &mut prefix.receiver_id, "Receiver Id", &mut field_context.display_buf2, ); @@ -52,7 +52,7 @@ fn format<'b, 'a: 'b>( value: num_actions_str, })); } -pub fn ui_display(prefix: &parsing::types::transaction::prefix::Prefix) -> bool { +pub fn ui_display(prefix: &mut parsing::types::transaction::prefix::Prefix) -> bool { let mut field_writer: FieldsWriter<'_, 5> = FieldsWriter::new(); let mut field_context: FieldsContext = FieldsContext::new(); format(prefix, &mut field_context, &mut field_writer); diff --git a/src/handlers/common/action/add_key.rs b/src/handlers/common/action/add_key.rs index 59e61ec..b1ab72f 100644 --- a/src/handlers/common/action/add_key.rs +++ b/src/handlers/common/action/add_key.rs @@ -38,7 +38,7 @@ pub fn handle_function_call( .map_err(|_err| AppSW::TxParsingFail)?; if !sign_ui::action::ui_display_add_key_functioncall( add_key_common, - &function_call_perm, + &mut function_call_perm, params, ) { return Err(AppSW::Deny); diff --git a/src/handlers/common/action/delete_account.rs b/src/handlers/common/action/delete_account.rs index 8b6e96e..5c9642e 100644 --- a/src/handlers/common/action/delete_account.rs +++ b/src/handlers/common/action/delete_account.rs @@ -15,7 +15,7 @@ pub fn handle( .deserialize_reader_in_place(stream) .map_err(|_err| AppSW::TxParsingFail)?; - if !sign_ui::action::ui_display_delete_account(&delete_account, params) { + if !sign_ui::action::ui_display_delete_account(&mut delete_account, params) { return Err(AppSW::Deny); } Ok(()) diff --git a/src/handlers/common/action/function_call.rs b/src/handlers/common/action/function_call.rs index 635212e..049a3ff 100644 --- a/src/handlers/common/action/function_call.rs +++ b/src/handlers/common/action/function_call.rs @@ -24,7 +24,7 @@ pub fn handle( let args_bytes_count: u32 = u32::deserialize_reader(stream).map_err(|_err| AppSW::TxParsingFail)?; - let representation = match stream + let mut representation = match stream .reader .peek_u8() .map_err(|_err| AppSW::TxParsingFail)? @@ -57,24 +57,33 @@ pub fn handle( return Err(AppSW::TxParsingFail); } }; - handle_common(stream, method_name, params, &representation) + handle_common(stream, method_name, params, &mut representation) } fn handle_common( stream: &mut HashingStream>, method_name: CappedString<50>, params: ActionParams, - representation: &ArgsRepr, + representation: &mut ArgsRepr, ) -> Result<(), AppSW> { - let func_call_common = FunctionCallCommon::deserialize_with_method_name(stream, method_name) - .map_err(|_err| AppSW::TxParsingFail)?; + let mut func_call_common = + FunctionCallCommon::deserialize_with_method_name(stream, method_name) + .map_err(|_err| AppSW::TxParsingFail)?; match representation { ArgsRepr::BinHex(args_bin) => { - if !sign_ui::action::ui_display_function_call_bin(&func_call_common, args_bin, params) { + if !sign_ui::action::ui_display_function_call_bin( + &mut func_call_common, + args_bin, + params, + ) { return Err(AppSW::Deny); } } ArgsRepr::String(args_str) => { - if !sign_ui::action::ui_display_function_call_str(&func_call_common, args_str, params) { + if !sign_ui::action::ui_display_function_call_str( + &mut func_call_common, + args_str, + params, + ) { return Err(AppSW::Deny); } } diff --git a/src/handlers/sign_nep366_delegate.rs b/src/handlers/sign_nep366_delegate.rs index 686cee5..f1b0d41 100644 --- a/src/handlers/sign_nep366_delegate.rs +++ b/src/handlers/sign_nep366_delegate.rs @@ -62,7 +62,7 @@ fn handle_prefix(stream: &mut HashingStream>) -> Result) -> Result { .deserialize_reader_in_place(&mut stream) .map_err(|_err| AppSW::TxParsingFail)?; - if !sign_ui::nep413::payload::ui_display(&payload) { + if !sign_ui::nep413::payload::ui_display(&mut payload) { return Err(AppSW::Deny); } diff --git a/src/handlers/sign_tx.rs b/src/handlers/sign_tx.rs index 229878a..e4670f4 100644 --- a/src/handlers/sign_tx.rs +++ b/src/handlers/sign_tx.rs @@ -41,7 +41,7 @@ fn handle_transaction_prefix( .deserialize_reader_in_place(stream) .map_err(|_err| AppSW::TxParsingFail)?; - if !sign_ui::transaction::prefix::ui_display(&tx_prefix) { + if !sign_ui::transaction::prefix::ui_display(&mut tx_prefix) { return Err(AppSW::Deny); } let tx_public_key = PublicKeyBe::try_from(tx_prefix.public_key); diff --git a/src/utils/types/capped_string.rs b/src/utils/types/capped_string.rs index ccae40c..6ca2759 100644 --- a/src/utils/types/capped_string.rs +++ b/src/utils/types/capped_string.rs @@ -21,7 +21,15 @@ impl CappedString { } } - pub fn as_str(&self) -> &str { + pub fn as_str(&mut self) -> &str { + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 + // is handled at sdk level + for byte in self.buffer[..self.used].iter_mut() { + if *byte < 0x20 { + // NOTE: this is a square glyph, of DEL display + *byte = 0x7f; + } + } // .unwrap() is ok because it's either based on complete deserialized `str` // based on previous validation by `core::str::from_utf8`, // or `self.used` index is equal to value of [`Utf8Error::valid_up_to()`](https://doc.rust-lang.org/std/str/struct.Utf8Error.html#method.valid_up_to) diff --git a/src/utils/types/elipsis_fields.rs b/src/utils/types/elipsis_fields.rs index 49752ed..a899878 100644 --- a/src/utils/types/elipsis_fields.rs +++ b/src/utils/types/elipsis_fields.rs @@ -92,7 +92,7 @@ impl<'a> ElipsisFields<'a> { } pub fn from_capped_string( - source: &'a CappedString, + source: &'a mut CappedString, title: &'a str, display_buf: &'a mut [u8; 20], ) -> Self { diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00007.png b/tests/snapshots/nanos/test_sign_function_call_string_with_newline/2_sign/00007.png index 9fa8198eccaaf9b69ec60b25d0a13d383af91b9f..d4ea3604b2f98d4494bcc26e2600094785a1b9ca 100644 GIT binary patch delta 511 zcmV zFt=nXwbZ$_lT?ydmV#DTiAb*$KnK>!7c|jZYy*xGMExLIDg&%7mM9zbuOW*&`OcUT zz6H<=bSp+`8nzhMUg~pu2Wck zL{rS^KzZH6UdM3CZbI}GXTmqVXm<4n zQPB{9BuSDaNsjOc^?ttq03N?nT)Ai#y2^0}-mg#hYMKagE940l8RY5f_HhEPAq!Fm zR{qKpMZY$Sm?Ne^8WE4aA~nK~uUnI{7V2Qck=WNbnd8!z>wnj%VR1_+Ezc(|FA47s zAa3!cgsEf0gH#qTPX)NK5|LIa5FPNPFVRG6vJC`M5VV76$qZs{u|(OZ?}I0Ih@CM# zViTYzXxt3cWr#7(!4Sqcb}g0$Qx8Aa86f6azfPGfQ z6)jRW3SKz%BYznlZdP7d?m}IN16ZFg=i1V4(LNs?&ABH&8FMg*D;${R(vZ%z<@54l z zI>$;87S<(=xbmG&lw}jJZdXoG4iu2*603$LVP@7WC}V=PC$|*$@lUH$8%D-x3|7x00000NkvXXu0mjf|3m4C From 85595408984b4d29e4b0390222a3509fb7ffa3b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dj8yf0=CE=BCl?= Date: Wed, 20 Mar 2024 19:15:21 +0200 Subject: [PATCH 4/6] test: update `test_sign_function_call_string_with_newline` snapshots after crash resolved --- .../2_sign/00005.png | Bin 0 -> 854 bytes .../2_sign/00006.png | Bin 0 -> 521 bytes .../2_sign/00007.png | Bin 0 -> 347 bytes .../2_sign/00008.png | Bin 0 -> 299 bytes .../2_sign/00005.png | Bin 0 -> 854 bytes .../2_sign/00006.png | Bin 0 -> 521 bytes .../2_sign/00007.png | Bin 0 -> 347 bytes .../2_sign/00008.png | Bin 0 -> 299 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00008.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00008.png diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00005.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..15bacdbd33a4fa4ab4339018931ede8134a009de GIT binary patch literal 854 zcmV-c1F8IpP)QWpNX zC3~C^aoH-3V~yB-Y>rP^ssC~cRW3b+uc-R*)^c>m>x$ z0G4fhi>WuwMnWm5^^LX+M$Ii2FB|p8Q8$>}Z7(_jI6>2H4Td4bI0v`L@>-%vC(a3= zDZ=6}8L(;yrwq)8&DKQQ53~5aNQI?am(*hh%LEm=PsoP zK(N3t`AKa#`R4&AtUv?~mFT~+vkEO9FmYDqVZ zTw%6o_Q|@Lv;wYu6&#wgebv4om^e1$u5&-^u51T$cd)?@PeF0(v&MhClcIAugMobd zI6q>lx)$zl`q!Yiy1YM`nuC>87Fx-d@57rj)xGL{Y2R) zdQ47&`&3OLWKO{3L%YP+Iv38wufLqT9Onv12FKQms=b@(xoqrmT* zI3oRt-_D^-dOP}VMEhdR;a|3?%+E#n6YzTf9k*%te22e5Hi4<%4={e@uDSQ5B1yce g|3y(0Me(Kl2c(luiaY(iW&i*H07*qoM6N<$g3p+r2LJ#7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b621db19cf6fba820eedd70240b746861985b4c3 GIT binary patch literal 521 zcmV+k0`~ohP)?LB|N7=yqfwnG4bZC)cM#~4Eh*L6+m%x{~? zZOh{wh%x5V^QDUhYV%Bw2|*6jPgOEJ|rKP9)2FwP5vHmtYeq_DHG63LHTH1PCl9DHaRrQ^%RuZ z8{FcQJ3!I<&ZSuKQDKq)_%hBhqw5@T2l%qNa+bcMV6&t0QkjB|>f8!@2Y7S!KOg-Q zbc0OvAJYgm(SI0ouoGEmC-&i;2rmEt0000000000000000I}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00008.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_newline/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVtQWpNX zC3~C^aoH-3V~yB-Y>rP^ssC~cRW3b+uc-R*)^c>m>x$ z0G4fhi>WuwMnWm5^^LX+M$Ii2FB|p8Q8$>}Z7(_jI6>2H4Td4bI0v`L@>-%vC(a3= zDZ=6}8L(;yrwq)8&DKQQ53~5aNQI?am(*hh%LEm=PsoP zK(N3t`AKa#`R4&AtUv?~mFT~+vkEO9FmYDqVZ zTw%6o_Q|@Lv;wYu6&#wgebv4om^e1$u5&-^u51T$cd)?@PeF0(v&MhClcIAugMobd zI6q>lx)$zl`q!Yiy1YM`nuC>87Fx-d@57rj)xGL{Y2R) zdQ47&`&3OLWKO{3L%YP+Iv38wufLqT9Onv12FKQms=b@(xoqrmT* zI3oRt-_D^-dOP}VMEhdR;a|3?%+E#n6YzTf9k*%te22e5Hi4<%4={e@uDSQ5B1yce g|3y(0Me(Kl2c(luiaY(iW&i*H07*qoM6N<$g3p+r2LJ#7 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b621db19cf6fba820eedd70240b746861985b4c3 GIT binary patch literal 521 zcmV+k0`~ohP)?LB|N7=yqfwnG4bZC)cM#~4Eh*L6+m%x{~? zZOh{wh%x5V^QDUhYV%Bw2|*6jPgOEJ|rKP9)2FwP5vHmtYeq_DHG63LHTH1PCl9DHaRrQ^%RuZ z8{FcQJ3!I<&ZSuKQDKq)_%hBhqw5@T2l%qNa+bcMV6&t0QkjB|>f8!@2Y7S!KOg-Q zbc0OvAJYgm(SI0ouoGEmC-&i;2rmEt0000000000000000I}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00008.png b/tests/snapshots/nanox/test_sign_function_call_string_with_newline/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVt Date: Wed, 20 Mar 2024 19:39:45 +0200 Subject: [PATCH 5/6] feat: transform undisplayable characters for `FmtBuffer` --- fmt_buffer/src/lib.rs | 20 ++++++++++++++++++- .../common/action/function_call_permission.rs | 2 +- src/utils/types/elipsis_fields.rs | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/fmt_buffer/src/lib.rs b/fmt_buffer/src/lib.rs index 4177e24..b1439fb 100644 --- a/fmt_buffer/src/lib.rs +++ b/fmt_buffer/src/lib.rs @@ -16,7 +16,14 @@ impl Buffer { } } - pub fn as_str(&self) -> &str { + pub fn as_str(&mut self) -> &str { + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 + // is handled at sdk level + for byte in self.buffer[..self.used].iter_mut() { + if *byte < 0x20 { + *byte = 0x7f; + } + } debug_assert!(self.used <= self.buffer.len()); // .unwrap() is ok, as only bytes, comprising a sequence of valid utf8 chars // are going to be written to `self.buffer` on `self.write_str` calls @@ -135,4 +142,15 @@ mod tests { assert_eq!("toooooo long: 400000 - 0x61", buffer.as_str()); assert_eq!(true, buffer.truncated()); } + + #[test] + pub fn test_rewrite_undisplayable_chars() { + let mut buffer = Buffer::<30>::new(); + + buffer.write_str("Prefix: "); + + buffer.write_str("\x0A\x0D"); + assert_eq!("Prefix: \x7F\x7F", buffer.as_str()); + assert_eq!(false, buffer.truncated()); + } } diff --git a/src/app_ui/sign/common/action/function_call_permission.rs b/src/app_ui/sign/common/action/function_call_permission.rs index afe6507..d006bd4 100644 --- a/src/app_ui/sign/common/action/function_call_permission.rs +++ b/src/app_ui/sign/common/action/function_call_permission.rs @@ -58,7 +58,7 @@ pub fn format<'b, 'a: 'b>( })); let methods_names_fields = ElipsisFields::from_fmt_buffer( - &function_call_perm.method_names, + &mut function_call_perm.method_names, "Method Names", &mut field_context.method_names_display_buf, ); diff --git a/src/utils/types/elipsis_fields.rs b/src/utils/types/elipsis_fields.rs index a899878..dab72ed 100644 --- a/src/utils/types/elipsis_fields.rs +++ b/src/utils/types/elipsis_fields.rs @@ -20,7 +20,7 @@ impl<'a> ElipsisFields<'a> { } pub fn from_fmt_buffer( - source: &'a Buffer, + source: &'a mut Buffer, title: &'a str, display_buf: &'a mut [u8; 20], ) -> Self { From c27b2c7581f2bf22ce4cd1612649ecee5cb81d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dj8yf0=CE=BCl?= Date: Thu, 21 Mar 2024 19:13:19 +0200 Subject: [PATCH 6/6] feat: transform undisplayable non-ascii characters --- fmt_buffer/src/lib.rs | 10 ++- src/utils/types/capped_string.rs | 10 ++- .../0_continue_to_actions/00000.png | Bin 0 -> 331 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 525 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 531 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 548 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 485 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 509 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 532 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 510 bytes .../0_continue_to_actions/00008.png | Bin 0 -> 497 bytes .../0_continue_to_actions/00009.png | Bin 0 -> 330 bytes .../0_continue_to_actions/00010.png | Bin 0 -> 322 bytes .../0_continue_to_actions/00011.png | Bin 0 -> 381 bytes .../2_sign/00000.png | Bin 0 -> 360 bytes .../2_sign/00001.png | Bin 0 -> 421 bytes .../2_sign/00002.png | Bin 0 -> 532 bytes .../2_sign/00003.png | Bin 0 -> 468 bytes .../2_sign/00004.png | Bin 0 -> 359 bytes .../2_sign/00005.png | Bin 0 -> 390 bytes .../2_sign/00006.png | Bin 0 -> 571 bytes .../2_sign/00007.png | Bin 0 -> 524 bytes .../2_sign/00008.png | Bin 0 -> 509 bytes .../2_sign/00009.png | Bin 0 -> 522 bytes .../2_sign/00010.png | Bin 0 -> 516 bytes .../2_sign/00011.png | Bin 0 -> 512 bytes .../2_sign/00012.png | Bin 0 -> 522 bytes .../2_sign/00013.png | Bin 0 -> 525 bytes .../2_sign/00014.png | Bin 0 -> 527 bytes .../2_sign/00015.png | Bin 0 -> 516 bytes .../2_sign/00016.png | Bin 0 -> 509 bytes .../2_sign/00017.png | Bin 0 -> 519 bytes .../2_sign/00018.png | Bin 0 -> 449 bytes .../2_sign/00019.png | Bin 0 -> 322 bytes .../2_sign/00020.png | Bin 0 -> 278 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 635 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../2_sign/00005.png | Bin 0 -> 773 bytes .../2_sign/00006.png | Bin 0 -> 665 bytes .../2_sign/00007.png | Bin 0 -> 659 bytes .../2_sign/00008.png | Bin 0 -> 657 bytes .../2_sign/00009.png | Bin 0 -> 476 bytes .../2_sign/00010.png | Bin 0 -> 347 bytes .../2_sign/00011.png | Bin 0 -> 299 bytes .../0_continue_to_actions/00000.png | Bin 0 -> 353 bytes .../0_continue_to_actions/00001.png | Bin 0 -> 922 bytes .../0_continue_to_actions/00002.png | Bin 0 -> 520 bytes .../0_continue_to_actions/00003.png | Bin 0 -> 887 bytes .../0_continue_to_actions/00004.png | Bin 0 -> 542 bytes .../0_continue_to_actions/00005.png | Bin 0 -> 351 bytes .../0_continue_to_actions/00006.png | Bin 0 -> 347 bytes .../0_continue_to_actions/00007.png | Bin 0 -> 408 bytes .../2_sign/00000.png | Bin 0 -> 385 bytes .../2_sign/00001.png | Bin 0 -> 454 bytes .../2_sign/00002.png | Bin 0 -> 635 bytes .../2_sign/00003.png | Bin 0 -> 383 bytes .../2_sign/00004.png | Bin 0 -> 401 bytes .../2_sign/00005.png | Bin 0 -> 773 bytes .../2_sign/00006.png | Bin 0 -> 665 bytes .../2_sign/00007.png | Bin 0 -> 659 bytes .../2_sign/00008.png | Bin 0 -> 657 bytes .../2_sign/00009.png | Bin 0 -> 476 bytes .../2_sign/00010.png | Bin 0 -> 347 bytes .../2_sign/00011.png | Bin 0 -> 299 bytes .../test_function_call.py | 62 ++++++++++++++++++ 76 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00011.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00003.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00004.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00005.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00007.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00010.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00012.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00013.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00014.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00015.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00016.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00017.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00018.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00019.png create mode 100644 tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00020.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00003.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00004.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00005.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00007.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00010.png create mode 100644 tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00003.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00004.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00005.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00007.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00010.png create mode 100644 tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png diff --git a/fmt_buffer/src/lib.rs b/fmt_buffer/src/lib.rs index b1439fb..f6747d0 100644 --- a/fmt_buffer/src/lib.rs +++ b/fmt_buffer/src/lib.rs @@ -17,12 +17,18 @@ impl Buffer { } pub fn as_str(&mut self) -> &str { - // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 - // is handled at sdk level for byte in self.buffer[..self.used].iter_mut() { + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 + // is handled at sdk level if *byte < 0x20 { *byte = 0x7f; } + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/124 + // is handled at sdk level + if *byte > 0x7f { + // NOTE: this is a square glyph, of DEL display + *byte = 0x7f; + } } debug_assert!(self.used <= self.buffer.len()); // .unwrap() is ok, as only bytes, comprising a sequence of valid utf8 chars diff --git a/src/utils/types/capped_string.rs b/src/utils/types/capped_string.rs index 6ca2759..0afd46f 100644 --- a/src/utils/types/capped_string.rs +++ b/src/utils/types/capped_string.rs @@ -22,13 +22,19 @@ impl CappedString { } pub fn as_str(&mut self) -> &str { - // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 - // is handled at sdk level for byte in self.buffer[..self.used].iter_mut() { + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/146 + // is handled at sdk level if *byte < 0x20 { // NOTE: this is a square glyph, of DEL display *byte = 0x7f; } + // NOTE: this workaround is needed until https://github.com/LedgerHQ/ledger-device-rust-sdk/issues/124 + // is handled at sdk level + if *byte > 0x7f { + // NOTE: this is a square glyph, of DEL display + *byte = 0x7f; + } } // .unwrap() is ok because it's either based on complete deserialized `str` // based on previous validation by `core::str::from_utf8`, diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..031830835ac98eaabcaf516bcb156c0d25014d70 GIT binary patch literal 331 zcmV-R0kr;!P)k3zGl(_F6Y@n+ZwI5tl0zpA!-9nRO5Xbl~2 z99cQ%mLQG0Z@SKy2Wy%=-v}x}H9tvCrJynSjKY&M931~-Pr+7fM^uXirRZgC2T;QgGV}g+ifFDEtH-_xA@L7mR3mdA!%V zb>C#0bIl|>l-qCbH~9C*K|RX?>nuev&#u$}P~ebIWA@w27-#~+aAy#Qo{Ig(8ERP{ zOK{1j)Xf0jVP7{61ur*|>pDmYPtyeCIvedHO(ri=1HjJTQDAqoi$-!>&?()uH3!)% zpc@0borkY2Q*{QQh`^5%kQV@>id~1g-5rlpQ$Ao-r%eJ90C%X59g=RRl)qb>LY^J1 zVwD7~=WhEb!A#W|XkHmWtLgP6N6MgalC${b)bLehdpfeL3-aKyd)xNc_X6)X6X&;s z-38DwdSVg#&{I;qeqYF5 zRVq!CN?(_h%_k)_S+YXlyf%0l$KIOZZ5=B;8tR5hV(1<XP)w7(c?#KV%+aq`s zIwBfE8u#`5G_(4s5M~d_UqRd0ZtC+Q`o*iy|1WR<1b1PkNKS2Y@(A9 zWm0Q9NhPRG*GL-TJnJMh12*($=ufU>G|VKZ(DaTHp1ESkRvT$PO%WOZcK(h6-OVOV z;N+#ny(O<$gy;+~W8i!0RG~uJ9OIJa~)AH_!osgXC9CMOvia! zA*HVZ&K^_I>ZW8`s&hXAt;wE2`kO z`|~DzfcMd?`R-twFb+SyCj2a-t1AWvu(}RA*V3U_dNw>=MmIpxgSI^$v)QryyNRqr zB(#$Y3BXV<#Q>!{y=BHpx=@5o{RH=6oPK1eh|yy;*yuS{lVsQvB=&T{B(V0TlyPO2 zNw+-nWkN;|u-`V1*=7mStqsnAY5eJlc4m1y0(ibH(eL&PHmjD6%nv~0P6+gGReqUs zi8%dD_#QC9)jWG3z6{vEJr9e~cVN1}q83(W6xJT9mKCF4-%Oh&RYg%0MNt$5;SKZs Vi|V{jKK1|r002ovPDHLkV1lQh_UHfr literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8f46fda4be60f454b028076bced13dccde58d2 GIT binary patch literal 548 zcmV+<0^9wGP)e6^Dn;u0rPTLABz@lmLOJ_9RM5~u1>k5U;UhVgNL?u9 z%u8!l%E{6gyvSE?hZo`=AJQH}<<3~qm1Uxw%Z?$BSXdA_d8;;`h7c-%IDdQ5(k(6; zjj!IMn!szzX7mbhHNXdX5M(fZHIA<0>u(5g0)YK<2_2?8L?^O?XnT9jJYWJ0>wLT+ z`RkO&7i$X%1zKv3Zc`h)x2DfjDksZzdjLXZFSA$l;azdgzV}nZM{V1~5jeV;Q0=z+ zbrN2{KAAQDTWl8s;p=O{*FvQ_HCTYD_b_QC8x?!sBKo?PVoc&r2PF2OA?`4TiboC7r6C3+b9{W%P}MML71sX5iGjC_7> zMlV^#4cuRS0Hht)S_n!i3(qyBskleqa!z5hT4_oRfpdU4e|zC_n~SET8bprf3JUz-e4l&|$f|8Vc8z0*6X99LfP>em+h}eVppfo3SbF zu)R@iWo!2A+Wu$F>{N}X1jPV4j$R&YARju})w%8MbmOfecP!YU&Gg12?`_+k-_h!e zDf7jic47#=ep~pr6s1ldEFkS-%czNO1m2_CCRh$DV zceTNh?_%g=+}P<_%C`vW`ifxR%xKOW{(Mg0f{4g$C>9H z0l_KtL3pB@SZ-Ck1I!HF3~fil|9>!t&Y>t+@%EfJbSnJBp#*R7meg!pp-?Ck3WZzYc)mZmGM7rzRCJ4+ z%v~9^{AY~qh5a$3Tab1N{4ls@MNr$2C}Q{>;Bi3hXh!ozZDoJFA1JTE#aV2tK;xsl zLzt@oj^+sJFS^+ITC5?F*Whv;WQ3>t38}&}u78uz9;2Q(IERMGZ=17T?AKS}fNW@*3SYH7ycn`fJMt89XbciPpKLb16?jhL` zi=*tULs-;)DF138G~!0?n?{8~p-?Ck3ZKFsydkfT0?u=%00000NkvXXu0mjfszl|c literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..b699c39530569406e180cb3a625b0a8845a6389d GIT binary patch literal 532 zcmV+v0_**WP)7^2{mHj%c1k4&PO*R!gVi;z6t6-jVWIjkG^0^&9_5G0wxC+jwII& zPL{02Rb;OOMiy2bGDIK)I4uw~UR2n{8lE+%D`-ulBW#ba?!ju~tp|Y&fJe2Uq~==i zujyPPt@zpJDli2%5ZHj4`}{aeYb76Mnsh75e4+;;=F++n1pOGLs>T#OdhSIo*=G8a z*3yV$Z`cNya<(gc?PvXrgm9RCE|V5_QuvF0=}!6-Wu=-J+~Q9~=EsYALC?MD$FbUTTh zTYL<>HMCCZ&=MZwH7;3iUTsgpu+cU}Xu_26bJjv=U$3BMlm`1kEE@p3o60&sX=xb0 zf|~W0P~OI zh|cQ%nu*mfWX|G?om`7HW88r5^zpK&DU|eDHySp2H6}~AP-91lZ?Q>|BuSDa3E~H- WUUfXs3=h}<0000H9zMF1m{@hWG;lV!C8}cVmDQP*>JkQ4~c{6pwI3jII}PaOMPZ``qeH zTH<IN_7zuV{sT4|Y!jhSk{l<~S-KUP z=urj8YBG+69f0&i(0ozhkZZQrSX;$vnjNJ)?7?CwCw?0}4;FR++p0ql7?3@2cB{nR z?|B?9hHb~=LILi*kL@r$D^bn0=(EtR+2VI^C+`Si!CFP&Z{!>&9 zo}^BpCkfue$|W<%!`G2z3D?gO{gqHsOOc>wZ~TmzG=XBD(=s8j8+r?X`d+t-5_6($ zZ^F{g+l$P?6oz+#fZ^2JG*s4b6SQAvYpuA}xMcU=M+5i9m07*qoM6N<$f+i2@ A^8f$< literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00008.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..fda4cfd7c1a5d4cc6a3c072aff9d039f48c19792 GIT binary patch literal 497 zcmV6kdH)CQMSEdqLpb~*=x#FMn_MI=AQ54e){3GiilTTQet#aHwKlg}v!-xL z%0V^~^8YKK^Uv)bo>jNj4W5j;&=%A~XDmm2&ngU{9vtqK#An`AiO~V*a^i53Haxd#bj7E>EQzSljlle_a;dKb)panGan3&cXo1B|mocucBgb zB~^v4Wbb+r8E`Ie?HIe8TX=g5l zxklgLO?hy$qDm}UWWnW)ir4=he!j-(_|%{r)w$`qcI8IvGIfGBv^tedx8HKNam~qs zdWo*91@#6i8r5Go&Aao;*5>f_dHT<~wmJAb3)4J%;tA`HGs`>bSy>C%pa|qa1_r)8 Y4AaGDu3GSFaUY25>FVdQ&MBb@08J-{X#fBK literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00010.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00010.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4259c655f2efda6f0f36d2857a3a8e06b6f5aa GIT binary patch literal 322 zcmV-I0lof-P)V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00011.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..442171b47e4ff67193eef68ad31fe2a9ef0c4561 GIT binary patch literal 381 zcmV-@0fPRCP)CUrHL}9mpar7zVHv8nP0}>+L zp0n>6ha*1#00000$aK7j@o8^z=uW2GP3}8oPmbFUOzSILJou8)>VQ)5^+%ZVpb&qq zix~2iv_-Gy?u6e`7it%#HgkQ&PDQq9zYXN@BGAitPT_wLt&? b0D$uWy*A0b#6tqV00000NkvXXu0mjfVHdDg literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..f4acef043a11b523d3d4ecde8449e1318f98ced3 GIT binary patch literal 360 zcmV-u0hj)XP)lAzA=PeJ;1y8HC5`1$0pe9Z>g}y!XTYWB&|7%nAU@(9%3+`lqNBP-q=f`b@M_ zP{J|vPq@lO3;+NC006YWZ=Td%dmSC(-I!#~CH&cKDe&X-c>deu)bIUN$J&KE9A4ebfFk?B}KPVH_`g#Z8m*6;!KlBck6*bXxQ00003Bh-(} zS};=#8XE1TX2#F}C_G|S!f zNaJSj=reOR`xzqwU@=r_MrMU^t;tfn>;uhUl|E9`7}=?qcB~@>!QqL*6zR|*Ta9Cj zufsp4Uo}60{A~2>u^&zb`@qfiKgM7lPF;-{IN&-Dr?o`ikNu)lO_$pCj5STWGLO@# zPK}gN00dq;;RIc4rRU1iI(mqvAJS#jltRbTH(#;~5BXdyY_6zxK?$6L^sqR_7`hnE5!Sqs8%o1n*2W~4?srYIS3 zGa;Gd#Z_qFnyD}@AelP}S#=ji?0~$yod2vQ8}narVoGYxa9qB`8sx$><)Sve5L{BK z)Kkk25K#oKW1?ZvaMdz+L{tUz9hJrv)siYW0mc61qUYU&2(%*@!6@ZjiEKQA2F9IF zY})4js7+#Mq-6={NMo)$dMr?5bz=HFZ98Nj?(A8`L|cY&eo`v!u~o&lKRAws|4CY8 zP&p&|9R38L_K5ysL=JW$PNALnC-<;NXUE)XD`KAO0Yo#Bx;O#i+!5;n+R?TMu@kGk zGxL`et%F95yeC{3!4_LpiP%P_?zEnxNH`Z_A!ywdqf+dGGMGhQ2!o;Lvh!brr*}8F zn{k?Z-g@+~t!G$;K?x{gt+jt!2|aQ2Gc3WhFJeh)ntG@_8O6O^F8JLu2aX*;zh)Sh za4}fpNli^F0`WT+XBb!w?M?q10}smW50gF&x&uInE#Fe}BH4g>;$fP_Cs WoNAO}kSpT=0000GT=czR!S)JMk`W9;qGh4fecwmvra^} z5q-pv0kF15^d}Qzu#%`kE7|ovjBaR~Za3|uS=rL6KF9Vyna|=kyP;latji}{dK<$; z`=iA^I`I1cL)gi#Z|dst(j6)X)9KrcTZOX6DfNfIJ?ho$IRIX65NL^e+yf?)^G15V zG?&|C02>RbP*`dReBVOfh1t&){5Q3KMf?JG@Ap;?gCGckU;=NuRX}<+Gb4Tg0000< KMNUMnLSTYC=GjsJ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00004.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00004.png new file mode 100644 index 0000000000000000000000000000000000000000..620a0127126489a9aa839d0ca9799dbc57ce5f32 GIT binary patch literal 359 zcmV-t0hs=YP)-q| z*mVH2@b(_SGvZXFCbB0{87%;j8_dSik3G>1uRbtZ0PB|A;FZ1QX;0DBwLebe9d3qM4R7O&kLWQ(Dns#kU^)uCH z)h@@lB2ntwB5CE4j`WJ{E0xO1SaZXGn?mgOb;t{pxcE8 zS$cI^BuLrFPmUch4%VaWRmXVToB>yHn+a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9d1a32f644b84169342f457d49cf0317a1f28d GIT binary patch literal 571 zcmV-B0>u4^P)t4@NO1V88sr<{V z=t^EE@OmDWQ-SCSJ48>$`P@er9QKAPTSR-k`m0YA`EA^c`8P>1y>0{qYD;d`BS)87t09;~Gv@{7VXdmHpBY z2#da`!?G^ysPQfV`$ETQGKc{zx?nw;MGX{KQQHtz1vst#WjPCVfe1kPl306WBYKu- z>j?MqMD)&!N{k>7L1`#0e{etiv7x?Q1VL|VJS+hld~U+-+GnGFCr&4zgHibAEb+?_ zRh>52fT%j$O3?n2iwLkoI(dDIISElvPG+MLCgw{Gl9jV2yUJUGe$BWBbU|Yqhjd6M zL%@;+TW{0`qs10UhJ4Vy9o^|JcWAWt6eagGW(;;YU291}MtYGM)hPmu?!c-ks8Itu z)%qNTUOWO)kOJBlD(A&A%`<1vnC*rluwP&{tX+h@b?ZNag^O#G*MRCUqjyRm0EUICqUkyu^5PHh*8dg2~!-`jQcQ70Nx@r z@#+(nP2s?ZPaTkjg;%APk!}Jsv0yWrr7RSDqSjY(DqyklNplyPLL9*M`@39~)Gu!0 z;dH@GEJtM`8M8BpI~>^LlE!Q+aBn_rI^RynzL8EXx7YFapKy5e*;RieA9p~83HZUg z#5Xexby8>nIL*q9)`2HUk|arzB#1wg=5D=(`x{08 O0000eugXaqFLCVsKqI%D*>)ZxokpfD{`zGXEjLSE}h{hzvjDBxJ=fHWI<4)uCnxm z2C4nxHZ)G_+A^b}VTv_@n|lP3VpIv`9uHAHUDU8MwGRifHdz5|rR&A3Xr|LCItl&+ z=z=Uli??WCdD=1WAjK?Qc{;=UWN!l4AhO+(T80o~4qR+FNXBp`0B#YMc+rAoOL$_$ zn*v;8Cw3Dchp^=$1uI&QopLauQ-MCpje{jj4;5%xQe|Jd3(c>L7F9 zg4l0N)gbPwpfn=mv&`y^BeSe_+zPsBbvMEmsl$r7c8+y94(NRo?%-0lEQsp3@HKS$ z8~ndSf4k$t3dnEp|9d8P=X<;3TehI=PuT}oyLX<|W^jDoA2JHke@rVlPxOd#!T$+2D8(1VIo4!L@kigP)`QWdMI@zH3lZ^zex`(7Mv(k_aQXIoS95M74v61QQ5jvMBLz6)t1;g?cl2*aY z7n^D$*q|LgmScRk)?b{b%Ik=DX0*+irBEVR0pcnU9|19u+G;G`x}vGDv9h$n7Y(Re zji+xoYfekQPP_#f)_ANGdy6N^PW`iRZZpHXQC9-&22I7lT!s{94nlaMgED;^+YD19 zdw|$yjry&}#R`p|9K86O21wa*S~X^TRRPVciYrV#qg2mEYySd z{q+sNeFQTy4b4-^pZPo(#1#gtGs&a*DsaC%*tW%;WvQE<0~N`^@0al0=!;dqlj8<7 z5dyxsQG7CLs51u}xCXhpjALK+KT^`kp?gp}@~?iEX(-Tcu*dN>;vK`_;Hh_;3N?Xs zjuX1Rg#Qh1aPXUS8@hqvTNgp$>FC3O3g~tlZ{q&$F+p*BZvx(9(E*T)EOr^UZaT&B zjV0WUC-Ux;M6yizDOHh{i`K{{Z?(IyP-kqZlo4{vODC@+Mr8~ ze^bVeP@m%{#>>kJnK5>;AWRf9G2eq+a*GcLSe}x5vOgZwad7X&XRvTzAhlzkkShfnH2Q zy|df?-u~T?dhpVky#i@ zURU7#IxMfd6PaWq_9q!JYIQfwKJ1EJwn#Ose9DL*zfN1(j@_NzOI}4D8Qt@e3vWH5*^zxJyVa=x7&Cx91?(e0Dq>xQ!`o&wo-CZKUgEO~ zuw|qq+0|f~SFa3^B?Wn25M6wDQ-m z1OS%^jlbFh%N}7zj}H~FE_a;Pp$Wjy9qfr_A%zwHByR;gtvu4)g@&+|os=4~k-mr% zyYQgknSo@N!$@pibYg@8aVlvfA1B-o58}$@r3f{1DExRM|Nay9^*)>RJ2_o}A&kQ} z7m9zT>*|cbcDQETFn@9S$ajpz!IfRSG{iU>E+ID<+B-)3eR1%twL1;}V($fA@P)R4 zFvBg~&|mSsdj}%Y@Tp$V9;VGM9f%*fP^bfd+qS@!NMEj#ZNY}COAzU0hI;2Z-iL6* zI{`4onVsx4D7RgO%a7dsHVyU&5}PDRk|as;2YdiM(|nVhQYcOU0000igP)5|3^Bhy#Ve5=1YqVPAdmE|Cn#74u73`SGVnEbe; zHPqxcv#1?tP!AuUIbFS-?=Se>%Gg@!-|Kz@3AxsD)m zisezXrl!q6J}(9_!hj%?EVRAAvzrL2l@~;ur$grcIsX48ygmBL=jA#0xB)ttfS+6? zz8PYuGY2Q24>D=Sq0jn5s(&^}uLY&IwM7>(Ae*<)MmugT^?HMWZN}+?E4o8MNg!ga zb=@AbU&0r`{a#N}4RhR6 zg02(&LK>@~hDGwr31Iis@IfXGQboJ2G$>(__5{Zhi9{liNF=@NbyrIC1AW@;{hN^k|arzOL&YddcObw9=|IUDKZPD zKU5d?27fCq#9QK%7`MrPMg`T-x@fh*f>EOj9#FdpU`ZP z68WkVYli=flNgt^z5HrC7H;~{kM7n*1t6FK>?vS>0;D3=RXMzUM&rrK$&wPERe+Qc zl5mo4&YY9NFB308iZ&iC+1ldqvQvH(sRTK%nd#eTC;)na#?wGOh8SlILhNW3diiri z0)R_|$6x({WsmSekDCfamoJ4i*)0$6^3X-i#= zA{_662Nlm4l9wDtV)LXEcPOw=C6DBG!n65dU%9*$Tg^0uw;lQCOL(pK*{nawuF}ruO$*Hrr{dw1A~7Mk4O^+#F~4ZTsv?0 zhoLWF58u;M5rT#H-nozWVbE|P0BrR9gA$Ws^+ElCR%w3pckdI(d;*XpNs=VVCEP|jJs$u7x9^pP6rF{x z=6M62kKgXf&}1O?FKKaFb$3Z0M#XkdQXMP5(xT|EVl%_FLj&g&n*%DZv2qlb0T2H;!)>?~kE0WuNWs!ZN?MPp%QW=RX5HDGM} zGOjr({WAV7NU_FZCA+s+qHNUfMcVOde6j9E02xje(nJ%y}3b%|t#IAs0w@V4(b8iG5$HNk^&!j7ftOr1JUY(A| zY(e`(ADSv`s9}Enast?yGSH}3xRm>YUcPoUO04pcZHy?eCrOedNs{~(egHK#cCj_p Rrqcib002ovPDHLkV1iuB@!S9a literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00015.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00015.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f09a7cde617ee2abf4ec5647fcd960e743831b GIT binary patch literal 516 zcmV+f0{i`mP)SQlN_F$9R$B*tWKxx+;w~qh|SHz+oL*61W)v#tsl9m4U%q&tF*?M9P}xs(@nA zI6RrihSq?npqC)vo6)4MEliY2`|BV#o}>FyPXh1)ZAqzzp@hsq7b^}6jK@O|36M(! z6R&!}szZ2U#G3-f4Nk05jf1Dktixyz5{|6jsWqOZ>Sot!R!M+x}m72}sN zL+v@(Kpy1kGOqZ%_0&#r~uXV0B*Ka<+~AAu~vE zQMxobZyEi75&+Hs_=dTwkoP{Z5Z~#Z+i}Nn9LI5--{1+Fr*yF;`J){G0000BvG>(81B8Y4@PqX1E+t}RHGLHj!ZUpW(RrojR57ide6oQ52542IaTS@32Eb1%=&Te9f1}pR=B>cHm0QSOs7oV&+sDn~wNBK= zOGcJDHYcZK6Z2#ecL<1)@PoZ2oHSlENByNhh2^wzIpGU4M2&fu7kV7`}FW8C^}DAI0-{j=A?`y|K%3Lf9d84XMZd*+R#H*SeAZ} zP8NBpiwIFSUgK>5vXo|R$pv8=+0v20JT{4z5M%2cvberRlk$d1%L<%-@IM? zXVg^39BiOYa`PBBx)+J>P*nu!?!g*8w#)++w#qFi9^t@)R(z_n8$GsNhgydtVmTQ6 zC438Rb)9p+hB}#kGcX+9C;MsH3YZ>telxi5;qRXB6%%lsqATwQ_(Os-oO|Gl{vmS_ z*t6@Q!WQ{oaRzj6lUk#AlLKwFMh&N1yYV_D7z9BO1VL~U{s8!tUg0SA7~TK?002ov JPDHLkV1hXk=BNMw literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00018.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00018.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff14676a54704badecb30a23fffeb9d1f101b3b GIT binary patch literal 449 zcmV;y0Y3hTP)E7d#5#YI@4s)btfy)?NC|RMSN2$m4RZU*2)=|*atB887;625JQzMy zo*6&YqRsl%lL{!8**f%XyiprJtCt(`^QABYWWYX~M7&Kwn zNK68NOGJ%cJYmHY?x=Xtfnl&FoGXj>!5OV=75Jre@@5M2rqYXoyyJ4J22!9Z z>($3OaJBikT=3edzKZLM``U;(QJ-X-y-Q{e2!hY8KR-oQ>WF~>1(7}UVcrS(Mq2dK ze**dU@E`6dne*stT8+_~5@4C^1 r`{U`mli;ib1>c7KOgjjI;B$Ba6?OehNJjC+00000NkvXXu0mjfEq2L4 literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00019.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00019.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4259c655f2efda6f0f36d2857a3a8e06b6f5aa GIT binary patch literal 322 zcmV-I0lof-P)V!Z literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00020.png b/tests/snapshots/nanos/test_sign_function_call_string_with_multibyte_utf8/2_sign/00020.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2638362dcaef6dc6520939c7346a9aab1fa25f GIT binary patch literal 278 zcmV+x0qOpUP)bw0Npi3>n?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9a804edbc25019b3e61d8b002d3d61069127502d GIT binary patch literal 635 zcmV->0)+jEP)Q@-BVI)UgPPh{k09?_no#6%j=fn1lcT0JrhwC@ZCOUBnor5~UD* zeW?lQ+8}lh-*+nzQcBraAIQ%Np(&*pBWu>Ou&hH?sM47{mF3h)V!%!H)ysN}N!hf@7eWW>KTTQaW16YXR3=JD464zQL_00;b*ed-e zfcS5%^t~q`>r6^kXufI-aiY$+j%-lc1xrS(j*PSEr%(ms>Y$1gnlB4Ua5x9< zHOYf+ArUKG*BOrP(AGl2=+Xsy+m)k{%=V>`(9q{9uYWai%%0&Bj%G)0UKI0g{-90I zX99?=rM%Lpz!^Kbr>+*UFdQwVh0UU7W>nwH)kS^wEW+*qWty~c2$RZ^9P;mI(y=SS zaW$B8(I=ue%K4j#4e9|){jOe>i#pP9i!vSa?q6k^9$%IP6vy(WK^_icYFK|Wn1egP zE_5dyBV!Jh@?i6lXQ7up8l6ZZ)+mKtrTRmCZRY+DGy-Sq{F_(0e#zJMOF5yMzft)w zq@7&|+zM^mOPQ|ddeR2=eIMXRlE0*o>X*0WmoSSo)bq#*807>*OB`_qZ07PC#{l&V zr+5Hs3u&X!>>-VGMZ5m6>fq6MeyFX)JrI9XngIX+0000000000000000000E;un*t VL7pHsmT&+7002ovPDHLkV1ku3P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&d%gUy^E@L;Fqu@EY@r0lm7X1r(tIZ30sjOvxm2lMlj^cYU2i(awXc+a z387!nMyY^4*03>`zrJot>?k%<e=APuMPgF{wzd>~bosrRHsYLsI(E-s zi!sVn>GoLU$I*AcEJ71tPnCxnh7{u*Op)TsO9-2U700000@aw6^;r-`*ra<$fd^kQt3Yq^0$V1+gy0f-1ce9G=_3@Ta zm?HT;;1D$vR{t0)kODJ!=%dxju%T~JBPR(*(%p@zQXg8c zS7)(&1=QTA+?ZSLI+PsKyzrUL$x=O?cO>Drv%x670wNQe6%^?;wFgE_bp>_T@ka5Cm#Dbl^xUqvWIO)0ne!?(n~OafIhOKiIGQJTjx zy)ZefR?haFDt`vWrYqmWS_|6qgJd_4D-4*~S`EGM-JIwGU+VoMQVn&R{g%tZ9=Y@F ze?#UWL09j#Animqyj=_WY{`DV;q4Xh*^>Q!!*^^! zZ!g)qu^7JNO7iU`dp8!t8x!!^lKoD@0RR91a5w(}iIK^~?-6Ad00000NkvXXu0mjf DyP0$d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..103803026b5a6d51b21fd805f58f8efce9ee7890 GIT binary patch literal 665 zcmV;K0%rY*P)%D~nZO_Y`P$7qXtvYjzqObZ|v==!rHreTe84IZJ4V|T>- zf$!lrat5$SNgJNpdTtJ_gf!!1pQjF^&TO z000000M3TK2OKNYM>;NXtV|#2c+CSbZWHk&o~e#&#kjXb|8?&Zd&$v-P)b*$@B#;5EKRCg1lRLb$HWNSQyG zkw?kn3f%V{rwi+rtB{c-M1ej4U7qTaDVS;tE1cD#R4M!qfLh5P#Tl=QiKf3 zN~b4tfu;PE!nyD=uUl3WbeP1qZW>W5|5va%H~zY=nlH)}%O4gzQrikx1=vh~%w=|o zTCiJC1|Th5Gq`2@7D6Q((;{C%5?j7`=4&N}0>CzgOQk5eiR1>4K5FrTyjmT_5^p>sWgxc zs&T*aRKQB55jjI=!0s64>ZFepQ z88XT6z5uL~bg2eTYV`A#n`C&$7POA{gV;1TXR7>a0N9**ypYuf+1ps-+}dD`L9q^o zgN51mklca?_rm)QRGkd(yTP~`-ggEucoXbGZvrQ;1?>kMTc-CkT;kX=y{F+hQ~Ci* zRgFAR7;fJW*v0#c^e6W2h=u+86UG7fm@<7YYQv4UppPlj_o6nO3Ba*sdQZav00000 z000NW{665=GQE%C&m3E(_c5HXeKoX&rK&~*zuyNmvPhZUjahHN?qzy4y@r2yOLG1G t#D}*e*Y8j80XViy?_)Rs0000M;1}iayn;t=5A*;4002ovPDHLkV1h5RE;#@I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0a94ef87a0a057dd5702218e0c79cb285e460926 GIT binary patch literal 657 zcmV;C0&e|@P)$=RtQ=O?cDoJS^mko5OF|~^Jwb^4#0LyK}6E$jRCX_8sbNuwB z`fnxaPpOa^U~sCoOBKI{K6E{nehP`tsq@!$m125S@qcjIu1K8E3Ne|nsly41| z1U#db9DenL-D)*aR_gac-UD5*CqREx25}muD05JSCWv>NY|}G0tD^c0VE0*J{VEr% z<6-`4fY63!i~ZYiWf%|PbVkb)K{yyQ-{?=bu+dw3sHB<&wfYG@V5h2vJ}LKpoTxRx z(WDkt_A_92d?&0~+mE9W8QG*5ze1-Q00000fQ4b6g4l-#`Z^;wdlhCQda3Pad=JNY zsIhYA{p_w4aYax9Vacr5sx8o{~Ez^&5Jd}!YD;H0?GTw2f7PL$B zzi~e?|I@@Z%k;y@6L4&qez4;Y`4)6+nSP|>Db;tvorEiw>3cX1000000020crvH*W zwxG|x2F~Qzf`0p3?)++~FH6;zG)((AH+-d_--yEsIJThglJC|8tTX90y~$|Wg4T(C r*!Cu)^$a++pugOcC;$Ke0P6S$Bx#z{Hjpk600000NkvXXu0mjfy(%c> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..e5411569eabf743ea18d2addda26b83cefa3ed7f GIT binary patch literal 476 zcmV<20VDp2P)i<1$TN*LYptvakz%)N$M=GVHlyc6u$K0Go z9?^m8f(D=~Q(ZA-v^7)g`%FA`DJAE;XH5>$M!o50c5f*I+W1=#`H_6ncHsNdYx6t$ z0Lh$~eCeFCJo%jSQ7%*xRbv}pez6*}+JSK*24HiPL?^ksQi?NFPL>qQF#Sb zpc?Dd13D152B0eLPWY6Xaq$&kdItaiK%f<`g6s`*%bxSm<{G-$J0P{y?6>I+KG)3W z0k^Z;7}dQz^%Rb}ePgpQ%WXy2Qa-e}+dZG)F<7ev1!q5*Qd6y6LoM_R z7?J&bgSsou>7MzG;{Gc_O|ELX_rINo0nTNpZEV~7t1gT1{Z_l~RCEbiyu1J1NqQfa z{rJafEe^Z1U|*lAl4`Oaj4_yrDm2r(*5TEVUH||9000000000000000V3}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png b/tests/snapshots/nanosp/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVtn?)%v zn4MI-tMgMu;D(3OWRH2SEeQ>NI_2!znu!_Ar*Z{v_P(^sJ8gVtjpPRYIk)Uv-@Ymh z+4rrZ_rk|xE4805^`2n5C$DU7q58Gdr#~~#3Wcm*zT|Y!g%dR@4-U@ZE@v0EUU0X` t$iV$AYp%oGN6+R&$-%tKz;NLHZzjiG_hgE`P5cNF^>p=fS?83{1OPKrnWO*! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..8d61839381548415be58be94d160485a30a64d87 GIT binary patch literal 922 zcmV;L17-Y)P) z=b76IZ;>>iwcA=74|22dNWYeDK-^RKOpMjDzv!P6n^<8S9Q@DDSbfqHhF6%c+;9Z# zGA^zu(kIICbF7VK$7}RWrxaKq(Tq2`fy^0jVV9s^m@%)%nKTBR7T4$=aw;}8wUM+! zW(SDl*UMOLanfjoTda%gUXn=i64X}-?S6${(&IOe^yOY8Z3ckpPUn8O?&}>UM!0(% zq;Q^x>cUBy2#& z&aa%vMNt$*QT!cpz6BXNyC^Z*s+ld>i!Q__;N{J8bn!Nw41dTXXSuy`iifhFeR#B( zmv#zy^1}66j!%r!Hi^Wfy`zAH(jrXNj+obaoRw>b0LL<)0YufYy^K~2U$2+e92iHl zxqSu%5Et1MMTM7a+%f~b60zHz67K-AMB;hyE^&p5T`l4jDCJ`HkChG}xBitp5<~4I zB~?cUh`Z-g#QU~4h>-)bQy=p};;dXt@s{l0C;3-Q%3IanfLi3L{x*bCSM@hjeefi; z3Oz~Pho6L(*S#MwKK|jdKA09L<`@ZRDUFhm(Ux&_U;<*OOhCCjHj@J4JE-y5GN%?? z{9qVQ<8x3cf`_x^a`A{ujqvLJq8txaA#vfoWevCGe#GpEj;R&B-pCC}o11lzY?Eg| z7<_s*X*c)|!2JVamcFrZaeD_G=I(rlmjkhRmXsf)yv578?^fBJKr?{sm3z&|L2+L} z)9a4~sa?#6hZW8Eh5@p%0T!w#ilQirq9}?2giBpSnIh`d)OTtr#zc-7(L^&mxX}<; ziXdPf;wjB{YH7HT57Q1X8pT`D+`(Zd0!a~#y}6Hr`^H)Uw#(vAw^i(94)TXK+3<@IjB=ftD~@HhAQS={%R{ysp%bqT>GNL$DIS+B2% wF*dO-Y5dj0DNRI;mw)u%IF6Uf+rWq$8g06SA$UETF4neu9#!W5nBw65Pa2wqdH5qz?>9)uYFvssG8E*5Y z=^4C3bydyoe4IoHo`T9O;XSPSuV?lQ(9>bD)4eI|4(OkJ+mXE;_j@N+XPJde9SUI` zaE^WN-LA+V?V>t!dM92U(i5FN%bW}syjV|Bg>p2qGup7R5GnpG=(VDTZS3$5UI{l; z1LynhVgLXDpMFg?R{-riW{N!2pYA1wx9S!2lCtq3vpS^Dn%4o1qvle%r>NT^KgNZ8 zjq%E9$Jg7y@)AeMF%i3hnY$qqC0kpG`h%;v$6zLohO+D(-MwYSrqGaYVneVpINj{8W@1_h#bIL%1i~n*XW6`@DLg@%=8sOY|3T zgG}_7F+xrB7o!h$Viwwo=kQL17XSbN000000000000000nC2f*NyYpUjX?we0000< KMNUMnLSTYp`tl$E literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00003.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4a46538e4069262257ffdc1cea587d7142f375 GIT binary patch literal 887 zcmV--1Bm>IP)m8MZ>uKG^OS|Unk>0uzbZ`TDZXlEvIlZ7HobLaKgHDlRX8$O9e6nje`{tA=Hk$W ztCHh5rU|%;`6|&Sey_mJ`w?}qwE{F(B4oZ~;goB04Vku%RhV37c&3kPt8iy0*jfSR zR2|XU#1n^G?azJR96U=3Yz@F`?du~*A73l;TB8N4M!L?t7oA&>nHpV)WKf@Y<-G3? z7#LTL-2pJ4%+4QHg=RIpt(2ASB>0h8E_cFdSA2YF{#LTXd54GpotA@|5JCtcgy2-} z16J}kq8e&39r4_S*}AX(JBCgx_r8>Y>SMOfJ6~tCw1@lwdQR0(h;hDFUYqi=+9m5d zwqXfkvd?O*n^E*P=}(QYrk*3dj*ZVvWb#g}gRQItC_F7I`ftQ0bZ_KMR@QcZ_d{BD z`V6*$(>wq=Ffhw9HhDiaRSvy1iqC$Q%^@+P@VR{jgy=o=!OoN^N0E38HBTOW2Aa2b zV|_?YmHmgm%|jS@3{BNB1Nptvh)~+TnIOH){u@{(nc06EMyi?pH^VV_67E7z!gKgZ zbb5=w518DAFG`^lI@}i@T>`3}$V-;29NK0t5^e-h$|i-x@sm|3k#1zI%s${+5zD(t2up#IGm@){s4@j@2;?C-2rmGeba&*_sEd&5+^o8t{b^I=#zYpl5mb=GqBkGs( zdRs&`%9SYZdrm!c4spDv9zz{!!4g6UA%qY@NSR5hojw9Ub@%TBeH5mE|vIpI6mZVZ2OA)@XjO2RqlQj&zgo)ERs@+QvVXQ|EkJ`x?T2}*5PN)tcRK$va#2aQfl7Q z-UF8wX<~b2&>LY##uw%@KvIOL^{N{it<`r;wKc4U;u_(Jn)g;FgZT_lU)5ujn112> zR_pJ+G*MHq*Jp+K0Gzom>rZ`ZJpY{cyX%A}U{Pi7By0*&rIC#u1!cLL);%Q5&PSVL zDFEtcS^lHfsCM(;>ynjp(zsL~)J3R9_Bldlq>tljIQI?mxr78D#1jAj005Z8_)%)s zh!TvDynW$ocQyJt718NYYw9BO);X@Udb+?rTPi>8B&bRahr zfbCO|#FGz=G*YPY(vrhO~wF8}}l000000000000000 g000000KhhW0mA76^54UY8UO$Q07*qoM6N<$f-czf{r~^~ literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00005.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8474afd8a664c20fecfc84013310ea1496cd69 GIT binary patch literal 351 zcmV-l0igbgP)oG=VvG!-E>=X@E1FL<94$7KPS=Bs0`Pu^RS*@r&}YNaToQ|_+mcmo_rd`Ja=dHH{abW zHsvQ@1Q9}5x5LA-5oOXGnabwh=JlV?C+%;h+$_??h&!N8vw5D!my2e>?(?Y+x$zya zE5CkwjqGA~i92aT1L~x@XZKRUSLbtSvj^P)TdV)_cvi``50)xM=KG5!e(TBj$ih+= z1ONc|WVd+X{BNz%Yrtf8Z@{~}4gFXeFqsBSrU8>_0OaoeRQKj~;+6gYn;}bom`2pn xA50HsvI@=Qe|RSG0ssI200000006*cegS~8-%;iv*tP%w002ovPDHLkV1lrCpY#9# literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..40b6e21330d25b3c63d36408e7a9913e7f5cbe65 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|>}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/0_continue_to_actions/00007.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f1a60b1fa7e67095fabfd80fcca7e26abd4587 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|@{*ba4!+nDh2V;HE4&H>d5__MYUOA;jVap65pe7hF?C9utb1vy%Z8_6=k=0+0e)n-$ zTX(K9U(LJ8_rOIy;Vr*3@34rRl{vDuj?0{J>yfQ57OtKjwCk9^GVt@152Vg(c_3!H|%P!B8sTRH{|KJwOjlkGlQKd868rycBw0}O$_-}c>)+vo1somu?K y&il=~i@Xn?luhY*d*8FV?#(u5SQr6)^}dqfRFcMQA1=Rskf^7tpUXO@geCx*3cF4K literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00000.png new file mode 100644 index 0000000000000000000000000000000000000000..18334894fc7fc25fe3f1fcab9d1a1d16d7f2e29e GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h6`U|{s{ba4!+nDh2#q|hM+o`%Gd zJ)Ga|g~~rJOjg^pBv{PwSH1t#O;-dqtW^Z+fr0}@+wY2B&|j)@-0)a$xY41fEH5r( z%Pl{6pT*-#>5kQ{dUwj>9hU1{c=zaCsF&w^`)}^zd)6`JT=pvNe<}ZGU4zawIp_Kh z<>Decc>fCR|ERzQH225C`M;l5yg%KbxmbFxP8I8?7kQDtK3u-=ack;@j~D$PNAMZi zJvCNW==S)wWYzg?eXDs_KYhAj?Zwj05N=nKw*gYl{83+x{0=DwUVEsw`sJY?i(bFx zd%8w$(be2C3jV_O-Jf)-v)QdnX@;6e0<| Y>eEZVgs)i9zW@|Qp00i_>zopr0N4Ym(*OVf literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..f2af36b6b0f6f1fd0c3a51c10d63f100dc353350 GIT binary patch literal 454 zcmV;%0XhDOP)3`PtJH7*MPe7ag|tu^|PJNimEhs{USBB!{c`)O~CZ+)Gj!?{o@8B z#V$c|fmUnx@gTPI>FoGBb9eQN7QP28|5s$ySpTS&ZiJWqv2mg)-K|&-3}e`YzC(&L zo&Y$WG68paF9QGoSz@c9Tjj>u=q7Fm8lUJLx6+2{w~V_S1AyP4<&92Q#q> w&BQ)D6X^v2000000000000000006@L0=<$-{iJ$G3;+NC07*qoM6N<$f}k?X=l}o! literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00002.png new file mode 100644 index 0000000000000000000000000000000000000000..9a804edbc25019b3e61d8b002d3d61069127502d GIT binary patch literal 635 zcmV->0)+jEP)Q@-BVI)UgPPh{k09?_no#6%j=fn1lcT0JrhwC@ZCOUBnor5~UD* zeW?lQ+8}lh-*+nzQcBraAIQ%Np(&*pBWu>Ou&hH?sM47{mF3h)V!%!H)ysN}N!hf@7eWW>KTTQaW16YXR3=JD464zQL_00;b*ed-e zfcS5%^t~q`>r6^kXufI-aiY$+j%-lc1xrS(j*PSEr%(ms>Y$1gnlB4Ua5x9< zHOYf+ArUKG*BOrP(AGl2=+Xsy+m)k{%=V>`(9q{9uYWai%%0&Bj%G)0UKI0g{-90I zX99?=rM%Lpz!^Kbr>+*UFdQwVh0UU7W>nwH)kS^wEW+*qWty~c2$RZ^9P;mI(y=SS zaW$B8(I=ue%K4j#4e9|){jOe>i#pP9i!vSa?q6k^9$%IP6vy(WK^_icYFK|Wn1egP zE_5dyBV!Jh@?i6lXQ7up8l6ZZ)+mKtrTRmCZRY+DGy-Sq{F_(0e#zJMOF5yMzft)w zq@7&|+zM^mOPQ|ddeR2=eIMXRlE0*o>X*0WmoSSo)bq#*807>*OB`_qZ07PC#{l&V zr+5Hs3u&X!>>-VGMZ5m6>fq6MeyFX)JrI9XngIX+0000000000000000000E;un*t VL7pHsmT&+7002ovPDHLkV1ku3P2!PQf4 z9~LoozsAIKW0lLaAL%b1o^(kCI)|Y^)vo>sTej(|Nl^{b_s?xRI7Mo5?CP86ORg8Z ziCsUfDoBShbYqzF|Bq*GuauH1i2Rh b8unK*#hGXT86$qwneku^bEu&r)j{6_6ne_3;5u5Rk?YwowN%B&83ZS_3r z&%)89EyB)8yUZ_5mdTuJepEE;`?XcpePdfki-i%sxF0As??1su&lDT2g z;vY7##XLRXB~bpn?f&d%gUy^E@L;Fqu@EY@r0lm7X1r(tIZ30sjOvxm2lMlj^cYU2i(awXc+a z387!nMyY^4*03>`zrJot>?k%<e=APuMPgF{wzd>~bosrRHsYLsI(E-s zi!sVn>GoLU$I*AcEJ71tPnCxnh7{u*Op)TsO9-2U700000@aw6^;r-`*ra<$fd^kQt3Yq^0$V1+gy0f-1ce9G=_3@Ta zm?HT;;1D$vR{t0)kODJ!=%dxju%T~JBPR(*(%p@zQXg8c zS7)(&1=QTA+?ZSLI+PsKyzrUL$x=O?cO>Drv%x670wNQe6%^?;wFgE_bp>_T@ka5Cm#Dbl^xUqvWIO)0ne!?(n~OafIhOKiIGQJTjx zy)ZefR?haFDt`vWrYqmWS_|6qgJd_4D-4*~S`EGM-JIwGU+VoMQVn&R{g%tZ9=Y@F ze?#UWL09j#Animqyj=_WY{`DV;q4Xh*^>Q!!*^^! zZ!g)qu^7JNO7iU`dp8!t8x!!^lKoD@0RR91a5w(}iIK^~?-6Ad00000NkvXXu0mjf DyP0$d literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00006.png new file mode 100644 index 0000000000000000000000000000000000000000..103803026b5a6d51b21fd805f58f8efce9ee7890 GIT binary patch literal 665 zcmV;K0%rY*P)%D~nZO_Y`P$7qXtvYjzqObZ|v==!rHreTe84IZJ4V|T>- zf$!lrat5$SNgJNpdTtJ_gf!!1pQjF^&TO z000000M3TK2OKNYM>;NXtV|#2c+CSbZWHk&o~e#&#kjXb|8?&Zd&$v-P)b*$@B#;5EKRCg1lRLb$HWNSQyG zkw?kn3f%V{rwi+rtB{c-M1ej4U7qTaDVS;tE1cD#R4M!qfLh5P#Tl=QiKf3 zN~b4tfu;PE!nyD=uUl3WbeP1qZW>W5|5va%H~zY=nlH)}%O4gzQrikx1=vh~%w=|o zTCiJC1|Th5Gq`2@7D6Q((;{C%5?j7`=4&N}0>CzgOQk5eiR1>4K5FrTyjmT_5^p>sWgxc zs&T*aRKQB55jjI=!0s64>ZFepQ z88XT6z5uL~bg2eTYV`A#n`C&$7POA{gV;1TXR7>a0N9**ypYuf+1ps-+}dD`L9q^o zgN51mklca?_rm)QRGkd(yTP~`-ggEucoXbGZvrQ;1?>kMTc-CkT;kX=y{F+hQ~Ci* zRgFAR7;fJW*v0#c^e6W2h=u+86UG7fm@<7YYQv4UppPlj_o6nO3Ba*sdQZav00000 z000NW{665=GQE%C&m3E(_c5HXeKoX&rK&~*zuyNmvPhZUjahHN?qzy4y@r2yOLG1G t#D}*e*Y8j80XViy?_)Rs0000M;1}iayn;t=5A*;4002ovPDHLkV1h5RE;#@I literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00008.png new file mode 100644 index 0000000000000000000000000000000000000000..0a94ef87a0a057dd5702218e0c79cb285e460926 GIT binary patch literal 657 zcmV;C0&e|@P)$=RtQ=O?cDoJS^mko5OF|~^Jwb^4#0LyK}6E$jRCX_8sbNuwB z`fnxaPpOa^U~sCoOBKI{K6E{nehP`tsq@!$m125S@qcjIu1K8E3Ne|nsly41| z1U#db9DenL-D)*aR_gac-UD5*CqREx25}muD05JSCWv>NY|}G0tD^c0VE0*J{VEr% z<6-`4fY63!i~ZYiWf%|PbVkb)K{yyQ-{?=bu+dw3sHB<&wfYG@V5h2vJ}LKpoTxRx z(WDkt_A_92d?&0~+mE9W8QG*5ze1-Q00000fQ4b6g4l-#`Z^;wdlhCQda3Pad=JNY zsIhYA{p_w4aYax9Vacr5sx8o{~Ez^&5Jd}!YD;H0?GTw2f7PL$B zzi~e?|I@@Z%k;y@6L4&qez4;Y`4)6+nSP|>Db;tvorEiw>3cX1000000020crvH*W zwxG|x2F~Qzf`0p3?)++~FH6;zG)((AH+-d_--yEsIJThglJC|8tTX90y~$|Wg4T(C r*!Cu)^$a++pugOcC;$Ke0P6S$Bx#z{Hjpk600000NkvXXu0mjfy(%c> literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00009.png new file mode 100644 index 0000000000000000000000000000000000000000..e5411569eabf743ea18d2addda26b83cefa3ed7f GIT binary patch literal 476 zcmV<20VDp2P)i<1$TN*LYptvakz%)N$M=GVHlyc6u$K0Go z9?^m8f(D=~Q(ZA-v^7)g`%FA`DJAE;XH5>$M!o50c5f*I+W1=#`H_6ncHsNdYx6t$ z0Lh$~eCeFCJo%jSQ7%*xRbv}pez6*}+JSK*24HiPL?^ksQi?NFPL>qQF#Sb zpc?Dd13D152B0eLPWY6Xaq$&kdItaiK%f<`g6s`*%bxSm<{G-$J0P{y?6>I+KG)3W z0k^Z;7}dQz^%Rb}ePgpQ%WXy2Qa-e}+dZG)F<7ev1!q5*Qd6y6LoM_R z7?J&bgSsou>7MzG;{Gc_O|ELX_rINo0nTNpZEV~7t1gT1{Z_l~RCEbiyu1J1NqQfa z{rJafEe^Z1U|*lAl4`Oaj4_yrDm2r(*5TEVUH||9000000000000000V3}8ba4!+nDh2lG}j>mk(P&x zcT9d)?|HMEzfoY;k|hT(&HPpG-xYXjW(?n2L7*-uNLex^$SZq(R@MDlM(tgp+q7%b z#13rB{dsiVou|2y4-V-xyhwcz{kNmyZY^W?E#BiBe?8p6v?+F{?`rvdj5clA42zv_ z^rbRN?3BxkT1yt1e@HsDrx{mo`yuK)wX0ePWa(ox$#7~7`G`G5au z{Iu~=slOQO{K&d@`x-Rw9^Dwt$ez4wzuKk}9;Owqr!Fsu-u-UIwhKW^&p%<3IQ#ms zz4MmjE8AuX?qv9MCU^PIGh1@iciVlPU6}s5?o~I}lUo-y^&h{(XkE{7eZPzy=S!hC on&K<+9RD?5)2aaboFyt=akR{0085c?*IS* literal 0 HcmV?d00001 diff --git a/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png b/tests/snapshots/nanox/test_sign_function_call_string_with_multibyte_utf8/2_sign/00011.png new file mode 100644 index 0000000000000000000000000000000000000000..b08f4179c1c70fd16aafcb213c90f45c88a3df8c GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!2~2@x4h5*QlC6s978JRyuIO_b;Lk`^?=_A z-;)2zFZCiNS~eOVuHcwBFL>+cb(L?gtp^zc0!Cl%Rlnc7ddGv}GRFOy+P}`$N*P?r zUwd}#lSv!cY@!mKF0bFgmcwUz!gv28DFY?Bh3?DaL*+MfR~)YtqTSf qOVt