From 4d698826960d179778c08d4cd51b70eda8090c84 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Mon, 6 May 2024 15:11:42 +0200 Subject: [PATCH] [fix] New Speculos API will break if we don't explicit the 'delay' keyword argument --- CHANGELOG.md | 5 +++++ src/ragger/backend/speculos.py | 2 +- tests/snapshots/flex/waiting_screen/00000.png | Bin 10921 -> 10861 bytes 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 058af3af..95e24c78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.18.2] - 2024-05-06 + +### Fixed +- backend: Adapting to new Speculos API `finger_touch` function. + ## [1.18.1] - 2024-04-15 ### Fixed diff --git a/src/ragger/backend/speculos.py b/src/ragger/backend/speculos.py index 8067bbeb..85a849bc 100644 --- a/src/ragger/backend/speculos.py +++ b/src/ragger/backend/speculos.py @@ -211,7 +211,7 @@ def both_click(self) -> None: self._client.press_and_release("both") def finger_touch(self, x: int = 0, y: int = 0, delay: float = 0.1) -> None: - self._client.finger_touch(x, y, delay) + self._client.finger_touch(x, y, delay=delay) def _save_screen_snapshot(self, snap: BytesIO, path: Path) -> None: self.logger.info(f"Saving screenshot to image '{path}'") diff --git a/tests/snapshots/flex/waiting_screen/00000.png b/tests/snapshots/flex/waiting_screen/00000.png index 926a0e3eac3c099ba04f41aefc5e50d6534a2117..3a560e795dec90eeb428e56e1cde008dba122987 100644 GIT binary patch literal 10861 zcmeHtXIPU<*DfGZq`E2Rk9#IdGB)H<;IIY zV6{(x$BW-&bxg>;D1L`kpB1e8c6hOrgZr$N{N_>AYoGgP89pR)-#P@V34K-Oprh+Q z?6NygM@PtvXQHcO@ujm&{ZHdRPWbP)6MCHXXk>h;F3i>C%mWcdWjZN?n{%-R7^OVl z4rT@cy4=fU^f#p$1cE>Kjg{q{3XcEZ+q_3}2}A&%nHb$X6>rU`%$HfDICG9Z9cmcv z@#Wu;=s{T-^$1=m+gQBwNaj2}2i@JX1bYSl-iTmEfp^JGbIqpw& zo~BZ%&f@evl}!KijYvN|YJC3Qy$*f`0r}>q-<@t>+GzAm?73!qxV+}2r#!dtQg3dH z*RcG<FVnr*p7T=fKgiW!cav^#SiU@Dz3#H8~WpC)3Rc}8ZwrBj; z7aJ*I8OQW$EWR?QvQoKj|7*AouWjg((M=C}7MmD}|JkqoWr4mrgTU0;%3XWF)-#zb zKM~x72+{0eRWIdHu&?1w{njk{74|VbZ2{`v@jXAcdaj?+p5x#q*sH+KWcK+ws+aN6 zbKn{c$pwd1BIyg4%ii2kZGG_ki@g+sz}?6?JP*UT=u%7QO-Tj;Hn0VxpiUY7B);e2 z;MePkX*~(t1j0+=qJqckZ6@soAdrYCD=eIfg<| zV#e8GlR;<;sjp_8U0r5J;u&+ay~C;B-z#4q;QErKngyq^M*;-;LCCt$}MYgd2YiVUKJVA>UeZ`DCJjRo;@Gh{tY7B`zHJH5AdG} zNHT?SGY&&a4(%LE?dtQ|5kPr%8GZfEBuK79db=SfFNR= zecMVbZ>ievMSvAGchqe$PiEk&G6fOWHCvn-i6kReKh8+k*C|3nQ8KhmaFO%XgF(+0 z5SB<8ghkiXu1=NoWsC8TNc%QVGMUbS`^KRB9sRUIf7X{Dj?F+}FHAUIwA6P$rjkK4dXsMoK^l~Sfs zK976WxQg*Bl1iPQL)mHCm>=*puE!0h4#a5fh>%IYsf(wA|1z|iFP-Sj#X8H8Scl2Y zKBA-`G%0gFGDzYxEyh$m@uET#vCp2@fa)We+pn{RCxf90-9H}S=gDNB52l!;Gtz5L zw%e(t<~2dgP3ugXrI(W0khn5nZD};6TxoqUcg;v2k0CO;JjWzReyaJDr-RA>`upV3 z;k6ko?Qj^qF#8uhsauqQYrSJ6)H__W=DET94%r@i+eQ18J36Gyd^|zn*rzX@Eq^4iyH*93gc#vwZ*A$*wf}yyON#KWeA=9#p3`5x z90}=PZ~Z`}HpMosAYWqGeg~(ohqsXlPNTw@Z*QCDySlo<=K^=cqS~F;SW7q}R?!5P zkdyY_cC{t*M<;NY2jix$T>dkhlKST=PBT<5s*>QVuoz zG~`E?jE>2tHo+`#UWe)|?4%)F z?QEpaP2vHb(2EFQ^AV=b{tjN_IicBo4CA<%|2=*Td zpKP4**u)@;{zU(=z77jLWPO|O4CJZyUBih-S`xO~?A zB_GJxaxJx@+(&fnB*V0Oy|cipP;1P}Ht&cxO_(rOdbgnJ-uB-vws|EYrn~(x$|=(x zPnKg2UvUpcRkLOyMeIAW!!_vlQ*JSf^du_q z&CF*>ofTPh3TT_8P-_sbJ9_YwF?@HbJn%zMj0WEJs-~i8mMLmNyL6t*=APt7w;(hz zHa4~|Cy)d^!Z#1yVmc?V&oqEKJU(vYnU09;t0`P9d-t5HK~EEsP6-dt6~PfH7}7B% z^JB;~vAew9$tC*|bZ9p+RDrnls<^HKoOjjCCdGRX4RXrit&Rg#XI+1>wi?7i5BzV9 zjU^J}IK?-3A<)guEmJP3CG(ttyGT@9lTyOPmv#PtZKSKYxiJaFD{J1FUn5apmi13z zOcWiD;dCp)8|I(CGv(xaO~sg9>uuRi=Qr{CpvuBGYngR*gV>$iX}>58nxKk;>cYA|nWbM+(0P+mnV%E17?kO5$5*29<*`>` zmpETdYw)1`)f#>bT1)X!W?|2_eF``1Tr>$yqzsHqp6%UO4qE|{FwOJZ!G8OvraD(6 zMlK(kprNc5&ysOPjGGaRnfcX{|eW7ONWIM!7|txOQ%2UK~*Z<$)8>h`$jyOnt6i_fa1~LWpL1! z+&;mgx?rNucA`WXv*apioPrz(CHZ%)vhOZOhQ8Q&&yQ~wIYvalts&j$oi}nmMVg|k zD54=sCa3(#8hCJ**>=rZ-A1D_i-kP5)B6~#`|jjsv#=)=ez-Gx2=V?+qs_J0Ky>5C z=m&V+)XSRIB~{F^HDHFR#Q1RaXeVgGOa?zre*an6R$nM_^v{db^CxfzhUhQdT}5%Y zp)0EC&Hie0+Xhx*7AnQ*7c0k$SxYi!MR`a{CHyk8%?UgC&S6~v*vP3a{~Z_`2@=*X z6IFkav4t5pjJiy=?)wWNt%BKW?k4G?=F;}2DWd$0dP2SV0}HIN^i^IS zOO1ZnV!wqUvqe?&$=&Y0%y&k<(HPAXdeM(G5S+>S!Bz`FCFI{d$%BlZVkNm$iej0gfEU#Tk4-ziEh)R>`Y;MF zm#yunck|xd)p&7qwgblQuU(I9j{Q8jcI*1_RVc*hPL*kL8+lH?txA%1i{$Vn2BBc?9I z`TL+jS67!zo80@7gOX7#9=dX$*^$8104Jp_oqW1ws$wVDLQa;W7%;}_o|7*z^uhnV zd>Cp=&27=^Vg|H^>6eS-LMuVVHBh#=5+$!GRLuAtd( zXttQXQLwFTsF9V9ph1>t%t_PX*05Fva7^@u9o8KyHhDV0tCuZznlOz+X0I!xJQX9Y zFo;hfGW9CerwXU-HAOOiyGgf??EbP0r@Y;XYl`iaA3)W2{pG~_X(J+c`*|BEv-gUw z^9~a5;!LUVbu`Re)>h=T z@Yuhw*^|seIKD<_VR*2b7b2u9Sw_+a!=n!)Zta8bbR3Qn^7Me`b=5~(U83U_{_DM6ong=05=M6$M5SUm&%$Bd_7t_zx zevZ5bR=lJMii>>Bx=_-OaO@CG3lCOe#)hAi#fR6OkXYB6{FeA0%Hx??mw@T6-awsC z))hyDy{%2yJ_xqlRxygG=pF71YTY1{dy(H`bhu+daYx|hok zBlf|^Q?kQ$qGwwseaf`($^C{m<EtK=QcdE%gRfsLqNoWP&PTtjOEB9r?4GVPduuydqvUd+MLD+OD~o zi+}Sbzp@$qT^zFo8qd(qnFI-MuO9!pvG!<__npn}_9C^zugY67nmMPYbl!6lf>YuM z1Kt{qd%fz-;PAnx+)3K_A#bJQW^Z;CSg;DV$WQ0zuT6C&QR=pf5}2)K3&+> z*gxRS6vd6mr&a_(^Q-+#$sv2x@$vD6(84OGD1}wNM03W?gvnm=sE1DKWgecn^Jo7Q zgpLjO7xSw9`ccX!LnxU6MajhygS5dV{($^BpBr}fw}tgFvi`9B0f; zI2S3KDRthN!xQYKiq!bl)Xzz^V;43jl=}Zg8;5?U1^Y^!@%(+qkJKg_uA7^DDF{cp zZpSq0#5@(RV8T66ee$dpWcJd(&-X6_s{*!g$%l1ye`X>uD`zj%tB?P!zUU8PId(CE zf%g5#*#KM-cm~v+G-czzz*g3_qr2WA2Tlbct9o1vQSYli5wyoY7-tuF)~-gOiG^v; z%T?xGqR(y{A$xT6chQ3*>r;_QbFXKw4k+Sj*K1s{Kc248uoWpD?>{IgTiM&@)hPPf zwJ!RWz*J&)~vxY%YkXLpgNM zFOSY>IfaoKs7Kq5ueKT=<~vt@H;%A0P@>)7;0RsZWL}EBKNQ5Uow+<$xL5Gw`I;mX z#psRK^xJhG1haOM_bNYIAFZr?WVvC-;T(DGcgg$ggujhaONg)axfa~y&P!%QlY0`c zQvX)*9R=+3I1W+~tc6dFQ>}Qt9K5f7t{?3eVSNcAl7f8fN_*3yeLmCrtHCq=tr|e? zD0N0%F=TRv7d>zpw^q<}Si!XEY91J1!p2k}w5=!{DQL*LsM?`voHjNc-SnWSIwX!} zcV-NMk~(v+UeEpjQC+*K8cb|!4Dd0fTx9vJB?^xIvMWsE}5G8V_PdAx0=E=%a zQS*2Sc8EH<@6>H2czXO;O1vu_8C{b2w*p`uWiVV+42s4(_cuU>6WLk5#?@vDTuG~=W zuetPxP2AV}hcEm?HU76~oZv8YZyWuJ>guN2I1(v*cI&8nK zdiUPj2*|>YwzdFAR55uUzL1zPk7+Ef&N9g1wdnRXl4o#iLdn$EWp`Cdo#|F!NoWHN zWlgtH!m$Wwd5BQ5`$QW^sFyapClc(2{nkFY5z5$N4IszK_DZSLHV{R;v&30HtVwJp<-<@${+vX)wUt^8EFUzXHS6 zUg}*Fr(8g?%_y58!r&+UpF*KQW+S()cn!XcqE|4SuMG2M&aYxrn$l`Nm z%kr-k|6Znzs2@qp< z{!%|@Y$G~N-NBtREjIn$j(nZ}a9qkv7Sc5ftxp$$xFoy3B?Tb{F@6xB{s1imK2oZG zM~u4xDz})R|K<6uEHAax(Yqz*4<6AN9}-=h95hR7STc0O>91 z);c&`o>qkrdp(s)b@#^(lkPPGICMyOJnOd>bxbPQMR>A~w2!TA$>{r7%(q`6OozXH zb2U%Q7~l=RXOUR}Jn7xce^&_X1#->m0`TrV2t&w+jY+5c{MWw3vBBBR@pW8xmRJh! z*08J8Vi8VtZT`MH0Xj0q+Ovd)`D8yXU_cN z=<^cBe-7OBDD~Fn@6>W%e^h8p|C^P2O+9uCJxcEGCtm`3o}i!`(xz^^G*6A}W~(OMqQT8;UK%YNW)G&s5%F+NSL=XP*Y3Nn_iVkge^zT$*I2xv z!3!z+*L>{+Q4|r*9eLjmF`kJ7J=ZCMS43G0+X%_)bP6b zo<_?DQ_!Z}OAR4PyaZA)#JikJK=z}9GrHEOK(dbNOqd^ibAT=|dLxP>^iqH^7#y#F zZ*we|KiC=*IOA*M*35OQj}07S{x)`&*p1gRbyp4949`$`(N*Si+UR%K_^R1UKZ&M{ z<-|)+XzZj%*{oivG33+U;c5JU%~qJ#m9Mr|7k$ z%w~ut9WqUz#g#}=89>cc-ubH^+|(xoCo!r9n?=XT;K8)bWLAXCKolF01|kEe*7+so zywjQ{`uC^i0@-E7cXvvxct547z6bmxO?-?wYJ^nb*8%ayK+EE&CX_0Q<(9vz)$ z)GMlPl4F9eL};N-=(uk2F#i{UVLArHwkA1-doTZJdl#O?_ZayWRoB&3`?r?`Uj**z~nDioa?~KXq z;d#ma#J0M+i!9kRH?EdqT$-3q4Jo@a~EQmGeN`cdo& zH~mNE?DqEHX9=rYQ-8!rB4zuyArNh~zHA9OAluGfP7h}$sO za@U&U<4;xK5oIiC_yvvU&aKmW&&hj$IwZvDG0bc>5~w0*O#TB>uS0wySIfPSCRV)9 zd{^xaIi{XplitIEoUpjJAmUb3tOh~?ua#Os+jAa=TuAaO8n&EvBK*>>{8ZKK5&}q) z>epql(+%m5v%Nwm{b8@`uKLMJ4}A43^?vr!NM5EaM=Zoq1gK@3#!>aQz-LrDZ&oeC zFUl1I46ugQ1oo8LHE^*t8^nKxzXmxX@D7d)f2oMV^`XTp2()2#k5M zwScafP3U7oexaFS1LV(7zQ75pWXyenBv>QAJmXsWKD+&MeKV)JC+ z{d!xf(S1O<)lF=dQAQ*R3i2ljWg3mRn`27*11Zr_-XX(z&eT>CBkCwWVzOo%`9t$t z83KVnl!dtNX{J`l3{*(@7gfuc?0t^Hbvn!0?F_KevIHd-yBy$sqot7{&6A&nAC0W} zTFA%d%{0~hRvR!QJ1Co7X=SYGl+o5txHv)Gv9@48ZVO}9dp#LA)rPC3HXAv>f1lGj zVLFh>9joL@?rw^zZt*J$pKVPXbQK2Y_Jpj(eC+VT143`X9t10TPl_sutesKF-8}59@Bzo%Qy$K#NNuM?zU+0N6>Lg#jBqy%C{&V>M{N5lR02 zYhd(#1}p8&vs`jJShldbwxp^wvgSBFHiD%7r*`s!t>Wghot|*5IR9Ad29wA!mq1%f zPfmyZg4S=LH1&u_*D=fuu})2m0r;U+V4!Xc@zTAk!urp;8+5b~r>==7Pw|P2x8Dli z-3IEi%w7*9*(5MYr6f(F%;)(ZbiBRcSBEnjIozZ5(k83@wCJ_nb;8r*oHzbn9!!5< z&N>)!DOTIZxkcEunyW7eU3o?^e_`wA=M$9M8s|5~xOq3&(8CWggGM^dw{|=i=dZea zb91_YK-yT{$-e#DvF@vd{m(=oP!BHcj`MlD-&g{~IAhHLR8y0D%BQ0^s&mS1D^Iz& zBb??Df+jiG8}qm$f`80@`gKQH}0$kp-_ay;3mWi1%V+eWSI=ujx~Ga)}nF%we34v>S;&3K}O zDFu6&`t2mAYqko4=bA0O{cG>q1dt{fah<6L1dSg{_WB=fPm?^s3MRsIW6dX)*%8*lhQ z>%;06kOA84`>sru>Fzj@sbgur_FUxw$B&OHlcvHr`AAG4UIX{IP%nT=n;|G>XYuQG zMAJ)UTDc%j9`D^j>(a8;Js5xs1GQcg0q%wtUTY&xvEI=wo)u!%&PGY@zR;bLdewx% zyL|43#uRgf0Tfantic>?naG)N(aZ+Cx45S407u}-K_opz=ppw*p2ZwMLG>caQWip& zU4yIrqSS=eda(Ffy5Uu&)i1``6PXP~VQ|ccv~)n&?+b2HqveW@6hIv^tF?gqxeM?w zd>U{28a#!_4#8AJh6W<7ZpCNZndqLFg~C zPmaSlXDU-XUes&WlT>{N!49gjQHM2r=*rd2LXhxJ)-N*ff`Nx;mxVfvczR_3Dh#H1 z2o2`56mySb3csEwq`gaC-%u`f&NOT~T?M|$fdPU$I!-`nN^NUtoR6u= zOZRD+F5(o!)bk%bULT=X9fEs2mCqZBn(t#6*^J5Y5}Y1zH_Bs23v4jcLK_j3EoP!_ zYm>=Uh0+i40p93=TJL?g)v@HZ{kBs$ha7FWIX!;<<=|q z({&gMWN?-)O73)T^$Z=|VfrmG#dJ2YNB_SJTpoEL4xAhvP>91ddi44+QRnH(ncP0J znZPTqB<*QwosD|R0HPDs)tWa@9^z>V_{G9LLRZW|&qDW@R+JIVLi_Le29q1zllZ8f zbz_qr)a~Le>^Gl5p8tI%M``uj3r7YJf$u`{!R=ytt-EJ<RKZ?A*5t4G zoxO>3U*bXo>UOc+$45u{&@0cu9{<&ogv&8540@p3oqwx%OAg7@VZm{Q9Ixp1Iqho^ z*7o{+dD~IN6tg^>`f-OHlr;Fba$M{ZMBm>ALN~YWO|GHU}5U-LUSX^>L zHa>+mes!B~ZW1ogC+*!@35Px~QIB(B0GR^3+{M`EH@=r`@iVy%+WPXzkH{0~=#xSy zm76(<6`5x}Xbo9&2ukj=TOG}jKEs0yf?hh$os@gKxFn*j$E(PgxyDR!o zOXtS;)aI*7dXnx)KfO1To9NEqswC8Xd7CyVbk@>u_2hUi8ppibO0`9#x7XX*Foa9N zFhnYK^$gf(9E5;($uM_qy1#BSv%w{FmwMx6nAzfV_<9?pE^9EMW^0ZnNig@kj&?3K zTnh;}J%;-?3PI9@EE;e|qGQkw494L2PV)Tx)_%JFc|L%8YLzSGa~9%7rzqt48lwGpc9R_l-?CULQ2rl$?(ep^or0Jxmia=78L3cjsBL z{I2G_Gw?ah*&?q3J?`6TWgrrkby;(!FY}&moBZ7 z7FjIUs_NHBFwc&P+VliQ9$>u~rqdV3X@d(M2N`qp^*T4eDn5IQTTdSsNJ~++ro#$g zLzsNF&k!!%cYp)+=?2ZHh%$c)A|eQF3)f5|w&mU&rpPWbM}PV3BjRYxfi6OqnC{vG zV1Crqb(mV1Fp+W)n;XP(?di|f>UHTzWxnl%^?anKkY}AN6#L9J*CS7)2`I{ue(O^D6DDo|d~ZV2LR_|RAPyz9E7 z$1lj&gX$yGgx;0w(XTfKizD|kjw%Bkn7U*JfW7z` zCLV zjG15+xlLwv3p?dL{1oUt7v4+79r04XMzKc!8hJ+yY0a-hHvHUqGTgX+m`us4Y+nU% zfv=`5#KMM@)uDzF-?(mOX)7m|&mxr9a_zYQ-YJG}a^_jB!)K z-15~Js8F#uj%Tr5Pbob_OrW*yKxwyxUi|^wPRTc9W8x^tCzKhzxL$EG|CLsQU3E#! zEQ0X8g4Ag9xpx_U+PwoUU=3-N{1*7|ySr48Oxf`rrG_~B7hQwo>5IGOz^+6$0a{Q# zjai!IIxY_THZNxQy4~A~(z?8xlf8_`s%rS- z4pJvTQq7y`nmVz*6A0_hsz`NqVcf+BI3iTnj8y?>X7C9=h;Ijbk{@%rj-JS*{407WQ0MX0iiN; z;-}4QGTiC6_LYh=6E9DLhFp;EqQd@^I^QgzArxm%Bo{Ok!Cdzb{;`kI(GgL3UH-UR zKK1wr=a{hbKx50;x6Qx{Nsfg`Hd3nyoW9TF8gBFpulH0^Oo8%7!7h$Ip@bO<s8UtmzWdZmW1&IAB&V`3tr@v$4 z2m46=P)`RCm0DR-?%kQ#xx2Hov+VGQ`plSPsl=74D##RFU41>_^-SG8NT07Cv~XtK zSk*{THNs5`4tX#zdqoQ^NVvc~{cFiNSJ7^~-`|Sb^Qv5Kj+fzOMCJ|McPdOngNwIy ztj;zS`p+-X~F`}{V% zOZ8J7S;I^uD_p^P-R}k0PsGe6w<}Z(&Ix2aZLMLWY3@Q`a>(v=!5;vA|zns|L zA_C@Td>&;%9y<%T)BHtOUlmXO@4h#lO4$b`vB{_I$SU|r0D(u<#MX4OG3w7<% z{93j;c6C-@CX-;zNTS&XqJZwZ8+Wl|F&*P7^dxO9Q~|n9P20COk-&MZ+rIDAM*3|C zhEx^ktrH^3@XK?jd6DQLLGvV}hw}WcuCb7jVt(e$GF<+Jf|OZ-t26Qi+!C{tb7bkZ zWgkye$kge?#_Yuz@^Xg7wi%$!WUJr2lTt^2MFE+cRmX7+2E5xWatq&-z(^dNu5 ze#7jMHD?^DQzgGyPI>%#kZ=t(h<+kBTl-!H%&0FZ!5f7j2cMdK`kC(PW`3(!{S)M8 zmyg^UVUMY6^97jZGs2$qJsa$u-*V`U-Oxg}X2Bbus+hB(ud4OV0mn+=@58!;W{i`2 z9a{k>b_RdGBEw3N?Q+s?P)XsQ}el3|g!RY`b4mK!s z!lU`{@Q_FT-vE3|Lbt=mXUqoEE#4Mcc6N4n5^Oc?-iD`HkfEdF1tn;0d!Y|&O826-=~(e7k1E)G3_4yLKFp?4#VI&=ChqAyY1de#yenU^}-(ETd2nf zf%-5bkiY1{EZ~G5y3sp7n*Q$}&vB(}qM!1<>&8LtY0J-0^u}?9%_5jTg-8kchmJGs z!z5kDmqLds7$AhVv$^9c%ybv4qbbqi;_h_bhp1XNB5lH@~-#tk22DI z`CIuF?#3Lt#zBs)dtoZUL>Xq>S}=kbg2-3-*-T|T*JN@`Hhk_|QDXH54HgjkuR0v? z&6e*ZBWP@{`r_0uMtc&^H}{rbjoLoZLpks=@&oh7W$|toS{7`R3o$mG>)y}&rWyn; zk6_(vl>pLpVnPbj)Vll=1X0IXu$Y(-^}|zNi^_W&MY(WZEMI3`)soCu9$0UhM8Zi6 zQ&W`g7esB?G?@&*2+dudq9p}C@&Pr0on+N@c)AexMLR0kA4HPhxJpN_*8&t62|dJ8Kx7})25DTiMCb@#y3fG^TLFSG?aMDJbnoN2lB zzUFd>{0-dEe8HrOn#+BrE(Fn|ndj6({(L@0Dc@!YB;fzzupl=DPOZ-c+Fsi)=XM2# zR+9FpWHPy-LAuAZ6S~Z(?zlU;K_)&Yu0y%sRaC72l4X!bvmPt4;HD?kki{*>!$iIq z2WG0;A(bOV06i`pU+M$Tu5i~U`X7*SINVB5-g~Q1nH8QGLx%0d$zEc&qelGgt5@ea zFUQW!`8|`kzLZ(v-mlgOIvr}17?2ZLD$q?FT)yC$J@2XjHQU8LHgpL=NN4L&at3Kz zmj5Jq{-<>w$Uwg1(fsg8&fPp^mvk={Ke8r2A6<2;reJ z&)LZvp*)G)$z72(5(D7j-hxn4tYGypIbJxK`%>4)eS0Vr(O+yckyrgu?ypOKt`w2u zVy0$SzY3DOMm67GZQrfsMyVf{fSptAKFXcWcquwAxiD_aGe-U^e|dzmWZDrcjGS$+ zcFb*Z$#7Q5KvE%nG{MY9 zDqDEVE+8pdWKR3q(4Y$s&%)pe+X%HbZ-!xAV7ynJBHMLq(ujE~#bMx+|IDx|TPX9; z5Bck9MD4)JaVs)X3_H1~5_9L=*%S_yR{J>qe$7HdL%uz15+jsw7VsXaer@m8b7WIz z_EfUDVYW=Pzj4qsl{4YB`jsd678(t!*GS>s!=@554TzsOV~_rF2p~M>Gq!(q2*GZAK%f%LqN)^yeBpYB#+`JO^MTcyA#4 z$W(C3PlCUS6#q{p-(}f(Z8n<}HJu+jtKM|ELdC#gY;F1(&a1%HtfZ(PZ=(?O#MXkC zmohZ{04+=6e(3$4asbZYfuy~NrN5$Uyxr53$gaM9S$y`9DPJ#^5g&}?hJti>B;+fZra#@B1l)#A^(BX6E&k~V1f&VLerJt9J-?|b?C3z>7H*kGQWy!hQnW5 zU6k%L_}5i@;OWUX%CyRvE*X$?p4e`a@)9vx@^uu?HU**s%x)5TVq_l*WF$}B<@(fIrdy^0!>prdVzQe-PM$UQT8LkU6P^1)h2IVU1M@6 z*YKc+)60iamKCyB_s!?K$r?@NJ<<+t!dR3Jb#5sC+V~+7PZ|S71j}lC^Jq@%@(LG6 zg3NX!o!YF=YqQ7N)8vawjrq!`hM&?E?qVzwyZYd|F7%!Xilm61YN73i863)P0Z|T2 zTl}i2P^yuIq|vk#K#aKyWMB}Re6VpM8SH;~cN>i|u)*O;icHa^q6K8Rxr@EWZogkB zR^7=}+cA&$8Zu+rgl`E>7OgtT8BV@c`BH{?URklIy83alQ*R_jdSFcAU(@ltib*d; zPJBjri(9tjp+XbK!5fQy8tP-t_yVGvLkU^SO`M~D$&m{s>1czWlhYrmrX()>@MxOSn4>LuIbH5tE(ALDXXnrfAXl zKj2o^+nEit4q*s-!kgd!te5|sP`YsGuI*lX32vmex;hOUa50=xT2l?A#eYD)xyiIk zMY|h)+MiK>Aocrvx|f-L0?#&5*VyUahwAFZfVN35{buK7K{T9|;US|~`2joPRi7n!RO zO_6MtUjr4z>vgp-54d92c0yb6xi*^nq}ym~DOB7`zL&dmu7IjZoV^>*MN(_@D2cbz zFC!mkz~47mUKP4ra}EyoR1@bbhUJ@|N1ejA8)mDO}`~U3oZYN9* z-Kdz)_+Cc({wVFfEoi6{c0(opw)@={&+&O*)pG>fR%4Dyk@J)ny1wSGo|n2B4bG?- zRV}aql{P1_7V18u@_!13;yo{qSUyt6^4+2y6RJ*o{3R~m(^S6YR&^Kkz%Aox_<^RI22SVT{rConjqFh_XP&_g$xYtmYDBx zT7eDn_q!de@h?>8N+(u*Hi%wk)(QEqjPBT&kw(|s*F|^=S_ccaeOeia2icx%$dafH zf~@?dh-H=tq;h3kkv)G(2VmBytAE?*(=zT)fqQ#CRVDu#?sjoeKi_#BMoh@S_7LzP zmt#ZYj_5~+Gl#M7HbcYqb457Ug_8-`(b#Ry?eNZb;N$jCBjeT~56rAN^o|h#b{Lg* zn)+IxthiTN__hdX;eYMS;pD=Xto)aT3>nUC)>7({-zv-lMpn3784pKNb@=VM@)*bN z<6D+iY%68P%@Rr9-{i(N z3@>`6^4hD_Dum++;{3EvD;m}ND*u{E3CrOmO)n&BEVwrjLTkq5aj6^|EX%)Ikv4uN z@(z5xW3Rkd)0W1RAy-^2{>Z$a&Z3o_(OUr-Jk06@?@O_fCsRI7?&&Skdjgc1nAzT= z2a#&7W`-|O$UMJMegs+Lt#WdCm=UeXrb3s}UVbcC5t**dxu~$rNz+|u(yzLIDzVKq ziZwlRhC#`9#%!pMG7XNl&wH|P7q#&flC}^cW!K4H4LRSyWrxZjd$Pe~n=*dQ20nmu zDPl^_^!iV$RrkC~;QxIJY^2jnV%e+w`N9m(ns}S(zn*(wHwe0HtALn%Rq#%7NDwnm zeVH?tNp3sIRNkzmAO42JwZqJ=O10x?u-tb$THM#mu+hR_SC}Brk%<0^2k1u!8lE2 z0S(n$isr=ow9d}X;z_#`=eS?ff=Zrw55x@Qt5xSNS65GYDQdHODdt-^f#^xqYk8h? zaECD!rfB74J1ee2r)v@aPKra)BnB497Ear<=A6$njw5HOp-lrlxr-1JSR_loK#;+nJIGofwPp#+vLKeX*ECX1x_SC__zC3og8YE__CRE-w^a!4vjbLE$2qEZeQfeuqgPt2g2h=HDZ9Em;=_0Jqqu>z zc)O+v-reI5Mj1Zomk-^gzj1`Oot{zIr5?jj!Pr%QK2F`a^<;zbZ~z#XgRJRn;Vvu#)FdQU!>rsA1#m* zx>K(csR`BbONo(j`LFo%hg{mMVGV7o?I$NE{HtiCzHqae35So%$KM=2%IvwyWad@` z`Z)`Br5;E6st!W-OmgcYjD{t!ZE0)h7SzkyQx)6YDzxi9tAd*=Q6A7MG(Sl$6&+|4 zjR*27?hZWFXtb6xsvPe={u6ufjpZt3mbP+Nhd+O^tXp9HZDySU%5Y@nt-hDq&&FL&_zQRFrEe%(V`H6uU^@|P%T{7&1qdvDHwJ|E`x^~ zo+&g`*q_p(Ybd+jDMZ!yN=5}u#_65+UwGIkp*Id1kQ<&}x0yQmu1>Z3yRm3+g{TYWVjJfHCH`{F`=t;Ff_lvRDuo~cr2rTEA+26&-i1Dn;p1Cl!kus|8 zM#6^%+l2Yp&dLa=)uL|PD<6|>Qnp^}8dv%7G~gfaIsZa&r#N3A)46SyOaT`;$~Vo? z5JUZ?5G20zLyD0J3GmKa8ZOdA3@aMUUs&c{a>On7UK99K*e0tCdZ{AyzJd5Ep`~kJ z`xcG)nQB+aVQl#hq^aE-T9We*Pj+w;J~=4|-(1a>5rYNRo;7$dBZ3y;C>!`A!EZ*H-wlCU&yi0!aITJ+|#nKySr1MhgH+rsF1r#gT1ED z7VdWX*gok-{D^aHTK7e8w2;d_f0oH}*CRepHsDi44G>+BABXY6`Xtm*to7@pHqj1y z4OlWf>~jNPR@3k|NfYVsO?UC;)J<1=VT?f7^^mx6c zO-QSm^z{T<6^j7}$H(61g99|K#FiXfheG?ljL7p`(|?;X4~SpEIC-9c1& zffWs5nkZXf8G9@_xLlPO5n4Cwm6D~O@ik-Zn+!8)17WiBAl0Jp_Mm9h%mrbKAAxR$ z#9uT$Q=9$0yNA?lL80(Km$5JNmSer{?n>S(z0rVi&fl