From a51aba9551638d0d35d48717e6c3ae24bb62f174 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 4 Sep 2025 13:59:36 +0200 Subject: [PATCH 01/29] First attempt at invariant encoding --- cc-parser/cc-parser.jar | Bin 383824 -> 384278 bytes cc-parser/concurrentC.cf | 1 + src/tricera/Literals.scala | 3 + src/tricera/Main.scala | 3 +- src/tricera/concurrency/CCReader.scala | 278 +++++++------ src/tricera/concurrency/ParseUtil.scala | 107 +++++ src/tricera/concurrency/Symex.scala | 249 ++++++++++-- src/tricera/concurrency/SymexContext.scala | 1 + .../concurrency/TriCeraPreprocessor.scala | 33 +- .../concurrency/ccreader/CCDeclaration.scala | 25 ++ .../concurrency/ccreader/CCPredicate.scala | 23 ++ src/tricera/concurrency/ccreader/CCType.scala | 18 + src/tricera/concurrency/heap/HeapModel.scala | 36 +- .../concurrency/heap/HeapTheoryModel.scala | 15 +- .../heap/InvariantEncodingParser.scala | 59 +++ .../heap/InvariantEncodingsModel.scala | 372 ++++++++++++++++++ .../concurrency/heap/encodings/RW-fun.yml | 68 ++++ src/tricera/concurrency/heap/encodings/RW.yml | 70 ++++ src/tricera/params/TriCeraParameters.scala | 9 +- .../postprocessor/ResultConverter.scala | 15 +- 20 files changed, 1201 insertions(+), 184 deletions(-) create mode 100644 src/tricera/concurrency/ParseUtil.scala create mode 100644 src/tricera/concurrency/ccreader/CCDeclaration.scala create mode 100644 src/tricera/concurrency/ccreader/CCPredicate.scala create mode 100644 src/tricera/concurrency/heap/InvariantEncodingParser.scala create mode 100644 src/tricera/concurrency/heap/InvariantEncodingsModel.scala create mode 100644 src/tricera/concurrency/heap/encodings/RW-fun.yml create mode 100644 src/tricera/concurrency/heap/encodings/RW.yml diff --git a/cc-parser/cc-parser.jar b/cc-parser/cc-parser.jar index 5a281d96c4bb9f4dca667c707287a08eaed1ccf2..aa2abba4bc3115799006fe2c97203760babdfefc 100644 GIT binary patch literal 384278 zcmb@u1yEjF(l!dg9fG?%!ChY5-QC^YB{&3km*DR1!QI`1I|L69$p0qi%zQI*|2g%Y zdoNWKRlC<(d+qLLclUa_Hww~V;AkMw(9j_JKE&D}|MCL^0uCZ8sv`J7QcjHFZ43ki z3`9X13i{WGcYh93_^*@EfFu4nSyoU^QcP4?g0VsXV}Ns88jBb6v>ClNme&b*G{0n@BDKiID!+nE(h@U*PUTO zK!CfM{*P_{+MtV*rLn1#A;W(k^=p6s7-ej4XYA_aWNK&Z`7bm6Qys+rWyU{eyXYJL zp8kh6*Z*T%?EjnTf=13RPKL%VYL?EHF7{6J#x{n|&P~~#S$Ko4!yOUEA;`P$!jTL+jRRRmB;^4_rzSRTsGzySEJ5JX*yht8H)$Z9qD2L&5_Bjm5zoCJcGxK!!ib z?$XB8?Sb!t8yWK;6RzmmZ{1C}EE8UJUA(R2CN!Qua`aSJUshLdpXI3Y`@B`e>`g4@ zW}ni{g_KPR>7LK%g%M<&+StBzNg&BDlCE+5)ZrJ^w|JvVH*+a(NJfN5&M=!`#g$QJ zmmOqPonMe)vCD`qUNy;pnYUq|6fJIBVNFdtRGQZ@%NUn+4za9eom4GuTVq{LJJg!j zG0!-Yy>*=5FvyTkI~1GWFv-Z2b&j;OW1F-sZrfzdWu3$?ZkuP#WuDY6Zd+%4Ogq$@ z-!RX3k-ZfN^Q#r+U&td=n`(x8{Zd1(Hl@a5UZpy(&%GAy z)g;rgXIDLWp1+|)>j6%0HCq=tNT^EZA+S&6_G&Sp?|iCvOoY+fl?#ua;aKx3rlUdH zj*-`U@vB#jf-WQNE9rsF@(~i0U6Wc2;MC(#{LY;|ZE+j-lMGm_bQf`pT0~{_!AWa@ zO2h3+U!ADeqbuTK;JZbXuJP0QIzlf(S2gjm9PNqjSe(AP5;l{&Bqh${l+qNruct#X z&m$(w;kXK~c*Dx*=MCunf*KD_E9MA0E6M>;ZuaF~2VXuQpmhn2e&|r;CwtU*+y{`m zdDAN&vDzCMYfwDy8Rhw$U(wYI=r^6q-FX%O7T0|OT+YvIEuA!iv}NRT;C&?vE4B>g?h2EWrk`LB3C*m32(b!lT+TCG-#v+UbQ;K6f*(J<551!b9K8TsNA4>6Epi{!?2$CS*L@TZpGf$SkKUviww!(*)K9Vq?)sZoLBwg zkzDiv{L2Qf3JLzlk;f6t5!1vUSb_|0Y89ppU8|2qm2{e}l~GPIOltUwoDVJl^V#C_ zo5z#UT_ohJahY86kMv-wy-|G*hXi4reR8>qtVJQ+KYF#2eNqmd%BA6A22}+u0~=h# z_%V!411iu1VAO9M&}rdx(lzY>)kdbhI*YX%Z~4=zK;@Y;_7BnS-L11fW79o>269>d z^f*pT)jD=wYOfraHo!`7C+|lZk@|rqrgM{H{2f%YSIYdODH&a&J@yH0b}4Q8G>e@f z_U%)1hx*VPO-Qc;;tQM!`HOWaTD#|YO?$OL^|C&^bx;xBr3X&mdwKMaoFk-yw$N~9 zA6}dMk0JopmQs<=aK>PiboJ^HW=F;Iy9lv`>Zvi*iLl*Gc zq-w^}xEkj>PbpnBr4!U@oQh{Il>zo(2$p2M8Y90%JvrgrGS(u>ok$=58{f(J@63ZC zvo3(xbX{dFZtpb(XKBx=oQ&r{s{p@LAI~CnI4s3p{QitD+X|%HX!BQC3hGX|M~Ke( zN<+Q`uyEyy&tDN8iRh3P0*6L9U#!s1N}wMs3D3mRyX9X79!IU;4S5Foy_Su`s+FSh zWxv9@-hh#{u}FBBI7e-?<liz#Gx#jLKsu8A*PT&YeXa)t7AgPXqj!b zn7k(>PE&V*YEl%-rtsC9MaDQ+461e!A5Fx6CWuZB;cH6CdAs(qs-o4BWwOYz&WG{s zT{UtYy?0LATQChV9tS^oiu#~{F+m7_Rwsvg_aq$IY*1zSiQ^oqLYOLO(yyvaR@Y%r z51YAawq`}vviEIY{b>HNq>3UJkoq-C{lxjxgELLR>1OoXX!;go`IfO|0E080d&>Bw z$U}F=T%cnU2~}``F?p;WuQ;LlhqXWgp3SP5{RLxL%O~gTC~Cx)wy9=K#Ld-mB_J-jCMfPjA;rFt2L&hhi+|WLt+$6dSC+68jIE%x6IRwId z_%IVN+I?(3tmfGJgTW7!!8&dJ=pzvCw-COnH-SvAPwz-+%2+?7CjyMo;}tD&q$7Qq z)R5b{gU`aCW0Sh@mUOiTA-29gU!X(L++B-4F454JrErkrM;Q*4rU2Eb%LIu%uey#^ zP{WmODX#&i!IRK^xKK=g!orXNanL}CJEo-mbUqqdUr56))FlN$fRTSCEv9PI(QV*1 zt8SS6ihY${NjCM$D<7phdb`j}iM?C^ds{i(N}#HAJ5 z)sIzr?8s(TA*KC~KfE0fbmnnPIh$5i(qcV%sUb~x<(Zjt2{v2%FHr&0BZs(S3A0Vz zDa$$~d33JH(`mp>5AoJ=ML!icn@r$xmoO0mpZRIeQ|FVBtIOb9a))B*ypN-XcHq(@$jd@>#hA(w=0|WMU`TPQg z3B=~C?{R6SubO{*LJ8((gy*OMqC7)>?S5IyvAHOJuDz($EJmfMd+PBZ%w3a(Lh?S% zEY#t*0asl$=5{Dwv1>?Umt|LSc~`N*mQR5QkDVz|&SDg)iUaqIOV zIPwz;=ssr};+YCo;0~42tBN0Ap&Le>wpW|{fKTO0!PRvot2P+=Zs{w}*bn!b zsfDGd)l(GW9P<$B&Pq76puKt@UiWU;nNt{7^;70-oDY*}D^q#k%evhyk=C8F6BN_d9j3H&HIA|A z^z`0~5pJK5d{hQ~4y7Sqs^H0X`5@=oX?wy;Uhk)J^=qsU�HY;^r0Xqfxo)hKCYv zZ135F1zeVg{B=F^iPkBE#dkMwmDtN%amgFF*bY%|yCg$hia zDIaIC2))c7Mfq}IsFg=0av5*4B^6a;l{gnyG~aR=yD`cU?nSNkw$ggpC+tip6L9f8 zE|$}4=bCgrXEXt*eI8v~Jdc=PJG?lLg4$~bl#wAt8DgE$V5KiTPxSl8TaRpCA9RPP z#!l9w+EKU723j8uZ(nsbFSe%#Tg6ANw1e8`w{ZqEt40pI>)O|QFeCMZKjHQ}iq_=W zpr`6wh;_=^0n|Hy;2(z9-mb;-sua~>K1G;XO^s3{1nO$ERTIxT%G#--ecuKLqx?=? zoN21qRaf#O=qRp9)SH!R>PF(bY2aw@x#H%}+>BeyFSkdy$^y-u)!zxPV42CCb&qo9VT4 z4C@TRw6_BpN1OHQVA1|+4_xm9aRTK|gsAY*H!?if$Sq2hU`&a_n{)Sy)~}^Hli_X0 z;s>YANs)jzb+3NAWW{C)!k=~ZU)MGv>@)E1Z#+m%Bb&cy%5$D$ZYT--tmdC`M;=-W zEYVs5xAQb2!n@U|k;~&>OqfaSl#En08uCa~6ZN80qLi;W_$Ibg+_Cic8udd9(_3+uBJ-PAJr~v;MHNlo$D(58l8Sp?et*rrbM_;A#LSXcAQ*tB7RqZ z|6FJJJpX)c`3&<~=ydnvb#fcPBFm5dI>9B$Zwn~fW;M?=n_(3$rcO88UMK(9;gB=CPp0I2DEhyjEDvcouGpJ*lnky$)osAIfzPrPGod&L)-u;Q6CM2Vy=EQkRelO)NW$kQPRlUTs0IF5%5XHnM*F%!SSDmuhE;A73`=#IyXnWVZPqg_Q$U59-F`K>CB$T zZ(7sDc%|j0N7mZ6L6{+C;MA`2?p^iTY?u|db!^_;b+K_QKCjnZ!0R4NZy#KJ(==a; zgc-e1bb|QKxp-#Xed(lvhvNuu+Q&0idrlO%*9-4BS(qw~RwNa+7+JaB4!R2ZuX{RC1~ zA{a*OLY&56YWN17ga<(wusBRFN!Wk_3yM=9C{Ef4`k5Jl8!``8Koy4-Di6nH-UDNk z6_cDJFjiKLu!F)k%YO#^`$|?wEUMxS$v4Nk#o?&J*br#lcL4gyzG0)JPIw<3yZbur zIdMuMb^ln}hHtYW3F-l{6;%K?`DcyL88#4I=^#15V{ZTI62WnlXHEf*na}9ZzVF&k zhUnT)Sd%(od^T+E>%`}VrGo81kJWG*Ve{6%{J79e;|C+>hXGvHKCiHx6cFa|fIg!k zXa&va8oXW7P2_$`c=V6;t^xoO?i|^L9zk9B5xAl9pg_FhAhRQ9ghBXZf~JIzQI3nn z8;*-XlYHQPeAZ5lYYJlpg9)IHVQ^FgjwSs8!a)(xd=NA9tRuq54IsWTkO;(gp8nke zL7^zmaQ-=Yf~3&CD4%-@1pz|(?~cb=E%<~!Ld;;`xDX3Xzq?yzEe)P=2H}$r5<~F< z{aiEi86>X<^tghRO5|A7UoT(K7`h8ye4SPk&(<{Q2hR8J?Tf?Wi2y5TU$DPF1)gWloe zxL^xyhkWoOjr`F4j{GOK&yUE(VSpr|I_Vvsf46*4wcs%n$ZH&=ZsbfX$g?_*3%(FP zyW+~u+!V+3yne(>V~ zu8u(d6S#@KQ{$e(SRUkOd;hmE$jwhPJO*!@bQ9Yl2|wWgewO!jALoXJ=O&};o z;5Zh7c4KxfPo-uQ11tY6u~8!_W!DgT? zSO{MDdHtZ=fsnp%d8B!nF=P3e-O&jRy~DF=ge-}G?w}c_uf}p1fGvShU z`q=|DPtHGO=5sE|0z@3&l&m1Xa4BxHhbD&h59cIa2p_tZXHMRey$``eU}_KWoDf~n zGnNM3lyJ8_0+JHp$$Z2Bl9N6BU?O6*hhU&Iat7O=n*%5n83lZswZC^XnH#P_2@KX) zMcqZa!~Ms&R}5l_a8(MJ>lZ2*n7Vq(0daEQABezfzy;+5d&HsN8@YlaJc9|*3k0zq z$3hE2R-R)!z&;}rBYh^uxuXmwI#7K`;(!tTStA^GL*qS`8Hgr?`A#KY5GPL&i$M@_ zkGvhJOj>BH;+*>Gyf7B=&j}E+g3wBOrt+T3$Qa9|I0AdD7BoU}do5#I*&a?-h(ISbQ^X2g;f-cecj|-_yvTP7>t9_csIgg49VqDLiV*}q?g5mI zDy3lKCQKf9-=PQuTq3 z9m3Ex)(g7%`wm?*R)zNh>DN8Qir6+u!hahO`1|%~z^8!y=k7{NK4<1kPK;sxsp3|Ag?7?0opuCj5TE+@Lb8H<&|Q!-XROCA!GGS(&^PhVy#(LO!v1MAtKe?9 z8C+KA@ti*lQ~X&k_)jI>6NCR&F*P(?<)1<#x>}__jkZK`hw8rtG_HFQk*(@OBO63^ z2y$W7SWa{CXIE&!weoXIYuG+mhIsqwhyqu0 zpMg3WP+3KtM+*+oKUD|m5)YymfM!-Sofc7!i$pfbAItd!d{`#sE3i9IgueGI5M?Fx zB{|g4(i3QfIb%6qzlCvLG~TD_fwcoN=?e|gJgh(|>wd;sj`c6;e4MqFclB?naCO;5 zn;9%{8HCuQW9r}I$WqsGbp9BpW99Aid)yVsj0;XMx!IaYV#%=>J6D+|SL$i81Q2%oZupRoEuTwX-wsrWN3V_89W>pbfMusM?Q|oJ)DXY*8Rw}9EO~< zy8t%3XYg-K3~+=Rd&R`Q3lDdWesfSut(FpmO?m}Efe?>CH}R3m2qKYyW9K!S z2U9~={J7)xpDGsAI4B{8Sa?8Vgy0LD@nmG4o;ET8geHI?im5-pyXeae`Uv@}rbqw& z&0ik}1mtArUn^@f|53uC{9l%^JnjCa4)&jAH0J;PB7(vehIW6{z_OLKtx*Nh-Y8a0 z5+{qB9uB)?t1`~TFcr~cpo9I9CD1cwp!EApSS*|E+|Tr2U#Z_fb8kL>h44l8y%+yv zUILnTA&e8s*TQ$3eU+8|bo)3g4ik6B;fHd`jO{!UCkLe$3rd5t!Ztv8b^4_m3Q`WR~T~1Ou=@W z@4o)c0xcpus(p`3F=$8AGX^%953=Y038LR9OsXpa35w+SIzT#}uEo|7t&B?ffRECJ zgx_FhJ%=(dWxQV@82&YVym@Hj3~A898&>rU@0+n*+s1l}9ui`(tjkmw){Us+o!IuGzkY>tu?@eD{@CKg@n}y@ z0KRp*PF~P_yC2@lZc*Zo#SF<&ahQY{2o;z8xMjmHCZ$snT0*6zr>!x#+;%(cL9U~r z*g4Z&B&!&@*%OYtEO%xE&HH?3qx{`>A!45h3Z;-#dX<<}>n*mZB&y_H6|F)lA?Ol1 zg|;x18bKz%Lz<=O$32rdr%ISf2F+kq8%5VA{CGdt=-+9n(nFd(G|X~>vm{yU5Y5Y- zZ<$UnnqW)b|HD6undzgjXDs?HW)l7$i<0VdHwlZR{Qe=h9RhZO=&6<9jV{G!1S2Qq zhd8BWn2eZ@S_X-YCe{*#=lk$g!9Vdobp@zOCZgm=B-^|Z{zCSN+B+0BV7Yo7{10UR z-%H(We*=_%mT3RLWtEDwJgOqvn_bDpjG>37-YzPHr8&(#XvRvY0x<=dC<3y~#=`o} zyP$sfDH+L?lj*NW$Hj26;0166+8+~`hMdFRBe*CkV>s(^)m&vc9}QnI=!44aGvgA%h85$3pTA;@2g?tr3>q} zg~>hoFx_O;&7fm_RfDHi=~ISt-uA>yo^GE~_+@6gLh#s`wh}M(+T_xxqD{J_pV~Ui zxFdgesTq6aU67UMRD8k`GeRAVexG2hX6nuVZ!r%MEJb6ko~|5&JUe|J+h)%c^Cgin1Rp8S4@Ba z>_bo^u}hG#Fe-yMiv-R%67FEQeYzkqY7xjH8PZ2=M~Ex=R`*?!SuFZ^F)?&13YNC{;LWyHKo;pmX(q9jpB7<%YJDdY|q zl?);|)Gi#&y;FuX8ZqCz9}O=4gagX0f#U3+3G6~^=7<%N0+@ESC-%vPKW#<`yhWrGu??`7Hy7kimKIl0VA2JkjZqbH`b(VR9eL;ZInD(eE z>LLqYxMvg4uF3bMt_)FWQuvPh0qK`zZh{wB$Us3r?7;rYG6MgfEc2(6Qj(PhV?y>l z8Lrl?sM6x6CjdvPf_mI7(}ry#f)>sD(3N6?BQ=(hY@=2R^)r#OH;DfWA^B8upngx=t^sPV0a_mZyphA`uHP+jP z`gAcFQMv4WGAX@FO5r%srJ9TjL!m~*6xz}b)$B5len01+KcH1OB=O;Jdm|=f8z!-B zDxXbfx~#YYZadK%->>U#b7z{KWb=37|+k3EV@_lZl8V$I(E{^{z{SuYauCZmB=lHR*}lW<*CR}4uhfBdb(Ll8%a*V%Hx4$0K323RrX5gQp8~&6 zH;?eif)j&b%RVXcbuI%11q~?kohKq=L5#CP-8b_+cJ|zh%n@!%^q7ca^aKW(hUSu+ zo_zfcKi8=GBWV%B^E@(0LTBd+rpOuGZ&pGj-SJGyFzJL`aGmwXd;*XWV$NZ!nnze} z1`j!EYcw;Ym&O9wS7EDrN0gMU5^F!E)JAbNY}&bs zbaYxh27XcjZ6o#b&sxQ+MWN_kS*n$@?xgcpE9ARvpR~Ew&8nAmygNCU{jx{w%#++p z@m4V^MCz=#K7#&2Q)1~N)Hx7M@BV*FPE6bk?Tk%L{(SG1rGLTcjoopV%=P&*!iWnC9j#mI()gqMT71VALlny z0kKV|%Fn&u3Vo8%l6@gf$1kKq(=iUbPzW9imv{Iwc{S;Sd0|wNsPDTEv;)o*P1j>c zyFO&Tbl+h^q8^cBd+2~G8fAKC%`BlVXjy*=+h}ZawzzzNR03}r6U7wnw#Db>h2}GQ zZ0>IHWGeRjRCCQwwZ!AyB-gMME)rs673+iQl&Mv#(H;Co8*0S!b@v{TU-CJfXZLMZ zvtj-KcCul{O;~>9NbRm=@&|&fCoge4MmCrpwq$_%%5ypH?i6ho5EH5_hz6Ea- zlCc|PD_k%QEUu%3QIj0DxyPdB!6`t$?!h&#F<>elg;pFCV*iQx3!>=W-)#ke&hF+f zA^LX?b!M)1#{Um|Qn=2gbbGW=L%gSqgOdmsiO&z0N>-v_Q$zyd(`~-pb$Kv0BIi5) zFMsDhAnYLEa3D@Rv@Y?vISjh|fAD#`ylf9bup@{;k;1~LkTyW4CbKbWgzj$aI6dGS zxG%*Z>@fHtsY|B;g)((aT)ot zge|kvR?^YPfd$S?R&Ys0X~W1%{iYl<#~w6$<3`r6l9|94i}*5kb<-`K!-^?H5JC}= z4)HFJwy=~`5{?c|9(;=f~XJ}|8pGN-;#G|+bdh?T62F|fYy^_!@mSMOMyeCtLt zta8~Jj631%hzN_9ztdZ8$;pYe)cb0!13T>HUa@4mgi}WqFN=`CKzgZ!dKiiM?V})O z9;%aLZEvg?e)h^<@0Mjp;^6ye*7a)={Sh|Gw@lli$3w#?6XMu}5Ev7>6)F~$Avyu! zv{H@M&@&9XT@2w1{s?mmU7<6VHkU=E;p?0{o(BOJzP+uOlLi3VadO6;6~e^8Bw6HI zlw?&^{FJ3_T=Fp5sO4G}ks#d2T5j+8jX2rX*$Q@o$TDIAjBSko0V5IuK|Av%6wP#bH!f$kw3j%^#-tPsYP&OE}D89J3B4LiU| z#7`)ydQQ5h_@{)ABIpYD>5y4uJX7^DTTU)5Nu2CpYcc&?$MJ@_&7dF^L3KWvu>XZm zol=C;U-=~?i zR1{Y&=Z3cRQOMPHz+P zgYpgp!MoTL<`MIUiQ1gDCiY@nLhk0oyue#GA5?%odg#-fxFQwSjw+^{xnSq8C7Z*X zTt_(IGu`o?gwM8Bwdc9hlO>km@Lo@ zE4hXqg{;D1@W8LdcoShCW~w|L)NUv0Wj@+OkhLK@eRe?$ml(eJaNq?$RJ|u*KYZBD z;0wvc7U>LW#TuuLV$kH-C+|6UIHh=?dL;s@`autosZe_fGw$)v80W3MyZM9YM4k*C`W6pI*k`EtGg&NvCsjFUTUI%=nTpH=0wAYA)SO>v9J5 zCItNl8&2~kjzk^40rp6q1yM*NC@OjA1@)*n5%(BmwejQ^*$pF)JN+sa-gHY7!%UZ| z_ay<-GwILJ`SitIDDviAuOsuy%O@w+8qlF~7}+h3hau3d!m0o!_Cx&@_;y zreYA}GO`38pRfnl`0lMm_}rB)j1`;sR70xx=kGZG(R8j}7zk1}h`-7jS^h@WXeViB z>GF@H@t@R~^Xi?E{nq+I`KX;00Ufj*ba3D=YHZ~fHI~(^-ICd!D)mbF@6;H3fY4f4 z9P@eGMf#P`(Zs~|NB)nXD}82&+)MQ{3KPblXWW+uwE-_uyffEvy$-yTF0E&sseY-3 z73j|~ae$hLZc3mB&Ee!}>8~zj_v%eox6QF{z-F%A8?DB~XQ`zKqJO@ek$!x91j9~H zR1P_XmzSDPqPk+TSbtqkFl-iW$`K#tJ8}1zE|SQABbFD!C#UH;0+(BPENdt}lKi-S zAV>rT$t1gJU<_{F67!w9rhS8_wEGxe5@qcmk~q|6o$H$i)|1GYuI=N=VAc?M-E(s5 zB6o*diQ#fGRiZ3dygkro&Px|bd-NDlH44*joqtQ51!oE4<;08O(4?7%Ib3@k!MsT? zcss<+DSwd=#7+}j6@b(Pqo50&gh@wYa#4W?26ZrCP~W*mvt?OP$5PuM(k)&nyTR6z z<9#*+OVkT)yT*#RgLU;v#yMR4K9bKwN@#6d2v@f>lF>^y%5}38{~2O`;>w`-9{tm_ z<0bDXt0gi{KO3EL$`}KQB;1IW*#T67qz{htv|)(JyXDb>0<2_9Wf5E2j3x2H#(;aM zH7H=RnRfxC)POD%p-j*T*(6@Pgop**f7}6zCeE=MJ$duW|FlgGdd-qQ_h!h}T_16M&JtF#mAt^(5ng z(5dRD!P5B!o7aUHEjxOIB>Xk+t{o%s9@3IL7VKu+`n22As7BWWF%sf*k!%XB3wv8N z=2NrB*MX0>R@2YfSYu!CXdszKa2O4lY$p3Ustc^XzNg1+jj)ElPtP=KeVi65J3M}0 zB)7-azqcw<^Ya2-BdxQYYW8;agv*j@Xiib&J!wrR(*wi-Tf`xwyjy@7uEY$8)1f!x zyjSFawW>B*CIymE!Eh*gdBmBt#2iR{isq}o$@?0LF=q|(%rBxDvrJJfCrT80YRpxs z5|*TAaE+K6^#I{@wrwKCqAPr*f_;e(F*|B;B-)>=57D+o-)WIjsH-5s_$Gfo2_MF- zOjNg#4M`%9or!qTS6{K#Q2WC}n)m#ssb;<)m@@+*`ROkq$^CacBoLB@E~X}8|4cWF zRM+KzT&-@H98V*>f`GyoIA{wV2pSHQNQnRg2?0`Mf+!foc`*297EYGIZ|HzWsJkMh z42>uNmhU~!4_M=<7d)D=gS-@(b_U9ZWlisF-{NgQ-)DFOG!_(A14ejsNkcmr7P1Kk z{C38CBi2BsjTi%+G@iaFL!m-cl57RX)I26@&u+u@82j%j#x*Qa4A0f3PRkM*F}8=g zsq2St+bjAUi6;p5+j8_urq89!gEPdn%o`Ipm&9o;IC8Hwj(D z1!7cSx!hGmvF?i#*IjSi%r z87)^+_y@o7sTCC;Emy*RDxV|m9{N1NjV(voB+>5z9J+#HQ)PV@2=AbVEhlBE9V?-k)K1_SKYIuJfcUYkk7*5;QoDu9CH6MZD_A(c% zq4M@_`1zx*9{AZrml@gI?~u<>3MVQj4%Alfk7)Vu>+W2}_Oa=A6Yefdw~4!i6e;Nw zyM$I5t&qvK^FD&iqmnNizmkLB1-wV=(xoQ;F1Msdj!S~H5Z@I_P>y=P2|WWAjOz7M zJouf5_wK#dT|$*0p(!i(fvx^*1eNwIY7L4?#HShsxHNg6fcC;3aasOXLdt6Iom=o4Fsm{lLCKH)z5ekOZMoG_|JoLl?`SHBj{~^)V@$jW|;K4kjOsL-zNZ zqI*L)z>>AaQG5vDl>LDj4~Gm9^Vre&+*@W2*<`20|#D>)_@x ztq;R)Bz+7hh5i`D8anw25FiXd zi>hFy6*x*G_VTexOh-V@7@!<7C!@YwWN)zDqp58TLl_GZ17Wm#Y6a5T9} zqBef+eWUlRd+_duGq%AxYN%R)(SvQ+xxH5#jf;&D4|XZz5DOlo?(@}-RgI5Ti!5bM zrz416j6`iHQ6{c0s>)KCZjYjdjBbTq%UJhHH5Bl$K&@=+@~a>;#}9bTdy8Zmla=1- zx(VJfMC)s9k{2R!QNVPCF+UdDimVJGtJfcJ*t$bYtursRXTD3kgZib{i{m28GoaS4 zf!yVPXTg7cru%>U#P;7lm<4|E3Tzh;wEG>cfqMNjiTwA9#r?kEw;3-7l+NRnJ|*Pf z{FxM>#}$^;L>)B?d9LAwA@~9MM&-B$3vnjOXR?)<3U8k<@iKgd>(6oyMP;-;91|NF zt4rt&|0ZENhCQy(HK(;^H`X9y2Ct`WdB6=nXl6a2aGJq0s&GdAq2~5QWQ|x}Nr{&} z*vA3BbJbZ5#?q523Ztz_De@$tLmOpCl6}#zvdM9Sx*)cDqhKqT|Az6v3vY`Im0D*( zD;bLhjBRP-ASLS7?WfVb%#Wa@Cvo!&Lw=kgMRN?T0qnql(W!In}*K)osY zYUO6N!^ty{Y>>CJFqbSAk8I!oh5|gMW4tvtFu!axmI5H-|5aWB;{U(f=-21ef7?d? z@az9WFY{)x7X3*ti@X~M0Md6-63I$&r=?+f`O&~?#c2D=nbhm=YQ_JscXlEbjbV*i zo_aa2hnd(fe~=^n1$Zu%CV6>T!+2`08{>uukEGWE!@{AwsdLIYZ8_&mycbm4uEEo1 zF_hUek0CBG^0tf4rx$(>bY~YoTX5jh187C%Lxmxmdq4AReI1bY?&t_mFk#g_DaYu) z9Yd#4X~AxEy^1zSJ5eZ8->GHzL4Sorm2enCikKV&tGeX|rtS#{sv|D?whYA!E%K$7 z#Z^-qVR?uudJ2?(_Z~FW`+oTqY^PN0-Y1;cy2Cr6Vuq5vzU>~^jPVkvaYmDru~{Y7 zvS}fjFU8)(uodDX@PS^1{&PpaLM^)cmfcPNbtm%+?+QP*S-nz`>wyi!9sc!P^j3=8 zupNKQH+VEfwm88hf0)Rf(V|E5vr_EVfJ{icJ;Wd`-|hKS9+tvZre_l+@%WGF2e~`E z7dO(0Oi3s9^CwsHjJVO!bQw%Hb?ig!$kx%7BxVvRBif>Yh;b}E0qIMaWPri82D14= zK@0fhS_w@>KWs^EfhA_^?Rc5pJrOTN>EE7O_M^^Fv4l&NjTT|toY)eO24S*)4Q#gb z6U!HyRxcDARrKKs)E0>_323Jo@;QRGNKe~{@Rm512A9pm$J8LkZ(uVnyt4>Y8~AA# z)fE+z2BhlnZ%@woe<2d@GeZ;|5RI*WndAQ*D%r`&(DNUs&i`BGth6?mlTA@XC0K>p ze?f%L;nUK(?b+^{sjc{!{0@@C7^oaHqJ++qV)*sad!=<@5X}rvo*d6xH@C;58vAWf z-u`|XDGhxge0N)$mDXVem>>zc{PU!M3+5FP#A$UkACI(=Bmsu-z{Y6y#M4T+kDtu=B?4L1;4kgaB%4rg$l_sww(*K-kd++e2jWMP z65`Wddrw3>!1&Wew;}~(TXSU)3q4e7UBf7S#=7Ff#kX*OibOQ7x8oT(i1jKC%*(`= zTiV;dI8A+x(D?bW@P5d9^ZN7pv}`0}v~c&dhlIACwI1=y2VvVJr|U~}e%eEIuEWvm zCkM+p7mP*4ENWtX$fxa70cwDE0!y2Ng6lO%CcHMB)Y2ln{7=6y`1PLvjL;iaarnKE zl8PdFw}q8pNeGE`vU>=9Ofwp%28NYw3<8ty*!lhX^_ih1^7LX*o3g?2w17B^c7 z`zTNL!;(4{1wdEAeTK;TD|eMzotle>97>Q+!RAxAljYVE=&dl~MBCKV8Ln1?G=lXV z+L=b)Rp^q{3i_|Q8N|9*-m;D-Z_kWh@`#=F7>^2K*C4kdo%Ymk&i5JRo5l&ywSD`` z%K6{ne4TComGd39n-@UiOXPG+;I@?3?_5uM_X$4(!ALM)LJ>l#2(6GC*cENTETe=u zjM%KK_!dlPkPIQg3l0aa4S;pLzzKMdfwDOAc)(*m)#ZLTJPqvV*%dA%wi^@C0bfq&k-~BeJVj-HQ`T#0V=2v0tR0H0`ylR?eH|BYq1^0n;mmOH z@X`%GQmP$;&Wg1p)c|sU7*u}*NQ964AmqhN@KCsX$d^fCNgs>{K_dmeQRhSJzz1o& z?O51i?!27}5bjwZp(5tfL$4+s%Av$}d>BS-&tE%#GMBrb9sjbY`;jbUv8AvDm2~ON z=)TdNL{x!xIuxtEn9ae1@gaP*;(4ckHS3VyC^~Ykq6NwN!mJ7)tH|rL<{=(v-_^PF!r&x03y+?lrkg!S0 z9H2lW&C;-!&SAd|B-UPEq5NfeX$t%oVXa!tjVFhE zLzTYLw$&uSfUTR=iegQut9f`}Ny`c@t9M^Ar9~go3mek%#=*mZoqA`>3^C(eI|^U} zJzUA!5Ln>qy|I26N>E2tQdILhf?;MeP78RKeK>4K`CutBMY3eh7u+-7o%`YI^qXhL zbHXyo4A_!b=gz6G!MRQhUr$H8Spe}u?irZM@KbSKZE_^L_jw(+Ka6C5Cg@yw?Y9?X zPnB+;6ctM{Ns??+@_x3hVWlVT9#+7&qTlM;o!9A~V~UMEdY8E7LU3T1CL+{*H{X-| zv|>)31P5h`iBvcB?M|u^oBgMGD*WbIc)tR#ENN(qy2{h`6y6!*iBk|=bf74TZvRFq zv;OCB5mN2EMI2AD?v-cQ2Xb2HQ7z3m3hlx7QI)JAK<9R`lxWW=;{#B?{4BTh1wreB zF?sH{KxW7%uZmZg!M@5@)Wcy`MsrQqHT`MM4%S+!n)*=DXFD?;gboqT76%@2?a8N% zNZbbJy;PWUIY`gcwRqb)F=V)u+uzCcIL%ViKG3_p{H1sM-~Kz9U&-}v5DA+6*%eUq zXWF(Tch2cL$KKfa>`xMRBakL6PZm*2L#zr*#HOg~SjL`dd$yzr#b5qVa`&&Hvd$Q$ z>>@x(Gb0^;+UNG7rK891<4;fnRQWL~15-rR$_x#bx+#SlKJrIZ=3fQ=V(1^MW6+3* zB-qL`*GZV}*mqvWsd=^NQDpr-vCmuNdwK9sKF7*KUxh{_ZFW(5&%NR?p@@UJs*>Pa zd_y^mT>8HxKGHp?K!(1 zcM=jvqqN|vE5obhdU<9A51dst+@4xRd&^dP^EhSq%6Wfn?kKZVkVzPcg?Y4GAHTN_ z|7cKpXG|}*bt74AcoHry&JrML%N^^)FCj#{?QybwYE#LB(Mw3!#Z(?5ErJ6@R%FJQGVC_=sb`VRzEgJ5e(HRW7Znc=P?p z$r=Owdgjc^cyif#bULANDP@c7&P6N0Pe|F}Bk2PSD-*Vjyv6q^w=gx-1@XUnOcdy3 zwE6S&3j+X?<@0Y^L#xFB=w3OhbTjT8d*$i>hrPE7$g`ZH`~COYXZw&-?(xhy=DfxjleG1-@6D?j(Ln_b zdzMCKSN~>woiKzvJV0ael)+rl4dDHdQ0c5xbvpo@p8m2X{XU$`{(m_A-@~aukWQ8v z2fddCU)ytOE!Yp`N!$AUZgiRzjz4BVj$wPL9bb|E@fSR9mejEqkV>B*Jc;T;Khx

BpIPcseqRkuKc+@1u#|(Dpy^_&=MR<}8Z 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

{z>pA=`6j@mx?!pAIoDZdz+ebA)o4w$I z=MG4EtKGY4IQ-DF!)~E0o=~hWm!oH3Tkkoc?6a_aYkDL3ri1WROE|dP3_K1Y7C+M^ zVrx`#ywYlP3A|k}a&R^rU=$fXj^D7wFYy}fFP%Hp6VKlziIZtNUO)uE#r+WLQm4+a zPe|yKTCk`^Ovm|2Dwhh%MG@p9!UWx^JWlhl zQdQgh!aY0#sO!m#GbtR1q|!lf#iak-_s7~#VEJmM2!bmY^k2o19DgH@bdq(l_4qT4 z)BuH%DyTv{C?MGk|53(wE)yaqKNUJ7*#(oXCLEIvx*A@$F~*6xy*|z!M&?qr&JwiN$-#<6jsxefqlP?rBa*XWl zeWV=euNJO#bDa_C%UDHwtTR9rIV%fm*ARf`8rAtlg%9#l7vLf}tZ86Aa(ZRr-S5ww z#xhfZIPCTFTf!|K?uVL-yry!W)z$Zu*Rbl^H{M~jfsqruGYU~^f{C|Lv*(w^54(JyePMYQ_4#skpW8^uD-Yr>5rP`$6L0Ai+J9XZ`+Fpj=J5M3-L+xhk!w+k-<2{ zAXeMZ#T#~sI$$NlRHc4@ha)9$pbu!czd)+p-@8IjW%pBydV(BgPAPAW* zOD<6$WTr~0^U2O7ykWX_nD$6=bFc@K-ogCZ^WNo7KvA*34(eN@6_N`z?_h6&idC^C zv87;(Lf2%ElT(wBGo-Y^Uy}``N`=>_5bG4=7pqmMT7X&&`2e&C&kdl!7|Up`6?Q& z?f>6`?)OhRv&7NKKY8M;dLA~ud^i^o4hDB2$;DTbsU0~O5jXvgAh?Q7?5xw!Dn5-d z%l}djD^WXx_fXk9lQN6sW73r>X1hF#yaG71b4->-_QlFcgz$)*)V*lK-Fsj$DOCIE zGoo@ve1);$(m}}M*VLl>jcTHr_Ap!e!&dJ^9S=;KGi<|fvQP|XWaYw{f5N(bB+*R`Ex8Cyi0$+9h6Q4GyVr99Y9qN8~Z!GvpbGL)WzA+7Xc( zZyTlr9x)p$yXLs(6yxCfk2^_L=p4?E+$JM=y%V1Bo31{b=thO0xkJ0wJiumowfuOg zt^HQd19&J9$^@;rvS8ZvQ1ruksBNoBB{TkFZxWno1>H&R;4w5<2~W+EQajplseU zv?4_Tp)NIk8J}%7V-&Lk zrG?aghN9(~hQGyJAqkN-CViXUl1&eV5`Hmq7Fn9MPpH#JaW#yo`ZmqJBj4zfi!tPL=&4<+S zjw7&|*+oWMdm{-wOcSNl&W-iTGqri`H%GkK^6RZcX`$4Mif!Q?M&&x0Wa@Ij(lT&P zyO25_%zdO`S&C=Q({>RXlr%6K;ksz^&r)2X^aQ+j++q_{T&(>$A}}@Sc(Cf%R;F*i zEL}^mcHvgNqmO1F)*f0*?+270cB+D{l6Z(~Hgdy5AH}dKeCMLrXkeW!=!o(z8C?Zm zqApV=kE*nU1QJl}xo%k4jA&q#qf16gp~i8oKH7R8tGQue(gKJz%|b3IGGy$`qkru_ zi(OianDh35bX-%ZtjNTBhP|=PFZB~-bZ&67mNjOYQBvUn^hidq9x)HdG8q`dvWMeL za>?I~A*+5RH12SJ{_qU%k5M_x-P4+^KekUjkV;-i{jH>uV0!@1LMoHd%vHmcU^ zot}sJtiS_zprV)E&%aER@p5UrjSifVl@ifjGc*Qf!34+2v5$&Aq%Ti8zO1taH? zNy4JM^_IdVb5ZSFNz$%Si`2WcC2T6?fmE-ZBg}S(OK|tzbH->jCe$y`#lELP>43mH z*UzD1u_c(2cQe{zD3Y$R+fOoD$wjncs^U_yZ%EHQhCdq0Fd+DMN6nhGm~2WPTX)#d zaVyuc?=uR0iby#}gJecMKGkktHA{)oFVYC-%%>VHmBpTLY$b;f%*w)9x9?5lQ*Jh- zv%UAXplDr{oUveiCip%7+WV{%a6uwv5A0usD+2!y^H0{p(oOvzi$nf@xhdTa@72Ja zt7v7q^sB1|2GGqU%x0lDi^E~j)howUu*VtCoMi7oL3ZF_7uO?iUK( z2G}P+43#v0FS|sY%9;YmKuK(U4**0C3cs&W>jXy`@M1zW$|vhrhD>B20NiQAh85Su zlCwLQK$QaMqErZi8kKbrU(6Ota^zslM~*v8Ob9UmcaI{u9~6hZA(qUeN$BIYd`-Wp zmS9xZoq^sMa&lj$7qLHs7pTIVj-2g?mgi?C=m@O^ly<|nGF;a5uL}43Y!MDHLAy+T z^IS8LIdcp49$d%XGPB3D5m4i_h|-!GS#WF*Jfd35Co)F$vj-l|m%waDyQYZ=P;ocQ zr5AYJ=Ju^_PI614gM2`6*X5(!apSn7^XxnL7#_EN>b)L+jo|?V@mU$zus9Hf%?x*4Z*p5610L`-M|sdUCTrs zAfieub!#`f9StU1UH_O=`4M}qP{q}}olWJN`-SgjnN-Lu2#TW~#Aa?L0d5*R?DQZ>rF%lRC?upi}C8GLx#1d($^*|k)foWk~&agw3sVLnzN{K zW9*2sZ9wB+o3Qt)W?B)Ur@RV~>+{2-~pk?x2xSGI_&@mdjFW)GVAk?X!bf$ldwF(i~Z z=D!2Y48OA|j4@C+2mjtBl$zFWLlV6yx+<(?t6LH+t?RH@c0_uFu?pBosmtJM2Fs!aEre%D2Kv|d`m*7saI(HiSXP7`CdVw~Q=Ny^QaxW6j$l1#jy^s>bAIUWVO5)$UCm zz3osDCUZRRR;zZ}Yi%=OU(1OrQ|ePv;FBi<4#J#?loPzds49e%JG4(}1z7`#gyRzkmAr^Ch^a!aH{%u5o;QwDk^zVl_ zc>iC9=s(H*PX*R;uLg`P*s!L8L>Oi5tmDkYMw}3bBO*~>-kg7~xNr4j48x6692JXz?a#KF3vi(*k+&`C4 z%~prrU?L?6+DJ|)O@)r>o_;PScmS7p<( z-pW_B$h4&nj$e7t=RR*X1melnpS3NV>YVOYrA?`{QJj5Q-jyy*Xv@QR-#| zLrep}z4oM&Y}~tK#k@{Fg2NqerNdk4A)KT=MX&|5yV7KMOS{o!@XcO9d?Xh>ie^SAldPkVgKJzp55F` zegA_r#_d)?UYq%{pQMr@&mlwL=hjW>sv-|80`)XCxDKWP>Nuwf8+O@rdNux3z-#)e zsJ2mS?JP6G`faIr1Ev_+WnVF1Eh}+K$bJ7+=;?;w8-w5{)ljRVlOl-xEz6PsGAwUN z%vcRNyx8ThydU7aHwRmQfjhPEciW>qm;k?Nl$WyUA})P@23AwNMxwfJrr$e-w_1cm zZqsDgG%9olSe=lw%J66ht=G5M3f*`%w~C*71v1GG+Zr+fb?gpCQCYo!XBDNs>+tud zthnR|%$m4eZDi@Asv!4_4C=*+_1JC%d+6BNWG zhJa+P7#N475)Jr=#p#}v2Z}Ev*|>T6tm$?Fo34!2VXD!hkeVwtqL4xmc9?8yi~&M- zma#TVqZ=hBWWG{8v#;Q{LQ(Z83%^RlyolOkSi`uZH7J}tS8_#6ZSK9`owksd(a+Sp zQ10T8KUSyG)wBy3tI|yi1gpHHLazu)TfZ&IVr{DQ(`y~hA2{sl$w$fxqPXSbtx6SZ z*9sLH+kKU?NOBt+_7UHxsFBr`XrBWA4Wy8uYQ#ejzg_%`(f;rJ_IK1_cgKHHht>a! z+YIq%xqmADLmiHW1gRQWG8t;gN3G>2DV3B`zrc0WZ(CA3|_Jboy6$Xk`Q)%f@KjeybEo@y#1Cb z95&l%DB!?e2BJD*zFkcle(WL+hiUi~1SxDX_9}48j(%c^rofRTpUJJWMytW8M~Ep? zSxK>BUrfB5w;`Wedswdnv|lHxWo#bfr(bt;-x5}LUW+kJyWLjGO`&T+I^Ckn`(jpq z61)5W;Vq?api^p)m$FbUvcr}JrXxfbnY8*8{Q+OAcrlR9oC&^7o|J@qZq(dsaytdJ#aU;=wKpL# zRO*J3qG*#?OJT|S7|>_-I&H`WYst)4DCM|mB000%CsMJQn~q^@E4V zA3+wCxgXm}O#}1md(J@74bGav#_XZo4=zaUpfhURx}1Kpcnm9dwCk+K6uBRAekA)x zVEtln^B)qZ(tH##@y#h18bvdR(Se9lvAwjpX^e+hFN<~yh)VC20&?cdzV}RJ(+AmW zy!pkNKfCIukVH2PkC{>&p4eutPt{+)0H$>uI(9x7pS$CYaI z(WQ)x5;E?*8k2L4ad$&C$N~<8ZH#!b#5B>N?WFCs_$~+1J)`}}HOLdls|S_~d6#iE zOwbGIoKc5gQ*!KR^VqV5j2~nRdu`fo=^M9nXuGPuSsuI~{tWxga;#>w`A5-Pp6(s! zs@^_*%AavuJa@Zu@?=sx^!LdS?Ey*JIa9Qa)^LnKH^cxC#g+ z1F|AD?%DH|EI9YlLQvBX$*eV88@Jsv_pZD@n!8AOWYO5Z>;7@)Rao#5&miRHP1(Tt z%PJ8{XP~1V=3L9qu5?(oeyLv&Th6#OrQvbyEcc9sX@L_vJAkTh&RgF{}^sFX%;xt$$Wi%TKYoK~Ky;RN7esJRe@Srv+ux=69b^9iA~B0U4-=HD>Dyz7;R>ZG-ljU4;p;o! zU^gYlbqHUNhHt8&BB&O_m*1;Vr`dLSauD39ohVuWO;0ecP>;NgumPTN6ZX@f}M#%H5ZdxUl46j~pq$(`2vOyEBVfqPz?B zvwH&~zK=sRY6I(wgQ@T7`_n8x<0<@5zY?WVhiU6KiT)-seZ6_Xno9Y(gGhn0KLZ@x zn0l@WARTa`F1as0f=5OzZ)9i6AM7m#V=rUvn-@O+WaxZ%C>ifBTmSZdsC&z>EZc5t zR1lF4>FyNi?(Xgm=?3YR6p&77>5>lVmTr)4kWMKn`K}v%p7+u9?sqNsUf+-XljGpm zeU59+an5s$F@4tDvlkD04=$8I&GN-E`9dV-R7xV0&yYM;w|0|TyXjTxpdmh924XZX zI($7hT#S70mTrUA-5qA65-X&K7!{Vy4RSav-g6nxTE}$zStsg#r0*TE#k;` zK9y=zjY8?sbTxebUj6!(M&}>QqI7y#h@~^(i9h#hrCnsx(KCB$zt*agt$mFXx7bzE z)X7wo6S{ja{4_4~bl63CDc_fMWOV0>vk=_MLR}zUHGE1muSWk}mjl;CQl<5Vd(GUY zXXYJt^x_cZ(JJp1ql!#FcEdR=2uuFB0vFo=mLUFPLHctn+5GdmvuNBTPK(++m~=v^Gys`s|GP+Yv7@jOA3-f z^SqJ75;|epP}l{dbWfQ_4d06*cUt@?OZOT3D*cC1rW;ZRBl;PPGuRqD&#{fB?Zcsz z%>2b!zN+TmZNtLB6JV^Mm&U$Wfiz~be-4x->cTAd##6A|wWd?N_)GKmLrjkDEwV+A zQm|F!b5*iyqRn4mlAkOLJLXy8)a#bia_E@>#LI=L-=j{hMOr1cGRWrcp}8HzEF=71 zz>=`J^It6fue#*SwnN@M<6itx9JW4qPbfngDkxMw7)FM2O)5z`|6pp!YC)=;?-NKp zawc&maQvBo%)3elb(|N|c%^YD=``)i#QXLZc;`evOpNk3AUb;gDAwRP0uPbUVJLqH zDO~Qee4jN}y}CPl$D##qR5vk;EUEUm_I>yMw;ph!+4Ud6aYSIro<6t3Y`7P!uhYlr@+m*e1#CO%{yNu*K61gz3S`Zwt@H`Gb=<#>=%5Z^US zAm6-+ChfaASm9^X#zs08VZ<7+>+0cEk){nueYU3GC-p*l>xi~j9``RWEqZz4Pqe9EV@e3D*k z>;0pLF86QQ(vDl|K5Q9Zgk1b|q~X21j1v{WmUIBN6xnXZe5tD6St0LS0iKw71L|_O zGjbilnT}Z`L2ThbmwU`1!Rc@4-O>EISm@~dn|f%@M3Z`DdH=Da`721S`I6=1qtC9FWbY2ePYj#1|m!W?CM|DVNb6bQ5e~U<_2P!vz7=N z8b@efUMEhv-&2%w%^ieYr=_#Xgzn6I_3HP3XOL|la{Li4-k{@CW1?rmNFVRo$=EE? zj>TBiKqq~8famI7ndO$xdPtt3ol9KIm~-2@x+2bVH9t;j$1yO#T&xm`S-R1Za78R~ z2GOgVyN>|e2`8^%F39{#Vp*!PM4TT_2g?iX30p+D%$4*k>tlUudgNl4W(CGZ*%+eb z_GU|YEYzapf&%Dr7jnwHyKV1G&6-<9iykEcP8!K#NlT^)&2p=?`m~)%tCV`(>}#`@ zQSY?gLzB2myA02yB35IkiK_=){I0jyV^C#!`oG)dWNiQLa#Db@4PZ0m@;3V((HKvOgjSWs;L5Q5bAz4zB~0xA^1bKaw9$f_ zA&%^lj3I?i4JViI#iZOzuJ3WY^aJ?@zvpK1@9Y$h*|>G4kA_nNuoNxb!-#uQA@>7I z?`Yf#19xs0pJ1gDrG2q~rg-GC*qo2Sa3^Kae2+4Xci<#?Co7ji{>jn$igneyt9+_X z_?uFN7cSgTC3asL z3(AWnd2{H$#(xaLl1WR#HMhvweV=ajJ}rQy(QCL1s=$&MmI(k$@Y5lGV@XU8z)~H6 zC4VafHmb(Jd5t%wKd|%^_3P<{OWg8a+q---uNKjw*UwmJvIPMw@qA9M0T;4smx}#2uKX?HDk+r>JGT#A4qRIA(f@@mC*x%GdzS;T@34}O?r$kKh)WT@ z7>O`p1c_A41d;XnjX148+L)~ChTc(q2g~^SUM>sK50FTnq#R^LU9?j^UbY@iJsM;? zUEczAEA{b=v;BX{1V6p7w0wi-3NaNY>P$)b)aHQ9izQC`|@F^?lz?j0B zjHr2!o6;wjETYZW(ZuO|_<4)d`FV@m4qjDps6!od#&&$ua~t3RruJrOpsxZ|;-gcG zQRWZE1S(5PKv}Y8_)(U)L8B^Kn;>9RH6HbvZhS{r)Q}gt;N>f#jWDE}zuC8`u&G;& zD2RP;?YIrD_-WqXcb#{0EuOrepUx9u(9vpm)z^Ez> z{s;SpnGo;YYFR4z?j6>X9NxaDC@Go(7HKG<^Wi6Bg8RXkzAQ{L>E#4}=bL>Vw@5zH zn>d%z&TCw*QfZ=E-CMd!jcfrhCit(iAjb62+0IA^ms*xihJqjdY2_lrP=Fad<#ox&R1 zJQ~q~KTwtC|5=sR?6IC;qKBfz0ab}Sn$D<;2bnrrG+KG>RxTA63g~bn4;@Zj#*r$O z@n0P-0aTSr^`X%~RjKsosv;u*S!hQZs7g5gfx*sM!z*za_H-+|GxJy(lF^RIiBjkZ zSWQm~vG&{4zVhdyK-LcFhtSvc4jyk)CXm+Eq2WsgSw04Dk)$xh3jfCbKC~||N=Xox z)-|_&_IB|O6I7HWuoZx!v}l^haQFOYQF8uAQTieI?}OS;bWG)C@}W0r!O zw;q$&>pAu-H_W`~C_2yPz3<*{^OM6eD@)?SYQgb)Vv^PC5hhp1F`mMWYQ2|4?mSL_z5xQ#)(V0RFcDxicClkS0_+8v3MHSv z13;Skj&RwG5T+3{wPl$DQy?#dF;HDpJ;nF{Bo7df682b%aH{Gr0COB+wr8-|#(;7S zRdLEN;KO|irTX<&dlLW>*njMAfAXaB03=0oQ?q}^mMj1)6|rOiSR(w1C2G=4L@%n? z9p>4Fq;L-B{K4>DVIS3(fI7>{V+l&Wrz3x za;w1nM?C%UR6xn;<$vvQEMYsqL>RWG@1^&VU|=u>NM+W~ye!S1blwtPI1Si15!0G7TRHL_t{K+aWDfu;gf zh%bX`rk;SN0zJ?_rvf*@Jz}OmrUH?j%+J2om$_KB60BF47#3Jjk!25ohLyCcv=B1N zKQD6mpkXBrXju98MNTU1VJZMz$>fPUa-0pwvam;BCJ?=zFyy(C0aeoXY^}j;2 z|JmgJ4PByU&P4s2F74YqQ15>X1sea|Pyq5UQQ@^g=5`iDtO3bXOH?vw=sl(hf>Oj~ z0NXp^{C*taXrBULSoveF2N#pi6jv(Oso?36>Z=)o#5tfY=!?4vwd!v}_y*8SLdrw_x*fzgrr z|4O}o7ncbBfpX!Y%~>1UIO^Hj{i@rkiPw_qq{j?uEznvNNIUi9J?L1RN%5^i&!qID z$Ffq&XB&5Na-LKkcP?+;4CHGgAR|{GZqTWYz94rS_qI(BYP%a5o>J_-|0%bVt52!SJCQ?EFxbO*-@_J`Zw7X9B?)^(qu9V`e+i_FdC!L?n8gA=l@K%Y zG6&PBIE=Rmd~{_gGj3yM=5*O9?|{EAEP~QSHNi?^bXq6B3;LYS3qR;Rh zv1EOGxz=xWCEPD+j( zRZsvaR8Y%3e#n_hYdqZQS;cpdya?oIPp$Sdl}hHu>NUA-QUwpYA;5r?a; z5@*0PX?pAH!7#0K#F{J-%`oFTPQAw%r+HA}Zyh9S5*HQZK|DsxCTdafZF4s5xPwy1 zj80mK<@2eao(*ysHq%H;n@LruENbpan|G0N?ahG;?-*=cZt}g18tmXcVw0;uSdz`VigHy;~(5vaI1JRe84ez{YQP#pS-_2n!PeM z_}l6FZ~QKJ$xnix0NNsC;QgJNMFHI^3ui0OesAuRGj+on*EcX#4ZxpO&R_lo5Eu1; z$Ei|2qwG&hDo$cD-5mb*(?!Vh1e(-1M>&Ux0n^tssbgJb!fCK#3%Z9JFc$Ds&28W0 z%buUS<#$E+=<(QKZeiW`3n!f7(5nychoflX8#Rog;xh|+1&n8sQR+M&`fTE2S>IS9j=0UP1oK2}-YP)QRVf%O+yp zXgGo@_hD3i9eNgKC#wE{y~7ePyFTHm!u5ZdhE6S@m6Bzj7f&3%%4s9~)r4l6IEna$ z%y&2(BWroUm}N%L&V0wS@iF@71t(by5Evt~KwdWLgC}tfrlC{pDaaeb#&igCIGWT3 zvJtK`9~?_P3$nbn%uzzQ!(l8d|KKBHBIfb5Uhp1KJ(-k3!467|G=U$V@db4Wb%OkR zNpyu!3-R7!2pNA|3Uv~!iqFJ31F=||B7!f(X0XqK0bdpbwc-T@=+<=8`D#K80O|jp zjnL87+T8GO5gcHD;Ya;W{x*#r0bWPZc}|hALWl%xjXz6VfhcChw%f2+YfdNHZ{$d~dT6i97$2(!LMA!;D$q zwUQ^+XYDifD$J&`vZMAV?#}fcDUBnpOcam`j(HXHx@PuSx#oP&Z5*43M#evO8y-3HeF5}U{s6EO@Oc*h4?zuBPXpYw}6zd`= zAa$j)4IW~Qq(Xh{kN_1NtD#0^**UM!A@}eCtB5OBWDxQ8Nv0Hb;CwAR(e_J==$@1jiwCx>EqYKaQHF8F7)t* zWM%woHt&w2M#6_OD4RZIT|ExOTPK->yvwMdACAa%09VVU@nuw=p9#UNtpqV%WDV+p>5)NDP1Q7(vNs6?WOaLf9{BrgBy~+KF zF!=$LdJc}(zY?6ZmB{48@-JBv(5(=yFBwlq5SDNEhc8FAFkU~^zA;0>FGuytb))4hh^Ac)Q+#pBQ0kTbgJMnv84wMOueOiGK}3aZBqy zZV9LEN@XY!Zg%){x^EBKLy-W^bts@^W&hH$e*e+`h8!dBVF1TD1%MF9H)j@2soK;`(n%?ke&B26)2oa=Dv(ita zW%4D%n7GbYn3y+fRIuT46u1@SxMfNGCuEMGEO>Ii$nb{eV$p)rVhHleKW&=5saZP_ zH}20P-}lO(v?^)9q<+jYwy+r#aO!;j>Rjf`zw9(}c&^i%J*-34K(h<$Rv;ONs7#r` z%R0$kbDQyjRiqr##3sGr33|)-mdRCbki$=mi=U4lR)O#UY!xUg3U<)~Bq-8wufro7MCx$bwSw%`-&c^yhdSAyARVQ$HZTLjbrG z9qZX_G`o(wOE|PUn*1swo&XQZL&@9SqtI!+`G#L96b;KQ?yv|;_!Qk)IZ>S_i!zqS z%L9y`sNg-X8m&m0*d1lp)oof;VlKmg(Bo>Hoq%J2jz9!y9*IErbMK z1^jRT0`n|=D@1?bivi_!Wn5e^3-&P_Pa1AGQ8>Ff93YvB{-{`=+>2}O26$%ymtvL? zkdy(=G>9m_MAq`r{6!RmJr--ZgzmTxyvFsT&&=2v3jJ#bag9M-)h2d{G|4q*m{Po^ zST^r$qef%~k0@KZW3J#oS+DcNLEaHmu=mNv=!X<5Ch$YU@X))zR2NR7E_|Ob8Ks~K zCA0nxzg&{BZ%SNTja1c#y|W~*0bm^;7c_y#)*^VCVz2hk;JfZC^q7m7vB~eX%joyL2 zp@@AhL^q|bcL{+^_eHiWKSgDuxVl4Vp+yAT1KnymKx?(8p-E|>QaDy#wUKklkc)Gf zfr+&LBB=AOjZE9e(q}0muKmryLPf7~P zw7C==l?#X=KlUz+B2>sJ054R8QABwXl4xeg3M3ai_0UoH9zd`{g-B?R%uVPDy2-I2 zXT6B|-2WAnv@w{JmUef31B77h)fE#5R{Mno(Y%7Y%(d0(*vk7-ueyEHQG;;5TWOj! zXsI*H_kCY@25B!kThHo?Cq7>U|4KdNv!J$?(fXG)dqPNW;S0F8-0kZX&ZA(ebB{{`~R>h|i|K+tN`385;^kN$6y5&kipGmshH zr;!5C3ik_IeT%PKggy+6#8G{?cb?0Hb9dq|>3_p2$sGpWJhKB?u$6O?$^f#FbVZB}?8KAG2x_ zf@JbZ+g{63qRxuVAc4GdcG8@?X4hjSx%Jkmd5kY7rMY{3$4rTNQL%A}m8-u<6V^>D z?$G)=T+cLJa(j`A>|CZVJUYmLpWSwk+tO)kYvBaerBcjq@~j9 zZ0h8Z7Y2!IxDf7>)rY&Yb67?>7{JD2{v%`l!~Xa1WB=@bKXWBPbGSLxpK~}&MEtHe zK}sk=1v9C#293l@G8>~R-!XXI(CIRUD5z+A!5AW8L(Ad%yd$BRtc_GjY4B-ZkUYd)(eLWBub;;Z&Q+%)1 z?qBiX^1H8>o6&U!hHw^HfXi=ZZg|CtgW~$r^xeIF+880Oh`~pC>ovIV^h4oMTSYU? z7b!uZoRsgR^@}zrDiRZ)DpqbdX$^#sb`7a0bd+p}r^0wwS zfQkF(rAApw4iq{^o8~;n_(T)JGc$|uKspzRMN|?S`K2JZ#q07>k!CzvdiKE;ZgG%> zd(km7#0-dH*aLBtLwW&4^{|F*xAW8^&#eWItp^MDLc21)j(DLwb569uI~eW(RQ$4} zQp2Eh3S5W#NId4DIjezX7mL%5>iV9?(}ul+>Jeznn2KNeH4!v6ls8x$g$(P`kd88E zs#Ehzzd-mQRW*vK#u~h0AQIHpPK0o0KFf;CthRCMfJ@%%v4Xbeq+0VdwQt5DJ1b_- zH+bX^cX{uwk!_h^Da)mLeFjL(rLpZD*`<8Rpm!#wyz zyQIuACf^9zCQud~T-*r1CplQDSzV~5Be~YXa<}|xEzR|_WrCuAx z3*qp3NY}D!vk^VlTiJyl7%0Wg+%ZCC*6s4inpBo5sbW_1sGLKPz+AC=owjl$g z-fjgtmVHN-W<$u_{VasKB=TgPlqts-w~vuJj^?dsfiU_PxaMo5x2@%hhLCj)8z z=>1db@HwH*i-}Pe3DxX^tnUGt#5b?+g3ZSEf}t^$>2}U9!*>+QR$uV!GTvq_GPEP* zE`?&tz8B?`8++y!o3!wdtz>McEc6YNVN#6;vg5nBFbW6cEk$umXGOl86WE~et7<>3g^A4y=W zC;UP%=1;KjG&V3l{N?ou_S9=w+la)!5Gmn+l3kdKRm(in0rKi{?dnE^<{hwJInCE} zLJBo#?-ce5sl4BL=Rd4JEN&Cd9<40kx6;Ym2?PfTu47svB+{3?FIZ>0yEhU_;cgwNDd+3 z2EI51)4go_kx0(B)?V=CpnrqQYAndGvGPdt4KQLBaUCv6=pt#M4N4@J zOR`0|*KlNy@=ip=o$Ip)0u_A`O(5?}zEz<`H{=-})pLh=O0GJ2ZJlUjY;t&n-^Um> zHyS#nsFLVX=P;pi5@9@@zco`tEm;?7iIO{*kzW_&4RbIU{iv;W{o>72-yFIR(!uK4 z(2`^CObWuygTxK%LbO7fc%q9#0KXTRPmojP6cu&EMA!)6_d@Q!>AFNH;fNum?Swpx zQQL0~V&-{mf&H0|GUvpmU#F7?ASH6>EZZCJWN-I^JK;}XR3=qiJ-%X7XKW>Dwf20i zn0twW-m_!>40l~Jj!gcw;A2UWP!ZG}a#%_V7jdfR0eSf8xPM&}dz8%MgEb|7UK3G^ zIL;qJe{a&m_&X=z`JY!|5Ilh}W|LnjNqp1@h>~=-7CNt&mRt~V&%CV< z_R|W;l}CaJbUx7>$F%H^2_)6pE_OQx^Q2@rL3}drKV)pu(syg}?FS>t?inRsa4*iS z^c$G#?bbBjFiE+o-}uyF4M)%d#pI(nf)P1quBR1bC}>MI<)_v`b7fSaIF2&6H$xGZ zxb744Hh8$lN5RcUjW~y?nYn{a71;(sTLImzH5IZ~pT2oM5W}PT#*59Us-Z$L+z~Be z`#ZJ+n$I&%#BNHi4*?GS45`T9d=XG)B714tt1Fi z{h%LYDc#AHCS;AzCm-m?<6BDmS`~=BPxy>S#wLumL46Mi%1pT5{*|CijsGMvAn7>8 zuE?l=g|%kP97s^Mg#!|lk0&h(KddmaGFGW#aonu#h<|l{HwbsM0L_G5tcA!cWUZ^w z(^U2WJ=*)3K@MiBEH`<9V~xV}tXILlKC)e4+^+AL*!dyfdBhveF>@>b!y|LQ?#j2B zlhY_9!zF! z5soS7>csE73hjVf!f=RK8QU~>zJ}x&zv#0WJ&1}zMwioVOAnEMYP1+Qk@>w`q>0f- zJ-3R-lxv3Uj7l+k{KjVIA;bv+#WNa2KaBn({rCenw~(#1-QO=O|2FLQHDxfgFA@@v zBP!b~q}MTYP@TqEk77!7_Ct*JudLg3!MQief`=OHTU$wqf8FEyo+z+7G%SJ! z6%yE0W^mI)&P_$U{4tmPYT%8Rf+f5kibhojk^i_|4hk#Q_!mjKA3=8xqgX{u;5E&w zy)P-DvUEu=uLaomnYeef+wMQ=d4Y;?)Kwc#RW8Uqaxi5{3zdenUQg8Yl(;6|{{S68@Qi$5`$uaz$P8m#jahoG1~c*G|CH zyVidai;ZC!cAsVl)xU)*_u!)rJ_IYgLK^?e@KO>HjKs{LoEyT3RdO4$ zvx|UI@*n#lrX(~e%4X!4czv-ppB5ZFo98;C76x({aq6U0EAFs?9LBGC3U^_G*tYqD zEDPCefj6XM2(lgOCu)SwY=dmQCfz{JovvZuZO}r(3BE=AcVJ{E8;P=oSt_gn{-nUs z!O=-wIGS36pQDf{w-kxFWQVkkdW;m5cE_16Su9)-4@$es0kUlai(>8{ru-DS^6{Wx zv0tB7e&-5*Fy#kf(#jYlANfg$|GlLI!i#|c6I_spnz`aVodKilJYXqdZ`A7j-8lI; zkQGq@Fiv`ajFV|s=QlTqk0R~zgF%tr7(k?Vq~QTJFd%(&8xz-#RUBK5}P@rjJOTE_)K> zE5TgV`(OeGKy};Z!NMCuZ1Wi~DScq#zO{U?mEaZ{b+kEyv~3hgScgYqF-TXs-((rB z&Y-_BCWYnVfBj)A$q$HnPGEWUT9u2~pXnG8H4;T;$n;>5VvAvstY+A!$P&>-tJ9`9 zHktF2qumwJsz6t{idNR`3n6nPhm-G5GHA(-3BGP08-+PGnhgRvNi(91o1N+KiTe}6 z+y`4p1I96B%w)GFr2raP!~Scqxj;q{I1Kcbm@B{v0N1OVvkwWf0(=A6N~~iZY$dRX z!SsQuA(Mnh%s7{=?Tp7)a0~6ml^oic`_!c`IJvVWiwefgyakE)Y`+Wd7-9qZ?X<&x z>LiCBbdsf}oJzF^fx6kAw%&Pn$J9be2Ya=+LnqEwzQYa| zl^|J%1_2V zML}F?=h^NfBgJ`!f|3P|RGOoOtyo!|Gyi!-&yDc}6yMaXK|dBu!Qr^HCvCdv#CSwd zX8XwQNe{1;K>Oo-I1xMKBBhHqzkossI|8{UAE9idsLki00!1CR+gUquSz=&2!AsFb z!jMDhTI%sm2ty|VVL07cr<1TF6}e8^#0uz&rSQ%IqiLe$Xk;P$CdLf?B-Nrp*&zmqw8Q`Q_^JM|s| zA*(zsh1?#ZwT!9rQ}`f-{7sTW^ra}}GBuerg@HM>A|e8E2RsBJ=+*8?WUcQee{nR4 zHN-4lLmCpX!O88D<0Pm;!oAW|gbvz$nvXn|$G+krhaDB*AjJcl~6TvB*o_ zav^vt_veFxZ(pPNJ$a_Z3uAwvDQHmz^*;J=pl2(+-T{cc1=d9wE`0nu)J5Xim7wSX zTIMrzR0%S4pEV=mg?46L%4w~^FB@L{k9{@=f(4GQ`sJ?SG^?D-!B7&w=G!50gG}$c zu2$M2??_1x`_0iAT!+Szr90(6Nw_!;%GKl8Ic>M3<4Xad2N+V2tXR(XK|rpHCm97b zkAc1iTo9Chl{BJhmHM+RZn$O1ASn{S;vkpD`1Kp}`_SRQCO zTZL6CF`Ibcf(#C~`^9N|pR&V3+Gmv{MLR(%VgyklP~<@)82lM(fkKyE{qgxiB2`v1 zg-2lJ{07#Qd0HjS!->w4!Ai&#qg%j=11OvnX3~Vb%B;fQgyPk@C!7Y z-1(Au50MACP5VIPfe^ac0B+iy9)-$lA^75%9Hs24Sj!h!fVa5c$;65)P`Bj5&aLzg z9gu!f0n$&mlp=Ct_{HmoTzVWr_h69p^Y)j_gWo^+Ke`WBoSl^ z8!lm%`Nfkr4jleXGHirQ0ji3!U{Szi&KJteArlE54a+`VwX@H4D`2jaUG9Q!f-hd0 z=6>t`ZZ&e`<8xHHIekRH2ev}R9ilJU2Ae`5xy7iOq+pzGnSF7uGhar1c=px{rOY_5 ze0=89L5{dpf|#9l+d}C=tUdJ*z4!F;=YE)XOU3E1Gn#Y9%HF3hhH|W}Z_7Sg;J1*y zUy=zDonxFH=DNgbmMxy0cckXIm#iUi&~q3`s@&M}_c1VsNqmj}&0P~Z3Zai`XwVLv zBa`OpstXUUM}P)kVFn{hI30r1OA%rkWf~$!ltG>@lup6x@0suo_p93)Y%fL#9g!Y+ zi=SuwH|(!YYdF1ZA+|)zmQjvpTEQl9%o+ul6-HCoOw`PzweBpPXpGco0?k{D{B4ubFv!B z(-XPcrjM}597$IjsYF%=*(ZrbbFy9EFFDSV!#EcDq@+ z#Ezoflx#GCm;Fq*DA)Hc8Eq}Ma!>(0lL99w)}%mokmV}jT82vKJ_$hIq(tgfgytTQZ@IO4gTr1Rq zsUd_C$$Zf)$r=<>Nlw-mdcNZG*Za?`Dw37lF43v3E@M)n!NXi@1@1yn-B<9DE>`FY ziE__=x(Jn0_BJOL>><)^p7MAN5=_sz!J}d*cvDi0AQA27=~yJF8Qu;qo!QPW^Qm{u zjPXbWxTV9&RV~o?gXL4uqB(bANi?VlG-6;N%Cc>tsdWmwRGbr`nBEb53v*x~dcMAX zcqBytpBpcmQg?G2Y44>VNO}H6oFVbY7Ay3l>O`}W`|=swvo!%On=hHNxJ3JVgLd{r zr{4Q?5IV1VeZQ=>?KNcFw-06!B3R=THK!A!acl`?f zO*&vu{%kAjO*sNi*Ym0_>XIR>c|YrpC|QfMvr@h52i;V*nlZK*@QwVs#p?G%`vY&F zu(9EJqxiPFEeNY^n(LzD>WtsuNa(^sRwooN|nFx!P&R z)8ovpYDq{NjG9gIEvZ-DTO@r~-#k5@+WGOoqWP^02Zc%PR;rgPOVZ9*;ZuwZ!i!pv zFGvkv90{S3S5(WBnaOO&H6WuIUOF?c(hwEMRC)RJ`0EO6%Y3Lnj#pM{Ub4-a*3~91 zf4ZtZN*bTKQmvh9uu}8JYsj54m2X5XyerF&j!^^B`e@4I*8mhn|L(R1nT(13yI zSG;B4)jrjo-+7xx6VPaIX_<6lbrl-ja)zC?T5f}j%@X;Us6o-v5f`DVp*uq%ylv(5 zJ)cl=0{25R$}Vaw4r-W6P(@>YWsP&N;r@Bsq;xt=cRKaR>~V?bQddGco)JrJh1SO( z`4*NgE(a>76V{d9^Xmxn4T@?c>&CVq%W z6=f}yzweJ-X-7N;J)J^L`Mb}!*)9(b&l@Z)>FI){>QDE;z~HCCgxW#Zgt#IJ&FIO;WQD5`jT@*lTk#m=e!|l_u4Acb_jHegCjF%vT_(*rE z^~<+oTheJ-N5IxqP=(vdtyg6SP6ebR_}5tZ_v^|ZjFo{?5j8iq`YR{mpQ+dNdQG4Q zQyXIz3+7rPBsgejGeKz34pI8iPsSLRf}|&rKURna|Gh#~Co$>~xd^_y4bK+WG6z!? zpSRBy%nGf|)>vR1jEE36R?t&lQ|KLgrMd_x9y!jJm!k;S9jVsWjS(7%P4W=oEI$`@ zF|rI)_?ZVO7d9mep>v?Q!9M}^hrTI~%z5`Qr@336J-~*3L1Q16u&_uJwSndAeWF2> z;@xYdEYF$)iRF*lZ}ctGI)?G+%Fst6!O;A%gXjn8Pg_%P^lChxFX_8eRAQzl$THY8 zmF=#PFR$herNN&{I4Fg_*W|_TU&kFTu6w^qOv`YFFY}%$j!wwt22Lm!1t~-1Q6h_W zyGoGNTfj2mBGdh}g&%DGl~E`3M@-E6BD;fD-EJMdOR`Ll{G`1V%#l~ZUsNE!(DkH? zyu4&zu#mJ3WU~%6szZ8}VphYMcRo_JXLS!(-%ta{Sm-%Pie*W&3RU3SoxBXOrP%A8UIaEHErq78wSP(u?WH$^jUZ{}NV#drna?CIz|3Zw z5+R6TzRr3htEzXlBF=Pur1_zY!kv2xM#Ee>s!3qU=Dp0EVfau%${aZE%ycEGq;;w2$DE=CL8uAv5x6kcN>fS8{Z!U0(CR* z!GZypH~w$EoB~k)Ye28m2kfLl<)QP(Yeay@Q#5%Hb|oM^2OdsCqo`{LKP#Xw3e%O9 zfmYHW#$Qw2J}Rc+e~Cnc^sw3x2RhCU*yBBipj4lH%U=go7-}iuA3{G+$wkfAm-irAKn|f4v8`4CdUR?>CC$Ynr z@<5V7-^^O}=*!>=jETx5oc1T&&e$C$y*-bLL?DddigX=wp_`1jad?x6Z?$&B-|Ob{ zv3zKkdAiz;dRta#gD;u3VSx;`{QX8s+zmtL%XRRsG`N)@-;}yf@*FEC?e2BYPfcv2 zIxfLEpcJtmlPI8N`jAttF6q)hFSba_$X3ZIvBT0gN{rG?WM_uCdv3>yt_t=Vb}S@e zpJuSiP18aSonJf#Y~~_xbMqs^^Nw_*PTwhVoo(lLoYG`3m_tkp8lW-CK7Ko?Gg^cP zVlFUr$<1ab2~0Dw!omro#u`S})yKCd8HiQQ?qMC3$TY8tjo$CMeMwimFkKI z+z#(QV=o&90=vo%p+5S(WQ~(<3%VIOg*dyUw}Z&7w>b;eu%a(=N^w!04R+3WrF&9 z!Tp2xdjN%h1*s?l0Z$4@-(_hV`%DZC=?Y!uHCblEHwBOxh%l)IiAqM{-HyppQ`1?s zKBhDz3bymD5gbz?!sw1Z9a94qqBcSU3%f!p_mg0mmOYs~Onz(>7h0Hz;#U-r6vKw; zTyLuiJabin(?)hrcl^{>i0>#;GkYqxP=w~13DwZ3$iA@N-exGjTWk3gKFFwWp^w=A z1B{FqNZU=e&(vYqo7Ulsg zbRqmeSfWU%20oTEJyX6#IIPNq=A*Ab3H_dOJsexbFy!DFeovupdo(!*+A!Cj!?aQI z`mLJQtr<7M5OzR%)W|_^uc%NH0kXj;n~s`04#K6Egq|86$;9E379n1R zdOka%=wMmMWb$n^8vBBqSdo<>8V9oB$ife0^gh^dl3oBd9GGUnh9ixzz5!J#PUFk1 zJSROTL-U?LZ7>`4GD zE(l6${dJr8@BB>ikNBAtXoE6vrPOl(md%-)m>d7LOu0tshxt@%zPr2V{B&g&nDM{$ zn4%Dd?%xnJOo<>Nip91-1ns9*c#fP$F9)hOFtDEYX}UX*q8m+M6 zLP2UmccVF}lWJt4CeqvupT}_=(#YmAt!Y+J3m7IXqPUu7$1r*~tTd0w<>|WA2#4&OSvrfV*`lW_y0H_6#V~qT>rY9 z0t7p)#{8vWjY_fKioo%xJ3R*A5te-WW4|)%o_b!F%q*!O&s8F5Y6AvruN(*VD-S)0 z6KCAG20^PG9%*+(!{W%>wNVQpTY-HJ@r=IF;_h@hKkyqkQt#4+~SlK)x(RKl*B#3AOQS> zv*(EXPE7awK7%lmI)qgrs;q{z^3nJFtJ$b$l7{Op_unUMX&NEou9>G8hu|z-q21L6 zI7-l3Hr<6G{nPo(u7(zv-@)45*qfm0D)Gjy$A7}8#|Ha?Q!-Xfl0^EB-Hz~m6@mnK zDuGFwUuSVA$r?|8^z@qp^krGhCx$1t@LkVQ5;~`J*ivMYwKac2CD!6eo^^91~)%cyU0y5B^^b8oWuMr z6h0}ufrLh7lo9M53!?XH0y2~0YJCs0lz|ksBsV6~qrIDT6yVFkvIvke1w7k5S)*CZ zq81D~U57edJH4__o)jX(@GgNIZVIYyMl)p9-JTumse3fu*x|W$0oOSV6isOtQeQ7(X?YW|%B4x&H_F~9-xFkLyQ-pna1{UICE9f= zExxCqwW?N+fS$$+;=BLD+FP(?wRTaXba%IONvCu-NH>UdcY`!MbR$Z4cQ-2CDGe$m z9g+%yXFcHFZ=Cn+?|5C`Z&+i^d(JV(9D`aqk@8vA_qe>7IcY=7Ybta2^T4Nt8tAJ* zrJey*Ue7*8TA*}%rb8kgWf3o{8I&$eGheS<5-{?gz5lRqBV#!(#!AxItK~p6hUhOc zQK|8UKc~BX=-Grj;`US1lp{$>IgJhDaHlIv=iux9OlYr8=%3J?7<^}BwT7E3!c^>d z@h?Ot66ne(3E@9^>OEb)q90nI<3yZsq$^ZUne z{r!nF^}!iv_n;Tx3^Ys(RaKbAHN5f&ghnh3HfuF5$R21`^A42SRy$`;g{|qFX^~u3 zzbQ$!bgPTG9J82jWA%)@$$0fkd^?Js6W3Xznf|{n_mBfI1*38ig%SM;Az=t{24}b( z$_T6MY;Z?6ikq*MJ)`t2+RaYV(sZlYVO-nG1d>s@C0+PpFnX{kInpUOQ5H^yRG8-& z^m!y&@>V9&TMFKc=XdpT`x)+NC9XT?J%0o1!r_~mT=`{@vH+JI|d9X10h^jX{5+hlASEWn?UI*%=sN7L7}xN~3)ISHQ{8;V*?gs^=$+QK{| zXq%9_%8o?u!`V&yc$r|%0n6mCl{?C+SBX4IES%rbp&gl3a+RO1&^R!c(S&#emluD_ zk|sV?{x!c4h_Wu_*Q=2gB^6=eV7zg`J8OBUlpU_-U`^4%m6e5~kmLs1%`dQ-+?gX~ z-5N4!GqL^|$r7`ec)&$Xz&7MPyEPw^x6D&Q_C|1Ux5#-$(v&}ZYA9&A5{fqd!AGgssEJi{W4mLeB)^=|HxEL|m!nSb* z>fHtQCYHGRVYoulajuMI$`C@mP+ibs;D*WPB@Kg*AInt`*t+xtF!k{B;yM zKVj)iAbvxz35$WMDkmF3@Loa@g`wyJmYSlr%6&TiJw!l?b44-MmwbIQ-nCg~<KG#;8I8+D znCQ*c94=0Non%=-KwK~WCEI#vHc&5Xu(M0hGRau(ASgJEm*>j@;*(g^76SprO>^;K z_vY{~MwaPJxZY3ohMk z^Xt>9%cI&hP+d((XOTT^5eS|lvGxA7DES%X*_n|v#-!`>ektS*7I)@FDJPOw+2pnU zbn-Zm!E&dpD;dm~5k7X_T#&O-_T%jRoaviUmfVvJ*$bH}ow?qs-;%zX_diY7#;vh_ zaqV)qYX81iujS>6zUddsPeEO!j~V8g_s?BofYPb=k6->zO6R}6{C~b~{~1CRQ37;; zj}$9&#*tbxxC0Ek(awf>XegfRiPimE2-QN%4nD-2XD)R?!O#^kly;!~l*u-HXQ6M$ zJ!LoyA*A$GGk6ktp9uID&01w+v1Xi<`}E8PWSQ}D1W6HVNNJIe3>i2#j5&xD*58|# zGDlY|9w-!e6_R-o$iY=$#{-LrqHTMRC-R&+uy%l#v?{W3*RAjHY@WOZ5%IfQKiYS7 z$0qcbbCTy=oP~nuKI50XM^9c={c6NR@wv}EYH^t*pZIdMIfmd}b@rpeNNvK^9CQ{t zKjTK3P0iu#^nU7RhhWJ0hf3^cjR+TrjktU>90_arE9?|hOxZ#~LRfjUL(5M~`fFoJ zH(r~Yyq-8tIx^0gDw2(rf3jTU38q?AU0JL}fv@EHkDZ_NAN`-^rf%Th^M5vgO({ys zJ)#&OOVv_xM*sDl=@5fMDQt0lh#hp|HAs@8mucQsnBiK)V-)H? z&oRbyiu$r2fVt32cg(jpD?tc{(B8ndim1!Q9^#(Smy-*;(PGJb$-zBq1CH??i73C$22xlq4VU z;JQ5ZdZNPt_`=`+gJJyd3j7BLd6L#H|M`Xg*WWn*+p{Seo;^>8F<1p>dB%3h?oB&z zE0&Ca8}RQ7k7S|4&K6DqPRH=a4OEmLzAgQ;+7bF5i_+&msIDoi=|0&%drfIx3tgnS zY(meKE&+dlVp*mtPIMfp6Fo*y)_)jYLbcx1YgXK)U|!l|#U#~-s%*Lm{E_4OrH_AP z_P_s;N)LY|4Dd(3BB$_-Jq{p#f~uL1aCdz2>&Lh`zC>9KZF)&s-upwd0Bm;SsjS&|m*ihxDybP3>BIO6su6E+@SQhlMmct=|p{hEX3&-PTzA9<&ZramON( z!1qf0k3aIixwt?K6><4OBE`mVwgF3ebA0>4W-LetEKj|n(rQPw_R>p4I3a#~JIiWt3vYz-G6 z?8DH`vyvqr&V|pmM~u(V8f*gcpsSk#D&d(&D_idT7G8BOn9EMARFg8X^^Lx^AYv%g zG~lc>;c4fJBj4<9Xf{pu;tT=ba-y!>L@sk%^(h|d z@og}R-jS(E5+1)aI;WVe;$%c4d)pc{VfCywgX6{axGZBK4V%;smu}0pEp6JYNXXs* zg+`Z8#9=u7I$oAs5;>N1o;gygTyhF!@(k$3UGOWC6Zjs^(ka4_=XlKaIin}8LQ}CV zvh+fm@M`c=u_v-syHE18_I@E2LE{XMB)yJh()5O>`4oLkDJ!Rz4;RR!5i`RY4t3TV z?@X{o8kT<#%A>rDxQiOe?>fPMsnX32liu9#t$}ekF_RCLkWEIC=~x(z&jyBsA#X+8x>QVdiQ=`L$F}0#&(&eJ<5IhO9 z5B1Cei4-ZL+NKed#gx@~Pl$Tmro=%zx&k~BZ=W>UaH90jeZd+D<|;FWU;vr5%w+3q zHrk+^i#^r6|4eWDVup>rJt5!XHt|Dk6ej8$=P+ZQ*7w8Z+q&JGYDIpS>>92?w+C11 zFV?uPV%27AJ>``TI#w@6f6SIWt6p!9A|{e{PNr~ofkcgdXGg3QPmwH8u#rm7R=ti# zOOTJ+Ysr}4YlMb{bwCb;Jkp|Y;e|>D0^4WGC8^DI}%5@{m%?T zg>Muj6YxCK^BY@nXJ%umCfOn@FIs%><1Ub-jJJlqBI1@siTld}<_!38dHemQ)E8x@ zg`YTOY%x8UEbOXSj03}A zp%C3O=Mf8pwdlS_MyGshIO8<{`|kg1us5*=^pU?8*IDX@j##P~Lil)iyJ}XLKg*xY zX&K{-5ywViP+D_Yi*s8eqF+L?uB_C*W@+u6 z!0Br7b>i;Z?Wi`ywKH!JMh_znDyAf%+hm>M`f2@A%Xr=VhZzZ1zV2y&sXbgr2I_ho?d>j-7owes(rcDb}bxvzGrN z$Wq!`x{k%dSr{)c^|Jqf;-n2_=_dmruUYV80k0fgJ9Y_B|K3t74$3x%YHgyazo#Woqp3q4V7_o$*F}ZllJ6d2y45T0j}?zGv58X7LFw= z!i|IZ=JBpPi5L&}qiMOE8;0iPUnv^))tc#-@=9c|GlWS8WV}XIXJS(>CS4+Kir+pa zi6W;KQZFG^FE%@+`mVaet~C--_X}3JMSQXd#Y=mEWzFgGPL9K%q(7 z=niGx%9&WQ;$F^sw@rld7lPtvT~C~%C+Ouc5UCaf`9^cSkrKt6C0PBX`C~i>SF!1* z2!o$TH1m9Mfvyg3{|1L?ZuUy%5TpGYYMtgC^he4&5lYVprabDr!g!5s=9E)O7Nle+ILJ0qC(F@&hg$u;)nK;9-do9<#qnpxC$iPDLNp>$b1$?UNkWE^d_} zByD(pJp%MUNZHfv5Voy;J_s-rx$&pK)f?>}Vf+UI3@HG{=3alf1p{3O7{~W$OiWWn zQBm*nwR4T)~lZ{RP&;FT)>QeaFhIn0KF zahx_fF?Kzk$@lKwAMoW9KBmPG*8vrh2h)e_^Q8`xO7QwN^Er_?WcUuYFK}GitgJO$ z()9{UG}I!{j+eU-m|TKy!2FCZ{gR5dF-7-%40NE1sW?n9;jWmi~2X`S3JC3YU_nh zgU(yYH}iuPTE`N|&~vBHTA&LKILyvVG*&TStLcHmbd=8+ zQow1%?y5aptFfhR&!zm{<*eIkz%r7Vi?C3Fql{?Ui)Yc=wZyowV=I!Vc=$FHfbq`) z+cdjIlyB`#=ER@gQ%H7n-tU?zUg8*S2hhJJJ}8oI(!i7nas!#IagOoYN{d+Wsh*&c zB#ShKCJHVm(Lhe-Rxa~+YPEw7T-t5;N~65>_A!Je5vn+ZXlE??K*?sU&yB)5F^4j` zQ)HuG22DuSJ4Ev;aTNJOsy9Io*?fZ-j`#0j<}aWYBaab3$6-qP${R&;$R9A2BuB@lO!ozTl;9qd;NzDzWACwA@ ztX53x!1Ez7-voNrZh7`u)l=+Fe-{Byx3l|mi(njM{v(e6q?ZP8{6A3qW_#v0iWQ=H zh_ERnXRKyIZPXINZvsbs^qOa2J>L}HG2B7l^n}oA6`)HSfqRf0CfoEWVHJsIu1je@ zy3;s!c5;BonbqDb0w{!$1e{O|3l+l^uGXqIG2P}U_8IyEAL@>qW7VoQNpy+^Z=pd> z{f&w(BN$`&da9BbuQAmz!h34D?DOLGuIxb=pPw|IaNr!wa?&G@6$Yn3Tp(5Uv4`jq z62k5znCql7?$NrQicDw74s_Cl__*Ls z`oat%_Vqi$eW7rQ43VOZVtOa351Iz15pM1!9m@gzT>?5(GLwy7D@4Z}Y#inVpNaL? z@8?r{%Wk6gI`R>7Xqu-?5(doF-1EP=wXUptr~{Q4dmc3e9UH9Ah^Y&>DN#d`~ zMI90u7*!(!y~*rN>aXU0$={(A+sGu$ZD3+O=?v9(1IY!85`=wa(4ihzkCKhDvH6BPBi5ON5T7S%3Bjn_ z*eIO3X)2`B)Pf*Kbp%ftuF`Z8QCabX0w3t4+a%0}r8^8mO+I; z9Fm;@L%1~_fUuHyQh-D8(0dvt zUvMdgC~~@B1w*()T2Id8|JX?X!H!7E#M{l>6|AiO-Ak+g%gUD&>qgdlHWez8v{tlI z7Kfo+v^*vFqh#VPZ97j3*#AkS{HywZ8u{|7FdX%ek9v}&^SN3aX90nw{?Mlg*EoO^ zZ=!l)cwcT@GGaq5m<;tBEsQO^GQ6bHWrn@23&AQfDhd56a$I3zp-2nioi(HIjm z_e#JUA_=F&7^KRfkTDsW+AXG=&g_LvG1t&A=o9Siy(l|?7O0ho-~SqK61y(N?7sc3 zGGh(ezYjIM!*{^-TvW%n!GFH!C8h#LIU`t@!9gtAfKvl@R8VMg#qc!wZQ5&`1Ahys z?h{e`lS$%^qVkAI!O$IbeaSDeUwZ6;3PJ{?A}gqPRrR zumPaV{YSmfAA{1(+sXW|0q<|y-c~fk-?qKbmOk+J|@>=9$U*&R8baCA%}fH5LA$j zUkE#hm^v?{8sHS(jrQ^V5}$Q5+d>6bWX-2FWg@Fx-X-WVR59hoBx>oEfMdmmR`?`F zCP^$>_Vc>LlBHK`GDhC*WLaGxGJQGyUTcJuxa^Bji^;R9_m>3qbeMyu^+{a!mB9lO z>>}SN&#_#vhY!P1wN^1U2d8Y%9T8(0$7p8{_fKZmYf5o$5+kRQwZ77eXpUdK1D zYIAgl+N&+5N*o~oZXc4Gtyg7*t?=;O)E9%1Pcz(`mraKgxg#ncKd427t5v zAHn%2&8w-Iqq~XSU(i(l?Uxsw)ry8{o#Ap42Gq+_WGpNodK|Dm*GovJm+h1!_RMH+ zJ=jnv@<$SRuTCbqLFpxWIwC_cP>o4{BoW1QGFE9Zku4-}e!c*NgOP1?gHY-jUHH#b z06Q8_yLH#mt3uKr-3eF2Mj|B3T9!DOvK0rz zO;yNhcK5yeKXyeIfuiZ5&`X)Bq2bQ7i6r5DLrb0EMe5A^Ql~sC$O9|V#KFlc-KMCTyN$fRT zhn0;8#&FK3998>vBWyUn6FO&XXM2meP3Pb3p6_IKT?L%mTzaP8J#Qdobw4AN?@Cyy zY5t+=<6X5Q)yG>wHdO{MMDFrVIE$HIGwg(qsuvgK&q%UIzxTu`P5hoaCz|a=I%%!P{ynDZwE(7CqYImsN5KlsP{P7O1Y|T z(*;W1Vk9B2)3Z;xZO@61-4}+6E|$jNLw#@(sDhqTu$y`=E9htiFyS{-riwLIS?eJA zFd$O+A|@^rm&<0ykWs6yI5*#zbb&zrJWOS>FC#%fxL5BIs_zZvdsI|j=V*$6p}XF= zTlqfJ44rYkfUlP=10sF1)tGvt2w}P;k=qPd^~=PI)kZjq zVyzoxxkzi9QJ*iU`3tI;I4Ad2gz3pl8Wm!X`QitmsHlyWgkp4h0-w95QP!O~$lA_1 z6F6iEQoX4Lv(X;>@(Zz^Ll(sY%3GgJ=Dr90?7qj8&$^$~Nh>aKc7f5RNEO9IIwG(q z)KbZpA1NK+E=+L`F7{SrS)_ijYCM?b)58_7>R;rKc?)=)qi`uxE91YL%HM!Q7jP!kOXp#p6sAvDgfvP>0J_Sk$F7pkDUxTj+1Ysk$cOlE zM0O;KTBH5H5&4oltT8Sol8FnB4#|K5`WV3|QWZm%X5xNd)#%x{m{&32ZQK)45g}I5 zF%nCJvgcCtMh4BB6ch>gcFgfjXGc+>6V%u3a#l9Se`oL%tVYYiYio@#Q_+8q%e1e< z;fyxSNQSla0fD-FGMT>l2dDqCwX>COSVME52cBUvm|J5S|_NE^Xy z=DO`q-Wngzck}l1MBh{?vht=PTfMplm1+BlNds^YevB!_Y}Gv(fFT$&EHaxq^CFP< zVex~CWKKWFVO9ZIB+_Paf%IFmhGHXE70p16O#Pg8$xTYS&e_I(kPU~*QzF!Lp1U8x za$gUpH~AainZZwYv*ultIMGQ-59(?GXV|UT^n0c1y*>rf68$RyGfvZ6Iv2+}lV73^ zlQ#%m^1m!`0H3ZTlHS)5fKS(ReQ941Wol`Xc}g;o+6|G|tmtz9k!iI}ScSHm40<%; zRn&`khoN9Zmh0U=&`t)U=^wyF()S+``3HUyQl@r}4wnDZ1PFIVA!wP?{8E`KY4wl{vA5g1tK#1OW>E0c<~rR1xai4yhoGquNg~ep98vo z0nrucnuQ5k3DXHuaUW0wSFp%F?GXxk7`R^6XaMF#Vp6?;lWj_IMIK&M3x($^(DpuT zL=9!&0g=NOT8aC>TX<4W<-WU5g~)@cCgig&CUiFrbh_yU<6Stwc2Wk$#3#BC#MtF2+Wc0u}`X(vCKfvmaRyX*OZ&XUj;Ln0g+?g>O#FyoiJUF$R8+} z>mE!e)Gpk=&2690^GiuNm*3+8=C%?)2yQz)@S2kz~Q#}9uX**tU4qmgU(LB3np+KNQ|fYSHZ*$ zF3wZLs!WPm+Gn3>`i4`5ls9i;M=GtDjA?^(X|Vn?=c)>I``!FR@AjcZBFeYp_uVhkCTnXrV5{^8bep)I!fr;uZ zM*ziS#va9vyGb-*9BfR%zo@u&b@cuc!CKh{WimR^7BQo=^6*T^p}DoeRM_?q>1k=o z^LCDB@yLuUHm#wfC}HamL=|4M+srw}`CdpH#W1b;>x|Xxh3Tt~ENwNCUhtz^R!eb< zF75UJHf`Ffx?j7swD^hbvgSW-X3HjWFQSKQR0x$jjzFh8UIkJQn^}tc@rTWk?enMgO#st@p@S9Ee(@iiQK2q_5G6(t^> z40TdlPNkB{cquSHY-UMcnxy~RW>)p@%`D2+xC(ePE3w1$xS3r5Z)Pzyx?Y8@hO_;> znUw-Iv$Kzz+52E|l9TWrPWtJG&FoR&=o6=ZZDzwCHnaOr@=^glDLMQt`BND!mPU2jG5!gH{4jZGof`RxU6ov~@oRT;b?eFF6>vuu_y`0sM4V2<$Pxijf z&bU41yY}<@b@>B1P~fe6K6Dh^oG6Mj+*2fjaCndDZ$c%QFsrUt%0I2v7$!7&{A!-H zXj?|SF`SGoCQPw&;D#hcM3sZiVk4kkW|pi&<#q9krx>{2Kfp!_3%k-xfpL5j)JXms zmR728MRd~HtQ^~K$ZD6@2@;=>c7;`>ejjKA;5DqZy-<`J>?;Husv2wUPnP@BkL+=C zG@9G6U%OaJ$QcaaqH3cW^g@Jq^9SK&zO!0vN}xy>p&VO~W?DS=S^+$TF z7Siwqxr61;R(B1NNA}PXCQEB)hozVp1==rsoOmq1W-ea5lVz-7daY$4KWj3SIGLaq zXSees-_Wrs)8L9YsP{=5RH5?3$5xE@FUNez&@F5|2weCH^eR|Lp|Tu!Fl1U<6Smx= z1t{&~8&P@*5GDAeW`DaJfqw4T?q5xEmF zZ&`!h^1*}&lP9(yz>=hhVvKd4dn6mJ8`4N zPZCe3enGxLV^gG;qNh;>CCCk>$f|!9)l8RH$3htK-$#@clfd`0zUb*=s_J_t)sbr> z;%pRhpKzBzxrfxWwMxS-ei+DS6Q`HtTWcdX|G~0{J#1ERPEVu`kLKE5aY&0$NR0Gt z44waj_z7|0bs+e>()a(`0ssK}U(QEa>HtZlf^q)>Pr#XksJ-y8u}IXUL^3zq>9NOE zD?{YFQ0scTFyG%4@+RsY=N@cKYl2CFVemsWqRv$Hfu#D(gxTWJDirOfUc{ZL!#E$F>Ihpsm>?4S4D_a{alNFC zxXaXkB!kBjEkmHd)EG|sE?@owWvZEmCetR7g!z16JHsb1JC$nlhWuCxf>&d;j~Ubh zuv6{FPcd8kqj8$IBmC$DjbBoa6x%A(3=2Iwh0Sv;uHH9NKac>ea*Y_opBjbIQLUqX zAEJ%zQ&NvX^kVhvnCQr=w&cR~JD6G*+f|h;X}Z10SK7fcybVyZLG_3g8?=&<$?^iZ zhQzR;wvs6Ehs-X2 zJ((hA;c_PGV)J>h0{?_&+T-y-arXMvMdl9Q&PC_rVY~4004CtxQAi1uCU$N(x>c>p zLApZH%F;3(643scN1-Xs^W~fD!)wB=D06-P*A$tojV6F3hP>JYjxj`-c`B9LEaLRe zAFK@!77Ea1qtz^gF@&h)2+ z1L{)u`LwiMY{Zi3*6&P)k7Jo%5Y{vgg4P=^d)*ml7e$OJTFYZ>JGPC?=7t#9sos-LOIY3TN-i{^t3+M+OCDqB)?=B`Kq(}C z5=V;fDS%K**eZo2hlG{$Q5zzUg?}6J{1Y|xHohC|^x&bT3ZDI4D@4|rly}-i5}wnz zXH%g0{qKbobdP`z8ovqG5{A6X;lq$N)Tw?8UP!_IV@dr3%M2-V=l{lUdf(O>23p@_$7i1l?qp_P51z0ZL9Pz2 z(SsMN8o)wzN^p>)%@k)W+a8THeC6x9$eL|hnEZ-RBeF8u4a$0wx&DhZinrt3R4N#W zn40YH?r`M7FA=_l_#co-bn^@OsbUOhQp04R*YbpWGY!d>JqzdRUA}lZsx;cvnJpoE zD{fk9UQ!)~9yMoZ`kCGh)wkrdvujkT=B>a{)P^9-P;2Q1plhL~gSN_j#m3dnBEjzq zw~-3bn!f>bzx1TNN0rwvoC9u%9|ZxuVDJKh06MMKmaZcg@c?!|1+GuJCay|wdxdW$ zUype4tlB;b0uYG-K|tR-ZscE|ML5>12r1od2YEWdx|Xu5T{p#T6r&#j@{HUz{nAA` zcrtNrARRyuu#f=;Z{sIoe%b&VM2S3DUEDF0eUQDYWtVL$OUXN?c*r`*3X6+?p}}|DS~oU(`qx*AtTl3_{>If6s5$VcB$r?l;=# zpwuP8A0;z~?K9}DCa-O>Az^;| z$SZt)g(Z+7WzZ8GTn`#8WfN>CpN;*Ch6OT1&Fyc+f2RL(@?q!4(VD8vaWB*9sShp( z;TjmzPtJ>xVmpchhwh`mKGjGHVu8zG5Eb+j@*2JUI6GpcLkbO`73lw>6+S-Fu!K{E z?w0@!i_}o71kkVrU>a6FTtD?$@!0z6-P@zRS6RmN7l(esz`n}%ZvJ?)fj!Ih)zPo7 zbNeSew^FYYPhURoEWJlEmd--(_QgFA+Zt&UGzQb%wkobmAkjOo32Glfg z0CRdj(GOF^Mym3gcZ#i1zHY@%IY5NjR{D#^Db;p|P6-}Pc7MuWcnSmPTb>v3Dnu6n z0~^#rk;zn#n*pm{tHIg`4ox*N=4y(fN(`=8QyhIwQzT^{i~w>+Zq)}KfPkXkv$Bg=>r22sZgFlRw+e- zHPMu|O5c;DQ{(8r!%yKTii8Nvyg%gw;iqZdA_0DPa9S+R>xsPed!Nge-w|&im`iJ_g;o+;1 zL`~5ws0un-s?&ABwkX@W5K0N};_O+?bgEzUw7$Xkoq7uI;Z?i+Zo_4DW$V=713aa$ z1z@-kcao(aB|;RIxmb0fH2uuhuN`y_b55G?kNE`Md#WLv%o}IL`TN^v*Y{!PlbN%z z(RqvR*I}gnkmfk!Yk;%okpgg)!%()gVt=t5tL5@h){@?xYK3pPZg4iWsrm^#TEMZq z#EaVkYTl4;W*GElK>-xLwJiRkKK?3E&^)6IdQxg27iguGYI|R!S}u)>S=kGOTF*nz z82Q(d$~Ur0p+p?3Z?rbjH&p)g0KC;#D!6~x>c8h+E#VA-H=CZ#DBh#3$POj`st@$0 z=kQ35wPyY@#)ID>nx6lnV|reXO_({QSt_3k^I9u56*Zb(oesHlgp6Y!Npy`Eif`z4+367X~<|#&0i#Hh3Dopyr<1G{!QO zhW35$e7I0crfc`fSlUuf0H8Esi*94`Nl*bU4=DR{Z>#MQ-(+Zw)llqx_J7eOd86hOb<=a-@ zd)>CQHIe$GzK)9Nok1tT2=JhnwN|eK`v8tYmR+Tz~qUG4t*7J2sL1M!})%&KtdgiRvC83O@Q0?u!mkElAa2(VMUb4gW^vX2#^rpK-tOSZ*dfP5uC?*~T$&nfUL>P^(&E6dlpne_q z4SJ7icfhky`%+m&;UeqhAp+Ib_Rwh7mw8N$ZJ`uNx@kmx`2F(+3esj3?P7R0 zl#LmI0dBXoci;~IJmMc;|37J6E&mn;{55*v==@m3_?bSjS3I>bC1pw(DvPI-%BB?P z#Lim#(Q|4Tso8wVf8;*!lT%*g>~7e!en1lYz_|xEtsVZ$^zNO49l=SylAYheY$rMp zL@)<6EJY}x#sUwj!-16POG2uZuc^-8l|5Ia>z19-sx~%5C?s0#^osS35x$;P(Nji@ zL@>M!;eb|o!x{ShL#^MNJe7>>ZfXQ_+Xq}v1K|HfU+)N3Ov7b-v>(srs$M0zi z{qop9x~ebCY!@w8ch}(Gw$CvO9~`>$GH)w)m;l5r2MZ&ZxGfuoAfgWtnz==jp!I~? zXa-u>FN~=KltOEJ_9!o09B(qVb~ErC^$Q+aSCkt%Ew9>!O(*dH;m6kXoEhA@n#GQI z@h=}Zb(DGDY#|2(E`qVw!XD%dVw^2)+p6alxda`epeV|6|{Gi zz{7f#PTk9W!?@*c^y#!vQV-#&TXmAVf`Lhr+$Hwga#9H`{PNO5yR>r6xSIo`S82k;Rrz!k*<2Hy*nsC z%DP>oUQs^Sw5TqW+K;~(iB^xJcZ%R>I(`7qw$SvTf=4SHzqf4f|Ie-KpC||{UEHk9 zf0MTVep+xgP5E83>c3747(yS!tjPL%!5s>-_bK;~e(Pe`6@Qgy*Eig>jp!dSj)4fs zG)_*>NVLD6v7_d zS&lVE3AQ(mQkY^I(uyBQa6lWCk?qYZn|KltPf%7o36ULW2umUSL&@8r?*=$5rSrTu$(KhNgI#KQ&AHqQvCdq1<5OkR2XA%d8j4 z>0&1Oruz!Ov9+3F{d03c(j)iQwT}XR^`Y*)UnDj@3j;XTPqS}CnFcL2xp|sl7icc| zc+He}L{&ZT2l|ivLAD#nt9LF|JL6``k#C+L#x6vJ9aiNh4Fi%#FmY=C(Pj7XvrGrQ zt7MZjEq+l)PRVFR*2qThy3YW8Fs)5db9)A&15aRiuCJ$avX_=OC!OOH7u?_A@45 zaJip^nfe_>o9M6jAuEjzF>553T5CM4m6?)gQh?ZloYlvC zdgB(>3Ws$>p+rkF-nOp9hbfwMK%LZVxakY#Cutx^3=HG2-!LxsQ#km)ds<*+?qv*| z8~@eu{@Z>Rtb_s2U})dLN*H-S2~&hqNQ;E^#%j|68{g9KXX)c~TF z%+rU6o^UAJ6ObYs#l71@hgfe(xbd7Iqmkr^Sn|hCPcuV#Z<`(A0fts6iVL(eH^FDk zb8mcU=S5zbt157$Ru_W{i;G&(+NY9U6{<%Eq?djp)GD_m?~Z_Y2)jf1!G1kx5A1gR zKGBAoDzGQ4hXy5<=~TO#Y_Hz=8NqPo%AMQzfyNNWOu`|uLCJZifCJux7KTLa>&xS~ zF%S1{Knv4;CHts_X}blug9DV$^MF9>%7eH|%k(L~O(7>v2QY>mpY{S{*a3J9TTE2_ zc|LPZg~s)IMGdLu$muiwg@Jrv)mV7| z+-z*T%BMlVYHSQFX|>znk&^m$AUg|>gVJ>m+s_3^S}OoaD-s}SwN|L!lkOlbIvCJ5 z<5b^-KXa_LdnMy9^9!N~-25ud&OQT(Sqz0-gs|qAD-;EKRT^^*aBwLjpgo|)uS|Sc z?r!g){P%MA!2-#T>s=`~&>IB*WApn5QJPX7y5tGGJXg`wC44%dK$SD%( z)o_9|7>d-er6K^0*2<$s>%WBuYX~aKVA-G`*ZC1|1Lxx~26=4rx1<%xZxBzo#ZGw{ z&{0avsxOJ~PX_;k*njBiWRivMda=V}h-(YI``aYN-e z0++&p<-oj;OFJ^FE^Q>bhT=&DHzZ%{a)IO|D0vk0$zhLz6PV|_KTwtmbWFXp_A=j? z-aXM<>Gd-XzudQe1EOK7pg++0AO+fRWBB;&8{>w<`&t7&=x^RAPP&7*2C*4EAzjUY zo2ua_>hJ?u_JnCjXe#w4q3b@i&b2ksQ1#s8W6fKXH0-xwXpn-jXrP{xZ+Qx2VJpqg z3dcT-F{e2k*ku_Hd1fVU8E?%tiJ9(9@4cNT?EVTM^TK1lORJ0UiRKI;(ptg_Ys>fb zLa(X=uypWQ9s94HvXg#lf(s>vu+JXe7zjSB?oiR(=~p;as-WV;uYfAXwl#Z*7#qkq zf6!@xGtL3A_4s!bi?>hmx&g8EOj!aLnP2b#v9&FL%q=A#<}ZxvlTw&%s}g|Bp?v2I zgV|VZf#gDMxeGr6 zvV+J>10cQ5*p^!M&47C2NT{AtE$UlDB^wr9Zkk^YW0`_m-6{`&%%Fcn<{uboJRsBE z!PVOG@5leQN25bVAu;hR&!vNY1#QPPEG7a_tw8nO~N%4_(FYpGpG|61+vF)|63 zbvICCL&~kju6!Krp>#5rum&IUgY%;*=-CB3sCUM@!I!ffh05Zw#x*l-g0nY- zCIY<@#y6My-r8iNI;tvKb->kC|B^{*(1y}``*`Cb7s!nl2u>3HN~Dx%TtuAq^lIvEf4)*YfHFDoKHK|nkODP*oS6Z@dfN`74?7Lq0ROmOFdm~6wp_9@QLp_fkPx6#EyW?F zm%c&BGqjvr$;Mja2RnN)sUj?0cfC9I0M89!sW6~$&cJWERb8QmQ45cS?tBZJfFVng zg2p$RMSUZvxNvbTTS9xoYWCS!_gCa$^A)1}gWj5&PSpkB0iH-lME1m~Dqwg@a#N>h z1{bHru-z^q1kjY97&#gTAs4M)XNNR)L<#)IL>;}c3Z7%RwPEGDMfODT^M|10_Y z>-#gN&(4H1GI;~1^)p=%vjYqk0tJ4?H?jM=Z=%dA>FI5C`prQbcHBS!0PUCN!CEyw z_-|4OPMW>k29`t5TY2}M)kuCkW_DRj#gQN+VPoUKovl-@jA>}uK@5Q7a(L>$Kw9nff3-b}r3J)%{v(;Dx zv`jnl>aDBN0FuJ_#<)bh>K(zJ6g4(g)g*k~~W(H@nR%{;5Jj@#`+N$vbov}xCDOrN35#AVMd(tz; z7|A3FlWWf&d{&X&=mq%I4mVn-c&7B$@98gEzZ$o{@Qrt~(Yp;h6kuBLr|hT-2v#fk zg`8SEY@I^V^Ewh7{<$K33!=d(OTuDQMMX4!ooh|Mi99bWZFh;VH{u4;N>i!8Y>v~D z1XNp4mx{*^sx7}pCm%3AWB(DKf3k1|!k7PFZ@L_5dhzc!U6e&u7C2LpdOTAhX_X|l zd^iP=Df+Dd_zRZ})ijT9I&ccm{lmfoh^qm+ED!WTsmUG;5exydOlY?$at`nBM?L3$ zt~YOOHzrtpY1fAXp$&zwF_kK-c08ea9?p9!VL_Fx79!+BI`&aoK|(4e-x(zzo+(Ga zqmrXh4h&3un2ltba0&jotnzJn#0@r%ue zj~~Zlu`=r&<4f2Ienz-?r`LI0`mmQuosq4?Y?WH9qOXb|s)<{JGEmx}$w=I~>LM~a zmGG;n`ckHnG5mv#yaKdVPWM5omE5Gi@ACe#~63Dd>W!TRe*Iib*RIicJLkGK`HbE;9dV;=uOD@DIl(4FinwQPD);QQk)|5Hw;0Z!u{)^i^4G z6$3(>3v9fsvvAS=^iGMz@#Sk0p_O%exE$?N}r zsCx^qEZ45>7lV{8=|(`hL|VA%ZX~6bXPU(m>C7T)ox8Wbky_55`7*>u zCQ;A4s39N5(l>Ftz7eg|KBBavdG;h<&b4u>B(ZpbF{UrZ?y&HSO)pu5t`g7jBio%P z)jUgKET|4h_V1l*8-}=rqlblyX=Qqb1%g*KrL02NFk)}edZf{{xPy&UWb7-Z0&(5T zSKQd*-1UUa$`Suqq^IN?52s3Xz z>ce)cu(Fiap9$H>0q}YWVv<=L!2kfSw^Ic0dKvJPC#R9uiYv(nN`Z(FtW!Rj?jdO+stgxnobXq)=@SqP00s9%)-wQcGj7OTHh?cniDt#$1?HujcQo zS1$r}^AZt+2e>=ilg@vxW1-lh`x73Zu$jEkY~Q}clgxoM_{{COX@ZTx*8w(R5h4x= z=0bZP%^;_yfhgLb+K2!@Vn%fYopkEASV$QS=xxVK`{rUdi>c^8TzptX++%DgCDqJt zMm%~ASo9Xo} zWTKG=ZXMa)snG`_7W7tDAYy6OWZ`P{sh`x_e!bMZ&(~@E_{R2!Qws1_x^X-jO0enZ z*pNPur96Wh>6!XLJWWi12`*we_BGh5+%K!0DsmtKm8&=W`K&RvOR5{&F;%d7>j;x` zBC)+?n6ru-n5vnc4%sB={V-L>DT1_k`*nZS?of+aPjtvs9YJWO$-&J?THTxBF7Iie zRKpUD0LcJyzY^sj7LEZVB3uTrS{ySby(>jUKSTqU0q8B@#49|_dZV#PRG}**wR zFn}0a!Zp(#lNAMlX!mnM{HhxgHFG)3G0v6T6Z;n^*F72wAjXyh>Not;hfVupc!NKi zZyngB1_qm?&K!Ms{3l9_6N5kKrT7@Abj16>BDkejIQ`{Q)3$5B$l;S<#Yuf@MC8mP zuh$(hB?6gvY}~Ek1yVmCTY%CMjkdJw(HS#$(zs$Er$^cNFf5yFEC%l`u8}o5UW$h5 zfD@)Vx_q90FCUl&8bsjD*ATEl24Uv+IwoE!jO|wUT9%SK1Sby3Y9oDg7HgBlNOpQm zElPF^w*34giIhWu0CZnmc=u(2Ju^kjc)ukNx^E;|+2T&&*euk2J;sEqjCA%v9NcC3}3v`MwtZTQtU4(_FiI_Fbso2fc+TiIrIeAgU9 zyQuWFL@FjF&pm3eSYZHnn3Tp|{L>BDAlrS-&W+et)S&xb+;d}#ahC_(m;Xoi?UwEY z-Is4o0p5LC)j;>n!;ek4vA=7%wCKf$pD7mFM+9|W+A^vIpKMac7!@RN$->MbosF3o z0Mw!3GulEdPD!n#k`j3LJ){zeiSaW_B|)fA;Z%A}hSs?#a?Lo#lMEgmGD3Txo+N2| z-hH3P+!>%BQ;<$(;bupIkt?WM>EO<^=l+y&!@F<9LW&(E!}|B``&$+KKX+9>?Sy|U zQ6W1aBxHfx34g4r{%YQGWPLP5p=Rc7X~DbK3wBkn?>_)^795IIARM5!q>8@iPmWkd zd(lC#$!&oOdx-z2SemwDE2;(0`s-a{DSavQz-s2{qL!FaJ}~R64rPc>H1cx?g{Qx*zt2>rkx9|eeD+!%Y!%40qvE{w{eCWr+7woVqb^jKB6drIB&NiXc zjfy51MqmZtRgqXecVjV?g!R6;UdEwe(VguO%E$RtJSg#)KZG6cp)FF`A`;9wEBHkC zEK#L&I`>L{q6yt13}~=c4riWfe*StOj???FFvAv|7&u(RCog{%5+MsWdecEMjbFPM zLK{ZbI~_Hi)Hg;Pq&Ax&L(z7j0AsR2x$oGmzitDVw+@VIcvq_hx(2B-a;Bnd_k4mW z3)(jBiDHuN^k@e8tOTQ8Kr)q=!`T<22=beelcz3MTFl64>>9)$dKlmCgjbXBD&rk5 zy=(q*SC+AV2}YRQ!jBA*1F@r-oR_z7L54_Z!&2hmb6R;ym5QDf?Sz+JqKjpV6dA-* z4B=9&io?nt{HT1To}C{HN0sqsO~#KOEkqsR=*9y#VXDQG>o*@2DM;?UVK$kC4 zq1PPI#2~f@&n%MR%eHg`dg{~$8DN^lv4I(2iU?L(XuulFu2uiLR% zlO|;8ViIE2I1mHH((pUC8qhhLL|3QG8Tqb#e2&s?jYuqZ6`@4I80jUK3%E=5zu@Bk zU^2POBFbp4Y=z#t&|0N(C9yrK+;X*g-fpA6UT|ukxgfp_|BtJbhtNZ*cXzNbCQUo9 zf@X@3ppCEJCIrj1^lE&6Do@e#Ad;+l`EwLE;9Z%$vzQgBUieXdvvnkNr)6w z1(AX%J^)hCJ%|*f`24S=Al8^=_qtx}g_G|G201#OskY;P0 zT4d|7!EQVN-Y&RApo~+ZzJAhRvvJ{+yd<`T%YLRBxdAK+##eP{nWrWvT=;Wdr!+CA ze%3L$0#2(M3eTX^>L-ud;SoVX@3-~FpG9^YGXu|N3m|E>Rm)VhyW<=-B+d5vdujG? zULac5NDJ()pQ!;U^xlJ12 z*f#MQqHYLxb;bA`cQvK}a92p`RkQ$ig%XMd;jUWf#OVIOT}cAm72+DzjB-E+z+E8# z+|>kUvfv6-#W-<66Ic>Z731h=i;A-io#D9zcg7`BG0*E&>|?4q5s@9AzsUZ96?9}i zI1_#4e5_@ECIVh$UvyRsF&Ut-c922;ZN)68Vk8wb=`(oF_mg0<+yC9$^*dE;Z|&gz zBdOp|)VAbb)V9CnUA^`5wVuct0!alzRwlg1M)0Hp=RQAc@snE^^F8L4O^z0Q>2LuT zXu~EbRE(evi>HXW+YirG8}b|{%|i+Sf75Au;x?N}{ug1fvPoTM$|rHL|L)bOC{}`;rztb0C#14JA=Zm+*+V; zvIf-}bmD%Xb6Mb1eYUyo>r-B=C)j4WY2Z*>@J&`59n7`ul8De;%S(LAblFj;QJ%YN zNeMpJf>z8MBqQx9VEbKr>b1YSi<@G24a@V6H=PNQ_dU%5PbMcZ!B%1T+@aXiMHLw) zI|^E{;q%_jpqZ^Wh7wXFN^JOCYw*r3&pc$bmt5XcIE|=ucLe~i-mBkD1aGsc4=lXT z3c_yg=5y1nmpQze89-i4GX2tIN%}36DdNydTI({ue}#k2l;OsDRLffKGUqiytDH;w z9I(pv{Ro*ff=SSd1wboqzdf^G0E8~#Zfvpcdao>i(1jZaUBtAmNXy*)jOQ@;C!x!& zbD;}65W3v|C3G2zs!Qh_yQJwG9>X(opUMSA^CYS>=orW4(P>tUutZSFWgS$Y(e{k- zYndAW8f_gL1esgy=-=aHXai4D{H11yWp*8{xM-q3u)hWdMdu47%i+62PwC%(Ox-RL z>HgL|FM+Is#(EggeS1d`7z_}?=2zhdg?>I*5ELc+@95ayS=ib;{sL(JYQzJ-kZpfn zEc{xF1sY8Koyw&ez81UTdyYRA{P@#ha9JFsI|g3@+g#{tkOoeP}>ycYS`uv@Zh7j*@{eA1T7bI-$zQr;m0;->S|S0s@CtBd7bfPEoE*9 zPkU9BVRf)Fq*iYeeS69jQTrjrT&y>{M2FB*>!g0e<+yj32O%t5=c6u=yOIezXEAOEo$ z1LRDgx(dpt3A*XO0+BQG>@e+y!D=iG8Cs1cZ5Vug!zMaT$<$lE9M~$ z?NbvpVDVy#>GdQw`B}hypn!+35Baen+|GQ9ZeebwnGTCG_I7y@SiP(Z7?t_LIh;IK z@W#YhHAp7gGgY@p544WFJ=4+*3%rIBTjATWHn1J*j6fccIVyA9Hwe<7$8W{>VeyjL zN3W^j@@n%xdLEbOIR47?L=c)I$o8X44~<-hmjg~sb~CM-z-pnIIDgS(2+&_2zaCyz z>RvtQ!sAnj#|nM0$nx#MgD$f?bCuN5BzvzWi2nM0uq)-5sR>ShE!EZq^j9*;A!0Sf zevUiOiCbPQo4L*j!d)^rq!o0);-xvc(kD0TWB@E)m^hru-DEk;#CZgTS0pAPKG^+m z$%uP%$KYCXvJBM8jM_U#%NABC8>QaAtiw!B{Y6BkR?;#ZXtY$V9{EWQ2^ECUNsh^7 z#fC0S-}b_l6rdgG%uU3on~K@UDSR!aK(aO)do!T$0n9}4OoDqGR?M;pIS=AO_@;ky_w9Ax@Cgqa=j8WYTm-E|%40629nZB#U&9c`~4O%L`dv z406ec@t1vrdlZkU2-p650soHF&;eM)&42F4)PULmBpzK$`$RuILZs)YX)6IRisCz6 z0Y;2yfkguWLi+^@g~J|`n|AfdCJ(|MWGj0QFbpC$gFHwtiv|^|6KwOjsg<IhRDEcivzmK3J||J4DF)}OM3DrEq+009?wjK{h7WMFn6@{cF!_&vNzB?O zijZ=Bg+Lk=SP_m`i@vdkCro)#o(0lJ*EFQj7u$_yK3>;o;95h+JYxEKvFxBRIv&Op zr?ltO^_He(;x#AtheywsqU559KV0*te>+FR-O|{2n>LJezRawamufC}--{*>C+o5X zXC1bST*&4Ta{W}tT^Q$0*n>Mebdg1Q>kf@gQERg*8{ebzx2%e}*FAkEc$f-tmSx}h zrx@2c`%l>iz2lf)SQXA%5iG~@y6aTVaeSk4V3$LImU{N+c(iw{sj!Z5T0>5X^g^_$ ztZ<1w(t6RrYee*c3Dts-d58UYdxZ5)~Ev{0;?rWLSkCl3><2HDov0G?Qu;Yx!N4O9ucO^fyQP<+jcnuu~Xx^1B z%!3qz(f>#S{J-J9JGk3R{8afBX#7d#Cr8QT2u0h%TrW`bQmbi%X)qx^4Rx8rwNFyq zSeR&zmOBDw0ww;3tuUusPRkI24UuMz8c}D)+iE2Z$W_1Z?7=D6%90ml5t%To&4?%t z%b4=Ji{F+@&eabQ=83+V#d~itOFI6ZT=3?WH;k$05tBiX!gQtL>*g4i#D;TKK#G6+ z3vbMx4mA#Zmf<~m*`*~xhv<1@Td-00-uiY>(mQ_<4Q+*2zx85E-h*cjdA2^+ayWrr zB`QZRl{c%lP+`d=P53Am|@j<)^5IvQC;+qHGW+E35N)T-r_{LUpG&0eiN^8GTKw6yq`N|E|bxI zy^`_W@LVnXH0HKmewP#VQq0_PU71I{?8|8$SeZS=2cQi=6M44ns5r^fKfrs+-QZ*S zdenN9WM1`JCiUz=omX8)@Q!4WJ%dx=U6UX`!svdB6qL}0YSwA{aNo@QgX^4(qgJ!H zm3>U9E)zEwh{_hFBpln_cypN+hJY7aX-L33@cy$?RKRn&<$ZO0CYKuq#oj)eG$WXJ zPAy9r!@d8`aw*?GXr&sK2+)^<}hYf%76ji3{?gRNM^nlNxw*1;d|`MNN_A_ z;+#$<-AAn-TXA_;#p;2ze|d=aGqVc?ML_`-;sZQyoF8iDs#g01xOof3YQ?H_<5XkP z%0beAM1`%ZP>~*IhA6|pq>1{k7p&hgynrH=b+G=?=nDSB@bcPg?7B>Yo{nnB;0+0J zDB4ZUFO>bJL6ArJrv<~1pI3n9pH~2G`A~81ho4`3tp1q3t#7dcrvodPUW;UF)nFu9 zkl|23%!HCQk~VGw(oo055d(5@62JDICz)$ADqk0?lW>qkm&YfgBx`S#5IS!IOAcoj_!`q@*`6j~;gR<$FmrbxC&0 zHcx@`g{zwSLr%onM8{G6VFxrb0k77$(LXA69&$z6ay5UUEk}M}zEu(gf}3OPoL+No zmxWrrHYZM`w;lFqy-v{c=ADbR!`?0V+Kr8-?53=b0%M+;@0YZR68r^xm@l95OqHNI zJ|0UolXdFG)eCsn&$F2)C^$Vutftwp1)|1LZnCfnukSw=Y`)_u=^%YKx7QU%TPBQFS%bk|yotQk_e;M~eL1ow`zPu>PBe~?Yay4IauKJf zEr}Bfu!$46_TOIJ@Ay2Q;>&j})T5a$GRlLr+tCzYUpzyYSr?Jx8X)Wo+j>?u;p$|^ zDqE0jcTCcF$9sdKcfO3}S|tPp2~@Nr2m_ZAbvJV?ke{v*=X%l>!y`G4QlLl<<^i@h z*J%kyFY-PeK3$ zFjBmliXwGYss=K6eZ-VZs9>y3*-JgS_c7gfrRVFNtk(!B5}ctF5}@F7Lpbp-^;ZXU zC>GD_DnijRzIMpWN&I?WJq=uE>>WxEC*M|#+0Apd7TS+tS`g9H-DQ1r6Zd)?iP`{B z54RKB4r_C^?!mLWEgUK{OM+8wwG9qhAsq(nvImA3#QU6PWRqBz=R-uSye_9)_k3Kc z(0L@SXND;(RK@dz4&1GLwXZqHZWGKO zUZrzS$^`^sf{Pq45c!9LTvyvjY;BveyO}-;Jn`+@S++%gXN>xoYuUiY;eDX?vU@NM zr-P138g3Z3VxDW+bZ-!~YWbJ}1&^>?lVIbwqP?C^Oy!TyN*wCz^`G@6S>$)d1BKA# zDW9s&n#rrNB|ND>vOO^*OL@;3uL2jzzS%txKth3Jd%VbA%glP#XVnr%^7WKu#qsiP ztOZd^hDvmeJKG4Fj_Q)^`ch=KDEeB&DUJf)LC$*Mz5Ll=1b?##o){{fHwFSMVmf{@ zDsKm_WDQU@H{f-sr%;VwiWky-MGqe8W`9JW^(CTV zS2R3E7(2+m?wBK?8>=P56pyZc=@z?&O;vI#d46Fy-FBd=F|Pg7&TPkQ!$oXUEUZqP}DU5}xGaB?gkB>1)z*Uu*r{QD0z38{9lS+MPn7+dwn za2eP99*jO5na&{<2DrjDHPN(p*SFam6_rB14O8l(P0H1B? zBT;7?<&4jj+tGp67_9T0W+X|bh>AgGbwl0M;pxD2fXfqg6eNm49<6hrf^c zOo0i3EifmHItS)(_>!-udl9%yTHa>9^YBpoqW-WGIUi9)$CT)dd$h#J$_;+IZk&4y zEpH|&9Lw%Gm`}|QTx~|TnrfDdrgq0Xr*95F`dok4D4wAOkYJe9Sw>=xMo$eM5V?@s zE`g?9beQja=p|C<{^z@mbWJc0 z<*|JS&I}v`lcjE=VmCC$VD(&$CynPgpL43URAwe>S&B|Qzkn&zIJ|`QT^!IQ{un;m zW^%Y;(7i0O0iS-6FE$^!li24A_pa=#3{-9B=)TKa@sj>mlh-;8lGi}|#@fipVbmwv z5|Y`N>9JYZQ;;abJiNpsm*hlmg1VG5FgiG6jEGn-i?h6niE5saZGB_$A}Jj$G<&!U zz=|b`5>fPmaRvbp_7-pa2_n>tNiL!8Kz@U`|2UZaHI@zbe;&Li31*LfiZstqGmvlL zz!x6Zx7`?7`-Un~d-WtY+XJl)3p?oTjrGM&aWZ0q>#~9$?(8*F&PC%6UniKRAl!4= zuIm#1>f|~jYB-CKKKDj4a*j*g&sp+Pl3WsV8@=AQrSTBN!Q1R+PRx7bGOwMkWg=<^ zmk-d$Cx&DAjVAP2$Efh5Qgo>Iarw2ss$~d?_96Vnmmb*o+RWIpPGSzDRbq%mJAJOl zr;`Isu%#)-yTayPHg{9m8&}^Ixy0#FlV_s@<~2|KYKKNP57?8K@(8MmHRHdFr82i~ zOPGk1e4kY4X!G@3X-v>JV9>BFGx&s;e%hUOd8kQ_Cc!(UCf@tZ>)xe@NM!XdF7P9l&@44eF)Fv_eHPE@m@(j>eoXa2u|RW3yz~7! z4EY95A6_0E@qCv|_XyFD%V}?X?EZw9(AZ3((vv(dDK%k6F3eh#_mcMryzgc^Fa7 zyRhP*^j&=!)jZ!gXZ<njAJA!BJ{vg$UM3TN0;g0@}nr+UZ%hfb23i@G_r@0K8_b0gGH;VamWWq(FP&4@T zUND;45H>1&^dl8_oj*Wb`%;v9VB4M_CVf`0uysESTVY9oQ{6_a_W3xC;(~)fHO+P+ zR=qD)B9CUr#(V7ln1==m+CrTr7g0CHf)*Z7FmUj+@IRtdYhCF)k7x`1cTlqm zksyITIh1Vm&wujYK?eT%lmGh9kZZYxeeZ8_%5%?i%F{qj`T9TPl=uB@PC0qFG>$?5 zF(TjK?f;%ro@Zv`cO`z>^)`tfmPpQx;?l+J=Ou)A-|2Eg|D01ETj77?|Iaz)(!X-b zqpZ*7Y`^EdT*HPtDgUOnIMm>< zh6nvZ>6<#W|2?PtcMgA!rf$Y|f04OE_KTmM%AZ^t6gWnt6QYa%gB<8@>Egj3wEmfE zBL%oNCx64Wx$=u^(?~UeH-=UVyIoGkso@j+Eg%gu8SkYsmCF#z0&Wt10tIp+@`&P?JR7*Nu083MNoEb0|qJ2>RH6HwGRn{ zw3DU@YC`rv&|s7?vH7!nKV6`1*8%GGjwL_$I8Hrbsd|BoJWcu$pNP_y5Nj@R#hh5? z^BuA#{vZX!x%2ps`R1<+z~AW^@QVDiDd?AJ&5rL{q5b-FwU(ksUN{xXwaelvjQMDa zD68@}b(DuoCttd=2cF`eJyiBq`RpeW(sZ2HI=*Q_zX`kEomt1Rm*Ke5bI!aE{zs?p zsst9iDy9D?ZRxx!Um!%zH>X=E>odC}o6&OD4J z-(3P2=S%N^PAz`C3DT*F&t}R1jI+T;O*Lg!)Ea<{pYc5(HEQ5r<(V8*Wyr|+fK~g& zC!CV5t@s|_KFiKXRK!r1-fZ-34y!ca^xc4-jYe{Q;k+bA_?v1$E3rX;IDI3}oxUaU zRZ4KD?}gz=WfhUuUrygS$mt9DDS^{>2kyK0<@EIiPG9L0$mt6xE#5hOl&%*(B zg8c?Bp~*YwUn}!>3~TVp{7*yWAN%RyLhH2MLRLgv!MRKSVGQ~|pp5?vWPr0lJG`?0 z!G^w{1=-Mr_mvC&8pyD5^*oRPlcXh&crde0>rIBr@qr9ikMeC3$2Tf7B1;Tl6GHab zz%L=M9rF8T=Nsdg2Qi$<`o45L@tE^LACH$Y^)i@lx;)-~`DHRNR3b)Bc*7lQMOL@l z2!e*(ct<35ZY)LhzffyL*wMV~qzEEnj5;Zu&axM`LTeZGmYnREkhp|QjLfblZKUh) zdp?-G+Kg{C^hP&}+7$`nfw8~M`;!%2eZ^>{Ou^Hm8nU8~NWtrq&oe7C+WOAi-(tpF zeqqKPq}vw&W<0`+!%7d-=OR>}W^#TJ?j)!9_L@N!aqU?=VC6{AJ^4SK=!nCSz);x^ zDEL2|=xl#-qGPo2h$sXW*GgNWeeKE(g`DVV6retR0R?~Y>hAUnyKfS}iGCS4(XX;Z z4ln-UM2|ec_zx$#$}cDS`#)pGJu*ss%09!l(#|^tvXEgd=3nbm;5XhPKkM^vnkQRB zmxrn8MB$9R?Rzu6dUnL-fLkbNfm%7J-q_UXWHoD}o8$G#;@}AP=7|uaml&nQo$sm( zpFEmV52%yO`}I?f`uJQe?tec$Ab*2IVf70QhIUW-gGfyPgXGdlHGao~FHVdleT+Ag zw8rAaI?X$?E6LUZ?1St|MHq7*=AtQfkhuj#g8KBLS#qGeG!}0fG-U1CsWLusZb#P> z_Dfh?A!9Q(l+@`k*C3+!&anCA5#G(5kK9X83YfY528~(TlOkct%}E-&(f)cK786-X z%?_?Ij)W)OIcyV-G+RjU_^&&y2xD##uI?=b)7rKe0T8l!yUo zr3Xb;d>0p{3Px7oNmQ1o-AcVn%6Mjs_@w!R8{eg!f(89?#;H6yy7T$JC*X zFn|dIn~SIhe1eYWG(hRg6WOkvP~jy?P&WTV>C4twcy-$+-63T=reCoqi}6)k?$M<{ z`$gIjr0-ef99>FrOGIUIERS$CCio_9vSceHYN*KDbQXc|FZIWUFT~+~bZrLp%4Y$( z%5XnAB=t>LpoC`4d^GhD2!sEhn~T4G*?&iQ?qv5TjoFWU@@f0-Btn}F3`vkrUaAq= z-U^N;Jk%Eyv)4dA`KHgqHgmnN;&UL#X1@R{HRM+^DE~+b0#^7R`Q$$_G&*!KBiXAm zV&)v;v*mS;?>93orJMSNeb2HeJU$(Z^L_Zb9{u$g-DY?v-6@k==V>*!3~e5DvFT+2 z7%Q8~Y~;lt{Mil9Ewu@kZx>1YTr{K&Kg&L>!-+7~hpBe(ClIYH_$$_Ayg~H^)(N!8 z9L-RJ@YS61SN5B_?qj<*fZBI*3X}AGd>IQ+`v!#zK*qIsF9eLl*HJ9VQfklA{c70| z%2sQ`WP|pT2<%u73|+i0$uBvPM|-}q3I-65apA9>YQChT7Z~N03flKKX+|gSCvoL@=b5Qs^2~qPM^l-$R=927M1ZRaH=8t5Km=_K6&>#9PKn z@n#z9Ff|Fab{?B7Rhfn9^3N>K+^!kLND2xrp#|wa+y?gU5YX1WI9_bKsJF*q; z@dJq?1o{dWvt_WnbIhSb?s^n}PiJm}&?(l!_^DE(dwi?M7qip~vR3+P!YYerLA9DS@MoGZyo(orBLRFA3O)#pZ)c6@&EMKVLw@ zb-CSwB1NpxJrj3E-2TjW<c$p{ zA#8cs^M)2_1noh@US)X)>+6_JtTtzyWDWgMCq!*xss3vN#(T;3FV{E~%=*@9aXQ?` z=i2X785~!5>b9^>S%hq*&TLh@Z1XSBG}BDYRn+^eI5=ZzMBtsI^m0QoebYV~&&S(o zv@+!s!)&8+fo)4B@l9ssSJEj1K2pUn35D(jR`Kz}s|k0Ci9bCgHsSS^PPsoxFQKaM z`yoqRghA^#D>iJyHt>r}4xMC@U65HXU+L9ii(+YhL)VG2Hf_5#x_UlyLqBdS0_xg^ zDIVa-tbcE)oWE9$HJFD%OP@ug!{q%%mb+(8DcjOl0M9D0grkDaeb-`Homf+2+uYpe%Q6zU|iL3(ipN9i)^QgO^Iu8hjpdeShT|)Qn#+a|Ho-mEF>F zO_x}uOhn=Lj(yHB=ewXiGyLnl<9CkQPL8f_e*!G&I1b;!KE08QHlAhGv1Bj}68{OkM+Uwi zwQQS|N9{(1h$Id7Uoa!WlrkfN(IXvv(0YmWn@jw{f{Ig2z0yV8?-?CwfjRbQ5zMig z@&^3#Q=ceyO&unt#`*3@50mo zaNZDwAy0{ZaPl-4+E)Ys2HIdHuhuu68UeOhI*6W*{mB6ih1=oRbiqM0ogifscR&2I z6h0n7Q5fxs0yF(7oRl~z^#cD-W%0zJ&}t|Wi>SM~Yp zTf>i=FIB95p*Qy#?2`tk4$Pye*2B;RJr*KSm8l_7aqEFI;=TA!bV^Zk&suRAVL5?$ zi7i6cN4m&toUw?_L$lW&T|?B8X}9}Aw03M3rj@9&!3ks*gk4~fR!{JX*>mDAioj$C6-BmT?PTR2Y(5_Ybc8u zqCkg--|@}%Y@IIxz*~zt_*Ix+6b(KS?LIl%-N}W_B>-0HQa)XukI|b}b)qSK(qW2J zuqngviDPLaQjC~B0Z^4Jvbk^TJZd+@7Kr1>Rj|j`OT!4v%UF7mdu$k>B2|aW1DMg@Llxbx{se^1tac0W1O5+?(1-4|LlGmtk&>) zdfihm1`9?NTrJwDOuU~WlXjQ;7FyCc{YGlV(uJ9 zPEgD{B1jaPQ3gmQX-iD-#2QOZT5A)ed_uY+h<^odk3r6{-01X{b@w4kmF$^ikMeFj z9e)sHR=b!;7^Q`|SER<^TErl{G(zuJh@47z``Y6dytw(r@l3kB;`VeOkb0n?F|t&- zBlrqnSF*UFP|9JhwU_aGqtkg>9;k9xgyq3%-^v0w;T%Gpp`(M;) zQ8;Q7{$fcWQ5oJM&l8m|M{E3ji~RVrMSAvFTK-Lo1fsOZgjS!r?lBR$?Ai&LS-A~! zTlLMOtq^DcPQt~O#r>zGm%s%W1d3%zk+ftd)$b;_y!7o+uCsRiIB=I=Ac@9ml)WCF zE2i0kR>rAeamgxd*S*s|%ec-1b;0nm6RZUglo%a@ZvAx5Q0c6bV5$~M#?&HmgWzk&|gpAT`DM_yu*gD1bHn{I@tjYUBR3k^0G=`?|_YdgHOVWK5PJ@Qmlu)40C@SXv@^t>6N7`7B&up{9gY@}X({pMHD2m7{> zSAvMU>yHoiu#73uh?;h$nuAC55fh*N7FjC0REOH--ebw+FnSi|BAeUIyg~2m5ENCL zFzYtCS;pAJrlJuXtN`*Iy^VH@(!PP+Txgg4#|Qf@{DZAr>gVe;Coj%7TqAj@6l;~H z5OJm9@^>L2V%g{Y(l@-(^ilY)^?ZNO{Ed6fZPA4BO9?C(?CuFNMrY!~IWyz|l0Ii- zeVg|elHM0YD0>{;wAKN+pbSeOYiNZ_+cDa-Djt_ zH9Q8Z`?a3A3p)FUaa@g7^U&%({H}w^w_7_HNfFzOTkDkBV09nRChLLwV|AZ1P(S$A z7>8ip>_Sy-a0HM=?u*1*F`#m6&?Wo!-^=m0 zo<}a`j!r+0NsuT~75h}FVH4!sv7&gvB*Z4B#ot@WuvpVc;NcDg5K?$OeX?m56-mx%<)*#N54nc@Fouuw{-7(+3ZvM|9wU1ZZA{yyTPU`r02>1|M(M z^sK8*3RV;=V>Y07Np@F%0}x@283o$F%CLwa7M`HGA_)WSo2`jhc3Tux>1=I>QIjUO zZ%4|M?`WGT5_08J1Is!MW`l%gsGOwz`wF7=kT7`?Db98$QJ>ZQ!et$ei?D@Ty6B_@ zosV05i%Pe4E*Wk*`93**)ySamT1#a6-5gh0QSGyNk}__5B&-3m){TdrLP3K=h!J{m zb3s9}Q)V)oE{>k#-b`;f%VP3O$8*h*PXKtGGg4yn2F1$L6J=UyI3G?)juf#jMx%G!iML;VMCr#(Z6O~+>m zl^^t<^CsK4Grcq8ULq0UyHmR3@OoLH1yx^NsEV#L^FG@i7r%eC$>dvuEvJ4w9@nb= zP^O6hqEhdRl647Y1k1WH7W-RTMUG#;xD^pp;HFS}2M?5dradV{TD;~tVqo>NE}R}x?d$JML@ zS3{B{^8hwDscRQ&ORJx*2K8UgoPTvkq5**N|7Y$x4o20_@fl$Bdt_%_4ZD!A#~fC4^% zd^^$4}d>8exat=VP)exJfNy`-9MxI5DEpWTr&4r!AZjnlNsxB1Y4QN0wN z-w2t@O4I)D+>vYl|8++``!{#wvE|bIe|Jaz&aB{SZf9=#tBPlphgI-Tw?<1RSB)+q zpN=whjw%(Ra5{G{h|}p@OnqUF^~y+_t>kw7xW{F{v%7F_{AWmmY&%i^rj15>%YM#B z?SB5*qpiBH8`05O2rS0@kFehYj6IG7u|_{9#@4E2o++tt$9%Q({^UV*gh|yh#dsS- zutAX3I54We#qL{9b8f{>j#c463N$tzkz%WU(zqmJK+8mGY{q0gF z7erf@CNl45UuB)1VI6&%)~H9)LRV;}uM*SD)3UHi^ipw{w=t>(n;)AH#?7}Ia>=1U zbj5pg0x$NP6XT=sTDrvwKjzwZF#>6~I(qLMxOJO%E`jCM<2UYu(DLfiX|AVMGqk*_ za<6F|8ech`u*tnHui9OClr%kQX~gTCLT)<;7MX%<4EyV=mDb!X%$R%FH4f)k2dPf{`6 zS6mfC3%l_aDJ|r8`jG`b+J=^(?9yrOuC$pl2Y>G0(;!5^u030n@CcJ(kAL-1n*KSV z_>6pW838x^XY?~|ex*2}xatf`>d_3}p2fGtkIBywwie6$&?~rHuJ6VWRbTAq3hclb zcJCS33oy<6Ht3&YT`7GUY6?zHSU34wcUpm?q7Ku4q!LWUoMy#UVmOHS=8V@@vbl(u z9#J0S8S742bmHvCjF@uwlxT!|rJJ|KHO>FB<_P5wweVXqkXHy0T)6Rc6>bw>W(i;^}T+>PR z*h`hiM8N55!qW@er*%%#)pNs6;e_nY#sd|*15eWL9(e@hyhFrtjSthtj)vfb-EVtOv9AGJRHVf;2Ah(2RnuMNX($ve_<`0_)_LSl{nUGC#-E$`{Vo{1L=fYvvz z4!wvVATTE{u5DLIZ@g3`{|d8ik-J2LO-v{R!C@78s?~v~+GZ`gzhez9*4}4TE7(5PR9-O{uo;-E@7OjrttRP)iT9)vi4U>GxeziE3Vg zP;{7M{y^TWoB0URuv#REK;ysUw+Alg*)FI9Ae{36yJsI{yM})!SkBHAvVw# zpP#FLFW~f5=M|uWbH2k6em{3FMLU$?^4gc3NCpQC^xc8UOZZDsu-1fWZNB zDWAdF!IBW7M=!QwuqmUMO){*tSAhq7WE7vK%9Y6EK&UMiRck z53%|$%W{}OFt=0l{=Z85=(XtA_gFcxu=x1x+a8Eg@U6vzA&3#j`C-3B ze`cG8RP!Zwum-)qy3U-8Y{Q|OQERgAk>=f3qDCmmirsF^=*{{~#FCd)i8&FS8PU6k zFVgJtDMs*StPi?+hG6o=VskkwqMU(q0Z zR^n-O@%CCcyU1R(ydSYPxm)Y)8yNRE z9Qd`iea~ZUqCLzcW4IYNKpsd{+15>yqaU;nH%>tNaEts$+Q-!YChcQJxs!qhrsY=> z;Mg@JDAR20v4$dsq8TcCGu%O+qMltZ_W> zTJGSLymMO`D-3ro*Jp6=y=$MVh|lrjSLmZZuXK?*K$DS#CWLD>)AaG%dC8Zy03U`^ zUH5>-SMlX-`??d4ogKqyYTatP?qZGr*P}>4{3w>OA_DtZGM?C)Sv)gJ4!ZmgmEO`k z#9N~muUU~HCz=8G@uCbjqsen=9W=3*Dxw9P3N(2OenBjSMSgQRd!$LW-Uh+cTrs#U zd-_I8ix(1X8t%Rcw|8*7npNcyxR$tUsfeoIN>7l?tKX~{v~P_(5#}}h(LR|vO^{)+ zPytA@SjxCtJ!%_X4&7t=Mo<=)V?WN*dmji4o~2G7#1d{g*w^`0?7fN1U|G476f>K> zOrFSNm}ioCAjmq;<5jGf#K@;On0Nh#fAm)~!Dgf$?B{xuH@+TYQco;@3AViV?Bj>) zfB{lhZfK(+PawNX$4$3E0j(Nlik2lBCp{H*TI1x_w>v86c8DuACkgxH(i+OLBa8DY zQ}WbN1|LatQ1{2?qk3O$C2nk(-%Fzv*>(-gMCk}rf2wkT+VJP_#^ zQo2S7?3PC%YnRMq<>Qj}c{RPS&HQ0p9xi*vG; zEQ!o<9ojV*UTe%gxy>zDAI$|ma?kv&T^ctpvE|4JiH*t*CFPy7af>hC)pr4{S^Zxp z+25(^b9tfpFObb2Cx+pmN=5JCByfi1K&GR^l?TxO0Io; zA^8HV%vxU1iZdTfuot}X&-c1enus&wJzthKOxS#lfElCb*CQN0a<&eO=rkgKJ|b!eLCLlb!|1?+%vh$vIL;UoR{Vesh7!KN2}Qk#|XZMaF`I8ic31GBEj zhnvnipc(ejA*$B=GfKJlJB4lNz%91yOWI_#Qb%R~=c>~*?U%2o zS8GU1SBql%R6Ze2`P8*x#V@?iggb?$+rMQ!X}TI~G;pH;->_pIIE5P%E)&}FY%xvb zp)1m22w9_#ISD86;ntCK{}CpVE2MdLxsa4H`&GE9o#SlGf?Od%E{k6Ah)<23qq`uWU2opcKa z?L15*SMFU=J8wR8Y6w+e`*CWJ2bV7b@zOTHOdYgus zHjC)xV|jnkzVZeQ*>QrjhM(G3XTFQIIrG;XIG3=XC)QVqDUj9x23k;_obd82)asj_ z{VK_EDRuw(4Wmv4W5R~ZpRWs%pn}T-rnk#fMJuN{=0}HjcBT*#KS#QBNo;kn>b~p8 zqob4q#3pzOlPAfK_m%Yr5QaNrxA!v)*Ki_MRbcN!G%X4GL{h@rjhj8gDj+ble*qEp z`~i$J5{rBOI>o@_x3CJUxj68?N`j;U6yrUuhk@S&Sx7}=XGcZFo(`WO%E#|RQi1D0 zDj=R?kZ0e5E2kk#{Ju6Qp+ateC%y~uPp1d*qN<;#2XSHTLwI>g4o{9k+SiDG9ch0D zo#gS;shjcBsf#7(@yFu|8?_v+Twwyr6>{@IMfb(}r{T89qBO@$-w=vfZY@yXruwj} z8d6tQkXsoJoVt$%Q~6yjwtAk=&Nf~0@(aGs)%mW|x)WwH@c*#(R$+B!&AK)OcMb0D zK?6a9y99UF1ef5!CqaX|y9Wra!3pk8a0sr!<$s~m-|FtQcV9dIT4(ckjvDpWsH*3F zvcFdBd2=!>eOVjI7G`GCji}gvoKi3tQ91<;53gWcfCoe+&gnB* zm#-vRLq6rKG44Gc?f6U=Vo1@Z2))yiqIb5`j35I=3@*KybiQJ>HXejsCq{xWw1 zV>sB_+eAP#uR2kp!(OP~9UK}AQqeY|8N_-WR;kysfCPAg#giPsdE?_*uVM+Wd<+zy zzxPRXtd@qJKHl?u!Ed0iGfKO}*C=_vVqh-LmSHjc76P<@J7D+;Ot+I-nCHi7rZiTN zRvcemZ}U~7-S+|DeU*_g)VubEKtb$t_03t9{1&>_jTcSzb>rZN{8=pVFh@`puHEh= zGI2g-aUL;D+}#2iwrJBnd1R8{u3H+RWg{=5l^e+`(N5?v2aqa-xUe{c?Bn8!800;%(Z7M8pUmJ)&z}CwFLIK$?;}q&&RX$QG_{;2yAOujx6hyHW zNh0C80!UlPamZZ?j2bszM^8Ya3j`yiR$%1F;~Y#!@egO_1)Q{9CLkDf{xukXM<@UU zqnd@IxiV0p{t~|Z7c*gwH2@17EgjaJhfx_E&76|Na4g4M2w%qbO9S^}JAUhIg}XF+WWD*2Sp;tvAPvWER(k5mpMhEdE+dL68R%bgT-o zZ$5?4LA&8xoFX_C=5!pJN#B^eZ~m>))SAixvwuMb&L0^n6_)KR9%)`<%T418drv_E zRAZl$QO7dY75`8TY+5df{1E)Ap%ZPLzcr}5xAKU%gbX!LQ?!@BS++VGJKp4sw$Aqh zsA8(0ugY)+Iza#E02Wx~u2R7g4@u!xoZ0GPEaNGh*)An1TWJWzhX-OgcG;M%;Of>% zmVO?QZw+ED-{OWTyNc--*!dDz2sDo!G1KVDk!!yZzD7lUwUd5)%4+c|;aSPLI znO_%Emd?q%N+_OSNEP7lM|;IRnC<(_FN#IhnlXlBev>`Qo{bgy2Ttv%=$5dEwsekY z=iQ1FH?UMI#=O&Ktn}R>S0oAh!h(>TUhoY?)Zz{{Ge--IhU^|`PWT?_$+w?)&Tnu^ z1vROUym|e%z<7!_9aFX`n6?L_3FMDQZXcR-;=G{;~RJY${A=qMG$ z#wtKos+tFvy!W%fy?=E+Pbt|`Bxx4a3tP$A-mzjZ+0~+@s55byqyWoYF~t?BNt`Ly zIKw8vK|e07I){DvwEqbSyr%N3Z^(Xb+aDGD2M&RpA!R zhJ$dfkflaEu?5J$Lu}SX$(Y4-F3SV|jU8D}ba}&rWx#k3OKlUijbvD`YLArNLMACKk{v6ZjMtQ!s3iq-vhjAo} zD*OCBaN6lGV8&64=EC0BJ5rM=JME|x67yt;kWI)-mnaG_O)CggC{u=%l7|dVy0I?> zIiCFxDOMcxF*=ljAyanPQAs3SDhy*2+vzw5T^?^I#)wpoklnPx+Uvnq6a{8&2$XA{K}D61&&TH*o{U37{5 z)O6b7pWX(sjPF?*Y?iZnbyi$u4=pI2z4hseCy2){c~`OWiGr9_{jd_1SKW4ydEEfy z$vRVh`(hoszv=_|A$vkwc*VL+#-cu93EQTOj8zFj9ezE`C71n+Be?bGulW%--ty$> z;QS#T$d|k)P|G2`@!l`U^}t(#J&-QBPmq?AduzRI$d|xdLKaXwP_Fooz)nbxP*0eT zAl3uFeu@zH{?hx&Cmq1(3y2ay5Q(ROrHQ0HOA|{22bkl}hDnDZ1cW~zr-*+5Z}PrH zcR_Q7yL^7~ZrNm=^Q%pyn)ecED~zt_J=iT;J(#u#Q&WNxMjQixdZa1?Md$aZagP!Qnl3Wgv7<%omqi55uHX< zkOtmryDh|WD%Ub7xl*$8S}hF{<%2gdrJSZDq{?e4@6`iAj+w|YY;GR^J@lHUR5dcH%0n z?3TjAqRdnkmxp~!5gFvC13F*Y$4QYlC2Y@x8ZWQfC$RX2IlcYihOn;!t?}sNOO5|O(cie(+AICJ zoul#Yk>O+=muSq*QX#$b=mg0&>J2M|@hp=DQ!_yB@$ok3GB2095cCD}M(GxUe?zbh z$`jS|r+AQAo=;pAN)V#MaQmwzje}Pg!%M^h;JjVrNVGXB#*W6B%s82cGwoYW^U?3u zZ-nNk%{*ql?CyWCCEHcy(pN|dcWlQJZcyCcj1<-l$TLFb7PgYg*g6EYbSYqph@x_( z?Ln<%^c-2bL;JH0cN3Il6lCSB(QV?U$>@!^O~a*(oZ?pYu=I=+4n+A+&hW4HG#%Kx zDtJu_pue9f&{eij?~Dqr3^xI4Wm!B0y{`F>jo=-M8|awZv}<8pK3Lvj|D7|cCA`!=4`0k61D_KmKXU&|3s(_xg@N)00j zvXztLwmwdN`W2{YgFph%g^9)tE{27?+?RGNeUL1iowahD3sdz_4l<)rC#_xDJ6fqT z9y}pi!g`S+B0;rmN02PI6s35X%!KkxaJnFzv_gs}DyzAF#BwYSwZ|6U8QslUMh!iQ zlu7y=@f}5Jq}pCS?h>H5L70#a+UMhbo&{`;IW15Z&wO|e2)>&vCR(y1x_jUpkWc`@ zH>o6hz#6maEmr3N=n8yxp!YUx!JQ$gHDaEHU$}Ji;W-OUdA)237s7>y|v&|Y~xj>Zs_UgUBDAzAsiYWbfC zmEQr{0AXq3;9y~6t>@rq_4f~cs$!cI1Pf-0a--dJk&0KFUvnKc-w#y-G^k94A53lx z7O<2igHlnY=hM8G;2&ZVlnc$>eqSM zH7N;AOmge%VguY$JC^jES1;f+ou%MBb(oF(GtDtl?&#ql&v+2P!P}s3E$Won(YR#z z+NTHt5eVv=KU?FMx-Pbr6{GR?5S{xSJ<%U1Txh!CfsBy#wrizI<5e06w=CJusUVJ{2I;4>O^gm6(#4N=rt$+ zy{7b$nsOv^tPD_7Zj><0l!4(w^xWT6eSDUB)OOqcAKk<8#P(c*d0Q3sj z;#oOL8LbMdS%aOQxiNC*AXh7CbbnvgFpbWUd9JXS{Gc2=EXE4b|Q%E3~+jz#-)*FH@3E5d|$V{|$Y^8j=AZrPS?M=^)L zfnA`xY#=N4^`Q11(lCl4WHx-aa;TB-%6;p(_1i&5S*cFcxmc`@Q^!`1aAyX+@0*Rh zW_Ipu7ga5ch%eH&b%Iw2hUn`uR>_!H7*cX`9p{AJ#vAZ@!tZ>+DU*mOM(m(|kh+Zt z-mPmxon1Ycvj0K~fXcrWV3um;$);KyGMA(K8M2p>zgSq9v4#4Xzv%3BpXUGYYGVLT z_~_%VLLw}`#ouay&6g#zHE!9@FsNbZMF zMkGO!5O1P17P1CeX+%j`X^P&>ev*JbI`2Fe9Ec)#9nRZ8p~Fxc;v_$=M~=DoLl12> zFwaZSSkxVbQhJG$>Vid1H>K&4l<80yu0@b}1kUjmn2-3vgP|)FOh7*8krI6om2#@) z*N5^0o(yHyIUP$Uh6y}%m9lws#bU6hp(gi=Mrk({Fx(=-M9nJB3`E2HBQDyjpV)=CU9o0!-JkknY z_bFL)U0=O7Ucvj@5ea-u1h{j+XHf!3#gMCXE!a+0p+n1YZNp!f(2|Bqd z6GqHcT-QqXKr{=TtI-Jyw|rDA79lyY)r$s1L~sg*SGGmc5DXrq|qt zJy~8wknOO`$1^D79NaN-`t8#)_HgqX>(3*`9W}2FoaK)zM6KV(J!rC~;G!P6dT>Ry zeU#@dN&q(3$^ErmmHK&4cmTE`14*#$GK`8_a{$tC%~Hy z>xaZ-wPcT@@#<0_64P#S?KYdu+4CeiApR72fE8BHb+-1pH=piG^U9OJ8RI2rtY(UJ z=EMa@YRAw-NI^W&np@vH96}`+XUMcA?wVKh47xWhdymdltYzdH@tiiGG@4^POY}X& zRuHq#RL}&;VU?D1%U9N;W5|UzsLEH`IeX|#W`smaly8*ZRSRT9=vB35-}1wSiU!Nw ze~zTf5JBoM7%3W?ld0ZhNOmd9;l`*Ll==LoxtVM9LuzkXZp^fupGRcTOB1K@t0$md ztyCz?0gzZ>|5kteGqL^-HUWqzduwSES7#ghUt_l?+T&|XJ`C#jQQVaNacZtmJ~1%u z=sQJ0WLeJ?MZgM!8eU6G8nepkEZE`B`*^?$e5FHB2YSdA8`-GSWt1YxqF`Z;di?ws z1F4U+#}5$YLGz-Q7wi&yizEzVLBwV3KvtW!(xC`&#TX7U`lX=w~bW%+q5Y=wP zJYQztf$aCD_^^!RlW#y)*z*}gEiZW&vuUJ-k!i$w3j&s=qMz|OuD47vntZWeYFmhE zuLC{$2tO4Eofs|SVDv@DuV94GeV8mM@}88(8o@u1BAQ>%I-P`ilpW*l zDLvC7e@7)6vd7JYZh%;dUMScyV!3ehtp96|($O=f$iZb+6E$0o{i6uFiY%$@EAaZg zrYpkS3p@P*498oq0A=u(91I4rs)n^meE_?p15RbA6` zjm=bS)2*NTS5RPbD_=qIzORE56nu1|Y@^@=UnP1jZA8?4NEoVfKcy&KPCycmVP+@~ z#rVMfaa^6M9b^I-2A5_SZ$MOkvEq*&l)*i?gm(6c2c&b`6N>TqRH^UXP(JE}n_Xwc z0Hmm`Zl&nbMbcdvI&K1XUqyzC@y=!F{k9Q zR~w-CTm&MC>3bcN2Y|Jqujd!l)WgRaYQ2F{g)g&s53f6^{lZ1|)U6Fa318}Btp-j@ zbOA*8oUqsZpuI)K{iy|6ogY;q4V+-?-;%>WPf+lGc7lI=c}f+BrJp_88%!^Gb;}=Yt3Nyo~3d8eV&|P;Jx>K!H-gCLAU;nro-e5qwk!b zF0OvwgD(@nh?bCUwb7EI#AmXud;%;3iEe6FMBw|EU&g4`e2XZagdv*3efBOU0(3(* zMaCiamgR2aJ94ey<`k}$e1-eO2s$`rbu z10^2*o%M(f)ZoBG5F4hu-CO@A#aR*L_{lUAO&qCdP3iG)m#E&(4kBT9C|{f=;!T2% z?9$Au5qJ}cWa0OI*5dx5%wE^f=TiO?5l&ljfd&{_o&8_h;Zyf<=i8VJBFR+T+?E(U zARem(k$Xc(3E<#|!l+?#ZC90>=ep#bx=_<8LIrarvmNhK{ zz##OuF6@Z{sVh#EP|S|qCp{7$(Z8tBRq;6vnrzCl9wJ5macJn&{BQlkA77PZY4p10 zz^n3M<9%7o9+oNH#}L$TL0^+CTiYv z=UPmOlF7pCPmRTvcJG=+U=?4f4q$1bS{D_cMb}LpzDjF5Z{Do#^PY|kif5~yZ=QGR zGZrrWBKb<@RLJ3&gsnDtJT|?N1|K#|JlDUaKY^wF(j2|)ehbp~VHfJt>ls1Uw?ogJ zT##=l+rK}9ktS$x7MSJ73vuxl#uknt5a&AgeNrU~=K4w@0DpeLzyA5W|G)qIKcAIP ziO%!gcxU(9VpTp@RNgA00a4zBKYM}ImQz-<=$t0eANN~NC|r(UF0(r&>0wK$`SzM> zPb*H}Cwv;Nbq2%cvaj&*g(wasvjpw<3)sC_b=zAE#GqA#ZY->lf&d9Mv)Gn@vrWXK z%vnkMSlt^MsX6e$g&R|sUdD8;@q-)^F_jYSgoNbUSCaxpyn>ls$!wRLP2NxnzsYc7 zSUSSo4V`lwsc}7MOD6x6sL(gfr?oZt5U~a9FF%<5wE1AP2#EU&D>f}m3vQZbn>B|m z?p6`*=|9gNUf;zLujdJ-wC#5#qMe9sI24q|q;A3E^ws`(RocLXj|6ZLhd95;Esxlb zyf#;|&w(Os6sw}OhjJ$s66yu0s9oh@gsZWl2C+j2zWWC0Be@b`Y5Y~vPm9Tx zN6;LP&&t5R9o9dqpWlG;h*_9e{#o?^ZX4*2VE4~H+xiu`6SY>Q@DP370ceVp6tYPQ zvhW5gAZ?~vlO0Fstxf~@O^`G|p(PxpBlxzKQQIM+=F4Bs28vpcr@Ipih<$YvkRmlrMo!J)8W zL%j`IxJiA-G(t?w&srZ2TG&KzMn`%M0>tZi0wG7dUK~m7xn!S8B-~t0BI7XCT;q?R zJ{7@ci$;$qe_uVaU$&uDw7hQ7$>JCsvYFdgT>ZGyJh$+wh<}$@8f`-A3mu_ri3JUg zdJiRNp$hz`Rtq8^EG>DyMZ*6HtPH0v_#NUl=|!NdGs)z}USxX>!K_0&2DDffmG+Ic zRDEDz3&mLv0yf9z*<2>!Ro-R$5FtJ!`RlRWqZZjDOl+ZWnr_<_9IxhpuB2}f7Fyzu zD2Ub8GGgAOYKwu<{aY{JpF@JB;|2R7;z2GTOP=M`E`DO!xy;(d5e)ljMPIzgn>SR5 z-DztQpDi4g;vI+QAkmYnv{^KlAj4QovF#A2?Sw~@F&Z+>ed{P@*(@WgM0F$6tv^7s z^%G|{tJT#0kU@i5VYOU)sUdov{Baxta1q@=sI+TJW}UVR9Ktz>5;5Y28xQ|L8`-Gw zA;j2F``+gaf4zSx@;j%%>*A3cxZ<@-^;hDyP<`mVLfMqL99?ww%HQCFi$DoAawF{D zqQUS*RBG~s8hF#BieDE{23Td4j2Zjm2~);iJaCMKIqo{5ir9-)2`2qS;KD?a!H)^k8p(2`&$F~G3$U8o z#KSH`s!J3pb-^`IiidS%@Dbt7I2e2-*PEYenGg+wHkqma@~vf2)M{}bX^78>yW_^n zxGsBYkz*FWtI)8Cn(Wl6w6z$3ePgg+E871=9i>YV}aUSw+a zt^j`@N2SdmZ&BMlk-yKWg@UvjI6a7_i-Wk6%22u+N37L;nuj``rE2Ai#-qn;sKlDWhJ$_qR z<=RBZ)7HyRzYpyVG^GyQ^z7n$BM>yqyl(SR5kq?^?9@$Mhi%9A)4Dwolh$uhQ8U*H zB$WNi9!T+Ne@*eNuH0Cd&v%bSzH{5+?u6{nokNe&5EW7riAA;TbYl2Q z$y>OlE(VMt#)Bs#kRD3Fimb~8Aw4ez1%JVS`7E7Z*7n4Z!TqUh?ojtS$%tEDYh{m%g zZPc?|MMOd1oLv5v;Qv_)iT}TUjsJ5_PZ}vx3zL7~uTvEtKg^gZR#rxalh@$);3(&Y ze|7uJHcSZt z>6xCiTwb#ZYxI>ds^Vq^+UC3JvbrTYwVAUq@xthBZqvtiW5prg_imAm6&gdLI8{@%OeaI? zTGieaS-<1nvmt0vHFc4CmNyNla<@2X^kM-Cy3HzadWp4hiR#c_l8zStWJde6grK3{ zGBAS;-S=A$mtrt2LJuTowS$a)Y4idWi8-*v9leb;2dxFoQJ!qn_*E|a0)BzT-D{B_ z`NZvGSs^m(5P3?~{?oTtth%j(3OE|qf4xEi|C6Kn^J(!^E2UOg7#dZp6#uG~aD zU$O7(#+ub5`=8`a^*NG9Qqb8ggOOf-!GYY0*63M2DmyZEv9n+IG-&LqB^NVhNaKg# zXE9*3+>ad>ngJ1R#+n$!4j)AAxA6lEc{~A6^LT#XAprv$Xi-5f1{_)3-)_@C%cb9t z&WKyu82*>e@S8P;AgbrSRa0otx7G4!f3WkJHf*_2lW(jcWUolNx?z}98^4H(5#W*Rh@)k?DQju^y zLR3yzR~($XLri9!x`u7_rEqXWAmUH!fu=yk1SsvVDWItEkOZ?Ix56yD5dB{~dQ2qJ z{qZ_ZrL^gy(FYE|1y+!fi<`T@jQU`N491!c11zm|=C0b%WqC>`s7 zs^<@;=J@E8yT^ZV&NCDqs;eJOP?Ni^03{CCG|FeWmhg4meWir|oIH;*)Lk`vTz!wwW9l`( zS39Wcq71;Z&pnusYcG$hXs^;R>V)`fgtD0vL)}U7p*@vox8GYHxJIR^B^w&XVo?ju zCuY&+O_GMKa9fLRAgYG#)(zp(LuW_t_NNuLaDMiWWl+D+7Ztb*a! z)FN|;BZ_fq*RfVW29KBvSO`~mqpPrfl2R5H(xNiQTi%AE2kb$_9<9lQi)9KXVdq~n zW&zABA2+HC{Ko*Td4Z|^8VJsrzZFXV4A9>g>HQI)3idW;_6AnJG+w2TE3r@Q%$jI! z${fbeC-Bc`QT#c}N#BSl7ZxbG6aei^p;4EF9Ht?z(0!@J6YR&OSp5KfpU${XLfVay zs8*C@ugMpu3DVs+!?$iez0d<+=qW|FXJ%L@#MEbXG}=cftfv>EL@&)n7jIp4p;$=6 zCZu&n4NQ_>mw@CA78{j;_u7*l)PL`>(W3*M{e4EuCoC%<%I`TB;{1cy2lwGm9&?5? z1bINS+|5g}uSf95@p3&fb&`Dc`v-4gd(P#ztNf?PIUnc4#wihs5mD}o!2Jj>rNWh2 zP4syX<6!;P1`vDJB%&^FRWGGjQ+6?qELeZ$5ZS-T2>uoj!6sCY`{^Puh|yUWwE8uj zhKM>zxoLloA844TzS+Hhk(jz-?LPC)S!p~YL5y^Xf;Yp?dSaNX9RYMgvbp*bgI{Z4 z==;{_{jvTwOio)ov_V$D!uj}O^^(oDuGF{XJsQfNszs8D^zSmEIbyc$z@UG`DP(?J zxouZtOV9t9hBV93R~BiujxZ>%Ps}#M{bbR|Y3l>4WF97gbke1IdSIpw&7b0pZ5L^Y z98c32N*{v!sUV83=%v=-o8DoqC4~?1(A~Vk`Ace&&zBWCSXC`l%&kl{9pYqp)!0&L z=Qo8uzo};vcxsuO#c*;6Z1q^yUW+@v{%Rn8xp@Rlp?)G_*;&DTOge5-wQ}rF;x6D)uFg1XhSg;`z+U za6Fl>chZeRj~7@;a1+=sM@}bCk9oEh+`aCvfINtqH~vFV29!e*4%yN1^$X(oTEhyr zSpTU^&kSFrA1G5T`MxZB8qimlB!LF`hyam^;S`xt0I4cX*`o=bn5G~!ydM$Ewo*Ub zCM~t_P|dA3PdNV3SNl}x4jDefC~i^JPvrg2q(1u+T;s4(d(*BNPlTTKyxBm6W~N#5 z^(94QQy$_h9ev(k+g{k^?B98mh5CG8G_>!hY)gkzGSBYy>1Lh<F znr*DXwKiMMMv{%@!Z|Jo-Ymv5vD@j*2DGr=g&sJ`=VibTjN;J`Y^yA3g|slJfLFt+ zp9Np;U5L*lj&VmdO0|Du&1N!tN@;J$_T1eoENyLr2xOMc9mqY6cf}TN{Y@6plx;{I z3sfTSBGK-QPDg8cA~Y+f2#KnAi|*gQKOVJ6-@&cvduUJA(Pem{*8f~En1anX{+V@? z?(%%4VEgYq}t8e8>aaG&{>n5f?kkrEf_TuZl*KqbhEfAr51|O>! zEM_6J=lvL(12NzA%o#|%F;2h(b0bwMZl2g9;oy@!(>0G>Um7u{ApW99%FsYV2!_{% z;Ns_L^j3X$6NIOV>p6L_qwlYM7zjnIALWu%0+Az2sp$38&_9OpVR`)YZ~yD`@i!hl zkAeSa{P@@4|K*0~DWjD)LPpXeT2M1Cr1CwE{bfdl_ zjRvJuyc_C_wKvN=75_SoYPtKaJyss*+y3Ygg@a&yBpO#V6XNKO5-!dMjf9Wj=;qv+ zIy4*x^ieIXxcVjUUYS+P$~qw=eksE#TTSxcWwlJZVo5faXBE_3KG_#vGxe8UUU z@-_KLI(n@_5fNpF?~Fr+zc8EdMU}(mvX6{TR9Bd@x=3TmP~QYvvO1KU-m1R&$Wmv`Ve5?7E^E_UeZAmO#LWdwJ?-XUqi)z2G(sZCWUo;0|544psJm-h^VHNT#`ax zjEbv9mE@R7wq3wNtGHnRQbxX4y_#*J=r8nr~wKoq`GMhu5GHMWF5yw;(q9>^I+!E{)?La~Y48QC%n$Xi7l2cJzw} zJ>a~$XOY8l*2kvEIv02w132&PO{bwC2jJqwo~psel`~}L7(%Jx1V#pP*9@0y zw}2gs0@ev#kJbrMTrIWE;s{X*|57>>V&dSh*!vAs6dC2rm5_ZpZjpUX}RoJk87&2 zQLNU2J?qg{FB7oUGY?FskbT4bXscKF9QW;5|KLYCWA5-H&6fZY;gEqkLp?iHYIN1q zJk6q5!U*6sR5YdbPO6(q^hXJFaBJ)W>;u|4GiKQb*elOH_dvNI3fOo92@N;KE-`nvmcC@EczcG+I}-wa z91|mSgo246q}1t0GQW?mxC%{`{8o3+@3Fm@Os8UrQsJI>Wg57I*tqo6(sCe}HD`fL zQX~z!Aydnuh>}tksQ-ZZft{9a0|h-cIz?A1l5i~^~29B%0he%zAbj7K(9yx=jzVoPK&HMCP~&aP6Ceb_5&AV{fjX03M$>M z6I!bVvvP2^dbQ7-@T!@kNt#}ZmYhS<=qKER1LUr)_eWLMraus4q8uZSvmyeJKCSFM ze9$j%B{X1Rw#?*bTnl^2kiD;IV3wJh`(AcQttMoM?7(121e;?GEHLi$sZaI#JpU&K zP*WBGhwy(N+5Lvt<1YvBpLXJ}?eV`%j1WKOQ(;Pp(qIPEoY5ukE7o+%&Qb*Yb$Pr( z_i=fg=L?&SY2tM47B*P?UnfQ}!}UNr@z}bf5NIb7(v*&231@!Cc{O8PClQ7|W-H&R zY1}Qrh?UOUjG@aTgEhA+=V-ZpDHYu7)32a~rB=ZiA$Bamcf=fps7g(Qq3kBrpS;H( zV_FA41FYp_W3{^-UPR@SKaGnHZ)BdvMR)~4z_>`lmFO&a*Je)OQuD!r5eMid&f9D} zj*AF8fpL-M#;ICsPRdpv;zrrjm?K#l1*@Iy*OA*sUcb|}5)7^?*fY4Q=dZ?CBNnsf zSxCtl()fJ%&@-ue=jeZpi%blGaZ%K-agh}9T(0xu^D^DXM~0WBfJ5XO zPMXsp-Con#YnMYQm)|grma93ebr~$h&-7pL(+`dXYfWcXd?^IaOXpR%`$fk2CfKdBW++v{N?TfX^9um7aJR zpqbWnqwYG?wwhfSABi|MFe6F7FB$a)7|rnWyujxC(MYWSy~|49=1r;%o5;`)MIi1sK``TE)Mc4GXSI(0U^5tXPG_`Lx zioDh(%_Ls(G3g$juH+B~UR0g^PlnxA!iT1 zlXflykT3^lJ0~F^G?{}^FP)E1%p;*fi=OUpF%G- zm{O?FI&?kDDU|f~-8F-I5tQ9+0W$NhgVT?eGytpy@yjdIPy~~Kr!d=CHiD%$={wxnspkdL2UK~2ELPerA@#(pmJ`@COGY#(H#$+ zpy{FeY_>mUk!-jZJ1M=5Keybe(p0mm*LoQqjcNoh5^p_K^|TEeXnLgi@zhDZ415=( z(-T(G;ZQ^oTr@ZZgL!f~G`_O*4R)odJ(i?Arbx0PZUH8&SFXQraafI~I(C>%G*2_e+xwH}Uv(BFvr$+GlK@L|L=>Uz8KIM`efRgm zQY*8A5BBQSA+eexXTd0hw0q?ZjF$1zMAuQIZ{G7#Ya4&uIMJe|h#ZT2IfCM6(9%;y zACpN&X~T+W;~ZDO%21N_Tu+j;4-e-nNe7K6Bq_Dm@y_dD5?hZ?mGSO_EenLYJ3Y)| zj-hxs9b6q_8a{G1uY52F&2JSX5#=44SGixcjO`E!tc%9GH+E51^A#!dIVX?Rc>@kN zxOJiQh<>Ta>`KR#ZHwLp49-&BW^`>T5Yx7)q#9d-p0i6>qt8kr+MIab{KNxrx5|s> zi>;dNOS5p0CN}2_>K9zYY(=+Ne&^UbU+H{27G^%f)qi`(q=CLr(*>ScoKCpdihKSN z8Z-g=vU^-kT6n*EaxGLVzkxZwdIcWGIW3(WJC;S}8imV>Pg<*2a_o0*m&17rs_G&a zr=5+4N>(z*34K0{VL!VeNMbI1_FhwF)MPgshAN!&Cs+h~jx~{;*n_pmt!c8nxHdU$ zIBr(0M6$|f^keW-j06ipVNQge-lk8_OoOOCLeORbco7XK**72Ir8G=e*g%FZ(<|Rm zqRojJ#?05|t9{>>-sJs+wktL96hDE@`-$|8;}qiTnI|!eoj=PMYmNz-?DTh`kZQwH znp`?oIV3QR9}{om9)Y)qXpADNvH(~?+&<_oRDU$r0-~How+$aRg(X`v+KH`*^{Q!d zv<>eoRsylOUmzef`+qQ?!Xku+*ukYozq?Y6lv8{N`kMj}1O~)^0B6LPK~I zMt;Z5p|hbxHa6$;o6o~~V1NM&Jeml=RxZGB_=Qh@sm%bzTeA7RNM}}AvR`LAoJFRRZ z)%h%}rUPpGc9C6I0S*ZA=()ysl;kn0gyt+k<6H z@oHOr&uN1lO?yiq0Z>h+Gk2*(DZ5r0CDHs?@2#uMcoe*q#H3RI=i#Fb9@zvkUAILD z*;(dCQhK#SIgNV79Nar+z6nllH?j%%RKo-c*XR=3D<@LE0x!t%FyR8XZPY|(gRhw1 zxGYE{E4|5d;sn<)$^4=~y4U`em^O`N`I*t7Ur9oAovGuOzWsd7sY{+$6=owr@S3xQ ztRkm1P%~=@CX|RoUKLa#V_w*YPc!!)ITCac-NM^S{}fTa8THDB2*(sBLmuxXy6I7AQvh< zhr|6|yPO{j@a@d2I-nA{tM)sP1vU<8p)u1q1r9(9H)wBf{Hclba{~WLEiNq7|1sMj zJ##LNB`WK!L!H0tb5X+him&Ca$8;~<`pP}m0Ir`-idz-%zUA6~eTQjdcmP7|-v9=9Qr_>l%hsTUtkJk1m_A5!|C8{50$1ATPb@*+!pR|zvuj&*& z=V|h5&EuR9nhigaLpI-dnw^%&pQbc+KPVJCJHK5tEhYT~50DwB1SWV?)|4mbB4t#p!kTfn zxKrOW^J#GNarN2|PuV6u1sxJ{KYs*;A}vt9*lq=}^S%DgUbF=CAv$6jL4WiilDZ|6 z!f&a2Z961_`T zV0B2%@n$4_Rifau$ORj?)3Q{^CZv3=zRH+C+TRwfKRkO3&F+PJ_eYbwhJURxeyen~ zaFnrdaFnpH{1RF+9@{h!jcz;w|I_As6m5>@=RW{eT}2vspJu7OPIdX z_O+-QbYG$Lj)yg3A?`&$PX;?hqAbX|Kfsk!Hn#l#;Tz_mmFHor5Esb zV4UW!z;t$=#s;2NMPnbF>&MJ`Q;d`L6~gmZRuo+L_^W{MjH3*P^|*Yo+&cH*3=Ei^ zH_|!)aOgmG_xZI(`qV4u!H3MLA6C=urEYB8bUEXD?;))Dme$235vs}_F<@lm*_S=a z3!f60e^~XPeFqJC>W$>9VCa{O5aj|i9rorb$s88#o-pve}46uL>2`=hwe}V=uozmvK8c1+6BrGDmKaSuzUPBbp|bB zFWFwUl3u_gY^trl40Bc}KKt%E=!tVLG1r(cD0Me*fQ&Pi1GDf6JbKiBEvHT=|2l zfu(kzu}tR{mhSKA6Q>cBRfX`Z(!*@??dCw@acJwq_a(@j! z^ZSkvpGhLWd68jijD!qU8L zdhlg-)pmPaI1bke_+ts6eKVuDkV>eBdfibdb+fo31z6ywSkwr=A_{~NUio=Bl7}Cl z6~{$!w9@MR@b+Qp=O@yo*v7{_QPxj*TD$q4nq~_e4}qH5wJL|zJA*$8BILfzBh~%1 zj3%aH9BHurp|Khn8oElXWXEaPo>5CE?t=f=$4yt2^{x<0XF?TiaKd|3(rfxXUc&Kd0F4Oad} z&}WB4>lBn>;Svqm4|tG>g*w{t3KokL#Ny0*<34(j2&sH~c#_F}z}fKl@A3K1KCZ}b z^l^b#+JEFWHvialt5*60NTD^~*;%AgthWrPZA2ku86ia(FyXC6{Q@g>;wvdF^`kLQ z-Vxn`2}mu7Xk_kZ!qvqma`rb};F$8aeis1KUKtPz%ZR6GtIHw^p^%PUjWY3aWi`=d z4q@B=nJbZJlMrp8Hh+H0!r{ z0aI-G!K_(iIkZcAj6x-4Ij^aY;)o|YQm@;9-HNwd|D~i^U??q-BlJa{%WM`2RK*g3g``zDru(u+ zK|WtHZ~%R+=LFAv26HAZYQq6rr9`ypxzt2_+Tz+Y{P_X}jFZcu!tYOMKuoJGAPrdM z11bGg8sJ#oZ=3wry-_b$ZgfBzusOG@uxQR8+KD7@^rQ^H2b2NQfHDB<4`o0PWNg{k z38_1BE^f)Qm)Jr>65UG8H?1}C!m%_$t&R7btrgpViO{6TDLdPQ=jh&|)n?WG5!8I& zJ7l-}j18E23sf`P8#`0~CbcVqx9?1*>z{$_#ot-Xp~<5sa&Z~J)aAvrxQH!V_T{5>}enZ z>iItWxHtNDVZc8x((epJfTIGC`W9~gTo|p6`ZW--vNANByxc;2nur);_>;f~yv{^| z*EMcrFp-|=HB~D8wAlu8l-Vg8LsJ8j4O}9d_gkFAdreLJd=Ol1En!%Kdi200;_s)R zk6DdkcJNzy5ktIgt+Ruc0pDsp9keJ4z`EHLU}!uXQ@lDLWTV)nt6 zexHsmgj6q_6duiGYO^I7VV%z+WZV9mvu`ncR~5 z7dr-9&8f4AoL>fZ=T8xUMeF*R*WY|pL~&mVdk$eQgw&Se^LH2}@Z* zOV%o-Y=8Czj0&to7R8VaYIz&~X@uz9bLg0SmmH!TyJc4P;8nWw?lH^{PfON4wUE`B zV<&Wt2)T(*cjdbhf`P-O`?vAJ|Bt=5jOudj)<;#4?odFwySux)L%O?LKvKH9JCyEj z38g{0yIT+x_&+~fYrXGUdvD+4Is1G$nlb7{HCmNChp5eH z=JI<&E$0ZJs$KVdqmc*rM1Nn4{PVF0{9e}i;}bdlbA9*-HVb+vahcKnVC@Bgc(sm; zCfooOhL1)msP&Z`L}4;07)vuHb^v-T`2aeh{#|*~(2uwj+aM!e-j^p&XzfvQMa4lx z8HuNYXNn-AjQ)lS?!i8j^4QE+)#}&n(AKh91u^ww1Xs{y6lqn&rWUc>kwt!5f?nGv z&~m1CID0AQKWZP65?ok?0?f$CLgy4=yH&p6=20JoLqwieJ8lW(h$P&Ue~6n=a&GZY zlQF3$acL=Y=BAb${@6COv{38gGv72y%IpE~mn1P620)J!zW!kd2DNsL01n=b`=g}E zx|qn0^AZM<3a8BZ@VvcMh*|Xts(+;KG@Nu^p!PA@=P?Dmg96N+0TiVF^Um-$&T&BL z4RvJg*-A{0OwgEl|$;gNCb)f}Uwo%0 zE{QUUW4D_}S1SnKcHJ0EGhoj{q=J=+M%E%5HSD?w4?uk`qSG4{7JshcxmSx(UnSJ4 zN<6*C3{xM*BbY=eL+Pcb#`~D_P1SM5c!7`fcL2iw!@0S+zSExvAO#>{H~=?Wxa6`> zO_Sts7W6ny%T77r!m4?Zi9Z2+TA)LxuJxdDjU|2{WQgaLOWKOb{E0HlY2 zz2V)>4sid$)R-g)t^mx4t0lGAoKK}BLO>Mu?=r*ooxw19zq6yPNX-c0G2Txv z-o&^XPqA$ET~M;$5xQZK=J?0nxgsJ&^cMy*J*XbInw=u{_I+`((>Fo0k=1~@RdLGorY2aR^EI+6+kB%`%52;MAk*8DLoR-fDzVjcFm-BKq! zpb=+f*TitbBJ8#Vi)O}IUffhh10h;&<2ejQcU)E`A+TG0&=sk>CQ?q;@hKZ8`mhY8 zt*ET5`BcrVO(KT9!MaMOb^oE~V5QC3^%8E-*mP-2;B(Ok*H*#YB!{DEFXhV|RUHk= zvY`Y@$<09%aXQFF@4A5oF0p9ME6sMAO!iNM*t|s)AN^n0bvXy}t!yg7c%XVfzA&s+ zM!vP`9ji!8EA_6^2MraerW&|BxTml*7^I_Hg_iSgr=yQq`216*d7Wx1qb}c7>ctwR zGe;Ar2xZ2qjAJAKG+xFp+OzpWugNAn^i;@m6JXtiJGm5 zeo-d=?ybnzP@Q_)ZaB{fn`Hf@@uVYE)NuLzrOGw5(0nB{9DG~O%pZ>w#L5;#qya!6 zD*5G5@i#87e+DDK&;Pz80w9%0_XrKoo7Jh~JsQeX^k0%N+$ur^0j{no1GCoE8{OkD zZ?kl~J{LFu;>hmxC)LSC6xF>`=$oSnp*XGV18v8FQ>U$=!=Gft!Jg*ANGeE5$YOqL zzGN~&;yMi23m6g?GUhDN6#roY+GFBJZ@!N3Su z@%8%GU@h7n4}0hh*sRsiP+(IY&AokWKZzN@>LJ8mAN7;miQ#|nT+Of*>sLB)=Ho6)icEgxmnzb9{+f=cpaxNuT@WD zG`U_*wHuRw$p);-32VC;u#Ep&m5%_ca>M+O(4&&Fn}6g*-Q`*96HW^LUw7SuMO>X6%laTct|f4 zFQhjBJK&1V%ielHa>mo8tHYa-H%u27GXPUDu6|7bHXN)w+ae^`la2P|86O{Xm7+?F2QLNBt;<2f_^mnzBuaC=N zR5nq4*2qIJbY>u7tH0J2)e?^oRPk6LB78%3Tm2pm` z8$zI!`6B@eUq(=D?@q%Hwpe{*{?3S5LiIqb@wsbcp0 z&z4M(fRne*<{SQ%XLB3{e& zNw7usX=B~m<8RhWwwK>~u_B^KLKIch!PRpEJ9ABq6f9t8{_Y7zb`5A}E|pSI$Sa4; zgIxU~eu)^gGuQ3pEvjUB+?kheF#fSK4=dZgtEhx~!}*+U9cB)@T+s!7rUqfOIF=j$ z3gCf&0(|oK(cpdDB4iJL00k03K!N;6pa7d<2K0hx;Y{&jT9!qJs8NIBr-eqLc43vY z>Qs#%k4+?EO3lL+ko(F0UvV$SU%Qv^|L|Vdsb^+8)cJjb+G3ag+ zM6hG~$4)OpS;BHb9_c=lZ7y`NQ6s(3GPbacrimqP^=42&{7(-_830KYX^ z^s?Pd93;58V-#e0e>S|tc*DA_S5QP*fLTkD%{H8ko+=^rJYo zWut!!+>PNeo^3NEV|zL)h1KU6FEVapJz~o4I=cLHPq$quL7$k$z7N{vR~U>heN7t3 zd(%#x@Y`tdX7dN_2{xlEuTc$k&3&rt8PGVVV?eu;U|GYHE$6gpH0=u?MGL3vA)C)u zqGAbdK?Y>2>qo43ky5H$HoMR_^PvG-=98z?l7XVFAhq^dkXpNrPg&M1ROozsv6ukx6d$fZbn$fn4@ZFg(I2{oTZ^z zG<84TRgByE=7X?#)4z;{zrnR30eI`51iVU8KM8mlQzQyeUws$%T9|%6D9uc+oq`1Q zoFJOgN$|x|K-yV-24_mi1^H#sH^|qnRIwV_jkf=&!liceqY;J371| zD83!!n;Wo1wlkImo2{)a|PBVz%0#DNKwl;i~Y!UOAI&AuhAnNvRZ59m%RNvn{ zJ0~|AgQxD)D;|cL3K215LVKO-PmT+Zk?FK^D&vI(+vq0(PXeY^)qCo6MOc4pv)Lyw z5X~jS5u{_BdFqnqIV9)4v~jP0w{@z{ZlC9&P+<7{1J);qX}gFVW^4X7G+UHo5x5Tt zQb^ZIZ(l)xL@Mrs#l*O}s0d!I5Crbr8my8rqlo5igD*GbLqI~t;9nj!g~sxfU17#w zkcVk^`^1C?5gwl9h+!pgMY0pD-lh0Hm|t1(@Kea#=w;B^M+Wmw!FWC&e zj$yMAneR&Gq^%g(hz)RR#MVmalmMI>PnpW(#(2dSJTKo11Cl9PjdH3bcM#QpWXk7K zFA;{YYo%>Y+_AJSp;)sAQvJirb0ybFk9X;e_1=UJFQ}#wH(iIL#w;#<`p((85=SUr zr&I$-(cR_U^~!J*mFj@dQi8lPWahG6;!aM5lroB#@~EN-N>mFKgS1McM@7n#z(;2c zS)|ehiM40{%^CkWvf}xTkrm*K{|(`8+=^rmJz8JKkaZovxOWZRYR7gZiZnxjrcaLn zH@%+qVLXtY%K}D%bMAxt8rU~^15Fmc1(BA;^fzQ29T&(y*))I+iD1O4W=Jw4auf3w zGpe6`^XW($;pym9lY^As~2<&W@Og{C&r`+zd4RHg%w2?Figop<$fJ5 z8SAf}*Prg5_rP4yl1W(U?>0h|04-{#)F!p-xn#Gl;)2m$XpE!kln@v3p(wO&)GxuC z!}e9Z{grx|N3=<9Y1Q%zvyBfcS(no}_d$zCh0C(p=JD|B!Vg7PCu|)~!GMqrJ?~P%hCG&6ybxshV1vz>dUh!K`S^Q?vnQiPb~bvE3DN7wrs5 zjFWS~6MLi9{3l!{Rg7|x7O0taemU;_o$ISVKFrT*=_dm+QbyH+c8jW3-Tt8eYR*?Z z+UH#~fr>~lA~`f|iB@nV#%T$}R8x<XDO~B*lAD#2NAM28cm-s9wCYMy+95$>Sbg}d&doY9+39nzh;jA9B2JT z5SMhew)-oH4+4inXgqZO8I1_=IEp6oiuhGv$i-BEI2$DadV%u$JnH5UogvGE)!8ng z0`Etb$Y>03Sa2;~82dXc=y;bH{Ld!{&DV=JGbgqyPpvj$g3u-?89A%vF~Z61tdLJr zf$L9f@a~$?`*VfS^19o#6t$XM0{;m+ZZZqT{LcwCxEz}*W}GjwnUqbzJ&+N_UI=;f z*S-|(!R?8=!fp?d^8z%6ih-jH%0!IJ5uIMu8R(1wM2zYp=>9Q^QPk!44UhnE>Gd(r z%++@=eX*~fL=u9~OW%|4srRr1tpn6Zimf3{uNX@c=>)i?{}ggX#mzkYRuN$JgO=iT zKPnGhVGKPAa4|GW@{x}d=6R0os7m~ydBNvsj;QKc(jQ4@m2`dxCoTC3jn-kvPw__J ze#q6B9$?Z0Zee=@)TN=jEC`v}wdUHnmiKa!5hDU^lkeH$iUhfZxs^sn5=hmG8D&*9}W_znDN2}RTrbIS75@FUk)kHtM)1!qWxk&;L} zgJfb^2dT~`!|8y1H}pQFxo4D4AUS|rg1sK3tXknu<;Azf`cgrjf9Cz^bq|<_lAAcn z(F$>R!fWq!o8*(|;qc+CfwqsKH(*UX8$?r-cUe{3vQY(&&(w0MeV-{evo*6*=ZPm! z=TKXUmso!isv6}0AyqVnlZBw(kY;l;=SZOBFG#04(Sv@QbYf1Q5@ur z|22x&#RCK)^cekF(hbc`dvAPrJnWLb5(Xb2g|f>-_}6`Nz|w|dGL#~bDf(^!?76+k z8HSnt7IG+NrOu_&e7w0SM*DXbxSphURXyhb-|{AIkcOSMo<^5uYG0X4NZ^dJ17K>GzsH$T(VD zNI`|-;#BhYrsFr#^L=#9NL_IbhrdgrFU!eMi7hR|g}>&tk8O64O|-JU(yMPl@8d30 zClYcpq2rX$rdO&U<~)#TzKag?X&%&YnGV(Nn3ysMLRT7}|1fvRx-GQy+%hR_gx3AM zqcdMbteQ#L8%vev21Vc|h@rbeQ~)hzz)uLgUVleO&+EGV*)wpdXzs*AKX-ERdg3iT z5qkwkiL>|H)$5_#EFTY2KZLR|+fpu1w9<@b47=#5MR-=y^`j8WLfR>l|6~h&eQ|%F z4@8!=zYP%onUQ}Z@c;QOe;N4wRucs&pd=N{q$)^W2}#VENX4S>>$;;n^53&BQ2Ko} zKuo!2WJ+P{*#vDep3tt62f+Uo_`5-YAGhYa8zB(*(}2J)2n7C~C#-)9{6jvCub`(R zk6za-SaH76V1vgOE~cUU5dXD6fm=b2Tb9^wMgri<(+0TmSR)EBslj+b8*v}ylY6BT zr{YovfE~A^C@+2u zdaB{GcUjB_FtBTImrl%SSMtn~!BHsYO}z8odt^PxtJcB-E%|;O`G14^MOxp$*y_*F zulz3o4aTay#Aes3FGi#+_|Lln_{pIHm2*%p#**xq+N_IYP4=k+@6jIK%DKzi3E&9> zgWdI%!MCwj1ToQ`FGg-gcssm(z9Z;CF2E>?e;z0v5HuKj)R#XfJV?&jf$nep@fp&q zW*PTelI#*x5S-$qLuvNM=yGLG_s!^}oMLi*gIxRZbHU`ILx$aue3 ztPC*5G)AXt9F$LG&dv;FBWUmn+WN#2{0_O(8r{_{iNN*K-K6%lcrVy2QJ^(P?nwYM zmT0b3^Obt+;)Wq`@H9F1Uh-D+h{34OcbgM!U4$L`5w&VgY?Hd4UWr)LcVDzNSrGcOv8*_BU0to}by(e27!5@f_Q&2V^-*P)6mMpV_o8@9annhOPx=Qe@aw9cCv#&*)QT0;_{fXA2>USUp7#~S7rnqyK!u{Iz3YYH zdgrT;N);`A-&kxvRDCE9Z65zRTX&;zK3%b6E3#~MakuA|!8$A7vdp{`d9KLlon~@- zkhyPA_ z3J08NP{jM;g989ofZe&kN`kFg0_JN4H}vDd8NlLY&{hm$@iH-89%8Jp9i@9xZntg# z`y5ggQ)CwI3#KmUu4#WMkO_3xR8}j=1sCXHxT%+x^Y4_W)O;X5JT~dXd001cA`VQl zy+sg!75#4jR=P|i?^F_R;U|E#NS`t8KLc2QW8ne1 ztroDcv2}VR}A&yCeP%lP0-!NX_o*aDNK;cO%ysg!BK3kNSeRVA%V>FeDP2cEOh2~qweQi`6 z(JKNK;1sJs~f8Z@}PWm zv>GP=6mnB6a7ddUS&<#=V)*;3?eBmbu3ms_ILvzj3z;codZ&hU{6<%gepKsamBigP zLnzXDGdAO5gv@CIEI1<5I%QS6lvjIYDx$a*?F-_(QrBWVVK*sx+f!U0{;ATTu2Q8OIenFxOg19$0QpLM0r?wgPRqahQ5PFKU%+H|x2#a_lr^3*ZslWh047 z>f*mrn4&Vw=KTTAm9Uj;b()kP1KACeYL+m2{}?&a6fKk107EMO(vZIassF-dY!C|j%8$!a-&yS@uULA*KE6PfJrrcNe=n|98DR>~~R>h>&OQr$*p${UJT zy~C~-WrBeFvfBhMME&8m^wAPcJ~dh2;>^I_HpzN4P|k(nJ@fWQn2hDsVemkC`RmPPAp-+fQ-DHr^r4=W4xc4ks0 zoT+<=E3Y}Tw+stojR!~i7Sjv$u`pb~H9)=j!EGE8mo^FF(E=MRu zj?2ZVjbM5X*p094LV-HTsZi2}d=Nh8Ge*h2E(AYtr&d}Dz(AmMk*v8QP zU%xx)8qx_EIJ(=={b9a8WeWa9p8khHqaR~r(8_Rs21lOx1m$c=AaEoJE+XMPD?Aa@ zHcXzklX-XqbEBc^7s%I%M>3KTC0q66B`XII2cl4RMjjJS>y3BMVF$146B~N*aRD}g_?&micK4KQir}`C3K-uD zlL9q71-Tifzft6P+TWzF2Gd`SkRRpC*Qs=ISbw=%{T_(Yu;pPX!sKJy6RPEP1U0VR zHWl#Hc1BKL#eyx#_+!fbP^JKZ7?7*LPCWqs_-oT$EPmxdrw{DzmX>S$4ejl`O*t3m0%mH zq=JKc_bWr@gWB3eL`QjM4@3X$rHiCOjdZqNbe+Ooe7!q^Ud7IX!*No&4B90k2*>*x zrpjPf;NT)xKje-BH5iWbjw8qOjYF0}lpQkntAjemI;L^YgCP^(r7I+T^w?0Y>2QOe z=F%>cw4^+8UY$qwP;)kiCR&?K`}SJh=R=qzr#}fFJ5FxW584&yG3p00ub1weSt!-U zIBiuki%-aWaNMUm?E{oEr!Yc3rx7FMr`EEJ@p(bE)on-{oG-*Dc#R_jv73E8eY~iV zT_RrJ2TbSu%ZJYY+s6HO`H6qn^=AZCoK**fQ1uj~=9cfC@Seyr42%hKi4;ZAq6DtBxwCRYXzr!|@YmW_ejaEf zo!Kp%it^Ar!=UJM_*G=lBSi``P+SiyKkCrk8^zWi5yiqCcrw zD6OBr4B;ucO2gX4?GR{V1(|g+KEZnY#qF%Q(@$Pgq}FizJ-}!t|C?t0Z_y(WebMQ0M(9XF zmo-BbPiw_qNn3ti)fp8(h3r$m78Lwf|rUF=Uy*mE_~LnbIEE# z1nW!l8l3v!&n`!qDzLamqCaI}0WM1s0;WJ#263BYD_?QM9+&)s*?3Fd0a6IN?&jNL znkv}sbpb_!U#I-v?2kaVDY|9=Yvli0vWojp$%-$VoP~s!hzZdQDa_GZl9C9FZ|qdL zV`4FXDmS_}A3Gb$)Xv01$3VgyIr?bJe;A#WS6CCeVPt+JHO7~Uy`z?#;|mR{Q5aIF z<0bzzJvn0~SkDu13|}M+82(t)fw<=vm>BAH^-T0O;8KoHC0K*;KKM1`!=ywAL zSE{*yiNWSq(Dau0l`v9q;45(^20$vs&-^EaIh4auz~+Cn0{)Bqcc>P{Z!E z(XZY5y0%IthE`&Y)g=^(uq2Y1%)Dp0IUu4L^1!Au%b4V`VGnV9+11w#w3>KBo=iUP zR(ReLctB&B^_dlz5fNT?Y()XRX2C$X_O83hbS6?n1dF$z885F_ZzBO*>tnBJ4(c`Q zICk!pLXr&Hs&eN???T5sXm(P^3^ng?RRdj^G^m><2Zxgqc-cpa=1A`BT?#N@BS?t^ zW0Sfl?o24}FP*xxbNj#y?i(2mcCt8J8k;LDv+r8LtPkwF8E$RQKhYS1Q5;(w;yxDg z%-eIR|G7{4%|c$u$-&w15y<$575{C3G$f`!kLF^r#wwA31oboxo0Y6y-_|zfOCx03 z693;PNGZNIM%z5g*P}Zx-$DmHn(^zHs4zy`0H|dz6OZuvB4Xi^i8KtDQNT=Rh5O?! zQsFXYK?d6UT1xh!GR}014h4gh69iS|>l9ak8<`yRoH|Na8H{t+JEUa?pyh1el3-&R z1-kY|ouY^Fg&yd-GhHg$Q4AY2LaLewg1*aR@CZdWP)&NErj)TASmP#& zYO8&yQ(N-JWKXRuEi-367-Q6Tnw(CgM-6TZt4P>_)MlATi9a4ZK+-t>ZZN~*ekON` zcld^Z%*goF+^p8jc%*Bl>zuxQsIvDYX2@q(V%dDoJxjeeRZrWl|EfWs7P9aDQG*h2 z8LRFBRr48IsG|S9t(TMhl6;Dd%0t|Z8uI*qYFw8!_g*zqkG=N#-|2&C9U}k zC`m=)*y43F)BF#+&o37vnL-BDlvG(oxG)Spd^vhN{CKrXI1VzZ;opq<&-v2-9i#pw zr1B4={;cc&8>5P1MtJJmsx<;ZRQ*xJaZw}K?9aOX1h2yO$q4`jt6@Vt5jORlzfrFMBp)4anT{0viY!iZxmT%2rBDs_hMg7-JkTx zzQRX{`6LCZkvVx8seEuy6 zZ9zWi{{(J~R+-$OG5yA3{{n4XiNG_kdSMguM(_f4wjZrta9TR-#hl7(l5TKKB1Qk! zNekW|aGyKhG1)=R3~bwFRKIFWads0;5LT$0^N14kUcL=FZy~1Nrr?~@B~jrI!Ah)> z{vc>c^Ch*$YP~68UwU?$u}yTV>xcArbi$T6#pRDY=OXXt6hN>t?9Q^w_Qa;Tu5NC$vbL_oPQ~ zTm+g_h;F()I@Oa(HW@)mX9&y`7MVx)>h=%TZ?o@1 z)}dDpVt84Rb?VN`&v=EGg&aZv!=alN9VZDA-eOSJ<{ zah~AlGkSj407{WszU#W7mlU~>LRZg>X9k%7g&(rYC`_w}(iC)>>Vrn{0E$}KdvC#T7jCApd(?r;m%bMN32T+Q{U8J(ItMBhJ2!cwi2{2*yb zG^tq$xL4wy^c<^0o9Nf$b>Z(Uge@@&%e^$`#vu2S`RQKGcPbp;0QX|~rF;Fxxz3|| zDH@yp=~{n+rmkXbEW*ngJi>s$bsPo+E+J6hk|?RAI$$QNum96468+vC2f}B# z{c&ytfqWOny?QQQTVy;CdE<*({_y>Rb04u@2W9vWbu{es^I9{+M>+vY77Xe!4oEP# za9gcR?5kpnu#KsnqeYO4#2MRjv4PGICv+v4hn;E;xf4PV^`G@Z=-CH{>{!D{plNO1 zRS@?CK7E>1@JH*<1+-Pz7&B6>sb(ydPw3?8R`9E}Ft@B133LnJ%V;b)c|Q_>1>p+<$KX$% zQ2f%Zek&uIngemm=1<20MB)H69-uRvc1W@`g`s8p^@YNK$ZK#f1_lfmK>|uK+ zJ(CV1tGWuDT13r337J+5*~?+xGTD)wPEczR2SHEFcdWyIlf# z&}Eg1LwS(kF%M#-o0v2-K$QIhumj0lZL81!}i*_JJ)f!r)Ttp>K2v;eJ5;ibgk=S{4N0Q=P;V2w>{s#HN z;I;KdHAaBB)*GxEkl>NXjG<$0_wyRmvosnmHH*>iHzt(MQ6Xd*;2Q4pw*^pmykM?& zfmR4=6fHpq7YL&zfLsrAYL@)KXet@Gmo%7RV$S4ubj9b5QsjE>am68-5?`G8A(ar${!SXFbd0#dk#{iRF&26L^9zLVL13rY?=njrki z+3lk6=CliqI2J38G+Tn8_nRQXXMnR?dw*_;l=vPQI9}s6TPL~IyZnM@oW5irlZ^;2 z#Lnc%c;Ut5Xma&*70(HT>e(d5^=HdR z({$aRhN&w?kJ~-f20M1m>+CN1$fbnm+NZzd2W1bh*;oG|`ijo8M}`8i|nC#nrFG2au1 zy-^nu)*v!V-D2qC9HiIc5pHHq6{iv_4n)#=hg>KzO!6UF{O)nCGDiFM7{uBA@JlCU z_`g02kO4G8{!FDZApEg65b?yCOBm|Czf=SZ^7g*wPCjvGo*JrZo1t+TCwtkyX%e-rV<;?D_)Q3 z5(NjU#9d5SGXG}}FevN-agP_${1jUQ-+R%S`|3 zD3Wh*qYr_%T`owF68V^t{iFsMEJ3g+Hlms?@811Lb`>nY;;JZor%1fCeG}_%9CW2S z#@MKzy(wJ41X16$8cfbTd}wA%mq=XOhGNtydltFD;;Nm<^Lw_oZdv;`gNr*PS7Xv zwe?|AzE3;bxToJ%or;}?&33mG;w=bt!M8t{j%-yC7@V@j$9nK=+EbVK##!>?pf_K= zea`t(nF1*OziV!Xp^f|F|55xa9x%-o!2!kpNGJlR_!k5#LoE?mwrs%l@-Q2X*fecTDFikmfSN&uNci=#;(`l-hXyWb5{Vx+y*dVjlW0-RU=~Gmtxh_C-Hk zsz7-KBvE#MJYBZ1+xO(DPfjkr7FUUAa0p2lY{+124m6VVo30j*M~yQ2Z&{~^yPt8H zkt0AV1ptMyo6Q{IGsMqtW^d{oJ1#OjkN2WhfW|VpCj%Q`B9;e;UQHTbJ&&Y$W;5Sz z+TaIpyx!|_X*LXNGA&*YHSY)`xMs`{LSat8BHXA18I`mqia=7OD^J$Hnwz#o)4TY8oO^$SIp!f3&S96!V0w$y^ z$+uKkAnp;9uyN3{Lf|Od zAao z4!z<5ZaqFj&01`LxHu!}QZ#hZvy}kIzl@V@DL6l3N${4)H)O z?WE?DLlDPQ!rveQ|7>Z0BS^{utGYitT1m!s5;!hRqa!O95}Gf3Gnx1-1ZN-+j1bUt z3{a-9F5vv+D^)vZh5E9eqF$*4#V3HTlL9jO8xl6s>l=k&4K@^V8pS6X%PBa+tzO?< zw!cRKq}<${JU9%!EW~icF$QiJw~^7j6~QrNeeHBS_UE4wxpF6VA;@&LLN=t3T|5*U z7kAbMOvS%ok3t{7of(v52w-8tH~T&ZaDwTTEpNy%nb$6r;|W%{H~U-H9V&FIpnDF~ zUfMkk!*YP2B^*8drVDLbpV1i-Ocs^UulF*|N1*2RRbAULfv=jBsSsykRc?-+9(odn zL(L4q+-4YqD_Bs%I!Ev*S|>V~ntcQT&uW*R}?Ope!c>0SXVHSbqyVu++Yhp?qPM*wHfp7MUWklP)dx->e&0cZu z**0-Q5%XlSiu7`_c!!Hp2^>k3$>H`mF9shDmuQDs`Lz;nFBcNGtO!s|K0K9*`$kNuYWLg#+9+pyb$nMJnxk0)_v0=CgLOi72~QDZX-vdy zD)PkEAY9qAoJ2w^R8`?PWDB@0Un8(Zt$LXgwH*Tzo<^NM{16lFEs%=2IekSK%+1NDthR3 zKj{o>4R2wVA_`LbdLJs?;?QkqOS*7p$h%QK`lZ*4gEx`ThHWGXu9T_KM`Bp-HZzte zA)USw2SNz^-nE(dCH9#dPrF;Jt)s$9@l{;cPzlj-8&tEq0?< zKYv|th*iFWlc_+WqHJByo2~r1w!Oza3u2y7s0hRxqNgMTc>ri_)C1YOhdA?9%1AuW z1bjK_a<0EL#E+p$09D2Bzg#B@8`dCr{CC7${M?Zbj$xt-aiEhlDw_7>iLn8 z6chq1T4rt$B~q|rt5`KxvZzs`m}xs--y2%gCiLwJ5g(IB&Lo_3t6haV5{}-XjhtI zlp^`wIZ(4W>jqdDlDhz{x%#E;cbSEt`XEbVb9Ws=1_2|EklGOfy}frLI?}Jv%L{~L6A7R{)=`WWY9El%y|vdQBbP)C z&9cfme=043BcM1T7EHMz7To4o!$=F8$0B&3y_g3V!|@F7?ya4qgpY6sqODvT?FMfd zPI7*5WQN!`#n+ogcvK~7P~Xx@Dxh!-Sie5cVcFuzXTFQF|B94{CPER4Yq*JYhxU;? zv?*rO2fm|X&$1cZ&*81bGiUx>T&E_UU6IIJdXX0GQz<@rGJ@KH_7=juQ+Edw@o*%r zMbwiJD%$JW$n|Q{OlUIF^zD)fh!E%bt;{a43MMeLVThieRd0=1Q28_vhHHK)wfGyu zqd(rwUuV#NlI;b7L}~!!>9V{+v`d4c1T%&t6u6+^GqbnRyHXhlVA`+io#`-89-w^q zb#Jpn%r3it>Cqs@MoK}Dx|`X)&?v{sUeg=Xk)iu4V;z(8c|-Iy^AugNxl@LK+(eL7Mmi*8v(xN4KGcInZ8*%=i`#v^g*^sO)Q zl*llLNXYzgIbDgz*p<;v!|Yn>`2yTL#pgrHGc80!%87+_^mp9Qv;n24RTewF_s11& z@bvktM?6W8IbwIZqc%h7Q5ub%Y}XIqrVXr;TCfEiBtpP;15>k>|AfJACC_}O5|0FfFLQgKpoFp5}?O$v3A2*pszN0FLaK%@p`89vVF zCAFZ_LR#AolM3@m5C6vL%61}mxXIg~&D5Kx9=_gq3~#~(1Th6up!Vjq%&J67krR|< zg3O*|LvlvU3-ut3jUh_BAgm~S@GBtV81)vd-R)wAR*$dPg};nUQ>ch}kLir*zHFAF zmn?W90#BwuoIz^Km-9Vj>ai4lt(oit5~=C`Whwj{aH~ID{oiFg{!Nf+;stms(BmE1 z6j;y`$0I>Yf_(kbH;EGmLY;b{`DJ|8KU8YmOemiEzVrJ-j)}?C`%#4&1DAN*HyB}< zAB`dCUArah-g#~@7onZ@UhoppTt)D@)0YM3P&uoH?hiV~GB822`A4(&XhOtEbYw_k zf?^Z=WZ_q+w4Y{be2FsK%^TtR<`r&XdS-vzC?udo(t?>AVNAdupIh%qHLRbo5*J|G zvTa@X5K3k2ibh3BJ@QW4d+P}qFVx&|I%6&=p!8UjYt#25lrVREbakuh%ZOO7*-u3C zrtq1M?=^lsZvUl|j3iLv}WI2+tzFHO)l(rZ@JeM?5{OKePw zdLk;>%HdA&FCuL&*&p{04l?r(Wf#hD@RpvN#?djEL4KRK2(V(9Ethl+RI@Y+u_rL{ z$5)|ywr6K{l)))vFt=>ih}Wp>Zt7sZUORe;Szq$t%i2_}teHY9LlH}sLQr?;c;?{C zrYRQvx*W1Rx~5){vHy6YSWr-lZHIj#qr`qR&WYes)c|gS)OpMjSw!`SSwf>uwHNcQ z1?QZLh8N8tBA+}cWSPWTn1`Wva@&-Ca{isoi>sJhB#3aN2xLeUVaI{E8W^m6B=q>o zq3)MPL~cIaZK$N<2UCvSbf;YuHHt;24M?LNQd&GA8O%P$a@ z3QR3;^M7G3nyN3Uk{^Zjq&ZvZgZ7jaBFkN{8A0tMt>k*tTm{mLBQe;wB4;oq~ctdH>`Kf7}h>55#%a zf5!Qrr*x^`62g2{J%w=tG++JuR>l|b>+>KI*>`qK(e@G{Lvev722TP-?aijqsodxr z@B?LDLBG@A`p5tnPU~Z}o>F2P^Vw^)gBVhhP4_P>Mm#f|Uw*ne9+|d(RKP?ihWUg9 z5>6-(i$YIFgI#B!G@+QoMu&B>%Xy)^=)!1{o9$QzLB-W|sBEH+9z5!Ax3fngLX2|^WMt+0aO+pgJW=|)&^L?5ry?SU{%qQ8<=Dd=C-GVzPujz*I3&u%U# z1{={O-2}#OXS&d%>_N#~9}x??Y}+wc&QF<*K2wAiR-78X?`t&O|nw>GXse?#v;RxFwg1m%OyV)A`+SuJRhYi%Mxy z1P_Fc8Isx%SH1AmR6?$j*W#s}!W@$;6Ei-7m|3h47d@SRft5P$X^ELVm0AEFv6xyt zKaI$#Ua#r+>b@7N=+vpLiX$$E5FuR||NC?KLzJaepds=_lhy|9>6`2RDEXm=J(`_T zbkoYoz^(U_Rcf|Uo8s5rVSU`F(D$~}%_dZU?Q~pdc?(v-&2EktV<6dwG)bAG(vH}= z2{LS!DE?&Ifiy~}F@LOF=d?0BQ)I~>1DPFb-rG?6L`=n2D~Ke}sr!SsllF)* zg!?jcxffZyKP(!Zx8nf$azHvJ{)A4+1Ce+X#K!;V8TWH`KOQ1w#Fs4uCpn@%NhJ1& zkcXTbVu657JAst;dyI5!lCFVgArIrMe$5$x3UP4L1xf1wu{lt_+Q5?IGP z1S2dREk=@BvQ+am4uOM0+u{$|6`X{DD14_>#5~&F3SNRihOSzmae?{DQytR*N(+h` zSlsPbyf{1J-~}5uCVWI9yuj-+B(`C}3@hOnIS)y^n&+e5Kl_yDP}(z8!Ul9sh$@ZH zr-9B1^n~@r;8&ku!+a)~!%>*V>{SXoW-^5)=l7=g1ItEklAk$cXV_Z-(-I|Q^*dc@ z&Az_3WGB*FV`i7S-Z2kz#U`8aq}2q9TohI1sCA|M}Ye1EGq%{lD>r`KmI2 z=N=HO>29+uP=hLmT2PkeG-?FQ*$9t?P=O~e5=LXuyDli`VC=MH6s=3vbBOob!l)fv zom*4Di}!FoJG4cXhHj(9Y2>2Kd1Lseyuqh6*A(WfLdXb4K(SSRhZvMY!F+dO6; z0n?|woBDt-t)z-eFL^`tBv5tCx@HHN2wAF*6w%wjuspE31t?bzL))P^4scFyBoO&v zd(ojyYS1L#vxHnwZwFV|dC)j-@{t8SnZHs}DaK}e^zAdST`0Le41u7Z@+Dy$CFS^= z@-5NCFgpbPEmJH@-xLVi1p6S?kUi-)E1nHn6n%iNj{TvYepOSgl85>NikaeYIs&;P zl!n@gHSn|rsU+gl?fQGDeQg*SjpYySutMP^U#16#zKPVR`DAfVJ3N%zv;Wj+O)}rc zttBX;H0LDRQ*6sx#SJ~_vP;UiQBis2UvOElU3}~HhM|_Y2_5KbyL%<~GfXs;cIs@X zrIIk)r5FWkR&abg`m)1z_6-|FW(wRDkRlNxZ|S)DJ$c*NC>AqYRa>8qK>?F8zd!n8 zls0_hg;T~po3=bd6Z;670{wPgr2SD%xcdFyXP z)U_9_$3Ov%m^<0vPhg<09fl{B-a>qF5N$Ut=(pYbSe5_P>xp2d4kBz)1Tx7D$INF# zd7%9Myuj>DK~nsVE0sPSX4x7jsG}___Nr^>DbfXxH$}>vZKQ383+LeTmRn@2j5d*z z-Q3_7G|ys@`7gmGEdeOS5<7-caAPtEk8Bl-CpoMd-lPyvUJ!-T>@Z@{tg3uBmwdw@ z9q?M{B1T`MFN?rvVR1qv&JXic1^?vp=V0PxSaB&z>RG8pO}fK}wW;vzwTyd=KgWOO z>p$uE*ef`=SpHI_=PUp2AG)RSkOwAcctX`H6BI4Bg9Af~P?YmWrRCzFQY~0yXQ}tN z&XuS$9~}AqCeteZNb*|zJtJYJ*T$!ti*Ix8j}#6Y|A#+3@^}7l(p_k7wS!lzL&d_1 zH$~sR@m_Ip%;SI=C2cW1=-frD@@&{S;eieuJTT^6cN4#Ic9{1nLmDM=SJC2&=r`O`)LH$=)pWzpTkInv9N(It=P`Sx``e5cJtqkh@9&B$ zSoy3Fy>{)4aL~qkOrOAGb9|GD`(Q|gNW!q#x>0MR+yhX#bi<>6g!Ss;oCDlp+IVl* zn!Yb`jZ_QM+R$DEh$2$_WwOwK@b4`I^cJ&XcF4-hjnd)~7123`AJC>}fP^M!1G8#` z+6Iu&V9?j3HcAD;)rkYjtmaAYBlHA6g~VkJyXcQA9H#CLoZk*&XhL(WYEO}au5(Ty z))A!)=#*WKUd5|Ee#TB`oGu^qNxg*K96fYXzl7CrZtw&rKD{UZ2d?N3qI~ZVi8UEj zdS!Li-KG0{8apPdyaRL(pZsS&{R6#&yuG45uyXTT^$avY0M;hbtvo~XfZJSeom}gg z(WD6{4%7=9BO=v6VeNc4A#XTJ%EH~LUAqODY{4GEWfcOnmMp}aN?-}k4VQ$>Cq%M8 zIk{_?b7?qv=7G0)0DHzp7NrUp?t(jkZ4EkNetqN$QsI%6t zUVIMx(D`QE>Wb!)7&7T}Ed3>;F2m2wJ($QBE3P{0)1IT~w%L0sLoVD>i6t7=a?@8I zF7JRgm?}vMzoHz0BJY|yBi^p-IOcDUOB#Dw{Ayol^rmOxR- zMrR}?Ce+8mz`E9pUo>+h*KeC?SnTn5wG?)_&y#)UE4l#>s4p`FKQUP!wgHpF*bL>f?fM zfGoolpNkKcUm9=f2M47O4(9yiU4T}3tA;IS$>|nV^e3h{_(qS`E(I{csP;V#b~r4& z>9gj1qy^K~+*{IC`qZnoymxBBRhqfB(xW*A7H*cAlE#gGsnxpJgOi#Ck}|P^T|8Rf z(9nApO?7m%SUF-nbb!<#N@%B3ot2)Ip(B!rUsDRV zmMj{AlpE)jt&(Ojv+kDEfHtm!57Z8;Mo40ovtrOPCBJ$|c$DV-2lsl1um2gOfArH= zHg)+0UjJWo4`$$U@k2qm&%UWNQ!_|QBD zm0yk&25Nb6HGC{^{OQxki={RQ5AZ3Y4&xM9^Gn zAm!{rczsA*W#5V{Ji8i;0TZuuY0;3u1TL=(RcC{uQx#-zw!7tGFfWa2w8C}JS280H zm3_wkhFwGx(Krzj>odd)=6me=!gQ?2J$Bvu9=kp+Gs=p_pTDlzCjqi~(}B|Fo|1g) zf+LNRv2<`o))g=C_}$msP>{Iys?xnxIX3Y`r^MA+76va>0Ke+hFYY=tBQQR}1hSuy zp*fpH2D8kU@GS=8O9(*8j_8J!YqHI}(M@-K-1Kha{nCUs7q&<`9__rDTg&_e<& zZIu5j0bbuHKyx4gMtxkNFn#C1`}YLc@-qPrtGLvBkS=)?{5R!uShq9fWO7xx>C1@0 z+>7KNw4!c|`7Mz!|44wQy{^iqKmsKG&)E8do`Hgm$^H1`?``0p8PG1(hLfVec4whM zU5?{3(K(SE2%I3CjcFnL{6*)$fMu;~v(A|^)w#qqguuE`$J0xq%biFR^LNqD$AXdI zxLKW(F4~g0S+A}}&Ili6tVV~y=D-`_tV%NR9pi~e25SV`!Yw)Gk$;kSKaCtOKF$A* zCKXH?G`%fl=oIYL&=pmLov<>AofBll8$_lIkg=Udu`*=gn(coyc+1#GcSL=QaCX6( zayOH!;t8hhr|P$A48!Ysqvba>3$_kK?;Cj%v0`dCTPA+0=Kl5qyE18>r{uePWN40d zT8nb^YcVKK1R20&0^dEWVu(|KQxDwJNgh)9w&QN??1uajoL^4sJ>tW>P&@8}Tj4HfXz`ujiYdFON;|Y@LrpKRqcE zOD?r1US3z0txkdqhwR?_m<(;~RimH=I$lY+n8S!U0Zd%4hg1@t4#5 zz`fWtZ9yDoOdxNt#@y@~>ykGsZ|zUA9=bwJ2yq2bHc2R27wZyxkc+1nR|BlB#_Z~e z?irwIU}{lmKI(Mgoj>5wqsCHZALqE?5oyu1GLI4$7gFy*n;3ZPUcM)8@FvmzB}2e0 zfABt2nVnv`nk)P?Q#n!PDvue~RK>IEF%JH5_Yj2|LMzZ!k5qDaoXP^vhR?l0islUa z+x&yl{5Kj}!-o1oLOoCHnAZC6i-wL|+vy_>+dSY_ePJDBdTi$nB?%q(Ef%&1w_DeJbfRo|{Aky} z*f`aHXJgq9DA{pAp$nu7fh<-r6oA?8AH0Ts$w(}Z81)%g8C+ZS5ZuV}dlki|gQ zV3K3KwhUYW0DA-7&+kG{bcO-I-r|&iF!lHqc5T2p5&W|i_->Sbq3rs+o^HA$)d5hL z5(2ZSUzVj?FdT-IxJ^Cm_J%>Yx}Ty9asxDf&HyYs*oo%&;WzC+6V)LA#OU0ArqVx; z(ZBVPlz)-iDUv04iY;w?)XI^cdWJx(mcVr=QlsSrQMi1TYjk#=lTTkPK8F28Zm0bm zv^+&fo{{`abC!<8X{BW&b>Dk){_5KqkVy4cEU}?1pu;$%N3r#Lvnfsb@sX*b1G80E zSMBj4gT~!+pRTtYb~3x?9*V+4w|=8$++((g*yuo!)r218NHAcvx#3-@gN*rvbuINLmJsVg;NGP0WMU{FT zJAAu)_6yx7n-eeZNXvO=_rovK^{oJjfB%uly}Y5ES>gw=h$)uy;Vr%3h`UL~!Pc6S z-$|K8$GTxupzxl@_ViACsYmn?^Ot7n0f)IwC9>kkXc-}V^p{^>L%)Xy#EF^%KJ>?8 zVOyuMt#UJ@N8#SZr|92hpmoSg&BX$~Hix^9ePQ431HeL<@BS`L9$vp^-kHp7x0i{g-P7_gZ9)}&wl zp1XOgHgc<-0oWuI4MBQ(ixo=YHKy!bQ}0 zl#67{nGYzrL`^R~<|NxEa31^KUS1-!8}lhfJy#Z&7Q;d5(q7goIA}C{{}%gYhQsg* zHQ|YD?&q`Mx1U|gvfh!({(Pbon?;v=ilU2e)-s8T&o1g0GG!`&TyXln0&U2$CZFvE ziquwlVsi~3avk7US>S0H0D=4ME7x*2`lYaMGK6AyUB_c}18J%%w!6oqc3?<+o}=uAML(QW#qhAX+)Qv zL*Q58t0y6T#e#*HtBN&I@DRY1}x|9Aj{7~8h0-Dka}|IB)S z7@+qH#J?UUsxtRl!&?qU%3={2Lh3jT9e6Ugc1(G)Fj#uY_%RH2rKm>H)ZGGC$M4G$ z`Sa(vKLb?6;km=Q1aYq&jUujM9?1|dYiY85+sw=iq2LE^C`6B45$xFlKck^ zWMNy4bpkfB7_k%R#*gpX?Y(@chbyGCun8t9yGv2~d%2>H&=?G~JHo@>B$rix#T+rTJ4zYY347!@aqAMBUYclA5dK zG6maV{nNXsGB)?2kJ?Q*fZ`V02_f?hrcR3>Pl8PsoGx)@Qg$?Nlku6bFleX1R>pl{ zHG{JFa1a)qmaUfgB{m8h3R^wkPTzGZxrjBe4yXcTVg$Qrv`W#?drj*V3{q|%4>tFo zQIu21061Lsd6LS}S5S_Zufr?i1xPXb=2Z5y<_p-tye6Od3G*!jE7hII@X&DFaNLIt!8FNY#3jT9bSP|kyGs71F~~af z!teR`#Ap?YdSC%Rv(F}hI3m>X7Y``KOx(xm>OkPC{%1+~2QQy{nvJT3lc}M}@7($~ zQGoCpw3ZxL3qU)DghodkBaVuqD1wU;A(d>0`Ton^s=lPhiTMG{Nj_ocn>$u>OneR=zX~#a!pN4&}F1A@;YYj_$4tNcc5<(&dTTXMZEo^XqWMLm^a8;QT zY*?sC(5c|MGOJLnb=9ZWI0a^>m=>Eo_$v~=>E=i|}BtQV?xtxn>QsPNDZZ;1=EBJ_q>OHKQ1o7WV% zq7(PUP()b3=xKdW;GhqCL+9WXtO`?B$g{wn1GY)}*speL3T(@crV`Wh-tSq_ddPJX z9K||dD_FV}I3vvRKAdzCXJKd;4tEsk-c^cM_ zQ)sckbXv2`j`amTpiJvD0kfu|0WaO{mT!`~kCo((rSJqgU?OMYgESw3XGEA?qDQ`b zG}1JiPa^C=h0YRp`<{3^5;e{og*$)h>(-uAuXO8#kr4VDnA)DPmu+=vFHlJ2IMQ!& zhUzh`z27aow)lKxBlpSzw(#y;Qx1**G#F;N6m-dN27}-tdV(Ym5@Xes0zL=P8R96`hmpkdW3Z7?mHD1*(oV5 zx#94JMRbGe$%!Icu9=__)9ZJI31>zrCWvPJxgtx@-sHDtd4xsD)3DMXhcyBbnKCc@ z4^l1(oDvpEb@|${JeiM-+7iha<@K*&r=JnY*b_me_!S@$5d~W)JSQ~S5hh%n@PmXW zv%gZ3y7hy?Ub*_-tPoQno%#u%gtY%{H{~j7NhH6ziqAx~oFUTk$B!GuZgcZ@j$p|NjM>|5wn{Kh28EV-@aw1A3Qar)POw zZ!t#*=6m!{veJc>L=9PH!U*`{=$?}17Q_?;__8DVJ`#*e5)WN=11#~#F7jJOj@whu z9+2~I4M)H@{)BOonr3NOhsD^qBiE6`<@7@NQtrKkpZg6PDBFDK@$=i zP0>-juW&z%h9&gfnF>TniWI``U@wEyV>sMHvwSz-#VnrUhTfY`YXr#>oFIKIR?%tW_`V z7k~J{eTphob=Pg*Mw>Os(Vcl{c9$}l=p?0Q=i~lJ+CXj&Na$;VGf>>56|mJCN@(4g zjv;?psp!^EEO zN)tkJ!ZF-^Z=0`6B~2bE9ozo#Xa4so3jbf8;;-NIPu_HTy`_og$#!f?Cm8Ay0ZuI~S$)g&nxlx^G6-6H)h= z8fT&lIV=#5RAv43P!_X2sS2Yoy(dYgXBrViY3y5AE4|_ahRoigt2cokgW4rfV%eJS zEPXkmlG%!XG{3srewQEuqKU?%wR4ig(f41RJWBr&rrAgkE%agYY|d9R3BwWEE^b46 zIfBm2sio#TN3kpGWhvT@d}l3)73LY1Zlwqc#AdKo;qvItXoy85eBLQ>v)CdWF)3Z< zhsR#z!cP6OZ?bv}aNR=1b=^ObEZ@}s|7Y3LDwlT zf?0%W^A9|(s~yAX_(DXsD^(%JC2G}bdkm!)o~7VoZEV(i(XFMV)q}`$W}oK!ZYw95(uE+x&?|GO zW{strd1dFtThz{o&BuOK!4&ta@_B~GUQ8* z$W!1O-T`0wfB%*L0M7JRj=TTLze<3=UyDg~eorL6I)Y&_#sX+*A>dl*0N28mN@q+C zxEALc8IXv+uL;TJm4)guz8h|~rq3jM@(w>ZD5Z5}KgCsaYA+GSwt+syezm6GJvq_* z)SLE$2)!;^Cg(M+?=!J>ZEQOJP7WI$1nfD9jUesvUq_>YVkFu7be2{zq)7jd& zDCybGoWQhX?qR?yIW76-^a_~zo;m6WJ(0quMz@p%A^J?S1rC*hjdA_H!OwB=P2FTD z+5Tu1X?}0^zVpCKr?aYY2zV4k0R{CX0%inn)< zdEUB*oa1fDI#UqPwn5)y>H;>IWOTMuGO**51b|)?W`3hfFVv)V^Yv>Ddb@qq%u{!2 zk#g@N=?=UNQ#3WYWj+zZF~9e8`Y`iHSQ|2hz*6#KhLXm>AyD$;Gw9M!2_YFK=?rw^ z82r3nj15c%!N&MnF}1C`aKf*UnyWrsKD>jEWZzMBjT=-l&Oh7NaUpf=Lb`(F4?*;q zg6O`V(b?{O0p1gXcLi-1TX_n{am~GVsAcXP*6C*D$ONWi*hjXRxRo5|w?+8Ub8xyM ze9R)oR($yG!W^KT_qI>nCxQ3GR_Ho1U4lg_N?j#&ipebH7*@ry6!AmjUz>( z(8Yv*u|ggTT7kTO2a^KtVA0qV8FjJ2+lQs($0V=%?}v0d|M=VfJ4pY)>`T$c(9-T# z8d3T62u9>}#K#%qSeFAH!SY1Ht4~5n#Ly+9wZl@VU>GKQ7YZ2m-k&QK3j$CwVBgLI z_8Dx&HC4BVHC)_D6uj1=r^Uvcy_vc1&Fv3-pi9FPC9EycD~f^Bl{@NgvvLgHmEt|} zA>JMT@UqdGlc#H0l_O(dE2L9+#C%lytxG3|$a`h{wP+FjU_+y46e2$2Er|^7WC3=( zUe&4Db)NkS9$o8B6I;k3c%zrxV%C!ff1JB-`WDfw{8qkp$+F>Vt~8HGHm1|nDTbgtj=@Pw z|GOS%3GAI>!d^72;flDZs-!WRsPPLE_~cL9j0$`(BUMN5XRBSWl*uP}P=+Gwa#ME&6RV*S(a-v1epf08xt z1M;uVOu8x{lu<=zpzGuFwgM|kW zWi^jNgAM!)h9rnL-e-ptJXO(ZV|8YCHhXK{EBMOi2HF7Pof@EQh#HF$2d~)Ow+=lf zUGP~?_*Rl~KfD}eE&bRg=v0#aS@8r<011@*eqB>2fLM#h-MOEn@cASY1iiq#N~+G= zZWF36354e&hClR!=O2~vrGx_Y(Fl?emm1iF;Bx5fslvy^bbdka1=0mf^}yX6*eQ|NHO{I*Oo|{l zpzVOC#eV4XN&z)E@Ro$*QuWoUj}cgRZq^y-AI5PO?enGmu*`6p=JGN;1@=nD%h=bH zDAI|So;6-rr6N+EOg7-YEbuUq%5~slb2mW;%_act!*QT}SX4R)iBVc-1gE`-hQL9O zZ3)tFV2_!ma3YVP9vfQ&jBclJ#0CJC1E>HO5Hv=5SB@tW11ty4K7^x~+fvCfh&52_ z5!40QV!DHdW9%nLyJ)chUa9c}K{V_NT>EHwz?r4Ltt00Uf5!F(A`ZSavx-UnZLR^F zMjnkHADXt7wlh@U$CFTc!k|Vsdg6L5$Wh6&^{>t&^G!f_UOii8<`|-CuTpeT z@*g-L`x|eI`3kkqc;%Gxv#e)x*tZ$3G!(XH0LJY!p70DST-@0n3c$FTV$wQbXWXD} z-tY?^vF?po;xL171IUvXA*Cj;@s3sYpmgzHR#NsUcc*Xk#0055FdV-4Rjz50Q-W+# zJ5UTA5|URsgvg{U9BJnhL5a|i-tlR&c?5@2&(UL_5*G$W$-FQ=FLc0zOdG2UG6EkdO$iUT zwrs-dlz=r*CfT|u#_N;P*tYK6xR8zob?Ke**Amfr(CQVBT~#gWA48m=+@p}Vf1;4` zDgTGz@bt?js6l*cI1FRP6#%%Q{YD{O!w?O7?>C%1aAT;>fX?kf*5r*+gi{@f0pAIqMrQ=j3@?RrZI`E>*4} zDr!dKw}c(OMWT$z!ob^N7U*(SUTp9#ai9DvvIDrz^;lyM=-+h_}k zldMmWPSfiis5pR$J(s=M&wWm=%$n5t97-y)!=j;K)1a$*`DIc--+>cHjrp7q9vO19 zx_oVj;XK|a;m`O4M=E>4y1Q5V6!#R6DL@A337*vQ!2Zsp=%kU~2eJw1KvD9@NdCO2 zPY0)@A1NRW))9HqCKpMm9C<;O7d8MWtpdL!+a|s7xn9x)eWLoJ!6(J;I@wyTp}`zr zZFQ46xbu?&l9`Or!&Y(~cTWMa(kH!u5OIxjaI70p2wV69!zaM?0xunrehOc#7~@DT z%E$E>Y>kZ?@Gd)U;u~?Ku@rupFeFaV7!(Aw#YK@)w?p&6>3kw}&KyPa^M^TG{tftpEYE{GS2z2iWKb8K97fo1vYt>92-xx$55M%Y6F|u$EUV$S%>>7|^a415Astz7$Re4o?kndI_c_828*{<}y?Kc} zJv=6PHZi<@q>s7JKk--u3cD!wR=>#{O>Lhe-Ak_ub!#V%SoADa|5D;Q?WRv^$(C*} zx!>W|M$&5WAy_MK2?n%l___|yvPqLQf|Cj5qbRF<@f(mb#B)qptNJ%7yM+b&Nc6qx zUDt4ZqL&0$$Xz)qmX95%^t-<8W7mGw?!tA`H9hw{mV^;mdr8Z{<%e=er*$QnDr@Td z;K=pZ*a% zU$+D0-)|O8NEk>BUo@j@6jkco$D~8GmK&)(thWy@YD5PK5qL{$o(D|0lZouqIqvVFqslOCZy$YE(CPK=hfafjz z`3xH8q|{}NpKU6tDvdc39D@*JgDTH<+n@38P^Zns-nw`Y zl~pP6+m2O*kfWR84>h(crnqJ`g>fRgKLO_tVuvsqy_Vr&_zE9klL>Q`x=2eb*olFS zH-`?v$zx)WSCX(P%hofufB>1jq%ej3v0>J{Up5Af7xIpb2M_*3U+^<6G&?OL(MHDD z)m!|_4-pZ>OZ8{E1mXgwr>VS=@>g{uRrR;;%FOHwKU;HZGZ)7UD{g`3U$%af7@w-I zz`RKCu<4UNG(qH8CBZtOpGLne=n8l~+NWCBsF^P#^%=^{LTy`J(x@@aI_5>@5&8ft znJMswj;Lb~3;W9U^=Xo!um7dc$d9{x{UD6@H;3Y!3y3CLz@ZqYHM5#YKGM_yq)|WvI27{;^N7%8iKY+dl6XlL z1I6Gs9=R%EU3I{r_|4bkn!!Nrc)+1p>)xT*>X$>YOhMoPBM_4<|5*$E$&2MaCYAmN z+n@e>4QmJ_8{CkP@E(wOF$MI%80UycN}|S6OynaOc}MB?%J91K1k|#v6rRI)uL_|i zZUubScolaz99I{8^a$)Q664%fJF+jh^y*P#WHUU9va>^C$F2B9k*Hc)mA^h@x%G;BV2jv&UcaSCVcgwI?6 z;l{|>{KHY57u9e(Rk{YXW^Y)yf0&xCiO2a8`M9De**S=|2QK@Ccr-)lJ$^13Vvo?K zxl)X;17G<|0x6HYM|ZnqoZPfPG}*i9V<^`w4p$h8@LT|2lisakp_oUxqNL$LzgRCt z>Nt+(1Al1MK#}>;^1V8%N$ONvSHNg)k-qExXV272$c2;m$b2>1UF`DrN^dey4na+3 z?H@UtTLfwJEZ=9FhxMtG4QEz-QjdcOc>k5FbFQIj|0zx>pMMVzzOMf>Zm}UbN(sC! zcHPMB2xPrCmSK%-zm~9~Gjn{P#!p6~1bZ7ex8p|OzhViUm{J%+4&IV8Ekq($8IJO2{_}ulEzOu3rtL zQ`EN2wnKCuiCRsdk*2VR zeux5b3h|%0^G{mGzvJ{D`E%hO8+NC6ziVq?{KWSgnu#@~2vkG@5*!@dzySmXfvk($ z>64zZPYt9i3NrwA#B1~?cjTU)(3Bs2a9DLXdOUf2$h$f3_3GvZ==rdjjctj@g7b*p zLUx%fYf+qqhXGqyL&uHAdjx|*3uVKc*Ln}}`q~Q=sx?&Y&kfeBu1gR`p~kj^x>3Y3 zdnxs!#q>*dd(=C6L0GrcmfN@CQ}26Pc>?rzS@hy_tR-?>AKN_dAgTckY&>?8=AN`2 zEYfQw6zL!0Dm1_%1)X_4CDf_)rggBiI>aYtZlU`TxO^9WvXfA4tZLIWQ^aR$(7v53s94Rqi`hRxLalWsUV_qRL!tU(I{K82tyty9Z_fU4 zl4kv7(BKQV84L09LXCw4^CK}Cs*BuBN99L`iV1kZUQZiVuF^h*;jN4NRlFc<<#b%@ z9(t}UKQFcl`r3$o6dHml!Vrxn5n3cY8|aZ2f>`pRUDXz`Mtf0YLj@}fSq=$CS#+pT z?h{GTb7B&z{NnY>{+@%wBridV&>z{tIC@b<351g`v#j=!6M1G8$mSI52_+dyGl>(o z=lU#gyYfsWhrWN6#s$!@%4MkE0;$EKk*ywKy_PM1rdaD~^%A_LY7xICIBG&hSi3|_ z_nr{>QN$`#i?^FDg02$Sn{l&En+nyJE~pJf0( zztLo9sovMvkndw6i+6wEgl;;2sP2}mrv-}3ri)Nl+@O|+V7hYwoc0^1Od@W=CRmBw z56VjR{G!VW-LlGhRCZ~+36iTtiQy6bwK}WDLgROrxD!zgZTj;u=>!ZVxwh%8?_UfJ zEV%0Vd~@K!L!65LicnoD2kkGVPStBKW+k9*emZ@%E)?Ld?Bp6d#<$rNZ0z5rGlJw% zT49NbWRs02H!etDhu{Uq`BL%a9iD27ag)kn#X5iPaqXA>U)f*HxDdJeE((y8AW2w2WO9c>MPd589E zbfsFu92du~Q=^rA8&BC0K)4J{LTrVq^uH4yFUnFJnQJ1`c|Ril7vepeLqdn<5f2K4a{N!YeEfn}IXz6MH7KJ4%(`$=_9B(Mg7i+z3^C~tkq7Z+)xnDt<%j8ryKiPC8zT(yAU85YA-tm#3*Ft?wCOku}1%$npIN??e~3=DBITK!s4vZ4Fmzsc&V ziojouzv!Y#U*MkW63ABIWT)}jN@#l+2e4KQ5%2-0^8&an|NEKMAMEV>Ivo`kL#JPT ziE`CnYGD0X*+LGV{5D%_zy}^DyCMZC1nQnuO8itWFcsJ;Uv;5aOh$Wu`05-+*ED+> zLNCPb-Uwdmxzrmn65`Ds?j`<_i^Jm~jYo(M8WJE!1ULw(JgkN%rcaAKq&zCNXvy^) zFLj>H=BR!%Oa6B?7Lkl5M)FoZ|EYpsb$*qu`f8i-Xi^2o?!NiE87Y8_JW7+Bde z+?Fb&6;otLW8c>7tO2L_q3fFTzvWfTTpto}_Xe+D0~kKx*F(@1%QWlaxIsamW%UQJ#jQjJ98 zLa5^%i~oRjf0X5yU$w%qhaQ-Z6h2$&H|qBNCx#2eIzk8c4J3&(&j1M#x$v zCXX+Qz)20lqjmkcFzTTaGXRM%ze7`-TbN$-3q=`~oOls4no9DE`)ppjz7@|8#OKj} z*4uwl#{iCF|6V6g|N92y_*8-1@5KtW(ZJ_LutBOas7H!X4o)v;Z5HfS_2F-*|213< zDcJ2&PT+So+(=DkW!-!LK9{YufgxjPlzGM!u|P}pfxub?2oJfj!lnCAaB)9OI(HMF zH{M*CiHd!w`kF_iMsvp`T1Y*pz!;vVD>v!6PQ^SqQ)=@(VIyd~Vf{ix+3gA=nVHY7 zSJW!z>(qz@>Hzwh!l*p-d-ALh)2v3 zJ?ub227|&y)j;1-rLe#6dd7@qcDMNrFvRhIienX7<=~G1CiN+9!hjJ-z zb8kmeoT8 z+ZE2VXh*T*M?|vzLQ4*K+ZA)bc167kzOgZ|5hlc&n&Vf1K>BtC+D`mrDv3diO-wiC zJGQ!{HgV;s0&ClA>T7aCEaMo?*^hgLs6g#Y*06)H5*ROWvr=%}OWyVDi^JzPkqc8$7;xph;#tlei zFk;G`oaEF`(5)G zbLV#)*8?TfGpQW6t6IFfPlp_Yx9EDL4|J2DUZpX{p9J=n?4atu&n3;PN7G+`xo|nr zVA0Hh%EYO-weH)Fb01aI@ni=Ld-HBXNQk({MK=&28Xwop{&-*8D@86&IcN4us{{FL~e~CwjLO)&W=!Woc;P+r+ASNcG zpb$kss`x^WkWi*KzMHcA!jt828RlH6SBohn1e4ok@tdsqqAbsYTakSArXdtJ<^>A8 z0~QVHZU0Tkx9V5;@_AJtc@ay~R8W()&$3bcO80#|(H2rK84;~5`>GKi{sTIN%I*>t zH_jrpt)2&HQp*zkir*3~asm~RbRf#UkJR5u!qPK-F?j4`^KtM~V!|T7Iql64{=pFO zRJf^G$6gs(ZCgfEKPEJtQ*p-XBla#O^qHjX0LFBh_w;8T)|QOyrtI$8y`D9(Jx zU4rXNrV-gzwzix_RzOK^{9?$Zqn^@nV{`%0cyhxguqzC%dtx%Z)u7N1`&5F_U_`VC zs^-&tvbkm-^x+X*wXnH!Z$p*bmQtQ{zI*!WgAB%53zbi=&lk6iH5g~wF#HMQ%9`N%5wQKH zCRE)zp&Qde#<;S+d$W$-&aLc+k-eGz`Fq?%{$#zg&FK#14^;YN%lew5#l!J#%@I4t zYXh3EGL%&^lABh=CfVO*7v(m~__JGWb^`liJ22M7X-B3<-q;)@GJmTO3G^^AQ@@yH zURiyW+Uq%mj|idhLGXL|em|!{Vye89xalt2QWD90%&qcHoh5~fUAd{dT2aZW^m3F# zL+cLYVY!zm(f2H7ctQ(O_$FAbr(Tcm!i>l=eF@W-QQ25wxWZNu?|+EkoTZx+;QKxL z&oBH38(a?-oIk(t@0sLJxt;ZRcdu3MFF_b6q_E(3RSoDQl^eR{X2^mr|3?s}EmW;P z(e=rTx0co3EP49fCg!6=E~jcge~8j>5*ujy!Oi)|#*FiKE2?2}9dV!OB zOd2I4P{tfybZeXRO44Iw^5MgMz^8b+yM)b6K%Fkl>b%UNn%JZE{VZRJPZ^OfoGf56 zv=1`A0;sH;5%aOjo^W6ae<}*9n!0IS+g2o}iI5w;5l~Tl;m#a)X_e!df~}mv=@oIx zxl8C>epfezcj7O^Yq4G+pVqP4myCQQy?*TVLiv-kDfp;@`_1cfC=%5< z+iduL4Y+6|S;^-J8zKpk0l6TEzNM0z9qFeKB(MBAO0@!drVwXP*44V#ijiFkxvG_qZe-~C7l;9B{mP63(2QZ zt(9j>sCl`|`09}4vgK?;9t`6WyJHSe3!pHrA|%xUEvm6JYYE1RlCAN3z?qp2gZHt)f192y4@1$%t_;_0A_G1P3g3Ghf=PURB5jIbf0BIQVWWr8jWNkEVt~PZwy1$ z%577<)Pj@FHmA%OZ)+U}=CAK0Q*~Ypl{2nwtVaQ`?1VEw9}%yyLmsj*q}GQPNsql{ z{%)Ztt}}~%uE7CAX5JNQ7r*{(xDd|^TbIqitf5ptK0N}%rLk<%p(y{AIhO@9@6ssD zZrF%iG*ehH;yGLIC#++AiV?%iM!o&aCy2i4Q|5+j;+DV;eH<|>400AsNM6LS`3dAf z+lo7aFk$bXhy1@Y~ zKiW3hwr?KIeio#aUy1?|wU?z_7JQLvz_Sm~dYXAWvZFRIXs4KFs)2;nnQf9h(yrXG zWa44Fk(8@&U7G}p%-&OLGTU2Y#q4zDk(z{;^RY=K8U=|t+lp%s+3d1XDYpZ-BcT7} z?$Wd)-P$Qrxzi1t!3qvy(cf zzJBbp9YEp#878;#mdrTZJ%K`b`LV~Bt9s|XCilJJ>&vTM-q+m263l_G;l)IN6&J0M zYT1>8mYIf+6<=ZJ=5Or1)L1{LI=k;)(@IQ~$_@R%5`L3l>nR3)PSH#tgoTW*gwQpL zweczX6H60i#uc^Nc*)QbXkZLuY2^ar9qt7Sc`YuK6mt&oTP3hZ@c+Z!TX6UJgZfQ`uySqav>29P$x};OO8|en=P7#554*KRd^M2!+Z)UBTHUGjn``Pz> z?|ogri`zrprMOyI#OU=NLsO%o+pl;$NN7n&EaYLEDZ(PACOl>6)`>WbX z+$F1shfIDc3zjcx_u8Kw1qdg#7Tf<__LPrCRpj5E~Zh+L!Gim(|u?ZfqpyD(ZEG zVAZIo(kR8li%?Y>Fn9J7vM-mO%Cz2^)Gs=|IvI?Xv0K3(>XpQ|6`yBPOFgh;sO)yIb`r)-(Lm6|+>t1+bDFq5^wHCab_3u~=ivZ4P>k{Q= z0}>QXG|um5fOutE@gx_HSO7(6#8ZU$ZA4Ezl77Gj^6AD{+o65EXDQU8OGL&vvlnp_ z%;L9q$Axz|X5lT6ul9*Vv_hL^AguNUlwb10oj>N~%O%D62>li%e{vU=m0MJLB<90K zcJOzYfZ$`r%X#{c7yPY{e2*)eD#oZ5w;C2FJ>&brmMRd*O?DvDkBJDQ!WCE~mNY0& zAL{-SC+A8eQ1_1i7*hWGeE1zLh@G|ZuM|@Nj`q`z2v%aMeHW)1sX-V2FsgwJg9;@A z^&oode+M}RR$`WFPC1Eq!+XC~M0|eoEBWArO(B;}9FDSoc+hM!#oEZ}$KF-#(WArF z(sxgyxfIC9N3o}bc4h=mgAd%DNOO<(*A;p9=i)@^IWDP3a+ec+ycH+GtSKC<%tRMOc0t){v{-{LWiq&QDX(2Uf@K|$ZU9mc9GV03274zhmw78# zyq(#RCw;~AuU5+RshqGCC{#bD#2%SCjG|QzxxZL60b)Fe$lN$pKgn*fYRv<0+K)#k z4AHU5Q#H>%T$zT}72VU6sJS=JSt;$E05o5sY54kEvyf+qQtWD8q?RY0@&WML5ogSa zDQOfN0RzCYQ|E$+^tH(~YSko_+e(!e*nsFrW)1pU`AhjGIYlkfWgBn-=>I%@?gXxv zaui9x%C`=>)8N}TkvY#I=~RJ1JK4!yXydzi2XdSDv~Jx1)#sZK+I#g};6)3ao8H^h z<*@_9q&_9K4Xly67oKysXXS~u4<@iO6&kBGllpR5@ph(vhXhI0tUq3lHAC6 zXk(MFaMk(cbg}5b^aU=q`e#5#=z1)%7*M82|0vUcU*~^kmJTjcUCV!7<>LT<2Y8OF zc+jm`bV95VRA$99^HvLY`mc%&H?-TkdZqSJ|=lTmqD}#pJ(DlFRs8%j+dPdK;O<%YlUFPH+@Y+EE(B825;x14V=(KM3E| zN=4mHDu(I}jUIehC6;J?n7PvOrkH>eVmJTu4f{J2@t?owpD$R+4j}d9;p$%W>*}5y z;=+(C2k#@NlsukYshUtpw%ALKva9Wi%JU7vE0#mzsn3NT68F*2{(cjV5nt;P-=h!f zyFcZ1D=dqK{4GP&Y7`{Co%2TZZaB^AEX0ZwMIkpb?+Q^d@oW{mf% zJHE$mx=hncsX-J0BlvZou&nanW`5i*l8g2ZaVC}9Z&4X+a%xKkpX8Fq*4j4(dnuw@ ztr71ioVi{HN$Rg7d5x^qz7_(-@k_JFG7A;vF*j)p?cAd5mCnC5W;qw*ZB0o5oK5V3 z%p@Ce{ad9kCg$sj>!;PECL&y-dpp}8I=b8{LBr9i6gDP1EF8CQ@l8(*YJ0iK4g9`- zVlRI~Jo!k~9iP?6do+TxJ>6CD+aq6tBjP0XK?uZITRdLH!1D=!Zz#fj)hvWcGtt!i!0V_r#j zoNCaVdLF8+^SRB`hE6@lZWJ}{EVOEIGEFoA<`_kJnbc-7m}}d6xSvm=q^e6 z&VVvt9VMdga&*%xeN}*)DCg#lfhWY4T&%o;Enx^S53l|-ltwU zbod#BSks)qbN8IPYIWwtQR5g2;0mwd+3JjLT4h)fUY1;#9z=QL4oZsA=wdT;#V0_h zTV{npJP^+_JV9C2ChZSYOIiBJ&?;!+hRJ0v12Lrp$BU}?kct5c&R*ZeRTt4wajYGgjT&V(bcm@jet z00W#J-+RmlbmWPDj2QoYarliHn1Z1_IE~(c@z>-3Ax;yUH%1!BY1IRAS_@f4h_Gxi z&bvBwC}I8cBmIb5{Q4Zmtricvo6%1J87Tn5N*8|iL>pMwu+NKR4hbnix6G&UE+<(V zdHwhSpf*S>u%dj8o?B->N?ou~B?={*c2o$kjPU*BW$yHTAr>ySq*)Gl6ldvNOHriwn2TX(0X&`Z^41Sa^@~u%U zoYZ-*G$rFppw!}RNkR96knZAB+Rin!!*4ed-yJYv6CcYk^CkkxztLyhZ7l|MqZBIx z8!p5hDCsUrV-La7^{0995ysU7Oe#WGpSNsL70z6Zk2iSoYICM;WgSz;GI)2Z8~a%( z^TMQ{g0b0lAK;P*`Y)DRRsgu&8eNVf()v;^gb{TolZ`t@8Cs1Sj^heo@vBxkOuVfPBAV(&l}$j z2(Pzj}_z1(+_$#!8zB zj+JKqlFa;Stv+g3$s#35tHjRPHt&`zYEhD^)+WUxs*v1}b@BTHVqm-^L-PPQj9~v) z7ZlTf7L>^UUr_%aEhy4sLGS;0LH&kmQ&HE!+R{{C*6I(#YV3m*vge*6VbP$Gu_9rz z(Xu3YUlgkiOB&YCM^2oMg(!o5b;D)OYH@$68U4HbkH>$~`rZSyzBa+}_ZUBEeW{%G zf8?`vLn7c9C~r7yWHRu;d#a14tGC;WY}|}veB5&5K!0tF{-NPD#d&uPHuP$ufaz>0 zK@Co2_4kax$HCMr1W!jN&fIt)0CF9X*d&oqb_yFCK0B5ToFN7VK|)3E@kV-C1!p-V z_qj*F4~b&NruM(Lb7u!qk(uHVYg0fN7hD*wtf8Af$R#K7H6@T6 zqC@iF@!9~kjdYLWf(|AA>59#OJ6X(k>xlsUM!Rj%b0z>&>N1>^>vD7Rj@A+L?&03ij&jolXv3Cx0x$6{;|PR>u?S!Np;Az?*utqftJ6 z7cr=I+icW2VbLR%>JR{|2iGnT`O+}?_gtgsH<-EE`nOV#8HRlYmYpZNv*3ZW%td*uocg{_iXk)2*Dm69=usipnEVe6gC$mfvxV?l?y%w0uIDxeV{y+Bqr z<4vIY9YSQn#6yHCzW=7{uQI%QK=b^HpnElL zAUu?jiGB}^VPRk=gXv$g1E=SIt2ckYHkF*Me|0D6F)JL-rq3Y=B|T=6I6paW4lc~jYJ0bO!q~us zPzfU|XPN{O4VP~>##3o%F%iszG~Uc?9!4G14l0x!9L(h=A34x{`g*My;L=q|*V>Of zgq1Auz~E(gZ28T@k&xV?$q^g9V#1se{Y^lqXVnCa)Ldu)tteGmA(xcL;!(U9Lx3&D z7RxK0=+(QVGTjv*C6K(P+vo} zu05Yk5J!G7FNbTMQ*hb$XK~87=3hliG~%-O0r%&j{n-We5yFe-%Fd6cfdMOArI_}R zPqD9ndX44k3&*-GINWBg-VmI*Fjz}>5NCa?!PkwfNTc&Zw|r~RxkWxkrCuV5Ys_fV z50S{>UG2{f`p*ir7R0{mV>8Gy$>54d4`%bfHyj1|_h#f|Vzm-ub-mZ`5zB}P{rp@w z{p9Tcp3UM!m~$YN=Q;(d`)JrR@#5X|49uPD&;s69$dYK1@5Pmugn}-!Zy9n)lX9Tn zf|Sfyg@(cvC!8fPh03z--enS>MBX9}WJzPA>&P|HT6;LiAl2uwUql*yH@sJYQFJ(e zEnfE)bqC$G2X-->;{M@TxfNPa=l~S9&OaXN|GpOf#=}KX-`djVua^6lz33;@@5`G` zLBcg!hp&D*u(19nnQ(MKMi5I#hibs==8v91 zvy4h-NTPJ89hxW6D+nW{?<@BoMjCHOm5k`5GtF?R^3vcMu-k;eDw?E01nNEX3{WC&8Kww*1seXL}DcR+E!%clO!JlHheSVKy@YupkrHwk3I(6uk zc^gB}mQx& zlP8fM)Xfy9ZhV*7?ey@w81z7b@PqRZqL3WaC<3q$1#Pir8E)GNT%x${*7^( z;E-^81V$_#Hf*ko1}8)%T28(^)Et!J-4i!w)f`@j2AIa_`>vP*S~FM3t>k5qTy179 zFN-(AYGTM6UoVHj21HT8jc|T~U%KfVj^p$j^>!5z zyi8^hU~BHhnoR zSq9tx`EL0QQ?8<+h2pO%nvyDj*+svziccDJ81H^j0KQ)i3PTe6kUtR=pv-|!jeOtY zmvT~*%2lsuOa(@mdi4AH{GvgRyn>9XLMi~+kF;|x&mPvd-h13btiTcO_C7BnHhzxe z-xm6K8U><^yTxJcIr2DX>aqNCK`qQ`LGk=pq=0F|c$gY!R z$4e#gYTqMFfVp_%OVVE;&s#QL5sHCf2w7CuFPF@gkrrIbcqJGR*AErw4)@s+lHDdI z)26qhgYLds9Hv|vek3l7ULO~MMBdTk=#|2c+gmy0@1F)H&tCeB^&vu zBXU(FhfTAqJ?qhq^AV6@O*Uu(Qk(aba6>v4QdB;45$`iIhzj+Eizl26OxEoj7)|*C z_3QlSshXMd%&CS@5-8jQ5Te<7X-+1F%5?HBaCUnpFJGj>%L6b2^1~=)z1DDA&$mWN z)z*|oC%XL_J)T_5F8rvAZMN9lu287X6K)Y6RtC3%s|4{S>6H74=^0boKyIJBQ!E#S zjbT43rC@Gcc5Vl%q*5O-wJ8FQV_e2gayVo$iu5N|#T@hOf-1lpBwZn`Vw!wT8L6aL z)e3H#e&b4eEI>&X|Dz=TJuMgfKQDd(O43jtjMmk*clg)L9ISl?PkQI)Iy(!izrzvk zcWD4IJg@@Deu9~BUFs4ExmH1VGmA>!&3VC7-nt;vvCBvYdS+{<%_03OPYREvc^aO){99|7ZfR+FFa`Wx!PsM8n&qtcw$eQl`CbMSWu*_ zD^-%neTEzAC=wS#_r_`BWuBb%-1q%xvkLkg^i6@3D3M&3Zl zL2qNq`5+sGE3qZU15PmUf1F_d{wscCul$d{;@4eYp-rY8_zP%q2YP?)>jbOMaX#wkq08FMxLO-K87;|df^l&CPd~nJ zlC#l?llL2vOFe zt&v}o{58moFS_*f5cE~OBzH%YN5WujC6Q=G^s(<*SFt@u6)Fq-Tm-%;UGL%8L1-ij zCcXCOw4g{(<>j0yCmbR(zBO^a8~lw8rxX{#*5;>JC^Z;|Y8=|HnF+ z-?_IMy4cwLb#GPt1FujMGxswn=UpsJJKjtrGK%tZWq2jCEaHkF@{TG;+nzT4Hyi)L zD}+VP(LU}S_q_hLV1E?q{V>ghTqwg%yiC$U zOEPX>A+N#aw?&@T?sk+S3#Mswsw#%Z;F~L=2l(c?GmGg<*1kf@+|kTSCt+jD>>>Tx z9`bREcsMx|?%x;-5mhdn0|>oxgx_z1dnAOxj0G{{|BreP?|b5caiOFVrb;31o2VynbzBF~973Kt+m0ZHa2A^Fz*BwoKP6TeQH^9vm-)vhiE{&QOFKNoh z5N)LTm2rPf)E;Z0^VY|?GL+e{&{J}&s4}@PdBs-o-VYC<0FX_?Ay82N9ku)&?kxZlNHC*mIm5gbFkAQcX#2KF~VK|Qw(Vl$ct8-}wZf#>~7ETlNkFT?PZw14a- zGQYf&(d!2Q|9X0Bix;E~k~2$Am@1^oM41WZA(V^L|;Zl2%uq%52kc?VdTqo77+Fs-{`+=`ZE!7iz=uS#SADYL@ z{R}b42xtKFFp!cOADqDGEEMqd6ur|JbtO7{psqcVdu6pP?_PuSb~)?m^oj6D$c`a) zQsF@(Mf}>)fxpjaNzz{QP>I8iybS7KE$nv*k4Y?n_g9(?@^zLW5W2ywZ6C%jX1RJI zt+{UqBi7zVBkeUJ4S#3(xWIZBquKmPeUHT)!Bt7zn6iq*s&!`5*OsKJ<{3dHyaohIth&)m#^7h_2)*K$5Ygi<<7SV~xTYuLMXkGE-at zNoMF9$SCnyW{a$c^=JV&Bf?^Z+*RV9H3#s_NN0bC0?fnGVDqpsd~IJ=68=Zifg@iK z`(SOak?1DU#*$9okMM<>69}`oyYzAn$%trxBtsm}4?%57dO(T^XkRhqWX!}1Xr4&x zbISlBIlAVg;#gv6Rg!*c66FYqaKJj9N-6G#HTZ%MfbB%Z1$4UZe_Rm${jT~ARiL7& zm9d54KY_k~PsW3P+)@ocKCDFjm{CoTl$0EM)Q^qULEidff>U{Fn``8;;=hCOOwniz zL|KAk$ReS-ZO(Lxbxk^4H8^#pO4PMU*8}FOtqCqhi3UfumP zbK-0T&w#T=!1lXX>@;JTlAPKzJ=t2>BKP+5ka{mg)Gb?qE)j$TnC&e}E1I;ZveAwos&ZAb3y(2B>>czqVt|`L$A071o}@#uv`T zw|ouSHKBT4^Uk4U>5YaX%esMsbKwUgjDAeB7uZ>W1%c+V1EJD+}K&_d9|$C?(K%H zv}2-QoLpuL6e$>e3YCipv&1d+JJvUD%~v|-4)5<%pkC5g@ifY$+9kS8Gm&|gwJ5G0 zCaV^V%XC)Jwn)v!LmJO7!M9n(5WTKsCzvQ}M4w90Z1()|>cp?P-g}d^u|`dW26MAB znk={Nu(_nWWU=J2@#4x_0&uK?2skpx z+c8Ow@+Au53Yu>Df=H3wj&st2^4=?@!P^9vnhJRmmQghQxDd0G`7RE9h6Yjzw4#Jh z$sBWX{KriO>eFFgN#U~Fd{VB25M+*;c^JF7Z`fvc0UwIre~Mv$=k5ajQ2x9Orz%Oy zqUj=gEji5}^wgl2uV4|wj~~8%jfN0J7KSk9mm@BilDwU1HI1dBQRB!5`vd*%t(M!U zFpC?58#o&KgR`o>0tY%$YLYP*^T^=v@ZGoDuQYGn>rw+K9}j2u@eeM-5P7Y=DZ@><^v={=5NdO=C47p!~zAws9c(lvhB9tZWN zUC%`gH|ZsA)7%W}CBh=x2TRZF#sTS8wU-C|E5tAQ>WWtY4Ip{|qzTRsN1Yi$p$Z4l zF5|4vtWckT#J@SlrqnM>QiN7kVfZy)kHgVMWpD&$_h%_6XXocmIh4I$o@(gPZK(>> zOBZpQ8Wjsz^1xj-ELh@brtnArhWzwz+$3j6M@Cg!1Cds0^Wm#7FUH(xQjlbNCP$9H z+%=ZPO&L`ymreOm#tcQ8e-F4eTih1wFivj%%zCXa^>$(T%249`b4D>IqVpTejx!EA z&G16K@E63QSE--tID{*^yIg_A#B!M2a_G57K3OHI%5&F{(X4Njk%WqT?+WG^4XW)z z7j77IqYR>1BFR++lYB(R@pA)ns`6gH)aMCz7Ft!!C)FQ?9eavz>xwd6S=cNfh-0;9H6rn)V3b_A+za8#b4&#fn$p zYb+L=g7^EzGnk9~lW#?@vzq(beQ@oD_VbAb21D9LpG=^;ag%EJ$Z!cQ!3jD?@9;ge z{<<=6YoMYP{?uk}c8yj+SRn6j|XB;2pxwClZ9L$+cj-Nc`U+rrViZg+#1 z$Wh8+Jr~qZ4970nm8+``7~%9CPCxp_1B*X`@ub=`ASEu)HvVo#4RiL~bQ`O{;e9H~ zvro7(t1Q06JfPfs9%cBY5PWE5kST}nr`UCEHY<-sxDTUeIBShSu_s2nx^L9{+8P;`_!3_}@7@m`Or zoTu4vo*3G(5F|`5V5UNe%2hXS5=pw?;X!=drYCtb#rpZaNjkKmTxOk*_G7D{|AMvU zbV2>=W{EUE!+DSQ)cGQ%8SX7(7?VzWZy3s9fUg1N0j~HHv?e!5*chWqhXDfNW;$Sl=qY*mZyqj4| z_O96FNpF8J9wnnnbeCQ6L$ccGQ+aB%*l}iG|s-guV$j`Q;>puF-VHIi1i% z-_$Ap@Yx7HK{N}xJF>NUrtin($AtP7cE`^lNa-tUtP1y3{1YF$NVCV^GZe7CXDGr{ zs*svW0*krNmKc4F`;D)nOI0XR@nS>8omA3CDL{R^;|!#Gz52S_?IzA~Y{JFUq*p9P z;vf4`NE~>herjxzs!MdTfY0FkKR<)tZR~$OO8=ys+OF|@$g>n5DB{n|4I(g$Q?s2tJVqIy?5-AD!L7!XD`CY*!JMt%kc_YHF?bSkoKnMvfReY2q!fi$G(7 zw#-3KqL~!n$K|?5rphTb&%!#M%MW7;6}+^{S*Ce94hN~uShdAcB@BzAs2p4BAxbc} zx;o*<{gIxdkZ!wp6m)h|2eB@LJ*Dn-fih_<{i?=|AiTW3o6cq26mJK%^+kH2N?ptO z0AS-hRb;Wi=bGmhY<ci5ulZ=saes z<`Nj%%-?Y*m3sFk+FK|l%H^{cl;IenACw6?egA;;i$aKL4KW0jO)ZcZS7L5#8wo!xr%NwUrV(#~$?XlWy$XZ;5`B2@uU`3Rujk*DmFEmkqsEEP_P z`)hQHAU^>UEtRqa(cr(M8hxB_S~p@JKEwnAE&rxOoIMaEIuN3U+^PZZoQ=0emeX4w z@pN=B!H*tC6&ACM)M5tJ8jUVVde_8`RPJX#1s zxBci^VW1PYx)axj^J@9&28XzbQ_X-*;3(g~`SCGBv>)Z6A565aCI9EzzR5VVPR(>` zF2KbI%c$j6-1UW)9p9JrJp3^sMev;HVlx)NMwK#azMuL+aNsC&|rbnfEbiu70_*FMlCHIsivy z6D@t>sI)B)iMx$ih|Z`n@H0cMKBie_miHk;4q#hCt5ZB=$U$5El_5uX|2A`V@9{#r zbS2b6);`kl4#SZw_J4!niMruz3BzT;e zQ>o^SO5YT{Os22Wrl`EZ`HD#xNw4@Nr?^!8r!oguC7Bewaz6XV!2aK(k>7bFg6m1d z#q>`T*k7o>R5k~R**}!msDScXIVyOZm{s1dPMChP+R8Vo_r=OIQCK} z@+*6YQH$!*;LQW;FTzG!0NxY_2SZgHB>ImGxtLauQRXnCWj@TsI1J=t^kn-$Nq^Vd)@aR~4A z5mGbQAVQ8E z6$|sCdOY`r1EGABc)QtV221PxmF2kj0!vpQgL@F8Fd(V+&%pVa}_~bD+z^S*tV{DHj-rb`|jo{u!HjhdjTOr$`Ln zZaC9PP#L^G9hHaFyQg+R18>@t&iKYAVHo`|O4yeJVIn-u2TW5VN=e%0i*gS!yoIrA zoD=I+{tniSrF8-{wV=u;@R6pFrZ5$L08K5>PD4l%ps6K)G5v$4W(erUg5+raq^T+Q z|CHAZKI(h}9^6&@=iu<5ej}>DM(j^=}}`|DifD;{H{gWM=;lR%Z<>CJ4v&S9PWn zMwrgGtmia_j> zpRB)1fc4iP;R+w(I2Vpyq8YFmd+Ey&fLDhzp|03~IRUa&tu&r_ZtB}a%qMd5IBzHY zxp$zY^#m0P6fjj@LsS*H+!LRG*>EiR{(z)Rq^XlKhQAWe68I2cDkdwiQMz*!IrQp0 zy|=lm@(!|I^MGW7`Zm3SMM73@3$|2P6|e+Uy{qz75sac%73M4jTLM^yc3D2-j&Z2d zi8e4LNfZg^$6*60aUUgy$O@>x{_LFfG6Na4*3;q zfM6ynMzUOI0t3#+gYF@V1*uHFT<;87*HMZwm^J`O>EhH#nd2#LxUz6L4@9~G?%CU0 zn74F1)Wk4D{7a$`T)t>frI8TMer3Y=PZWY;ylq)fWvubjD7Tb(Qp4I!0O^;;S5Zyq zlBF4Ku=H!J8{Q&d>y3eX(@}uc1`OySaQ)2@eIH{Ya$oo}n1egNXZAhoyQ8k$Y2ql= zcvxURK+2o1Mhv`f`l5nO?SPXQcA0y`;eO?LEGcK}fp;Wm`uh_PG}#^|?9&P{jMS$@ z#(vmzypwBs@hM?#xOMM?#ccU4JBF7+LK2tAst>*Qc0pHj9a@bkiO^jv#Xr#P=?zqh zw6m^xg-nrcPfl3V4d)pnTwEMlxZEVF=GNX~zSsy)@u0hJ_A!RT^KCAQ1=a8p21GYt zCm~PDWnm$hWYF;Y69?=imF2yZMQL`dWT$MDO^c#uY4!1x&@D2!s4|Jv?2smY^@kx~ z!Wu9HXuVah6JdKlAG_GLSll61ND4Lt;J{zI?omj7l*kxTbU6Lf5b#mZnD?h4AYu2_ z%oKC8+Sfjh%v{?C*6cOEO?llZSG6nG^Ij%4_I zPKeWIJW^6rkzi^fsD~9Ap#EBzpKJrvUvd9df0;i4UMf*vxsgUbxEt}DolQ?$KO$Ux z=Yu}Z#6(>gi5>d+)2mh6j$erk6y6s)I=Cg7-fP$+?R^d_Flf*Px}2{^4SrE~2jrA! z1vK$XxXJ5y#Ta_?9FaYBDIL3iB;v6-i;5=Le318qODLxWPGcrXPy~IiW25!;>lHTu z?I^DABEO>%seAkEwR=YegRk2~u~ZxNltHX=F<^4CZ9&~lb|C-p&0|FG5yTk>k2E@aPs2nxZoIs5V= zoxF=ill}bF$z*V7dph4O!`kPJ8UisFZni5=fmSIQxeAGxv@DGNQQGn1m~I=iT0K|p zD7=cFQ6Y4dHIy{{e;S`SfT$3_`1GQK4TuUsZw+GM<=2`v)0PuoU(~4cad*hGNvBP& z*+{mknv!pLFg{IyjZZ~?Gd}gx@`l8a)G<|n&)@-*k#ZkmWd%VpaF;`4K`^jugYHW# z!6ea49U23oLRh<}GJ1e`^*p(l)1S^sf$~gkR^SZw{LeG^cVF;e$dhX9Q zhw`M&53oMP<&XOL0M;iCOExQ`^?j>MzAnBMMZ$B5bAjV8Kyvls3v?h{oyo@PX2`k4 z-s$eg?e){oiVO6_Fdc#|eve;4vyZ1mCN~nx5l^X6+uC7@k*r>JuLjv^cYV613^f87 z^(bmh8ZzvL`LfQ~(4tGJ2nDUqlFbt0yJTWPC1=`v5C$FX-ePbb%)mLSM4S_bkkS##JtQ`-j!>ySI3rk6VI_ z^$Xs6>??L{2=;OkiPA(=Hzj`w(6@nJidvH|F0h=L_4Xp1Xv~UvvcSf7Y zNDPQe*E@URDefVFZf(J$A^n*@y4i*8RdW zt3Jj~HogSdu~2 zFlXsBNZOyMktp~!O_;s>4l(d~nyk)u&%nM;U{-pepQ|ZDGAn=1!c%~#)#O(6+8z}< z1U+@3ESfq)7-2x=qhjW#RI?#fwvz=JM{pRXmR7R_JOI|W~Kd7}LJe5L+|O1@sTSeGPyrLZG= zg7hsG#uL>O*#k)HGOktkt3r~89=2?~9d;fbEL#RR&Mu)ahUghMlyj5<#y0DtXiOWW zu(9Ipa@4lp*~7)!55lq)zqW|yeUe9)1uS$Qo9YHKzTn-^FzDh?&a1o|I^K9TOL*x1 zQ!Y&!hP^a-BV`977iRi_Ty=v6L{Oy{30+;d5Q{8WY0%=R0J9f+Gw6w{So{LNO`}Fo z0PK%XuaFQCi6wkOxZAk4utZ_aF40hclc*I-x@T`rE&F*d! zjF}DiK8N%7ILy^fJ;QT}jsBT{-UCiR4~p93M?mB?=7(H-M2*f^{Iw(AgC242adhnF6aEH%2 zYOW^UcpJ7_VGbZzFH^mC5t_+Tz4}2A&>Q_#<&H^+GGRHCC^#{=EsOZyQ}C$ zEpI@@0w+#-kF6qkog?w(H>J&CvpU~K&=}j*98GE-?CUz}>`H@bI3ov&U zz8+ZhnkL(5&JFAO^zy5{#lXGdoPuSx5=}xpSzpXxWd8RBkNR%s8B zMbpbEl0}!W@^R)CVz)<&-+Z={?+DG_wUE5R*9on9Vj4uU!0{Hm%-{8Q69AU^G6;_( z@+ZxrlZWIco(da77G>SN%_RPw=!w*yrM^u6Im1O&i<~tVMx}P%?Jd)FmUE#moSi4~ zqv2Je6Ao1|iIj*=uLpfq#QrGud*Bq7`_EDKZ{WuiA4>gi$8c_}l=(bAa?kzVdjlG~ z_083sBT{K~bvqhL-mY$)$Nq081T8#zyNY9_i7Ns4v-RN2-aJu}U4ia^FJ^ zn54ATn>*A|;oGvnwxjq?R%vouFd7t9d!ay~1JfGJj64{p)WjLQ?}7{)u-rQN&g0PU zv%4Q#>Bx(!c1hDR?*F(Eskw2|d7m~C`K$-GLzmSN`pphI*GJ$j{JxQ*+x$#PMK{~Y zQ>qRAwV{$yv2JQ6&mO-rhBe9I6Hw6?&dv^O8}%-N1w%@ZE5pJ?xbW!{cfcNBid~1o zi}+xVACGQYU*|_&6!&JOwkna0uyg&a_kOf2D~jp|Av?ibRGncEvtDvRl6_%XsRgL3 z)N>7R1?+6tp6P5g$hr?}?RhJhUn1f*J7r_g1Fitc#YlDQ%j?;yCz8`49#TzJ`q@9; zF!O{k>&jhey!qA$*a8ITsb$+{a&-GfpKs=ynreva*S)_9@?eO=3mS}yr|=E{UlOUq z6|2escRbE%Pv;fUPj@_CL@&+dvT(c?zx?#>vRwaKM`)u@PnFTJAFWyM4&&mtb>#Qv z-`zLt(QYZ=kIJ*|`E|8#p47|S)2pNzP)OK>76AxOIHoWX1k!lHWd6&@u(j_)30FCt_1B36Q0PsBqAW=5~Jw<`Qs}Z(nalq*|nMdNV z41RNycI-Les0ONb1I7lQc9i?5KN3agLi>xOX>n3(k<1hsF$DVrGa{@f>ZtJCGY(m( zv|!W`3jN?O#ZJQ{Vg6>%@#Q-r-wH+w_k0|%e$j>gGOqdt7t2Pziwq&b)?fFV!z1Ze zP20dL2b&&|--8_DCuXV-@rs+~Fb}q;Q4(?9PIzEvd<7?|aA%IsFlTN z{xEa=ICR*VpGJ#J6`}LhT)X*cjda=*cIgUPkGZI8P~w{^5@T`JV$1h1ni15`Ca17Q zx@nP)>28s#)$E(+G)iAc$Y-$%)u7neJBJ-zMLb`$X-orjRpY(4&7x<~KU=YS1$dIOr7-taq3cPOve!!vik z>KiQk!`YLf<-9}hBbG#`jme`DA%}e8BQ2HiVhKb3;0i z`9|KmT`tO_*UPVJ+w>d`JC=S2Bf$8gd`d|Sspu8&QR=Qvw4n8Ss4aP-RPrNA)u%y| z4_ZQN9fjHepwgrMvl0K!{T0BJh&o#RLX`l84tQXY?_{h}EZEuDEO(o+ipW#8TfP|x zKCgNLUm%D^{0&tmoZ?{WzzUf8Sl=Pszm;{BJN9`Q*z!HQbJj9=#;@`@k+BgXSm|nP z7Jwa!tG0>W;C>XUNlYZ<4S zlqPk-WC5x71x`iQZh1#?Uv^^T^j);Vr4E|9-L?YLZ93L2-vkos$v4Qdqtj%%Oj z0A&q*N)3mMmVs%ATAqNoQ~XXWqR$8j?6x69?!C<&mRq@@gr*5V>TEnDH;0jq0d;%D zaB(OzE&xSNsn|=NIF(E%a*VgG5K2me?h)F#{5G1E0>Tmur}D?(?#i`BDN6^{m%8eJ zy{jE5-FGpn=~EvXzj@Zh8f4dMA64%T9p^_5M;?9GXqsDJH&vf3MXM9685-?PM;geE zME0#QpC4bWsoRopvo#D3Mo_DLLgyH4l!6(~5-?wf)>mDi5n&Kq#d6JT5nU}Iulu3U z8)Bj;J;Ni=<7oULK5?d<_Z0q?9So5w+N}ns&ffVn2H!Z4AHSu=oiROCma3ecwarf- zM#$^lh7qTl91hhFL3lM zheWjXB7S+bu4%y|*fyDIrZF*rt(`EZhE>6Dw6oaxsTO2y-WWG0b{lhZ5) z0Q9UUOl9dqZ=6b=xKs>Z2d=6)I!4#mb6K5+6Nuf$nJdf^cramyptg_ZR9ht4i+^gg zC_PGc?I6}2(b+_L<%Q~Gag6@lSPvQebQrt%$L?-t11@wmZk{OL%!1UTti9!?#9gAXNyF)t!Mj#HylqkeM4woMMrhf|8% ze~{rV6LyZi0?HNgAD#8z-l5;1c!L2@+O_}*>R;G11!*a;g-g+Ls#C3~wavG=j*usx zN)Y);=5scI2*XBNGBS%@a;go0dj|6@yK|8m#R6$a%V=r;cyp*{Yx)M}EzJie2iWOc ziCiY10gZuv>|Dd!tpvrsY*l%4Li)H5Ey~2)?h+wYg9sfjb<2@y+L$x9ewfzCRgyZq zIZQuxd$|_I~}|V%3IO_;}r+R74d=q|Q{EET~VLU_{{4&p z&aLf_U;LM$^Oso;j76J!UE+57+{J_!8;P(pR*(u-P~Jqc%<gYzgQhyk!(6cgcah z{g<&u<*+jvu$;NjR(Q?#@Pr7;S>rR`nwQVM4H;qyQOW5KO$!Q3(1<^M_GOCt=k?*%W#!MD@MR_Km5>oIk!PRIke9X-+Ss=L|3=+gzh$|9+rkRcAl)V1-Cfe%-QC?F(j{HeA&nqNcXta&BOoE& zARut=2VLvC);iZ&dwb4)e|Y%|xSo4{W{f%J7?aw5@l1VZ$>ijLk^Y!`+q^~Fx98{E z*&n_)M-vsSjlBq8T=wg> z-LZ|>rr7VeMe-GF$dJT^#gv3#VMRQbVhQTmZN^@l2z?k;uzIue-DRRIA|nBoc_3aO z$%Wvd@Jo3i$mu=>ZG)*>p?LrcL#xpICVCi&4+%x2jL{8&VpJXX_QqeY%Ei0>!_~w)h+!d!8AKzcAX}di26hOx|MeNOnH)(ZY=R2{7&Hq+z+!C zdYmC9Q#;L&erB*aL4P~4^WxKX z)YIVC(xjqQ66f@}WG5*vvJ?dZAIYgMZ_YzI48tFf6SM^5-ULtaHbNH#6(+a6!0fz5 zK0{N$BdZ+ntnclL50H8B8(uAJQ@7NBN1n4 zf)#`&3F0uJ030UCQ90!)#PDRWa?*zoa+3R?JJ_K-V`#XE0sTadOkI^g9cOQ=SkuE9 zhx|ZI=2lEn+IPadk_%MASH|J(pqL)#y;X1mQjYQ868%48`ghU}5YvA}G5|3cP*ks! zYtK&F!sCI&U~CRd-Wtg43zNP?jn9SA4x5aePr_6KMfI~+uzrH}Zn@zW=Uv~*L3atB z!_&_iu)HSEW}L^I`Mquqwu{D}U^wzbVXZThqQj74V~BjIYp_=XfDEs;ab4?&4|we5 zLryev?li844m34<_1Ho9Atp0!2M*yxdbGBb5<+otYD{2BhK6&APu+2Bvz;Nsk6hE? zHy2`a5igrU1V>8;3=`K&imQ8OyQ7%`nBD-EXnC(;LU!BXjm)~A?*lwklxATg4<)>& zkS_P&bbv>6Ba`(k{@~NWE8eV(_$N>!_j9yFrZe9A9G86`sX!3*KRY)81 z)~PF)@)yh|^iJ44YdTb!IqQbg?PAo1C6egIxjx0Od{*nAx~3C=4 z#76y9@x#>mt8N=E6UnsX-sYfot{(>SixUnaW(vEPb=Dz#*_BtNdslKdwAn`5H|^`C zQLgW*Y-nMWh*OD_5oPy!)8_Ht5b0idwe=D%2oK(0yKIS)!S9ytIr;T61-_oT-xSi4 znF{auwvRdxIYmmva2U+_&K+co(_v0bAD7rcJDHw88tw;il5zP|W(twWdQ-#%*jzim zOz3$UY=KPXgdsGAMjU{qOXK&FKboU|NjwKRN{Aw=ZS$!bV@Ffj&WG68n;Z4~=Q%t2 zv076rLiAH-1PM@-vB^YqsFokkagiP9uwN?<@%xB`nlI=TVe3|&Ya%cwv^mWUR(Q$RLDnC&=u7?ku zZa`#P{%d6aX14wd2r>>LUEhb;HQUY$TT^|1BwgnQ^c35M1sMo~rA-tcnfWhV~HUK4|ii)F1n;56xUCxmMM@kcl=5c}d1NvTZF^=8bR? zv3MzSKY${*$Nv#KH*huLtAqU@yHEC%v|@8UR?*tGcSoYnsFnEr| zC_yMFrqG~U8l|Lq1>sBuaSSA~&>fkMCn`1udom zp+E4q(En#I`8xphKcyFHleDF~8L>jzW$NvmcX_j8Jl0w&Ut~FmP$?TSBYkd!6Ur|$ zbaB~{m|D9}!@PgumpE65(s@8kSHm%yaPED}3Nt!;)lcyxqpJ;!>KVlwE%L$;EAF0i z%HAHl``Y=k5-VGG36;!?=UU0uOrg|_;W=|`kRevM`S1Aan&(WQKLr}#bxs-TGS}GE zRF$XfJyZ`BOwvE&THZwp^h6_R2)l_cRHJ9ZeI=#b^l|t6=9AMlva#{^rPeD;Fn+`L z$CCwc7tq%37<6oX`_ou*Ms8hmSp0~3#LX0MqN=p&=VT0OJxVJrC1)*1b~I0gQ{n=H zr>cFZh@P{&-9)ndAobp1?GmLHuU&Lui^K6O*s$PJ1CH$HzH{9e)PcQdaakYx`FjDL zy=wsBbz+(7m`j0kzFv*l}h_l zlnuM^9gTbdlt4!e3Pt$~4a8l;?N(nF9{W&FZ$D26hY(*vYf4WCE6Q$D3z=(hM3f4O zPFLQfF6IXOf+RpsS?i!G6t=sHO-iC0JkBZ(m!$TspQATTfL_L^E7E)_RCaEoMd_y( z@nR=0`A#|G;N=8bNs18@lhvJ@g;^ zcMPf!wZ7Pv!?I|wR|Fx!L`kBSN)pj7#SUKx7s;7B5Xd&2*#o|URTDkpE`~09G0a)m z5@~|QFL1i}VlvKrw==xQ0a_Yh>LBh>OdQe>5EMeH1h4vqE!f3Vld}$5M}1-ahwxQ% zp3afywwtFuY-IBi2Y&M&LILA#p$oQ>Dlj(Sh_oo|o5YHV`Ij2P;B>EKOwfICycT4( z@iH!#R>^V~nlknHqyuk*llL)*Mnf%j$^o4Q{`TS1rCtBI%(|gORxpl8QKf-z(iV)s zSJTMFz|*spaI{wioO?=DA+8Xf2)J`51F}#PKQ{MXYZG*Pt)YMbN>>Cxw1>!dr1fja znUYwFtKjqD8q?Y5a@bg@5f1OGlALaQQ-wYh5NsPE*PH3K_vF*)q&`5b_geg_|T%YZ!Lor(-Ye zM45%O;@7d=1{QMPGs@4jzuxJipd`$jYj!D=0F08|9AomjzT5TyM#=E4=jijCEAqi* zfQ}SApd%&DlWQ4Fn8~Qiu|kxJg)I>GDw6Fh)ThuJaY`~k;eMBrKO$bFfmapABzI!{ z)2)T{y6U!=&qf*Bub-!0#msU%fttIF zC9&w$Vyq|`Pc#uJZ#4Ou&3nkw&c$fF<8EAFIdDsx*LOY&XTC1v(CSV1rjicPGhmkl zUr`{B`J4eNCZqRRu;M3*hA-CUIxYkyPopYoVA*`xg>E@mie;0brF4;{a1hxjI8)u# zKVVOL;Y&9U%UIBCJ<)6>7#DXxv@=f^h(hxo+NFCNdXTX^!oIv_sHPuUose1P)#}VT zXd_p`R#;B&KBK_0f)aP9&EvP!`HERWp)odouR6a!DpWS0@8K}A7m_-Q9td`f-2 zn&70>cqtx+vaVB8#x7YAO^KeHSFcmsM^%-nh7ecWVF@=IgEEbqXOEb~bs~ZgkYLFF zw(R?7sek$Z{ONwd%s)Y-%qmMG<66}+z4I3yl>{Tb2~_?{l+dENRISOQ+{tu~%Ix6^ zG52x5+-4KhklttQ1GONtzWU7V=T~cZ4UYLaXXCYMF!LPrMYso&9_{&Db2vFE%d_T! znjx^DPnOQ#I=F>nvB?IZ<;k_S`eKu-?X#ltXQMx*UUtzk8Oe}fN3!AtL=1< zo#&ANa6IJp6dMcUqv(bKGjCK4MgEp8G9|J#UDDgT$amnAhs|p;wNS?B7M|aQVY55; zy@n#a;Kf?2+CzA4;DU)iE11kR@~#E?GMwiLvTPJe_8iyo>%{eivu1NSt-FR$_zW%b ztAD-3y?Pl@Jk_A_QNhf^Nz*Q*<%r5NXB`F{mr;ZGc$}GqlN**y68Mip;|+Z!I%ZFL zlDt6YL*$skStwn)*Gkf6)e9F`HvPCX1ifk8^3C2n!1)ka?aG71Ui2mRyH`ai0B707 z^qOev)j*}DKJhKS$Y6Mb$3sLmy;-8b*4oMZ6UzdN4hV{{+E|9x4eRS85nj1DtO)Re z{FMt&EU8^1x}cm86k861*92hb5m*(pK5Q475f(?k2w42HAOcpfZ7kbVo~RotK)~|< z95(&JzCJCct&{oq8gHr3^&|FD&OW&v9XD^$Pd1-0J&*m}%N=7BtTVLCANpjff^j&> z3WWfhFUe|D!*jhc6Cf?uVR%Iibze7L;sT151t7&rIF(UlHI{?Ny?^;kp&>|g`p3UA zuvmU46*##X|GFJ2Q2Ikf>J_OROztKi0q|n;sYjqjEG2PikP6l7>3rQvKt(DaP?0jV zQK$CnLaZDDQ-j8ku(_t}sWpZv*$H?}yWD?r(r8|>z5T)d%TwOIWoB5wsYW*uh^Fvb zhWxE8=p>1nWT}k%lCR;%kW=4OJl|#ZwBXz?+S$zgjY9Oe=4Nwc*4VqNjGi zzIh<`vLBE6!8r|_qtzJA**;f~-+hjF4RZxnaoMUqB_b(djs3B*@7RIN5R&IODWiBJ z%-@zpgBTto6MM`oj#SK%#)kx(9zOg#Ggq1v-`3P?qy#vkm~bZT6He*$>*g~iP7*); z6V6H2J74?l9cFWf=bs<+y<1P@+9gnyMN#niAUCE1F8Oc~GGHKd#4Pp#|J@#GF+y4a}U z?Y38Pq{`$)kwsqsIS zKY-`WAIl%BTVz1KPxLtN=kAA9G{%$%SVzot92QRKpMhLP*TsSZ4#=ESQ#n}d369S8 z?!Y?`#K8EvY#l;smE*04qnsB`-PA)NhK+XW)sj2e@G$Jt81&w7)l^q0Oj)YLfEQ@Nh38uAiv{m{{xPX3RQ|=a^0BAd<~*(niH9nRVAct_!S~w` z>bhWUh&lqyTkW(hO?lu8%&a#IGuK9bn!(o&0OqYD$xG3q6H(Qv&xx&_4Es^3c)!C( zdDcvw1m%2I*IL=Qs$%UH?bs9^fZBb{aoeuOOHd*+KOJ;;gc@9~ ziYY>-q&#YCC&6itNU#3I#qZelep1t$6FPLcQu!_5eIp>{40zvA7k;2)k%Q9>*#$f+ z&ru%dwSI>ab4SRdNG|bX3#e~U7DTZ5d@q`X>P3XbH26KAdXo$D#kyk3g&Lx2_gJ6x zaAzKHEq2o9%Ev(_t+>-Q#-N(&e1`Y?6Mm3{W#@TpL&{OQ z{k56d{PlMqZzzXgWn8*|IJE#rQNCn}WU5}W#UGbmeJuuAcKMiANlbj&4j9U!u6bkn zFR5i}t3)QWC)qBHs8d$Xe0o#Kzr8>64mdVaQeK~QxJ_u6dDYHM>>yl~sA3+0s>7ii z2G&j}iy*GzZBOgbQfz%tNMyUST|3BwquFFVrqhH2UwEZDW-x5iAiIE&Aj8CuQFUEX zEfqn3h8}R3kf_7g!z$}(_4V!QWqTuOrC+=yGEz-kcHN)_RB~sX5Zyk;995O}YAcHS z=!$!NOkf^Co_T3x#u+q4^4X&^$Lkj|A$Y*|_;(G<-`PX|`DA{5k3U|{xHK5((%QA2 zU7Ds^IW#BG&4K|x4_z|oMJ$+l%g{dO+yFanb+!Mbzzo&53Bn0N^wyad19F~kuYAv5 zjofaX@biCJd781-(TxL3A7Prf%BWKGBkq=I7WIKWP0A2EBl*)%9X4##)e6t_;lUb+aB=_sCx_lm%#Um z``7pLTjR)MinDjpceMjVVE_4gCZ)O=(fCp;YF&5H1UjLvjPzf2MhhWB2KraJwI$OA z#VMjleCm8P3Ie5Y$d$=$yfsFLTer!tmJ&96$_4nJ@~)G=j5IK)HPD#~q8hXU#>cYu zrDWPcGc&S;rQNi7rJaw-!h_B3hC!;_Jyb&OLMf~z#TgX#)ez>%Ij!fn&!%o2-#y*& zNTE46NP*7N86m5!-Fh}IYmTP5Ktmo~z}e)y%i#OIp(vzAoA2&^!!(>Z&tB1DJrnV#rQmSStRkz z<@l57{ksnb*9vBztWYo29x&=Y>p~}KM59+X<{qB8J(%$oorN+isOWi5AVOs_Qp-eg z1`zHoIXKcpa^=a$g9ub(_%8@ zpP@a0hK7Ff&mtrF+ePM&kM#(+{QadAJo0SNfI4Fg)EUQz#qCxfcfXSu%fgYB=nBN_Bmpmvpgi52EAz zdP;R1|9DC;;`}y(|9MJ1pr_=J^2bx+fd=(zo#et6Q5#*AudREXjf2*!_3exaToP;w z0|wGE7B$j2)s@OP(_s(&V(@H`FOif)qt8G(RXZMo{!lnnK|EeP+ zIV@8B5VK-V0^DKC&OO`?SJv(e7r%6R|8^8X(!&z5BH6i##wWAZ!Uhp)trFJ_c8WN9 zRh*kcM`zfGxWCMb0hSJW1{Ziv1&`0^sjxjl08$I#Rz`rhw#Zp7I(002=sw1>9CTcz z&pqUKsi0|4%LZkL>lQY<73|90>|6(R8^kY)bAFzyef^mGO26N=fPj?0=e~bp?7u^; ze9V2OcE6I|-wuz`U%QtF)HEldLqyeC{$#sLF`g92r98y|?v5b3{~)`+`9*f;twv+$ z5TQZzwo7$xJIdhuC9Q?S@~5G zOdIlY-t8c#3uzcLSy_U(fVeyt6DM$9m2ZvN1b-3n2c6-Je#lY@%Tl?U#yhF-+U}ls z()gK)&{rXG#as46&#yct&Wqg&$`-`o61|whh|tYh;f;fUyNkxHh_KJrdc+%)yK@!A&1>Y~>E;UMh0d#FX=PDbka7+94ngw_uk6fw~O#4X{}qQFV3Mk zX&LxAUzuG7X>6j63`s{86wE7$Mt}jrLs}i>m~cL2e6L-~vAvQ#Or$BC8`=}%Ap+Tt zn!3`R8;;<#7;AOWxtjX<&eeLEUSy+vgxn|~A7zZjjmxsw^T|j5xK0^6J(wPgh_}Ok z2mTf?JD!R39%zX~fscpzBp6|W%&}7`Go%z;l1I(KrVUNK^jA^f;(() z40zqlhSAV{rHOBzh+>eS|8|s%v9s9!jXq>>I5uUzzd*Nm2$!--?LB%@;tP`LC$Yg& zl?KTnQzTvaS-!VvxmJ@wl z?-=TmmKV4oOQF>M*lJA}a;7E%<(}YQl@fnr;{jO9utOQ^%hrvM<#_QSN2q#kbEr_vv8EMOBGl|SvJ}23>Kbk zpD#YZoyXmebLEJq}ds%MI@Xgk@; zJJTfVp2&1F(~PxMFaG)$>w8|Kd8vjv}h zOPGk^3@pY5R0g^Q9mV++s$FN^pTKv&zlMV%)#-R4;MA&@g6*P56*`DH{ zy#^tQ$+p*Wntq2RuAzpMo^rkBic1?1ee#=G5_r9&4=$00bu>&|_4z?)CLzalyEd5b zWtWfY(4*5fE)vd5?B06yo?l|k!3wyPy+R3oUrr}pMAx#bQGaR2y~wV6DQcA|#JToG zpR`TBrM1*9WyUJgOt`dg=k}#by>?y^PGNO|d066`w34PQSv0+k&&gvIgV`+gKlC}b zhODKyKG2>KiSmoQ-zZ%;EN%LNLZ*2)ZfUKOrxQc`=kq z(z8)QLb`ITdF6{HW}MiEJ)#6TjwkZ^l^`jdIlmF*>w4Q^vXRNTK+lM8O|?(-PdQTe zNx1HCgmP2wBOJitb{L>P3>^`fee-)mgYZTf?H#4tn<~f2#IoK9A zPw<@HUOrP2Bt^LKL4Z_vfsbKPhZyi3Jd(Hzao#(hy)wb3oK~3L`8H6mUSY#CG(XJnd$!Y&-&1vApy!zJ{^Bc=p;KitTI{arD z3)r3k%h*h}1?EkvRqe7D2QmfxFK|MUV1Pdh;dJ_?>BTiA$RU|bC>R<)C_h0CUEs~= zVlCe!ykW}Xk;y~DKxleC``?Bshx`~^kGQYn7gRjCe^}6d`0&z zUC27(`n|g7*2Lz<9XMhAJS+P(#mqC} zEY60Ny7AbOIoVLCTyZqL@ecxAnbjU*Hf!w;86PUrXGEQaA^>f=MyZbSOtzKil=$+7 zT=Q^KZEh`}Dl<}iCv`k=4{5r?+W@;z91hW}ENQ|!!g#FYn3VU1*KQIlGHY`AMaH^e zHNt8rqVe3GQ>R73UJ4J;k7uf%h@6hzfd!gGu*MQ;cIiqbi+WPWiDHW|_;xvf9W{Nr zWfJ*_XnOjsuwUcVn+pk!l@}#0Z|o%q1v%P?TMPYOYvmn5qe5YkFo^3NLeDcBYo({V_$@v0h1gBgnRtowz~i9i|Kil9}bOxDrxK%=iuFVSoVwR;EWJHeYV;{o|m+&fvHiC1% z;Ab7P9NzG9I_Y~;D3LCI-i-Hm4OwnqGiCHeACQdAVy^Us6bZWbEDW8pq?NStWbmQE zu7HR6PR(~=!n&0u|5FVowoKn_M?u(WY+D0v2BNNKCP2bEb|LYMwP zI{_BDh@JIQ-=Vv=hSiNPuW>_mDc9DQrTJ;dO$pAvfA@J)qs(gNjaC>J%b;>OGnT!s z*w?eV59R;n(ubfwo*OF|npL6T0I)(+&JjcIp6Qx()-MdZ%-UxgI*d2ppgCYL$abEC z)Z}9Ttk4`Yp;;^fK~`u*t+(hQA@Z237EdxA@Z?~A7j)YH?~A412_$0+!(YPXf7vVj3MA-!Ug{Qq1Q=vRvV5th`F*O`0!5o2*6~0~*s2;jC+={#e>m;Oz3&;+Xb6;Sf!48SO8M$RADl*w&Gd~Ay*Ph7hfO;a7m$gl z#JA}%^thDIKzy$HK0daArbx4Al`V9SIUGBtsoVI~kZv}V_~G7Q6`EwdD9Cr-(`*A$j7M=@Iii!hl2(QEJhO7}dWbnPb&%nL=CbamR~8wpu#IMgZqx)t!r zbXvRzw|nzPuw%^4jq@|}m=@nLMg{rge*EBej~2sB4rwj`ZBny+#+f|bN%<1kEZK78 z_-BE!MPSimwq@Nii`HD3d{A&p2W*xt{hr=tbk_~+dIC1fQDraR3gNyijjQKASpER0 zDse;AJ4D&Q%u+S`r;CPes|=#eEM~?OC#GZ)7QY$*vrTriZnp6+7h;^tIN z)=iqF-8lBfwrHYkhJb#&_6zYx9l&)8^xIn96hY$AS{YiIH{#9}Tpi1S2!)&|R}ehVq{_x~GWl>pGC{YIGAnOT`Oi zp_*11eBHTEU7kk}IB9X1V))J?cOwV>F(s`ms^>=dtkY+ZBLi2D2D;>H*Xs=|oa;qP z7Y+Ol`ts5FVcerqKcRQ?!r0nfq+Y{h1A)oo6 zXUmu{uA|0)w%udUM6>NPwU~6410P{r1^)*O$kqr9k|36sBxSvzxDeAIq9^v#V1l620gI4 ztQOvl7f|TZ(ny7!R?LNff}hX^*)#Tz%qnFUg{fullMUGcISH;D$Vtj`%B zB$oN`H?ZcP)$MnhITL$VBb#5%9DtVr%Bxtf0OeJ)DOrF#QT9qyYarBx!HbCr3s#tj znw2P2ugiqnvdGT->#Ii(_$;T1gl|H}yD=zVmg%8wpDSW}v~Q(u`)*}kKNdLolZGHX zcsNfeh_~?Ld4e$54(i{vdW2ro0v7P^svNu%94eOAe8~IPWMJ7;nGG0uq{@ni4W@D5 zv7s4iQ*vnpb|0^2bJmMftHjAK1)q@`Va?o@G2>sK^dubIQweNW^j}onx;ascPTT1K zmPzJwcRXexc||pNd*9#qAFyb2UC}d7Wy^_3I-Pmn1KxWVFyG1f(+3O&rr!MwCiV7- zPm}N61R%Y0qS*jnnzV5qsPPX*UeZ>}K!L+1s0nR#<6uH~EN~;Ov4+)cFRzJ2JOR14 zLqP5=fjaB>c*E$;`3H-U0)Ij%;WnkgiUhtsyDrh4w$IFSXC44^!qAjiK_vB_6JSn& zgP0TMZD}{WqUX1RD>?i8fOO5o53ozFKbaF8;eRqGesx=`9TEpMl?chOkEOvRiT^tv!$wqZGo1vTAasW0XJ%0xy%Q}c}*Rw zb|Di)rJ+!dmu)X+h)vn1?h!!1AFV{eC`bnh>~9%KT4mivEqY37OWy+bdn7?RzRJ@5)eFzDBSc(tJkg-0eO8uzod~A% zmGn#`Fkx zoJgmQQf+Fl2>SzrqB`d%wICM>0A(%R_cGAClvA=mdUE_rdRlohFP*qdIzE7@mEFl- zQ0e;7Osi(VZj~9Ce1ba;XCw09^BqGaybmup!#eCdUWJky!ff^P@#1*O(%J<=g#m_z zFN&|SpY;)oQak`!zMznzt|_fy|4Vve0i`FpF_4xoke)E?5*QRg9$XlHj~Ks3-B-LL zAf%xGHKcy0XEL>O{l&;G04b#k0?W$C%!cPMx=L;fN-wIw8(+t!AyJhImQG`oggdRG z$c_M9oP*T@CE%v&wes^9f5`Zru_}qC1wwq}wV(9FEy2ow4CoNow4GYoRp-R8VT2N{}bqKi%+arcy8scp46l-oDOsQIb4#^2Q9 zw@7HL_6g3E_1qi0HT;-3G1TUY^;9eYJ%WgjAP0ELQ5=QH-k%Qerq2Nf_|>%Ny@t+M zp7qYjx+|%H+c~0O-o7{m_?r85 z2T@cPo%9=MJ<_B3r9%p9Vv#mu!Y0509+uyZz(%*ma(uG(o~7CBDreG`L+eD5EGu^c zrt!inCZ;fIf?IDxd%ckkf(sMzD=XGH{w(@^U3Z}1#Ad0o#QQ0f0t;~#)|MKv9;T%p zI!Sx^owWS_==k=&N;`oVVH6O$dtrMtQG)cSluEDJ`%@`Z_TA-ArBv$%aX=|mGH*U3 zWT)pyY~SuJNGWyXQ7QErypa#^f5-W$l$!4huU<&&52m6ettCU7`!b0(kJwtG1W+RQ z%7aiTrebC-kzbaO3Nq+SnuC-{1-QOwR#NwmhXPWoJ!c?wn3aDG%-`w3%xvrp|73{` z+5t91z6Vw2RsEfBgXnC;UU)wB@rPr_P$SKkfXts8^pBjeTaXNuj7cSn7YHU?-2l%( z!i#MHOpVh{BqYKSA*YpW&$edvc5i-;g^u-MpsI-pR84tM)jX~{t_=$mv;xLLapTED zpa-*y*<#^(Zmv{Z68{u{#kEBFAm6QUQg((I=YGq3mI4|JS9lcu?7?37R?<&RpLtGW zuv$E~JjH&d3BFmYc_fOZ}Z zFdB>i+Ig&#aB*~iDP|rNyQgoyY4Ew3Adp2RG!0Nm9o=4TE!t+fL$6%{+WEgQ4jr%g zxAX=oRrPa!Ac%Nk0cDd6D4QPvmDCzM5?l1BM$YrEf&-Y;*IHU_z3+k|I+tg(AbCJZ zj_$n-1Rx(601o+$P9ZmJ&1kEvWL)`WnfxV+DFj&$Ft&Ko0(qcLBbMC}}{e^iw63o{iQx zP%e1Pt(47tzQ>tlCbiPm93ULt^`>5?zjUK1Xo=$4h*YViDoY)ElwVoKL_7hN&A+!` z|J;}T22l)jH)?1C@R`j1zPNm66N3LOa; zPv|iqw@8qsVHU&%-QFdxGg|cf4qwz={D9-|spkvyZAeLX<-Tin{p=ueV3^QAXj*`L zs#tKDlvc*jQtAa0MFHHU7xIpq9_EQQtjr@kyBbG)?(gt=cltfct^=(bP0%~8%jCIw z-^hKeC{Nzbk|=)aX!0?RHbaU%e(IlhevIXe|!SymB)$Um0OOBK%W!`XJmK3-Yf2`&I`n`1Cnq zy;KUd9UFk&?FOS8F_qBbE{a|{h4K@e|mG1r;2lz zFx9o~(i8|2tlPL48!@5<39DELV=f1!@5y@aoy%p26M;lpso`|P>7Ui#Q=W{t2wGH! z4F#X2*|(i7JCBd+e`y2v2sro;6*o$R%w&KM*&;3|_i@tg@7j~kYrGT#CSCEzNjDZW z>8^t&U4r+ZEW2-nK;M1lx4y)s5ElWyPM=wT++E3}ktDeT%(-jkOJ|MzrzDE@v~shuu3lEP^2f%WlgL$6ESBmJeZx58(jU_bB5x0YEU1kNKL;Wpl}@v*+(o=^w>u#b;EuJc|w?K!6nP` zx-$cw5NZ{(#r!%t7Qkq7#XNNDA=oAZNVGQX`~-2wJ4qG30bz9guVe1-^pQ69cE9#~ z|6S~@B$DU<3VXX27F$BkMX^MaB*XAqH=$kXB-Nvw)gIa8%#vP{_XS~Z`qz@#Le_Q9 zISjg(4S42WcOUO(a}wg+RAmSC=yHt`Lw?}WNuh$CdC$YURkVcAkkTQJ*_;8Q}L`6Ok@m~4PtfdNVLZBVf`+tm0B z0&!2xBmN8Q%@gT=$KFT?2s5MN+#>pHV!BvSPJ^?3YtM>25}BAdZ>0t;7*-u=O9B;%F2Aglm$5qclKE7Qm8fZTm{V8;D)56rlswsA9OfIKU%dN^YsJ4l|@b)i|` z(BiwxbGtR1d6WueH*k)~=i?>uRHgMigo;!QJOT=Lu@DQ);^q&tk25Yc`_A;Y{S7T? zz+9x>DHD59E?2#bPbbT|UDU+gX{fnDe5J5dQd6Y<)uYz0DB*VI|19?AZ1Ja2&0iwv z*L6UN;1Kv<*8w#k?2X&95M&9g#2-v(kOc7_i8gi)==-euQIyg}pG3Ln^YdSgWZs_5 z)*n5|GAIheV+Hrbh4=<9{|xY z1h3WVs1X1X$QOfQ2W6xdzhYtZ>mFTBY2uJTFF)Nvhg~SeX1}iShObUXbDk{xal}>} z^vUoxjJ!8AMvzmgS$Li&RN#xoj6p~AEX&z4!jfS>D*Q;X=>fEan;(DJV4$B~)rCGN z16jDjFEc4n^T-SSvmm}VZv?m%|IxlcbJ$LKvFn4fu6e^3g3E>F9#+c2$l)uHg>d-| z?4~{TP+(Z3`-kte>4{vMYc4;rH^)^F_NIDTTjLYi4`6St+n&sGuE3>*{?TqzC2t>Kr~e()4pffzsF}0nS8`b`Z_ML0jvb` zCsxvU&G#U|th0xDEbGG_*BSdCtmIBuTD*GU4r~8u_?9A`!kOpx>b0tjy=3`q_AYmK z;AQ3PA$g$?sKUiGVlvx&P5~+$NQ8W)b*tJ&sTY+XOXp48WkjD2&UeQb8#GBit{?m7 zWE&`#XSE=`K|=)Jdl^Vzh=>M;2qw@F;q`NfSd_nnG`;%I5E1w|M5H%J{u&~hXM9dU zLqy6dyItJq8oQ~x1IONR{Qqf)cn%B^nZOXC1`HAC;oEwpEQX6i=Qv53y#>J4(&dW+ zpD^(aX%#vp;A-g$2z!Gw>wooMV{gBM<2pamw|>RaA5cj;>TGVV^pKo3EUB9Xy#o>1 z3Q^buC~cZz+3!>Tk)$BjQJ#emAJ`_FhBdasY!s#Be;>ZNhBe^KKwY1SLqjQOI~s zHgX3_&jJE|kEPFrk0r5==BpricY>W%{tDQ`XB2uvO(D^4)AvYo0;)|cmA*Ux$L=h2srfNFXz~{h_U2L!|FZokR{r6 zrxYVT#PN`>y|Y}AG_ZPFrotD*zDF1+)YAliz`dUG4ss@cw@T4;$f^g412`1d;$+`7wLoS2G(D zz^Nv${znBvkMH$M@O6*thPVC)jKI1(fLGI8k=lhV|x^Bd^39RtA2#Y30EQW8!r0P*6@Z^Ri3F6MQI;)7yv- z-335PLWpgBIWG%1z2#nD?<>PqZ)#hqm~G@&DkwKfDL!_vm6uu1vz;G zBt5ONyQctha)-Zp^$R(P0&Ua*S*PKW9gfQ5*$0%bl^b;%c>r)-Xc!V!&x7kM7m(s*!ADx4&2w67*-Ah1xmp6OWk9{ydQ}t{ zE4U~W**Ey{bp;q~C-rA-fa}5ys26*5U1&UdzOBp^Q3&eAh=5+KEutCJi#0%^CO=&S z?HVv2dK!I;iP52Ybkji7;fj8eB}VaAw}&_54SS9cJ-$5r3B-0l@q`BzPXva*9V-3k z9~&9K;tGrSn4X#MtqifGQlxihl}W>Aiq-TDACT*U_oM5A6c9VTBDCE^`>X_4v{ub>#3Rpn>|BQe!4EiP@?~A#lUUja;HG8 z7_d^u-UGE_%;gY3E9RX#mS{^eTc+xUk+NWqG#~ipl!zd%zQjsNZL0jSdKy@}nE%&Z z{qLX*f913NL>UNJQg?cK_?5oY)mky5j*20rAwkm#6RBDVW7u_#UKD0>XNI#R2)lvg zkIQJ$d~)C>A43V@sSHGaJ_)yr9lT&}^)45)jJt<<+<3GHjsoFxOb*Ad)b{_f_mk`7N#qz1S(7fg%2ES&mZELgh7H zqmd6R8_G3SvIc5FIYH_#Wpc;2CM!KBbBhJa)jb%efn{Hxby zshbP~b(AL+DeKw&*ERizlSnRTCpdOu4IY>-w&m8=GntXMHj zBKiRbsJrW$Tb%-x&Z~bdom{`cK?CAb$j(FoIHvry4Fg1Q{@`8Syaj`J+G~!UpIM>; zVPu3W92^^q#x_woA)5Id6ARC5cO-FOti6+PLKZU(S`1UH{+`tM&GvIun4HwG$Sn0E zt}pIm8Q$$a568$Iq=oU{gkOf_zlgvRnRk~BZ1$RTuz9x$82`GxT70!ksfM!>t?N_V ze1mb-sI9*lA{uSa%`WoZW}#4E6lri%9VLu}h@|8NM6e;T$3d&26qu=nq^TL9RXDom z7Ksr=$2bsTjPJo@ZaeywwQM`r{9=3gdnm-f2Sy1f7w^)ZlULSdoy%z}m6Rw`2!R~o z8R%(C`Wz%nDW(#%>3emD^*Zavc`Yti-&2QRs&*a#A!u#t8R`N{qEi!={1o41kEUV{ z9%D&*9=h4pvqA^vP<3~mSR(}toAl=D{plO9wNH8CBNPw?*= z2)1e$4~$;7uzK$J z>MRA*wg#YCiZ2LBK4q3bc(NQ@GGk{|mz|bH?8y=)b;@DEyw0+3Ef{&I5DM792k7}7 z72_D_&MSZ?#!(!Q;KNT&YCm1Im5G&8s)=bC)L4fCJq4~DZM}TpDRBKO`bx0dQw%wb90~h$CJ{e`;GFT)JdQrZOR+G%eU2$Y9!xXW%&hd6^Ez{)XiS z>bxKvcnySa+CVhqF-_{UfWiPvFSD)l5uYz3sVsM=cirMo-ZkJ0!||fDF#8;{nBYmz zHWU=r#FwbjMy4+uGAvVBl-NwJuqnr=NdGU+&N3{{Zdud8-QC^Y9RdUo?(V@|fG5z~Ni#u+1k6<5mUk~D=yWeX*2N1!!N*EZ@Y^U|$T#x&OXuhj6g zJi?nHFbSC4GiGkYZ-xw#?n0&NW)W2C-{;zA4S zDK>B%NLu_ndj$J|jZ(?pVW%)yJR&wyi9z#XdT6*Yv=~3=Si<9hf8ii^1 zBedTG;X)*C!F_hE_AeD3I_&ygRknyEDvG?L^!L@22`4mRTlGyw-OqPqiK)Ty<>a)Yzt#8!xrFC0& z>OR7Kn($!kt`ll>i~1kp&H5b3T9WJp)-1?W(UF>R8^Ff3_7ZZH3(_U|aG13;6Ee`z(KB z`s=r%|2M7tuM32XcqxF^0^r1x7W7+e;hEq557XpgfN3&7>Rdp`CLi7GAF)zTUx{Z~ zq`(iY`&(^sh4}jpK`vOGqnPq2M=rQZel{^V{ASlLqkK^G+=LB*7A{Oq2zz*aCZsFxXmZRy>$#ta68) z)x00k;(;Dt%sEKck9dd=nR(48fw&^d>9>HdsiC>)4Pv&h+B2-2)2BmTeTY11*#Zv= zTqR?&&2OR!9LDxGI`7KAQ=S%UWUkLvhohm1;FSSj`pM4OEa>M zbrIOB+=j1!`bic>zeg%9^-gQltlufj&BpFce1kr=k6`2+5hX`+>oqvb$rb5GRw=Fw z%vH=9!5XC|^n+Xd3)MMMP9<{c`59>s_DHh^3Ar}DY=SbWIoCHF#$9GCd6Z(x6@lLe z|7j?;p#Wfo&izXc^zUu*zris0y+U=Z^{tHmtxF!;^P8s@_@UHxQrV!A1%T-T`0n|d zFkzICUP)?yT)T4(cd3R#jVMpC4%;bBZkqqeckK~OPjMPVI`!0r0U`eN>&c0lIwH21j zYIFB3ntM+@42qZ7dzAkWpf_g-g7nQvr~U?*`Q+BDm)I%JfTcZjJ=;m+AesO2l^yHG zoX3q#yNTzJ)?pW|W~20en~{bUqlvj;YQFsaV!QyE^*kQ=ncLWv-kyNY_ePrINB74% zSd@<*#QFTG%KWza8Bah*06aC`YCC}qK|}!G=ebqHNV{MXhQ~h|QDU3ye0V^aoeTK& z|L=|RzjJZ(k6-@34u`*RXaF?k|IE}E{)?&KN|pAd*n3an@(;!)9}Vne0N;6IEhWR1 z<+R&Aua>wali4(tDB>Q{9BVd`(H(Hy=A4%r+ON~HJT z^`{_RYwXpjcA`w$D+gXjEY3QTWRf!5RRf3-m8^a@1LcOCw{NWcXF`$nz(!4n&R>Qh z!-^R6roI$|)!xsVFWP2`J3lu$qTd>~qu#pf|Y$>C=D{lyiqcOq!h5@@M3f373D zvLW#MAQ=BtQOvcaRDNK-Nn3x~=Q(Zf=xPV<#=^yp7Pc(_B~j7~15NiAl9MT{)4B`Z zyWNY|+;IHrE=zR3LXx*rJVvVcgHaDn&^4H1`I?D9?d&}oIe<_g54PA0I&;ob<`H`961SNr*n(Xryl4p6je>!2w)R|g}CJdmgHLDu6)}H<2X<@ zgY5~n>L*^`)~Zp4piht0{7v`qaZ$(r$jB0lm?^~oTPx{59%?-Qzt8O-ouEHDl)t9r z7gYFM5qazJ$3++l(Io{DLxphM=+c~MHIECek%`_D{x@y#FWiKQ^S2H7oA;|{@J~h6 z7rof1xYeU_pg1|)NKw6M(0upSy-*{dJ=RnevFt)QGq~K?^M z?iTyMKs_50H?8LwQ3srZCI?Lam%qgY?s=+J2CNSEd<%NEgCH!3cJrqV53J zjVGw`86_|9tZz)=Y;l1e{H_w94BAs+cDdmCQZ;9N7rCml0X|4txxxFIZ5d2pH);ju zC71Y$+XhisH2AGD(Am>zM1F}+!OTS9;#Em_k%q}ltH&+Ja@Z{bxvxyEN+AjNZk;5E zoPcz8VHUz>8&THGZdm+)Wu$K|fYJ4NA3xPXK-C>+R?s0~MT^shDyxM$K)6=s_*D!{ zJ*bvQodTJpQ#IPDz z?(ouBR^68HI)Y^?A27f38G{D&_)Wli;(`88QT6X`{eP~fzq9ps3N8PA>+_wq zH?i=r{1d4V8Eh2OwPPv2)>*oy+Blg zxi_vRF@-7L_G!U*V?4_$sfS6TMrmaKNv;Gf{yGnMspri>wEoL{JspR&F0YU0xQT=)=H^#Zt& z);omY>(WeScL4p4Y9cyYKwUWfnCYZ&D^{#yCS6DnLYmY6L)$;hJLI!1e~J?%`~{e- zUsC?(4Y)=e4<0=LWAut;3k7AdXHkdyFUF`Q>Ee?m!!kT8rgkK2%WbCi(;r5FPdi4& zf8YB5UL5@m5WKRrgteKYnZDycoAv*!kCJ|OSfk=Otf-=we~1Gb^(Z2tq0z(*glvFO zncTZ?Ypu=BS0oAo|5_i_;LKB=5rL_1q^M84e{<&D)$Qu?gs6@bqed2|7B>?o>ANJo zq$T3hL8~MYnu?3$m8jD{{l7 z5-YrGpsLlMD^;DW2nCSldpDZY=+(v9#rjZ7n9y`;np0HX(m{P?} zM%zGWwQuYXjBgjbJFtWEkFH6)>3&5Vvz{VDc@eBjog{WNvu&2@71Pr~BaR-A)v|?&OujNc> z%@~=YfY*)S3m)O2j6|buMB{wV3*lx}7yl|A zjQu%$BU&M~z{oLwUHs8P=Qjsw&^q-Q2*bFBqi9Nf%6)_NWQhGuGOe(q4w3W_JR&fd&(09@k^{#MeR8)>DPt(bPER# zsz1(H&$}x_MZ|eedwwWC{yBO;`SHO_08v8tU#8FhJ+c2AQQ}{p>p!A|v@9T@_oOLE z2=(=KyVlzQ;$4Q(p^ZgEMnTDiB2=x_<}i|2kF~N;_(-5YLHKP%VFyhvdPVwMsO-$Y zA+!Isdk6O!CWxM0&Q>o$-hVHdItf_cYl}n)z3N20gl_2 z$OR!{dl1S0Qre)jbND^|tG__1>=57yz2#{sS5S3Yf99VgP8Bd+w@1 zqjElM@(~*SIK_!4ZT3yHPW?A1fW(akiyjW@k$FAqH##`__fRfAqCw-O@jGMEK;_U@ zxG&y7oRZ=LLPrH)BE$~{Knh4$!m)As2PxnfKnmzf)^BkAamxX_Am2OChVh!6oX|10 zyFMp4t1*+kE+21Blm)S(%HbU@hK1tSR1!arLlk8wfmbdBid{S#_(#l@7rbr1ebU09 z_@zzu9@@AGAm&QASFL8?vJ5Cs!Jw-xYnJrKsu%n{5i+Oq0Y27!z+wxrG@NLgQH#^8 z?&u<#@KwHJ{mEa_b>k`Ic!-v9pNspYOQ!Tw6t+su*CJ69x+RTTfUY6oWPEuMxG~qH9bJr06+)-New4c_x*kg13&%CVgBz+>2C}d0hW@T(|-r7JSQvQ z19vt+&rYHqgXG#l#zZGaqe@d&+bS0Ifq@5NCI63rl?+o_+SKEnOx4La!|4cLo_T8|mK(rsDNn$Dnz0N<`eV3c5rl!&FYts-XvjVzuxm;> za6Wxct%p}QS4n4zFd{s>+!q%$u!Nqaifd7D7z_M05*aqiyd!50EZz$Y43-hqatvYT zC(h6OdW1G<&Aj2~3vs?6BG|F!Y(3CC*su@A)+?vKauIy!5dDgIy3+gZ+to-rQzd}s zQYpX9xh>1|n2EHyRzDe55}HCO$C2 z9m;5)kA3+W#8Zp{J@^>M*NqJY@Fg4112admG=xSPI2<*y_2m+AgWSU!w_nm1zeYOb zirdsjz2}pH4+II$X1i4PW0BiZ?8GrKh-eX0g)qw})Jt5&ATbmZbSs^K)@pDGzH6gq zBS|AcFn^&*CN@D*%11qjpSIA8;6`>M|kvIQz81%K`Ua_uk{+4#8Ek-%k z`*U23S8u0S_2EMQC)QAm%RmV7`QpV1E4EVR_u7S-9?X`FFlYcCV@JIfK88JR^!3jH zN?kCgm;gv&!2e@s?{9=URWnCZGiyMP+t}LC*x|oU(tkChHv41n%Rb|CD1}0tLyS60 zEgeiK&dJ4R)oA_w zK)gWia;N#xUnKpk z^?<)dV-~GadHg`Gq5=L88Jw%P;@j{c+-iWj?`mg*|t)0H)QQ8yNm0OwC~V z^+AV&JJALSRoJ7LHBdFcm4i+bt+X{QxULSl%3e0w(8_>HJzi-*xw0|&u%xN6a*Ni;n_A>+*EhN`^8JBE^faoN> z9dh{2VX-j)FMJwqTO*;==C_-9yV`CNN6`}yP0>G-mS#8@lx!0YTaxH>c&WFAbW`2f z#DzDPyj}JoYu0eD)39E=xbWNXWgWWNrK3-FkYrl(yc^}Zq#*qC>BUYLtxwOAC-Sz@ z^8Ce|rk;s?(R7TszK5xGwBF>8zpvZ|?%0Cdpm-QSm%*)m5?^rbcmtEH{tS91jOiXW z2`Yg|-v@537$2%D9FI?^%si$W6S?#Dr8$zvQPehxwl&W%HSxKu*s<;w{%X1S7GOG_0q2QvWL`mcpr zk@Ap*B7!-X1!T+{>Jtoj`9MN)xwY&PYW4UD!`u4=H(Rs!X)~_Cwc-4#&R%xE=y=$W zui<#jdTqvPIsL{$abfuj0-yislAq;fl85DjgX`*{X7^L#HbW#5EQ|+-4b;+C^+>A( zZPn#Py+@nPYK0>qeUpu`m&h?Y>^}dueL)sw#nEqfnpVCniFD{HNk z!4b%78CW^v^x0+zt=1w5(mp`lTsD1Z#lkuYLBhHe!1?2%a}AV&BMsCDCMQkreHpU z_+Zk!7s2!-@&sRZ-l)O{qG0w5!(3FLF|8(53QL}t7O5Ww1^U*-=d&n}{tk2PodP~n+=AY3R)%~ zO;lFjhS6FcbS98s{<~>Srq^2l`e>1Z-{2gU7XQ0qxuG+rx?IHeJRR1~q|A5c zA~pL_=W)HZL05hy`+$RyGA8qxp=n8N_iEp`CeL|&iVn2HN+o;gOSIc9={E`5^smwh^g}TmQI7_Rop3<_oOd7MHQ>(`U#}cAM6`pIF&$Dz^zaBq` zk*rw2B23+jgTJihXG+%79glojBNn1qt#R^?9nVQrsOQ_sk0k}`o0E(+P(}*#a_uh> z>6%^mm8)wk={D2I1=d3<;2)t`B0=5*9aNMeI)QyR!p5Ayxx&gAA{r(y%^70(#gL_h z0?#vS+f?j>xPlD-&4uiaRqv*Ycj4}KE;wju`3WRIz%2 zhG1^1BZt4}<}%d519R%kxKO@Zy>jW~6%{tF9Ju&-O;F-^L^iQzCRP(2xCFh|f5CB$ zd^j9Xwc6m~&-T8nGF|54pM6{qu$<-M&k>LoG@QJ`@=OgRLP-c$&pyeA?nF~Ey+P(YQd=J zhE$1$WGZ=J7B%o@^?4{bGZ7QZz7@-Xu+DlI&V~s0y*^Md2?8WUzFlH^1kVNVgb3An z_P1}8;pWi$a`CI6V#k=c(cJKv^H-Eo8Nny{GQHXJBh5O;s6Q#4s3XNQ0yXnxhAI?H zwwy~??26{qn>CMdf6_S7pC@r6AV_Na1QpQt=P4+KZ3T;!h*J}5kFiIuot)hU5=NwQtFDZzNF+!Fk*Ltm`@+t>gp)GGP^d9TcBsG$KU zDE|5Sf0_glwz0Ccarl?8G~xN(2Xz3&`eFPOzKvD_Rixi176}v#6?7!@3)g3+jIniK zi0|%0V7XAR$#uyj-(ZvB(dLB*a2XHM9VU;I?`}`WCmXw#8hFOsyQT3CS5wH>dgpu1*{ zN9-1ZEBtp2XvQV0Mp?DTj_SfzR@B;!%P$?B_2pBSDNbQ?o`b6M3sE{sS*6kxG*V-V z#t9>@5y2GtxAtJT9mEk-o#7Nz1G?5*xjH6~Y8fxk=kXpgR3UV$CsgafaU zE~A&znM_b`5s;pg^_aF_r3lKmt@&vV)OdBWncJkSx#gzi$9wdi`D)>Prm2`%DkJNxo&`J8@+>!>bRc$dX`s?j#p7(!9$=AIB@5CgxwD%qe12R z66AtgEHfvlXU3G%@A4FF*%jL^`7sxk_R6t6wfk1OJ;vb%jj_s^?g=N3cNM}gRF)El zRy?#m*lZiq$lLQf*;|@Pm6ef9?jW^6=ScKB@iS#qm&OK0gtWlvjm1_^i$Qr(@$z)R zM`Ec7NcK-unsL8=OU@a9%`Ye7mG+ZY!bziB%Hn?o(-@2#T66|BCce6ycdm> zha*9Cinl4zQjMc7OID64ji^JDkxoz5E2^2}T0?(RuY4}rT17%#qCSHY_1oI3<6P79 z9#=WykIV3b7f7m;9KFnv61jVWUc|y{WbUEY!|2@^a8hxiGrnS`_5&UbTOng_Lk)9C z@jAJ|q_mn8o*9i0=_Kx{G*a!sZYggqEo>#y*3nSa6;UUNy4}uRE?Z_}Z$l6B%y`FM znG#edd9j*#5i76a*WnE0>v8iIGEet|w6!K*5J=VD0@mjPEioDZC5`Yg4x2JWQY|G#Bn)K?tHG)t8Tu_Z!b;dzJ|VwX(Lg z&+&EY@qVlVP)_@WEr&DO z)J*-B+JO^9@F8Te9bWgs;a~yfR$HC;%|X~(H5fHcUsa2{h*+E805=sX>auv^4Af@O z@EK=e#NOhpvRu;urpzuS#|kbxo|?pr(cIkd#{b=VO*MVLovfZ>BeagBzKj)wqLFlZ zg$urO4H!pWbMl^;jkv0tQR%Y6g(uA>V{7g5{#lkq4=JUz0%}oMXkIYj(L3HSX9OR1 zbn%Cc$xY=^{< zrvq)|cAASp^)l>Yzfx4hq(z2G33(YcaucE)Jw6xNv+}c)y=}}(AQfqW^3?UaC5@C)td3&v>2{cR%;+tUr_6Nq5)rm|7SAo8TDToQ zt4x$d<;6cWv(MFa>QUBqdfhxLJ|b0*ETbt{SM7Sv?4iPef2&lmcHrD04s^ z$xZwono1nJXaZ8ID(TCx1CK(f<`XnSk{l#>tIQ5_nPB9(RfpB5Rz zQv=UDQLRhY(BU0sWL@3+fImvaCA`=Ztf+F-u7hsMYS)8o4RJSV2l|frtpG$a1Oz%; zmH3uA^<=;oF5BZXu9ueIMss4_HW)3?dc)5<%Yq4;X`Ar4*@Q5=HLQcBn>4v0^HJ*Y z?}$-@HiElN$2dbbDEXgAb>p_0Zg?)aL0@Zt11HD~T;{sqw|lZP)(0*cT}c{G8vIWX z@xhL`{UP$4gESvI4sTvK)6$}*Zm!@K=iI>a-rt_@{CSLuG8gL->^d_!a*pBBm8}Mc zv?yQoQQw2#MUeyCBTn@jk-aY2>>jT;6StryE1y3u1+|@>R$i&zv{&ZA7SQ(W-bq=k z-f4l@>sqk`eM}JVd4W{eDWLkc$o)I=KTxgA*VB(zpE zGVugKuB=&rB_Ae-L__+q0Wg__4s4xbJgi!$;!0MF2H2A&OP= z-4SR(m{LZSfynI`3*{l4B1iPpzx2%-aj{PdMqUJwhkJ(WU!&VF|w z6U1me-VK;PecN`|(10}$B0hy&Wg?u!*s`9OM<0e~4XXK8WB`Dc&PgJNvivah26U zs%HqeozL@}DVwM)G8~iD5iBT!>VqrK!ehyyO2&ZfI&mAC3F?ESp}3G;S@nR{t)Af| zVmv@NBhw&=5=$nW|E9l9M!rT6*JE~I9 z=s_&IM>{admRRP4eWyLGf(`b{!U|wJinLh2VP(!OZ3`_EoF$5IoN$~w3Tq>zs^ZWD zL+U;WZ7w%+@H|{hbSN9?$FSPfX0)|StN4VxprXdkGF!s-#b%I`H5J%S5`LiGcZ81bxQFxKnZi@d^`BnP+NO$o3Y3S`Q zbGwe{x^HZgHq+|PbDeQ}pR>>SY})m37z_-(CA#dH8xfYeUJpJO^UM{6t0E7U4O*mI z$?M3cL04vgn?*$nGNQi0?Mkn?z=XXwzVA>41=kvl0x61x7KMMWVd@lfZQfgSdavva zeExA2YUNSf<&vdFcQy$0%oO_WUq|%hE*bm?+jf2MEJcR9yyN35zeSUt&_(|9L8e#L zq~s2bzM-@4+Pf-h2+7FB%F3QeNFVcQvfIxMpp!?(*zy+&O4F@D?K+wYF`Rp}H#089 z|M^&UWjFqa0`)%oz0cq14RaCN)X&&MU!o~XhB^|x=AhUZTD zETLr8cT$WcwOWaU@XJwFEHcT1)i47Sm@HOx0q0WgY7%9Y+*`kXIsF?d+hQFifE!qzDIE5!Q*Xj2XGy&cIZr z6}-R`hfqDiyt*(xQ(YU8#xjALXoyaBn%o{?KFLI5>0sTPZlW?+iUZ9xXaH$PZ zk>{^-rJY;mwwy!`-&y1I~^vhlv|Fdwt-$R=-+up758>xDqUN- z_}~R5MTrh<7v+8hiF~jrWCY=a-9Ryfal@R%J{!^1cioJi8SV${i!{30^|tqu@{(fe zbP}e}qaZzv(wIx>Q^#@8)K_IkUF%K9FmO~=Pte%)w}c|{^yX!22|n}`?@k2lQ%9YoiRF76tw7W$p??2;g?Tgqw{-`2IF5^nm9(QP>U2jURM(tAeCUDggc}owi z=WHsKT^In0y2>11qnfIppV(l(AZ>S}k#QgAv6Y%OP1jGepiWgKg3e^nvJhtv`8uZ5{x|AIHLRjG>ds&h;`Y zRt=ATplx{rw z^tzX&_sil@5wH@veiz7T*JxBvcW-cI(#)FcQL2i*bX$XXV2@+yDc&-jW`s*tp-RLsSZ*Vx*6 zxWO~#F7~dP2^*CC@B0tWz|}E{TX1d{_<@Q`&m4z!(OW|V6IqrwCgtb4kbw7U;=ezf zm;6|Lh2#6+IRf`|4w-rIPW4{d--Nm$xY2#PDMOwa(pVIPiM82+p0e1qqqzcs7^1Vr zYBcuUrIYd=h!N>kZ+SBnivemawqexSCzpM3{~z&P(Rf6h_pFnO;ZM>Ov!VdH(fjx=mAaZCT~T zzoBA5aI@`&quU33BLgN&>EfJ$iLf)Tp~LFTXJcJ{vyDD;M;k-&;`V$J_2S!T z(8k&L;HnD7>_l5EXSSq)%J;G$tGlmi9p&0oROqE;)T7zvsT2b?wf6P9v#?Xy*|(nM z>y~8Mm;p z(OR2poqE5r4It5tC`$vaDS6Lmt;Wt?d+=%xGKmGxAlUKB!0W_^9+4sZIR^xQ7G>J#IDV_N;x!{4&cZf`<}`cvXYo0TuG{A~7+p z>}f>+IV`9Yk{2lvsA>kTV4?wxt~s9H0Doegu(+&iF`XM%DQ{$MPug89KV9DXju^3e1 zm?yr)e(ZtRvXR?gSUgkP=izkU`IuuqVCnuDAXU-^HG%tJYk=4pW>sC`9xTrEUO5nA zgO}3+ozEh*8MF)mc^9HqKGp0bFo}(0Yw8jlTBY`>kRzFDZB;y;&x3r>y5@3g%?;N| zK(L8hk+5N!?Gjd?IgoMy5v0g34hc(>vBV^7Jhet z@UqYUF6NHOgf2rsd0U{YGADf!?g2!f=&s~0#mX~sErbD*s`8aIey)X<@M-{p@*M|I z?6IlLa-?Ty$4idhBQ%(I^_7y1`%P2M?V&Xzh@9d)?iTsqITR|N;|F!UhJw9Us9EHD zXj~GgjSJk#hKQ=FED=K=Um%>ECEqb@k%V7ze!>>w>h;;uB@9**{~V0K;zrKS+TQ`V zck4zJ4&>ZMqtp|p6N<#N?~l$Sv#%$1G}`L+{e(!VK`f$~zZ{FW&CNz2_{k>h(h6}S zQx3_j-^TCJ3UL$ZY7OO8Ow;Tb3@ZXyxY{6o=8L1Spa zPZyz=I*^+QpRzK95WC%p+8KIZ+vKf$JKl}awC0JA$&s2=!)Wh_F^^4KB z@%2v~4dnI*>d_;`38T zhg8&>-E%eE6C->Ix#1pxD;oTH4_R)9)97Y`I$H#dxYED+_@$CXy1V)X+z9-pC~g!Eh5ecvE*>U=b92aW2nVD zh29;r{heneJbc7{5~=Fes6nDFOlqL}7f!t-eb*%6yI(U@a_?81J{g})O(d@9Nw@SM zdGLd(<7R-05chwm!yUO^4UeeZ∓k>+|_7r;@Uc)tN$c%V}N>r&Onfr{i;RAaOC+ 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 0) Console.withOut(outStream) { println("\n\nEnd of TriCera's preprocessor (tri-pp) warnings and errors") println("=" * 80) diff --git a/src/tricera/concurrency/CCReader.scala b/src/tricera/concurrency/CCReader.scala index f6444011..296ae726 100644 --- a/src/tricera/concurrency/CCReader.scala +++ b/src/tricera/concurrency/CCReader.scala @@ -71,8 +71,13 @@ object CCReader { propertiesToCheck : Set[properties.Property] = Set( properties.Reachability)) : (CCReader, Boolean, CallSiteTransform.CallSiteTransforms) = { // second ret. arg is true if modelled heap + val programText = new java.util.Scanner(input).useDelimiter("\\A").next() + input.close() // Close the original reader. + val inputVarNames = ParseUtil.parseInputComment(programText) // for the invariant encoding heap model + val programReader = new java.io.StringReader(programText) + def entry(parser : concurrent_c.parser) = parser.pProgram - val prog = parseWithEntry(input, entry _) + val prog = parseWithEntry(programReader, entry _) val atCallTransformedProg = CCAstAtExpressionTransformer.transform(prog) val typeAnnotProg = CCAstTypeAnnotator(atCallTransformedProg) val (transformedCallsProg, callSiteTransforms) = @@ -81,7 +86,8 @@ object CCReader { var reader : CCReader = null while (reader == null) try { - reader = new CCReader(transformedCallsProg, entryFunction, propertiesToCheck) + reader = new CCReader( + transformedCallsProg, entryFunction, propertiesToCheck, inputVarNames) } catch { case NeedsTimeException => { warn("enabling time") @@ -145,23 +151,6 @@ object CCReader { super.toString + s" (property: $property)" } - // a wrapper for IExpression.Predicate that keeps more info about arguments - case class CCPredicate(pred : Predicate, argVars : Seq[CCVar], - srcInfo : Option[SourceInfo]) { - import ap.parser.ITerm - import IExpression._ - def apply(terms : Seq[ITerm]) = pred(terms: _*) - def apply[X: scala.reflect.ClassTag](ccVars : Seq[CCVar]) = - pred(ccVars.map(_.term): _*) - def arity : Int = pred.arity - override def toString: String = - pred.name + (if(argVars.nonEmpty) "(" + argVars.mkString(", ") + ")" else "") - def toStringWithLineNumbers: String = - pred.name + (if(argVars.nonEmpty) "(" + - argVars.map(_.toStringWithLineNumbers).mkString(", ") + ")" else "") - assert(pred.arity == argVars.size) - } - class FunctionContext (val prePred : CCPredicate, val postPred : CCPredicate, val acslContext : ACSLTranslator.FunctionContext, @@ -198,18 +187,18 @@ object CCReader { } } - private def getName (f : Function_def) : String = getName(FuncDef(f).decl) - private def getName (t : Thread_def) : String = t match { + def getName (f : Function_def) : String = getName(FuncDef(f).decl) + def getName (t : Thread_def) : String = t match { case decl : SingleThread => decl.cident_ case decl : ParaThread => decl.cident_2 } - private def getName(decl : Declarator) : String = decl match { + def getName(decl : Declarator) : String = decl match { case decl : NoPointer => getName(decl.direct_declarator_) case decl : BeginPointer => getName(decl.direct_declarator_) } - private def getName(decl : Direct_declarator) : String = decl match { + def getName(decl : Direct_declarator) : String = decl match { case decl : Name => decl.cident_ case decl : ParenDecl => getName(decl.declarator_) case dec : NewFuncDec => getName(dec.direct_declarator_) @@ -225,7 +214,8 @@ object CCReader { class CCReader private (prog : Program, entryFunction : String, - propertiesToCheck : Set[properties.Property]) { + propertiesToCheck : Set[properties.Property], + inputVarNames : Seq[String]) { import CCReader._ @@ -341,6 +331,8 @@ class CCReader private (prog : Program, CCReader.this.translateClockValue(expr) override def translateDurationValue(expr : CCExpr): CCExpr = CCReader.this.translateDurationValue(expr) + override def createHeapPointer(objectType : CCType) : CCType = + CCReader.this.createHeapPointer(objectType) } ////////////////////////////////////////////////////////////////////////////// @@ -658,38 +650,7 @@ class CCReader private (prog : Program, List(("defObj", HeapObj.CtorSignature(List(), ObjSort))), defObjCtor) - private val heapModelFactory : HeapModelFactory = - HeapModel.factory(HeapModel.ModelType.TheoryOfHeaps, symexContext, scope) - - private val heapVars : Map[String, CCVar] = if (modelHeap) { - (for (v <- heapModelFactory.requiredVars) yield { - val newVar = - new CCVar(v.name, None, v.typ, if (v.isGlobal) GlobalStorage else AutoStorage) - if (v.isGlobal) { - scope.GlobalVars.addVar(newVar) - scope.GlobalVars.inits += CCTerm(v.initialValue, v.typ, None) - scope.variableHints += List() // Add placeholder for hints - } else { // For thread-local variables, if any model needs them - scope.LocalVars.addVar(newVar) - } - v.name -> newVar - }).toMap } else Map.empty - - private val heapPreds : Map[String, CCPredicate] = if(modelHeap) { - (for (pred <- heapModelFactory.requiredPreds) yield { - // TODO: properly implement this. will be needed for invariant-based heap encoding - val dummyArgs = pred.argTypes.map(t => new CCVar("", None, t, AutoStorage)) - val newPred = this.newPred(pred.name, dummyArgs, None) - pred.name -> newPred - }).toMap - } else Map.empty - - private val heapModel : Option[HeapModel] = - if(modelHeap) - Some(heapModelFactory(HeapModel.Resources(heapVars, heapPreds))) - else None - - def getHeapInfo = if (modelHeap) Some(new HeapInfo(heap, heapModel.get)) else None + def getHeapInfo = if (modelHeap) Some(HeapInfo(heap, heapModel.get)) else None /** * It is important that globalExitPred has arguments for any variables @@ -741,11 +702,67 @@ class CCReader private (prog : Program, case _ => typ } } - if(fieldInfos(j).ptrDepth > 0) CCHeapPointer(heap, actualType) + if(fieldInfos(j).ptrDepth > 0) + createHeapPointer(actualType) else actualType})} structDefs += ((ctor.name, CCStruct(ctor, fieldsWithType))) } + private val globalVars : Seq[CCVarDeclaration] = if (inputVarNames.nonEmpty) { + for (decl <- prog.asInstanceOf[Progr].listexternal_declaration_ if decl.isInstanceOf[Global]) yield + collectVarDecls(decl.asInstanceOf[Global].dec_, true) + }.flatten.filter(_.isInstanceOf[CCVarDeclaration]).map(_.asInstanceOf[CCVarDeclaration]) else Seq() + private val inputVars : Seq[CCVar] = inputVarNames.map { name => + globalVars.find(_.name == name) match { + case Some(v) => new CCVar(v.name, Some(v.srcInfo), v.typ, GlobalStorage) + case None => throw new TranslationException( + s"INPUT variable '$name' from comment is not declared as a global variable.") + } + } + + private val heapModelFactory : HeapModelFactory = + tricera.params.TriCeraParameters.get.invEncoding match { + case Some(_) => + HeapModel.factory(HeapModel.ModelType.Invariants, symexContext, scope, inputVars) + case None => + HeapModel.factory(HeapModel.ModelType.TheoryOfHeaps, symexContext, scope, inputVars) + } + + for ((name, funcDefAst) <- heapModelFactory.getFunctionsToInject if modelHeap) { + if (functionDefs.contains(name)) { + throw new TranslationException( + s"Heap model function '$name' clashes with an existing function.") + } + functionDefs.put(name, funcDefAst) + } + + private val heapVars : Map[String, CCVar] = if (modelHeap) { + (for (v <- heapModelFactory.requiredVars) yield { + val newVar = + new CCVar(v.name, None, v.typ, if (v.isGlobal) GlobalStorage else AutoStorage) + if (v.isGlobal) { + scope.GlobalVars.addVar(newVar) + scope.GlobalVars.inits += CCTerm(v.initialValue, v.typ, None) + scope.variableHints += List() // Add placeholder for hints + } else { // For thread-local variables, if any model needs them + scope.LocalVars.addVar(newVar) + } + v.name -> newVar + }).toMap } else Map.empty + + private val heapPreds : Map[String, CCPredicate] = if(modelHeap) { + (for (pred <- heapModelFactory.requiredPreds) yield { + val newPred = this.newPred(pred.name, pred.args, None) + uninterpPredDecls += pred.name -> newPred + pred.name -> newPred + }).toMap + } else Map.empty + + private val heapModel : Option[HeapModel] = + if(modelHeap) + Some(heapModelFactory(HeapModel.Resources(heapVars, heapPreds))) + else None + ////////////////////////////////////////////////////////////////////////////// private def translateProgram : Unit = { // First collect all declarations. This is a bit more @@ -962,7 +979,8 @@ class CCReader private (prog : Program, } def getTypOfPointer(t: CCType): CCType = t match { - case p: CCHeapPointer => p.typ + case p : CCHeapPointer => p.typ + case p : CCInvariantPointer => p.elementType case t => t } @@ -1254,27 +1272,6 @@ class CCReader private (prog : Program, hints : Seq[Annotation], sourceInfo : SourceInfo) - sealed abstract class CCDeclaration - // todo: better handling of function declarations - case class CCFunctionDeclaration(name : String, - typ : CCType, - directDecl : Direct_declarator, - srcInfo : SourceInfo) extends CCDeclaration - case class CCVarDeclaration(name : String, - typ : CCType, - maybeInitializer : Option[Initializer], - hints : Seq[Annotation], - isArray : Boolean, - isStatic : Boolean, - needsHeap : Boolean, - initArrayExpr : Option[Constant_expression], - srcInfo : SourceInfo) extends CCDeclaration - case object CCNoDeclaration extends CCDeclaration - case class CCPredDeclaration(predHints : ListPred_hint, - srcInfo : SourceInfo) extends CCDeclaration - - case class CCInterpPredDeclaration(predDecl: Pred_interp) extends CCDeclaration - /** * @param dec The declaration to collect from. * @param isGlobal If this is a global declaration @@ -1508,11 +1505,13 @@ class CCReader private (prog : Program, else throw new TranslationException("Pointer arithmetic is not " + "allowed, and the only possible initialization value for " + "pointers is 0 (NULL)") - case _ : CCHeapPointer if res.typ.isInstanceOf[CCHeapArrayPointer] => + case _ : CCHeapPointer | _ : CCInvariantPointer + if res.typ.isInstanceOf[CCHeapArrayPointer] => // lhs is actually a heap array pointer (new CCVar(lhsVar.name, lhsVar.srcInfo, res.typ, lhsVar.storage), res) - case _ : CCHeapPointer if res.typ.isInstanceOf[CCStackPointer] => + case _ : CCHeapPointer | _ : CCInvariantPointer + if res.typ.isInstanceOf[CCStackPointer] => // lhs is actually a stack pointer (new CCVar(lhsVar.name, lhsVar.srcInfo, res.typ, lhsVar.storage), res) @@ -1695,9 +1694,9 @@ class CCReader private (prog : Program, private def getPtrType (ptr : Pointer, _typ : CCType) : CCType = { ptr match { - case _ : Point | _ : PointQual => CCHeapPointer(heap, _typ) // todo; support pointer qualifiers? + case _ : Point | _ : PointQual => createHeapPointer(_typ) // todo; support pointer qualifiers? case ptr : PointPoint => - getPtrType(ptr.pointer_, CCHeapPointer(heap, _typ)) + getPtrType(ptr.pointer_, createHeapPointer(_typ)) case _ => throw new TranslationException( "Advanced pointer declarations are not yet supported (line " + getSourceInfo(ptr).line + ")" @@ -1795,10 +1794,10 @@ class CCReader private (prog : Program, } private def getAnonStructName: String = - getAnonName(".AS") + getAnonName(Literals.anonStructName) private def getAnonEnumName: String = - getAnonName(".ES") + getAnonName(Literals.anonEnumName) private def getStructName(spec: Tstruct) : String = spec.struct_or_union_spec_ match { @@ -2072,6 +2071,11 @@ class CCReader private (prog : Program, throw NeedsTimeException typ = CCDuration } + case _ : THeapObject => { + if (!modelHeap) + throw NeedsHeapModelException + typ = CCHeapObject(heap) + } case x => { warn("type " + (printer print x) + " not supported, assuming int") @@ -2088,7 +2092,7 @@ class CCReader private (prog : Program, getType(listDeclSpecs) case None => CCInt } - if(f.decl.isInstanceOf[BeginPointer]) CCHeapPointer(heap, typ) // SSSOWO Still relevant: todo: can be stack pointer too, this needs to be fixed + if(f.decl.isInstanceOf[BeginPointer]) createHeapPointer(typ) // SSSOWO Still relevant: todo: can be stack pointer too, this needs to be fixed else typ } @@ -2178,20 +2182,27 @@ class CCReader private (prog : Program, scope.LocalVars popFrame } - private def createHeapPointer(decl : BeginPointer, typ : CCType) : - CCHeapPointer = createHeapPointerHelper(decl.pointer_, typ) + private def createHeapPointer(objectType : CCType) : CCType = { + if (TriCeraParameters.get.invEncoding.isDefined) + CCInvariantPointer(heap, objectType) + else + CCHeapPointer(heap, objectType) + } + + private def createHeapPointer(decl : BeginPointer, typ : CCType) : CCType = + createHeapPointerHelper(decl.pointer_, typ) - private def createHeapPointer(decl : PointerStart, typ : CCType) : - CCHeapPointer = createHeapPointerHelper(decl.pointer_, typ) + private def createHeapPointer(decl : PointerStart, typ : CCType) : CCType = + createHeapPointerHelper(decl.pointer_, typ) - private def createHeapPointerHelper(decl : Pointer, typ : CCType) : - CCHeapPointer = decl match { + private def createHeapPointerHelper(decl : Pointer, typ : CCType) : CCType = + decl match { case pp : PointPoint => - CCHeapPointer(heap, createHeapPointerHelper(pp.pointer_, typ)) - case p : Point => - CCHeapPointer(heap, typ) - case _ => throw new TranslationException("Type qualified pointers are " + - "currently not supported: " + decl) + createHeapPointer(createHeapPointerHelper(pp.pointer_, typ)) + case p : Point => + createHeapPointer(typ) + case _ => throw new TranslationException( + s"Type qualified pointers are currently not supported: $decl") } private def getFunctionArgNames(functionDef : Function_def) : Seq[String] = { @@ -2523,7 +2534,8 @@ class CCReader private (prog : Program, override def getCtor(s: Sort): Int = sortCtorIdMap(s) override def getTypOfPointer(t: CCType): CCType = t match { - case p: CCHeapPointer => p.typ + case p : CCHeapPointer => p.typ + case p : CCInvariantPointer => p.elementType case t => t } override def isHeapEnabled: Boolean = modelHeap @@ -2615,6 +2627,7 @@ class CCReader private (prog : Program, override def getTypOfPointer(t : CCType) : CCType = t match { case p : CCHeapPointer => p.typ + case p : CCInvariantPointer => p.elementType case _ => t } override def isHeapEnabled : Boolean = modelHeap @@ -2691,33 +2704,58 @@ class CCReader private (prog : Program, case compound : ScompOne => output(addRichClause(Clause(atom(exit, scope.allVarInits take exit.arity), List(), globalPreconditions), - Some(getSourceInfo(compound))) - ) + Some(getSourceInfo(compound))) + ) case compound : ScompTwo => { - scope.LocalVars pushFrame + scope.LocalVars.pushFrame - val stmsIt = ap.util.PeekIterator(compound.liststm_.iterator) + var currentStatePred = newPred(Nil, Some(getSourceInfo(compound.liststm_.head))) + output(addRichClause( + Clause(atom(currentStatePred, scope.allVarInits take currentStatePred.arity), + List(), globalPreconditions), currentStatePred.srcInfo)) + + if (modelHeap) { + val initCodeStrs = heapModelFactory.getInitCodeToInject + if (initCodeStrs.nonEmpty) { + val initStmts = initCodeStrs.map { code => + ParseUtil.parseStatement(new java.io.StringReader(code)) + } - // merge simple side-effect-free declarations with - // the entry clause - var entryPred = newPred(Nil, - if(stmsIt.hasNext) Some(getSourceInfo(stmsIt.peekNext)) else None) - var entryClause = - Clause(atom(entryPred, scope.allVarInits take entryPred.arity), List(), globalPreconditions) - - while (stmsIt.hasNext && isSEFDeclaration(stmsIt.peekNext)) { - val decSymex = Symex(symexContext, scope, entryPred, heapModel) - collectVarDecls(stmsIt.next.asInstanceOf[DecS].dec_, - false, decSymex, "", false) - val srcInfo = entryPred.srcInfo // todo: correct srcInfo? - entryPred = newPred(Nil, - if(stmsIt.hasNext) Some(getSourceInfo(stmsIt.peekNext)) else None) // todo: correct? - entryClause = merge((decSymex genClause(entryPred, srcInfo)).clause, entryClause) + for (stmt <- initStmts) { + val nextStatePred = newPred(Nil, currentStatePred.srcInfo) + translate(stmt, currentStatePred, nextStatePred) + currentStatePred = nextStatePred // The output of one becomes the input to the next. + } + } } - output(addRichClause(entryClause, entryPred.srcInfo)) - translateStmSeq(stmsIt, entryPred, exit) - scope.LocalVars popFrame + val stmsIt = ap.util.PeekIterator(compound.liststm_.iterator) + var predForNextBlock = currentStatePred + + if (stmsIt.hasNext && isSEFDeclaration(stmsIt.peekNext)) { + var sefBlockEntryPred = newPred(Nil, if (stmsIt.hasNext) Some(getSourceInfo(stmsIt.peekNext)) else None) + var sefMergedClause = + Clause(atom(sefBlockEntryPred, scope.allVarInits take sefBlockEntryPred.arity), + List(atom(predForNextBlock, scope.allFormalVarTerms take predForNextBlock.arity)), + true) + + while (stmsIt.hasNext && isSEFDeclaration(stmsIt.peekNext)) { + val decSymex = Symex(symexContext, scope, sefBlockEntryPred, heapModel) + collectVarDecls(stmsIt.next().asInstanceOf[DecS].dec_, false, decSymex, "", false) + + val nextPredInChain = + newPred(Nil, if (stmsIt.hasNext) Some(getSourceInfo(stmsIt.peekNext)) else None) + sefMergedClause = + merge((decSymex.genClause(nextPredInChain, nextPredInChain.srcInfo)).clause, sefMergedClause) + sefBlockEntryPred = symexContext.predCCPredMap(sefMergedClause.head.pred) + } + output(addRichClause(sefMergedClause, sefBlockEntryPred.srcInfo)) + predForNextBlock = symexContext.predCCPredMap(sefMergedClause.head.pred) + } + + translateStmSeq(stmsIt, predForNextBlock, exit) + + scope.LocalVars.popFrame } } diff --git a/src/tricera/concurrency/ParseUtil.scala b/src/tricera/concurrency/ParseUtil.scala new file mode 100644 index 00000000..e3bd56ca --- /dev/null +++ b/src/tricera/concurrency/ParseUtil.scala @@ -0,0 +1,107 @@ +package tricera.concurrency + +import tricera.concurrency.ccreader.CCExceptions +import tricera.concurrency.concurrent_c.Absyn._ + +import java.io.{Reader, StringReader} + +object ParseUtil { + def parseGlobalDeclaration(input : Reader) : Dec = { + def entry(parser : concurrent_c.parser) = { + val parseTree = parser.pProgram() + parseTree match { + case p : Progr if p.listexternal_declaration_.size == 1 => + p.listexternal_declaration_.getFirst match { + case global : Global => global.dec_ + case _ => throw new Exception("Input is not a global declaration") + } + case _ => throw new Exception( + "Input is not a global declaration") + } + } + CCReader.parseWithEntry(input, entry) + } + + def parseFunctionDefinition(input: Reader): External_declaration = { + def entry(parser: concurrent_c.parser) = { + val parseTree = parser.pProgram() + parseTree match { + case p: Progr if p.listexternal_declaration_.size == 1 => + p.listexternal_declaration_.getFirst match { + case f: Afunc => f + case _ => throw new Exception("Input is not a function definition") + } + case _ => throw new Exception("Input is not a function definition") + } + } + CCReader.parseWithEntry(input, entry) + } + + def parseStatement(input: java.io.Reader): Stm = { + val statementText = new java.util.Scanner(input).useDelimiter("\\A").next() + + val programText = s"void dummy() { $statementText }" + val programReader = new java.io.StringReader(programText) + + def entry(parser: concurrent_c.parser): Stm = { + val programAst = parser.pProgram() + programAst match { + case p: Progr => + val funcExtDecl = p.listexternal_declaration_.getFirst.asInstanceOf[Afunc] + val funcDef = funcExtDecl.function_def_ + val body = CCReader.FuncDef(funcDef).body.asInstanceOf[ScompTwo] + + if (body.liststm_.size != 1) { + throw new Exception( + s"Internal parser error: Expected to parse one statement, but found ${body.liststm_.size}. " + + s"Original text: '$statementText'") + } + body.liststm_.getFirst + + case _ => + throw new Exception(s"Internal parser error: Could not parse wrapped statement: '$statementText'") + } + } + + try { + CCReader.parseWithEntry(programReader, entry) + } catch { + case e: Exception => + throw new CCExceptions.ParseException( + s"Failed to parse statement string: '$statementText'. Reason: ${e.getMessage}") + } + } + + def parseExpression(input: java.io.Reader): Exp = { + val expressionText = new java.util.Scanner(input).useDelimiter("\\A").next() + // Wrap in a dummy function and extract. + val programText = s"void __dummy_func() { ($expressionText); }" + + def entry(parser: concurrent_c.parser): Exp = { + parser.pProgram() match { + case p: Progr => + val func = p.listexternal_declaration_.getFirst.asInstanceOf[Afunc].function_def_ + val body = CCReader.FuncDef(func).body.asInstanceOf[ScompTwo] + val stmt = body.liststm_.getFirst.asInstanceOf[ExprS] + stmt.expression_stm_.asInstanceOf[SexprTwo].exp_ + } + } + CCReader.parseWithEntry(new StringReader(programText), entry) + } + + /** + * Parses the "/* INPUT: ... */" comment from the raw program text. + * This is produced by tri-pp when using the [[InvariantEncodingModel]] for heap. + * @param programText The full content of the C source file. + * @return A sequence of input variable names found, or an empty sequence if not found. + */ + def parseInputComment(programText : String) : Seq[String] = { + val pattern = """/\*\s*INPUT:\s*([^/\\*]+)\*/""".r + pattern.findFirstMatchIn(programText) match { + case Some(m) => + m.group(1).split(',').map(_.trim).filter(_.nonEmpty).toSeq + case None => + Seq.empty + } + } +} diff --git a/src/tricera/concurrency/Symex.scala b/src/tricera/concurrency/Symex.scala index 843ecdda..0a1fb31c 100644 --- a/src/tricera/concurrency/Symex.scala +++ b/src/tricera/concurrency/Symex.scala @@ -370,12 +370,14 @@ class Symex private (context : SymexContext, private def isHeapPointer(t : CCExpr) = t.typ match { case _ : CCHeapPointer => true + case _ : CCInvariantPointer => true case _ : CCHeapArrayPointer => true case _ => false } private def isHeapPointer(exp : Exp, enclosingFunction : String) = getVar(asLValue(exp), enclosingFunction).typ match { case _ : CCHeapPointer => true + case _ : CCInvariantPointer => true case _ : CCHeapArrayPointer => true case _ => false } @@ -394,6 +396,95 @@ class Symex private (context : SymexContext, } } + /** + * Recursively traverses an LHS expression AST to find the base pointer. + * For example, in `p->left->right`, it finds and evaluates `p`. + * + * @param exp The expression AST node for the left-hand side. + * @param evalCtx The current evaluation context. + * @return The CCTerm representing the root pointer. + */ + @scala.annotation.tailrec + private def getRootPointerFromLhs(exp: Exp) + (implicit evalSettings: EvalSettings, + evalCtx: EvalContext): CCTerm = exp match { + case e: Evar => + eval(e).asInstanceOf[CCTerm] + case e: EvarWithType => + eval(e).asInstanceOf[CCTerm] + case e: Eselect => + getRootPointerFromLhs(e.exp_) + case e: Epoint => + getRootPointerFromLhs(e.exp_) + case e: Epreop if e.unary_operator_.isInstanceOf[Indirection] => + getRootPointerFromLhs(e.exp_) + case e: Earray => + getRootPointerFromLhs(e.exp_1) + case _ => + throw new TranslationException( + s"Cannot extract a base pointer from the LHS expression: ${context.printer.print(exp)}") + } + + // A data structure to hold the result of analyzing an LHS expression. + private sealed trait LhsInfo + private case class LhsVariable(name : String, indirection : Boolean) extends LhsInfo + private case class LhsHeapField( + rootPointer : CCTerm, + fieldAccessChain : List[String] // e.g., for p->left->right, this is List("left", "right") + ) extends LhsInfo + private case class LhsHeapDereference(pointer: CCTerm) extends LhsInfo + + /** + * Traverses an LHS expression AST without evaluating it, to determine if it's + * a variable access or a heap write, and to extract necessary components. + */ + private def getLhsInfo(exp: Exp) + (implicit evalSettings: EvalSettings, + evalCtx: EvalContext): LhsInfo = { + + // A recursive helper to find the base variable and the access path. + def peel(e: Exp, path: List[String]): (Exp, List[String]) = e match { + case e : Epoint => peel(e.exp_, e.cident_ :: path) + case e : Eselect => peel(e.exp_, e.cident_ :: path) + // For `(*p).f`, the base is `*p`. + case e : Epreop if e.unary_operator_.isInstanceOf[Indirection] => (e, path) + // Base cases + case _ : Evar | _ : EvarWithType => (e, path) + case e : Earray => peel(e.exp_1, "[]" :: path) // Represent array access + case _ => throw new TranslationException(s"Unsupported LHS expression: ${context.printer.print(e)}") + } + + val (base, path) = peel(exp, Nil) + + base match { + // Case 1: simple variable, like `p` in `p->left`. + case _ : Evar | _ : EvarWithType => + val name = base match { + case e : Evar => e.cident_ + case e : EvarWithType => e.cident_ + } + if (path.isEmpty) { + LhsVariable(name, indirection = false) + } else { + // This is a field access like `p->f`. Evaluate `p` to get the root pointer. + val rootPointer = eval(base).asInstanceOf[CCTerm] + LhsHeapField(rootPointer, path) + } + + // Case 2: a dereference, like `*p` in `(*p).f` or just `*p`. + case e : Epreop if e.unary_operator_.isInstanceOf[Indirection] => + // Evaluate the expression inside the dereference to get the pointer. + val pointer = eval(e.exp_).asInstanceOf[CCTerm] + if (path.isEmpty) + LhsHeapDereference(pointer) + else + LhsHeapField(pointer, path) + + case _ => throw new TranslationException( + s"Unsupported LHS base expression: ${context.printer.print(base)}") + } + } + def eval(exp : Exp)(implicit evalSettings : EvalSettings, evalCtx : EvalContext) : CCExpr = { val initSize = values.size @@ -549,6 +640,15 @@ class Symex private (context : SymexContext, } } + private def callFunction(name : String, + args : Seq[CCExpr], + srcInfo : Option[SourceInfo]) : CCTerm = { + args.foreach(pushVal(_)) + outputClause(srcInfo) + handleFunction(name, initPred, args.size) + popVal.asInstanceOf[CCTerm] + } + private def processHeapResult(result : HeapModel.HeapOperationResult) : Option[CCTerm] = result match { case HeapModel.SimpleResult(returnValue, newValues, assumptions, assertions) => @@ -559,7 +659,13 @@ class Symex private (context : SymexContext, // assertion guards will include the safety formula, which is unsound. assumptions.foreach(a => addGuard(a.toFormula)) returnValue - case _ : HeapModel.FunctionCall => ??? // TODO: handle other heap models + case call : HeapModel.FunctionCall => + Some(callFunction(call.functionName, call.args, call.sourceInfo)) + case call : HeapModel.FunctionCallWithGetter => + val callResult = callFunction(call.functionName, call.args, call.sourceInfo) + Some(CCTerm(call.getter(callResult.toTerm), + call.resultType, + call.sourceInfo)) } def handleArrayInitialization(arrayPtr : CCHeapArrayPointer, @@ -619,9 +725,50 @@ class Symex private (context : SymexContext, case exp : Eassign if exp.assignment_op_.isInstanceOf[Assign] => // if lhs is array pointer, an alloc rhs evaluation should produce an // AddressRange even if the allocation size is only 1. + + // first check if the RHS is the special non-determinism token '_' + exp.exp_2 match { + case _ : Enondet => + val lhsVal = eval(exp.exp_1) // Evaluate LHS to know its type + val nonDetTerm = lhsVal.typ.getNonDet + val nonDetVal = CCTerm(nonDetTerm, lhsVal.typ, lhsVal.srcInfo) + + val lhsName = asLValue(exp.exp_1) + setValue(lhsName, nonDetVal, evalCtx.enclosingFunctionName) + pushVal(nonDetVal) + return + case _ => // Fall through to normal assignment handling + } + evalHelp(exp.exp_2) //first evaluate rhs and push maybeOutputClause(Some(getSourceInfo(exp))) val rhsVal = popVal + + getLhsInfo(exp.exp_1) match { + case LhsVariable(name, _) => + setValue(name, rhsVal, evalCtx.enclosingFunctionName) + + case LhsHeapDereference(pointer) => + val readResult = processHeapResult(heapModel.read(pointer, values)).get + val heapOpResult = heapModel.write( + pointer, + readResult.toTerm.asInstanceOf[IFunApp], + rhsVal, + values + ) + processHeapResult(heapOpResult) + + case LhsHeapField(rootPointer, fieldAccessChain) => + val objectTerm = eval(exp.exp_1) + val heapOpResult = heapModel.write( + rootPointer, + objectTerm.toTerm.asInstanceOf[IFunApp], + rhsVal, + values + ) + processHeapResult(heapOpResult) + } + val lhsVal = eval(exp.exp_1) //then evaluate lhs and get it val updatingPointedValue = isHeapRead(lhsVal) || // *(p) = ... where p is a heap ptr @@ -634,8 +781,9 @@ class Symex private (context : SymexContext, if(evalCtx.lhsIsArrayPointer || isHeapPointer(lhsVal) || updatingPointedValue || lhsIsArraySelect) { if (updatingPointedValue) { + val rootPointer = getRootPointerFromLhs(exp.exp_1) processHeapResult( - heapModel.write(lhsVal.toTerm.asInstanceOf[IFunApp], rhsVal, values)) + heapModel.write(rootPointer, lhsVal.toTerm.asInstanceOf[IFunApp], rhsVal, values)) } else if (lhsIsArraySelect) { // todo: this branch needs to be rewritten, it was hastily coded to deal with arrays inside structs. val newTerm = CCTerm( writeADT(lhsVal.toTerm.asInstanceOf[IFunApp], @@ -661,14 +809,14 @@ class Symex private (context : SymexContext, "allowed, and the only assignable integer value for " + "pointers is 0 (NULL)") } else CCTerm(context.heap.nullAddr(), - CCHeapPointer(context.heap, lhsVal.typ), rhsVal.srcInfo) + context.createHeapPointer(lhsVal.typ), rhsVal.srcInfo) case _ => rhsVal } val actualLhsTerm = getActualAssignedTerm(lhsVal, actualRhsVal) rhsVal.typ match { case arrayPtr1 : CCHeapArrayPointer => lhsVal.typ match { - case _ : CCHeapPointer => + case _ : CCHeapPointer | _ : CCInvariantPointer => throw new TranslationException(getLineString(exp) + "Cannot assign an array value to " + lhsName + ". " + "Declaring " + lhsName + " as " + lhsName + "[] might " + @@ -754,8 +902,9 @@ class Symex private (context : SymexContext, if(isHeapPointer(exp, evalCtx.enclosingFunctionName) && updatingPointedValue) { + val rootPointer = getRootPointerFromLhs(exp.exp_1) processHeapResult( - heapModel.write(lhsVal.toTerm.asInstanceOf[IFunApp], newVal, values)) + heapModel.write(rootPointer, lhsVal.toTerm.asInstanceOf[IFunApp], newVal, values)) } else { setValue(scope.lookupVar(asLValue(exp.exp_1), evalCtx.enclosingFunctionName), getActualAssignedTerm(lhsVal, newVal), @@ -912,8 +1061,9 @@ class Symex private (context : SymexContext, maybeOutputClause(Some(getSourceInfo(exp))) pushVal(popVal mapTerm (_ + op)) if(isHeapPointer(preExp, evalCtx.enclosingFunctionName)) { + val rootPointer = getRootPointerFromLhs(preExp) processHeapResult( - heapModel.write(lhsVal.toTerm.asInstanceOf[IFunApp], topVal, values)) + heapModel.write(rootPointer, lhsVal.toTerm.asInstanceOf[IFunApp], topVal, values)) } else { setValue(scope.lookupVar(asLValue(preExp), evalCtx.enclosingFunctionName), getActualAssignedTerm(lhsVal, topVal), @@ -971,9 +1121,9 @@ class Symex private (context : SymexContext, evalCtx.enclosingFunctionName).typ, srcInfo ) case _ => - CCTerm(addrTerm, CCHeapPointer(context.heap, - getValue(addrTerm.asInstanceOf[IConstant].c.name, - evalCtx.enclosingFunctionName).typ), srcInfo) + CCTerm(addrTerm, context.createHeapPointer( + getValue(addrTerm.asInstanceOf[IConstant].c.name, + evalCtx.enclosingFunctionName).typ), srcInfo) } popVal pushVal(t) @@ -998,7 +1148,7 @@ class Symex private (context : SymexContext, val v = popVal v.typ match { // todo: type checking? case ptr : CCStackPointer => pushVal(getPointedTerm(ptr)) - case _ : CCHeapPointer => + case _ : CCHeapPointer | _ : CCInvariantPointer => if(evalCtx.evaluatingLHS) pushVal(v) else pushVal(processHeapResult(heapModel.read(v, values)).get) case arr : CCHeapArrayPointer => @@ -1032,6 +1182,10 @@ class Symex private (context : SymexContext, if(context.propertiesToCheck contains properties.Reachability) assertProperty(false, srcInfo, properties.Reachability) pushVal(CCFormula(true, CCInt, srcInfo)) + case "$HEAP_TYPE_DEFAULT" => + /** A builtin to access the default object of the heap */ + pushVal(CCTerm(context.heap._defObj, + CCHeapObject(context.heap), srcInfo)) case name => outputClause(srcInfo) handleFunction(name, initPred, 0) @@ -1102,7 +1256,7 @@ class Symex private (context : SymexContext, name + " is not a declared channel") } case name@("malloc" | "calloc" | "alloca" | "__builtin_alloca") - if !TriCeraParameters.parameters.value.useArraysForHeap => // todo: proper alloca and calloc + if !TriCeraParameters.get.useArraysForHeap => // todo: proper alloca and calloc val (typ, allocSize) = exp.listexp_(0) match { case exp : Ebytestype => (context.getType(exp), CCTerm(IIntLit(IdealInt(1)), CCInt, srcInfo)) @@ -1160,7 +1314,7 @@ class Symex private (context : SymexContext, // todo: optimise constant size allocations > 1? } case name@("malloc" | "calloc" | "alloca" | "__builtin_alloca") - if TriCeraParameters.parameters.value.useArraysForHeap => + if TriCeraParameters.get.useArraysForHeap => /** * @todo Support checking [[properties.MemValidCleanup]] when using * arrays to model heaps. @@ -1192,20 +1346,36 @@ class Symex private (context : SymexContext, case _ => (Some(allocSize), None) } - val arrayLocation = name match { - case "malloc" | "calloc" => ArrayLocation.Heap - case "alloca" | "__builtin_alloca" => ArrayLocation.Stack - } - val theory = ExtArray(Seq(CCInt.toSort), typ.toSort) // todo: only 1-d int arrays... - val arrType = CCArray(typ, sizeExpr, sizeInt, theory, arrayLocation) + sizeInt match { + case Some(1) => + // use regular heap model, this is not an array + val objectTerm = CCTerm(name match { + case "calloc" => typ.getZeroInit + case "malloc" | "alloca" | "__builtin_alloca" => typ.getNonDet + }, typ, srcInfo) - val arrayTerm = CCTerm(name match { - case "calloc" => arrType.getZeroInit - case "malloc" | "alloca" | "__builtin_alloca" => arrType.getNonDet - }, arrType, srcInfo) + val allocatedAddr = + processHeapResult(heapModel.alloc(objectTerm, values)).get + + pushVal(allocatedAddr) + case _ => + val arrayLocation = name match { + case "malloc" | "calloc" => ArrayLocation.Heap + case "alloca" | "__builtin_alloca" => ArrayLocation.Stack + } + + val theory = ExtArray(Seq(CCInt.toSort), typ.toSort) // todo: only 1-d int arrays... + val arrType = CCArray(typ, sizeExpr, sizeInt, theory, arrayLocation) + + val arrayTerm = CCTerm(name match { + case "calloc" => arrType.getZeroInit + case "malloc" | "alloca" | "__builtin_alloca" => arrType.getNonDet + }, arrType, srcInfo) + + pushVal(arrayTerm) + } - pushVal(arrayTerm) case "realloc" => throw new TranslationException("realloc is not supported.") case "free" => @@ -1293,7 +1463,7 @@ class Symex private (context : SymexContext, val rawFieldName = exp.cident_ val term = subexpr.typ match { case ptrType : CCStackPointer => getPointedTerm(ptrType) - case _ : CCHeapPointer => //todo: error here if field is null + case _ : CCHeapPointer | _ : CCInvariantPointer => //todo: error here if field is null processHeapResult(heapModel.read(subexpr, values)).get case _ => throw new TranslationException( "Trying to access field '->" + rawFieldName + "' of non pointer.") @@ -1327,7 +1497,8 @@ class Symex private (context : SymexContext, val evalExp = topVal maybeOutputClause(Some(getSourceInfo(exp))) if(isHeapPointer(postExp, evalCtx.enclosingFunctionName)) { - processHeapResult(heapModel.write(evalExp.toTerm.asInstanceOf[IFunApp], + val rootPointer = getRootPointerFromLhs(postExp) + processHeapResult(heapModel.write(rootPointer, evalExp.toTerm.asInstanceOf[IFunApp], topVal mapTerm (_ + op), values)) } else { setValue(scope.lookupVar(asLValue(postExp), evalCtx.enclosingFunctionName), @@ -1338,16 +1509,24 @@ class Symex private (context : SymexContext, case exp : Evar => // todo: Unify with EvarWithType, they should always be treated the same. val name = exp.cident_ - pushVal(scope.lookupVarNoException(name, evalCtx.enclosingFunctionName) match { - case -1 => - (context.enumeratorDefs get name) match { - case Some(e) => e - case None => throw new TranslationException( - getLineString(exp) + "Symbol " + name + " is not declared") - } - case ind => - getValue(ind, false) - }) + name match { + // TODO: FIX!! + case "HEAP_TYPE_DEFAULT" => + pushVal(CCTerm(context.heap._defObj, + CCHeapObject(context.heap), Some(getSourceInfo(exp)))) + case _ => + pushVal(scope.lookupVarNoException(name, evalCtx.enclosingFunctionName) match { + case -1 => + (context.enumeratorDefs get name) match { + case Some(e) => e + case None => throw new TranslationException( + getLineString(exp) + "Symbol " + name + " is not declared") + } + case ind => + getValue(ind, false) + }) + } + case exp : EvarWithType => // todo: Unify with Evar, they should always be treated the same. diff --git a/src/tricera/concurrency/SymexContext.scala b/src/tricera/concurrency/SymexContext.scala index 1910cc65..6fc4624c 100644 --- a/src/tricera/concurrency/SymexContext.scala +++ b/src/tricera/concurrency/SymexContext.scala @@ -108,4 +108,5 @@ trait SymexContext { def translateClockValue (expr : CCExpr) : CCExpr def translateDurationValue(expr : CCExpr) : CCExpr + def createHeapPointer(objectType : CCType) : CCType } diff --git a/src/tricera/concurrency/TriCeraPreprocessor.scala b/src/tricera/concurrency/TriCeraPreprocessor.scala index b7340e9b..374a8f92 100644 --- a/src/tricera/concurrency/TriCeraPreprocessor.scala +++ b/src/tricera/concurrency/TriCeraPreprocessor.scala @@ -38,7 +38,8 @@ class TriCeraPreprocessor(val inputFilePath : String, val outputFilePath : String, val entryFunction : String, val displayWarnings : Boolean, - val quiet : Boolean) { + val quiet : Boolean, + val determinize : Boolean) { val ppPath = sys.env.get("TRI_PP_PATH") match { case Some(path) => path + "/tri-pp" case _ => @@ -50,8 +51,34 @@ class TriCeraPreprocessor(val inputFilePath : String, "variable TRI_PP_PATH is exported and points to the preprocessor's" + " base directory") } + var curInputFilePath = inputFilePath + if (determinize) { + val cmdLine1 : Seq[String] = + Seq(ppPath.toString, curInputFilePath,"-o", outputFilePath) ++ + (if(quiet) Seq("-q") else Nil) ++ + Seq("-m", entryFunction, "--make-calls-unique", "--", "-xc") ++ + (if(displayWarnings) Nil else Seq("-Wno-everything")) + try { Process(cmdLine1) ! } + catch { + case _: Throwable => + throw new Main.MainException("tri-pp failed while trying to make " + + "calls unique.\n" + "Preprocessor command: " + cmdLine1.mkString(" ")) + } + curInputFilePath = outputFilePath + val cmdLine2 : Seq[String] = + Seq(ppPath.toString, curInputFilePath,"-o", curInputFilePath) ++ + (if(quiet) Seq("-q") else Nil) ++ + Seq("-m", entryFunction, "--determinize", "--", "-xc") ++ + (if(displayWarnings) Nil else Seq("-Wno-everything")) + try { Process(cmdLine2) ! } + catch { + case _: Throwable => + throw new Main.MainException("tri-pp failed while trying to make" + + "calls unique.\n" + "Preprocessor command: " + cmdLine1.mkString(" ")) + } + } private val cmdLine : Seq[String] = - Seq(ppPath.toString, inputFilePath,"-o", outputFilePath) ++ + Seq(ppPath.toString, curInputFilePath,"-o", outputFilePath) ++ (if(quiet) Seq("-q") else Nil) ++ Seq("-m", entryFunction, "--", "-xc") ++ (if(displayWarnings) Nil else Seq("-Wno-everything")) @@ -63,7 +90,7 @@ class TriCeraPreprocessor(val inputFilePath : String, " be executed. This might be due to TriCera preprocessor binary " + "not being in the current directory. Alternatively, use the " + "-noPP switch to disable the preprocessor.\n" + - "Preprocessor command: " + cmdLine + "Preprocessor command: " + cmdLine.mkString(" ") ) } val hasError = returnCode != 0 diff --git a/src/tricera/concurrency/ccreader/CCDeclaration.scala b/src/tricera/concurrency/ccreader/CCDeclaration.scala new file mode 100644 index 00000000..8accdc62 --- /dev/null +++ b/src/tricera/concurrency/ccreader/CCDeclaration.scala @@ -0,0 +1,25 @@ +package tricera.concurrency.ccreader + +import tricera.Util.SourceInfo +import tricera.concurrency.concurrent_c.Absyn._ + +sealed abstract class CCDeclaration +// todo: better handling of function declarations +case class CCFunctionDeclaration(name : String, + typ : CCType, + directDecl : Direct_declarator, + srcInfo : SourceInfo) extends CCDeclaration +case class CCVarDeclaration(name : String, + typ : CCType, + maybeInitializer : Option[Initializer], + hints : Seq[Annotation], + isArray : Boolean, + isStatic : Boolean, + needsHeap : Boolean, + initArrayExpr : Option[Constant_expression], + srcInfo : SourceInfo) extends CCDeclaration +case object CCNoDeclaration extends CCDeclaration +case class CCPredDeclaration(predHints : ListPred_hint, + srcInfo : SourceInfo) extends CCDeclaration + +case class CCInterpPredDeclaration(predDecl: Pred_interp) extends CCDeclaration diff --git a/src/tricera/concurrency/ccreader/CCPredicate.scala b/src/tricera/concurrency/ccreader/CCPredicate.scala new file mode 100644 index 00000000..6e7df238 --- /dev/null +++ b/src/tricera/concurrency/ccreader/CCPredicate.scala @@ -0,0 +1,23 @@ +package tricera.concurrency.ccreader + +import ap.parser.IExpression._ +import ap.parser.{IAtom, ITerm} +import tricera.Util.SourceInfo + +// a wrapper for IExpression.Predicate that keeps more info about arguments +case class CCPredicate(pred : Predicate, argVars : Seq[CCVar], + srcInfo : Option[SourceInfo]) { + + + def apply(terms : Seq[ITerm]) : IAtom = + pred(terms: _*) + def apply[X: scala.reflect.ClassTag](ccVars : Seq[CCVar]) : IAtom = + pred(ccVars.map(_.term): _*) + def arity : Int = pred.arity + override def toString: String = + pred.name + (if(argVars.nonEmpty) "(" + argVars.mkString(", ") + ")" else "") + def toStringWithLineNumbers: String = + pred.name + (if(argVars.nonEmpty) "(" + + argVars.map(_.toStringWithLineNumbers).mkString(", ") + ")" else "") + assert(pred.arity == argVars.size) +} diff --git a/src/tricera/concurrency/ccreader/CCType.scala b/src/tricera/concurrency/ccreader/CCType.scala index 7b3a0743..e3a1d640 100644 --- a/src/tricera/concurrency/ccreader/CCType.scala +++ b/src/tricera/concurrency/ccreader/CCType.scala @@ -54,9 +54,11 @@ abstract sealed class CCType { case typ: CCArithType if typ.isUnsigned => Sort.Nat case CCDuration => Sort.Nat case CCHeap(heap) => heap.HeapSort + case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort + case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -75,10 +77,12 @@ abstract sealed class CCType { case CCULongLong => UnsignedBVSort(64) case CCDuration => Sort.Nat case CCHeap(heap) => heap.HeapSort + case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCArray(_, _, _, s, _) => s.sort case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort + case CCInvariantPointer(_, _) => Sort.Integer case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort case CCIntEnum(_, _) => Sort.Integer @@ -96,9 +100,11 @@ abstract sealed class CCType { case CCULongLong => UnsignedBVSort(64) case CCDuration => Sort.Nat case CCHeap(heap) => heap.HeapSort + case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort + case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -117,9 +123,11 @@ abstract sealed class CCType { case CCULongLong => UnsignedBVSort(64) case CCDuration => Sort.Nat case CCHeap(heap) => heap.HeapSort + case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort + case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -291,6 +299,16 @@ case class CCHeap(heap : Heap) extends CCType { def shortName = "heap" } +case class CCHeapObject(heap : Heap) extends CCType { + override def toString : String = heap.ObjectSort.name + def shortName = toString +} + +case class CCInvariantPointer(heap : Heap, elementType : CCType) extends CCType { + override def toString: String = s"inv_ptr<${elementType.toString}>" + override def shortName = toString +} + /** * typ is either an index into structInfos (if ADT type), or a CCType * ptrDepth 0 => not a pointer, 1 => *, 2 => **, ... */ diff --git a/src/tricera/concurrency/heap/HeapModel.scala b/src/tricera/concurrency/heap/HeapModel.scala index bcad74e4..e75b1010 100644 --- a/src/tricera/concurrency/heap/HeapModel.scala +++ b/src/tricera/concurrency/heap/HeapModel.scala @@ -30,10 +30,13 @@ package tricera.concurrency.heap import ap.parser._ +import ap.types.MonoSortedIFunction +import tricera.Util.SourceInfo import tricera.acsl.ACSLTranslator -import tricera.concurrency.CCReader.{CCAssertionClause, CCPredicate} +import tricera.concurrency.CCReader._ import tricera.concurrency.ccreader._ import tricera.concurrency.SymexContext +import tricera.concurrency.concurrent_c.Absyn.{Function_def, Stm} import tricera.properties.Property import scala.collection.mutable @@ -48,7 +51,7 @@ object HeapModel { initialValue : ITerm) /** Used to specify (uninterpreted) predicates the model requires */ - case class PredSpec(name: String, argTypes: Seq[CCType]) + case class PredSpec(name: String, args: Seq[CCVar]) /** A container for all resources declared for the model. */ case class Resources( @@ -84,16 +87,26 @@ object HeapModel { case class FunctionCall( functionName : String, args : Seq[CCExpr], - resultType : CCType // can be CCVoid + resultType : CCType, // can be CCVoid + sourceInfo : Option[SourceInfo] ) extends HeapOperationResult + case class FunctionCallWithGetter( + functionName : String, + args : Seq[CCExpr], + resultType : CCType, // can be CCVoid + getter : MonoSortedIFunction, + sourceInfo : Option[SourceInfo] + ) extends HeapOperationResult - def factory(mt : ModelType.Value, - context : SymexContext, - scope : CCScope) : HeapModelFactory = + + def factory(mt : ModelType.Value, + context : SymexContext, + scope : CCScope, + inputVars : Seq[CCVar]) : HeapModelFactory = mt match { case ModelType.TheoryOfHeaps => new HeapTheoryFactory(context, scope) - case ModelType.Invariants => ??? // new InvariantsHeapFactory(context, scope) + case ModelType.Invariants => new InvariantEncodingsFactory(context, scope, inputVars) } } @@ -110,6 +123,12 @@ trait HeapModelFactory { /** Build the concrete model using the resources the caller allocated */ def apply(resources: Resources): HeapModel + + /** Function definitions provided by the model (name, def) */ + def getFunctionsToInject : Map[String, Function_def] + + /** Initialization code to be added to the top of the entry method */ + def getInitCodeToInject: Seq[String] } /** @@ -126,11 +145,12 @@ trait HeapModel { /** * Updates an object field on the heap (for ADTs/structs). + * @param rootPointer The pointer term at the root of the write * @param lhs The location of the field to update, represented by a term * from a prior symbolic read (e.g., `getField(read(h, p))`). * @param rhs The new value for the field. */ - def write(lhs : IFunApp, rhs : CCExpr, s : Seq[CCExpr]) : HeapOperationResult + def write(rootPointer: CCTerm, lhs : IFunApp, rhs : CCExpr, s : Seq[CCExpr]) : HeapOperationResult /** * Allocates an array of objects on the heap diff --git a/src/tricera/concurrency/heap/HeapTheoryModel.scala b/src/tricera/concurrency/heap/HeapTheoryModel.scala index f1b8c0e2..ea73fba5 100644 --- a/src/tricera/concurrency/heap/HeapTheoryModel.scala +++ b/src/tricera/concurrency/heap/HeapTheoryModel.scala @@ -35,10 +35,11 @@ import ap.parser._ import ap.types.MonoSortedIFunction import lazabs.horn.bottomup.HornClauses.toPrologSyntax import tricera.acsl.ACSLTranslator -import tricera.concurrency.CCReader.{CCAssertionClause, CCPredicate} +import tricera.concurrency.CCReader.CCAssertionClause import tricera.concurrency.ccreader.CCExceptions.TranslationException import tricera.concurrency.ccreader._ -import tricera.concurrency.{CCReader, SymexContext} +import tricera.concurrency.SymexContext +import tricera.concurrency.concurrent_c.Absyn.{Function_def, Stm} import tricera.params.TriCeraParameters import tricera.properties import tricera.properties.Property @@ -76,6 +77,9 @@ final class HeapTheoryFactory(context : SymexContext, val memCleanupVar = res.vars.get(memCleanupVarName) new HeapTheoryModel(context, scope, heapVar, memCleanupVar) } + + override def getFunctionsToInject : Map[String, Function_def] = Map() + override def getInitCodeToInject : Seq[String] = Seq() } class HeapTheoryModel(context : SymexContext, @@ -170,7 +174,8 @@ class HeapTheoryModel(context : SymexContext, ) } - override def write(lhs : IFunApp, + override def write(rootPointer: CCTerm, + lhs : IFunApp, rhs : CCExpr, s : Seq[CCExpr]) : HeapOperationResult = { val newHeapTerm = CCTerm( @@ -241,7 +246,7 @@ class HeapTheoryModel(context : SymexContext, } val writeResult = - write(termToFree, + write(???, termToFree, CCTerm(heapPtr.heap._defObj, heapPtr, p.srcInfo), nextState).asInstanceOf[SimpleResult] nextState = writeResult.nextState @@ -481,7 +486,7 @@ class HeapTheoryModel(context : SymexContext, return Seq() } val newAssertions = for (finalPred <- exitPreds) yield finalPred match { - case CCReader.CCPredicate(_, args, _) + case CCPredicate(_, args, _) if args.size > heapInd && args.size > cleanupVarInd && args(heapInd).sort == context.heap.HeapSort && args(cleanupVarInd).sort == context.heap.AddressSort => diff --git a/src/tricera/concurrency/heap/InvariantEncodingParser.scala b/src/tricera/concurrency/heap/InvariantEncodingParser.scala new file mode 100644 index 00000000..31a7f5c0 --- /dev/null +++ b/src/tricera/concurrency/heap/InvariantEncodingParser.scala @@ -0,0 +1,59 @@ +package tricera.concurrency.heap + +import tricera.concurrency.ccreader.CCExceptions.TranslationException +import net.jcazevedo.moultingyaml._ + +object InvariantEncodingParser { + case class Declaration(name : String, + `type` : String, + initial_value : Option[String]) + case class Argument (name : String, + `type` : String) + case class Predicate (name : String, + args : List[Argument]) + case class FunctionDef(return_type : String, + args : List[Argument], + body : String) + case class ParsedEncoding( + ptr_type : String, + global_decls : List[Declaration], + predicates : List[Predicate], + init_code : List[String], + read_fn : FunctionDef, + write_fn : FunctionDef, + alloc_fn : FunctionDef, + free_fn : FunctionDef + ) + + object EncodingYamlProtocol extends DefaultYamlProtocol { + implicit val argumentFormat : YamlFormat[Argument] = yamlFormat2(Argument) + implicit val declarationFormat : YamlFormat[Declaration] = yamlFormat3(Declaration) + implicit val predicateFormat : YamlFormat[Predicate] = yamlFormat2(Predicate) + implicit val functionDefFormat : YamlFormat[FunctionDef] = yamlFormat3(FunctionDef) + implicit val encodingFormat : YamlFormat[ParsedEncoding] = yamlFormat8(ParsedEncoding) + } + + def parse(encodingName : String) : ParsedEncoding = { + val resourcePath = s"/tricera/concurrency/heap/encodings/$encodingName.yml" + val source = try { + scala.io.Source.fromInputStream(getClass.getResourceAsStream(resourcePath)) + } catch { + case _: NullPointerException => + throw new TranslationException( + s"Could not find encoding file for '$encodingName'. " + + s"Expected to find it at '.../resources$resourcePath'") + } + + try { + import EncodingYamlProtocol._ + val yamlAst = source.mkString.parseYaml + yamlAst.convertTo[ParsedEncoding] + } catch { + case e: Throwable => + throw new TranslationException(s"Failed to parse encoding file for " + + s"'$encodingName': ${e.getMessage}") + } finally { + source.close() + } + } +} diff --git a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala new file mode 100644 index 00000000..321f0d0b --- /dev/null +++ b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -0,0 +1,372 @@ +package tricera.concurrency.heap + +import ap.basetypes.IdealInt +import ap.parser.IExpression.toFunApplier +import ap.parser.{IExpression, IFunApp, IFunction, ITerm} +import ap.types.MonoSortedIFunction +import tricera.acsl.ACSLTranslator +import tricera.concurrency.ccreader.CCExceptions.TranslationException +import tricera.concurrency.ccreader._ +import tricera.concurrency.concurrent_c.Absyn.{Afunc, Function_def} +import tricera.concurrency.heap.HeapModel._ +import tricera.concurrency.heap.InvariantEncodingParser.{ + Argument, + ParsedEncoding +} +import tricera.concurrency.{ParseUtil, SymexContext} +import tricera.params.TriCeraParameters + +import java.io.StringReader +import java.util.regex.{Matcher, Pattern} +import scala.annotation.tailrec +import scala.collection.mutable + +final class InvariantEncodingsFactory( + context : SymexContext, + scope : CCScope, + inputVars : Seq[CCVar]) extends HeapModelFactory { + + private val encodingName = TriCeraParameters.get.invEncoding.getOrElse( + throw new IllegalStateException( + "InvariantEncodingsFactory created without an encoding type specified.") + ) + + private val originalEncoding : ParsedEncoding = + InvariantEncodingParser.parse(encodingName) + + private val (transformedInitCode, transformedFunctions) = { + if (inputVars.isEmpty) { + (originalEncoding.init_code, Map( + "$read" -> originalEncoding.read_fn, + "$write" -> originalEncoding.write_fn, + "$alloc" -> originalEncoding.alloc_fn, + "$free" -> originalEncoding.free_fn + )) + } else { + val predNames = originalEncoding.predicates.map(_.name).toSet + + def transform(code : String) : String = + transformPredicateCalls(code, predNames, inputVars) + + val newInit = originalEncoding.init_code.map(transform) + val newFuncs = Map( + "$read" -> originalEncoding.read_fn.copy(body = transform(originalEncoding.read_fn.body)), + "$write" -> originalEncoding.write_fn.copy(body = transform(originalEncoding.write_fn.body)), + "$alloc" -> originalEncoding.alloc_fn.copy(body = transform(originalEncoding.alloc_fn.body)), + "$free" -> originalEncoding.free_fn.copy(body = transform(originalEncoding.free_fn.body)) + ) + (newInit, newFuncs) + } + } + +// private val encoding : ParsedEncoding = createModifiedEncoding() + +// private def createModifiedEncoding(): ParsedEncoding = { +// val original = InvariantEncodingParser.parse(encodingName) +// if (inputVars.isEmpty) { +// return original // No transformation needed, return early. +// } +// +// val argsToPrependStr = inputVars.map(_.name).mkString(", ") +// +// val inputArgs : List[Argument] = inputVars.map { ccVar => +// val typeStr = ccVar.typ match { +// case _: CCInvariantPointer => "PTR_TYPE" +// case _: CCHeapObject => "HEAP_TYPE" +// case CCInt => "int" +// case CCUInt => "unsigned int" +// case t => t.shortName +// } +// Argument(ccVar.name, typeStr) +// }.toList +// +// val newPredicates = original.predicates.map { pred => +// pred.copy(args = inputArgs ++ pred.args) +// } +// val predNamesToTransform = original.predicates.map(_.name).toSet +// +// def transformCalls(code: String): String = { +// transformPredicateCalls(code, predNamesToTransform, argsToPrependStr) +// } +// +// val newInitCode = original.init_code.map(transformCalls) +// val newReadFn = original.read_fn.copy(body = transformCalls(original.read_fn.body)) +// val newWriteFn = original.write_fn.copy(body = transformCalls(original.write_fn.body)) +// val newAllocFn = original.alloc_fn.copy(body = transformCalls(original.alloc_fn.body)) +// val newFreeFn = original.free_fn.copy(body = transformCalls(original.free_fn.body)) +// +// original.copy( +// predicates = newPredicates, +// init_code = newInitCode, +// read_fn = newReadFn, +// write_fn = newWriteFn, +// alloc_fn = newAllocFn, +// free_fn = newFreeFn +// ) +// } + + /** + * Uses regex to find and prepend arguments to predicate calls in a C code string. + */ + private def transformPredicateCalls(code : String, + predNames : Set[String], + argsToPrepend : Seq[CCVar]) : String = { + if (argsToPrepend.isEmpty || predNames.isEmpty) return code + + val predPattern = predNames.map(Pattern.quote).mkString("|") + val regex = s"($predPattern)\\s*\\(([^)]*)\\)".r + + regex.replaceAllIn(code, m => { + // m.group(1) is the predicate name, e.g., "$R" + // m.group(2) is the string of existing arguments, e.g., "$cnt, $last_cnt" + val predName = m.group(1) + val existingArgs = m.group(2).trim + + // We must escape the predicate name AND the existing arguments, + // as both are captured from the source and contain literal '$' characters. + val escapedPredName = Matcher.quoteReplacement(predName) + val escapedExistingArgs = Matcher.quoteReplacement(existingArgs) + + val argsToPrependString = argsToPrepend.map(_.name).mkString(", ") + if (existingArgs.isEmpty) { + s"$escapedPredName($argsToPrependString)" + } else { + s"$escapedPredName($argsToPrependString, $escapedExistingArgs)" + } + }) + } + + @tailrec + private def stringToCCType(typeStr : String, + forPointer : Boolean = false) + : CCType = typeStr match { + case "int" => CCInt + case "unsigned int" => CCUInt + case "void" => CCVoid + case "PTR_TYPE" if forPointer => + throw new TranslationException("PTR_TYPE cannot be nested.") + case "PTR_TYPE" => stringToCCType(originalEncoding.ptr_type, forPointer = true) + case "HEAP_TYPE" => CCHeapObject(context.heap) + case _ => throw new TranslationException( + s"Unsupported type in encoding file: $typeStr") + } + +override def requiredVars: Seq[VarSpec] = { + originalEncoding.global_decls.map { decl => + val ccType = stringToCCType(decl.`type`) + val initialValue = decl.initial_value match { + case Some(v) => ccType match { + case _: CCArithType => IExpression.i(IdealInt(v)) + case _ => throw new TranslationException(s"Initial value for type ${decl.`type`} not supported.") + } + case None => ccType.getNonDet + } + VarSpec(decl.name, ccType, isGlobal = true, initialValue) + } + } + + override def requiredPreds: Seq[PredSpec] = + originalEncoding.predicates.map { pred => + val originalArgs = pred.args.map(arg => + new CCVar(arg.name, None, stringToCCType(arg.`type`), AutoStorage)) + PredSpec(pred.name, inputVars ++ originalArgs) + } + + private def preprocess(code: String): String = { + val heapObjectReplacement = Matcher.quoteReplacement("$HeapObject") + code + .replaceAll("\\bPTR_TYPE\\b", originalEncoding.ptr_type) + .replaceAll("\\bHEAP_TYPE\\b", heapObjectReplacement) // <-- CORRECTED + .replaceAll("\\b(HAVOC_INT|HAVOC_HEAP|HEAP_DEFAULT)\\b", "_") + } + + override def getFunctionsToInject: Map[String, Function_def] = { + transformedFunctions.map { case (name, funcDef) => + val args = funcDef.args.map(a => s"${a.`type`} ${a.name}").mkString(", ") + val body = if (funcDef.body.trim.isEmpty) ";" else funcDef.body + val funString = s"${funcDef.return_type} $name($args) { $body }" + + val processedString = preprocess(funString) + val parsedFunc = ParseUtil.parseFunctionDefinition( + new StringReader(processedString)).asInstanceOf[Afunc] + + (name, parsedFunc.function_def_) + } + } + + override def getInitCodeToInject: Seq[String] = { + // First initialize the input variables added by tri-pp to nondet, + // this must happen first to fix their values, as other init statements + // might rely on their values (e.g., an assume/assert over the invariants). + val nonDetInits = inputVars.map(v => s"${v.name} = _;") + + val originalInitCode = { + val code = transformedInitCode + if (code.size == 1 && code.head.isEmpty) + Seq() + else + code.map { stmtString => + val terminatedStmt = if (stmtString.trim.endsWith(";")) stmtString else stmtString + ";" + preprocess(terminatedStmt) + } + } + + nonDetInits ++ originalInitCode + } + + override def apply(resources: Resources): HeapModel = + new InvariantEncodingsModel(context, scope, originalEncoding) +} + +class InvariantEncodingsModel(context : SymexContext, + scope : CCScope, + encoding : ParsedEncoding) extends HeapModel{ + private val readFnName = "$read" + private val writeFnName = "$write" + private val allocFnName = "$alloc" + private val freeFnName = "$free" + + private def getObjectType(p : CCExpr) : CCType = p.typ match { + case CCInvariantPointer(_, objT) => objT + case _ => throw new TranslationException("Expected an invariant heap pointer type.") + } + + override def read(p : CCExpr, s : Seq[CCExpr]) : HeapOperationResult = { + val getter = context.sortGetterMap( + p.typ.asInstanceOf[CCInvariantPointer].elementType.toSort) + FunctionCallWithGetter( + functionName = readFnName, + args = Seq(p), + resultType = getObjectType(p), + getter = getter, + sourceInfo = p.srcInfo + ) + } + + override def write(p : CCExpr, o : CCExpr, s : Seq[CCExpr]) + : HeapOperationResult = { + FunctionCall( + functionName = writeFnName, + args = Seq(p, o), + resultType = CCVoid, + sourceInfo = p.srcInfo + ) + } + + override def alloc(o : CCTerm, s : Seq[CCExpr]) : HeapOperationResult = { + FunctionCall( + functionName = allocFnName, + args = Seq(o), + resultType = CCInvariantPointer(context.heap, o.typ), + sourceInfo = o.srcInfo + ) + } + + override def free(p : CCExpr, s : Seq[CCExpr]) : HeapOperationResult = { + FunctionCall( + functionName = freeFnName, + args = Seq(p), + resultType = CCVoid, + sourceInfo = p.srcInfo + ) + } + +// In class InvariantEncodingsModel... + + override def write(rootPointer : CCTerm, + lhs : IFunApp, + rhs : CCExpr, + s : Seq[CCExpr]) : HeapOperationResult = { + rootPointer.typ match { + case typ : CCInvariantPointer => + typ.elementType match { + case structType: CCStruct => + // `lhs` is the term for the field, e.g., `left_selector(struct_getter(...))` + val fieldSelector = lhs.fun + val oldStructObjectTerm = lhs.args.head // The term for the old struct object. + + val constructor = structType.ctor + val allSelectors = structType.sels + val updatedSelectorIndex = allSelectors.indexWhere(p => p._1 == fieldSelector) + + if (updatedSelectorIndex == -1) { + throw new TranslationException(s"Internal error: could not find selector ${ + fieldSelector.name} in struct ${structType.shortName}") + } + + val constructorArgs = for (i <- allSelectors.indices) yield { + if (i == updatedSelectorIndex) + rhs.toTerm + else + allSelectors(i)._1(oldStructObjectTerm) + } + + val newStructTerm = constructor(constructorArgs: _*) + val wrapper = context.sortWrapperMap.getOrElse(structType.toSort, + throw new TranslationException(s"No heap wrapper for struct ${structType.shortName}")) + val newHeapObject = CCTerm(wrapper(newStructTerm), CCHeapObject(context.heap), rhs.srcInfo) + + FunctionCall( + functionName = writeFnName, + args = Seq(rootPointer, newHeapObject), + resultType = CCVoid, + sourceInfo = rhs.srcInfo) + + case primitiveType => + // `lhs` is the term for the old value, e.g., `getInt(...)`. + // `rhs` is the term for the new value, e.g., `42`. + + val wrapper = context.sortWrapperMap.getOrElse(primitiveType.toSort, + throw new TranslationException(s"No heap wrapper for primitive type ${primitiveType}")) + + val newHeapObject = CCTerm(wrapper(rhs.toTerm), CCHeapObject(context.heap), rhs.srcInfo) + + FunctionCall( + functionName = writeFnName, + args = Seq(rootPointer, newHeapObject), + resultType = CCVoid, + sourceInfo = rhs.srcInfo + ) + } + + case _ => + throw new TranslationException( + "Field write attempted with a non-invariant-model pointer type.") + } + } + + override def getExitAssertions(exitPreds : Seq[CCPredicate]) = Seq() + + // ACSL stuff, these should be refactored to not require a heap term + override def getACSLPreStateHeapTerm( + acslContext : ACSLTranslator.FunctionContext) : ITerm = ??? + override def getACSLPostStateHeapTerm( + acslContext : ACSLTranslator.FunctionContext) : ITerm = ??? + + override def batchAlloc(o : CCTerm, + size : ITerm, + loc : ArrayLocation.Value, + s : Seq[CCExpr]) : HeapOperationResult = { + ??? + } + + override def arrayRead(arr : CCExpr, + index : CCExpr, + s : Seq[CCExpr]) : HeapOperationResult = { + ??? + } + + override def allocAndInitArray(arrayPtr : CCHeapArrayPointer, + size : ITerm, + initializers : mutable.Stack[ITerm], + s : Seq[CCExpr]) : HeapOperationResult = { + ??? + } + + override def declUninitializedArray(arrayTyp : CCHeapArrayPointer, + size : Option[ITerm], + isGlobalOrStatic : Boolean, + s : Seq[CCExpr]) : HeapOperationResult = { + ??? + } +} diff --git a/src/tricera/concurrency/heap/encodings/RW-fun.yml b/src/tricera/concurrency/heap/encodings/RW-fun.yml new file mode 100644 index 00000000..6ae126e7 --- /dev/null +++ b/src/tricera/concurrency/heap/encodings/RW-fun.yml @@ -0,0 +1,68 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + #- "assert($W(0, $HEAP_TYPE_DEFAULT()));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: [{ name: "p", type: "PTR_TYPE" }] + body: | + HEAP_TYPE result; + int t; + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt)); + t = $last_cnt; + } else { + t = HAVOC_INT; + assume($R($cnt, t)); + } + result = HAVOC_HEAP; + assume($W(t, result)); + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: [{ name: "e", type: "HEAP_TYPE" }] + body: | + int p = ++$allocCtr; + return p; + +free_fn: + return_type: "void" + args: [{ name: "p", type: "PTR_TYPE" }] + body: "" \ No newline at end of file diff --git a/src/tricera/concurrency/heap/encodings/RW.yml b/src/tricera/concurrency/heap/encodings/RW.yml new file mode 100644 index 00000000..f52c52a8 --- /dev/null +++ b/src/tricera/concurrency/heap/encodings/RW.yml @@ -0,0 +1,70 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + +# Initialisation code injected to the start of entry function +init_code: + - "assert($W(0, $HEAP_TYPE_DEFAULT()));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: [{ name: "p", type: "PTR_TYPE" }] + body: | + HEAP_TYPE result; + int t; + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt)); + t = $last_cnt; + } else { + t = HAVOC_INT; + assume($R($cnt, t)); + } + result = HAVOC_HEAP; + assume($W(t, result)); + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: [{ name: "e", type: "HEAP_TYPE" }] + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } + return p; + +free_fn: + return_type: "void" + args: [{ name: "p", type: "PTR_TYPE" }] + body: "" \ No newline at end of file diff --git a/src/tricera/params/TriCeraParameters.scala b/src/tricera/params/TriCeraParameters.scala index 2236da0a..e32348cc 100644 --- a/src/tricera/params/TriCeraParameters.scala +++ b/src/tricera/params/TriCeraParameters.scala @@ -96,6 +96,7 @@ class TriCeraParameters extends GlobalParameters { var splitProperties : Boolean = false var useArraysForHeap : Boolean = false + var invEncoding : Option[String] = None var devMode : Boolean = false var printDebugMessages : Boolean = false @@ -157,6 +158,11 @@ class TriCeraParameters extends GlobalParameters { case "-mathArrays" :: rest => useArraysForHeap = true; parseArgs(rest) + case invEnc :: rest if (invEnc.startsWith("-invEncoding")) => + val parts = invEnc.split(":", 2) + invEncoding = Some(if (parts.length > 1) parts(1) else "RW") + parseArgs(rest) + case "-abstract" :: rest => templateBasedInterpolation = true; parseArgs(rest) case "-abstractPO" :: rest => { portfolio = GlobalParameters.Portfolio.Template @@ -315,7 +321,8 @@ class TriCeraParameters extends GlobalParameters { |-h, --help Show this information |-v, --version Print version number |-arithMode:t Integer semantics: math (default), ilp32, lp64, llp64 - |-mathArrays:t Use mathematical arrays for modeling program arrays (ignores memsafety properties) + |-mathArrays Use mathematical arrays for modeling program arrays (ignores memsafety properties) + |-invEncoding[:t] Use an invariant-based heap encoding, where t is the encoding type (R, RW (default)) |-t:time Set timeout (in seconds) |-cex Show textual counterexamples |-dotCEX Output counterexample in dot format diff --git a/src/tricera/postprocessor/ResultConverter.scala b/src/tricera/postprocessor/ResultConverter.scala index fe73f55b..0e406500 100644 --- a/src/tricera/postprocessor/ResultConverter.scala +++ b/src/tricera/postprocessor/ResultConverter.scala @@ -31,17 +31,10 @@ package tricera.postprocessor import ap.parser.{IConstant, IFormula, VariableSubstVisitor} import lazabs.horn.preprocessor.HornPreprocessor - - -import tricera.{ - CounterExample, Empty, - FunctionInvariants, HeapInfo, Invariant, Literals, LoopInvariant, - PostCondition, PreCondition, ProgVarProxy, Result, Solution} +import tricera._ import tricera.concurrency.CCReader -import tricera.concurrency.ccreader.{ - CCVar, CCHeapPointer, CCHeapArrayPointer, CCStackPointer} +import tricera.concurrency.ccreader._ import tricera.Util.SourceInfo -import tricera.Util.printlnDebug object ResultConverter { @@ -117,7 +110,7 @@ object ResultConverter { } def toLoopInvariant( - inv: (CCReader.CCPredicate, SourceInfo), + inv: (CCPredicate, SourceInfo), solution: SolutionProcessor.Solution, heapInfo: Option[HeapInfo], paramNames: Seq[String]) @@ -133,7 +126,7 @@ object ResultConverter { heapInfo: Option[HeapInfo], ctx: CCReader.FunctionContext, solution: SolutionProcessor.Solution, - loopInvs: Map[String,(CCReader.CCPredicate, SourceInfo)], + loopInvs: Map[String,(CCPredicate, SourceInfo)], annotatedFuncs: HashSet[String]) = { val paramNames = ctx.acslContext.getParams.map(v => v.name) From 3f966749e3a96801592dffa3c5ff46b672f8819b Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 11 Sep 2025 14:39:30 +0200 Subject: [PATCH 02/29] Fixes several issues within the invariant encoding --- src/tricera/concurrency/CCReader.scala | 47 +++----- src/tricera/concurrency/Symex.scala | 110 +++++++++++------- src/tricera/concurrency/ccreader/CCType.scala | 32 ++--- .../heap/InvariantEncodingsModel.scala | 23 ++-- .../concurrency/heap/encodings/RW-fun.yml | 13 ++- src/tricera/concurrency/heap/encodings/RW.yml | 3 +- src/tricera/params/TriCeraParameters.scala | 1 + 7 files changed, 115 insertions(+), 114 deletions(-) diff --git a/src/tricera/concurrency/CCReader.scala b/src/tricera/concurrency/CCReader.scala index 606c1797..5ae9ff4b 100644 --- a/src/tricera/concurrency/CCReader.scala +++ b/src/tricera/concurrency/CCReader.scala @@ -978,7 +978,6 @@ class CCReader private (prog : Program, def getTypOfPointer(t: CCType): CCType = t match { case p : CCHeapPointer => p.typ - case p : CCInvariantPointer => p.elementType case t => t } @@ -1497,19 +1496,18 @@ class CCReader private (prog : Program, val res = values.eval(actualInitExp)( values.EvalSettings(), evalContext) val (actualLhsVar, actualRes) = lhsVar.typ match { - case _ : CCHeapPointer if res.typ.isInstanceOf[CCArithType] => + case _ : CCHeapPointer if res.typ.isInstanceOf[CCArithType] + && TriCeraParameters.get.invEncoding.isEmpty => if(res.toTerm.asInstanceOf[IIntLit].value.intValue == 0) (lhsVar, CCTerm.fromTerm(heap.nullAddr(), varDec.typ, srcInfo)) else throw new TranslationException("Pointer arithmetic is not " + "allowed, and the only possible initialization value for " + "pointers is 0 (NULL)") - case _ : CCHeapPointer | _ : CCInvariantPointer - if res.typ.isInstanceOf[CCHeapArrayPointer] => + case _ : CCHeapPointer if res.typ.isInstanceOf[CCHeapArrayPointer] => // lhs is actually a heap array pointer (new CCVar(lhsVar.name, lhsVar.srcInfo, res.typ, lhsVar.storage), res) - case _ : CCHeapPointer | _ : CCInvariantPointer - if res.typ.isInstanceOf[CCStackPointer] => + case _ : CCHeapPointer if res.typ.isInstanceOf[CCStackPointer] => // lhs is actually a stack pointer (new CCVar(lhsVar.name, lhsVar.srcInfo, res.typ, lhsVar.storage), res) @@ -2180,12 +2178,8 @@ class CCReader private (prog : Program, scope.LocalVars popFrame } - private def createHeapPointer(objectType : CCType) : CCType = { - if (TriCeraParameters.get.invEncoding.isDefined) - CCInvariantPointer(heap, objectType) - else + private def createHeapPointer(objectType : CCType) : CCType = CCHeapPointer(heap, objectType) - } private def createHeapPointer(decl : BeginPointer, typ : CCType) : CCType = createHeapPointerHelper(decl.pointer_, typ) @@ -2533,7 +2527,6 @@ class CCReader private (prog : Program, override def getTypOfPointer(t: CCType): CCType = t match { case p : CCHeapPointer => p.typ - case p : CCInvariantPointer => p.elementType case t => t } override def isHeapEnabled: Boolean = modelHeap @@ -2625,7 +2618,6 @@ class CCReader private (prog : Program, override def getTypOfPointer(t : CCType) : CCType = t match { case p : CCHeapPointer => p.typ - case p : CCInvariantPointer => p.elementType case _ => t } override def isHeapEnabled : Boolean = modelHeap @@ -2709,26 +2701,6 @@ class CCReader private (prog : Program, val stmsIt = ap.util.PeekIterator(compound.liststm_.iterator) -// var currentStatePred = newPred(Nil, Some(getSourceInfo(compound.liststm_.head))) -// output(addRichClause( -// Clause(atom(currentStatePred, scope.allVarInits take currentStatePred.arity), -// List(), globalPreconditions), currentStatePred.srcInfo)) - -// if (modelHeap) { -// val initCodeStrs = heapModelFactory.getInitCodeToInject -// if (initCodeStrs.nonEmpty) { -// val initStmts = initCodeStrs.map { code => -// ParseUtil.parseStatement(new java.io.StringReader(code)) -// } -// -// for (stmt <- initStmts) { -// val nextStatePred = newPred(Nil, currentStatePred.srcInfo) -// translate(stmt, currentStatePred, nextStatePred) -// currentStatePred = nextStatePred // The output of one becomes the input to the next. -// } -// } -// } - // merge simple side-effect-free declarations with // the entry clause var entryPred = newPred(Nil, @@ -2747,7 +2719,14 @@ class CCReader private (prog : Program, } output(addRichClause(entryClause, entryPred.srcInfo)) - translateStmSeq(stmsIt, entryPred, exit) + val initStmts : Iterator[Stm] = + if (modelHeap) + heapModelFactory.getInitCodeToInject.iterator.map { code => + ParseUtil.parseStatement(new java.io.StringReader(code)) + } + else Iterator.empty + + translateStmSeq(ap.util.PeekIterator(initStmts ++ stmsIt), entryPred, exit) scope.LocalVars popFrame } } diff --git a/src/tricera/concurrency/Symex.scala b/src/tricera/concurrency/Symex.scala index 1f7c6713..b24ce8be 100644 --- a/src/tricera/concurrency/Symex.scala +++ b/src/tricera/concurrency/Symex.scala @@ -46,6 +46,7 @@ import tricera.params.TriCeraParameters import tricera.properties import IExpression.toFunApplier import tricera.concurrency.ccreader.CCBinaryExpressions.BinaryOperators +import tricera.concurrency.heap.HeapModel.{HeapOperationResult, SimpleResult} import tricera.concurrency.heap.HeapModel import scala.collection.JavaConversions.{asScalaBuffer, asScalaIterator} @@ -328,11 +329,22 @@ class Symex private (context : SymexContext, private def isHeapPointer(t : CCTerm) = t.typ match { case _ : CCHeapPointer => true - case _ : CCInvariantPointer => true + case _ : CCHeapArrayPointer => true + case _ => false + } + private def isHeapPointer(exp : Exp, enclosingFunction : String) = + getVar(asLValue(exp), enclosingFunction).typ match { + case _ : CCHeapPointer => true case _ : CCHeapArrayPointer => true case _ => false } + private def isIndirection(exp : Exp) : Boolean = + exp match { + case exp : Epreop => exp.unary_operator_.isInstanceOf[Indirection] + case _ => false + } + private def getPointerType(ind : Int) = { getValue(ind, false).typ match { case ptrType : CCStackPointer => ptrType @@ -467,18 +479,39 @@ class Symex private (context : SymexContext, } /** - * Represents the structural category of an LHS expression. + * Represents the target of an assignment operation. Each implementation + * encapsulates the logic for writing a value to a specific kind of + * program location (simple variable, struct field, etc.). + * Examples: + * "s.f1.f2" -> StructField(base="s", path=["f1", "f2"]) + * "p->f" -> StructField(base="p", path=["f"]) + * "(*p).f" -> StructField(base="p", path=["f"]) + * "*p" -> PointerDeref(base="p") + * "a[i]" -> ArrayElement(base="a", index="i") + * "a[i].f" -> ArrayStructField(base="a", index="i", path=["f"]) */ - private sealed trait LHSInfo { - /** The original sub-expression that this LHSInfo was created from. */ + private sealed trait AssignmentTarget { + /** The original sub-expression that this AssignmentTarget was created from. */ def originalExp : Exp /** Performs the state update for this type of LHS. */ def update(newValue : CCTerm) - (implicit symex : Symex, evalSettings : EvalSettings, evalCtx : EvalContext) : Unit + (implicit symex : Symex, + evalSettings : EvalSettings, + evalCtx : EvalContext) : Unit + + /** Same as update, but writes a non-deterministic value and also returns that value. */ + def updateNonDet(implicit symex : Symex, + evalSettings : EvalSettings, + evalCtx : EvalContext) : CCTerm = { + val lhsVal = eval(originalExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) + val nondetTerm = CCTerm.fromTerm(lhsVal.typ.getNonDet, lhsVal.typ, lhsVal.srcInfo) + this.update(nondetTerm) + nondetTerm + } } - private case class SimpleVar(exp : Exp) extends LHSInfo { + private case class SimpleVar(exp : Exp) extends AssignmentTarget { override def originalExp : Exp = exp override def update(newValue : CCTerm) (implicit symex : Symex, @@ -523,7 +556,7 @@ class Symex private (context : SymexContext, private case class StructField(baseExp : Exp, path : List[String], - originalExp : Exp) extends LHSInfo { + originalExp : Exp) extends AssignmentTarget { override def update(newValue : CCTerm) (implicit symex : Symex, evalSettings : EvalSettings, @@ -566,7 +599,7 @@ class Symex private (context : SymexContext, private case class ArrayElement(arrayBase : Exp, index : Exp, - originalExp : Exp) extends LHSInfo { + originalExp : Exp) extends AssignmentTarget { override def update(newValue : CCTerm) (implicit symex : Symex, evalSettings : EvalSettings, @@ -597,7 +630,7 @@ class Symex private (context : SymexContext, private case class ArrayStructField(arrayBase : Exp, index : Exp, path : List[String], - originalExp : Exp) extends LHSInfo { + originalExp : Exp) extends AssignmentTarget { override def update(newValue : CCTerm) (implicit symex : Symex, evalSettings : EvalSettings, @@ -634,7 +667,7 @@ class Symex private (context : SymexContext, } private case class PointerDeref(pointerExp : Exp, - originalExp : Exp) extends LHSInfo { + originalExp : Exp) extends AssignmentTarget { override def update(newValue : CCTerm) (implicit symex : Symex, evalSettings : EvalSettings, @@ -651,25 +684,13 @@ class Symex private (context : SymexContext, } } - /** - * Classifies an LHS expression into one of several structural categories (LHSInfo) - * *before* evaluation, which could have unwanted side effects. - * - * Examples: - * "s.f1.f2" -> StructField(base="s", path=["f1", "f2"]) - * "p->f" -> StructField(base="p", path=["f"]) - * "(*p).f" -> StructField(base="p", path=["f"]) - * "*p" -> PointerDeref(base="p") - * "a[i]" -> ArrayElement(base="a", index="i") - * "a[i].f" -> ArrayStructField(base="a", index="i", path=["f"]) - */ - private def deconstructLHS(exp : Exp) : LHSInfo = exp match { + private def getAssignmentTarget(exp : Exp) : AssignmentTarget = exp match { case e: Earray => ArrayElement(e.exp_1, e.exp_2, e) case e: Epoint => StructField(e.exp_, List(e.cident_), e) case e: Eselect => - deconstructLHS(e.exp_) match { + getAssignmentTarget(e.exp_) match { case StructField(base, path, _) => StructField(base, path :+ e.cident_, e) case SimpleVar(base) => StructField(base, List(e.cident_), e) case PointerDeref(base, _) => StructField(base, List(e.cident_), e) @@ -752,7 +773,7 @@ class Symex private (context : SymexContext, args.foreach(pushVal(_)) outputClause(srcInfo) handleFunction(name, initPred, args.size) - popVal.asInstanceOf[CCTerm] + popVal } private def processHeapResult(result : HeapModel.HeapOperationResult) @@ -829,27 +850,30 @@ class Symex private (context : SymexContext, setValue(asLValue(exp.exp_1), context.translateDurationValue(topVal), evalCtx.enclosingFunctionName) case exp : Eassign if exp.assignment_op_.isInstanceOf[Assign] => // Simple assignment: '=' - val valueToAssign = { - evalHelp(exp.exp_2) - maybeOutputClause(Some(getSourceInfo(exp))) - popVal + implicit val symex : Symex = this + exp.exp_2 match { + case _ : Enondet => + pushVal (getAssignmentTarget(exp.exp_1).updateNonDet) + case _ => + evalHelp(exp.exp_2) + maybeOutputClause(Some(getSourceInfo(exp))) + getAssignmentTarget(exp.exp_1).update(topVal) } - pushVal(valueToAssign) - implicit val symex: Symex = this - deconstructLHS(exp.exp_1).update(valueToAssign) - case exp : Eassign => // Compound assignment: '+=', '-=', etc. // IMPORTANT: Compound assignments are non-atomic so must be handled // separately from simple assignments. - val lhsInfo = deconstructLHS(exp.exp_1) - evalHelp(exp.exp_1) val lhsE = topVal maybeOutputClause(Some(getSourceInfo(exp))) - evalHelp(exp.exp_2) - maybeOutputClause(Some(getSourceInfo(exp))) - val rhsE = popVal + val rhsE = exp.exp_2 match { + case _ : Enondet => CCTerm.fromTerm( + lhsE.typ.getNonDet, lhsE.typ, Some(getSourceInfo(exp.exp_2))) + case _ => + evalHelp(exp.exp_2) + maybeOutputClause(Some(getSourceInfo(exp))) + popVal + } popVal if (lhsE.typ == CCClock || lhsE.typ == CCDuration) @@ -895,7 +919,7 @@ class Symex private (context : SymexContext, pushVal(valueToAssign) implicit val symex: Symex = this - deconstructLHS(exp.exp_1).update(valueToAssign) + getAssignmentTarget(exp.exp_1).update(valueToAssign) case exp : Econdition => // exp_1 ? exp_2 : exp_3 val srcInfo = Some(getSourceInfo(exp)) @@ -1049,7 +1073,7 @@ class Symex private (context : SymexContext, val newValue = popVal mapTerm (_ + op) pushVal(newValue) implicit val symex: Symex = this - deconstructLHS(expToUpdate).update(newValue) + getAssignmentTarget(expToUpdate).update(newValue) case _ : Epostinc | _ : Epostdec => val (expToUpdate, op) = exp match { @@ -1063,7 +1087,7 @@ class Symex private (context : SymexContext, val newValue = oldValue mapTerm (_ + op) implicit val symex: Symex = this - deconstructLHS(expToUpdate).update(newValue) + getAssignmentTarget(expToUpdate).update(newValue) case exp : Epreop => val srcInfo = Some(getSourceInfo(exp)) @@ -1128,7 +1152,7 @@ class Symex private (context : SymexContext, val v = popVal v.typ match { // todo: type checking? case ptr : CCStackPointer => pushVal(getPointedTerm(ptr)) - case _ : CCHeapPointer | _ : CCInvariantPointer => + case _ : CCHeapPointer => if(evalCtx.evaluatingLHS) pushVal(v) else pushVal(processHeapResult(heapModel.read(v, values)).get) case arr : CCHeapArrayPointer => @@ -1441,7 +1465,7 @@ class Symex private (context : SymexContext, val rawFieldName = exp.cident_ val term = subexpr.typ match { case ptrType : CCStackPointer => getPointedTerm(ptrType) - case _ : CCHeapPointer | _ : CCInvariantPointer => //todo: error here if field is null + case _ : CCHeapPointer => //todo: error here if field is null processHeapResult(heapModel.read(subexpr, values)).get case _ => throw new TranslationException( "Trying to access field '->" + rawFieldName + "' of non pointer.") diff --git a/src/tricera/concurrency/ccreader/CCType.scala b/src/tricera/concurrency/ccreader/CCType.scala index 46504eb7..f479b828 100644 --- a/src/tricera/concurrency/ccreader/CCType.scala +++ b/src/tricera/concurrency/ccreader/CCType.scala @@ -38,6 +38,7 @@ import ap.theories.bitvectors.ModuloArithmetic._ import ap.types.{MonoSortedIFunction, SortedConstantTerm} import CCExceptions._ import tricera.Util.{SourceInfo, getLineString, getLineStringShort} +import tricera.params.TriCeraParameters import scala.collection.mutable.{Stack, HashMap => MHashMap} @@ -57,8 +58,10 @@ abstract sealed class CCType { case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort + case CCHeapArrayPointer(_, _, _) + if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty + => Sort.Integer case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort - case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -81,8 +84,10 @@ abstract sealed class CCType { case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCArray(_, _, _, s, _) => s.sort + case CCHeapArrayPointer(_, _, _) + if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty + => Sort.Integer case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort - case CCInvariantPointer(_, _) => Sort.Integer case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort case CCIntEnum(_, _) => Sort.Integer @@ -103,8 +108,10 @@ abstract sealed class CCType { case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort + case CCHeapArrayPointer(_, _, _) + if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty + => Sort.Integer case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort - case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -126,8 +133,10 @@ abstract sealed class CCType { case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort + case CCHeapArrayPointer(_, _, _) + if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty + => Sort.Integer case CCHeapArrayPointer(heap, _, _) => heap.addressRangeSort - case CCInvariantPointer(_, _) => Sort.Integer case CCArray(_, _, _, s, _) => s.sort case CCStruct(ctor, _) => ctor.resSort case CCStructField(n, s) => s(n).ctor.resSort @@ -173,9 +182,11 @@ abstract sealed class CCType { * possible to do in this class. */ private def castIsAllowed(newType : CCType) : Boolean = { + val isInvariantEncoding = TriCeraParameters.get.invEncoding.nonEmpty this match { - case typ if typ.isArithType && newType.isPointerType - || typ.isPointerType && newType.isArithType => false + case typ if !isInvariantEncoding && + (typ.isArithType && newType.isPointerType + || typ.isPointerType && newType.isArithType) => false case _ => true } } @@ -304,11 +315,6 @@ case class CCHeapObject(heap : Heap) extends CCType { def shortName = toString } -case class CCInvariantPointer(heap : Heap, elementType : CCType) extends CCType { - override def toString: String = s"inv_ptr<${elementType.toString}>" - override def shortName = toString -} - /** * typ is either an index into structInfos (if ADT type), or a CCType * ptrDepth 0 => not a pointer, 1 => *, 2 => **, ... */ @@ -440,10 +446,6 @@ case class CCStruct(ctor : MonoSortedIFunction, throw new TranslationException( "Heap arrays inside structs are" + "not supported.") - ??? - if (values.isEmpty) - h.addressRangeCtor(h.nullAddr(), IIntLit(1)) - else values.pop() case CCArray(elemTyp, sizeExpr, Some(arraySize), diff --git a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala index 9ce7683a..8a882f87 100644 --- a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -30,18 +30,13 @@ package tricera.concurrency.heap import ap.basetypes.IdealInt -import ap.parser.IExpression.toFunApplier -import ap.parser.{IExpression, IFunApp, IFunction, ITerm} -import ap.types.MonoSortedIFunction +import ap.parser.{IExpression, ITerm} import tricera.acsl.ACSLTranslator import tricera.concurrency.ccreader.CCExceptions.TranslationException import tricera.concurrency.ccreader._ import tricera.concurrency.concurrent_c.Absyn.{Afunc, Function_def} import tricera.concurrency.heap.HeapModel._ -import tricera.concurrency.heap.InvariantEncodingParser.{ - Argument, - ParsedEncoding -} +import tricera.concurrency.heap.InvariantEncodingParser.ParsedEncoding import tricera.concurrency.{ParseUtil, SymexContext} import tricera.params.TriCeraParameters @@ -209,18 +204,13 @@ class InvariantEncodingsModel(context : SymexContext, private val allocFnName = "$alloc" private val freeFnName = "$free" - private def getObjectType(p : CCTerm) : CCType = p.typ match { - case CCInvariantPointer(_, objT) => objT - case _ => throw new TranslationException("Expected an invariant heap pointer type.") - } - override def read(p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { - val getter = context.sortGetterMap( - p.typ.asInstanceOf[CCInvariantPointer].elementType.toSort) + val resultType = p.typ.asInstanceOf[CCHeapPointer].typ + val getter = context.sortGetterMap(resultType.toSort) FunctionCallWithGetter( functionName = readFnName, args = Seq(p), - resultType = getObjectType(p), + resultType = resultType, getter = getter, sourceInfo = p.srcInfo ) @@ -240,7 +230,7 @@ class InvariantEncodingsModel(context : SymexContext, FunctionCall( functionName = allocFnName, args = Seq(o), - resultType = CCInvariantPointer(context.heap, o.typ), + resultType = CCHeapPointer(context.heap, o.typ), sourceInfo = o.srcInfo ) } @@ -288,6 +278,7 @@ class InvariantEncodingsModel(context : SymexContext, s : Seq[CCTerm]) : HeapOperationResult = { ??? } + override def arrayWrite(arr : CCTerm, index : CCTerm, value : CCTerm, diff --git a/src/tricera/concurrency/heap/encodings/RW-fun.yml b/src/tricera/concurrency/heap/encodings/RW-fun.yml index 6ae126e7..90608d0b 100644 --- a/src/tricera/concurrency/heap/encodings/RW-fun.yml +++ b/src/tricera/concurrency/heap/encodings/RW-fun.yml @@ -3,10 +3,10 @@ ptr_type: "int" # Global variables global_decls: - - { name: "$allocCtr", type: "int", initial_value: "0" } - - { name: "$cnt", type: "unsigned int", initial_value: "0" } - - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } - - { name: "$p_g", type: "int", initial_value: null } + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value # Uninterpreted predicates predicates: @@ -60,9 +60,12 @@ alloc_fn: args: [{ name: "e", type: "HEAP_TYPE" }] body: | int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } return p; free_fn: return_type: "void" args: [{ name: "p", type: "PTR_TYPE" }] - body: "" \ No newline at end of file + body: "" diff --git a/src/tricera/concurrency/heap/encodings/RW.yml b/src/tricera/concurrency/heap/encodings/RW.yml index f52c52a8..f0d88fa9 100644 --- a/src/tricera/concurrency/heap/encodings/RW.yml +++ b/src/tricera/concurrency/heap/encodings/RW.yml @@ -21,6 +21,7 @@ predicates: # Initialisation code injected to the start of entry function init_code: + - "$p_g = _;" - "assert($W(0, $HEAP_TYPE_DEFAULT()));" # Heap operations @@ -67,4 +68,4 @@ alloc_fn: free_fn: return_type: "void" args: [{ name: "p", type: "PTR_TYPE" }] - body: "" \ No newline at end of file + body: "" diff --git a/src/tricera/params/TriCeraParameters.scala b/src/tricera/params/TriCeraParameters.scala index e32348cc..92b02b8f 100644 --- a/src/tricera/params/TriCeraParameters.scala +++ b/src/tricera/params/TriCeraParameters.scala @@ -161,6 +161,7 @@ class TriCeraParameters extends GlobalParameters { case invEnc :: rest if (invEnc.startsWith("-invEncoding")) => val parts = invEnc.split(":", 2) invEncoding = Some(if (parts.length > 1) parts(1) else "RW") + useArraysForHeap = true parseArgs(rest) case "-abstract" :: rest => templateBasedInterpolation = true; parseArgs(rest) From 232ce0cca8bd3dbc7fbf217c085ee8fd9969226e Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Mon, 15 Sep 2025 13:14:10 +0200 Subject: [PATCH 03/29] Bug fixes in the invariant encoding --- src/tricera/Main.scala | 4 ++- src/tricera/concurrency/CCReader.scala | 8 ++++-- src/tricera/concurrency/Symex.scala | 28 +++++++++++-------- src/tricera/concurrency/ccreader/CCTerm.scala | 6 +++- src/tricera/concurrency/ccreader/CCType.scala | 17 ++++++++++- .../heap/InvariantEncodingsModel.scala | 9 ++++-- 6 files changed, 53 insertions(+), 19 deletions(-) diff --git a/src/tricera/Main.scala b/src/tricera/Main.scala index af8cc612..dc3dbf9f 100644 --- a/src/tricera/Main.scala +++ b/src/tricera/Main.scala @@ -407,7 +407,9 @@ class Main (args: Array[String]) { import ap.parser.{IBinJunctor, LineariseVisitor, Transform2NNF} import ap.parser.IExpression._ val sameNamedTerms = - c.constants.groupBy(_.name).filter(_._2.size > 1) + c.constants.groupBy(_.name).filter{ + case (name, constants) => constants.size > 1 && name != "_" + } val conjuncts = LineariseVisitor(Transform2NNF(c.constraint), IBinJunctor.And) diff --git a/src/tricera/concurrency/CCReader.scala b/src/tricera/concurrency/CCReader.scala index 5ae9ff4b..444d9418 100644 --- a/src/tricera/concurrency/CCReader.scala +++ b/src/tricera/concurrency/CCReader.scala @@ -612,8 +612,12 @@ class CCReader private (prog : Program, for(FieldInfo(rawFieldName, fieldType, ptrDepth) <- struct.fieldInfos) yield (CCStruct.rawToFullFieldName(struct.name, rawFieldName), - if (ptrDepth > 0) Heap.AddressCtor - else { fieldType match { + if (ptrDepth > 0) { + if (TriCeraParameters.get.invEncoding.nonEmpty) + HeapObj.OtherSort(Sort.Integer) + else + Heap.AddressCtor + } else { fieldType match { case Left(ind) => HeapObj.ADTSort(ind + 1) case Right(typ) => typ match { diff --git a/src/tricera/concurrency/Symex.scala b/src/tricera/concurrency/Symex.scala index b24ce8be..b3ac08dd 100644 --- a/src/tricera/concurrency/Symex.scala +++ b/src/tricera/concurrency/Symex.scala @@ -71,6 +71,7 @@ class Symex private (context : SymexContext, private var guard : IFormula = true private var touchedGlobalState : Boolean = false private var assignedToStruct : Boolean = false + private var calledFunction : Boolean = false private implicit def toRichTerm(expr : CCTerm) : Object{def mapTerm(m:ITerm => ITerm) : CCTerm} = new Object { @@ -117,7 +118,8 @@ class Symex private (context : SymexContext, } private def maybeOutputClause(srcInfo : Option[SourceInfo]) : Unit = - if (((!context.atomicMode && touchedGlobalState) || assignedToStruct)) + if ((!context.atomicMode && touchedGlobalState) + || assignedToStruct || calledFunction) outputClause(srcInfo) private def pushVal(v : CCTerm, varName : String = "") = { @@ -203,6 +205,7 @@ class Symex private (context : SymexContext, guard = true touchedGlobalState = false assignedToStruct = false + calledFunction = false for ((e, i) <- scope.allFormalCCTerms.iterator.zipWithIndex) { values = values.updated(i, e) } @@ -560,8 +563,7 @@ class Symex private (context : SymexContext, override def update(newValue : CCTerm) (implicit symex : Symex, evalSettings : EvalSettings, - evalCtx : EvalContext): Unit = { - assignedToStruct = true + evalCtx : EvalContext) : Unit = { val baseLHSVal = eval(baseExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) baseLHSVal.typ match { case ptr : CCHeapPointer => // p->f @@ -571,10 +573,13 @@ class Symex private (context : SymexContext, case _ => throw new TranslationException("Pointer does not point to a struct type.") } val fieldAddress = getFieldAddress(structType, path) - val readResult = processHeapResult(heapModel.read(baseLHSVal, values)).get - val oldStructTerm = readResult.toTerm - val newStructTerm = structType.setFieldTerm(oldStructTerm, newValue.toTerm, fieldAddress) - val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue.srcInfo) + pushVal(newValue) + pushVal(processHeapResult(heapModel.read(baseLHSVal, values)).get) + maybeOutputClause(baseLHSVal.srcInfo) + val oldStructTerm = popVal.toTerm + val newValueInClause = popVal + val newStructTerm = structType.setFieldTerm(oldStructTerm, newValueInClause.toTerm, fieldAddress) + val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValueInClause.srcInfo) processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values)) case structType : CCStruct => // s.f @@ -584,6 +589,7 @@ class Symex private (context : SymexContext, val newStructTerm = structType.setFieldTerm(oldStructTerm, newValue.toTerm, fieldAddress) val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue.srcInfo) setValue(varName, newStructObj, evalCtx.enclosingFunctionName) + assignedToStruct = true case _ : CCStackPointer => // ps->f val lhsVal = eval(originalExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) @@ -773,6 +779,7 @@ class Symex private (context : SymexContext, args.foreach(pushVal(_)) outputClause(srcInfo) handleFunction(name, initPred, args.size) + calledFunction = true popVal } @@ -864,8 +871,8 @@ class Symex private (context : SymexContext, // IMPORTANT: Compound assignments are non-atomic so must be handled // separately from simple assignments. evalHelp(exp.exp_1) - val lhsE = topVal maybeOutputClause(Some(getSourceInfo(exp))) + val lhsE = topVal val rhsE = exp.exp_2 match { case _ : Enondet => CCTerm.fromTerm( lhsE.typ.getNonDet, lhsE.typ, Some(getSourceInfo(exp.exp_2))) @@ -1082,13 +1089,12 @@ class Symex private (context : SymexContext, } evalHelp(expToUpdate) - val oldValue = topVal maybeOutputClause(Some(getSourceInfo(exp))) - - val newValue = oldValue mapTerm (_ + op) + val newValue = topVal mapTerm (_ + op) implicit val symex: Symex = this getAssignmentTarget(expToUpdate).update(newValue) + case exp : Epreop => val srcInfo = Some(getSourceInfo(exp)) evalHelp(exp.exp_) diff --git a/src/tricera/concurrency/ccreader/CCTerm.scala b/src/tricera/concurrency/ccreader/CCTerm.scala index d0f236fc..45039d49 100644 --- a/src/tricera/concurrency/ccreader/CCTerm.scala +++ b/src/tricera/concurrency/ccreader/CCTerm.scala @@ -34,6 +34,7 @@ import tricera.Util.SourceInfo import CCExceptions._ import ap.parser.IExpression._ import tricera.concurrency.CCReader +import tricera.params.TriCeraParameters case class CCTerm(t : ITerm, typ : CCType, @@ -43,7 +44,7 @@ case class CCTerm(t : ITerm, def toFormula : IFormula = originalFormula getOrElse { t match { case IIntLit(value) => !value.isZero - case t if typ.isInstanceOf[CCHeapPointer] => + case t if typ.isInstanceOf[CCHeapPointer] && TriCeraParameters.get.invEncoding.isEmpty => !IExpression.Eq(t, typ.asInstanceOf[CCHeapPointer].heap.nullAddr()) case t if typ == CCBool => t === ap.theories.ADT.BoolADT.True case t => !IExpression.eqZero(t) @@ -52,11 +53,14 @@ case class CCTerm(t : ITerm, def occurringConstants: Seq[IExpression.ConstantTerm] = SymbolCollector constantsSorted t def convertToType(newType: CCType): CCTerm = { + val isInvEncoding = TriCeraParameters.get.invEncoding.nonEmpty (typ, newType) match { case (oldType, newType) if (oldType == newType) => this case (_: CCArithType, newType: CCArithType) => newType cast this + case (_: CCArithType, newType: CCHeapPointer) if isInvEncoding => + newType cast this case (_: CCArithType, CCDuration) => { if (!CCReader.useTime) throw NeedsTimeException diff --git a/src/tricera/concurrency/ccreader/CCType.scala b/src/tricera/concurrency/ccreader/CCType.scala index f479b828..2cb4dd27 100644 --- a/src/tricera/concurrency/ccreader/CCType.scala +++ b/src/tricera/concurrency/ccreader/CCType.scala @@ -57,6 +57,8 @@ abstract sealed class CCType { case CCHeap(heap) => heap.HeapSort case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer + case CCHeapPointer(_ , _) if TriCeraParameters.get.invEncoding.nonEmpty => + Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(_, _, _) if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty @@ -82,6 +84,8 @@ abstract sealed class CCType { case CCHeap(heap) => heap.HeapSort case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer + case CCHeapPointer(_ , _) if TriCeraParameters.get.invEncoding.nonEmpty => + Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCArray(_, _, _, s, _) => s.sort case CCHeapArrayPointer(_, _, _) @@ -107,6 +111,8 @@ abstract sealed class CCType { case CCHeap(heap) => heap.HeapSort case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer + case CCHeapPointer(_ , _) if TriCeraParameters.get.invEncoding.nonEmpty => + Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(_, _, _) if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty @@ -132,6 +138,8 @@ abstract sealed class CCType { case CCHeap(heap) => heap.HeapSort case CCHeapObject(heap) => heap.ObjectSort case CCStackPointer(_, _, _) => Sort.Integer + case CCHeapPointer(_ , _) if TriCeraParameters.get.invEncoding.nonEmpty => + Sort.Integer case CCHeapPointer(heap, _) => heap.AddressSort case CCHeapArrayPointer(_, _, _) if tricera.params.TriCeraParameters.get.invEncoding.nonEmpty @@ -227,6 +235,8 @@ abstract sealed class CCType { case _ => fieldType.getZeroInit } structType.ctor(const: _*) + case CCHeapPointer(_, _) if TriCeraParameters.get.invEncoding.nonEmpty + => IIntLit(0) case CCHeapPointer(heap, _) => heap.nullAddr() case CCHeapArrayPointer(heap, _, _) => // todo: start = null, but // size 0 or 1? @@ -441,7 +451,12 @@ case class CCStruct(ctor : MonoSortedIFunction, structs(name).getInitialized(values) case s: CCStruct => s.getInitialized(values) case CCHeapPointer(h, _) => - if (values.isEmpty) h.nullAddr() else values.pop() + val nullAddr = + if (TriCeraParameters.get.invEncoding.nonEmpty) + IIntLit(0) + else + h.nullAddr() + if (values.isEmpty) nullAddr else values.pop() case CCHeapArrayPointer(h, _, _) => throw new TranslationException( "Heap arrays inside structs are" + diff --git a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala index 8a882f87..d15070f4 100644 --- a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -31,6 +31,7 @@ package tricera.concurrency.heap import ap.basetypes.IdealInt import ap.parser.{IExpression, ITerm} +import IExpression.toFunApplier import tricera.acsl.ACSLTranslator import tricera.concurrency.ccreader.CCExceptions.TranslationException import tricera.concurrency.ccreader._ @@ -227,11 +228,13 @@ class InvariantEncodingsModel(context : SymexContext, } override def alloc(o : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + val wrappedObj = CCTerm.fromTerm( // TODO: Symex should be responsible for wrap/unwrap + context.sortWrapperMap(o.typ.toSort)(o.toTerm), o.typ, o.srcInfo) FunctionCall( functionName = allocFnName, - args = Seq(o), - resultType = CCHeapPointer(context.heap, o.typ), - sourceInfo = o.srcInfo + args = Seq(wrappedObj), + resultType = CCHeapPointer(context.heap, wrappedObj.typ), + sourceInfo = wrappedObj.srcInfo ) } From 4f4ba9d1f6758edf2cba2814237384bb118660a2 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Mon, 15 Sep 2025 13:14:40 +0200 Subject: [PATCH 04/29] Add RW-fun and an Empty encoding --- .../concurrency/heap/encodings/Empty.yml | 40 +++++++++ .../concurrency/heap/encodings/RW-fun-opt.yml | 83 +++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 src/tricera/concurrency/heap/encodings/Empty.yml create mode 100644 src/tricera/concurrency/heap/encodings/RW-fun-opt.yml diff --git a/src/tricera/concurrency/heap/encodings/Empty.yml b/src/tricera/concurrency/heap/encodings/Empty.yml new file mode 100644 index 00000000..36e9d17c --- /dev/null +++ b/src/tricera/concurrency/heap/encodings/Empty.yml @@ -0,0 +1,40 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: [{ name: "p", type: "PTR_TYPE" }] + body: "" + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + body: "" + +alloc_fn: + return_type: "PTR_TYPE" + args: [{ name: "e", type: "HEAP_TYPE" }] + body: "" + +free_fn: + return_type: "void" + args: [{ name: "p", type: "PTR_TYPE" }] + body: "" diff --git a/src/tricera/concurrency/heap/encodings/RW-fun-opt.yml b/src/tricera/concurrency/heap/encodings/RW-fun-opt.yml new file mode 100644 index 00000000..31870af2 --- /dev/null +++ b/src/tricera/concurrency/heap/encodings/RW-fun-opt.yml @@ -0,0 +1,83 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: null } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + #- "assert($W(0, $HEAP_TYPE_DEFAULT()));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: [{ name: "p", type: "PTR_TYPE" }] + body: | + HEAP_TYPE result; + ++$cnt; + if ($last_addr == p) { + result = $last_data; + } else { + int t; + if ($p_g == p) { + assert($R($cnt, $last_cnt)); + t = $last_cnt; + } else { + t = HAVOC_INT; + assume($R($cnt, t)); + } + result = HAVOC_HEAP; + assume($W(t, result)); + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + body: | + ++$cnt; + //if (0 < p && p <= $allocCtr) { + $last_addr = p; + $last_data = e; + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } + //} + +alloc_fn: + return_type: "PTR_TYPE" + args: [{ name: "e", type: "HEAP_TYPE" }] + body: | + int p = ++$allocCtr; + ++$cnt; + $last_addr = p; + $last_data = e; + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } + return p; + +free_fn: + return_type: "void" + args: [{ name: "p", type: "PTR_TYPE" }] + body: "" From 17a8de885e69e3558170c0a0f050ccc6e50e0945 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Wed, 24 Sep 2025 12:30:31 +0200 Subject: [PATCH 05/29] Change to standard directory structure, and other changes. - Fixes an bug in tri-pp when determinizing programs. - Changes to invariant encodings (WIP). - Moves resources to the standard directories. --- build.sbt | 4 - .../resources/tricera/headers/macros_ilp32.h | 32 ++++ .../resources/tricera/headers/macros_llp64.h | 32 ++++ .../resources/tricera/headers/macros_lp64.h | 32 ++++ .../resources/tricera/headers/macros_math.h | 26 ++++ .../tricera}/heap/encodings/Empty.yml | 26 ++-- .../tricera/heap/encodings/R-tag-opt.yml | 99 +++++++++++++ .../tricera/heap/encodings/R-tag.yml | 86 +++++++++++ .../tricera/heap/encodings/RW-fun-opt-2.yml | 140 ++++++++++++++++++ .../tricera}/heap/encodings/RW-fun-opt.yml | 0 .../tricera/heap/encodings/RW-fun-tag-opt.yml | 103 +++++++++++++ .../tricera/heap/encodings/RW-fun-tag.yml | 88 +++++++++++ .../tricera}/heap/encodings/RW-fun.yml | 1 + .../resources/tricera}/heap/encodings/RW.yml | 0 src/{ => main/scala}/tricera/HeapInfo.scala | 0 src/{ => main/scala}/tricera/Literals.scala | 0 src/{ => main/scala}/tricera/Main.scala | 60 ++++++-- .../scala}/tricera/ParallelComputation.scala | 0 src/{ => main/scala}/tricera/Result.scala | 0 src/{ => main/scala}/tricera/Util.scala | 0 .../scala}/tricera/acsl/ACSLTranslator.scala | 0 .../scala}/tricera/acsl/Encoder.scala | 0 .../tricera/acsl/FunctionContract.scala | 0 .../tricera/benchmarking/Benchmarking.scala | 0 .../CCAstAtExpressionTransformer.scala | 0 .../concurrency/CCAstCopyWithLocation.scala | 0 .../concurrency/CCAstMaxLineNumber.scala | 0 .../CCAstStackPtrArgToGlobalTransformer.scala | 0 .../tricera/concurrency/CCAstTools.scala | 0 .../concurrency/CCAstTypeAnnotator.scala | 0 .../concurrency/CCAstUpdateLineNumber.scala | 0 .../scala}/tricera/concurrency/CCReader.scala | 8 +- .../concurrency/ParameterisedExamples.scala | 0 .../tricera/concurrency/ParseUtil.scala | 0 .../tricera/concurrency/ReaderMain.scala | 0 .../scala}/tricera/concurrency/Symex.scala | 76 +++++++--- .../tricera/concurrency/SymexContext.scala | 0 .../concurrency/TriCeraPreprocessor.scala | 77 ++++------ .../ccreader/CCBinaryExpressions.scala | 0 .../concurrency/ccreader/CCDeclaration.scala | 0 .../concurrency/ccreader/CCExceptions.scala | 0 .../concurrency/ccreader/CCPredicate.scala | 0 .../concurrency/ccreader/CCScope.scala | 0 .../tricera/concurrency/ccreader/CCTerm.scala | 2 + .../tricera/concurrency/ccreader/CCType.scala | 0 .../tricera/concurrency/ccreader/CCVar.scala | 0 .../tricera/concurrency/heap/HeapModel.scala | 30 ++-- .../concurrency/heap/HeapTheoryModel.scala | 40 ++--- .../heap/InvariantEncodingParser.scala | 18 +-- .../heap/InvariantEncodingsModel.scala | 69 +++++---- .../tricera/params/TriCeraParameters.scala | 4 + .../tricera/parsers/AnnotationParser.scala | 0 .../tricera/parsers/CommentPreprocessor.scala | 0 .../scala}/tricera/parsers/ParserUtil.scala | 0 .../scala}/tricera/parsers/YAMLParser.scala | 0 .../ACSLExpressionProcessor.scala | 0 .../tricera/postprocessor/ACSLFunctions.scala | 0 .../postprocessor/ACSLLineariser.scala | 0 .../tricera/postprocessor/ADTExploder.scala | 0 .../tricera/postprocessor/ADTSimplifier.scala | 0 .../postprocessor/AssignmentProcessor.scala | 0 .../tricera/postprocessor/ClauseRemover.scala | 0 .../ContractConditionTools.scala | 0 .../postprocessor/ContractConditionType.scala | 0 .../ContractProcessorUtils.scala | 0 .../postprocessor/EqualitySwapper.scala | 0 .../postprocessor/FormulaSimplifier.scala | 0 .../FunctionInvariantsFilter.scala | 0 .../postprocessor/HeapRepresentation.scala | 0 .../MergeTransformedFunctionsContracts.scala | 0 .../postprocessor/PointerPropProcessor.scala | 0 .../tricera/postprocessor/PointerTools.scala | 0 .../PostconditionSimplifier.scala | 0 .../postprocessor/ResultConverter.scala | 0 .../postprocessor/ResultPrinters.scala | 0 .../postprocessor/ResultProcessor.scala | 0 .../postprocessor/SafePointerExtractor.scala | 0 .../postprocessor/SolutionProcessor.scala | 0 .../postprocessor/TheoryOfHeapProcessor.scala | 0 .../scala}/tricera/postprocessor/ValSet.scala | 0 .../scala}/tricera/properties/package.scala | 0 .../tricera/symex/PathConstraints.scala | 0 .../concurrency/ADTSimplifierTests.scala | 0 .../concurrency/CCReaderCollectVarDecls.scala | 0 .../test}/tricera/concurrency/Util.scala | 0 85 files changed, 883 insertions(+), 170 deletions(-) create mode 100644 src/main/resources/tricera/headers/macros_ilp32.h create mode 100644 src/main/resources/tricera/headers/macros_llp64.h create mode 100644 src/main/resources/tricera/headers/macros_lp64.h create mode 100644 src/main/resources/tricera/headers/macros_math.h rename src/{tricera/concurrency => main/resources/tricera}/heap/encodings/Empty.yml (51%) create mode 100644 src/main/resources/tricera/heap/encodings/R-tag-opt.yml create mode 100644 src/main/resources/tricera/heap/encodings/R-tag.yml create mode 100644 src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml rename src/{tricera/concurrency => main/resources/tricera}/heap/encodings/RW-fun-opt.yml (100%) create mode 100644 src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml create mode 100644 src/main/resources/tricera/heap/encodings/RW-fun-tag.yml rename src/{tricera/concurrency => main/resources/tricera}/heap/encodings/RW-fun.yml (99%) rename src/{tricera/concurrency => main/resources/tricera}/heap/encodings/RW.yml (100%) rename src/{ => main/scala}/tricera/HeapInfo.scala (100%) rename src/{ => main/scala}/tricera/Literals.scala (100%) rename src/{ => main/scala}/tricera/Main.scala (93%) rename src/{ => main/scala}/tricera/ParallelComputation.scala (100%) rename src/{ => main/scala}/tricera/Result.scala (100%) rename src/{ => main/scala}/tricera/Util.scala (100%) rename src/{ => main/scala}/tricera/acsl/ACSLTranslator.scala (100%) rename src/{ => main/scala}/tricera/acsl/Encoder.scala (100%) rename src/{ => main/scala}/tricera/acsl/FunctionContract.scala (100%) rename src/{ => main/scala}/tricera/benchmarking/Benchmarking.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstAtExpressionTransformer.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstCopyWithLocation.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstMaxLineNumber.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstStackPtrArgToGlobalTransformer.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstTools.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstTypeAnnotator.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCAstUpdateLineNumber.scala (100%) rename src/{ => main/scala}/tricera/concurrency/CCReader.scala (99%) rename src/{ => main/scala}/tricera/concurrency/ParameterisedExamples.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ParseUtil.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ReaderMain.scala (100%) rename src/{ => main/scala}/tricera/concurrency/Symex.scala (96%) rename src/{ => main/scala}/tricera/concurrency/SymexContext.scala (100%) rename src/{ => main/scala}/tricera/concurrency/TriCeraPreprocessor.scala (53%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCBinaryExpressions.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCDeclaration.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCExceptions.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCPredicate.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCScope.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCTerm.scala (97%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCType.scala (100%) rename src/{ => main/scala}/tricera/concurrency/ccreader/CCVar.scala (100%) rename src/{ => main/scala}/tricera/concurrency/heap/HeapModel.scala (88%) rename src/{ => main/scala}/tricera/concurrency/heap/HeapTheoryModel.scala (94%) rename src/{ => main/scala}/tricera/concurrency/heap/InvariantEncodingParser.scala (82%) rename src/{ => main/scala}/tricera/concurrency/heap/InvariantEncodingsModel.scala (85%) rename src/{ => main/scala}/tricera/params/TriCeraParameters.scala (98%) rename src/{ => main/scala}/tricera/parsers/AnnotationParser.scala (100%) rename src/{ => main/scala}/tricera/parsers/CommentPreprocessor.scala (100%) rename src/{ => main/scala}/tricera/parsers/ParserUtil.scala (100%) rename src/{ => main/scala}/tricera/parsers/YAMLParser.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ACSLExpressionProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ACSLFunctions.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ACSLLineariser.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ADTExploder.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ADTSimplifier.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/AssignmentProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ClauseRemover.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ContractConditionTools.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ContractConditionType.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ContractProcessorUtils.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/EqualitySwapper.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/FormulaSimplifier.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/FunctionInvariantsFilter.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/HeapRepresentation.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/MergeTransformedFunctionsContracts.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/PointerPropProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/PointerTools.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/PostconditionSimplifier.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ResultConverter.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ResultPrinters.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ResultProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/SafePointerExtractor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/SolutionProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/TheoryOfHeapProcessor.scala (100%) rename src/{ => main/scala}/tricera/postprocessor/ValSet.scala (100%) rename src/{ => main/scala}/tricera/properties/package.scala (100%) rename src/{ => main/scala}/tricera/symex/PathConstraints.scala (100%) rename {unit-tests => src/test}/tricera/concurrency/ADTSimplifierTests.scala (100%) rename {unit-tests => src/test}/tricera/concurrency/CCReaderCollectVarDecls.scala (100%) rename {unit-tests => src/test}/tricera/concurrency/Util.scala (100%) diff --git a/build.sbt b/build.sbt index 4448c51d..222dbd23 100644 --- a/build.sbt +++ b/build.sbt @@ -99,10 +99,6 @@ lazy val root = (project in file(".")). // settings( - scalaSource in Compile := baseDirectory.value / "src", - // - scalaSource in Test := baseDirectory.value / "unit-tests", - // mainClass in Compile := Some("tricera.Main"), // scalacOptions in Compile ++= diff --git a/src/main/resources/tricera/headers/macros_ilp32.h b/src/main/resources/tricera/headers/macros_ilp32.h new file mode 100644 index 00000000..c4aa54e2 --- /dev/null +++ b/src/main/resources/tricera/headers/macros_ilp32.h @@ -0,0 +1,32 @@ +#ifndef MACROS_ILP32_H +#define MACROS_ILP32_H + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 + +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 65535 + +#define INT_MIN (-2147483648) +#define INT_MAX 2147483647 +#define UINT_MAX 4294967295U + +#define LONG_MIN (-2147483648L) +#define LONG_MAX 2147483647L +#define ULONG_MAX 4294967295UL + +#define LLONG_MIN (-9223372036854775808LL) +#define LLONG_MAX 9223372036854775807LL +#define ULLONG_MAX 18446744073709551615ULL + +#define SIZE_MAX 4294967295U + +#define NULL 0 +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +#endif \ No newline at end of file diff --git a/src/main/resources/tricera/headers/macros_llp64.h b/src/main/resources/tricera/headers/macros_llp64.h new file mode 100644 index 00000000..88b9bf78 --- /dev/null +++ b/src/main/resources/tricera/headers/macros_llp64.h @@ -0,0 +1,32 @@ +#ifndef MACROS_LLP64_H +#define MACROS_LLP64_H + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 + +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 65535 + +#define INT_MIN (-2147483648) +#define INT_MAX 2147483647 +#define UINT_MAX 4294967295U + +#define LONG_MIN (-2147483648L) +#define LONG_MAX 2147483647L +#define ULONG_MAX 4294967295UL + +#define LLONG_MIN (-9223372036854775808LL) +#define LLONG_MAX 9223372036854775807LL +#define ULLONG_MAX 18446744073709551615ULL + +#define SIZE_MAX 18446744073709551615ULL + +#define NULL 0 +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +#endif diff --git a/src/main/resources/tricera/headers/macros_lp64.h b/src/main/resources/tricera/headers/macros_lp64.h new file mode 100644 index 00000000..7e272860 --- /dev/null +++ b/src/main/resources/tricera/headers/macros_lp64.h @@ -0,0 +1,32 @@ +#ifndef MACROS_LP64_H +#define MACROS_LP64_H + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 + +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 65535 + +#define INT_MIN (-2147483648) +#define INT_MAX 2147483647 +#define UINT_MAX 4294967295U + +#define LONG_MIN (-9223372036854775808L) +#define LONG_MAX 9223372036854775807L +#define ULONG_MAX 18446744073709551615UL + +#define LLONG_MIN (-9223372036854775808LL) +#define LLONG_MAX 9223372036854775807LL +#define ULLONG_MAX 18446744073709551615ULL + +#define SIZE_MAX 18446744073709551615UL + +#define NULL 0 +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +#endif diff --git a/src/main/resources/tricera/headers/macros_math.h b/src/main/resources/tricera/headers/macros_math.h new file mode 100644 index 00000000..3e7c0c28 --- /dev/null +++ b/src/main/resources/tricera/headers/macros_math.h @@ -0,0 +1,26 @@ +#ifndef MACROS_MATH_H +#define MACROS_MATH_H + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-128) +#define SCHAR_MAX 127 +#define UCHAR_MAX 255 + +#define SHRT_MIN (-32768) +#define SHRT_MAX 32767 +#define USHRT_MAX 65535 + +#define INT_MIN (-2147483648) +#define INT_MAX 2147483647 +#define UINT_MAX 4294967295U + +#define LLONG_MIN (-9223372036854775808LL) +#define LLONG_MAX 9223372036854775807LL +#define ULLONG_MAX 18446744073709551615ULL + +#define NULL 0 +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +#endif diff --git a/src/tricera/concurrency/heap/encodings/Empty.yml b/src/main/resources/tricera/heap/encodings/Empty.yml similarity index 51% rename from src/tricera/concurrency/heap/encodings/Empty.yml rename to src/main/resources/tricera/heap/encodings/Empty.yml index 36e9d17c..d5098f18 100644 --- a/src/tricera/concurrency/heap/encodings/Empty.yml +++ b/src/main/resources/tricera/heap/encodings/Empty.yml @@ -3,14 +3,9 @@ ptr_type: "int" # Global variables global_decls: - - { name: "$p_g", type: "int", initial_value: null } # nondet init value # Uninterpreted predicates predicates: - - name: "$R" - args: - - { name: "cnt", type: "int" } - - { name: "last_cnt", type: "int" } # Initialisation code injected to the start of entry function init_code: @@ -19,22 +14,29 @@ init_code: # Heap operations read_fn: return_type: "HEAP_TYPE" - args: [{ name: "p", type: "PTR_TYPE" }] - body: "" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "return $$read(p, loc);" write_fn: return_type: "void" args: - { name: "p", type: "PTR_TYPE" } - { name: "e", type: "HEAP_TYPE" } - body: "" + - { name: "loc", type: "int" } + body: "$$write(p, e, loc);" alloc_fn: return_type: "PTR_TYPE" - args: [{ name: "e", type: "HEAP_TYPE" }] - body: "" + args: + - { name: "e", type: "HEAP_TYPE" []} + - { name: "loc", type: "int" } + body: "return $$alloc(e, loc);" free_fn: return_type: "void" - args: [{ name: "p", type: "PTR_TYPE" }] - body: "" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "$$free(p, loc);" diff --git a/src/main/resources/tricera/heap/encodings/R-tag-opt.yml b/src/main/resources/tricera/heap/encodings/R-tag-opt.yml new file mode 100644 index 00000000..1bd72cf2 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/R-tag-opt.yml @@ -0,0 +1,99 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last", type: "HEAP_TYPE", initial_value: null } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "int", initial_value: "-1" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + - name: "$Locs" + args: + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "$last = $HEAP_TYPE_DEFAULT();" + - "$last_data = $HEAP_TYPE_DEFAULT();" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int l; + ++$cnt; + if ($last_addr == p) { + result = $last_data; + } else { + if ($p_g == p) { + assert($Locs(loc, $last_loc)); + assert($R($cnt, $last, $last_loc)); + result = $last; + } else { + result = HAVOC_HEAP; + l = HAVOC_INT; + assume($Locs(loc, l)); + assume($R($cnt, result, l)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/R-tag.yml b/src/main/resources/tricera/heap/encodings/R-tag.yml new file mode 100644 index 00000000..5dd7518c --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/R-tag.yml @@ -0,0 +1,86 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last", type: "HEAP_TYPE", initial_value: null } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + - name: "$Locs" + args: + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "$last = $HEAP_TYPE_DEFAULT();" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int l; + ++$cnt; + if ($p_g == p) { + assert($Locs(loc, $last_loc)); + assert($R($cnt, $last, $last_loc)); + result = $last; + } else { + result = HAVOC_HEAP; + l = HAVOC_INT; + assume($Locs(loc, l)); + assume($R($cnt, result, l)); + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml b/src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml new file mode 100644 index 00000000..c05e0ab9 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml @@ -0,0 +1,140 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$dirty", type: "int", initial_value: "0" } + - { name: "$last_wt_loc", type: "int", initial_value: "-10" } + - { name: "$last_wt_cnt", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "int", initial_value: "-1" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" +# - "$last_data = $HEAP_TYPE_DEFAULT();" +# - "assert($W(0, $HEAP_TYPE_DEFAULT()));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int t; + int l; + if ($last_addr == p) { + result = $last_data; + } else { + if($dirty) { // cache has data, flush it + //if (0 < $last_addr && $last_addr <= $allocCtr) { + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } + //} + $dirty = 0; + } + int t; + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc)); + t = $last_cnt; + result = HAVOC_HEAP; + l = $last_loc; + assume($W(t, result, l)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l)); + result = HAVOC_HEAP; + assume($W(t, result, l)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + if (p == $last_addr) { + ++$cnt; + $last_data = e; + $last_wt_loc = loc; + $last_wt_cnt = $cnt; + $dirty = 1; + } else { + if($dirty) { // cache has data, flush it + //if (0 < $last_addr && $last_addr <= $allocCtr) { + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } + //} + } + ++$cnt; + $last_addr = p; + $last_data = e; + $last_wt_loc = loc; + $last_wt_cnt = $cnt; + $dirty = 1; + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + if($dirty) { // cache has data, flush it + //if (0 < $last_addr && $last_addr <= $allocCtr) { + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } + //} + } + int p = ++$allocCtr; + ++$cnt; + $last_addr = p; + $last_data = e; + $last_wt_loc = loc; + $last_wt_cnt = $cnt; + $dirty = 1; + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/tricera/concurrency/heap/encodings/RW-fun-opt.yml b/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml similarity index 100% rename from src/tricera/concurrency/heap/encodings/RW-fun-opt.yml rename to src/main/resources/tricera/heap/encodings/RW-fun-opt.yml diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml new file mode 100644 index 00000000..7cd7b657 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml @@ -0,0 +1,103 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: "0" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int t; + int l; + if ($last_addr == p) { + result = $last_data; + } else { + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc)); + t = $last_cnt; + result = HAVOC_HEAP; + assume($W(t, result, $last_loc)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l)); + result = HAVOC_HEAP; + assume($W(t, result, l)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e, loc)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e, loc)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml new file mode 100644 index 00000000..11929dfe --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml @@ -0,0 +1,88 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result = HAVOC_HEAP; + int t; + int l; + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc)); + assume($W($last_cnt, result, $last_loc)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l)); + assume($W(t, result, l)); + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e, loc)); + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e, loc)); + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/tricera/concurrency/heap/encodings/RW-fun.yml b/src/main/resources/tricera/heap/encodings/RW-fun.yml similarity index 99% rename from src/tricera/concurrency/heap/encodings/RW-fun.yml rename to src/main/resources/tricera/heap/encodings/RW-fun.yml index 90608d0b..bd19a910 100644 --- a/src/tricera/concurrency/heap/encodings/RW-fun.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun.yml @@ -31,6 +31,7 @@ read_fn: body: | HEAP_TYPE result; int t; + int l; ++$cnt; if ($p_g == p) { assert($R($cnt, $last_cnt)); diff --git a/src/tricera/concurrency/heap/encodings/RW.yml b/src/main/resources/tricera/heap/encodings/RW.yml similarity index 100% rename from src/tricera/concurrency/heap/encodings/RW.yml rename to src/main/resources/tricera/heap/encodings/RW.yml diff --git a/src/tricera/HeapInfo.scala b/src/main/scala/tricera/HeapInfo.scala similarity index 100% rename from src/tricera/HeapInfo.scala rename to src/main/scala/tricera/HeapInfo.scala diff --git a/src/tricera/Literals.scala b/src/main/scala/tricera/Literals.scala similarity index 100% rename from src/tricera/Literals.scala rename to src/main/scala/tricera/Literals.scala diff --git a/src/tricera/Main.scala b/src/main/scala/tricera/Main.scala similarity index 93% rename from src/tricera/Main.scala rename to src/main/scala/tricera/Main.scala index dc3dbf9f..05771984 100644 --- a/src/tricera/Main.scala +++ b/src/main/scala/tricera/Main.scala @@ -31,7 +31,7 @@ package tricera import java.io.{FileOutputStream, PrintStream} -import java.nio.file.{Files, Paths} +import java.nio.file.{Files, Paths, StandardCopyOption} import sys.process._ import ap.parser.IExpression.{ConstantTerm, Predicate} import ap.parser.{IAtom, IConstant, IFormula, VariableSubstVisitor} @@ -44,8 +44,7 @@ import tricera.Util.{SourceInfo, printlnDebug} import tricera.benchmarking.Benchmarking._ import tricera.concurrency.CCReader.{CCAssertionClause, CCClause} import tricera.concurrency.ccreader.CCExceptions._ -import tricera.concurrency.ccreader.{CCVar, CCHeapPointer, CCHeapArrayPointer, CCStackPointer} - +import tricera.concurrency.ccreader.{CCHeapArrayPointer, CCHeapPointer, CCStackPointer, CCVar} import lazabs.horn.preprocessor.HornPreprocessor import tricera.postprocessor.FunctionInvariantsFilter import tricera.postprocessor.ACSLLinearisedContract @@ -274,19 +273,51 @@ class Main (args: Array[String]) { } import java.io.File - val cppFileName = if (cPreprocessor) { + val cppFileName = if (cPreprocessor || cPreprocessorLight) { val preprocessedFile = File.createTempFile("tri-", ".i") - System.setOut(new PrintStream(new FileOutputStream(preprocessedFile))) - val cmdLine = Seq("cpp", fileName, "-E", "-P", "-CC") - try Process(cmdLine) ! - catch { - case _: Throwable => - throw new Main.MainException("The C preprocessor could not" + - " be executed (option -cpp). This might be due cpp not being " + - "installed in the system.\n" + "Attempted command: " + - cmdLine.mkString(" ")) - } preprocessedFile.deleteOnExit() + + val baseCmd = Seq("cpp", fileName, "-E", "-P", "-CC") + + val extraFlags = if (cPreprocessorLight) { + val macroHeaderTempFile: File = { + val resourcePath = arithMode match { + case CCReader.ArithmeticMode.Mathematical => "tricera/headers/macros_math.h" + case CCReader.ArithmeticMode.ILP32 => "tricera/headers/macros_ilp32.h" + case CCReader.ArithmeticMode.LP64 => "tricera/headers/macros_lp64.h" + case CCReader.ArithmeticMode.LLP64 => "tricera/headers/macros_llp64.h" + } + + val inputStream = Option(getClass.getClassLoader.getResourceAsStream(resourcePath)) + .getOrElse { + throw new Main.MainException( + s"Could not find macro header for '$arithMode'. Expected in resources/$resourcePath" + ) + } + + val tmpFile = Files.createTempFile("tricera-macros-", ".h").toFile + tmpFile.deleteOnExit() + Files.copy(inputStream, tmpFile.toPath, StandardCopyOption.REPLACE_EXISTING) + inputStream.close() + tmpFile + } + Seq("-nostdinc", "-undef", "-imacros", macroHeaderTempFile.getAbsolutePath) + } else Seq() + + val cmdLine = baseCmd ++ extraFlags + + try { + val errorSuppressingLogger = ProcessLogger(_ => (), _ => ()) + (Process(cmdLine) #> preprocessedFile).!(errorSuppressingLogger) + } catch { + case t : Throwable => + throw new Main.MainException( + "The C preprocessor could not be executed " + + (if (cPreprocessorLight) "(option -cppLight)." else "(option -cpp).") + + " This might be due to cpp not being installed in the system.\n" + + "Attempted command: " + cmdLine.mkString(" ") + ) + } preprocessedFile.getAbsolutePath } else fileName @@ -680,7 +711,6 @@ class Main (args: Array[String]) { case TimeoutException | StoppedException => ExecutionSummary(Timeout, Map(), modelledHeap, programTimer.s, preprocessTimer.s) - // nothing case _: java.lang.OutOfMemoryError => printError(OutOfMemory.toString) ExecutionSummary(OutOfMemory, Map(), modelledHeap, diff --git a/src/tricera/ParallelComputation.scala b/src/main/scala/tricera/ParallelComputation.scala similarity index 100% rename from src/tricera/ParallelComputation.scala rename to src/main/scala/tricera/ParallelComputation.scala diff --git a/src/tricera/Result.scala b/src/main/scala/tricera/Result.scala similarity index 100% rename from src/tricera/Result.scala rename to src/main/scala/tricera/Result.scala diff --git a/src/tricera/Util.scala b/src/main/scala/tricera/Util.scala similarity index 100% rename from src/tricera/Util.scala rename to src/main/scala/tricera/Util.scala diff --git a/src/tricera/acsl/ACSLTranslator.scala b/src/main/scala/tricera/acsl/ACSLTranslator.scala similarity index 100% rename from src/tricera/acsl/ACSLTranslator.scala rename to src/main/scala/tricera/acsl/ACSLTranslator.scala diff --git a/src/tricera/acsl/Encoder.scala b/src/main/scala/tricera/acsl/Encoder.scala similarity index 100% rename from src/tricera/acsl/Encoder.scala rename to src/main/scala/tricera/acsl/Encoder.scala diff --git a/src/tricera/acsl/FunctionContract.scala b/src/main/scala/tricera/acsl/FunctionContract.scala similarity index 100% rename from src/tricera/acsl/FunctionContract.scala rename to src/main/scala/tricera/acsl/FunctionContract.scala diff --git a/src/tricera/benchmarking/Benchmarking.scala b/src/main/scala/tricera/benchmarking/Benchmarking.scala similarity index 100% rename from src/tricera/benchmarking/Benchmarking.scala rename to src/main/scala/tricera/benchmarking/Benchmarking.scala diff --git a/src/tricera/concurrency/CCAstAtExpressionTransformer.scala b/src/main/scala/tricera/concurrency/CCAstAtExpressionTransformer.scala similarity index 100% rename from src/tricera/concurrency/CCAstAtExpressionTransformer.scala rename to src/main/scala/tricera/concurrency/CCAstAtExpressionTransformer.scala diff --git a/src/tricera/concurrency/CCAstCopyWithLocation.scala b/src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala similarity index 100% rename from src/tricera/concurrency/CCAstCopyWithLocation.scala rename to src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala diff --git a/src/tricera/concurrency/CCAstMaxLineNumber.scala b/src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala similarity index 100% rename from src/tricera/concurrency/CCAstMaxLineNumber.scala rename to src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala diff --git a/src/tricera/concurrency/CCAstStackPtrArgToGlobalTransformer.scala b/src/main/scala/tricera/concurrency/CCAstStackPtrArgToGlobalTransformer.scala similarity index 100% rename from src/tricera/concurrency/CCAstStackPtrArgToGlobalTransformer.scala rename to src/main/scala/tricera/concurrency/CCAstStackPtrArgToGlobalTransformer.scala diff --git a/src/tricera/concurrency/CCAstTools.scala b/src/main/scala/tricera/concurrency/CCAstTools.scala similarity index 100% rename from src/tricera/concurrency/CCAstTools.scala rename to src/main/scala/tricera/concurrency/CCAstTools.scala diff --git a/src/tricera/concurrency/CCAstTypeAnnotator.scala b/src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala similarity index 100% rename from src/tricera/concurrency/CCAstTypeAnnotator.scala rename to src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala diff --git a/src/tricera/concurrency/CCAstUpdateLineNumber.scala b/src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala similarity index 100% rename from src/tricera/concurrency/CCAstUpdateLineNumber.scala rename to src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala diff --git a/src/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala similarity index 99% rename from src/tricera/concurrency/CCReader.scala rename to src/main/scala/tricera/concurrency/CCReader.scala index 444d9418..da10d1c1 100644 --- a/src/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -632,10 +632,11 @@ class CCReader private (prog : Program, // todo: only add types that exist in the program - should also add machine arithmetic types val predefSignatures = List(("O_Int", HeapObj.CtorSignature(List(("getInt", HeapObj.OtherSort(Sort.Integer))), ObjSort)), - ("O_UInt", HeapObj.CtorSignature(List(("getUInt", HeapObj.OtherSort(Sort.Nat))), ObjSort)), + ("O_UInt", HeapObj.CtorSignature(List(("getUInt", HeapObj.OtherSort(Sort.Nat))), ObjSort))) ++ + (if (TriCeraParameters.get.invEncoding.nonEmpty) Nil else List( ("O_Addr", HeapObj.CtorSignature(List(("getAddr", HeapObj.AddressCtor)), ObjSort)), ("O_AddrRange", HeapObj.CtorSignature(List(("getAddrRange", HeapObj.AddressRangeCtor)), ObjSort)) - ) + )) val wrapperSignatures : List[(String, HeapObj.CtorSignature)] = predefSignatures ++ @@ -1533,7 +1534,8 @@ class CCReader private (prog : Program, values.eval(expr.asInstanceOf[Especial].exp_)( values.EvalSettings(), values.EvalContext()) values.handleArrayInitialization( - arrayPtr, arraySizeTerm, initStack).toTerm + arrayPtr, arraySizeTerm, initStack, + values.getStaticLocationId(varDec.srcInfo)).toTerm case None => throw new TranslationException("Cannot initialize" + "arrays with unknown size") diff --git a/src/tricera/concurrency/ParameterisedExamples.scala b/src/main/scala/tricera/concurrency/ParameterisedExamples.scala similarity index 100% rename from src/tricera/concurrency/ParameterisedExamples.scala rename to src/main/scala/tricera/concurrency/ParameterisedExamples.scala diff --git a/src/tricera/concurrency/ParseUtil.scala b/src/main/scala/tricera/concurrency/ParseUtil.scala similarity index 100% rename from src/tricera/concurrency/ParseUtil.scala rename to src/main/scala/tricera/concurrency/ParseUtil.scala diff --git a/src/tricera/concurrency/ReaderMain.scala b/src/main/scala/tricera/concurrency/ReaderMain.scala similarity index 100% rename from src/tricera/concurrency/ReaderMain.scala rename to src/main/scala/tricera/concurrency/ReaderMain.scala diff --git a/src/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala similarity index 96% rename from src/tricera/concurrency/Symex.scala rename to src/main/scala/tricera/concurrency/Symex.scala index b3ac08dd..f5cc6028 100644 --- a/src/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -46,7 +46,6 @@ import tricera.params.TriCeraParameters import tricera.properties import IExpression.toFunApplier import tricera.concurrency.ccreader.CCBinaryExpressions.BinaryOperators -import tricera.concurrency.heap.HeapModel.{HeapOperationResult, SimpleResult} import tricera.concurrency.heap.HeapModel import scala.collection.JavaConversions.{asScalaBuffer, asScalaIterator} @@ -60,6 +59,10 @@ object Symex { maybeHeapModel : Option[HeapModel]) : Symex = { new Symex(context, scope, initPred, maybeHeapModel) } + + // These need to be here for now as we create many Symexes... + private val locationMap = mutable.Map[SourceInfo, Int]() + private var locationCounter = 0 } class Symex private (context : SymexContext, @@ -481,6 +484,17 @@ class Symex private (context : SymexContext, } } + def getStaticLocationId(srcInfo : SourceInfo) : CCTerm = { + Symex.locationMap.getOrElseUpdate(srcInfo, { + Symex.locationCounter += 1 + Symex.locationCounter + }) + CCTerm.fromTerm(IIntLit(Symex.locationCounter), CCInt, Some(srcInfo)) + } + + private def getStaticLocationId(exp : Exp) : CCTerm = + getStaticLocationId(getSourceInfo(exp)) + /** * Represents the target of an assignment operation. Each implementation * encapsulates the logic for writing a value to a specific kind of @@ -565,6 +579,7 @@ class Symex private (context : SymexContext, evalSettings : EvalSettings, evalCtx : EvalContext) : Unit = { val baseLHSVal = eval(baseExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) + val locTerm = getStaticLocationId(originalExp) baseLHSVal.typ match { case ptr : CCHeapPointer => // p->f val structType = ptr.typ match { @@ -574,13 +589,13 @@ class Symex private (context : SymexContext, } val fieldAddress = getFieldAddress(structType, path) pushVal(newValue) - pushVal(processHeapResult(heapModel.read(baseLHSVal, values)).get) + pushVal(processHeapResult(heapModel.read(baseLHSVal, values, locTerm)).get) maybeOutputClause(baseLHSVal.srcInfo) val oldStructTerm = popVal.toTerm val newValueInClause = popVal val newStructTerm = structType.setFieldTerm(oldStructTerm, newValueInClause.toTerm, fieldAddress) val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValueInClause.srcInfo) - processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values)) + processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) case structType : CCStruct => // s.f val varName = asLValue(baseExp) @@ -615,7 +630,7 @@ class Symex private (context : SymexContext, arrayTerm.typ match { case _ : CCHeapArrayPointer => processHeapResult(heapModel.arrayWrite( - arrayTerm, indexTerm, wrapAsHeapObject(newValue), values)) + arrayTerm, indexTerm, wrapAsHeapObject(newValue), values, getStaticLocationId(originalExp))) case _ : CCArray => val lhsVal = eval(originalExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) val newTerm = CCTerm.fromTerm(writeADT( @@ -657,14 +672,15 @@ class Symex private (context : SymexContext, newArrayTerm, arrayTerm.typ, newValue.srcInfo), evalCtx.enclosingFunctionName) case array : CCHeapArrayPointer => - val readResult = processHeapResult(heapModel.arrayRead(arrayTerm, indexTerm, values)).get + val locTerm = getStaticLocationId(originalExp) + val readResult = processHeapResult(heapModel.arrayRead(arrayTerm, indexTerm, values, locTerm)).get val oldStructTerm = readResult.toTerm val structType = array.elementType.asInstanceOf[CCStruct] val fieldAddress = getFieldAddress(structType, path) val newStructInnerTerm = structType.setFieldTerm(oldStructTerm, newValue.toTerm, fieldAddress) val newStructObj = CCTerm.fromTerm(newStructInnerTerm, structType, newValue.srcInfo) processHeapResult(heapModel.arrayWrite( - arrayTerm, indexTerm, wrapAsHeapObject(newStructObj), values)) + arrayTerm, indexTerm, wrapAsHeapObject(newStructObj), values, locTerm)) case _ => throw new TranslationException( "Field access on an element of a non-struct array.") @@ -680,7 +696,8 @@ class Symex private (context : SymexContext, evalCtx : EvalContext) : Unit = { val pointerVal = eval(pointerExp)(evalSettings, evalCtx.withEvaluatingLHS(false)) if (isHeapPointer(pointerVal)) { - processHeapResult(heapModel.write(pointerVal, wrapAsHeapObject(newValue), values)) + processHeapResult(heapModel.write(pointerVal, wrapAsHeapObject(newValue), + values, getStaticLocationId(originalExp))) } else { val lhsVal = eval(originalExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) val lhsName = asLValue(originalExp) @@ -797,6 +814,11 @@ class Symex private (context : SymexContext, Some(callFunction(call.functionName, call.args, call.sourceInfo)) case call : HeapModel.FunctionCallWithGetter => val callResult = callFunction(call.functionName, call.args, call.sourceInfo) + if(!context.propertiesToCheck.contains(properties.MemValidDeref)) { + val safetyFormula = context.heap.heapADTs.hasCtor( + callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) + addGuard(safetyFormula) + } Some(CCTerm.fromTerm(call.getter(callResult.toTerm), call.resultType, call.sourceInfo)) @@ -804,9 +826,10 @@ class Symex private (context : SymexContext, def handleArrayInitialization(arrayPtr : CCHeapArrayPointer, arraySize : CCTerm, - initStack : mutable.Stack[ITerm]) : CCTerm = { + initStack : mutable.Stack[ITerm], + locTerm : CCTerm) : CCTerm = { val result = - heapModel.allocAndInitArray(arrayPtr, arraySize.toTerm, initStack, values) + heapModel.allocAndInitArray(arrayPtr, arraySize.toTerm, initStack, values, locTerm) val returnValue = processHeapResult(result) @@ -1160,11 +1183,11 @@ class Symex private (context : SymexContext, case ptr : CCStackPointer => pushVal(getPointedTerm(ptr)) case _ : CCHeapPointer => if(evalCtx.evaluatingLHS) pushVal(v) - else pushVal(processHeapResult(heapModel.read(v, values)).get) + else pushVal(processHeapResult(heapModel.read(v, values, getStaticLocationId(exp))).get) case arr : CCHeapArrayPointer => if(evalCtx.evaluatingLHS) pushVal(v) else pushVal(processHeapResult(heapModel.arrayRead( - v, CCTerm.fromTerm(IIntLit(0), CCInt, srcInfo), values)).get) + v, CCTerm.fromTerm(IIntLit(0), CCInt, srcInfo), values, getStaticLocationId(exp))).get) case _ => throw new TranslationException( "Cannot dereference non-pointer: " + v.typ + " " + v.toTerm) } @@ -1294,8 +1317,15 @@ class Symex private (context : SymexContext, case "malloc" | "calloc" => ArrayLocation.Heap case "alloca" | "__builtin_alloca" => ArrayLocation.Stack } + + val canAssumeMemorySafety = TriCeraParameters.get.invEncoding match { + case Some(enc) => enc contains "-fun-" + case None => false + } + val objectTerm = CCTerm.fromTerm(name match { case "calloc" => typ.getZeroInit + case _ if canAssumeMemorySafety => typ.getZeroInit case "malloc" | "alloca" | "__builtin_alloca" => typ.getNonDet }, typ, srcInfo) @@ -1310,8 +1340,9 @@ class Symex private (context : SymexContext, * checking memory properties (e.g., only heap allocated memory * can be freed). */ - val allocatedAddr = - processHeapResult(heapModel.alloc(objectTerm, values)).get + + val allocatedAddr = processHeapResult( + heapModel.alloc(objectTerm, values, getStaticLocationId(exp))).get pushVal(allocatedAddr) case CCTerm(sizeExp, typ, _, _) if typ.isInstanceOf[CCArithType] => @@ -1360,13 +1391,19 @@ class Symex private (context : SymexContext, sizeInt match { case Some(1) => // use regular heap model, this is not an array + val canAssumeMemorySafety = TriCeraParameters.get.invEncoding match { + case Some(enc) => enc contains "-fun-" + case None => false + } + val objectTerm = CCTerm.fromTerm(name match { case "calloc" => typ.getZeroInit + case _ if canAssumeMemorySafety => typ.getZeroInit case "malloc" | "alloca" | "__builtin_alloca" => typ.getNonDet }, typ, srcInfo) - val allocatedAddr = - processHeapResult(heapModel.alloc(objectTerm, values)).get + val allocatedAddr = processHeapResult( + heapModel.alloc(objectTerm, values, getStaticLocationId(exp))).get pushVal(allocatedAddr) case _ => @@ -1390,7 +1427,7 @@ class Symex private (context : SymexContext, throw new TranslationException("realloc is not supported.") case "free" => val ptrExpr = atomicEval(exp.listexp_.head, evalCtx) - processHeapResult(heapModel.free(ptrExpr, values)) + processHeapResult(heapModel.free(ptrExpr, values, getStaticLocationId(exp))) pushVal(CCTerm.fromTerm(0, CCVoid, srcInfo)) // free returns no value, push dummy case name => // then we inline the called function @@ -1472,7 +1509,7 @@ class Symex private (context : SymexContext, val term = subexpr.typ match { case ptrType : CCStackPointer => getPointedTerm(ptrType) case _ : CCHeapPointer => //todo: error here if field is null - processHeapResult(heapModel.read(subexpr, values)).get + processHeapResult(heapModel.read(subexpr, values, getStaticLocationId(exp))).get case _ => throw new TranslationException( "Trying to access field '->" + rawFieldName + "' of non pointer.") } @@ -1541,7 +1578,8 @@ class Symex private (context : SymexContext, import IExpression._ arrayTerm.typ match { case _ : CCHeapArrayPointer => - pushVal(processHeapResult(heapModel.arrayRead(arrayTerm, index, values)).get) + pushVal(processHeapResult(heapModel.arrayRead( + arrayTerm, index, values, getStaticLocationId(exp))).get) case array : CCArray => // todo: move to separate method val readValue = CCTerm.fromTerm( array.arrayTheory.select(arrayTerm.toTerm, index.toTerm), @@ -1642,7 +1680,7 @@ class Symex private (context : SymexContext, private def callFunctionInlining(name : String, functionEntry : CCPredicate, pointerArgs : List[CCType] = Nil) = - (context.functionDefs get name) match { + context.functionDefs get name match { case Some(fundef) => val typ = context.getType(fundef) val isNoReturn = typ == CCVoid diff --git a/src/tricera/concurrency/SymexContext.scala b/src/main/scala/tricera/concurrency/SymexContext.scala similarity index 100% rename from src/tricera/concurrency/SymexContext.scala rename to src/main/scala/tricera/concurrency/SymexContext.scala diff --git a/src/tricera/concurrency/TriCeraPreprocessor.scala b/src/main/scala/tricera/concurrency/TriCeraPreprocessor.scala similarity index 53% rename from src/tricera/concurrency/TriCeraPreprocessor.scala rename to src/main/scala/tricera/concurrency/TriCeraPreprocessor.scala index 374a8f92..f269f93d 100644 --- a/src/tricera/concurrency/TriCeraPreprocessor.scala +++ b/src/main/scala/tricera/concurrency/TriCeraPreprocessor.scala @@ -1,5 +1,5 @@ /** - * Copyright (c) 2021-2023 Zafer Esen. All rights reserved. + * Copyright (c) 2021-2025 Zafer Esen. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -31,7 +31,7 @@ package tricera.concurrency import tricera.Main -import sys.process._ +import sys.process.Process import java.nio.file.{Files, Paths} class TriCeraPreprocessor(val inputFilePath : String, @@ -40,58 +40,45 @@ class TriCeraPreprocessor(val inputFilePath : String, val displayWarnings : Boolean, val quiet : Boolean, val determinize : Boolean) { - val ppPath = sys.env.get("TRI_PP_PATH") match { + val ppPath : String = sys.env.get("TRI_PP_PATH") match { case Some(path) => path + "/tri-pp" case _ => val path = Paths.get(System.getProperty("user.dir") + "/tri-pp") - if (Files.exists(path)) path - else - throw new Main.MainException("The preprocessor binary" + + if (Files.exists(path)) path.toString + else throw new Main.MainException("The preprocessor binary" + " (tri-pp) could not be found. Please ensure that the environment " + "variable TRI_PP_PATH is exported and points to the preprocessor's" + " base directory") } - var curInputFilePath = inputFilePath - if (determinize) { - val cmdLine1 : Seq[String] = - Seq(ppPath.toString, curInputFilePath,"-o", outputFilePath) ++ - (if(quiet) Seq("-q") else Nil) ++ - Seq("-m", entryFunction, "--make-calls-unique", "--", "-xc") ++ - (if(displayWarnings) Nil else Seq("-Wno-everything")) - try { Process(cmdLine1) ! } - catch { - case _: Throwable => - throw new Main.MainException("tri-pp failed while trying to make " + - "calls unique.\n" + "Preprocessor command: " + cmdLine1.mkString(" ")) - } - curInputFilePath = outputFilePath - val cmdLine2 : Seq[String] = - Seq(ppPath.toString, curInputFilePath,"-o", curInputFilePath) ++ - (if(quiet) Seq("-q") else Nil) ++ - Seq("-m", entryFunction, "--determinize", "--", "-xc") ++ - (if(displayWarnings) Nil else Seq("-Wno-everything")) - try { Process(cmdLine2) ! } - catch { + + private def runPreprocessor(extraArgs : Seq[String], + errorMsg : String, + input : String, + output : String) : Int = { + val cmdLine : Seq[String] = Seq(ppPath, input, "-o", output) ++ + (if (quiet) Seq("-q") else Nil) ++ extraArgs ++ + Seq("-m", entryFunction, "--", "-xc") ++ + (if (displayWarnings) Nil else Seq("-Wno-everything")) + + try { Process(cmdLine) ! } catch { case _: Throwable => - throw new Main.MainException("tri-pp failed while trying to make" + - "calls unique.\n" + "Preprocessor command: " + cmdLine1.mkString(" ")) + throw new Main.MainException(s"$errorMsg\nPreprocessor command: ${cmdLine.mkString(" ")}") } } - private val cmdLine : Seq[String] = - Seq(ppPath.toString, curInputFilePath,"-o", outputFilePath) ++ - (if(quiet) Seq("-q") else Nil) ++ - Seq("-m", entryFunction, "--", "-xc") ++ - (if(displayWarnings) Nil else Seq("-Wno-everything")) - private val returnCode = - try { Process(cmdLine) ! } - catch { - case _: Throwable => - throw new Main.MainException("TriCera preprocessor could not" + - " be executed. This might be due to TriCera preprocessor binary " + - "not being in the current directory. Alternatively, use the " + - "-noPP switch to disable the preprocessor.\n" + - "Preprocessor command: " + cmdLine.mkString(" ") - ) + + private val initialReturnCode = runPreprocessor( + Nil, "TriCera preprocessor could not be executed.", inputFilePath, outputFilePath) + val hasError : Boolean = initialReturnCode != 0 + + if (determinize) { + val determinizeSteps = Seq( + ("--make-calls-unique", "tri-pp failed while trying to make calls unique."), + ("--determinize", "tri-pp failed while trying to make the program deterministic.") + ) + + determinizeSteps.foldLeft(0){ + case (_, (arg, msg)) => + runPreprocessor(Seq(arg), msg, outputFilePath, outputFilePath) } - val hasError = returnCode != 0 + } } diff --git a/src/tricera/concurrency/ccreader/CCBinaryExpressions.scala b/src/main/scala/tricera/concurrency/ccreader/CCBinaryExpressions.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCBinaryExpressions.scala rename to src/main/scala/tricera/concurrency/ccreader/CCBinaryExpressions.scala diff --git a/src/tricera/concurrency/ccreader/CCDeclaration.scala b/src/main/scala/tricera/concurrency/ccreader/CCDeclaration.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCDeclaration.scala rename to src/main/scala/tricera/concurrency/ccreader/CCDeclaration.scala diff --git a/src/tricera/concurrency/ccreader/CCExceptions.scala b/src/main/scala/tricera/concurrency/ccreader/CCExceptions.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCExceptions.scala rename to src/main/scala/tricera/concurrency/ccreader/CCExceptions.scala diff --git a/src/tricera/concurrency/ccreader/CCPredicate.scala b/src/main/scala/tricera/concurrency/ccreader/CCPredicate.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCPredicate.scala rename to src/main/scala/tricera/concurrency/ccreader/CCPredicate.scala diff --git a/src/tricera/concurrency/ccreader/CCScope.scala b/src/main/scala/tricera/concurrency/ccreader/CCScope.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCScope.scala rename to src/main/scala/tricera/concurrency/ccreader/CCScope.scala diff --git a/src/tricera/concurrency/ccreader/CCTerm.scala b/src/main/scala/tricera/concurrency/ccreader/CCTerm.scala similarity index 97% rename from src/tricera/concurrency/ccreader/CCTerm.scala rename to src/main/scala/tricera/concurrency/ccreader/CCTerm.scala index 45039d49..01b99053 100644 --- a/src/tricera/concurrency/ccreader/CCTerm.scala +++ b/src/main/scala/tricera/concurrency/ccreader/CCTerm.scala @@ -73,6 +73,8 @@ case class CCTerm(t : ITerm, // todo: do not do anything for casts to void? case (oldType: CCArithType, newType: CCHeapPointer) => toTerm match { + case lit: IIntLit if lit.value.intValue == 0 && TriCeraParameters.get.invEncoding.nonEmpty => + CCTerm.fromTerm(IIntLit(0), newType, srcInfo) case lit: IIntLit if lit.value.intValue == 0 => CCTerm.fromTerm(newType.heap.nullAddr(), newType, srcInfo) //newType cast t case _ => diff --git a/src/tricera/concurrency/ccreader/CCType.scala b/src/main/scala/tricera/concurrency/ccreader/CCType.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCType.scala rename to src/main/scala/tricera/concurrency/ccreader/CCType.scala diff --git a/src/tricera/concurrency/ccreader/CCVar.scala b/src/main/scala/tricera/concurrency/ccreader/CCVar.scala similarity index 100% rename from src/tricera/concurrency/ccreader/CCVar.scala rename to src/main/scala/tricera/concurrency/ccreader/CCVar.scala diff --git a/src/tricera/concurrency/heap/HeapModel.scala b/src/main/scala/tricera/concurrency/heap/HeapModel.scala similarity index 88% rename from src/tricera/concurrency/heap/HeapModel.scala rename to src/main/scala/tricera/concurrency/heap/HeapModel.scala index 286e7479..ca6af184 100644 --- a/src/tricera/concurrency/heap/HeapModel.scala +++ b/src/main/scala/tricera/concurrency/heap/HeapModel.scala @@ -133,27 +133,28 @@ trait HeapModelFactory { /** * An interface for heap memory models. Each operation also takes the current - * state `s` (i.e., `values`) as input. + * state `s` (i.e., `values`) as input. The input `loc` is a term representing + * the operation's location (i.e., meta-information). */ trait HeapModel { import HeapModel._ - def read (p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult - def write(p : CCTerm, o : CCTerm, s : Seq[CCTerm]) : HeapOperationResult - def alloc(o : CCTerm, s : Seq[CCTerm]) : HeapOperationResult - def free (p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult + def read (p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult + def write(p : CCTerm, o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult + def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult + def free (p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult /** * Allocates an array of objects on the heap * @param o The object to populate the array with * @param size The symbolic size of the array - * @param loc The location of the allocation + * @param arrayLoc The location of the allocation * @param s The current symbolic state of all variables */ - def batchAlloc(o : CCTerm, - size : ITerm, - loc : ArrayLocation.Value, - s : Seq[CCTerm]) : HeapOperationResult + def batchAlloc(o : CCTerm, + size : ITerm, + arrayLoc : ArrayLocation.Value, + s : Seq[CCTerm]) : HeapOperationResult /** * Reads an element from a heap array. @@ -161,9 +162,11 @@ trait HeapModel { * @param index The index to read from * @param s The current symbolic state of all variables */ - def arrayRead(arr : CCTerm, index : CCTerm, s : Seq[CCTerm]) : HeapOperationResult + def arrayRead(arr : CCTerm, index : CCTerm, s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult - def arrayWrite(arr : CCTerm, index : CCTerm, value : CCTerm, s : Seq[CCTerm]) : HeapOperationResult + def arrayWrite(arr : CCTerm, index : CCTerm, value : CCTerm, + s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult /** * A hook to handle allocation of an array with an @@ -179,7 +182,8 @@ trait HeapModel { arrayPtr : CCHeapArrayPointer, size : ITerm, initializers : mutable.Stack[ITerm], - s : Seq[CCTerm]) : HeapOperationResult + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult /** * Arrays declared without an explicit initializer list (e.g., `int a[n]`). diff --git a/src/tricera/concurrency/heap/HeapTheoryModel.scala b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala similarity index 94% rename from src/tricera/concurrency/heap/HeapTheoryModel.scala rename to src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala index 37ed969b..af1404b5 100644 --- a/src/tricera/concurrency/heap/HeapTheoryModel.scala +++ b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala @@ -98,7 +98,7 @@ class HeapTheoryModel(context : SymexContext, s(scope.GlobalVars.lastIndexWhere(v)) } - override def read(p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + override def read(p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { val (objectGetter, typ : CCType) = p.typ match { case typ: CCHeapPointer => (context.sortGetterMap(typ.typ.toSort), typ.typ) @@ -126,7 +126,7 @@ class HeapTheoryModel(context : SymexContext, ) } - override def alloc(o : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + override def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { val objTerm = context.sortWrapperMap(o.typ.toSort)(o.toTerm) val newAlloc = context.heap.alloc(getValue(heapVar, s).toTerm, objTerm) val newHeapTerm = CCTerm.fromTerm(context.heap.newHeap(newAlloc), @@ -161,7 +161,8 @@ class HeapTheoryModel(context : SymexContext, override def write(p : CCTerm, o : CCTerm, - s : Seq[CCTerm]) : HeapOperationResult = { + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { val newHeapTerm = CCTerm.fromTerm( context.heap.write(getValue(heapVar, s).toTerm, p.toTerm, o.toTerm), CCHeap(context.heap), @@ -192,7 +193,7 @@ class HeapTheoryModel(context : SymexContext, ) } - override def free(p: CCTerm, s: Seq[CCTerm]): HeapOperationResult = { + override def free(p: CCTerm, s: Seq[CCTerm], loc : CCTerm): HeapOperationResult = { var assertions = List[(CCTerm, Property)]() var nextState = s @@ -214,7 +215,7 @@ class HeapTheoryModel(context : SymexContext, } val writeResult = - write(p, CCTerm.fromTerm(heapPtr.heap._defObj, heapPtr.typ, p.srcInfo), nextState) + write(p, CCTerm.fromTerm(heapPtr.heap._defObj, heapPtr.typ, p.srcInfo), nextState, loc) nextState = writeResult.asInstanceOf[SimpleResult].nextState @@ -294,10 +295,10 @@ class HeapTheoryModel(context : SymexContext, ) } - override def batchAlloc(o : CCTerm, - size : ITerm, - loc : ArrayLocation.Value, - s : Seq[CCTerm]) : HeapOperationResult = { + override def batchAlloc(o : CCTerm, + size : ITerm, + arrayLoc : ArrayLocation.Value, + s : Seq[CCTerm]) : HeapOperationResult = { val newBatchAlloc = context.heap.batchAlloc(getValue(heapVar, s).toTerm, context.sortWrapperMap(o.typ.toSort)(o.toTerm), size) @@ -305,11 +306,11 @@ class HeapTheoryModel(context : SymexContext, CCHeap(context.heap), o.srcInfo) val newAddrRange = CCTerm.fromTerm(context.heap.newAddrRange(newBatchAlloc), - CCHeapArrayPointer(context.heap, o.typ, loc), - o.srcInfo) + CCHeapArrayPointer(context.heap, o.typ, arrayLoc), + o.srcInfo) var nextState = updateValue(heapVar, newHeapTerm, s) - if (loc == ArrayLocation.Heap && + if (arrayLoc == ArrayLocation.Heap && ((context.propertiesToCheck contains properties.MemValidCleanup) || (context.propertiesToCheck.contains(properties.MemValidTrack) && TriCeraParameters.get.useMemCleanupForMemTrack))) { @@ -332,13 +333,14 @@ class HeapTheoryModel(context : SymexContext, override def arrayRead(arr : CCTerm, index : CCTerm, - s : Seq[CCTerm]) : HeapOperationResult = { + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { val arrType = arr.typ.asInstanceOf[CCHeapArrayPointer] val readAddress = CCTerm.fromTerm(context.heap.nth(arr.toTerm, index.toTerm), CCHeapPointer(context.heap, arrType.elementType), arr.srcInfo) - val readResult = read(readAddress, s) + val readResult = read(readAddress, s, loc) val boundsAssertion = if (context.propertiesToCheck.contains(properties.MemValidDeref)) { @@ -361,13 +363,14 @@ class HeapTheoryModel(context : SymexContext, override def arrayWrite(arr : CCTerm, index : CCTerm, value : CCTerm, - s : Seq[CCTerm]) : HeapOperationResult = { + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { val arrType = arr.typ.asInstanceOf[CCHeapArrayPointer] val writeAddress = CCTerm.fromTerm(context.heap.nth(arr.toTerm, index.toTerm), CCHeapPointer(context.heap, arrType.elementType), arr.srcInfo) - val writeResult = write(writeAddress, value, s) + val writeResult = write(writeAddress, value, s, loc) val boundsAssertion = if (context.propertiesToCheck.contains(properties.MemValidDeref)) { @@ -390,7 +393,8 @@ class HeapTheoryModel(context : SymexContext, override def allocAndInitArray(arrayPtr : CCHeapArrayPointer, size : ITerm, initializers : mutable.Stack[ITerm], - s : Seq[CCTerm]) + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { val objToAlloc = CCTerm.fromTerm(arrayPtr.elementType.getZeroInit, arrayPtr.elementType, None) val allocResult = @@ -420,7 +424,7 @@ class HeapTheoryModel(context : SymexContext, val writeResult = write( CCTerm.fromTerm(addrToWrite, CCHeapPointer(context.heap, arrayPtr.elementType), None), CCTerm.fromTerm(wrappedValue, arrayPtr.elementType, None), - currentState + currentState, loc ).asInstanceOf[SimpleResult] currentState = writeResult.nextState diff --git a/src/tricera/concurrency/heap/InvariantEncodingParser.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala similarity index 82% rename from src/tricera/concurrency/heap/InvariantEncodingParser.scala rename to src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala index 31a7f5c0..fe49e3b6 100644 --- a/src/tricera/concurrency/heap/InvariantEncodingParser.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala @@ -16,8 +16,8 @@ object InvariantEncodingParser { body : String) case class ParsedEncoding( ptr_type : String, - global_decls : List[Declaration], - predicates : List[Predicate], + global_decls : Option[List[Declaration]], + predicates : Option[List[Predicate]], init_code : List[String], read_fn : FunctionDef, write_fn : FunctionDef, @@ -34,16 +34,14 @@ object InvariantEncodingParser { } def parse(encodingName : String) : ParsedEncoding = { - val resourcePath = s"/tricera/concurrency/heap/encodings/$encodingName.yml" - val source = try { - scala.io.Source.fromInputStream(getClass.getResourceAsStream(resourcePath)) - } catch { - case _: NullPointerException => + val resourcePath = s"tricera/heap/encodings/$encodingName.yml" + val inputStream = Option(getClass.getClassLoader.getResourceAsStream(resourcePath)) + .getOrElse { throw new TranslationException( s"Could not find encoding file for '$encodingName'. " + - s"Expected to find it at '.../resources$resourcePath'") - } - + s"Expected to find it at 'resources/$resourcePath'") + } + val source = scala.io.Source.fromInputStream(inputStream) try { import EncodingYamlProtocol._ val yamlAst = source.mkString.parseYaml diff --git a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala similarity index 85% rename from src/tricera/concurrency/heap/InvariantEncodingsModel.scala rename to src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala index d15070f4..9c0163bb 100644 --- a/src/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -68,7 +68,7 @@ final class InvariantEncodingsFactory( "$free" -> originalEncoding.free_fn )) } else { - val predNames = originalEncoding.predicates.map(_.name).toSet + val predNames = originalEncoding.predicates.getOrElse(Nil).map(_.name).toSet def transform(code : String) : String = transformPredicateCalls(code, predNames, inputVars) @@ -130,8 +130,8 @@ final class InvariantEncodingsFactory( s"Unsupported type in encoding file: $typeStr") } -override def requiredVars: Seq[VarSpec] = { - originalEncoding.global_decls.map { decl => + override def requiredVars: Seq[VarSpec] = originalEncoding.global_decls match { + case Some(decls) => decls.map { decl => val ccType = stringToCCType(decl.`type`) val initialValue = decl.initial_value match { case Some(v) => ccType match { @@ -142,14 +142,18 @@ override def requiredVars: Seq[VarSpec] = { } VarSpec(decl.name, ccType, isGlobal = true, initialValue) } + case None => Seq() } - override def requiredPreds: Seq[PredSpec] = - originalEncoding.predicates.map { pred => - val originalArgs = pred.args.map(arg => - new CCVar(arg.name, None, stringToCCType(arg.`type`), AutoStorage)) - PredSpec(pred.name, inputVars ++ originalArgs) + override def requiredPreds: Seq[PredSpec] = originalEncoding.predicates match { + case Some(preds) => preds.map { + pred => + val originalArgs = pred.args.map (arg => + new CCVar (arg.name, None, stringToCCType (arg.`type`), AutoStorage)) + PredSpec (pred.name, inputVars ++ originalArgs) } + case None => Seq() + } private def preprocess(code: String): String = { val heapObjectReplacement = Matcher.quoteReplacement("$HeapObject") @@ -205,43 +209,43 @@ class InvariantEncodingsModel(context : SymexContext, private val allocFnName = "$alloc" private val freeFnName = "$free" - override def read(p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + override def read(p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { val resultType = p.typ.asInstanceOf[CCHeapPointer].typ val getter = context.sortGetterMap(resultType.toSort) FunctionCallWithGetter( functionName = readFnName, - args = Seq(p), + args = Seq(p, loc), resultType = resultType, getter = getter, sourceInfo = p.srcInfo ) } - override def write(p : CCTerm, o : CCTerm, s : Seq[CCTerm]) + override def write(p : CCTerm, o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { FunctionCall( functionName = writeFnName, - args = Seq(p, o), + args = Seq(p, o, loc), resultType = CCVoid, sourceInfo = p.srcInfo ) } - override def alloc(o : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + override def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { val wrappedObj = CCTerm.fromTerm( // TODO: Symex should be responsible for wrap/unwrap context.sortWrapperMap(o.typ.toSort)(o.toTerm), o.typ, o.srcInfo) FunctionCall( functionName = allocFnName, - args = Seq(wrappedObj), + args = Seq(wrappedObj, loc), resultType = CCHeapPointer(context.heap, wrappedObj.typ), sourceInfo = wrappedObj.srcInfo ) } - override def free(p : CCTerm, s : Seq[CCTerm]) : HeapOperationResult = { + override def free(p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { FunctionCall( functionName = freeFnName, - args = Seq(p), + args = Seq(p, loc), resultType = CCVoid, sourceInfo = p.srcInfo ) @@ -255,23 +259,33 @@ class InvariantEncodingsModel(context : SymexContext, override def getACSLPostStateHeapTerm( acslContext : ACSLTranslator.FunctionContext) : ITerm = ??? - override def batchAlloc(o : CCTerm, - size : ITerm, - loc : ArrayLocation.Value, - s : Seq[CCTerm]) : HeapOperationResult = { + override def batchAlloc(o : CCTerm, + size : ITerm, + arrayLoc : ArrayLocation.Value, + s : Seq[CCTerm]) : HeapOperationResult = { ??? } - override def arrayRead(arr : CCTerm, + override def arrayRead(arr : CCTerm, index : CCTerm, - s : Seq[CCTerm]) : HeapOperationResult = { + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { + ??? + } + + override def arrayWrite(arr : CCTerm, + index : CCTerm, + value : CCTerm, + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { ??? } override def allocAndInitArray(arrayPtr : CCHeapArrayPointer, size : ITerm, initializers : mutable.Stack[ITerm], - s : Seq[CCTerm]) : HeapOperationResult = { + s : Seq[CCTerm], + loc : CCTerm) : HeapOperationResult = { ??? } @@ -281,11 +295,4 @@ class InvariantEncodingsModel(context : SymexContext, s : Seq[CCTerm]) : HeapOperationResult = { ??? } - - override def arrayWrite(arr : CCTerm, - index : CCTerm, - value : CCTerm, - s : Seq[CCTerm]) : HeapOperationResult = { - ??? - } -} +} \ No newline at end of file diff --git a/src/tricera/params/TriCeraParameters.scala b/src/main/scala/tricera/params/TriCeraParameters.scala similarity index 98% rename from src/tricera/params/TriCeraParameters.scala rename to src/main/scala/tricera/params/TriCeraParameters.scala index 92b02b8f..088d1abb 100644 --- a/src/tricera/params/TriCeraParameters.scala +++ b/src/main/scala/tricera/params/TriCeraParameters.scala @@ -54,6 +54,7 @@ class TriCeraParameters extends GlobalParameters { var logPPLevel : Int = 0 // 0: quiet, 1: errors only, 2: errors + warnings var cPreprocessor : Boolean = false + var cPreprocessorLight : Boolean = false var dumpSimplifiedClauses : Boolean = false @@ -146,6 +147,7 @@ class TriCeraParameters extends GlobalParameters { logPPLevel = (ppLogOption drop 7).toInt; parseArgs(rest) case "-noPP" :: rest => noPP = true; parseArgs(rest) case "-cpp" :: rest => cPreprocessor = true; parseArgs(rest) + case "-cppLight" :: rest => cPreprocessorLight = true; parseArgs(rest) case "-dumpClauses" :: rest => printIntermediateClauseSets = true; parseArgs(rest) case "-dumpSimplified" :: rest => dumpSimplifiedClauses = true; parseArgs(rest) case "-sp" :: rest => smtPrettyPrint = true; parseArgs(rest) @@ -344,6 +346,8 @@ class TriCeraParameters extends GlobalParameters { | predicate with 'p1' or 'p2' in its name |-m:func Use function func as entry point (default: main) |-cpp Execute the C preprocessor (cpp) on the input file first, this will produce filename.i + |-cppLight Same as -cpp but does not include system header files and builtin macros. + | I.e., -nostdinc -undef |Checked properties: |-reachsafety Enables checking of explicitly specified properties via assert statements. diff --git a/src/tricera/parsers/AnnotationParser.scala b/src/main/scala/tricera/parsers/AnnotationParser.scala similarity index 100% rename from src/tricera/parsers/AnnotationParser.scala rename to src/main/scala/tricera/parsers/AnnotationParser.scala diff --git a/src/tricera/parsers/CommentPreprocessor.scala b/src/main/scala/tricera/parsers/CommentPreprocessor.scala similarity index 100% rename from src/tricera/parsers/CommentPreprocessor.scala rename to src/main/scala/tricera/parsers/CommentPreprocessor.scala diff --git a/src/tricera/parsers/ParserUtil.scala b/src/main/scala/tricera/parsers/ParserUtil.scala similarity index 100% rename from src/tricera/parsers/ParserUtil.scala rename to src/main/scala/tricera/parsers/ParserUtil.scala diff --git a/src/tricera/parsers/YAMLParser.scala b/src/main/scala/tricera/parsers/YAMLParser.scala similarity index 100% rename from src/tricera/parsers/YAMLParser.scala rename to src/main/scala/tricera/parsers/YAMLParser.scala diff --git a/src/tricera/postprocessor/ACSLExpressionProcessor.scala b/src/main/scala/tricera/postprocessor/ACSLExpressionProcessor.scala similarity index 100% rename from src/tricera/postprocessor/ACSLExpressionProcessor.scala rename to src/main/scala/tricera/postprocessor/ACSLExpressionProcessor.scala diff --git a/src/tricera/postprocessor/ACSLFunctions.scala b/src/main/scala/tricera/postprocessor/ACSLFunctions.scala similarity index 100% rename from src/tricera/postprocessor/ACSLFunctions.scala rename to src/main/scala/tricera/postprocessor/ACSLFunctions.scala diff --git a/src/tricera/postprocessor/ACSLLineariser.scala b/src/main/scala/tricera/postprocessor/ACSLLineariser.scala similarity index 100% rename from src/tricera/postprocessor/ACSLLineariser.scala rename to src/main/scala/tricera/postprocessor/ACSLLineariser.scala diff --git a/src/tricera/postprocessor/ADTExploder.scala b/src/main/scala/tricera/postprocessor/ADTExploder.scala similarity index 100% rename from src/tricera/postprocessor/ADTExploder.scala rename to src/main/scala/tricera/postprocessor/ADTExploder.scala diff --git a/src/tricera/postprocessor/ADTSimplifier.scala b/src/main/scala/tricera/postprocessor/ADTSimplifier.scala similarity index 100% rename from src/tricera/postprocessor/ADTSimplifier.scala rename to src/main/scala/tricera/postprocessor/ADTSimplifier.scala diff --git a/src/tricera/postprocessor/AssignmentProcessor.scala b/src/main/scala/tricera/postprocessor/AssignmentProcessor.scala similarity index 100% rename from src/tricera/postprocessor/AssignmentProcessor.scala rename to src/main/scala/tricera/postprocessor/AssignmentProcessor.scala diff --git a/src/tricera/postprocessor/ClauseRemover.scala b/src/main/scala/tricera/postprocessor/ClauseRemover.scala similarity index 100% rename from src/tricera/postprocessor/ClauseRemover.scala rename to src/main/scala/tricera/postprocessor/ClauseRemover.scala diff --git a/src/tricera/postprocessor/ContractConditionTools.scala b/src/main/scala/tricera/postprocessor/ContractConditionTools.scala similarity index 100% rename from src/tricera/postprocessor/ContractConditionTools.scala rename to src/main/scala/tricera/postprocessor/ContractConditionTools.scala diff --git a/src/tricera/postprocessor/ContractConditionType.scala b/src/main/scala/tricera/postprocessor/ContractConditionType.scala similarity index 100% rename from src/tricera/postprocessor/ContractConditionType.scala rename to src/main/scala/tricera/postprocessor/ContractConditionType.scala diff --git a/src/tricera/postprocessor/ContractProcessorUtils.scala b/src/main/scala/tricera/postprocessor/ContractProcessorUtils.scala similarity index 100% rename from src/tricera/postprocessor/ContractProcessorUtils.scala rename to src/main/scala/tricera/postprocessor/ContractProcessorUtils.scala diff --git a/src/tricera/postprocessor/EqualitySwapper.scala b/src/main/scala/tricera/postprocessor/EqualitySwapper.scala similarity index 100% rename from src/tricera/postprocessor/EqualitySwapper.scala rename to src/main/scala/tricera/postprocessor/EqualitySwapper.scala diff --git a/src/tricera/postprocessor/FormulaSimplifier.scala b/src/main/scala/tricera/postprocessor/FormulaSimplifier.scala similarity index 100% rename from src/tricera/postprocessor/FormulaSimplifier.scala rename to src/main/scala/tricera/postprocessor/FormulaSimplifier.scala diff --git a/src/tricera/postprocessor/FunctionInvariantsFilter.scala b/src/main/scala/tricera/postprocessor/FunctionInvariantsFilter.scala similarity index 100% rename from src/tricera/postprocessor/FunctionInvariantsFilter.scala rename to src/main/scala/tricera/postprocessor/FunctionInvariantsFilter.scala diff --git a/src/tricera/postprocessor/HeapRepresentation.scala b/src/main/scala/tricera/postprocessor/HeapRepresentation.scala similarity index 100% rename from src/tricera/postprocessor/HeapRepresentation.scala rename to src/main/scala/tricera/postprocessor/HeapRepresentation.scala diff --git a/src/tricera/postprocessor/MergeTransformedFunctionsContracts.scala b/src/main/scala/tricera/postprocessor/MergeTransformedFunctionsContracts.scala similarity index 100% rename from src/tricera/postprocessor/MergeTransformedFunctionsContracts.scala rename to src/main/scala/tricera/postprocessor/MergeTransformedFunctionsContracts.scala diff --git a/src/tricera/postprocessor/PointerPropProcessor.scala b/src/main/scala/tricera/postprocessor/PointerPropProcessor.scala similarity index 100% rename from src/tricera/postprocessor/PointerPropProcessor.scala rename to src/main/scala/tricera/postprocessor/PointerPropProcessor.scala diff --git a/src/tricera/postprocessor/PointerTools.scala b/src/main/scala/tricera/postprocessor/PointerTools.scala similarity index 100% rename from src/tricera/postprocessor/PointerTools.scala rename to src/main/scala/tricera/postprocessor/PointerTools.scala diff --git a/src/tricera/postprocessor/PostconditionSimplifier.scala b/src/main/scala/tricera/postprocessor/PostconditionSimplifier.scala similarity index 100% rename from src/tricera/postprocessor/PostconditionSimplifier.scala rename to src/main/scala/tricera/postprocessor/PostconditionSimplifier.scala diff --git a/src/tricera/postprocessor/ResultConverter.scala b/src/main/scala/tricera/postprocessor/ResultConverter.scala similarity index 100% rename from src/tricera/postprocessor/ResultConverter.scala rename to src/main/scala/tricera/postprocessor/ResultConverter.scala diff --git a/src/tricera/postprocessor/ResultPrinters.scala b/src/main/scala/tricera/postprocessor/ResultPrinters.scala similarity index 100% rename from src/tricera/postprocessor/ResultPrinters.scala rename to src/main/scala/tricera/postprocessor/ResultPrinters.scala diff --git a/src/tricera/postprocessor/ResultProcessor.scala b/src/main/scala/tricera/postprocessor/ResultProcessor.scala similarity index 100% rename from src/tricera/postprocessor/ResultProcessor.scala rename to src/main/scala/tricera/postprocessor/ResultProcessor.scala diff --git a/src/tricera/postprocessor/SafePointerExtractor.scala b/src/main/scala/tricera/postprocessor/SafePointerExtractor.scala similarity index 100% rename from src/tricera/postprocessor/SafePointerExtractor.scala rename to src/main/scala/tricera/postprocessor/SafePointerExtractor.scala diff --git a/src/tricera/postprocessor/SolutionProcessor.scala b/src/main/scala/tricera/postprocessor/SolutionProcessor.scala similarity index 100% rename from src/tricera/postprocessor/SolutionProcessor.scala rename to src/main/scala/tricera/postprocessor/SolutionProcessor.scala diff --git a/src/tricera/postprocessor/TheoryOfHeapProcessor.scala b/src/main/scala/tricera/postprocessor/TheoryOfHeapProcessor.scala similarity index 100% rename from src/tricera/postprocessor/TheoryOfHeapProcessor.scala rename to src/main/scala/tricera/postprocessor/TheoryOfHeapProcessor.scala diff --git a/src/tricera/postprocessor/ValSet.scala b/src/main/scala/tricera/postprocessor/ValSet.scala similarity index 100% rename from src/tricera/postprocessor/ValSet.scala rename to src/main/scala/tricera/postprocessor/ValSet.scala diff --git a/src/tricera/properties/package.scala b/src/main/scala/tricera/properties/package.scala similarity index 100% rename from src/tricera/properties/package.scala rename to src/main/scala/tricera/properties/package.scala diff --git a/src/tricera/symex/PathConstraints.scala b/src/main/scala/tricera/symex/PathConstraints.scala similarity index 100% rename from src/tricera/symex/PathConstraints.scala rename to src/main/scala/tricera/symex/PathConstraints.scala diff --git a/unit-tests/tricera/concurrency/ADTSimplifierTests.scala b/src/test/tricera/concurrency/ADTSimplifierTests.scala similarity index 100% rename from unit-tests/tricera/concurrency/ADTSimplifierTests.scala rename to src/test/tricera/concurrency/ADTSimplifierTests.scala diff --git a/unit-tests/tricera/concurrency/CCReaderCollectVarDecls.scala b/src/test/tricera/concurrency/CCReaderCollectVarDecls.scala similarity index 100% rename from unit-tests/tricera/concurrency/CCReaderCollectVarDecls.scala rename to src/test/tricera/concurrency/CCReaderCollectVarDecls.scala diff --git a/unit-tests/tricera/concurrency/Util.scala b/src/test/tricera/concurrency/Util.scala similarity index 100% rename from unit-tests/tricera/concurrency/Util.scala rename to src/test/tricera/concurrency/Util.scala From f401d9788019675c4007c7623c580edf8943b4db Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Wed, 24 Sep 2025 16:12:03 +0200 Subject: [PATCH 06/29] Fixes nullAddr being used with invEncoding --- .../scala/tricera/concurrency/Symex.scala | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index f5cc6028..0b60aef7 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -541,11 +541,15 @@ class Symex private (context : SymexContext, case CCTerm(_, _: CCStackPointer, srcInfo, _) => throw new UnsupportedCFragmentException( getLineStringShort(srcInfo) + " Only limited support for stack pointers") - case CCTerm(IIntLit(value), _, _, _) if isHeapPointer(lhsVal) => + case CCTerm(t@IIntLit(value), _, _, _) if isHeapPointer(lhsVal) => if (value.intValue != 0) { throw new TranslationException("Pointer assignment only supports 0 (NULL)") - } else CCTerm.fromTerm( - context.heap.nullAddr(), CCHeapPointer(context.heap, lhsVal.typ), newValue.srcInfo) + } else { + val rhsVal : ITerm = if(TriCeraParameters.get.invEncoding.isEmpty) + context.heap.nullAddr() + else t + CCTerm.fromTerm(rhsVal, CCHeapPointer(context.heap, lhsVal.typ), newValue.srcInfo) + } case _ => newValue } @@ -1721,14 +1725,22 @@ class Symex private (context : SymexContext, if (t2.toTerm != IIntLit(IdealInt(0))) throw new TranslationException("Pointers can only compared with `null` or `0`. " + getLineString(t2.srcInfo)) - else - (t1, CCTerm.fromTerm(context.heap.nullAddr(), t1.typ, t1.srcInfo)) // 0 to nullAddr() + else { + val actualT2 = if(TriCeraParameters.get.invEncoding.isEmpty) + context.heap.nullAddr() + else t2.toTerm + (t1, CCTerm.fromTerm(actualT2, t1.typ, t1.srcInfo)) // 0 to nullAddr() + } case (_: CCArithType, _: CCHeapPointer) => if (t1.toTerm != IIntLit(IdealInt(0))) throw new TranslationException("Pointers can only compared with `null` or `0`. " + getLineString(t2.srcInfo)) - else - (CCTerm.fromTerm(context.heap.nullAddr(), t2.typ, t2.srcInfo), t2) // 0 to nullAddr() + else { + val actualT1 = if(TriCeraParameters.get.invEncoding.isEmpty) + context.heap.nullAddr() + else t1.toTerm + (CCTerm.fromTerm(actualT1, t2.typ, t2.srcInfo), t2) // 0 to nullAddr() + } case _ => (t1, t2) } } From 9ad889582fab0efd1b95c375ec01f7b99083ac68 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Wed, 24 Sep 2025 16:40:53 +0200 Subject: [PATCH 07/29] Fixes a bug in handling jump statemetns --- src/main/scala/tricera/concurrency/CCReader.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala index da10d1c1..a7265c2c 100644 --- a/src/main/scala/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -312,6 +312,7 @@ class CCReader private (prog : Program, fName : String) : Unit = CCReader.this.inlineFunction(f, entry, exit, args, isNoReturn, fName) override def isTermUsedInClauses(term : ConstantTerm) : Boolean = { + if (clauses.exists(_._1 == null)) return true // can happen in jump stmts (assertionClauses.iterator.flatMap(_.clause.constants) ++ clauses.iterator.flatMap(_._1.constants)).toSet.contains(term) } From d7fd391fee870d2f6803c1d3d4b6429a38818cb0 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 25 Sep 2025 14:23:51 +0200 Subject: [PATCH 08/29] More helpful error message for stack ptrs + recursive functions --- src/main/scala/tricera/concurrency/Symex.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index 0b60aef7..5ab003e9 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -1172,7 +1172,8 @@ class Symex private (context : SymexContext, val t = if (evalCtx.handlingFunContractArgs) { throw new UnsupportedCFragmentException( "Function contracts are currently not supported together " + - s"with stack pointers (${exp.line_num}:${exp.col_num})") + s"with stack pointers (${exp.line_num}:${exp.col_num})." + + s"(Recursive functions are encoded using contracts.)") } else { val ind = values.indexWhere(v => v == topVal) assert(ind > -1 && ind < values.size - 1) // todo From d6514b82cf8d376df170fdd326c17d2c85647c2c Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 25 Sep 2025 14:34:21 +0200 Subject: [PATCH 09/29] Update encodings --- .../tricera/heap/encodings/Empty.yml | 42 --------- .../tricera/heap/encodings/R-tag.yml | 9 +- .../heap/encodings/{R-tag-opt.yml => R.yml} | 44 ++------- .../tricera/heap/encodings/RW-fun-opt.yml | 13 ++- .../{RW-fun-opt-2.yml => RW-fun-tag-opt2.yml} | 0 .../tricera/heap/encodings/RW-fun-tag.yml | 4 +- .../tricera/heap/encodings/RW-fun.yml | 13 ++- .../tricera/heap/encodings/RW-tag.yml | 89 +++++++++++++++++++ .../resources/tricera/heap/encodings/RW.yml | 13 ++- 9 files changed, 130 insertions(+), 97 deletions(-) delete mode 100644 src/main/resources/tricera/heap/encodings/Empty.yml rename src/main/resources/tricera/heap/encodings/{R-tag-opt.yml => R.yml} (58%) rename src/main/resources/tricera/heap/encodings/{RW-fun-opt-2.yml => RW-fun-tag-opt2.yml} (100%) create mode 100644 src/main/resources/tricera/heap/encodings/RW-tag.yml diff --git a/src/main/resources/tricera/heap/encodings/Empty.yml b/src/main/resources/tricera/heap/encodings/Empty.yml deleted file mode 100644 index d5098f18..00000000 --- a/src/main/resources/tricera/heap/encodings/Empty.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Pointer type -ptr_type: "int" - -# Global variables -global_decls: - -# Uninterpreted predicates -predicates: - -# Initialisation code injected to the start of entry function -init_code: - - "" - -# Heap operations -read_fn: - return_type: "HEAP_TYPE" - args: - - { name: "p", type: "PTR_TYPE" } - - { name: "loc", type: "int" } - body: "return $$read(p, loc);" - -write_fn: - return_type: "void" - args: - - { name: "p", type: "PTR_TYPE" } - - { name: "e", type: "HEAP_TYPE" } - - { name: "loc", type: "int" } - body: "$$write(p, e, loc);" - -alloc_fn: - return_type: "PTR_TYPE" - args: - - { name: "e", type: "HEAP_TYPE" []} - - { name: "loc", type: "int" } - body: "return $$alloc(e, loc);" - -free_fn: - return_type: "void" - args: - - { name: "p", type: "PTR_TYPE" } - - { name: "loc", type: "int" } - body: "$$free(p, loc);" diff --git a/src/main/resources/tricera/heap/encodings/R-tag.yml b/src/main/resources/tricera/heap/encodings/R-tag.yml index 5dd7518c..13d80985 100644 --- a/src/main/resources/tricera/heap/encodings/R-tag.yml +++ b/src/main/resources/tricera/heap/encodings/R-tag.yml @@ -15,9 +15,6 @@ predicates: args: - { name: "cnt", type: "int" } - { name: "last", type: "HEAP_TYPE" } - - { name: "write_loc", type: "int" } - - name: "$Locs" - args: - { name: "read_loc", type: "int" } - { name: "write_loc", type: "int" } @@ -38,14 +35,12 @@ read_fn: int l; ++$cnt; if ($p_g == p) { - assert($Locs(loc, $last_loc)); - assert($R($cnt, $last, $last_loc)); + assert($R($cnt, $last, loc, $last_loc)); result = $last; } else { result = HAVOC_HEAP; l = HAVOC_INT; - assume($Locs(loc, l)); - assume($R($cnt, result, l)); + assume($R($cnt, result, loc, l)); } return result; diff --git a/src/main/resources/tricera/heap/encodings/R-tag-opt.yml b/src/main/resources/tricera/heap/encodings/R.yml similarity index 58% rename from src/main/resources/tricera/heap/encodings/R-tag-opt.yml rename to src/main/resources/tricera/heap/encodings/R.yml index 1bd72cf2..f2d96156 100644 --- a/src/main/resources/tricera/heap/encodings/R-tag-opt.yml +++ b/src/main/resources/tricera/heap/encodings/R.yml @@ -6,9 +6,6 @@ global_decls: - { name: "$allocCtr", type: "int", initial_value: "0" } - { name: "$cnt", type: "unsigned int", initial_value: "0" } - { name: "$last", type: "HEAP_TYPE", initial_value: null } - - { name: "$last_loc", type: "int", initial_value: "0" } - - { name: "$last_addr", type: "int", initial_value: "-1" } - - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } - { name: "$p_g", type: "int", initial_value: null } # nondet init value # Uninterpreted predicates @@ -17,18 +14,11 @@ predicates: args: - { name: "cnt", type: "int" } - { name: "last", type: "HEAP_TYPE" } - - { name: "write_loc", type: "int" } - - name: "$Locs" - args: - - { name: "read_loc", type: "int" } - - { name: "write_loc", type: "int" } - # Initialisation code injected to the start of entry function init_code: - "$p_g = _;" - "$last = $HEAP_TYPE_DEFAULT();" - - "$last_data = $HEAP_TYPE_DEFAULT();" # Heap operations read_fn: @@ -38,23 +28,13 @@ read_fn: - { name: "loc", type: "int" } body: | HEAP_TYPE result; - int l; ++$cnt; - if ($last_addr == p) { - result = $last_data; + if ($p_g == p) { + assert($R($cnt, $last)); + result = $last; } else { - if ($p_g == p) { - assert($Locs(loc, $last_loc)); - assert($R($cnt, $last, $last_loc)); - result = $last; - } else { - result = HAVOC_HEAP; - l = HAVOC_INT; - assume($Locs(loc, l)); - assume($R($cnt, result, l)); - } - $last_addr = p; - $last_data = result; + result = HAVOC_HEAP; + assume($R($cnt, result)); } return result; @@ -67,12 +47,7 @@ write_fn: body: | ++$cnt; if (0 < p && p <= $allocCtr) { - $last_addr = p; - $last_data = e; - if ($p_g == p) { - $last = e; - $last_loc = loc; - } + if ($p_g == p) { $last = e; } } alloc_fn: @@ -83,12 +58,7 @@ alloc_fn: body: | int p = ++$allocCtr; ++$cnt; - $last_addr = p; - $last_data = e; - if ($p_g == p) { - $last = e; - $last_loc = loc; - } + if ($p_g == p) { $last = e; } return p; free_fn: diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml b/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml index 31870af2..c000e6a7 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml @@ -29,7 +29,9 @@ init_code: # Heap operations read_fn: return_type: "HEAP_TYPE" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: | HEAP_TYPE result; ++$cnt; @@ -56,6 +58,7 @@ write_fn: args: - { name: "p", type: "PTR_TYPE" } - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | ++$cnt; //if (0 < p && p <= $allocCtr) { @@ -67,7 +70,9 @@ write_fn: alloc_fn: return_type: "PTR_TYPE" - args: [{ name: "e", type: "HEAP_TYPE" }] + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | int p = ++$allocCtr; ++$cnt; @@ -79,5 +84,7 @@ alloc_fn: free_fn: return_type: "void" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml similarity index 100% rename from src/main/resources/tricera/heap/encodings/RW-fun-opt-2.yml rename to src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml index 11929dfe..3c70c5c3 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml @@ -57,13 +57,13 @@ write_fn: - { name: "loc", type: "int" } body: | ++$cnt; - if (0 < p && p <= $allocCtr) { + //if (0 < p && p <= $allocCtr) { assert($W($cnt, e, loc)); if ($p_g == p) { $last_cnt = $cnt; $last_loc = loc; } - } + //} alloc_fn: return_type: "PTR_TYPE" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun.yml b/src/main/resources/tricera/heap/encodings/RW-fun.yml index bd19a910..fe1de3d9 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun.yml @@ -27,7 +27,9 @@ init_code: # Heap operations read_fn: return_type: "HEAP_TYPE" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: | HEAP_TYPE result; int t; @@ -49,6 +51,7 @@ write_fn: args: - { name: "p", type: "PTR_TYPE" } - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | ++$cnt; if (0 < p && p <= $allocCtr) { @@ -58,7 +61,9 @@ write_fn: alloc_fn: return_type: "PTR_TYPE" - args: [{ name: "e", type: "HEAP_TYPE" }] + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | int p = ++$allocCtr; ++$cnt; @@ -68,5 +73,7 @@ alloc_fn: free_fn: return_type: "void" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW-tag.yml b/src/main/resources/tricera/heap/encodings/RW-tag.yml new file mode 100644 index 00000000..59b3bf21 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-tag.yml @@ -0,0 +1,89 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "assert($W(0, $HEAP_TYPE_DEFAULT()));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result = HAVOC_HEAP; + int t; + int l; + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc)); + assume($W($last_cnt, result, $last_loc)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l)); + assume($W(t, result, l)); + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e, loc)); + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e, loc)); + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW.yml b/src/main/resources/tricera/heap/encodings/RW.yml index f0d88fa9..3a955335 100644 --- a/src/main/resources/tricera/heap/encodings/RW.yml +++ b/src/main/resources/tricera/heap/encodings/RW.yml @@ -27,7 +27,9 @@ init_code: # Heap operations read_fn: return_type: "HEAP_TYPE" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: | HEAP_TYPE result; int t; @@ -48,6 +50,7 @@ write_fn: args: - { name: "p", type: "PTR_TYPE" } - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | ++$cnt; if (0 < p && p <= $allocCtr) { @@ -57,7 +60,9 @@ write_fn: alloc_fn: return_type: "PTR_TYPE" - args: [{ name: "e", type: "HEAP_TYPE" }] + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } body: | int p = ++$allocCtr; ++$cnt; @@ -67,5 +72,7 @@ alloc_fn: free_fn: return_type: "void" - args: [{ name: "p", type: "PTR_TYPE" }] + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } body: "" From 936c7c786671101699d2c2f83f13e3f89b5aa235 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Fri, 26 Sep 2025 14:22:49 +0200 Subject: [PATCH 10/29] Fix error in RW-tag --- src/main/resources/tricera/heap/encodings/RW-tag.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/tricera/heap/encodings/RW-tag.yml b/src/main/resources/tricera/heap/encodings/RW-tag.yml index 59b3bf21..5bbc5071 100644 --- a/src/main/resources/tricera/heap/encodings/RW-tag.yml +++ b/src/main/resources/tricera/heap/encodings/RW-tag.yml @@ -26,7 +26,7 @@ predicates: # Initialisation code injected to the start of entry function init_code: - "$p_g = _;" - - "assert($W(0, $HEAP_TYPE_DEFAULT()));" + - "assert($W(0, $HEAP_TYPE_DEFAULT(), -1));" # Heap operations read_fn: From c385c95f5c3276f6f8198fa4e072a9779d378895 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Tue, 30 Sep 2025 11:21:54 +0200 Subject: [PATCH 11/29] Fixes a bug in chained struct ptr accesses with the invariant heap encoding --- regression-tests/horn-hcc-heap/runtests | 2 +- .../struct-chained-ptr-field-1-safe.c | 14 ++++++++++++++ .../struct-chained-ptr-field-1-unsafe.c | 14 ++++++++++++++ src/main/scala/tricera/concurrency/Symex.scala | 5 ++++- .../tricera/concurrency/ccreader/CCScope.scala | 6 +++--- 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-safe.c create mode 100644 regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-unsafe.c diff --git a/regression-tests/horn-hcc-heap/runtests b/regression-tests/horn-hcc-heap/runtests index 31f17644..f7128f96 100755 --- a/regression-tests/horn-hcc-heap/runtests +++ b/regression-tests/horn-hcc-heap/runtests @@ -2,7 +2,7 @@ LAZABS=../../tri -TESTS="list-001.c list-001-fail.c list-002-fail.c mutually-referential-structs.c mutually-referential-structs-fail.c mutually-referential-structs-unsafe.c simple-struct.c simple-struct-2.c simple-struct-fail.c swap-1.c swap-1-fail.c swap-2.c swap-2-fail.c swap-3.c simple-arith.c typecastUnsafe-001.c typecastSafe-001.c illegal-access-001.c illegal-access-002.c postop.c postop-struct.c preop.c preop-struct.c opassign.c opassign-struct.c unsafe-access-001.c stackptr-to-heapptr.c stackptr-to-heapptr-double.c free-1-unsafe.c free-2-nondet-unsafe.c free-3-safe.c free-4-unsafe.c struct-ptrfield-1.c stack-array-1-unsafe.c stack-array-2-unsafe.c stack-array-2-safe.c" +TESTS="list-001.c list-001-fail.c list-002-fail.c mutually-referential-structs.c mutually-referential-structs-fail.c mutually-referential-structs-unsafe.c simple-struct.c simple-struct-2.c simple-struct-fail.c swap-1.c swap-1-fail.c swap-2.c swap-2-fail.c swap-3.c simple-arith.c typecastUnsafe-001.c typecastSafe-001.c illegal-access-001.c illegal-access-002.c postop.c postop-struct.c preop.c preop-struct.c opassign.c opassign-struct.c unsafe-access-001.c stackptr-to-heapptr.c stackptr-to-heapptr-double.c free-1-unsafe.c free-2-nondet-unsafe.c free-3-safe.c free-4-unsafe.c struct-ptrfield-1.c stack-array-1-unsafe.c stack-array-2-unsafe.c stack-array-2-safe.c struct-chained-ptr-field-1-safe.c struct-chained-ptr-field-1-unsafe.c" for name in $TESTS; do echo diff --git a/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-safe.c b/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-safe.c new file mode 100644 index 00000000..82c3cbd5 --- /dev/null +++ b/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-safe.c @@ -0,0 +1,14 @@ +struct Node +{ + struct Node* next; + int data; +}; + +void main() +{ + struct Node* head = calloc(sizeof(struct Node)); + head->data = 3; + head->next = calloc(sizeof(struct Node)); + head->next->next = 0; + assert(head->data == 3); +} diff --git a/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-unsafe.c b/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-unsafe.c new file mode 100644 index 00000000..271de204 --- /dev/null +++ b/regression-tests/horn-hcc-heap/struct-chained-ptr-field-1-unsafe.c @@ -0,0 +1,14 @@ +struct Node +{ + struct Node* next; + int data; +}; + +void main() +{ + struct Node* head = calloc(sizeof(struct Node)); + head->data = 3; + head->next = calloc(sizeof(struct Node)); + head->next->next = 0; + assert(head->data == 0); +} diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index 5ab003e9..f768c332 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -592,14 +592,17 @@ class Symex private (context : SymexContext, case _ => throw new TranslationException("Pointer does not point to a struct type.") } val fieldAddress = getFieldAddress(structType, path) + pushVal(baseLHSVal) // keep the address to be written in case we generate clauses pushVal(newValue) + // TODO: do NOT read if the struct has only a single field pushVal(processHeapResult(heapModel.read(baseLHSVal, values, locTerm)).get) maybeOutputClause(baseLHSVal.srcInfo) val oldStructTerm = popVal.toTerm val newValueInClause = popVal + val curBaseLHSVal = popVal val newStructTerm = structType.setFieldTerm(oldStructTerm, newValueInClause.toTerm, fieldAddress) val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValueInClause.srcInfo) - processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + processHeapResult(heapModel.write(curBaseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) case structType : CCStruct => // s.f val varName = asLValue(baseExp) diff --git a/src/main/scala/tricera/concurrency/ccreader/CCScope.scala b/src/main/scala/tricera/concurrency/ccreader/CCScope.scala index 6ab0fa5f..f6225180 100644 --- a/src/main/scala/tricera/concurrency/ccreader/CCScope.scala +++ b/src/main/scala/tricera/concurrency/ccreader/CCScope.scala @@ -172,9 +172,9 @@ class CCScope { private val evalVars = new MHashSet[String] def getFreshEvalVar (typ : CCType, - srcInfo : Option[SourceInfo], - name : String = "", - storage : VariableStorage = AutoStorage) : CCVar = { + srcInfo : Option[SourceInfo], + name : String = "", + storage : VariableStorage = AutoStorage) : CCVar = { val varName = { if (name.nonEmpty) { name From 969356556297dec1ce8711453d9aaf1fc85a40e1 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Tue, 30 Sep 2025 15:41:36 +0200 Subject: [PATCH 12/29] Invariant encoding: optimizes writes to structs with a single field and fixes a related bug --- .../scala/tricera/concurrency/Symex.scala | 29 +++++++++++-------- .../tricera/concurrency/ccreader/CCType.scala | 12 ++++++-- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index f768c332..3ce0b0b0 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -591,18 +591,23 @@ class Symex private (context : SymexContext, case sf : CCStructField => sf.structs(sf.structName) case _ => throw new TranslationException("Pointer does not point to a struct type.") } - val fieldAddress = getFieldAddress(structType, path) - pushVal(baseLHSVal) // keep the address to be written in case we generate clauses - pushVal(newValue) - // TODO: do NOT read if the struct has only a single field - pushVal(processHeapResult(heapModel.read(baseLHSVal, values, locTerm)).get) - maybeOutputClause(baseLHSVal.srcInfo) - val oldStructTerm = popVal.toTerm - val newValueInClause = popVal - val curBaseLHSVal = popVal - val newStructTerm = structType.setFieldTerm(oldStructTerm, newValueInClause.toTerm, fieldAddress) - val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValueInClause.srcInfo) - processHeapResult(heapModel.write(curBaseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + if (structType.sels.size > 1 || path.size > 1) { + val fieldAddress = getFieldAddress(structType, path) + pushVal(baseLHSVal) // keep the address to be written in case we generate clauses + pushVal(newValue) + evalHelp(baseExp) + maybeOutputClause(baseLHSVal.srcInfo) + val oldStructTerm = popVal.toTerm // the result of the read + val curNewValue = popVal // the rhs value + val curBaseLHSVal = popVal // the address to write + val newStructTerm = structType.setFieldTerm(oldStructTerm, curNewValue.toTerm, fieldAddress) + val newStructObj = CCTerm.fromTerm(newStructTerm, structType, curNewValue.srcInfo) + processHeapResult(heapModel.write(curBaseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + } else { // path.size == 1 && structType.sels.size == 1 + val newStructTerm = structType.setFieldTerm(newValue.toTerm) + val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue.srcInfo) + processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + } case structType : CCStruct => // s.f val varName = asLValue(baseExp) diff --git a/src/main/scala/tricera/concurrency/ccreader/CCType.scala b/src/main/scala/tricera/concurrency/ccreader/CCType.scala index 2cb4dd27..b8867b0e 100644 --- a/src/main/scala/tricera/concurrency/ccreader/CCType.scala +++ b/src/main/scala/tricera/concurrency/ccreader/CCType.scala @@ -405,9 +405,9 @@ case class CCStruct(ctor : MonoSortedIFunction, case _ => sel(t) } } - def setFieldTerm(rootTerm: ITerm, - setVal: ITerm, - fieldAddress: List[Int]): ITerm = { + def setFieldTerm(rootTerm : ITerm, + setVal : ITerm, + fieldAddress : List[Int]) : ITerm = { fieldAddress match { case hd :: tl => { val childTerm = getFieldType(hd) match { @@ -435,6 +435,12 @@ case class CCStruct(ctor : MonoSortedIFunction, } } + // A helper to set a field of a struct containing a single field + def setFieldTerm(fieldVal : ITerm) : ITerm = { + assert(sels.size == 1) + ctor(fieldVal) + } + def getADTSelector(ind: Int): MonoSortedIFunction = sels(ind)._1 // Initializes a struct using a stack and returns the initialized term. From 87d436f6421dab44742c20e6f9dcecf6730b78e8 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Wed, 1 Oct 2025 15:31:09 +0200 Subject: [PATCH 13/29] Invariant encoding: fixes multiple bugs --- regression-tests/horn-hcc-pointer/runtests | 2 +- .../horn-hcc-pointer/stack-ptr-fun-ret.c | 13 +++++ src/main/scala/tricera/Main.scala | 2 +- .../scala/tricera/concurrency/CCReader.scala | 25 ++++++--- .../scala/tricera/concurrency/Symex.scala | 56 +++++++++++-------- .../heap/InvariantEncodingsModel.scala | 8 +-- .../tricera/params/TriCeraParameters.scala | 2 + 7 files changed, 70 insertions(+), 38 deletions(-) create mode 100644 regression-tests/horn-hcc-pointer/stack-ptr-fun-ret.c diff --git a/regression-tests/horn-hcc-pointer/runtests b/regression-tests/horn-hcc-pointer/runtests index d89fb74e..2124a313 100755 --- a/regression-tests/horn-hcc-pointer/runtests +++ b/regression-tests/horn-hcc-pointer/runtests @@ -2,7 +2,7 @@ LAZABS=../../tri -TESTS="basic.hcc fields.hcc fields-nested.hcc struct-pointer.hcc struct-pointer2.hcc unary.hcc unary-struct.hcc unary-struct-nested.hcc list-init.hcc cast-stack-heap-01.c ptrptr-bug-1.c ptrptr-bug-2.c ptr-to-int-cast.c" +TESTS="basic.hcc fields.hcc fields-nested.hcc struct-pointer.hcc struct-pointer2.hcc unary.hcc unary-struct.hcc unary-struct-nested.hcc list-init.hcc cast-stack-heap-01.c ptrptr-bug-1.c ptrptr-bug-2.c ptr-to-int-cast.c stack-ptr-fun-ret.c" for name in $TESTS; do echo diff --git a/regression-tests/horn-hcc-pointer/stack-ptr-fun-ret.c b/regression-tests/horn-hcc-pointer/stack-ptr-fun-ret.c new file mode 100644 index 00000000..fa80ac64 --- /dev/null +++ b/regression-tests/horn-hcc-pointer/stack-ptr-fun-ret.c @@ -0,0 +1,13 @@ +int x, y; +extern int nondet(); + +int *get_stack_ptr() +{ + return (nondet() ? &x : &y); +} + +void main() +{ + int *p = get_stack_ptr(); + assert(*p == 0); //safe ,but we do not yet support getting stack pointers this way. +} diff --git a/src/main/scala/tricera/Main.scala b/src/main/scala/tricera/Main.scala index 05771984..21d206e8 100644 --- a/src/main/scala/tricera/Main.scala +++ b/src/main/scala/tricera/Main.scala @@ -340,7 +340,7 @@ class Main (args: Array[String]) { displayWarnings = logPPLevel == 2, quiet = logPPLevel == 0, entryFunction = TriCeraParameters.get.funcName, - determinize = TriCeraParameters.get.invEncoding.nonEmpty) + determinize = TriCeraParameters.get.determinizeInput) if (logPPLevel > 0) Console.withOut(outStream) { println("\n\nEnd of TriCera's preprocessor (tri-pp) warnings and errors") println("=" * 80) diff --git a/src/main/scala/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala index a7265c2c..716adbea 100644 --- a/src/main/scala/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -2726,12 +2726,19 @@ class CCReader private (prog : Program, } output(addRichClause(entryClause, entryPred.srcInfo)) - val initStmts : Iterator[Stm] = - if (modelHeap) - heapModelFactory.getInitCodeToInject.iterator.map { code => - ParseUtil.parseStatement(new java.io.StringReader(code)) - } - else Iterator.empty + val initStmts : Iterator[Stm] = { + val inputInitCode = + if(TriCeraParameters.get.determinizeInput) + inputVars.map(v => s"${v.name} = _;") + else Seq() + + val heapModelInitCode = + if (modelHeap) heapModelFactory.getInitCodeToInject else Seq() + + (inputInitCode ++ heapModelInitCode).iterator.map { code => + ParseUtil.parseStatement(new java.io.StringReader(code)) + } + } translateStmSeq(ap.util.PeekIterator(initStmts ++ stmsIt), entryPred, exit) scope.LocalVars popFrame @@ -2814,7 +2821,7 @@ class CCReader private (prog : Program, } case stm => { val srcInfo = Some(getSourceInfo(stm)) - var nextPred = if (stmsIt.hasNext) newPred(Nil, None) // todo: line no? + val nextPred = if (stmsIt.hasNext) newPred(Nil, None) // todo: line no? else exit translate(stm, prevPred, nextPred) prevPred = nextPred @@ -3070,6 +3077,10 @@ class CCReader private (prog : Program, implicit val evalContext = symex.EvalContext() .withFunctionName(functionName) val retValue = symex eval jump.exp_ + if (retValue.typ.isInstanceOf[CCStackPointer]) { + throw new UnsupportedCFragmentException( + "Returning stack pointers from functions is not yet supported.") + } returnPred match { case Some(rp) => val args = (symex.getValuesAsTerms take (rp.arity - 1)) ++ diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index 3ce0b0b0..f1125551 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -100,20 +100,22 @@ class Symex private (context : SymexContext, def initAtomArgs = if(initAtom != null) Some(initAtom.args) else None - private val savedStates = new Stack[(IAtom, Seq[CCTerm], IFormula, /*IFormula,*/ Boolean)] + private val savedStates = new Stack[(IAtom, Seq[CCTerm], IFormula, /*IFormula,*/ Boolean, Boolean, Boolean)] def saveState = - savedStates push ((initAtom, values.toList, guard, touchedGlobalState)) + savedStates push ((initAtom, values.toList, guard, touchedGlobalState, assignedToStruct, calledFunction)) def restoreState = { - val (oldAtom, oldValues, oldGuard, /*oldPullGuard,*/ oldTouched) = savedStates.pop + val (oldAtom, oldValues, oldGuard, /*oldPullGuard,*/ oldTouched, oldAssignedToStruct, oldCalledFunction) = savedStates.pop initAtom = oldAtom values = oldValues scope.LocalVars.pop(scope.LocalVars.size - values.size + scope.GlobalVars.size) guard = oldGuard touchedGlobalState = oldTouched + assignedToStruct = oldAssignedToStruct + calledFunction = oldCalledFunction } def atomValuesUnchanged = { - val (oldAtom, oldValues, _, _) = savedStates.top + val (oldAtom, oldValues, _, _, _, _) = savedStates.top initAtom == oldAtom && ((values.iterator zip oldValues.iterator) forall { case (x, y) => x == y @@ -582,7 +584,9 @@ class Symex private (context : SymexContext, (implicit symex : Symex, evalSettings : EvalSettings, evalCtx : EvalContext) : Unit = { + pushVal(newValue) val baseLHSVal = eval(baseExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) + val newValue2 = popVal val locTerm = getStaticLocationId(originalExp) baseLHSVal.typ match { case ptr : CCHeapPointer => // p->f @@ -594,34 +598,36 @@ class Symex private (context : SymexContext, if (structType.sels.size > 1 || path.size > 1) { val fieldAddress = getFieldAddress(structType, path) pushVal(baseLHSVal) // keep the address to be written in case we generate clauses - pushVal(newValue) - evalHelp(baseExp) + pushVal(newValue2) + pushVal(processHeapResult(heapModel.read(baseLHSVal, values, locTerm)).get) maybeOutputClause(baseLHSVal.srcInfo) val oldStructTerm = popVal.toTerm // the result of the read - val curNewValue = popVal // the rhs value + val newValue3 = popVal // the rhs value val curBaseLHSVal = popVal // the address to write - val newStructTerm = structType.setFieldTerm(oldStructTerm, curNewValue.toTerm, fieldAddress) - val newStructObj = CCTerm.fromTerm(newStructTerm, structType, curNewValue.srcInfo) - processHeapResult(heapModel.write(curBaseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + val newStructTerm = structType.setFieldTerm(oldStructTerm, newValue3.toTerm, fieldAddress) + val newStructObj = wrapAsHeapObject(CCTerm.fromTerm(newStructTerm, structType, newValue3.srcInfo)) + processHeapResult(heapModel.write(curBaseLHSVal, newStructObj, values, locTerm)) } else { // path.size == 1 && structType.sels.size == 1 - val newStructTerm = structType.setFieldTerm(newValue.toTerm) - val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue.srcInfo) - processHeapResult(heapModel.write(baseLHSVal, wrapAsHeapObject(newStructObj), values, locTerm)) + val newStructTerm = structType.setFieldTerm(newValue2.toTerm) + val newStructObj = wrapAsHeapObject(CCTerm.fromTerm(newStructTerm, structType, newValue2.srcInfo)) + processHeapResult(heapModel.write(baseLHSVal, newStructObj, values, locTerm)) } case structType : CCStruct => // s.f val varName = asLValue(baseExp) val fieldAddress = getFieldAddress(structType, path) val oldStructTerm = baseLHSVal.toTerm - val newStructTerm = structType.setFieldTerm(oldStructTerm, newValue.toTerm, fieldAddress) - val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue.srcInfo) + val newStructTerm = structType.setFieldTerm(oldStructTerm, newValue2.toTerm, fieldAddress) + val newStructObj = CCTerm.fromTerm(newStructTerm, structType, newValue2.srcInfo) setValue(varName, newStructObj, evalCtx.enclosingFunctionName) assignedToStruct = true case _ : CCStackPointer => // ps->f + pushVal(newValue2) val lhsVal = eval(originalExp)(evalSettings, evalCtx.withEvaluatingLHS(true)) + val newValue3 = popVal val lhsName = asLValue(originalExp) - val actualLhsTerm = getActualAssignedTerm(lhsVal, newValue) + val actualLhsTerm = getActualAssignedTerm(lhsVal, newValue3) setValue(lhsName, actualLhsTerm, evalCtx.enclosingFunctionName) case _ => throw new TranslationException( @@ -826,11 +832,11 @@ class Symex private (context : SymexContext, Some(callFunction(call.functionName, call.args, call.sourceInfo)) case call : HeapModel.FunctionCallWithGetter => val callResult = callFunction(call.functionName, call.args, call.sourceInfo) - if(!context.propertiesToCheck.contains(properties.MemValidDeref)) { - val safetyFormula = context.heap.heapADTs.hasCtor( - callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) - addGuard(safetyFormula) - } +// if(!context.propertiesToCheck.contains(properties.MemValidDeref)) { +// val safetyFormula = context.heap.heapADTs.hasCtor( +// callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) +// addGuard(safetyFormula) +// } Some(CCTerm.fromTerm(call.getter(callResult.toTerm), call.resultType, call.sourceInfo)) @@ -1152,7 +1158,7 @@ class Symex private (context : SymexContext, getLineStringShort(srcInfo) + " Stack pointers in combination with heap pointers") } - case f : IFunApp if context.objectGetters contains f.fun => // a heap read (might also be from a heap array) + case f : IFunApp if context.objectGetters contains f.fun => val readFunApp = f.args.head.asInstanceOf[IFunApp] // sth like read(h, ...) val Seq(heapTerm, addrTerm) = readFunApp.args // todo: below type extraction is not safe! @@ -1176,6 +1182,12 @@ class Symex private (context : SymexContext, popVal pushVal(t) + case IFunApp(f@ExtArray.Select(arrTheory), Seq(arrayTerm, indexTerm)) => + throw new UnsupportedCFragmentException( + getLineString(srcInfo) + + "Stack pointers to mathematical array fields are not yet supported." + ) + case _ => val t = if (evalCtx.handlingFunContractArgs) { throw new UnsupportedCFragmentException( diff --git a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala index 9c0163bb..ea15b32a 100644 --- a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -178,11 +178,6 @@ final class InvariantEncodingsFactory( } override def getInitCodeToInject: Seq[String] = { - // First initialize the input variables added by tri-pp to nondet, - // this must happen first to fix their values, as other init statements - // might rely on their values (e.g., an assume/assert over the invariants). - val nonDetInits = inputVars.map(v => s"${v.name} = _;") - val originalInitCode = { val code = transformedInitCode if (code.size == 1 && code.head.isEmpty) @@ -193,8 +188,7 @@ final class InvariantEncodingsFactory( preprocess(terminatedStmt) } } - - nonDetInits ++ originalInitCode + originalInitCode } override def apply(resources: Resources): HeapModel = diff --git a/src/main/scala/tricera/params/TriCeraParameters.scala b/src/main/scala/tricera/params/TriCeraParameters.scala index 088d1abb..c33f85b9 100644 --- a/src/main/scala/tricera/params/TriCeraParameters.scala +++ b/src/main/scala/tricera/params/TriCeraParameters.scala @@ -97,6 +97,7 @@ class TriCeraParameters extends GlobalParameters { var splitProperties : Boolean = false var useArraysForHeap : Boolean = false + var determinizeInput : Boolean = false var invEncoding : Option[String] = None var devMode : Boolean = false @@ -163,6 +164,7 @@ class TriCeraParameters extends GlobalParameters { case invEnc :: rest if (invEnc.startsWith("-invEncoding")) => val parts = invEnc.split(":", 2) invEncoding = Some(if (parts.length > 1) parts(1) else "RW") + determinizeInput = true useArraysForHeap = true parseArgs(rest) From cd28a2efce17249c8a50e05a523dd9c251824a21 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Wed, 1 Oct 2025 16:13:12 +0200 Subject: [PATCH 14/29] Invariant encoding: fixes a bug when comparing null with ptrs. --- .../horn-hcc-heap/inv-compare-zero-bug.c | 13 +++++++++++++ regression-tests/horn-hcc-heap/runtests | 2 +- src/main/scala/tricera/concurrency/Symex.scala | 13 +++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 regression-tests/horn-hcc-heap/inv-compare-zero-bug.c diff --git a/regression-tests/horn-hcc-heap/inv-compare-zero-bug.c b/regression-tests/horn-hcc-heap/inv-compare-zero-bug.c new file mode 100644 index 00000000..dc7c80e9 --- /dev/null +++ b/regression-tests/horn-hcc-heap/inv-compare-zero-bug.c @@ -0,0 +1,13 @@ +struct Node +{ + struct Node* next; + int data; +}; + +void main() +{ + struct Node* head = calloc(sizeof(struct Node)); + assert(0 == head->next); + // This was failing when evaluating the RHS was adding clauses. + // E.g., when using the invariant encoding. +} \ No newline at end of file diff --git a/regression-tests/horn-hcc-heap/runtests b/regression-tests/horn-hcc-heap/runtests index f7128f96..1e3ccf1a 100755 --- a/regression-tests/horn-hcc-heap/runtests +++ b/regression-tests/horn-hcc-heap/runtests @@ -2,7 +2,7 @@ LAZABS=../../tri -TESTS="list-001.c list-001-fail.c list-002-fail.c mutually-referential-structs.c mutually-referential-structs-fail.c mutually-referential-structs-unsafe.c simple-struct.c simple-struct-2.c simple-struct-fail.c swap-1.c swap-1-fail.c swap-2.c swap-2-fail.c swap-3.c simple-arith.c typecastUnsafe-001.c typecastSafe-001.c illegal-access-001.c illegal-access-002.c postop.c postop-struct.c preop.c preop-struct.c opassign.c opassign-struct.c unsafe-access-001.c stackptr-to-heapptr.c stackptr-to-heapptr-double.c free-1-unsafe.c free-2-nondet-unsafe.c free-3-safe.c free-4-unsafe.c struct-ptrfield-1.c stack-array-1-unsafe.c stack-array-2-unsafe.c stack-array-2-safe.c struct-chained-ptr-field-1-safe.c struct-chained-ptr-field-1-unsafe.c" +TESTS="list-001.c list-001-fail.c list-002-fail.c mutually-referential-structs.c mutually-referential-structs-fail.c mutually-referential-structs-unsafe.c simple-struct.c simple-struct-2.c simple-struct-fail.c swap-1.c swap-1-fail.c swap-2.c swap-2-fail.c swap-3.c simple-arith.c typecastUnsafe-001.c typecastSafe-001.c illegal-access-001.c illegal-access-002.c postop.c postop-struct.c preop.c preop-struct.c opassign.c opassign-struct.c unsafe-access-001.c stackptr-to-heapptr.c stackptr-to-heapptr-double.c free-1-unsafe.c free-2-nondet-unsafe.c free-3-safe.c free-4-unsafe.c struct-ptrfield-1.c stack-array-1-unsafe.c stack-array-2-unsafe.c stack-array-2-safe.c struct-chained-ptr-field-1-safe.c struct-chained-ptr-field-1-unsafe.c inv-compare-zero-bug.c" for name in $TESTS; do echo diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index f1125551..85a80a2a 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -1774,11 +1774,20 @@ class Symex private (context : SymexContext, if (evalSettings.noClausesForExprs) { (eval(left), eval(right)) } else { - evalHelp(left) + // Do not push/pop lhs if it is a simple constant. + val maybeLHS = eval(left) match { + case lhs@CCTerm(IIntLit(v), _, _, _) => Some(lhs) + case lhs => + pushVal(lhs) + None + } maybeOutputClause(Some(getSourceInfo(left))) evalHelp(right) val rhs = popVal - val lhs = popVal + val lhs = maybeLHS match { + case Some(lhs) => lhs + case None => popVal + } (lhs, rhs) } checkPointerIntComparison(lhs, rhs) From e4f1cbcc57a1cafcf956ca9990830e6174658366 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 2 Oct 2025 13:22:29 +0200 Subject: [PATCH 15/29] Removes abort and exit support in the grammar. These are now instead handled during parsing as special function calls: - exit: modelled by making following statements unreachable - abort: modelled as a failed user assertion --- cc-parser/cc-parser.jar | Bin 384278 -> 381294 bytes cc-parser/concurrentC.cf | 2 - .../concurrency/CCAstCopyWithLocation.scala | 8 -- .../concurrency/CCAstMaxLineNumber.scala | 8 -- .../concurrency/CCAstTypeAnnotator.scala | 4 +- .../concurrency/CCAstUpdateLineNumber.scala | 14 --- .../scala/tricera/concurrency/CCReader.scala | 99 +++++++++--------- .../scala/tricera/concurrency/Symex.scala | 11 +- 8 files changed, 59 insertions(+), 87 deletions(-) diff --git a/cc-parser/cc-parser.jar b/cc-parser/cc-parser.jar index aa2abba4bc3115799006fe2c97203760babdfefc..e9a63bb9cb90fce4ad163722575913286232d319 100644 GIT binary patch delta 167333 zcmZU4bwE>X`!E}fl#&tzX_0QFyHi2BTN>#eC8!`NOlc&g1SSrUMnJk#rKLMmkoe9v zpU3C@eg47DeRbd08JN~UwflyO@V+`G7C8nkE-nVPja(9;7$)*V%@1?eS}y4mGwNfL z7ZYM5mqH7Y!2E432eX2Jg;Nqi6wqM037_sYbIO~{zVN6j_v#s!xS7UqF7;^!7v>&& z<+!<M8jB`Dfg{CbO`{DP)Q7ljF8MA`s z0*>Y~>YZqAQr$8R!uWSAkmaX?`3# z9=_(Feze!wz$Z^t>u@P5VV3YpT3K^>$m7HC)-{hjN3|kqK~2l_VWH(BBlq+gM~Gmm(JOTrqMfIPAVCky@W2SEDoElz*j+Fuf6Gio1LR0ChVq>Q6 z>DuY5*kfNGrDte(!5!WB2P&XN^#ekPj8&qs;9eoW^i`g*udeAq8eZ=lcQcCia*F6* z712K&oQyqheaG`)kP>eHPH!;H%xXk;kfA4IxjUhJ^=^l#IV@A`(`5I z7tG&X#`Y4h+-mjXr8W&$m9Kg8WJ(TGJ@XFhwwtRm;Z)S0I`sa^Upliq(_XC@_|u1I zDgrz~+SIpMQ%xU8@1w8Wmu=GDoIulFT`X*SyrLtrl2(!yzr5KMf7W9=RdVzG1#O2e z#WtLRS=R7}=d=Ui;WF>CtLoWi>*@z>&(U}}=q=83vyoq>Xi~-Y`@*tdg|I3`1&axEEyWp&K|$edv*j%+Gr7jYx_-8h zTMid5r(NkC{O%77I6T8&rMGuJmlKjV+#TaRI6hVW*l4Nch=r|8J-6=FTl9Xx<+{7! z&#r@%A*@?>B7LO$>dmuS4Jf~UB-V%znwkF?S!!ANjXrDRD`^emndwJHu4(s+B1JdK;_uJ~iRHi_>H41jK4v+fctVFyLJ<_h%~iRIJBR@bynJa3KS z45)ja3aRYpx<_wNU1M44WatJRSu1tjjDQNhvRY1keCB%d;#%4{Mq8$jCDU<_I`^@t zvzh*q!<}nAACnhxY*|C`^LYY>_|L=2EepMJ1!&TG5OK$;TH~qxYt)FUxYOV--#Bfc zsqL05F&B`USDPX0_N(8{g1SX)8qG+(?qmpKk5g z7C77LIYie@JP<5dp=Vkp=055D>t5LL#A#G>t5s73q%Yy~0rod5ISW4dT|$CtnID2H zcYS1wu+Mb{tJQ|ajo(9lip%^ASb2*Dy$EH~k2fRqqN2dbr-l}`OADoGpGIPJe}103 zf@7}D%|{@+5|0v%dwAOQdPU_urZ~#jq_hz*?%%Z97R-&2i>9sbALe6U( zD_gW7**dV)hi6e`U1gy}6xD=QZ5o9`Wv}K7U}M7$9GV;KznJKAgDs9&nl&Csmc?X35LP zIWg@KPA^02yfcu=%A7J3kJm>%{xJJ$lbSrb9Asi5u9 zBA0cJp}KqR`mGsSW5jD%|0J#6|oA}u<0Q)wcIi+kTLetFPy zCaZtWK-ZYBQXlJyhfCwiNbK4=bh%W~WZ0&-eqtmuu$-M6TA9M%X(c^1bGI)~+(eIK zb+ug4gwM}x71orwR=JUo*v~DeR84B*Myi&x$iJ{r|5f^KA*=QSnpYD>am9BsW|P@= zX)-!JyZx6c%`Et~90qxBxU;Jc^4vH%Wu08Y%a>|-X((>Bt*T3O%S^mC5~|lFAZ(-k zVT-_Cs`$xwT6?Knj`F)}T&2&-oK zR3aZ=$m&j4q8Pc5%D z=-|(BdwR6G(@?drJsmv8HbZr>JZ+4>!H&@D?3_1`*S|TpMGb1sS0rs=slb|A z#OgKbP|hU4p=sk-&D({~GzIgxAXyx#fps)Em({i2G;L{GvV0=dygp~#$vSaZR1nGE ze`Dg1(C#f~7lTcM(@mRWVK%`XJZF%z^5|6N>^N)4svpnN}jt;QT0Q4&N$2A(#w)5sh{d|)}B>!24v6vU|9})XqA0JJ(aJvnW=5z z{9+d*5sdL#s&(DDV&^b4rdP)R^^xp=2>X6bpbKuI>Dse?&s*EDFR!7V zox5jMvw7&ouQ-?HJT7XpEvJA19~4jAX>^TkKW4_*E2z7ZdRJqf7tK-i`)QbTQg`Z| zG|D($_}Ap2>KmNuT`+<&+PM5A{^s;qPlq_>AM&bo`pGZM}Ye-Uh;} z_AQ4m8j>9jzCI7IGbb8a%BxzTu3UFel+M}v1q`?Ha$nf`1Mv_$iifQ1vd7_~64Iuy z)VN*79O#4Rtv9~;nDq!gC*5!@2(p&QpT3_)>qXi(?GJo$;usq zb^9C2M#G!Y{H5v>56(;kZsa#qa#Bk(+r_hX{gSon`IXmln#Lb$JRjJ%FLyOZ8V#G= zqg~9*Z(5|yE-&p@uqp6cQm?clJI-jY2Ri-iWYTU_bF<%cg4`V<$LUuENdPIitamv#Bi93B1o zF&14lOqMVAY)#cL%l7`6p8|jUhla|P&_|DIHuWTwUQ;iJmb~Tm?F!IJ+A6=GR_rqO z7M*~{L7Ub;7z_whdUe!>or~Fb`4HK%{#3%IEpCa9dF(!ZKP{7#BXN4gLrKPJggX34 zLwGH2_>xQ5X8uJ?D#xU(sm{cZ=Bg@-04}1KWxm^~-5#^VgR4 zO|nt*dfHcL`fW4l+N3^$P3;n6#*;@jv%G zbIacSB&_3ziia9O#Liq1<04P-@oN9@rgym*~FV~P4e)H=2Q4vSapl!Q>@He zO_^D0vfY4J$XQFZiGcBo5(1h!MZf^FpG1AImn~x7ytYr{!mNS$tmJtrs}0>;r@Hhz zfv!M#qkUVbO)Pd(9iP~5w%@MwP^N&&GD9J6q9LEWs`VWaMSnVL9&G`{bAtHZiMUs> zp${wF)a%!mp@sLB^r;p7j}PcM2`ayt?az(#^CtY{{P2h%^CX%%w2d2b>|VJXoNr#v z?XP5`xsb+&)A2argo)%#kOnWLCn(R5)jsa0oL+$+lh5IMW1>AOSGCv>ZfJf?nW;se zF`2$Ebi@Yu(Ni-iMr+1*cxYG9*?i_KA8;x#n%rv`7DUa;9@jfv^kLnL#0Sh6|$MUF6eL^Q|sBbb)cT@Y45uf+qnNTUMOdD zF>^h0d@*yI%U}>RkYM(JLoo%R;}B3_f43mWrtRjvF|+U6bLWMjpEc7a&viyP{nlfS zJI0Qg>CPTp7{-K}LXAZO+d@~}b2f&x6{Nki#71HgDUQ2*15HH%UxnVKuM&o$@)ov`OD6nwb+4)bvVpj29Y^ z7~|sCOmGa;9CM(t(S#J$&kA*g3lP10oO?@nK(J`WC7mi?$?uhYrQ>Rb{aeRD{Xx^- zFvoAqy)*pvYpGs0Y@kz|4rfmdb_6Wg%QMaFYl&=sSqZWDs+_Bcjxl`-o>35zn|*q= z`y#R8+reYrI~;3IjW(__Z+pmaX`DBIUr@WeJa#g?O7irr4H-9ffI1|>r=P_ubw8jR z$r)LAF{{=6_(%NZ!;u^ly0gsuW|9j(CKxV#)3O zf%wq72Yp{ezC9?*%3ik^c^p1$?Vuh;6xuekR8E!2Jru}uRx&U+nUUp~k+mW2P9_}V z>TB=f`ypg-!=Ih8o?ERFgTB}>#07R-Eh$$F9#@a_m01@G(;v;HBQ=H$JJGx+lPks? zSB~^mDxp8~Wr%HtW<5)GZtXTMOV~+~@>O2H7B*NQ8^qvE`AS-x;3(+Lis-_!X;}hY zveXZyb&0USV%gseLb$^ap+^=`rqfG#Tp#?QFS)`J-b{4ItJ32zu7oEnas|^yBr`AA zjBnZ$7bMK!o?=ww%f>KyGrr=rv%2(nNsCDzKG8j>O7BI24+YT_%X*O-6W@Q0P50zJ zB$tCQJ?1`PgCkR{TY5tB&DL(EvIMhasd)KE*MnVp+q?1Z1d#r!o8GjsAMIv};sMda z>=$kD)XcG^co1jP!W;Qyd7Q1?sYbun<$B6myC?MNKeC1#Gk6oqOpWHIkTwwIZaEHn zMoHlf6AC?o$U*PP-TU@Z@m|*RDMjitdW*kmVJ0{#&R;2R z?atDt4`Ko6lTrZM9+}s$) z;d)$2@NmA+xJVGPF#-H};;2Rh>*#3v2J%Y``(i^#oe9r@uzscb^c+JY_B z>~?Z+P>?_am7B*{cYidDB{z???(R5@9d${RJN0N-Dat&?Es#0ZZ8j=-9!w8)KdCkt z?PkRdxtR;im4z`KCt!rcV4Fn``&q@#_glxllj(ti>91T)s{Ka0CvZcEbN9w_ok`9> zGSUUIQ%uLqVV6&^&0>ZVKxYOt-jZ_C;mskOvCU0T5Gxd4D%Ad@T6?s60QcgijC8Rq zg5h`%;{u1Ufg%q9i0`qEbyx1W!lG}fI-9aAV$yYd1 zp$^cK$1W~{&4R(EPov8Ecy?dr^KF1HpW3^Bcj z$e4`g4l%x`kTDs{9by(D{NNu*X>!h`=7uR{Zx}-R^7ue8>I0-C5<3JhZ>RPAhtaF~ zxMcCL1iA_-BCWGu_;TW)_kx6hxAM$d&-=Nc{Vh+EKSm^cE0-ctJ@d!Q`v#hg#BPck z?#7r+!ETBe?gq^Q*VXgkIgB0o$mZzbW{e%>$maOrOAI=h$ma0j@G2_eUTfY^GFD=2 z`WVBIV5W^_;V3E4Fc;0Sm>e7=_7b}(eAo(uPAjtc$uQ}#rn3Er=Dbpm=z>kOk}BoV{TwQ(H&Nh(H^yX-hjOd0@q(G(Ne{CZp~+tWCNJ{(Nh#C^v_3oY3TJN+;zN zEvq&*eIF14^)vsQjGx0&B{8*R0nJd3SI8#fy?_0>wVn1;V(l}3Dn^y3sgjHUn$cVA z)m|TfeNaOmd<_V0((!?F6a%CFk0=qy1@=F5EsD6;ty5Ly&OvH&a^>522T7{*E%E>i z5U4x6M;Z}jXeJYR8J0*eOhS0ZESCu448qQgkdph1`3U+7`vQ+qB_LJuyQbX8)fP!X zV{i6h5yO+=Cm5-Z5|tiZ>rzi_^MAH0znPqP$Pv^l&bDDgBZqp-h$v#lVt-dt+{lg_ z>->-~7mr2=lkxN8RLO2lSwpY<+n`y6NHLO#0{xkkS@QREaxe^UcEa|}TM(o2hD>ZL zpM(Z5G?&wnME_?=nPs9`RwqM;01{c_Q0)awV@2E=L%Shs-C;LeS<13)BNu!$Z!c5q zi`_iHo=%P+%Akj%-RA!vUeB;ApCMN72bZt;XgBB|v=|BFXKOu5BNy)&Jy;Z%{tSE? znx7(N&xnQ6$&OnVL~dK%o84K&P`>*hp_NiPy_3?$Cn4}!u!P$Qzw`#?{}7<`XGByr zDE~F@M96zg(8!xi|K}YQr&P(elDAPzEVaGa<3+j4qy@4iv6Dym=`c~>;0g;2g!=~M@YGtPU130P<%#2 zAZZ|7?mg(EVMkn9ow99JSN!&~+Yr@?8n#+?+^r1qKPCgSj4JmYAXbw7vvsOutfp+p zKjGX|{*xdQO2dDUhL(k>xZj0TD6X?%G$}?_?W)PnmTo&b1S$wyYTtIKAWZU;Ewx8w6d0!nMv-m>EY$d4FJ%8`T0xYu>`fR3dI8!#9@E2K)2Y0C1*B|hT_x}6?T^+_WHV>m_#SG}LSAiFm^5C|E+Zek!u z(B^9-Qg-w0_FD)1_UnRnIzv1=!vJ~*w@&KGzOc@(QXO^vGS&~06kv{#OwZ`Vp@Xvi8`7cn9Up#l(1Cajr) zxdd#h@BeUklgi%)e`5{&>GNO+kd>QK|j}msH8C7=G zrq><*j!Op`P6E82Kc*F_T(f^{YVjmlIXodipPr2+#PUUk6ismdP&*DK+z}(F?VLMqJnQP@az!4Gm2BHiRm$b3JKa`}FyyMwop|Dia6 zAVsRGOVbZ?Tt0GF3HMOZb%+Y^u-Wl5Rjs6jhU`x!tf5y_T{}1~B+aokPQnCk!9SW5K(7{>_AlKk@+-7J9DMAEZ%lq)}K|#O} z#R%hn1Qtor62XHn2nk}M?BeeQiNLi)3eb4c4=6ki?4uEc6s{-^L0Op6mV@NNfyYT$ zqilm8NG71A1D3$HjUfc^E*Z?f=4hG#=8(!i_}7AzeM@Y3z9JS1fc#~d2nw>UO!R*s z_tXgg7Xtfc3c-WNYoJ+CmLO$~X%YXWgXNk*h~Zoh{v#dz2B}@YXCom-aD+onmX8eClfR~v95M-ugrhrWCTN2h-)S^>|j3<2G(hYTjTUqCz zg~QPfn8GC-ozS@++7*E>I%)m21n%ToiawzVN87^@ zB`k%ZR3yd18xMZ&c?WF)GL~=)??-4k{M#ZhGh4`YIJs{cngJ>KyT2*gl#%x!5m>w( z1Q*6>2iTGvgw8LjIFWE7_(HG|T9RzE7~D7XPYnV2heN`tQ9|I1kzQyI0A=u@D0g&4 z$VMywM+cuH1Q*`-lphU3x&T9gq+`v{p~{JKMB9%nek6_>ZW<317Z7E5TS5XFmuLjk zW^59`@^1$*r&ORrjP#2jP4({~;gtc}zK!$}G&?F=S$VjySZ4?!jKl?KuC+`XG!9kh zS$X*IglyhFT66Nyp0_24=jY~O{@a@HF9nS#l9aXt(Uh+R`0#HXEy@g{u>p(7NEb8BL~m}bMpk6Z@3K|8rT6FNE9~g3BiY3d{RRb z@o$U5_`Cq4e{^Z1AqRuv@W`Gh^Z}{$rx&1Ar#}+~fgcP$L!*XvMPbd}KtHyO_@f{& zAVs1uIv*h0LF2w?BBbNoQ+jATQa!wRM*YtTSqS33fU`PZlm7~UGt7sgPVl_Nmj6(i z`vH`1SN_`;0&C_d0-%3I;C&l5Xg2=s4D`d$?jNxzy;%nlXlY0*;U>rE_@YBX5(tFk z*3UpR0V+x!NYLCVP{+tnB7GeW1blTm_d`Pf$6&lcz^uD-74#R92tW{qn5uJ3Pzas!v90nml*fJoMA_;&xLhLgAV?J^e!giQIc(CAb z2tFd46?7j(h5%yQgnp{#0F9%4K>CVk= z^8bo~kwgP=eWv&)o2Z)#<`E4cMrf*lVo+o#7=lkd|0lIB79b*6 z@ka;|g4i6y^f#*r00B(nf3k7Y3e@!0b!H|`RB)N{*@dY`cxqvkWHk<(1 zk?IfnvqhmQ8Gw-^q=G;cXjf6S6dwYrN5>thD>D%g^fCukb_S&87T4aXMd_51|Wef0x*~XCYT7p8wWZ^Ckc7&!opw>EQC`$ zsQ9lTXxRNEP}cu}!G=w=DG?ekL3hzulz85kfXczNe`@<57!JbXH3%5%$o58t zA0-*)kqRM5i7g>UkYxUG00t!EFOn3t+W;npX)Si{HmoWQ0zoL{ zfMn4Kl(Miw5CnyQX{SN3Q&J@;5gWOGq@z;$4<|Vy>tl4jLdz2w=NGU&5%SM`V8h*`pJSB$KW~4jW`JQA-eQ z280rtmC~oyAwwR0^;Xlyy6j{Zv##nUob*!>uHv0LPvpoN%hklL2^VI)RMpuitKSC& z-+6rfG1eEw+cW*A(V17lf-E@}d-NEU9`;MapYXz~uPyU2`ZuhzF%@WF5xo%6d}5hd zdAVt;khLpf{l1ZcF*NSBn{!BP>tQ<{aq>gHh?^Jep;NA> z@&;dqp|Q_toQ&;ydN&o}KlQ5G@2#cv=-Uqkervizq1ZXg`bItINnblv(N?M==Q}Nj zX>;Nox9N}HgueV(VQ1fZB6ym0@0RWP9j#T^OvY_3yh?)f3*T&Mdue+XTn)X6JyC}x zH_A`O{IPiHSHifo1MI@!2>hDvlIt#c95aazWw{-64}1sHti{*pI!`ihKKEn2co_6( zbxSJ#yAyLpKv;hI3Gg>^IJkG?s|dwG7#Imy=yxFW-^?L{jJnK#AmhRkGJp=wYXlji zbAfE?%?x1f$~A+46$P0$pgN<_MTH!Rn(ZLhe~Ul@aoPbQ_;W;FF#A~$ELdC?gczpN z3Hpty3uM~@U=rA?F3>sV58wq1=yx>XSU2brNrPV0kh}uQ2s4pP&8xwGCiy#KSfmr_zCZbYXAVf{a*r@)?47_h&Tg%|Cb7eVtji6vPXjeziQRMo#+E{+A#6{bW8{&Srp%^D*H z-$aQ=0G|DsZNQTROsWF7`bWvZ!0S13QXwT~RR9v7P=Nm_Yaf`w=mibE zsywX%R+Wdh!RVI*WUgS_Re){#cfjbEW8}z$d2oXvu=~|OUy5;pf1`^EwIKiq^pc5k z0ZE3i;RB=hIJ5#3Ye)?s@H`@mWI9lwdU3GrUug(KDX=p-aKH;MjQ#@z0$Y6#WQ{@=d<`8R)CG)0AgtuTc4!#t zngd`2h-(U9TC`GRDgh8F>RNlQ2v+*5c>4p;Zt=hm1f4Q?_K$YtkO2^62t_q8@CFW~ z0(Hx9Xo7(?9hn%EXSeDgIEX=QFzH{<01zR9?E(1D+&~S$usUGxe7i!9_^JbzKr29X zldc|^>hBSzTn~&0e3r3G#)E63v1$(d-$`1rk1jXob zK*=O`0#p7+g}n>-&(4b+As24ok7y(+6$^ntvHW@rp8v}L%WVP%E|m{B0j(d|762JG z%%vGH;=m95{{PUzhMR$8>;{6P{|ZhE1LS5#{HbVE5h6h_%T_>!BlMvTyV1CB%6g=`}L1VJzsg6q%~iZpey6DV>b3jzdR3HUX-ACTXl zz$Cf=C4{BmhvJ%9NuL8uE88EQa zBRd%>%*gwN3%mR#u=-&Y!qSPROcmPx4k3yK`1h8)m zj{#ZMKKyg#pr$tp&N~iVYWv6F2DDt%hK)oZHhzN1(BCto<{=6u{u|jQfX~P;Gm&zs z5E~a@W^}$$CIK)!#Qm#3^@9F#gKrW-i@*V4nxW}X*CPNUg1wsrYyxhrKVNB}zX_QD zE{rN{OgseeO$ac;kO4+<0FogH0D-O%)GN3lE~XWl0>%1q8jxuS{6LTpUOhgS7{2B7aE!?ZyAIJ9tUxnE?z!Vwft6FoHP@27+l3FSQx%?Zi+-TJBMAJ< zAG-^Iy?*`r)MC}$zBXB_xb|ay%IMx{lhM56>ODbq#K(Jx-=F6FzV+SMvJf?mYB=%{ zac46Odq-xU8f>$Z&^;;_$!5r!iDz?a*j7b{3-g>}l~(Z0LB#jQvaqe4b{D}p&8oph@wG2rbMmb| zLwsM-e_nUtoXa?p%KS;;@h#!#GQu^Il8B_7vj`Ki6`e-37P;T@BXf_zP`jDgJS-#< zvXuh848Xm_ktU{a!Jv<(y1BHo7(uwoEJFW`Dj(}+m$H{s^iegqvir%*4Jq6n50-op zdR~Ss5__^!5|)mn)}3eIQB|uCg7eRgvLFR19WFFE5m=$w91K~M_V8ccEFT%dzX)O# z2zI#eN<|$RMeICJ+wF8%hFWgWw)w7oT!M%|1q@nwkJ`E78$aSvD$a?_(_LZCNn*tw zNFG?rH%ew4HDMJTiO!o;6@E4u%Kt^b&qKo1Q??KGD1)3|CxBA~=UMihG7VCB-JN&E}oJqS8vOC)JtsY}2Rf6L#nR=fsU-vQ@FC&-_8=Su6{%l#Xq+Q2e!G ze3d+j%0*ofX-ye?s(ZPZ_x8mGwW$)bp``Zrjuta>*cl`_`}J)`Dpwr{CO-`=o|_I1 zk$HrKzN%=$uf`7GB}p{DVL#wsObtmtoyoLdVQ6}Fq>dGY;k;fLAsMw{7ar4>d_Z0)A_-G6wAH56{j|-)?=bJsrF;7HmSB_o;Ilt?-!O9mVpRM3#-5c z%X!Pdcb4;3fjO2}9q)~*==qy0s&e>4WU4IqL+)42^M|NZNw>*y_R~{RE+=?g-Z7VP zlfGRpa|Y`^kiJvI7Nysg^NHY2Q85(j{Lp*ase@kWP-JZgS0#tgWNRtQhjd94v~iT# z!cb0BvaM)Uk+7lOK8um}aUXUd9Tuu+c=O2M0Gw+OOf@8Eb)@$!|Fc$6XD3KPp3ov2eDQ5M;4-2FOKFR zrdOmNRu3#hu5@M245nu>M=qh1iQw5_?@f9TyNF&VRQ6EH?^RVPEvE}NmMj|s1EfvF z91Bw5@gTObHkjQ{uD#S}yGk!c+5lJOYKe$SUy}U!GA`#6>Z)G6W#~?l%V#>q1ueVj z*@UalSx>8ec+EytL}v1lG>+-FLR1iBlZbxL@ZC4IRWXqAHFKew+># zwTlgH^k)s!!Ry1exZ5Wchi{6Q;BPTGlvVlE!)vQ}yc#?lZtl8pE;Kk#H}uY=i+{mW zSzI!Hw5@f|%52M<*yJ8m%mlMd{0l+dI_U?uMP9Gs;wrbtfln%KUkZ>o= ztC~@4J&CJ2sSwmPoEL%D31*0UVVUmHdPw+R`QxZGp9@jgXM z%<^7NgQ)}Kb5-VAqB0|^n1tM;xRz_28pz|Nus1pTRTY?Tlv;h zSdRT2nry5zU~;;9m~RtNEz_(;vfA7J^mAG46Y zij&fiXJw0R6*`7mVL#7dVsO2Nv&yhQ+vrsqMqWNUAWGP?@l{k_CeU7lq*MIC8W-uS zJ(&w>9NvXBFG#`K6HJ1GwI_ocDuZi-5b!8LM>wm05T1ZJ3j-t*Yfg0`D;8*(;#+&; z%USAJ1s)Efb4KxgJQRuTSt0v_QvPcKAoj1K7<;r~emqbr04l#f$mqX@kA#BvXv6&~ z$pN6v{vf~q8V3>x+RF^{tE2>gy8DCd{%bTyAm&~sK#3IUwLd88za|C%>oN9B0ZODy z_5DFs|21qR5WHs^?&pS->AXKE?7wy!2?XtZ4fAuOgaXhnnI;MglxzCCU$LnSpCSnA zX2^-kyJ9Dps%X@Yc^d2Fv3A>I?bozO>!#{s#hn+x(0Y^BfuQzqoP#BEQh$<}TaVoq z2SdQ4s~!t@VyiU@s5rTx4$#{U4XMv|2wiS9kYS0FJvDI(Ti)p{&NW#y2VK5e4X@QRu8g`I#R1-#Cdd11KPnQ0x z?1;n9oGh{V7SZ`)V_VieNP+tkOsKfK*BTuu^w-T}EbcY4-A1+uO7ke%btP$%HWG7> zHTm6OmIzwjs3U$qDN@;RD%VWy`lHvlAKGGl2iLxy%3*z3RK!_R-wkGspxb|weQ&hGi0h>XR~v_b8!r$$(aPq92i62VZ4 zHYkt($i(Rj@s?OigU0pv(;qRozJ4E;26LFEF>jt(FijJTwJ25*7hOHIlve4`z{0U~ zdbYrzfyq?ITqH|M8{w#e6=UTTyMU{~so+6gWQx^ox%qTKM5BXA1fDx z;^_i;b3CpO0YY|^@>!!xjI9~VPLj7w%`Is1Ns_lh4Jer~$y=_5H2Fo6ON6a1OIDIg zw5=D53B%0w9(|P$N~4gTyDA?PM=5%IRT>yK;%$RiBomJnMhR5iSwa$z6-S9xp)8n* z*AxVBdx%tg6$Ebdkg&)nU6U7}?ZIVXPKuKgpy|26Vv`gnFL0{|i-jynL#~D_IV%aO zp(Ft5dB`%BsG(d#kW8&&&-D6PJ-1YTDAZ6TpQ`*&x~^D* zp-PeL#KO-)ki;cdb3>K3=Q<0pUopH@OqNMj(2237P7Y)tRMAnPN#atj0r#k}lqGIQ z+FG#uW}Kn#0jUrvc#1A9@nlPeeoQQv z^}LrHl=wAvMT%uWWmowSBN-=2B5K8oC4nJ;yvIi6mhvH1GFy_wlNCpnA%+0T9xs(_ z4h5(8lXBBhhL+s>xNsUidTv_%Q0;qa|ROXZqLCM5P!BHzVEIACP zFJq*a7l#6Vso%PM9@DbA=GW^Bcq%X-ykkKUEqzA3G4mP#uzPW>${+)_GK0wFBB z-c&TjMm0hFx{;+pVz%sdy5YF3HIf3dYDRBc-#TAVr0-7^^Yci$&VT*=g&= z*9VHv9+g(#>MvtT7j}Ng?@Rj#T5dPq-ldRAzt&x$(YZ-Bl72c-U7G$VM2JHBc58&# z8wk0y$^C$;`rh%SGsE`{*W5Cu8sZ39J@#S-<+NhhOXkZ*j2aZ>ru@69!#T+^}~TfvxjnxSjXU%L&L z`yYmQPxKqQHhS;!aLWZ8R9?Sj@JvB~LbJ29`**NQp2Q?~i3355hg9NGTS1I|HXZrU z5xI$rv`wn64d;Dd9VR`27H)l$xIp^d$~T*wdGFLeH-v~ZWa_7${W{Rq>+;sFe_Hx# z$u|4;QK`6Kw&6pvjPF6isY(n`gKrWi`CPfc{I}v4#20Z(Nj|YJ%T7D5BolpFJ=w_5Aw9IyP2M z>!%m=2;>Nkw)ZJKnY6}(o^23i_%)Vrm_wFdK6?!9z{W~%xgmRp&b>Ks7OJD9l@oAk zfAYe_Xzk0FIxa4q)71^Oj~RN?mY29c#o>wp6B`C(wL0fsZ~5uBhK%*7j%LIJ1wWq> z`c#+xYWFYCelNtz&G13HqE{Yw?5%Bx_XDHzyYKX=nbj80@>Y#yodQEf4f90n=wHox-ss-AD(oD^}=v4y*}6I2Eh zEM;kz1|g4)PiLK~Cth$QZ%R8=8(lQh-fk3obt86?9Y=jbU~wY64+^%>qF0YAe<<79 zY_3;!a&^iFcX@QjGi1z$kd@e2ANs!ftf!~6{Kui~lK|}$2X#k*C6)BUkuf5y1O7%znWN5*V?!aY{9U~{mi>|eC+|Xx7Q+M{N zYp}@|9}Dxx--2emn6DP@?d$F$Q6mY_7wl1oad@%$fx@r4ddgR=vxN5I&$}X5IPUX^ zbTo=HDMzf2zvi8IkrMF|$m@1&+QyO+38pUEI=a3f#_~RK<8|BbIi`~)Ze(^2)IpCf5HCgi4 zFgWfzG=~Z`-KP18$iZBXx0_8orHXNEddLQU-jAbsC%P?!^=Krx?xmjD`;1jrZ*P|e z68w_vEkPWee#D>Fw6f2vrTiJ9O|>-BW)0e@c2wu%ucy(6{P<|Id{VuHqrKv0P&^o% zXB|k+b3sG}^|}3u_u-0$VUU{*J%4GlRKsSAm$*ZO1p@EOCQE5@t&ec^!yZl%E0e5D zLg#ml#R|HySIdWkud9Can(SaLd97@}Yc#uCF4aB>(DHk1e*G?7<~8(s8j}@UZ071xrVzcg9ULAN zpH5sYG26GZT|zTY5PwLf>Tf+cq`g>1xcff;R|bFB%A;nbUhu?A+opGmidsI^L7r*^ z&yVg}6rSSj|9V_JZ(zY~WOWG&o_ww&;(n_jhC`XPGz2RDHJLSvH~wqdOD3}ZWrGL8 zp#(;QaeNlg%sW-~J9lw%-=3AU+-UQL8z~0RTL;5R1T^q!m6%SjysV1oQc&tpGM$Idl!d9_I1uAvS z3Sfi4q2lIi40l0K^FpAiLepQzr{ z2~_jXSeZ00hp*0Kmr(cgKOCP|{{Gs*?y?>8v2S*Dl)RS*^OiUoW@$NKWQ!%42^rTiDZRI;LIsu)N_@b2_Z7J7Ov8F1`7nmThX(qS`Vv zdhzb7PZ{r=+0oJc+sag*ob1mCK710a_)!FPDu5VFCQISbq?A{1hHD=^!|&U;uK%=l zQ^%O`8*6(TG3#6ZppoNLc--wptjDft4~(ru&1T;|=0+5}Z}-&ySY2IOYrIn+)gT`= z7O&GY>(3tiJXvq_8&l)A&)N36;HiG?6OXdOj}FbHiIVxH3Qf@g3{lF0-&EUY9E5*W zL4TfJDiGbUo;bQ$;0b_?zLQfO)jlvgIo8SiBXk^M!c}l z=Xa$&%NB*%ANpF9=|{|Ro@`B-In7Y6Lz&0FW6x{fdd2@~Jnind{TCVNp?~d&DZqDW zT1Z)Da5L}vy_X9;%X-=+p9ni80vgZyEu#D5I&KWOpW|WwE}+P0xz@vRyQzN2k*Q(* z-fF=ks-BVCqMA{zlm)k2Y9|ZRtJ>tWe3IPKwH*s84|)-@~0h@yPfaQ;CBW-k}p z?_{p7)dho<-g&F_W|b+6<=Vj;&z=E??i6!GKJkHPuj86w{re=dlNr#dSL!U@cSk|! z@4G~+A8Q}vkO_=_xmTDZg2P;)oB)lzyMTvr*(6|*Fj!LX(JoZ!){5yHvE82)P~);w z>HwY!?=@WUH{-v=okc5#&I_N8EBig&Zzlh`PZ5}+ui|gPK{0B^6^+F)v1LZ&LA@fqafM)I>{U=>yT8n29v1$y=j3fo*h*kgUL|d2l!AZ?uGfA zJ2ALf3Yt#UEf=&sSqjEBMqftXoQ?V`K2le+Gy0O;f?4<3^_l+?=*zM46F2_>BTG`~*5+@BOJxj|Rk562&>N5-4YtnRGB_81C;C_EO zX{cYUb6^amuTIQTbLQIml_%C546TT#zi(kgSE`w2*{|k-don^NaOLYt>$VU2seWH$ zRUG^K%QPRuhX(YqZ09>P>U5Osso#CeX4mZN6zlXfzg?!yUWLcoely;=8l~xLxbwkM zk7JVL=(HLu-~m^0?fGC~aHzdmrWgC>+QiD{jg#LyjP+tlJ@Yil-4O&g$(o^Bqs$4A z!uA@T#Jp&+oDAhit--DOBL>IUT>16oSs{^eFO15vnskij2Iuw$-H!*e8^7GF=a^)@ zsl!U`LBe6BKx* z1gLG8rRJ!GgN`YlT7{yRL-WTsz1`Ov9s!>weo67^%CF;1Xicb3M4{`R>~|9c1~_=2 zMsJF|vnwxZyf=8Dh{#?wLp!{0TKZl|TIt=a_MY#fLV?d!cHU9Fb`l1o)I$Vm$Yc4i z_p^tvf^pr^Xw^Hah(jhbR$6`5+SIDv>qKR}Z+S*F+p}N2*5J-7j`|!UvGX13sjtU& zlj;}2E%x1>*AGk!Vxdt1p?d6WjKD|gJ0sjYg3|T|ol#E~Z&|nRiVbT1m|I?~rwti*AVoDEvRRzB(+bC+eRNP!JHMk&uv*?(XjH7M2bv$xBN}=h8?n-3D`y&z+r2Z?;k)6Hrb9=YC;weEbm&r>8D=#@ zCL<%sP}MiSn5;UFBK%A<%)g&j0ynJE&hhJKpBt)LqB?9?5k9JXsN;q&=49l~9vq{d z=(%nBdmb&7b=f>dzPYy-s`}*FagF719H1hNb51gAY6Ej)LUBZlN3&sNN=N+uA@iL2gh7o*bu*?l?~2?ANg{}a6OOC^^6{m zO^b)lffzKiPQT3hIwsGiN}v8Xo@Y?Bd?EO*tPft%muj4)bU&7Qg4aVhH{sM0ajtXs zp}&{`l+1E-2IJ%WZvk3dlv78n0Sq+t9F@sT@$&m>rxp>zIrQUxY)z0#e5tYMfa{^? zquCMV(Iih3b||1lu@Ot)QGC z?nS@74s_$%UfS|(FKQiX8V}n0Q=wa#ALjhTB)^-1Z+Vmc^SRkw>lZe1V5)fFtoVv7 z{$Njvy_WBi%xz=?%ESwTmb4~|tim~qSl3rB$~Df^Gg z^k>>qanWUjS+UuAeRO>+kyR5V(D@TI{?$!1k{>`BnQNhVK4s{6K*sezU&&&d%j#wS z`{ldpE&B3>(w*V!^==iixgB4hr~IfHxim;DBHYr4wzqnQ)E5&N+MWfmlbR%0?WoSy z$8l0;w6i&L?&J7n4%@5w*<~4ykA=U~Nxir*R3px4bEWt_ z(f*mYcOlE*dFAIURQU|;cVPRKp0&RkuX)s$jrm=#b-Z`_QP*E*8ssjX5o`o*S0sqM zPoqVoW1y~y{wS9PbmC0JCpI%zQeW$F+jH8kTSF&?mDRY{-ufda=*(uReqR(0#h%wO z)~o+Uck+)5$o$Kq@Iqza{YRhS8}2Jj!nhYIQ+&4Mq$p|&3KL(HU^$e(lF*k-kds~| z)@fJ}t7GA}xkWSPa8Ed<5QCB1SI6G$xV$;!{I#+)l~WlF*qn`_?fpdF|Ffl;IhW%j z)L~39;!;01%*nibFRfQtUk&0Hk%0eGgV26J#OUO&ydFp5`%36i{EJ6I0`Q+!0WrZG zaBOy6ZnnT%zSwWNZl3OZ$k0W7R~2yv_PO{AOqO-CK~V_Wg>N8I&YEsf#665E$Hx^R}T^7wSr4BbyK zKTaNf9ZZ`B5jOM>!Q*x>oy1=y@26!J={>A9oc8)3tiQOj4Pze{Y*~O$KGJ3Wge@jq z+$5^jgEb>+@>fr)L|ji#oVNP*M!)JOj$XG6UUFdJ0{2yvHFq1a{LO@g#LUix#}m{AQ6UDvT0gTCVJ?bdSC=+XJcec~M7~*dV+DoYu{LCAs9!HZ zjfJfjEjF{mUthMS^Ta)h!AwN z5rE~_Y2&elip>TfDnpCY^DUo^>+3!jmw(n4 z9qUK$wR%^5j=NmaQ94V5#skxLzMrD)S9Ls$=le5^q-L}-evtENtDmuXQE0Nt-Sljl z%|+Z8yUJvFcwq@%nqK41*B+?ejk=#o90#Z>(_3HLI9lGkajF;2=kuE1mJa-mYR|>rc+}MxV?NY7Xz22%zSQ zi$}y|kcr5`6A{;kkPePbhX)@>ybAi(R$uo)Ixb2>N+(y7&#V^_`1~m%^^CwbVZ*`OggdwB3 zl?G`$fgaXIV~P{jeEUjox?Y^D#Lj>TN+3VZS7Ws^2}&jjxm3HEB89X*F|d@uG$|DC zXhvwszX)?QF?rW|GR7?eC*oZxA7!6L9X~$ihp*T#j0DkO^}OGs+6uZ~XM5Cq9d%&%-&Z$S46iI1&DayQ{`ym6zWL#&Gz-=+KxT`{eKj=zVcx4UUr5;ra=MGx;OfXI!{?`7$A2NON3FjXH zm+4o|I!o7ncI%QMdEj-k9rS6$YPi5tK55 z+uUy}Cb~=D38wwVjj0_y9mSTK?jX1_TC=>sIwPd; zft`R$Mm0Vf{M`EJ(^&;cM3!wsfAi0{fKhQ;yEq|Y3d8j<31Bh7Y@)}P+9s@QsuX-? z1SCfLSqpg1;gobmZ%o{aEnTqNBdB2M6l_zyIC0TpL*}p`uu5%QmfL309<@(6<~b#S zRs)JvB{a{cM}vpj@gM;%g;PmK`=0n4M%?p+UADJikpE^fe?^do?BLMr`QG^lAv|<{ z_}Hm943lpWkd>`bd=(`G-v7i+do;+++p;NIe7S`W#>dpeOXruBRp$LRyGKlMb{?7J zM_r9F9YRFVpj|DEe)G;hFNnxS+)0OvBy1}zw`vqgSodl#B z=xBEoJqTf=GZ6&tu38JGPB2l5dH=5+hOiJyLXpL8)=vd@;op9OZ>2BmvCu@QgrqEg z3fjRv^zR;Ur9qg%Z@%_(x`%Ob8?JUgRTUdOM>{<5fWJ=?tA9_MK*DIrCqDDQRTB`S z+MpK;*z5^2)2b7f7vAVhh@3s##zk=d;EB{cc8CZ|-KQXEKUyPQ;V^$w7!Kger)97aaj>y>pRkyaPl;%JmfI<4r7;+t;zAtFIorxiBtK| zir!IgrgNt9;`c{y&gU7!wlHgOlMs}Fdp{xzpLe%U*_6FjGP9P~Vu)1d@6BNM>Ii@? z%E?p9?aStw`#jc6&1tv8FgLng-qdMxwV`B=HZpl>S=7b|G; zBpwo0kMu$E82*1kkVCTFImEpKqfUjx@*?g_o)ZR*ScgCVc4qTI^Wj%C@L5(gb_Je= zDE88|swc5BQ+ZK*^V6Y9kd!LIT0?d)b%&Yv&H?__6Ki)yKX=}NpaMbGxm!)7G`3a) z^*lC$SC78M4Yi&k===hGfz5Q=?I+(k*NABWv#;@@R0jUm23F%0k zeYV1yx>x2l?HZwyD+UuHz`#S$uGU|^f$``oI%weC*{0)`D2Lhozd5RX?Po#$8>Zmn zq-UP*mKty?&Tt!rPdG-7xbvVn1Q!{fDOe9gV5GI5)!_04o40ShdsU1SAT_Dn=W>Jh zJLt`DnE`T3^TN^&{f;70$44ewapHo)MU9CZUGt<;gr|4eSl$#Zu;Y1warBV#XI)b& z113I3`J}aFKycCW7xOyEsg~o7twXH_m2SvgFP&N#NPh5k2e9A3j|c%fE52u-Rmr~( zA$}qykccUm$O%6d#U}hW)Ex#ZNDCeKESQg|5CDOlEFrFHg%DvLLKYYWmt2p}i+FPcqf(1Q! zjAs7pSkm9T_jRI8FXZx8rV6&RS9kN6ikz#Wbw3?!uu@*2T0sQ5D8!{BUYyzb94H7$ z)f>8ms;4DkxSr_xczzC(0QVe0XfO7-!faP+=0~{=$I{cS0i_ad+KjA3(pi(|*6&(k zbX#jovHXX|d?Ka0oP+_OJ&wtG?OdDAuVP^<(5HRKhx(%F7Of{W_GVj~4q$5#7rD0NKjIkEiQo50`3 z@mQ$S^3kN?MjZ~eAnDACNiInXemX+;J5!9b)m&})Lx9N3=J&kc8`&7gv13Kia60V{ zxxI`C4Bn+8nk;k^IhMBCld$VRih(x9Bk%VP(#bNX);)9vCEvZ{mu;V((h#VeD&ti)}kOP5gu|6Xkt(H0_yM*-nG(tE?NC}`W z^XXj*Jjpb6*P4Ebwu5{$U6EbkQZPj!S@i3!6#Xq-2mYv-;v!AQn^8ylHo6X?(TV@y zBw{K1$)a&cK!^q{68$l*XfAsxp5mL_9lxtaUq^=^AI(%0m%S8AaZ7#(*%hGwPJ_T2 zwNQLQu{NN2@vb51IXzxVt0Ju;KOlt!{UEVFvW-+JH;Sw84#PgO(&x|}e*I`dAC!D0 zKl^6%28sAtK^>K(e@uQUhXnR0B9Yf$6}X8_l2zrn$wt)`-_t^* z8lR0?Bf&YkbVeZ`-RJ|}t)P#(D%KCIcq_hE%%D?x*FR=!v)9<5ykc1D3{+e3>oeag z(tn}r_qQ#G-Tg?z1bG0}BqA-P1UVO{surbJ{rs@BCxU{uFd(9ByQa#VF??+JubjMHh ziBpeuC{AK(6UYxFFDr&Ae!Tua5pDMd{pfJbBJuNO|k8MnYGAHL3vbC=Uoe3a|GDSWwRz|4KZ7N@O=A&4dC4L7dQhh@;B zXdIu&aQ06+Ki}Y%WkXK^lg+_}2Z}M`R!hFAjxZP93GcT0ca=j?T8rnrt%(A`e5*&3 zCBzhRF3jXFQ+P1e!m@oyYfev<5M}yZeC2*~Z0qK!uNu!c80P>{uf`!tjtLye@1W9- z{YVOp>~Z2V8izCgI1{PY`Pzsaq3nHdu#G(2yn11S=tW}3Ko0@42qxi~hrKxnrbM*YpkYO<{05X%mR*IO|W@pB9eTLCpZ&-Iu@Z#j+7f96WRL$NRM&KP52+!hWcAu`vjE;M7Sv$8Z(iE9#ePgKHST1C^Kj#^TjAaUrp^}@&)=rXjQgv!1t}MiIxIROYq}knkhF63&9a%a z@&s31XU9{85`~&7;`=%&xim{HqnMi8luuno*mQLOBN<`~bkx~##!0!0*3$F%@x0=5 zG$^(5_c2=+{j~k|z#x z@uv;#Y6l7TKgQJo!Uj!7q*E4)rFKQPS**&$t@YoWvmG(#n%hba z| z3)&`6ENDP{1xIL?yy#X@T^!ck9OqYdxq1swDMI4!1Om%!`Pvo5W`E&QT)AQO!;@iH zdk2Xhnhgh*n*l#1hinp?2Nth|uoDyIPi!N3CW^Hf7$3dl-X+w`#HoOFDNMQ#3QvR2D5LH+SqKNU}K4>jK=n+Fby6 zPyC)$@#t7eE-4jUB5*4yZ67cwFYD+jA*GJHz=D_huucBc+8X+YzeLgP*BBiB9)`{` z!3nQ5_e^8mQ`2^mVk}#*FX3=G{Hgtc!zcXG@bWF6vfqb8ba~}}hL>5us?RERlP2dPIlEErQy1P~T);yVo3YVr8?UDC>xSER32n`-3$YTN6aN!{;|{dii{(_d_PVENnM z#63c=6ma5lU6}t2XO?=e5a;`H{FC8Dtr9{{eD`tj$Gq`$jZxoe$c9#bHUT7=xS9gY z;b1>FQxUxDAFd5!^&xK=VoJLJs5^X75Dn2KfAJp=;c0&p^?x_3tsM)lQc%~-WO4Dn zeRL8YG(v23*C;Fq)b0tyKP|~D#u3X`=|p)IV-G3G2**GC+ZWgs_T{3O2*=}Ljd3x> z3BygZr@!?@!XD^1un0;MLnnCfDH&vM{1*G6_YI<@LzTrf-1{&+rZqzVCS;^?&90qy zuO87@eR9_w(Og}P_)vP~2HhAgN{t&6qJhqR6c=%ZNRr21&Yp8l2X>Z{LBWY3v0O&Q zoZ6}P^U>N4W)@7zEH$w4vRMP;Hjjf6zeJ-~4Xx@Q&I6cc8-4TXT~aN{oY$E4kC98^PfKo!`_KscFg{0Xg`2rNrY zcAw=ib7XcZb=0|im!_BZ_2toe9xrvV|Hop1Al=m^YlRFoiUn@Z@5~2aAt#Zkz7maJ zY$NgTI7;j^qYtSHiT@;8>MF9Mk(sn~SKCal#dV%siqGomnSVETPqiui<~{wgRkm?F zYCD<`2&w=x#Z>|p9m4U}v3e!kIcAc{H+<=nXGv22-WK(BQ4U(K#lt7bBcC zg{s|`w*oY3-B%`bS+F?2q{N@Hjg>8HvQv1ib^!SISCWT8x08DKq_tc@bh; z3JK`~JzENuU5)rZYdWOtgO;Xjw)LA?9>ahiwX4)0_3ilgF+C`5xucrZVELU16*UdN zTe!brbC_x4nX(LzU2z;$O1tj7{MYP#O2Z~6>tkU*58FH@yQpjg_ss=x7ppIckGprc z+E}C3Y7GIE9--dJfg4VNyYBvVvaNCzCKV#bl&j+Nbn`s(tn(uCjPnBX9P<*qG`yU= zOwBU(Kc}~+lcuMq>!<%rM^BGTS4tE}2#@%9BZz(UI1XnUkKA z>58z6u#2*bwEF^!@WGwHoxnLIUd`ij;%kx)h`0fsb&}XP>)7>E+xQ5y13V8lkuda{ zBmp7QQ_9%JkdGUgk=x=nbc^+U-3uQCTkc&x%nzRQ7pWJC7)1_E+T~qHxHj0qUbY5! zHFmjd4GyTOp7`%coL5_=!~Lu6l50CtZR?D?lO)B zGjW(n-y~LCY;6kjHo??{XO2JPZCBp$?kku*me#Pq~LE-4{0LUaXuMZ!Em=@ z$|aA{sp?;O=E3h`mxl`C8C+S9zp7}$d3igQ&-rgR6^*5DrQwA9Zl#-s{)=YJN;fv$ zEqdK8;fmhzLfWOK9>Z8R+xQRt8BLGN*gh{!n5(YkKhRfQUwXA<{Hsg)=c~2Spl$b) zC7m);`b|H-z*agX-9!_5yMpb;fGAlW;5}~sW4L6)cw!iqd-TB*kZ^Yd+>a#Pk7(SF zEcr7i2kh!);H$99?$(Y(-oP#CAGR@tzkb(CdPU)nkk^i(<5CxZ{yuB_^@b-( zo-~+{H25WH@CVZ1x1_Dtzp**|ET|7!*0KRO+|wp^H8O*)_hF3VVv;k-Rpmvk^e;hSe?~;B3gV4 zA29ymg8}K7E%Q@z7H}zE6I(jC0qm^o?J={F7kcBtyr20igAW^Z)!3BrxSKp(Fnd_OF2M@M3PDzfQ zTD9@9-G_bH!24FFQ#;{+dK06sD>^d}T2_PP2`W6wms3;upUYG;ce(A6d7$UMZlETt zzaVSI-IF9WktB61gDHj*G#P&K@`f|*j_w5erUF{;VkjpSMG2ndRD)46 z@SGnEl>gIqFURDmYmH%O24_O;%+21IWK4GZJ1gRDmj6rL9?{tz;n^N(+8*)r!@bVx zj`FYOJrJCjV~eaL&sq6oUk|WqPAR*E2fb)KwT<-b9u$(Avot6&xTjg}op6?LuD>sL zIzZjTynjE^je&dP66yDCP*llkQWLk8v5zu33u}+_*O6tna0!?)7WcMZ^&Rz@OFK2% zm_p%in^uf_*+U_tBO$ptBTCd>>X=^Yz3WHTK7{dT0n47o-0rU#`+0zC;>55|2+t$o zcIN@b?{D#dkl9XdQNIwXhq|*JBkJU6v}Y{IzCj;C?N=_d$K>pGZmeKAU(+1w{>wq3 zxi~n<_Ct;PWQO3rz5AqeZd1;RP>3h{PVRnx16p-Fk*?sraxNU3^%0?Y$kF$$yFSLO zq~?kQ#QMmfb~5W#`W<*lWPS#@($5mguv{}HSe$bFfobdlXL&^Ur9YuLOh;y;eMfuS z`TC;nQg}XpMIVa+NKX51NC)tZScG3L`R|E@KFBLSy=Dd=WeuiZIy{0}S!8TF-fbAV zUhxuF@oc*c3mfLJLdWT0d)Wh>%Jgu`q z^XOfY|1v9|kFH(CdWWLE9(vv=KrVTi%70r9nTz4B(8Y^wEm7X!D z`Jv?hm_|1*a%0S09^ksOAWrCf2@hjOR<`l zxl<(x;yb!;%I3CZudIc@@pih8ha8^e?qTo0i-Efrk(`H;oCowQD=3N4mQt~$-Jz6- zUnx@-mH_Q14{9S((u zLE3OigE1gm-P!`o5Z{vdu1M|g;q%nykhQe=0PUkkX^4c>5l7uTrScIv^L0^5rEktBPXtD~x*qu-}x`GFNlk?Pn9-L1v7H9lZ zaO?B!ifcg2g2zS*??5m-|-zV`z*A5K^u4wfS6c$_GGUE6-Fn+w#m_V~`jX)A(W zTz=r;yOXyLHqkuO$NJ+d=GO5YQqr5My+xv2gRf25qkYZ-`KJV-#$KeU#+7uG;qB2$ zZAo_hW9^bl)@_)>Ym_rq)Ve@c!k@~}=$G0O*(%!#O&`%$TU|y;}Uq zS&euW#aGZ@5A!5l4D6RTv}o+9u3OPQrpT!8oiGXiJHuD{#9WsZoZW2%g*a8lOn3K8tSZA=&rsL&*GkVE1^M-o6^a?XAg=o*NH; zQ*W3fDf#Px+2d(;`)c^**&N_}jgcE1J+~F7gDPnH>w(SViTUlI3A$J0TSn$U9^TSF(S6)ZjZ1?w>=h?lvSAkHC=1>Bko`fC}O`h@Bv zH5ZoK&!8bOo3rbf^A*fsHVd+q1o`0CBj*v9A_02=A%PkU)ESr3a}c%Ro$Q@j44pYw z4ftYMZ^%-j_wy@*taRWt&o_wG9D!@5ofD?@?@yI{RV&%?%bv5#UH%PNGPo3Ie9jdE zu5=A+j>i4#FW>$Z!++eIIKEZvBQJGdOcp%lMYM{HoQGZp`0p`>6gWD5tYh6N%INag0s?4FtB30SY2Ib^;Y<0@dU&W`h0Dic3lI8ZqqYo#k#3V83gnw)ktce3D?Ld@@;WQR{GB zg4}bD)a{HKOP&&6KJU4F-ZS~UT#)9HXn1QXrZ;P~?9VW%pMI<}VCBlLwAEgBW?uN^ zpm6>lWP!RNICDJQu|4d!J&dtE9JxI#$M(IVDL^sYpO}5r7FRgtGHOP6rG*}pm%{#_ z(-R2*WTc;kNIx@>ekLOQ%t!ddS3|m@LcU@`hTsy6(fC_zCZ8|ww?|KMxtp}@WjZ?7 z^XUj2uve0Cxruqh^Qo?B$q;1sUJbOjevCO0hvABH>-y~074y~=_14vv4y~=B2Tje{ z!IDqq*_q`%#+mbl%i3jkgADbd|CavPzOy!f$PGW;Ubj0I{ZIg(+w%-<3p_)`I>W%q z?hn2155+1Bq;f6|yi=mPck=&+!=th?{l+XJ{o2}1<5_BR-y3XD$RJrof5)?l-sY9g zm+tHexvbrSQz(;7*r24r6{&E~Qk;F3!H(59^rp5x6>N|~43A;BrVF?r}FD z=!TMzJ-#ACKdCt(b8%NK=I#;hq_)w?WyUYyM;&{Pb{6nQGtj~cKXv&Bj>z!I*K@nE zujj;GFnzbgOJ?2ZsY2;MRH7Y~idPnUdQsGHmLJa@rbh;TDlHbSL2=Q});9QBne$ky zdiZWcIR6B2{=wq>qrmxxv7$ku&3cy!aM-n18{Pcn@3R>L_Q-7e_%Gu1UzJ~9lLc+~ z1f5>(pV=K#^>vVVoWZxBS?!SMzL5yX9VDxRyqh@tb@fQ535~;=^}8r6k9uZBOSNIMYk7fuE~r~D2W7Gh8`;bACa7K<+=9BLhC%P-W&*`Moj@*5dwrgYAD)xzu!K z*?)r#Y8?a@_xnwx%d`)>`7Qko2YOJ;69-oGcAyKp(>Z5v{l~>30FgYI^Ut34DBE}u zZ^=vQ_mxgIc=>zdme2W2&coxW3*)K%UEX3E{vet>dkwb(;5^?2bMA5NIB~S39aGxlmn?-oX`isD;WALct6O^EveE*TITbyQW&Kdl|3k?!K4T;Y|%Q=X`*)An#e@3eodi9rKnrvbn$`ky8Y9e== z%Xw|vquS!nXMWBsl1}@5d^_9vik`~p_=)~PwrkCZRDawwm${c`#dX6smf|<2;x{DX#roocC@i<|fMqr8d(N1kcFX|FR;j)r z8iOo#%P+h)3FaqVC;_;ZTQ&8GNy`e3W0vkWq39$s+$4=JqdLbe4a;6e1&kMxd2Qf# zQiX7T);vr_{o?a}o3n_v|0nvv^S0h(zdQLo>%(nFFa3a_?7l4LWgkmtb)Yj{4Ev56 z{V_58iE+7b8%Q0CvMIs+NnHB_b66^eG||O6tW8Z6pK=>V`ALu&2(*gJea`kNrA@B) zTZwv-HY2g}=`(GSfYMD(ZAK+XDo*M9@Oi?zc@gC!LT2yEvTF_RmM4dUL$A7WYRTH5 z3U~EX!Ez^e9}n*#o>!nUl6~amApI-%oyX+-{I=2ABEYq_Av{|JM?F6Z{6o?ANUVG< z5*d^+C~guiwiGWmwIS@IVsm~r^h8z9e z*mNpQ1Sl806m901-`%io>unb~&nSVrLKx4b(f+WaN_?y5NLeOvs&`snZgD-4B^Nmy za>ZIcM)L`XWJ4!DRpDFqc0I9mJ-Orc2`A~IvvfmQ2FK*RG;QWsvMgU;j(0uTb2uR~ zcg{M9Pmh(I0UWPkvIozN~;GAzK{}QN3K2K@oxLYev0Y6>zFg^t1t} z&xgg|#Rq*O381%3L_3*53i*Du&9PqNlTE?NusVk;mio1IBG$=^kUTK?*dMujAKV)U z*OR%8Wl%}O)RpxQT`pdX`f?U$vR(VSMazP{Vez&2Aa(M4Q;wULefckzSx#m%ijr>f z$WP$w%llmo9Evs;2SfQd%W#wcfk=Q2{rxE)`AOXRG6|BVWMgqOw24!{kKT$s+-z%D z8kC56&ny$=KOX{mBRK?v8{%_@ghzl8^qXeYk0yQ%p z|64r1pNlA7eS(1?x9WVbF%S-SZxvm9MkST2&?Cr*KFN%&fSIs5#@QDl zHJ9M{V!*+RVLsoRD#ClKewI|$r^2nu_~+AVj)5r0Gij1=WP-kgB0yy&WO~op>j0ad z-K$jOW-2&ljbp#ZF?FWW=e_YlkL!Q=3M_u8A~!t0!F79Yj^kKoLn*z)s!BHQ_`SA2 za4sG}Y+bgbiN47afX>201zg8jcVbUsXsg1_(}8c#Tamu{=HzO2rI4oYg`MDM*~S^TbHNQ zQxl}tEfKvSwO0%;Fmws$;#i8b3;>gr0edm-xMFA-qGPL3R5oJL8uk4}j4SoiI?nsk zbNN}d4;rz^k0YFbiqY=61`J^C?O)>De|UNSHjf|RNq*oC;8fxDzKt5}5q}quL{Rr! z)`g7Lu^==`9?B!(3k8Kzk0;=|C~gjViB#hW=^{3glWW8+>@vrHPXNP@ude#JBBD^fmuKX6{%fi8{MR=b zGop8F=?yKnvSH3xX6f9rVkNv+G-c6O(*GCV!%>X!k?*aLZ}>%2AMI3w5Oywt zDaWHi8q6Wa3=A?fter?II^@Ef`I^f#@~cwya;v5znxfj(e=iPd0d2=FX^0X{OR9lm zddkuJ(oPcP)0f(*J=%`ydJR2kM_NpL7$s%?rFi<o81O^>~vFyR1V=$H@c>e&5E7*hgkHHF#;M+x> z#93~IYiMx`6z2+R(+t(~hcy_(9L3;*Y@Vu9qUPh>np2`u4;C%uiVfjK3TXC%^({fvJrKxUYPmTE<=Hr2}`5jW@ftC3}rMBW~Q|lGB z;$~CbrsIK8`F@cZ2vsq-G8-H)@`vde! zvF+8K3QWsDu!zBDjA2#R(4R;GvPG3`ul`hEZU#bF41ix4!;Y_^jP_u+X`TY)AX-y_ zDH(|OV(?L8Sk5)H97&krDL@XQHx-zjf#4T|9~#5fuAv}%aLyGJg!IEPcxsk=s|X}+ zG9Fl-k9f-lH}i*iwm_Y(phyRuFY*-B+4d?-1tP6(E(VV@hTUI5NgTk)&PkjA@c9yt z#W&kv$*Dj{#!8n#o^`M4_(M`Y;uBkwuY|}@AktI>V(@fhyYqbCSOg1O)2)rrP+$v^ zmm}Z0SAP5B+`d#M9$a{%`gykLQ?A(cqsKTM<Onh6s$ddvVqXzk|?!(Ql5HfMk+2+VjYZBJU$;`gj5_$Y3KpzOA#?R{J#-X zV-Xl^@PAiO4o7g0h!zVhvl%LJ1h!a24pF5Gt+NOB%oxWa^pGtTREB^Dq)!dR;K#_O zwVAO9TsHW*KTP01VY!IlCdM#{YpC0Q!h%>}zRghJ7`(N>{jV4ltnu@$wLk2(1)7nM zKxgxmoO&qA5UKz@DUQFL`yug3PQ8uX+v-VM$G$lBN!Io)bOt^Zxsk3^o5S?`HcSB# z`F;Bv?c1aNx8R$PCZo+HCJJReMjGH7tK-pTj$`_{;1A4mPtF~xSoM?Klp_G{y3N$@mt~LYC#oqPYBL7A+H$@N%#(q6FeveLs z4}DEl8}R!{`;v6|*^?tky6=X$Cby@;`^%m9MK2% zb%}4X?Z6oI13={Q&*xuEC+h}4m!`?6Y^F??rbSiCrz>lZMIJNDbV^#pwaTn4GRIEP zNp2>lyyOlLcug=JDlet@E+)*@UQP;Y&F0mzo_od3o_UFZjU|)?3Mu3dYdw1l%0 zVx}9s?wKeRek$0r<-KC~GDk`4MVm)hDl(f#>&2b-x>Sb&(aZ!^ELS*~^pcI3OsZV+ z`*H^`#Z!P&n{kLbKeI-Szaj zpi?$>BZobH*4C@w`G$e{nM$VoL9o|9CNW7M4DV|SvA<>nmFjKcw9M`nUg;OP!(Ug= z!NT0inRCUoSN8rNBdF+p{T!Qbxb*!wI)8EL9_EXZlh35XIFnj@MW__)7?CfJA2&UB zIC_Z!;W+?n`DZ+=t!RCEDaI&`1Qq(_`=UI-ZI1#Sn&5kT7?+o5{#I$`vK$H1DkVJt zM`@Z&46IW5s zd*q(3^})$&yL;H@D4A{JU)SGpoL}L&`;qjBD4!SI${z$ZT5oDlN6%s%$`IUf2GJ{1 zmnO;`{Jx4|3Q7?tD$~{BT?{@!IfbI(H>l4{US#qXG-$`9S4f_BbyxVl49-5WE zvi7}WkP=T#&l?sGVA9STn%!TA=jhHiAO7{a1AiLG$l0BgZa&l<#CR6SuDt=9ZRWm) zs07M)r$>a* zluKXID!OeCsWTtsOZA3ll`02I@jm zwd_boj0P@|v#~0+TCJKm1)Y8qZfKP0U!2f10izr&4k=e zCe9d6Ao^DMH&5Ji>6m$n%8uOCXJCXju}#OCDc9K<9u#SIZ7qLQod@46OSi&H-SV#9 znw%+F*tW#;6#4i9FvBrVa#G#>Piw>3t(q}a0own_Sf43ltgOtPY@nyGzsK|tm$T9K zVaCNz8Co}>V^-E?B2u@I;?q$7z225O5=#~XxNPEEa61lxs`Tk7y9bIGndceq^{n=# z*>v>k6j?f0nU`e_PQII7y8qW$p|oP*8yI&Oo48Ff$W!`&)mvwjvQ#{%0%bG|=N=(^ z6gv5g1u@N1hT3>3ajXchSXC{(SN1dS{xpc>*_w7&-)5sdtkb+jGE3q`nLT9V{?DWy zutX>{{n%{G)mgK_F^Hs{?5})K9Q#FEtS@5a56k3%?kmwwG`kUp?J0a^*Y0#jmt1?M z{Y66$b#GBCCmD%Gv8#-*F)~Y&f%g@bpUgqtlasQA# zDl6RRA+W%;8;KUVA(W02xs{7Y3Z~I^pcTu5Y0S%S{zZU=L^RAsfiWLDFN519Y|KB( z%I_QV0CTzNa>rp_3Y`}vK)KyU`*dQpF}9jqWj_DIGMbtaT!>Ceyt2#rO& zxy37ATD7Z4itwY8UleD4QpXXMvmeehs`zCdL-YazFEZI1vr-gye-@=qfC^HNIV=BH zn4(nvFmJZk`31jS*2ScoA)DLldd%NCeqJu`eyOT16Yt@@5oI6&=JwzikrcJ8GgmIe z#WVxVX67xX6RG}-&{t;;FDwSVjq3E%gAOU_bnR6tR8f@sWG!=+XA$Uzaru}q>^2?ALesN z1R2v#SFk7a*WIeP^Z`3*OB*YTqz_ZX2jDjil|eI_f97Sx3T*440Au@*kR6gsz4gNc zqs4CmHTr)ao(0}TjrGU1U{J|tbk*egWb9|artYg+29;i&4L7F=Z=(Mi~HQc z66S1|8PBNjM$4B=Au?H~t@yFgVv=TZ+)ty=Tw~7LvcD<02w%}SjR=hmDsXlevyCgp zmupZTvlg5$Z>EcyGB5Q%DN`Q%cd@Oh7_%gPLqeaRC5&C5xg*_tXa@D0 z1lnY0%?$ncLY_5&i`>HgfuAwg*nsgHarue03w{o*&<(U)oOc0a)K=h>h1>#u$opXR z6>sX*=9?ZGJ|qlDi4=+f2~!6X`m*)Dx2C0Y!Cd7B{uSMW3L2&R<4G=8`UOffrQgW} zXfOK}^DwSxg?DMz84coFGKsi;ks08j+A~Yx#j7-31|8S_q3b7V7;q}=5(YdGA^o8ahWV`!LGi75*QQb(Ue6%a*orV}lcI0qs(-=2%A# zyH&HVc`s$~{O+H=qEjZQ6V&$~Wdr>^?IKs={O1lbbd=pl3HmezWc0d_#m}d^0BqXARTl8UC_D{Eh&h zMv{l)MZMJJ?Wtvmxqd+-QRQ5-RlO>Ud-%tVn1501M)J>JF&%E>uDM;_h3=4urM>>c z*5MPlty8)Kcf};7VY6EWA^g)N%3C(#>|aIFt0~Mxzg#Zu#WYUR&6q+@T9IKJV*Dth zNmrP9F$y)J#UQBA)%--)s3i4j_|6#E%>+07{0_Mo<=;SakZr3sSv32)X{9QM8E}18t*Dh<_QARu>krEaQj_HDp~vTf`$zRCqmzHjvw4Fgu}V=7 zMbY5H`1@N`yldt=Fku+Sp82Kp0l`xeb!nU$N4eC8YI$evY-6oB%u2lfjrhatkIy_f z`Vs~TQ_BYBEU8@jXqL3`3vxv!KZisL5epK3JI_c76sPGF0O4s>{L8$yal+bR{7G|r zCs(WWdkm`r{CIy(Jo1)H7aTq-mj3()ITxubQNz~tozNs)5dp*TyFa1tw4FL_^{NJPhN~KtJ2&Q39O|UzRkO3rUQxk7%OkE-p ze|ERfH!{jyAQNm9Hg97zY<$fg!UT1~|LC%1VHEbK*#*yb;Rkq(mcm_T>3=dJ#k;Qn zp*UX0_-Sfo_8Wh_H_75zu0I@6O>SC`g+m1PSwKAc&VK;m{F0q_2+uZ0gyyZEOrYy)zFpH|wnVHV=Jmdv6z!&$=-I zVSfp#_6>+1$C6{ayvwC&RmE-i*ve~`L&Y=!vgV4u=GH_0h71Ecb%t3F6KEa`z~AmcXdW;&4jTVBOnbA# zR@e+UP7$=khteB0hCMIzIupM4M%db7P7i>OCi2a2h;uz zHC0vqLHDSS43|Q?JjPcd+p_}kSxIwu5z0XDid4hU(x47q?sx{^PI<}hnzypIf>547 z-QSFC1n$(q{Zsb6UxEbsS~z^KEJ-hh&R150 zgPN|AW=X(dsJXFdZ?}>jVU_PAYiPF&Q+E^BfJOt3t}|bAX`c5^*tgx`u%`8&pe1y`<0773Oho6WENTP zvG(_jJLOd_baQ=R5f2I;{dLA_(yZAXw+e*aJi67S>8siIp}uYI;YhV#m|K>bwQT~V`| z1j=Z~L$OTygV&1_SNCgiE94z*O**ERPVBp}@A$_CzJVPU%>9ee#|*w-Vl2uA7afm1 zddCwM?9sivVsn0t6CaEC1_EC#NCy{XkF9*aR9K`BEbbm-^j4=V=wo`R#+r^)6CV4y z+wNAUSKNa?>GBF-cqLm1V0tOXt_^=C1ci6_M_PDec%@r-|6UY5HtRi2_NK-=?j`e& z68*49fAPT8OBG+oyqFv!%2<;ZU1z`K9wO>u2HzRqKEj=V#EEf}WC3tu-YCU(4x14k zdtRCh#lw%Au9B!L7YbM(v)@21&Uy~;Ad30?9n6c5A%QfDks*OZ*3=E^NRK)%TkgGG zc*i4TkJOJ!wKZcrAG*VST-|pQ9}D+(kse2qJtjUgEKXdU)^OcWKAP5w?+loSJhLx~ zhd_vq&3mIazi(D=@&be8`ymTG8RHsIlM`(wt@yZ2sdJnVc`K1&VGJrB;Bb!gU(#e- zDlfRBVbc`JT=jeo*_?iGVaFN03;Og+D5QqXro={K)Y9f zFu=Xnzu!l_D}1wahw}k#UH_aNc|++Of_%p81N5SziD{fm0$gGlxcC9(Pir50n~4K_ zV&gaIk<-UmsM+r_$f!q}Nlp06I`q!bxw;VZ-nW3%?$tunzyD(i__9Y$NrI>FzY-41e4IqV*!koKPm%NknSMP}FDXVY zL4aoL8FHA&*jqR^jyF$;J+jO9e**zFvCXg_jTpIv9jfPyA!qNll?w(oM-~-B&Iq?3 zFP@P$%n#l3H&F-fdM{pRL#SErEJLU{?(jpXS?=6=;|ZP|dgJk*40_`UpL}}N@t$OQ zw{Dp+gJL$z2Jal7JbG;(e@zfPfqEzKpH|7lM(55*-FoLoNZn$CE}H@vLE5n!qb~SQdMx(go6W*DBd_T^lit$m zW{1>*#hiVTt}u$2eD-vu${Nf5xv^LC=zy6#a9EzVa+#6)5Vz=yNn|V^RW+jgryBTx z^r_dxK7jU}R?vFe&Gd_jX0Bw60hvn#lBGiPkLCD#qE_$>ccwVel*Ywy z{ma&D(&+2_VdrELaY(`-$Df%`RL#CKXx$`FpGWg4@fJT&Hb$+R?DYvY5+@@4@c4`S zF&AZyEMXoO9sh}HbRW2^brMBQrrLx>s<;!mqWj$33j|)d-8|Nle9A6V8f#*3_=4 zU{!+Dty7d~!B&2R#&Q(c#d`{hEap0q_s6L+6e5XG$`G^ah?ly;M^4zpwNUDW>$j^( zezH-6vd?^M=35B+f<1`rinc(5M))Kd`xed|X4T+mgz&H(naus^(oV;E6s(ax%v+j# zy^PMKtNLB;l1y7syCFOa{srQ-9@?O!u|uC2AH^HO0^ zuLo|>`G-U?Z^wA)qL7`Mj|`AmHxTg7+m!~+d#thVR~p$nLie6LXvskD2Q6Mi0Q$mh zjz094DCxb--*7u$3@$Uq6V;Qb;aoWQv{c9y0{`nE-}X}F?7^E83MP2cj9np?&>J~P zqSHb@Z{M*a+VtXk)ONXuV~$qLvL=#!P`rFK`CUX_uxs7h7IcHdBX6J*PlG?V36 z@@ja8u+8`)Dc|%$G^dxnhn1oK{Ci*UM+avzW#W}0f!9W^QarZ z={d7I+A%e?utz&2{E1sv=viFRG*qzj*k8+vkL>kY52C@Yzr6Vp0(6J{?FjsD{=)Pd zo1rC+Q;Ml6+o)9LU~kF*=1aXaiP5acNap*Q2U_Rk{nbpmoxvKaK9A$W>(MpdW%*qC0WToYT$7(R%@c{g3K zr2O^zk#Zv67q6coS`O_cOZtX4ui{d}z`ACuvrTUm0aw5*j}1BgWBej0lKANjba4g8 z95S^%TV)O(ix{(e6K&?~gpqiy1*UQ6a^q)7)~Ko8P1>_6?FZa36Roa<@|_}7xWaQz z@a0C%^iC7_Y@HWAdyV+?$%A3WBEM|Kwq~ee4Mwh-L*+*&NWs(Jqi&Rr)=iNGiAYFd zLP<5@acmJo6W{iqkN`x&O^vi7qcw$~Y|l$I+Lq@}SHIA7T$SDWJ95`K{tJM#s2No+ ze+T2r-x=9X0wLYe|C)wB>QowBwr6fLO<(bE2MPK~fSSiYJ0Y9YFeubjCOvVZePwmBSF{PAE#+%xH9l_j`u-9vmutgb->=Ft z?bx!g-=r293h{4Z+RUZh2X8Z%)*mWtk?oy4@Tir&4aB@5=r&tgtl0b@ETb)TLs+@b z3PpH4E@bqjnXzA7$t7W}U9RKI#4Y2g?n%b{D1(fXj|8A|1=iZuc<=Kkmxur)Z=U)Cn?OabunnGgMH+z#SO)beh8rNc_JAOaBmkIvzwv0rU_XJTJuy63yHq|vM zo|mAyXD@b~Yjikr{V_dw3hKkLG+QG7-8TnF7NEc2I~AFC?0zBFv__ff!#Ku@H4vV8 z+!iVhZ7!b;%PhD~`-H16BsDo=T8nq(6wlg!Hix4XWd#Nl*d?FZSiWUg{S%OPQ_z9n+5S=G?(?K!^)U>= z`yTuDJVU7B8XI4!C(*f{f{yBtP$@TPTk{sluaFK^>98f|tylDb>l>wG==;ing7Ly) z_fkk^(p25MVSxT^r~=(#+bYU`CVh}SWc3H?6xTs#KqKl&=hx7S{9R)~L0luC^Vr(N zrIVaarSm#XJB~fyyI+!Sw!x<325+$$*<|6S#+(8*4GLTnY%$vzxnEG?-?uQ23efSQ zT*jec<3I7tzLl$-dZix_7jVcU4FoYByW)HUd|J0KmImlkl57s*jvIZZ22Z-KiuOLM@*pVeM0U1%@ZD4G z+-I{wHp1GjOU@;qnjI@Au{W?6{ zfXC+OQOX6SvyKeo+9zY$j9bZ(E`G~(heiMw{vYzlw1nSfOXcKSI%y;*{@7(iMl##J zJ8-n-9+Q*tU*%pVZX6=t88_=-cIJvJ$j5_lFB#*c$aj>wkNY2GRE=Asxv;#5zis-r zG4sLq?d49VMyrq1N;Mq*v z$cE=422Nsy{?p^Qo&c*FODEfwYb?Am^K_^OZ79si=Dpz>IRfAPZE8TvRG*6VAko-CHHq{Afa*O$V;nU{mEd*K8Vay8L!z}5%R_bpj*FR_Gy zMJ91C=63sgC@b4Uvk4Tdn+f(w=g-$U!R zK+dq8ELuS)B6(x-XnI^x2w zD0rYlXbsha*#^l$fI!KTX!h@vM%nL#OdJ0snr#?>z@7VnwrK~ATXOEw6Ag3zvRg5- z5JOzk)<0?drd4Rg{R!j}I|SA7Pfh}XjKnA@3E+P#(tzb*gEp{1BG{k~_g5AA2G|uw z{K0pn?Hnn-bu8z*F=gIUO~q}Y1U+1e34}QN&_Q>JZPQJs1q=#xJqmTMsuXw0K9RT| zKNEnNKI+Qck~S3TN`{Z@!M}fMHmK@@gd-ckn$ckV+7o1u;~2km-JBy-*z?netC0fI z(*HJZJM|O9Y=Mo1*XOidihET>RKd4AZgvfhPw&(D-={O4OMD1NwIVmLpiV|DFtfEU z9UoW9$>DiE28EA~&$B6Xzg?=c*C2`WTSS1pp_}h7+V5w{6-1gxRLL9Mh+}GmC2_2J zK+xtDO^}1RETIVYcgMjN;{bCwt8kX7Aw|_L@@6DdFQM1glj_fr2ychE7|!B%)EsrB z9Cd^o_3Cr9G0m)F0yEF%#34&s-CN!S44uY^i(Z)aD|$?kk+nIPpndqawGIG# z4?rXBva6Q-h!^FM7I&@{d^=5rZ}^B#2`sva7CA#-uHD!z)fp|TEfL+YKblk~UJ`Lr z<<4kwe-dIS6M&x?%O7FS0(V&{hc(0{4%N|u*n&^IEZU_T_})Wp1XpgjKXHVee70yu zT|AuwVGy+avr+E2CwuuW{ zH)U&D)wF5(Bd_JbmmpXNh zLQ)nqp}*CJJ!2=ngCn1MgVQ9skdS7GWzSKg@J*1S0!5i%CsaD`&|>(O)4H)sR6`OY zS$4J}V4m^afoqdM*kVfe<- zy1l1qo`Pu;U+_xrxJrDVgv}6NU`g+gNqnD!@ep5pklyi;n0MM)!tni0>qbYz?6}j4 z;hRhA#!XY^uyc>$`<2!Wh31I&LMprihW80Gp@HwhD!ii~ua%9)dj_UVe8DZfBO)=# zci|S^(TBGL2P>8X%qkM}$>~TDxJwfC*>?CMV7xThycb5{9piXQSg-*K-%hD@jV}GP ziK;^c?|-?5Evuf$OAwHFOZx`ysphz}b|?2$J>TSSukbEsv@5CYeB7+fWBr3|e%6!i z&pOL%MAd7#1IuI2>dWuYx<%0%g~=L)i5i8m8ihMTyad>Qlh5cbXM4zv&I{}8sE+bq z8;kf>ATcNWzqm!J?eLlJiv+}%~8gk7SPAw?%U81?zb zXOzzyoLD)aVE$T^o*BXl3LK)pCF~gz)=B|31<#FJQ(*NpH9b09hY^~QrvtS@mbIW3v~b2 z(HKGIYP*I@+VGJr?e!jy#p{2I-Ef$J6^tGE3>{?EXJWhLqJiBggD%1UjK^-0to)ZI zKZ^tK5B6~Zvb5&d3)UM->Sr!JSHcJXBJKQD>pH1EH$Nk^CM`Vb`>nsA+yKFWjEg7c z>|5B3TVt+)xaAfC3ygdmjHafgOY2%7m&k^92GOc;#;6t}xX2rtptFemm;9tvYLlR4 zjotO|g2EN_Md9S!&!p^IqKsS5Z#`5Lp8*s-EleM)OP0hmK-5`t6wQ?R?an*$824Ws zjNK0~+zghWd#>FO@;9)`7RumaY(-peYi`(D7?!61WO6>BkoTTpWFeIl54P>#~m!FiW1G)b_5E11#ucc(;T?l z64O4gUr4ZDI0=!_#24p~>7Dk;dNHbY4j-v-M`3T~Nf5UKKQV7MN|tJ5{d#MN*9O~3 z(B!gcWs~utvp1ca?_Y*v-i;w(*L@~ghQ<)LH50ux6T3ANv2`hY)We$|-P^mqXD#%@ zms{R1PJoW#6H6nUS}#dY#l^fMEixWz>VD`jcD@^dju{;Cq(K2(klyk$!FufvGfTCV zaIUHqBy455hUcG)L74W!(o7Rrmd02h_MZ8lOF{Y|Agm!rHyV5JCr2!xyH=8QqCRk= zFSxR_Yu_&leg1j^XCbW7@C;deK|e#9KtEurnSgxUIHf{3jzoC0oJ6OpW~|a7c)0S>~ga5ACR~GHGP3DHbRlZlxp(B3BoE zZsevI9UAE9>s6E11Gf+kU+qskn^f5phNC3KV6riy1b#Pri(=7%Pv$ZW(j1tds{PeY zJn1Ka`T2*87skT&1qLD^DM}*;mV>EiKC-<=y(hYTd!ZIf58ONu4qxTpZD*`n2ca^< z&_{V&fOUyiJ#T3(0J25uuUbAj$_CPk1~ZeN)!}|6Q?#Z@Rlm!fsT>iWFjLEeFSVCU z-{&>fAAqU}uJENE-_X@|B7r!ap`OIX&93dH##YTote+lg;2)2AUQiZKRM`vKlWNUc zx)w%uuxTH)Knbj_}95 z+Ev!^`%pryNl|`RQ~lR2O1wg{1@a!YQ4lG`47GIF0ovQx_>4IR=7oQpaAbD0i%@zh zV0$X+EAbgq56lbvILQr;T>K6}SwyP!oCF!OLLq&5@&1UQi-)d@lEPfvW&B0!p7rRf z;+&>1NNQNn*26kyGH%#G`!W6m7{%gmiKQb?Kto?vt^FSM*Vm}8HYBV}i9zID0!>XG z3+GhBy-$JxCING>4B5qWw9z3MqbJCxE0;a-!K5Uh_dHb%g+*IpSm$jPrtRB(j3VZA zTj5FshZ0hv3K{4Gc8=(*LMssL^mD7|5;Iowi`+0%iN0zYOM!&i_O$%MmbG_%BYV4m zggH}s% zFU_ML#sfxiQRFNlL_| zFP)L#MPIS+nq~_n!IfSC7H_X>Q=N^Ley$rGR>P(k{Ewp(o1qF0z1bO^)o4LALiw&# zrms1bVHKI+6b1b@80lT_5%3euteMNC&zq5;tA=38b;+)RL&V=IyX zU0g5eoJ_&zKL!zaf{P*(V#v|yTSeJhg?BI)$IEm{(h_btus@_K4zLN?Syl3g*%fsE`6VkTfzV(hN>!tEr4c= zE#aI`;Z9CjBeCmreT(3QJ#8~ViJ%J=T|799TCz{wC?saoGd*0%^#=j^XGZkykgyGj zzB3wHaXCHw4&bzFi@+foNly_WHj^bb^RH4uK52p}@!z9UYL2hz3gs0vUt5bKG^bO! zrj!2~Sn10mwWCHT<1rEl=_F0UGss9t5ixko65wbN;NYa=u_WR_7z%h44iE_R5YdJD z7IpClPYbpPgrugUi5Wb8GFY-F)bcAFU=Ykt5$G_~`vX4ZxVs+Jn~7ZKpe4VamM%N( zsiD)vEs!Z|9T*8jiJ1Le*h{y+-e1S(bho{F{4jjAMw8_>8_^%v;taiY0duT62ILiw zzTiEk^l$?|*ws_M0eI>*Hc(QX99I#)hj@XWgCXLz*pndEquw#+127d_*i<4{RPC`%7N@nWeXKXJiHF7Y_j@(tMy=+Q$3U1zDvg4_4Q8o)ZyVE)=Mc&O={ z;_Y~0)3+|22Cqxg>oPR^OWr@gIe}tL^u1=;hToF%hUEZ)B z)s{$~LjMVm#Bb;#wK|i%y<>SAzu5LBmOQ19OW+}^X$bv)ZH_-m9D3U6zjYu$MwkBP z1QqH}t(~eyD3H}PZ1ZZ#nzc8R(WxWtC{k1uR+;{K?~G#Y_k$83%WR+-jUPJ2$(W_CUtYAgzat6n@={9iId?)tpP*D zPFz5^5Q@`*hn@b4fKk5D6jb(D-D%>racY6GGaH}i5lN}tOOs|^{d2FM-2$a}c2+@UuJeJa4SW5&I zCbAmL2d?1Vf1RAPYKWfZ?-u0FvuzD2{Qq3F2)e?6c>fX(rKmY370G`I$a&&ewd}JO>x08!*m|FAkl%7Zg&-QTLkH-sk!2;3<~( zU3*^{wsjalyr!AsLPI!r?qO%V^5Iq!$5i1|x{#$g|K_942oEalrq7NhB9m zQt4BT@Z9O3azrWsHGp{FvS;6Hy**Quiv7y0m?`Xk=_0(2TnxBT#feh*lrdUF@R$UY zF?9KbzzS~!gr7NwJvA%Jhy90OI_Yw7Zb@7a1!!G zO^N3XW|G0?HSa@}%JrEFlKS*sHzbW}40tB84PCAx)BvyjWpsp4)*w6nbGMOx~C- ziAwH~BFRkdktRt>?vW}fK<<$)iA#Q!BFRa9l_p6|ew8XIPJWf%3rCKX(n~{*mDY<# zj+NT`ksQEE??oezP3e749-G!nMjo5mD@Y!jF8LFS31(4<#WZA5k5vlWlptodP!9IVeNy{gj` z@>PydVH?*ntka}kIr3HZP=A|RMU>m&O)+v%TJJOWB3&qidyy#=)#f}Oiz=zti(KRb z5Grp|D~%FAyvao_^8G>WzFoP8Bv9bcA4w!%{Of}mJnmoh!k3ib$m=rA4Q7kT7p%hx z3?G$^_y_puJn3g&Y4P%InqBh`W!=TyA3~+eyF(r-5pw6vlY1@6J2*lGGyv@$c;Cn1 z4tI(5`@CRMn=I0uoVSf00q3uaVu=et`5;{S;H?SZUf(LdO7u`ZXp*}Q<05yI01Tn= zwmsh8(S6jN{MBEPuGNwMOC^=Rp0Ig4nH(h5!}aVw-7WE~4FCJO2J6}Rl6)gSXnImT zlXRo-<=tT!@{bgC;R?XzKs*Du$G^_gcs1<7z2Fo-*cjQwI_yq(sSM_MZ~@9+IW`5J zac7m0p9)^1AIuS6W?$u=so{a6S2~0OrcLuJ8YVoy@I6WDO1XFV;iX6N_=*nw51$0B z^EK4v5bJ(?4Z188u|h^<%OXw1W20xnfc$(BvLY_fT`*^^8tyj0u4|igYMA=8DL#*9 zBp3e`6$cnZ)^b>h_B}*lqfyfF(}7}r;4KOJOT)(SvI(IQAjOQZ z43$L;uJBquE6M`T0cg}o*!;T{dM}#esKw}79xKwm>ZmoecKREMW5q?xIsr@S{;sfR zyhlPDiT@M?(Y}1#!s{;x`-K-t_+8>ZML~=&jbE)*7VDz6@qS~1DM|r18g@QxW*Rjj zqpXf(CQc@Fa9T$OBeqbcE5@JjFm3!Ybau?L5sQegJgRYyQKYn`nC$V&IQHn^u9xPo zf;WqLz7}Q~>T*MoXtNV{BBtILp2|!>=J(w!6Qz4O^fwV`~Jr{P!h% zlB$0oiY*-aE`21JQx6@CY8L4uy5-bQ83xrBk8P22Xm6GK(gVc5(RW^0)p(S3zGb8p zoFseSY{j9h+wASy^&4ZExR|ZRv`9K|x_b5!6m*6))2?$gN?+W*Wy!GST&oql8(gvJ zA@xQ-QT_3~Mbkmv=Igs&O8hgDW#P9l>4MJ4Y`in#Wz=akYS_2Ou$x4cM)H3_1%Y&s zdRd3OA#pJAGJw9yfY{ZF{SUq%kP&i`KiQQC016IeI~(dl*(>2*6x4D7G7jRdze0q= zZV1IM+H@@KhA(Ud<^&+^%IN=N+_{UQ492(H6?gN*X2G1NM z=R?p^C5nFc;ZIN>VqcMU8rI#zr@sC0-w9KpQJiS%$Up%8KgRy_@Ur^GMcO|7u(Ft- z2*k|8x8w&}PNz-hu*h9b(q76i7Yub%-|lLaEAc-1z8MWOfs_Ro{4RD8)pJ9f;%RTR z4dPsqyIidGba>_m2_LPU93o$4+2K;yiafeFQSQz3vl!hI**~%^=BPY^pa>rmA3ud~ zW;AiqT)>R`nKaBCL*1NZgEWutoNWfZOYRBfU-3CsuQvA`$v@#Oat_XjZAbF+oU?Fy z-dwsT$(JCuP-=XDAXmrt(*AxV+Tfp!@AJ2(-6QjG`>c)^)t8Iwv%X}en%9Kx08>^G z@{0%c`;i3zed0gg=jJyuAk03u<3;}^=o?ZWko32|=t#WFK+ zZ$z5QctNqtX`Xy;LR%C5wCgPGQ=PW3yTfVz7;fL%!NCdKw}qUWFxRjRn|D<+h&UG; z&cnV9_qi86Sr@*sVeM-$Gt*Cf8-uFP=c2>^Tv;@*3$yy%%VOv0ezJ>rk2t*BY6a2{ z-Do%u@#jc$A8i}Io`Z@G6|lqiCGR^>OSW*_w+=u*g6Xm(eDaXGtn@ z&i|95*77gL>AR#D!sqgoI{YBwk^uaNtF2%Bxz9bUjs6-hx4D8@i*w62-H-knKliqR zQ%ij7lhSh{3fhD`FP>w<`F};d3esWw+7vOoDn8$5T#NDhEjKhFb{2@{wwCLFWEcny7QaMiUF-ad84@M1d(O<@&h$~dB!7C!-5(}{Mp zwluZ`$O(3YW0G0QDd8SmQzFHn!vBg*3Pp+o3hxz=Wx^F?Wd;;5qeuwY>5No7(5DCr zm7_W6+kPBi6tYF95tzy{pq4kr9#9lIN2d`&Xp9saV-AE0kD~Pm*CZMv9N4FX3Mr#M z)3s$DkQ83aG!uYnSZUkh4!nRu;iyxFwr>vfQ)@D}cwoA=^aHWNF_~LJFzvEZW849J zA!;-g-Ll%%$0>Rl;V3Fbzu1E>g*h_qQC@^6w0iD9njqwNMh4#@mgzsql zz90A&hRSf_bt+sDOpVAyMw!w2r5^AV{*tL7?3BD>ntF};j@K!B#XkiI%bXE(%3q01 zp~@U9QxgQrTyaft6{<&xF+Ri|2u`6FPDFRnJR}{k71l&|(F!T{d+r(+o<*q<2C82n zPQ}ZJ<3FqPQ$1l$)yQ zDqKdNU`@e;c`8&!o#5?CFil0um=ioJTrqP6_e&6jDqt~jg#rB<1iuupn7Kmw6$pwH zVwt!i`V9!S6=Inam8=lZa}m-AlfyDTlqR&`Ax}JYSY`c~b4x3uw2Jt#|1h8;UHliz z7eCsAph3X~=8?&Oz+ji0A#KGG{egfqIYXWHkK^RkGx3nui;JhSng<5G&cP9C5;CP!lb z_^7jf=^)`qKQnkkDelmS5>3ykW}dLlBrNK!mOWb-QnmU?bZ6r?>T7O7T6XDIZ@qt@ zmkQ$a7T}AXmtB6a?NzQ}tD$VCVWI4Z;s-7oPM&i*JcP-qUNmF{S4eC~65Nw*7$f``a}4 z@>RBOi(vEEVo1j)3@- zJQp@_|FyC2NkVS^_`_%JH@HR?UM5VUos~+89fLU_xb^Sr*53A-pk(b$4tpN`8m~C= zUwiHS4w*;dFMWmsvhe=0$*XOZGg$GSEBQI1GpC3BhTNwe5)oenNSz!mU(D-|6iP1T zrWIwgHw}zg2}>r>i@8iKx0YswT=1oyM+|w}MsJ?}TphoXc4>U`B#9eGCHSEALo+2! zKSA#YKskDMFJv7%etCk&?wM)(we_fcqIAr+GIh9A3;Eyc6u}SKr33fcc|gx(|D8hP z)JvXGsATKFC;Lj9aZwp3%%^VG3a^(B%Rk()MZR_ZNI&eU3JDHHaOHY8r2Q-9vT4Df zbO^n+u#xU_+W5j;-}1PSy{iC|Yr&%LU!?)W2*4I)m?Ekz!}p7R_5k(+qb+gNCAn7E z&%R6WrjB~@NQCgl7E+{$hudcNxauG=9ebdj<=@J#xM8fw@5% z>prp|4JWgBjo_`gN2`M^=`JY}2BvPeSsMTTnhvY|6veyLlF|DsyNs&XS6sgc(*2!u z2=IHrNkY?1O;2tqYgILK#DituY{=GoU0cC<_avawMMK?)W=H)EmWJ@{N1Y^PySuOY z;z#2J zP9>LU#O~}N{+m&a(PSzNV@>v1m@iHYxAC0tL(lkrE$C-#kWr}EeuLJ}T(h}R%d0nE zLJ=bIL!RF{*LHW#SDUmIr_$}Q0VQXZvy*kooc938t%N8|oRy~+zK|ZiI!s>v&^Ib! zMe0Wqkfk=W)A{p6-I|G-()sge3{aw0emYPl@u93YSB~91n2Rxm%+a580RZe_Z<$qlzXf@}jlK)+WMU z!URuWOY+dgM=lWdi#%55+-*btMG@kg>Xt9sx|i5<{|Wz$Vv9erq7;<1qG{h4GFi?O z@E8#J10UB_Gy=UQsdBW09vF99DV3{0YpQsg*Vjw1_Am9?i-kuKk~3W~d-`$7j>R#F z{-8Ott=TB{DUF7#BIxFe`S8sT%K3~O_|#XE{`)B8&xexzbX{7SQ3g9uR+%F--SBg8 zfB3#JC0*{89|Hf!K~)l3jxXEbf7uvHVC>8>08V4SmJK!9(rC@T zwIF;cq1^s`%=%una@D8%*{^%rUGxujlr!D}UA4O~28Xtb0}&`2;a}S2JLDDdrKS;? zW5f4~-HPCKshr=*kYldx`9710Av%FiI*K5P50V{gV|^;Krx99isDE-k`z4&`Mi6vk zeksaM{JEwUq2(d)M-+&4g-a*4W2Y<2A<70`!Kap7 z{d!0CN3DM?N}c9ZHUQ&G9_1*k6T9U95cSq!Z9PH%Xelie{}y-JQrz94g%V0B5-9Ej z*8&X=DQ>}v6_+5v2@teEaf(ZDcL?qdKi+%a-@SjFXP=$toZV;le0FAbc6R29s`EZ< zxPh$>u1t{ssYQIHSU+sBPfdJXg2J)!ahm`?fAzoBk}#)wUAkBM2COe1<$Umt={kw# zw_ok+vC^GL5p+U8VOj6!-I1M?i#2KyDsTK&+;9d@l1GTCjT!x1Ta>KTOD1GR-3=Rp zDo&h=WkAe0GiF2J`{?5utIsL#W}lLf4R~%VI_hOvi*3Pto5qLA4fxRCPv48|%U^L;mrNw`tDH2ZsdUrNf-QE# zP8;Iq4-%4;4;`fjxUml;xx^`k94OqMPYX3=U~M`4jDpk=iXLiexF>cWe5kyY{FFW^ zRmVGtkiw2_`t=RNqT$>c= zjld#rq9BqbUgdZng1I?~$?D@BW3x&u;2!=+($8|4QR)jWSGo z?Fv9?22#1cM@?k&`aDM^>RkOTYzqI}d95;qd1nF?=kWnkk1kM({m>at3?-_RNZaYd zFpDv3tX1Ky7+PT7%+8;WkMKG4q7)f$4bX3$V1zvK^Hz9hx&7TFn#`@akt^$!IYP+^ zKdYS$7zVNs*wZr}PSt2LKYmkb#*{7>tzeBU@~3AV_&iKxJu+}W=F(K1=cQF{4-w<% zkOCPww_q7PXhdUa;yoAh#CuMHJ62sKW@GE;1^CIbCj@g+%}moIWley968_A86uXv> z+<-*xQ&SdscD1;Y$S-okS|WW?L6&nn>U)t?iTwN zajCyWbfG@jz15hw^e*uzInh*VtxK&dUeY&Yt^jtYUCwW3Opxp$u5@#I56f1{{tfG` zQgoU58}szUn&s$p*5S97d)v91Q$MDyOhE|1qp^>M-H&?5GQyl!VB*Mo@xB2IFH9dc zA%phIPGaXGV*_UH%iGMO{X|FxBS^JRCmJfn1iI$GsDX0DBCO2!h^f4_y15e(_xx`8 zP`X$|iN&56mHu1MaR2lpLXDP``j%I>6_-@ zuT|_eN<<9uU!+1E;t?JE7qQT0Zjgle9s$)H6UeD=+KB2l3rhD3!N`Bn2yJEpDVXm$ zP5bpRj37wXzu&6e(fvA}R1$AN;rtg3P|ZXHk9lb=)Rzr(Zn4Kf zWyc9J?$;5Zx&?IW^-U{M*)f3%%}dLmz8s(hi#-V{n)jeW3;W+tUmg&n#U3^l4I@aV zPp24q{~n}azGp?1#s;!7=QQm0i$nZ`-m`c z(l_`eZ%IFuGS!x8kf)ryU+}XttI&H1CoQj9V*|$W zi8nJ{)N#g~6ddW}x^^(Xr;OpN<&zV+dtrZ9gFRo)J0`2Hl~=PqIbVOUp{@Z-FDV(P zQ}_Opbi$K)AHO7un7d!>|MPN)uY;pQ zQpZ`(WM0Msdm!KRz%?+_H*{|@U0QqS53^2yJAZS%(iaIP2xSIE=Kf6=z_|`<|H*52 zruE=;n#aky*@Q4>*+<#5JZ3-ViuxFs@~>IZ%TZI?4H3NzV|(&T*!1dUc|uq6x}*qe z?M-t@e(X3dh2Eu`5ntYCEvzYM4(BGtTqh$d#otzbGYVWOD()whTR zc_pqnS$YCX2%P!Y^f>HP>)Y5(7vVAd6m9pEx}yuU>YTY+uVc1W9#&nevFE~KS*zaE zMZaa{@=`ydcvD=eK0PC8lR`DDnY*#NomK;{Dyf~8?eYDTnN*wpQbRaXq-#ZD(S#QP zF1_9&k5t9hwLK(z*?9+3U3trO4&x(Y_;BH%U^TcFLX@67^?QD=i+HIa$bgogsm93f z80s{fR8t_F$EBPYLmNOaKxvsE?W6xq^c8}++`Rub?3|}#K9ADx~a5V;YSzg zybClDe)n>yX%i>d^%S>0_*}O&dX8>_n*~0?XX=)jZsIk_&=XW$eLBXJbG}=1pxXN_ z-s|8R68O63mkUBx`8e=(p^%lVv!hy2J8)}Qa}LAL`Ge$Ed$IrgDs8KW5$zAtap>M3 zsHeTg?v(Qbe`Fv?6IUT4+J+gQAa5%s1?>DLFcM)9-^)>$Q7txJNoYmdCr>F9>$XS? z9q51cPl5r9z38E!?9Wb@yyp-N2a~w;U&1H*pTC%Husj9@D9*HDMz;auK*oY+Ql;#T zMG0A!tNMtMp9UWny#4x(n@@J{ShoLXnn8`qTr(TjLVEEJ+`3<^1R!*(0w>+;6#q8( z^kS0-%b80mH5BL=SQFSHr!609YM$@*4gTPP`$t&@35g~%kfwujJ=zZM|DL}Rtijy# zfh0)1^^G?E!)kOAncVeuE2^z?zVy1wF}3GR?AORO=76EfOuF9d!e{|LZ6r^N+3D2r zZw)Etzj8a;oh5$9siM$TaOfMvBul3v{lGZb*Cy2lFJ%>)of*+)R?&&(&(C;&@_sfztU`Jb(Q2X zCx#%U&&XWM#rhnsxWkPV0ID9ZHV~~u@nC1LE*^V7g4b$S96YxOd>{u&E@cbOtsdHc zwkQrGiPD=^wIe8bBxno)QOp<66+;>6kQDxZ_uYP@PnDkpD*04AKGPGoj13&SnQ9W-7E2uou zz!DM4X1&zjU@O*>m{%3UA~4+b-Y7h!2B&)Cz@q4?o97{6KVl7E2|^cm8es?xQRm^V zr5%)D86MQjA^tY={=p8YRc?^voUY4cZ#gMa@+S7c%uxGZY6>c_#QVU!n!Ns_vbIAy zf1G2tAs&ao4&KBE%r0ZUB~B5Vu_Ae~p{73{=keF`Zo8JunvCxlMcn9kNb^bpWBiUQ zFu0kIeRu@=X`fm9-a$f`8Fp%_sS>!h9x|19z@rP6g za(DK;HHT)qeH9XnK7ZvFG3ki!SnlVk?$z{cV3>nboqOerY(pUE(dcQ~$#e^n#{FFR zI>ud7m)^*Iw+A?BOF1~2#x3zeT^vh|%rgz#TYQG^?Xr7cCW(73i`)S`J^hZIDEwGd zL03_@0C~2nipYX@9zK7azWq`l%n(`gY;e5;Sg@`AFoIY}^(TBy_!XUD>-eNUOC&DA zSJD3J13vI2I6D(vn*5j4?1}mGPJHQ6(lTy&Ito7{0MM&;3BH2%{KERXE7dVNJvEov znu~4wD&6%crNG`n`(=tL{jXyhaNh5=)CAKBXk$4v{w+=*Q7MZ&U7g~I!P7~u<|Il{ zv;m0rfV^ZD&}h-!uv8S+XihH%?5R}qYY_ydZ<_ruQSpi^QJj2+Ok-MVSbf-b5wSAd zG`GmJ+UjHE&|?&&zVe-$|5}E{)#r}juGm!Ij%F@CgGDq5N+~wa_Yow>NvhIJxxm&x z43DFbv=YB)s~eJ(xH6e~Fq;k1W3*iuC;pSpffS~*i5iK1`?WUc?<0G-cpzXiL}%Eq z3_L}pG#l)hvNrJ9di9%0gQ1a-iAZkh?DG>`qK|_hvy;ciVnQw0`Dz%}2FM8Obxxi5 zl@qW+)7s=y3yptHGX0NT2dpKMlm8GhH(Z#EckRy}xlZm{u{Pcfo!P0qy-4@dY&yO8 z3Lyg*WF!JI1(H+hhN9EfxN8XA?LM?&&S{~73Xj@s@#&&3Qd!dFx3~EV@ff!Aj}#4Y zv;Leb&=*FZRqLxCuV2OxAauD-^$WqQ9ycM# zkfBbstDkrwD&<$DjBKQmcI}>#lCRo3UvG*3DX0$<4S)MCT8A>uise&h&MU@~yeIv` zGpNmK|2lHy?K54^cZ9FMg-OxFwK7>*X{a;>#d4s`RuRLB1p4vtxd7#-0X{!B46(DR&~wsV&Qxp!%hGRNsl9a z_(-`LYdKVx+x9S|U7wG19uzk^(t;B#@`<-*+<)>Q7-c}2!%# zU(G;D_9S=nrdJ-l0jP7N-84Xt;Hw&kkF?!{3Q>9Ib?JnVRK0lt_Eg)S&F9He21w$Z zeAXiI`aeNAOpFT#Sii2rbY}V9CEK1YQ$vUK404u>!@rRl;EV?L(~uffWgqDUO&ORU zDOAvJZ;JmM0}bx;3EE7R%|Pl8aSY>$v<2*2j(QD(B?y<^R2Q;Q@HHjI)LNFF5UuFK zNePBHnUp*2fzoQqrR(=$x*0V9>jGwM^0;cA>uji6kLBR6ynwKjn1MeQDI@qVvxLbV91h*{|QW^ttTWi_o{V8odF zm|U}%Re8UdUx`NGth)A7(&fm~+Q)0ir#LBAAI|wGYp5(H&XzV2#~(tvYC*=HU~Gt*2-M^(PQE;`2CB5h1qC zQy1zVuKxes7BnU+*f{EazNTX-*R4Xy8g18G%KNBBL%7sPgIBws^DW(>vMqD&LnU=> zmQL@||^ej@v} zK}6)BShKTf>!I}NZlEE!`85OQ4+Z+mTz8~w+F=pDQpM>FJ%_jH8+1p8;~(D5_^hoF zvrm6?Av$cr5b7UNQ-_^;j1lc4`UZ{)q_2%3Nc2b3BPNl$^EY?O+VtG=8o}O8i(8lZ zTJFAn>$gFUXt_>rKTUyEnftARae9-}jSpK+5!2Ld?57{L%LM8y=#Qy%-7la%qfsY= z`6AbD6>}ABC+WNb7adilg|`im#H8DoHu3d-kZ$KzlhfDMc0n0Vm$lJzuWRpn%x9X% z)><>r-OV>MK3)@sOCY69vo(IfcPlx5pO%2zmT-piLA`@O{*J6b@Hn=-pL`P1JXGck z4NzLYG_@#veZHZkodGx#F>dhWg5JfJq-_e_;8jYt4OL0+qAdgHZb&)%jqQDxCZc>G z+i8`OKFUPC+Y^IFLaV2h>I&2ZEyW%@P6?iX#m zP1>UW5XI%6pd*cqK6>koje5*D8?Oez;Ol`fFu0}EAYDSKeCh>%^#IR9LBlD;>-1IR z0{;=Dv`Y)O;$IP+MZ;eizk%O4Z~GPQ6#ei$+>Aa(&y!M)zIzxx?(Z5;|J#cQRTiuI zxZ2`BFv;<1-Kr!8hX{JV?rdw~$2Z3k!H90zhwau<9vNSZ=9ipv@K4QQSK5(bMF5H| zoUC6w1Z81-2>o>JU^eoH?7D9aQr0<@$XHHt-562F-b1pX5I)h2zH`6U@6adtVAo~y zWcYK{2|e5lpb&i6w!$?N;R!F}}p+U=w4n8tE5?`R$Nnc>gPmqmDS36*&GEgA>1 zDlOQ3hXJ@TRak@i$sIR8X>W8mK8pRP7T)2t9GZs)=O~|heFYBdFZtA7Kycpw428@w zvuMo|Bz}35@|K-tKM40<(_3d3;vW1Z`4dwg4n#y_9d@zfXwCX32E2K!hxJa|FI8rr zZSm4StK=;kmz1el_tX z9JHU!jQ>-Q7t2;o92NX5S&ln-m{6+jeopFj0`j$|_BaR)qqn>=L&;^ z#p8f1d}wpOK2kul8YIWaBy@Iw4~?%S6%QPzJbxEF+ewaW;6Qx^5b&by{rYGD86|3I z(>b-@p{aw#u9QN_z*ACN4SiHnxf&i7G7K1b&4xz_&XIMn4NYCA1ml#nBmj9psD3hA z0ezIYHe8zz{iK6Kvs?&ZMo%rx^!+p7a3X{&>RPJS}mL( zfY-62Hr?Q5bg-mK^c>~68=zS(r?yhwVGZ}(5zrh86gk#7ut43C+Tux|YNLU5RcHt3 z%`=!ZTupyAx7IcI<`wL~1f_7z7Q=^L!$s!P*?RZDy>-q>ppD7EtZ#6|S~#6Sj&uin zm>+`n^XtO^_^RYE&*ZrMfZn_-@e2nUTcYG}g=WZ+@f@fQ=#4n6rA^f{9{5@XX2F)POtK1HBtQPQ2Jo#R$2Or2%}wWAxIy(& zfS$31nx?2?Tx1!SErT{(hzdy#o3uoUL-n+CYLRmLyOhYcFkv%PH`EK_FY90xIXg^d z>k4pagL6>{g#+WsY$YU657EFmUR!;DLl1nP%+^~Ug;B01Az(`Z*zbccP$HXT9h^eN zNBC@=0Q((qUn*pl?7m5)crO|H4S;R{E=LJwg%N7N>GssHB>;3?a2ORB9~P|%r*i;? z*2`x6g_BT$iD4=bOB5R}5=Mts>w%9`fw5pi<|x77*?;8V-yA4>z@Rzm8EnWBC5DTP zr$c}5fuB+er2(HnsGZ|hD^ItAi~I@ve?dqE_Ltqa4;3HdLo-1egMd61sD4sg3Vjr? zTrHU&tqJuKf}P-NH34$m5OQ?;lwc-UxfyB~LV4~LJUc-ShH{{g(8g$>lQ}Al^4#)? zMhGqip$MRQ?eIE2^gb>!jSDTR4X2^{Ukvi0o1bWOXpbJaJ|&m~<_JPzliIrLqrPdw zi3HG$(8fR@g9WPRi6()g=0l-Uk6n!n6#4zUogtDT9oa+J>hT%_N5=o#G zqk+aIC<>}`CV;PQ&P9!U#vbmu5I|}GULk;{f!-9z?%RZlck!X;pf`lDmL~+Vp^R$b z6pga?u|OF!R1DQQCCo2Z&3h(C1q}5H0LoaQcqq@6f@kN*!Koamc&Jwdu+;)}NO@i( zyYCPxzQ6}Tt3q#{f=!vCj7e=7^ifphYL6x;b-?`-+Rad{WVQ?vs1y~T6!n!PJ?o+3 zPcQlk*?qgn)J?1jxoqzjl=PUyQXAQbo(i?w*&L&FN+dB%%M$eoP?oE9JCj?`BwN<@ z|KkrAnMH@@?12;fU;N=BA+21tAsi@6=xjPrpVw9ipsWtR-&Yf$gVkE1grT!Zz&SP) zMlBpe8=gUl6o9#zqROGO$~lCUavA%SNDA16B}y7PtDQsmG+S%9;5RTrGgKQ?JO~)d zj`DYdyVAj;%~3$8cq*`m74@+eu3N6AK?QyeQ!z&=LdA6 zAWLT-DLzbw<^&9y{4Wy>7M~^*n&U%vLB(T$)l@%XjaLA5LU}) z9O8lrVC5F5r+>x>Tg+1noyj2=1vDoDMR;v-V2cH6p>w(9jk3*=KoNfQ0@RBL=BN(u z*jJ0Bg)I*MFZwj#jP}4t!yHE|R4CQ?YrsMqJcb?h+6|6J3p+4FEkGMXfmv#BMhD;% zTzpf3mwade=nW?XcAyPs+*hLz14#A4d3e#0(3@YfbQY0~(`4up=nXZD-V!xMbxsg0 z-bZ*&+yi&|zvwGbQ<%%;b`JJR0Lqx7Vkpl+0I7l}T8~>_X@VN2I>!qZ?sN{8Nv213kHSx@WF3Lphj>zU0pTERVc2iyk&m8i~D0ryHd z(MY-GF*bIkD`G*`tYv>M92{J5Iu}}91dj8{>$!j2n>T!IKf7@@NYSDas1jP3mO1Ln z|FFNo(`RcAzzVluy$qloudOnmtP74LLwiV|ETVzC0=Ad{hhBITsckVAS_o3Emd0-@ z0B{(Bb5SDmWtE@$oaD2`{a^TL<)~E38y?^y8DVZ_s3GWVFtCXoh2sY2poLwSql}=l zX~0`nRCq0%!!U=?1mzDE4+CNgp#KXNA0-4Qf>5ua;=h0jd}!-n@qgs!;@a>vDxpLm z3orT;AR|wWW#&o#9#VqYVJaZh4pdw&N2ONYa35DF18Bu(iv_dfxBc)$l51|`vn7Wa z4g3%L)6Y>s$Q!QV3S|Me1Z**2WFhiA)p@ZGvBH{qUAvnkX!~WFa8V(SklS{A{Cam1_f7#zRxW>MklN+=#6X;~| zKkP48t#BrHaTWJm1@Qj?Fh(}RGPH4#4{Zr(&H~o)qP2p>7s$`Go;V*L+700Q8^~aa zqQeC@(xI_>;1X0|3fO@qN(vVo!etxIfqD{yHh_g5_>dX=inO}*uxMU!uvl0xJYe$UrpqxEefAIjm46WQWXk0Lsjz4Qv}7@ z*b9*+9yr9!&#Aqi)kg}Fnd`g%W9r4i){uX zd&;o0HnC;Yo|j#<5p_ykee}E$IBC;2ktu}qetlFkxY<9cH2HCZOn)#HxQBE&?=Zx% zT;z@$cka0V-f{2DhkVOC3|Co78ke!8K0wr;#qF;rMJOjrUq4tN*bk^x!DK!V0Al-RO&k6nY zn>&^X55G^N=`dov6xyW^Ss~MhbOb!d=9fa5@-4&T)x#c(ry1_Q*nbnMeIy$&;HKox zrQROI?cyfv+6*?EX?s3^khCK5_=cfkin%99P$@9`EWAk+TC0W2vS|2xQ1tlVcPH44 zI8=Fp{?5L*$i8^TzL?6sI7KZh?eM)Lg+_hbPVWRPO@sssp&fHH6ax9T$eGw>yR4x* zz!ltQ$$TPOz#r#ik(;8K1 zditm2L4GZ8_6x7-Voc}aOuS+*Y50oCpOA;rm0;rSHfp1=@guX?mHh0GWROtMz5tCa z!nb_$U290>ogVkehJl3E_qd86!bMF3f%3IfXDNzHTgpSj4*3=cIsc#CddvA&U5jbU zE{B7aecpIe(dXZ*-7yn9luW8Gg*~RdCH9UN+l1Cs%E{b0^hKVjJ62Va&i;0+f|I7E zAi8KZ+*&&enkCJ>?sMu(TiU6-&s%5vZ$&|uuHCiYyK7y#YY_}Gq!UKmI9hc|`;zBE z7X=-N%*Mdx9bgiqVZgtzg?_Dw?W3wPFw;wv+=F6wu_N>5g*Q5WuV}ckkUs1L)!&in z75uz)?BrYPOGGr+MaT}VQ|GsP5w51E=rGEF=+4{87vzwV7XZYSzT0Z}1SgXd2UGY& zS-*RL_!8IL96*k2Xf4u!mB%%Qc2(9hnC7>3PQ#^;V;JzE*X{X(rY4C7WYcj2yJ0 z%IT0*Ts<8Q$?E!dVLr3QG!kwRll<0OmToO7o*=m$ITEI{qQM=!W`N65Pb$4teEf3i znx}!ZWmWwuRcVEWJ6OX2cgcm#r$=hlruW2enCS@fGEBw==k7&+vrGrUqVY2GVMXQW zEzQ*JQp4gShD39|!Qo@jRx_lHV-d1UaM*hEmZ(7*a%%H^Y|Ed)2j?hRRXcx*xUXnT zpPaqf?n_Q0RZ}e~bt+2;qM9pp5TP$E7w1ea|$RbP!AHBm3S@!%x<=+o|nJ5xPX(cr`1(vh;VMF1Qu2 zQh_|Gs8hqLq{$R)s*HEmTuGSWy(;Z@nrKP(DXhYW*kc70iDTY01}sex*xoeCF&YzD zAMD~d_%>%(SBRWlo=4i&P9;9MOjptD)#@xfmI8qspP8+mo~0TY?+KJ-AUg4p>^-%B z$m>2#s&AK#i0Eu<>ufJj-9u*tGs10B{SeE3ni3|De9s;5JHLzJC-;26#us6D+Hq2r z|EKOFKQdUyi(Bx1ns?q(=zNEKKmh+VO|0pPYbd(49|k+FPL>%sgLLNeByNeUS@A$p zcOIcikI9lLlrrAebF|%ebjc44p4(%P#W&U2%rxdWH0%7ry&Lwi9Q8Hj<{-|EvBn5G zd#dC~AzqX_7xa`Xl&Xd7dz=%~z_B6rOv|omoRbje`NFdjUptdBC$4#P)9Ztyg%|q1 zA|0?6eUmIFxo;9a-q!Rk3aoBctZv%hD{G!I*}d$aw-fb#O#1t3Xt8y4rX<%N;(}o; z`gNwr27Ok$(TLy*q+YV6p8(or>VR>85r4b|mmo;4H7ZIU_saVNvs(xA+XVswpUdwX z^Dq9jc;~4Ac;9jI@c%x-2bzjBM$ew!->8hE{)cwrr) zJJ&x1af0_=FLhim^O&@25A6$RlZ;4%GZ8g*~m_K@ASl${1 zJzvU!|5>Ct3A_y`JG4xj)aKB3kJ*fI@FjAcyAto8hg>}9a4?MDT;N?mdhX4e?9kEn z?lF}Ibqx!?p>qqD_0}@$4_7+hnwpsA8Jski=l1?`RGvg2mRWSJw>VEfyz)tSxybv< zh~t%!O-(y(HZMmA-^6O{q21(J&}|&Yj(SZ(V#= zyF*|ax=87^L-7}*8Rt)~NO0Ym<@aw+ge+&|N6neE6PYs9#nmy1vLpf*9&9K9kc84( zd9rzKiB`K#qfycBL&%x%o3mQZ>N)=p zDz|lucjEX|2>CVcE;8;OqqHQK*&e0R8Zmw;XyesAb`}9k87lHlEAs9sI3P)G6e>K> ze?BM%UYdrW?)%Wy$VgLm?ZA)oZul#;Al5p%j%JFh{i2 zX(k5t`Bx7OqQBlZ_Kq@}f0J(vu2fnn{l>Q1WV~u2o8zuEeO~2Sn#1Gh?Nelkm;dA! z9+ddDydFcd&Ta+INXSlP&FGDpL$P0YQaR74%b60==bqmo$1m8e$S=QE*0{KAv|`M0 zs$%kBEZHXQ+zyF-wlVAI8(gbuTtqjfZBwx`W#hC{g1kJZsTn>OnsvX?+b8nPxJdSc zv3!KI&dA+xWftFfsY=~zsVeyf7A6|4?qn|=>=ZApP{EgWsB)GzQc9i9zD^uo^WEXR_(%3qwcT~f3lZq zOOb`!l}Xrj5o|UbWHuaPb}NU#%$au0nLdT&Ot-0d-^sFGm~B_^1e@`=eid>EE#(GB zAn__A4U1cMe%^x&Z9k-Aman5QCu-zqC~`k@zfJ_2X%f|*@4qc@A_`ZQsu?(j zrw(t&R68A-EiDeVG>7`$;#}-E@6D-JImtZLV|;I^D2rtJ?^peP7cl(Py*cGokb%4k zzQOw*{_xJAr1b^Id9rEQ1MYloEAHiXMVr<=?;dIiiheZ0(LI|O+3d8-@eU2t@>{5? zsx0Mf3NkHV3+b|StS?&u{4P@HETFfss|OaW0J;k34GUI61lYEns#g{*I+}Yzyt4={ zF=!50X%6Is=X>nyLH6~k^}wqH8c6VPJy3Kgs(ovo)u%10J^88VifaD{@46C^?e-8L zy)_=;RN$<(M-I3IjQ0Gdq9civ7UqU|i=K-LoYzmI)*K9lCcb7+r+LX5pl#B`gc6FS2Fg;kepW-N!eKaqnIVU7?U|flQ6=x|4eC!_hd0tvoVHq83@fhJxDnI zHtD>M20fWkSM+mSJS9lISxCJ_NWFRLw=P;1OdN5EklawJ0aNgQI)N6_-+9^6s0Dtf z(WWOTYjxD)fkK>hLcvpzKz1Dlw3!?|Qpn$JTGE!%T~LzkR?Qz`-k|^eaEpw))`p2U zJ<>tXKwH|d`MxKPYBOP4@7cIz@#WMi`QO^V8>L)jFK!UEHKGm_Yz}Xkb}ZO-y1!T^ zR(f98Rj($Pzlh`SUrcWNJ%~At`=5Rw!`yd_x?sRG;jc=mnl8c-2!Vtw!`=(VN&#p$ zH}C7Fwr_ic)d=i$Q&rY(qwiuDAr{lvlV-;CIJa#MqR)g^KY09y-KIi|fBXFvZTkxF z{BBL%+Ue#WU*?}QgsR88Z2ZTf4L$ra=TDyuaxvHq#Ou~qO ztsc7XLGYt(!@i%4msGo5)ZnGScks7x2njV`27b9*W>xj~w{!WdlkL0H+#*#2b%d#n ztG^4l8K+SetdKN{E@AMl?j=^OCyofX&b7ZbF0D}+sJ!65QgBf7{BhA1J*)p;+Drl7 z0Kd+ER^!3Pc;t9u_qoK|e|IRlCL6kvrkPIE3~F?Y$@SIS%clJt6z4(Q$Rv?~ljN?x z&{L^!yqDkcC^m$-`>^YO(68tEghjeYP;7JGQ4@|4(k9?Xrv}y`yO~>1cm=2KX z4L*I|pYB{~;%xD?Z5W4JXCPdsvi@D|711$?(Z(tyD)JG`z0a6_@17g+n0yq_Re}2` zQgVe!-Us=}ot)1!654NJWAAK)WHEy%H0d=TTaODE4zedD{#DaL3~0T?GbUNkG}2Eh z=PtGL#L+&xpFOGiQ6{R-;GWRD#&{7O)4&_!Y3%_T$1G2S=;-jkx>)8pl6;`w z;A>5mbsblIU=4oqLP_vdNV!w(2Q4DLX7+m;*i6|I*CsqO?8TN+49yARjeb=S`|}6?o6tT5 z2YNK+f-uargmN3tdvo0e%-V)@v z#~?K=x!rV?GNOdtvD*B0{{dFqt;kckEV0`8M;Lk&A z=JcG%Wuh-rK7vXmAE@*+`%q}L4|bobk))|GWPXDlMWfEH;%QAzLRl1y)`5S+mI9b5 zoOXhIo?1bs;qS&qW}{T3qpyrtb6%s?6i9B9W{tSuH7vgKeDzK9p%gofiUBJIvUbHP z8h8{wBE>j;anl$4fUa}f^4%yqa71cW$GDi<^KDV+o82atIm=)27A{&wgKKBm+Vi6%Z_mQSKAqE9PpMF}e7 zRJ6}KH&hRrNtH}$?v!q_ENM-tZVIk$N~~^*+U>?P5UEvAiT2S9C^OUShp@C%>UDj& zTkiRq<-s|55Yuzrxs~o!I1_RJ?U-j8UX?FQmXK{4M7K(C-_!5zWnO%``{0d(cOc}x zcG-<1O-1U%UN3+3;}2GYdF8MH|1?G6TMrYRce-k9_DvGDQvuL&-wtuc3dwE#{!BKEiasd zT)92Pioc9!>>^?nZ5ZPC6(hSx+|6y7XUsld6qfP4@ci=XauOCtiMI{Q-ueF5z`IdG zeo~3f0ptSUwfMj=$B!WevVq*~G{H{}x=Wu|L~7X$WbiiLUi4E8u#>un z8F-MnYIfB~UN`TRy(`I_NMUR$m0?+*P>@B;B$M2_0Ih9Z2cW^_dXdDskTQ z;d&^QWl(`k3vR8{pH(PO2J$Si-e&u!s)Ui-$Gopq;Gct$%`pb=kEZUAhU||i=@3~9+lV{);M3vWX@3>{Wa8$i zzq@doA;_YJ#6%jU*GZ?>wWQbirPn>A*I}gB`KQ;lrPsYpuggiVGv(F951ldl_O0cY z?DZEyVYx}{Vq~LMi=)Mm`+!d~Nzb+8-K)2eT&F%p3Cf1vgLwf!T1n^2A)R-ZJj87Ae&kzbsFIl-z6}HjF4Q)t9 z-b-O7MSQ)ud{#=~3iFX639$gFHYfABkJMK8vTUwNBS=^E6&b=EoJuS@s`Zo#^zG-8T3-3j;1(bswZ3?^MS z-XAB3b&HX)+&Tnt8vD5?jnC_WDEo#|2ZvJohf;fnQi;yHe5|=~r%my4(pb%`xI!?@ z-b(Df`~8O8wW~RZ&J9OmH$RqzJMiTyuFku1NYI8ETPe9VV%&(pJQ?<2dI$9rW%A9OxSR~EI-`4W@gpMA+ugppHmszEKzOwRx(p8JlpeoIz4{9wU?s>Ls(9X6x4M zW#FXh9XyIy#(Do%H;vP8h5D*QSo^MEkfPOf@K&x#J;AoW%h=%dVRQB}#x3Sbd(QD^ zZO2HB6d>TDW@W-i*k|?;-%!Ff`y$^IK1=q~tJv-Q71&lv4q=p|a|lr@Rb`zNA>E~j zI4A1D3NphC%*Z=G{=EOrPV`tZSwBF$6RjA=AyR=dN#kns`MG~ zJZ8_#rdDrO(TNJv9#5N~WEu&cphVdA?T62^o?L^|O9xNaeis3lU0+zsdlT zX=}mY+bGM*1#7~lDDtE9I9j3iRJ4*sXc~3gf0p*vY^nkI$iOTa9~sHLiv;b3(!xIr z1MQalWAXCraO5-9m$(1I3e5uUvU?$4SxN<>_i1V&OLBrb;y z!}}r9_>lo70p<1jD+*)zD&*BB4{+)gzL6&YhKA0bzHWP2y)5z&;KW@Z;KGDtUn}~N zG}Tb|!AiwoMo@7>6#J{-5+$p5ojyTh)W`Jdx9Qb6>D8v`)hn^)(4VBB_df&yav~sn zeE#lsYY^>MUP!lVIWu6x`rA=yqSFsHRUM1y?oL{Q$MCl$@O^gGM4ii0YO(d>Z+NY1 zZ+J?2nr^fvHDNCbD$A)K%StS3xIKe>m{_Vdbu-0}8x^V!8kr3ko0q5I)AYHW>&i08rNmbDNPAx+74_+2x0R_ zHSiAi23&V{eGlg&Di^FW&5y&hi!xy4J29z_Bhrt$J_-ZAl8AaY?L^w4)csu4o-@cj zO8zJgLD|B~?avU^pUXZ!z3iCcWWaVN1X{b!WEb7VbEMz>5Fi{*FgC(jAA-QLA+?C@ z9>r>SGX$wm%>oOt`G=QsT%^|)7BNi@u*0ku1{r_Mee>_pb&e#a?1=yo*?8*#*uMP2 zB%$Jy86^8Z0DM4$zoKmw?+P>SJ3Ij&*nxR#w`IXlM+c8-*vxE&rf?tp#9op8{&3tllc!du4O>>T&NabpvlGVX=n zjQgO}*sN*B7EL#{YKg`+t(NhC*1&jBYhgU3wKKMB-HnH}zQ!ZkFk^={(Re&+?Ri4T zp(d6>FEci&e-yfzvB{;-U%8g`6*KJ@%eAVqf!nL4cTeo0b594$avjYr?D!)8fQ37$ zJ!?;=SmDlPxXEUg>0-)siIwSEh735*1Zm}}m%aG~CGCfMTVczfQVJpKK>v^_@ zc|9~`$JoP;v6mg=Np_5<*fE~wu6Q3i#xvaAJj;%;e;)=K&#`kn4-<`pFx_|oW*IL+ zuJIDL8ZUEq{0dxVyvnV{YwQ?@*)d*c$9RJs<4tyqBkUM&v17c=j`0pV#=G2Vyayi` z@586YQEoXt>FjQuHf64a# zn(h4!+xsNj`xM*zTdsuPK^NmR^frF@zrwBpPKqPzzv>>@-R_>5Hgu5=4``KyVH2!GgPeucvCJe|u-;#=&YKO`C$8wWOEn)v(IreRiqFma`WR+UHjk1&lg){`l3%X+fFL!@8_Rd7JG5CPu{BIFRw2aYh=Tlf@b ze>WR>=1?V~a$^k2_||y2G9lBBvefPVfwo-8@^a)`tX|%?=)#q+9Bp5mxPAqX+hBmD zio9{t6Ba7@c=&;o$p&Onc_vgwCY38kJA#;0aT+{St}6SxnolWn9{iKT;OI!iu?cdl z?pqt-s#lJ7263#xIM!r;*NQMWI1_P5e~lb!`*y&&+Lfatf;iNPpd9M5zw3E?N<>&$ zL|jG|^?k3WarG-ldxGt1;H!g78Zts7kD-?dq+EVOE{!Rd#>geumL?u%OjAZ^=J8qM zNn}n$739*Ka%qlSg6(PHVFtBigjSwNAD6@yMIx8hluK*m5*fs$jjs}N`I!;ge|n;P zTq3PpoW`S8JIbY97%so~xwL154q>_ULoOXDmyXCKDu_!bUnS)7D>E@8NI^>gXQ2;IYRaXd#ZJt&tRVYu}4bMdEa@334}B9}gtOP?@Y`ue%_V}$-; zxwJ$s11OgP$VCX^GSF8ExeQ{2f59Hn$3;lQB@J>JLb(hH!)2(S%P>Y59*&FM7~Mxu zE+deO7{q0yuM%<@#R#K4l8=j+h|3h@GKO*)6NbxJKbLWgFg`4oO2}mbH`sOr~5Whv71Xap9&i!f)ZY*!CcoX_U*fFkGhlf4R(HgqdNv z^g%AOW&~Zj=ZDr^!0IjxTlY__yJ#j9z`Bcq>tZG2SkMBa@CVa6ac#r?B~2l5T|4}#Kf5H`}3xn8j?~u((8iJL`#uH?~Dv!rEfU<1|ZZ#cGecKKJ zFy*ucIjxzAbI#q|nlPN!GESDwfFK6OlFB-&%DONN)>|3i-y7`4Es6pGT z45v+$lge#ogaqH=x5P}yHDuzYOuS*3Z1FSslM%LtV=@z&Y@-q0e-?(xc0ZH3p;nNF zSa%1lyCY29o&LHD!qknyy1VGp!Y-^U2i4t8b(O7k;0e~*GZU&}ojqad?4?VH+&=dA zes+X}JHQ)nR;%1WpB{;M8ulNedK?PF)7ZG56I{pW|No-vNPmT?bHq#R!Bui%m7~Tq zbT@Z2xC%Ysm$*h?e;R5#LUQ6}7 zs34?;IzkLI6TX9XLOSRwq=!Mm_b^n5g)u?~m?&g~IYK5_B4mcuLKa96vce7_9u5lG z;Ea$R&I>uNiY0JatMV<0ig&f zCKM$Vgkq$QP@L2kN|0tkDbiXfO}YtX$N-@%87`C~6NU0*u26w25Gs;oLS?dAs6w_0 zRmlON8aXEXM9vG<$sM5vxi8ct{|U9pOQ8-&gu0v{)Z-MPJ{K)C;4%pfxvWAXF1OHx z%P%zL$_UN4e`-Q=u8z=xYbLbhIti_~E<$Urx9~GJKxoU26WVdpg_gVJd%7n8sffrt^=48T@NuCjUv8WpfC>+caUeEvYca zmRgu+ODD{?d^qLt%-ng|N)_v#{LOLs(%OB&@WJ6js?L z3#)DOe}y%+MZ#L!3Sqr%t+2tiL)d6LBy6%B7dG223JJD*g4gyy*kXGoY_+`>w%K`M zyIm4?*fn9NJ+-jQo<-Pg&nE1#=MnbV3kv(~<%9$F>cT;LJ>ihOg>cy3S@_G|O*mrj zD;%>A68^SN5RTht3McIIg_HIb!YTU};k135e{jaWS2$-sB%HUO6E4^<3m5HogiH2^ z!aw#`!es|1TyfZis}51P?vRBWjx@qeN33wmkzKg$C@kD@6cg?`$_n=#m4tsC^@RtH zX2L_qFTx{7Z{e|{pYX&nRCwwbB|LLX7oI!j3ojfigqMyj!Yju%;k9G0@YZoic;`4L zf4p~G5k5HX2_GG=ginsQ!e_@9;j5Du!6}QxnM~xIsYTuyC)%7@MZ2@0=x`Pmoz7BX zq_eyj<*XwL&Ss+MY$Hm}UqzR*hv;?=6Ftt6qU@X?s?MpR=3FT1&Q)R(=LRvUbBmbF zc~DI5{7X#XJSj#y&xxs=x5d=XCt@1se@ii~^OG18!HM5Rc*JxOs+c|^g%}%=MvRNd zDrShtD`t!+EM|%*BW8}MDQ1bNBW8_gEM|*nA!d*0Ear&lE9Q(CBIb%1E9Q=vCH@dG zN6ZtkSj-o(T+AQg6$?b{5er5f77In37k`YnBo>aiAr_6eD;A4*DHf0TES8A0e~Bd{ z6|q#LE|!jr7RyG)h~*-)iRB~ni4`JCixnfwiIpO&id7i;W^riH##KicKT0ip?S) ziOnNliY=mu*fPo{wu%zOHc=k&f9I&wV%wKG_>3Y2~glsX4WT>_=9fl{|X zse7Q*BT(uYDD?`IdIw5<=mmXP>iYpw(^9`csXyI_#?pWQZ6Mvc#?qibf8D{Ui(<1ls1 zw-w7B3t6i8oA+|Z6Rl0~fcO&>e&87sbhN zQ=9@%#HsL1{0-iUf79WUIDi4*6NEaE(pPn=JRi3><2aUrQH zE+VzXKS%>{327rPCBKTxNI!8o87QtGBg9o?thk!Y5Z90e;##s=Tu0W4>xoy~NVbcc z$YF6aIVC2LtD=|O5Vw%~;#Trl+(zDs+c_fc;3RP;=Mi^te@VqXT(r2C%OLLKa)|r6 zAH@S)QSl&GMm)?_6#wGth)1}l;!&=>c#P{L{>}9ePjG$3liW!06gNpc&CLqN%1mwLA=Uc5wCIoir2a4;tlSzc#{Y57Vi}A@S=E^ zPbS{uW5oM>e^!xR>aY@W`UaEnfl~?-0;P$8(xgCXa-cLNP?{Pj{T3)q3zVh@N;3kb znSs)*Kq+vKpgnMppgnMppxu9upnYEG+Xvh;nwTMHj=1NJphe@LMQrguOw4DPn9ngW zUtnUs#Ke4)=j{^oxfBI$BmufgBJ`0Y z7$Lb}f3)O=NscQVg+6-w|2*-WSv#LG}f8Vc!>ZD3-;>BGPA?4WEPaGFfmokYkAcLeXD>v*Bw9dT!=DJowOj&~Y@C zCn0E@q3|3<2jAey^C9Tsh_+F*Ef{SNL2HP1P;~GCDc%{bt@05R9TAL<4A)lqD2fg~ ze>KGm;o2%MQnVP1mcq4F-bK-_V6;12Tjf2zw#s{g(enRlt0W4FV=5H^r&J6?sW>E) zNGFR$P{*VTe71AJ*APpuvq#@)lX(%}+4I^iy5#*vYf0Eph zMv+I-X!2H~cSm%Dw7x!Kb)fC936$0bO6vlp^?}lcKxt#3v?);994I9ON?u>DV&7tC z*AZe5!TEZX-1M6-*^F<#RALLKDzEq!V0{a^SvJ9PFJxku>HC&agRaMxCSypaVn}}j zMVbc5rRf;f84xGUgsjpm$R*A8f8X_y%csKDz$k&rX$NNfPM9t2hDFj|SSIa*HPU{}`~$E< zItcru!#-C#!5$Zj|9tM=#v<-_cO3mzi`)2COC>ZW8MQKjk`fG3@-EDko(Vq=_eB0%)$7Gu_e-VqlCR_Y#A7ioK z%HjZJalm8|oruN3L|PnTEDi@)1igMK-NDe@!_eHvWcwGB?E!}7Atu`+bl77|wkJ?f z`VWdpPobRj45~@bp|WDs2nC@vL}yEKS#=@92i>hD@;9_$X2e8<8h z-*GR*e>3@9DZ%AR1u0#rA-yXNWOc=aPrf}&=m93QHT}p*e`ez&C#H>Qn2o0l8}awF zH6zaWjupWf6P}jA&ocNq_Io}|78C~$YWqF9C=Oke0bP_4U6cu3lo>L*vOqRhJmhg@ zhk~vgP|TGR%DQqvRab7PV>mUdR_z zXMm?9-1m#Y*yx->ev z43u$|gUYT7P~BA#>bfeSvn!*st3U@A&SqTIpttKMe;Dkl4kKMPV7#j)Omo$O*)E*X zxaz`kSAAIHY5<#D4Pl$B5jMHT@RzFzHo2y7&ea^QxLU$ZS1Y*hY7PIn+Q1vv&+y4b zZ~KY@+eaw#5$ffnL%_Z;&Eig&W^oTk$8R@_j@T@I#b(hNn?)D2xm);Vu|JH^`(cDW z@Irxae+%t}Li?c5z9_UG3LOw$=m93QJrkOpehkEDix15hf6rq4h&8Im#z*RdV(q(G z%{2sLJq%+#9AiBKV?7cZ)hKLKqp?wq_4hs5e4-DAvG++Bd!KsYr*GRk5$&Cf_D(^2 zr=q>n!rOa@3GKy%=A+-}FglZGroFMu-sjBTe;0}Fki)eQ^12rLZO`jd<8YW+4TW&1@}tV;wfL4T)!!{>x}%mY^(1j7FPn=x&>|h6K&m!wr)dr zZ%12qLcD7?+PVkwyY@m+*FNmK_hXlG5Nf&(Lp|4D*rgnS)~=(_(RB>ExsF3$*GU-U zIt3$Kr?E>pgI&s5>{93?%>lMJ|E%x`e~Z{==C1nmD;Y+_zM7h6u||yGqjbf@{ipFI zjC97AFw81h8Q2zPEcd;c;`#@Ty@JMGMPsj_vDY!MH_+Id7}#5A>>ViJx(7vE_o0;Q zU#RGM05x0>(b&iSK`IwD;b`FdG}MIJ^kWu=J`Pi#c&3jtpb!0qMP}n07A7nke}hHR zCPJdZG!5VT?5=01{tHz9C93}l)qjn#dV}h}!&rSl^*>^)K4GjrW30a5IQtc9xrtx( zxOkuH$3puGB82u81RvCkf3vS}+i`y6gp}?GNbin>tZpHEU-5Ssp{_7OJzgmJZJ}-y zDx**Zg{ml24=?n17@=|)q4>C0fBM@(lcUg-C^Q;{rb3}$aQ0a?az!PG&7QzupA7Ql+MEmJ{%1Uz*G3%Vk0R`c+NykCZ+XhfJ9p*rJ^@a zr82ALN>nv{d>`>O71FE`nVqWHkhVDGj%$*n7xbs0rcYf&RE&%=91!0K05R7sE2$S4JV1~OG z%yAcoMeY)?!d(*9xl6$ocWKz^E&~VMW#PEH9GrDm@Wmnm`iJd~7)k}?^jyp)uMlCl`2e3TSVN%00LKP6?Sr0fQ%043$5q?`t+ASLCdq}&Fn z5GCcIq&x=cM@q^^b2p!vDur2Eps)skj4D831x#2G219AT1Ym`ze}F=UfTEOCn34(` zq+*m*l#+@Xq~eLv?KI@ZVAREQtB>i{091D)Na1b*Y1~aA*4-Qf(-LyJTVcAj!E|d2 zrQGeHqPsm*cXxz3?oQCy-5FZByFxp6H|Xr{0lnP4puf8}40HE|vF`quasx2s2Ejb{ z5LoOU3M<{iVS{@le|X)aFy+R;0rxmK;vNqt-4oz~dm>zSPlCJdDe&0+8$5SUgSYPK z@WnlYINURd=>DCk?l~lxdoD@io=;-k3rS}8B9hbn2g&bVN(#G|ky7pzzC@D2tt$S1 zv9b6+zI0+2jl%+#!~{Z*2ZN*bh+lvIk6e@YpoQj}DNlFAsQ(%z7F z8{KQrtLxCK>(Q$l(W{%$s|o1UE$G#)=+$lL)g9>7UFg-_=+(XcfnD{hdxohyh^bqE zUKejjEoVqALlvn&NfiuISxTxzNtFyzxkS2U!Y2xFA4J^_qi%npZbwnKzfrg2sM|@@ z?KJ9k26dx%e~a3ISD89znL7R_$tLugc0*7VLr{4tyBZ}`Ge{LEsX8T9H%JvJsU{`W zG)R>wsWv6mHb|92pNid=Q0dF4^c7V48Y+DQmA;8e-$teHqSE(J>3`9o57D8I(4kK- zO`l?#KEpJ9;a^PirG?L&b74BPI$=7rdN?Eec8B%`e>=2y*rC104($Uf^eKFYcAgDq z1)0z_^zLzE^r&yP^(w5bH}FCu-6;z0Fe zgcP34kj9e*Vmia<5Tidn2i1< zOh$L`LX&T1w5J5PJf$F|r!=JZltJ<3!e{h9L49f!dd;^ndUZ5CQ$?~vf-0p3_ ze||M#wHT~(;3+JqSM^jv2US4_RYeC?LkInYDOVjGR1@Mowb4O!Ait+B6!p}DvYz@- z+0!sEU8hePm&5p|OBf$@^FoVn`=}}Us5$zm1^TEZ`lxkyAF(eEz!N64KfQ+AFuuEK zd~IfY59`#jCx!JiVRaa+w-@FIV0~ySf9_+#>M~egHrwnMfCqiH(9;fG+8$ln0bSY= zUD^p<`YXD$3%ax$y0kmGv1p`T}{ zf6$1FrS0@;7=QN<mnb2wU-fQEMf22XC zhw3G2nM1tLDX424N_*9zW|jI3JSib-cXEMfND#qbA zjKegH!*p!>GcXP_(a>2KhuKiTGZ%_@=0PdXe5mMI05v=dF%FBMnP)My@%#ZDJWHXQ zXF2rttbl=@l`z7y3MP0~!*8CofBv}SDnQ%8^)OG|qo~rOOr;w#rAJ$zxW~|38)L#6 zG1yr4#62!duKAw0JsZ)+&1ho++UP|aw_vXQi8gM-T-$**?!;W%g}JsHb8Qb)_3VXO zp8Y{j+&99c)c7zdHPH(lzMWEsF{O@RN*%?NI)WE3Ee?IswFGC*BRU8kl z;dpQz{dEKVbrbz{JFo*lLw(C~2+4Se`i@=zq75Kf7Kkyb&d&d!QgYP{+dT&^GsMv2Agk%Eu_L1ny^+3wulK| z99R>kw=)}D|1jaL8GK2YDEO{P@Z85JJisVC#3($%C_Kg}Ji)Aeidp*{v-SmM?Muws zR~UuY*h9X>9`Zf5%n#T@e#9Q~6ZVjwv4{Ku{bYclG6$n%9wx{(f0!oQVXo|e#c~9! zl%rssEI@)R!VX!21F{Q_${si^D{w(p;i{~`9a)FRauRqYCxs7kazf;k#34r$QBFlv zIW;)1#%v^r#K>&vM#NE;s%2bE1B7 zg%|1tb#^PMOIMmzf7&weDx)3vVXJ9(y4r-bOT>AN$r=Az8>kvI>y*C-ryK{OoB>oh z6Qq!{KpHtKd@sjC7C9T_l(RztIR_M#b3$o3H&l}Iz)x~ss3Yft#&UjWEf;|Hav|s{ z7lvMP5f~sBh2e5B7%LZtsd5RJC6|PSaw%9QmkB(O<%})he{n7GuL-mXim+ zB(iF~7yAA`YvXbSw5AeTQyCPw3M7}SqBYeZPW}n9%GDv4Tr=_7IQ!TOxxgB;NbfT? zqPW3`VteZAO;oE*rdAyiX|>t1HOIn}K*N(@R_U0iir2c8O}1Fu|DV2ZGLt{es+|&5 z-5RMAZ)fn;EFsHZpp*o zfjk_Z$|K;dJQ6<3qljG|O$2!?YpQlNXMvAUndaHOFeBXVFeBVvFZBNA2q#YjmpmC# z%2Ob{JQcI*f9yZq4n4trs607j1}5X%vTt_*f001LVURbGsVvjh`oDYnUF z*d~`ljJyKdW5mgD|s*qg278rh?s=g2$}O(|^-p?r#&;f1SaO8+PFDi7@NQzFCC48|~SP_UuD@ z_M<%q(4K>6&tbIZ2-8=9y5KOggJz89C86D0yq^3M8yS);)djk2VxW%;uIC)6&-RZNuYp|42mf! zptO<_Dk{-XT}cJ?mDJEwNegY1@1VVs4!S7mp||oq3|3-cq>=$9D4AfYk{M+JXZ?CJEbUmR*Df` zDNdr45=2o-l4MG0l13>@(ktaiCZ#;dp;RFGm5QX8Qi+sNs<7@nGETt>rtx228a-iY z#QHZffnEk{c=bQiUBj5Wo_b+yz^l(F%yQIWIDLv z3bUM87|CF-y)ZcddqZJwOxP#}d+UX%0oXeVduPH%GuV4CObft1P}m0(Hip4ITF$B( zx49ayPbO?EgMIeGi~#Hlg?%w$;~4C#7vlXe4(NOEV8X^z7)J~k{&E3R%xwGsg)tke zV>Z^rY^;UZSR1pk4rXIrf6T`En2ilF8yi7>r7;v$nm}2lDO6UPW0%qryOdVgrL@K_ zr44o|KSMXA9rRV&!yu&tj8Hnlc%>6eQ+|cnN*7q9bc1C|cUYtJfXzxz*rD{oZ0v*C z*bh!9{o$N40JCu*+))O>LuCkN<1l!m42Mt32+YQjL{LT%Ss8=be>je$QpS^X$^^{D zi6o~oiR4qJkRr-&q@*&9lvk#cYRU{!SD8r~E5DOg${f;8nM;0E=8>Mtd@@j3Kt?JH z$#{hxcM&1VcdXXuiWEf8GS2cXgo4%dEd~2gC9UPKJ2SVYXaLb8>i3}cL zbWr#kX@y7m0?b93fAC2RE(Tyh-@;RtVZ>Ho#8zU&R$;_eW5m`#MrAEzQ`SQsWg`?+ zHevs<86%beRTVGPQMN!MWh=B)wnJNG2Xs<);vldK1}M8>n6lSD5M*OdiR_Dk@EdbO z8G7-l+qn4D=uszA-Cgv;2A8S(6zed~xxFy!|5@i&4x$~0f6_i|{ouL4T6|8QiqC?!#R}3}OAQr0hKf_EiZXStY^wMhQ%(tU zAjG#Xrd&d`E~8pkP_1jI)(uqaCaQG{)w&J2l{=``y?{E@W6#+WnQSgL8dr`QnV_1o zr!m>OAsc^_e^@giDZPp=sR^IX;K>*~xdF%Dl-6p|R7$j2Z3e5BnpH~^CXsxfwoo3T zrH|3lCzwe8VIn=nM0$pa^c)lEB_`5qOr$rMNN+Kb-eDrW$3*&o&Hf{_Qa>^F;5N>+NQTvoH%Y*sCv!Lza7>`ciV zVZ7_RbXAQ4rz(P|N}#ANNUpjeM)g2ORfcS;3VBo=3aUwz_LnjGq=DWH)W z4K3Bwf6!J<1D({g&_j(u?|z5gO^4o1kKT=i*=hz@pk{=nY9?5tW`+bc3+z<0!a+42 zj;q<=teV5WY>_QKPhnpO*jFqGVIdevFTgZfM^4k)In3JJmIXlLs!O9?{b01Kxs;Tb zlJXj)d6bl&lJXm*`IJbm3e)=Pf8kRjs6U|B@}k%Bq1W=G*9xH53PPOv zBgCskAeUMc3aG`=YbBwyS_&$uWuS&y4(h7qp@~`%TC0`e7qtrJWmV{2vZ`IeKcl~)LWRausN+9+1Eb-HGNvOIGe?wVjwokslI3ZW zEN{a9VDJhIUeOCnjNeMuYL#iV%4W4Cf2>*+R;?QQ{mELbI#sT^S#2q+R)fK7S>d%Q zytWBn#^7}ryq*$D}3U6-0S2B1D25)7B zx2EvcCVUlxw_)(MR(LxKZ)d_+Gx#qI-oXm*Na2=!+%*i|iNQNt;aw=aiwR%Lf8bpi zyt@_NgTi~5@O2E{lfipi;dG0Wvuts$XYjrZ-rouzK;Z*S_yz_a$l!ym@F5gF#Ds5T z@SzMo+zKB-;gU;S)@F0)tOv@JUwqWD1{b z!o3VWg~5Nb!lzNVW$$MTgHLDhf0&9pI1Z~rjo;Z;INjXgESo!98GN1< zHlM=go3L#Rw$KV&M1?OhVcQuD`)`FBaIXp9$KYESe5)0{jq1P6gzsnY?NyJ~rfjG4r zj8nTII7u0b!}u^9#)sq7ZUjzHMnWrfG_+U8;sj+JPMpW%)NTS!P$uHkZW2saC&L_d zDlAr~!E$vvtW{^=)NUqD?PlTB?sqt*&Ve)PJh-UNhimErxT`LNe<$i9c&#pmkLnV_ zsmq8{T}~u*1<}-%BwAfX(yOaUCUq^zp{^%+)D5JNx{;JnH<1eJW>Q^EAa&I(q=~wf zv{bi|cItN0S=~W;t2@bHbr%__?jaM@ePpV-pUhGZkOk^NvRpkx)~kn!S3N>@s>jGa z^>6Z*dYqh8Pmqi1e@SvfJw@)RXUG%v9C@LhC-2k?*a^%@tW zUgzS}8(h44lgp#t;tH#`xsvK#u7Y}>tE&FX)lwgD4b_KSOZ5@gUVY4UQUBw5tIxOr z>T_i=8mdgxKkQ%7d4K% zs`1=y&Bi^{?A!~@!F|x2JZO=;QxkYm6M03G_~e?4kI~$GM$N-#(-c0Brtt+eoiC;( z;mc}C`KnqnzK)ihZ=|Kp{3;qXfgZ0Jkqb-G2#1^9!v&Cw~ZCSJuwp?0CTS2Xqt(aEER#q!#tE82;Ro5!m z>S+~i&9q9kHd+;1N3EKztM-$vw^rRYNULERrPZ`ef6{8%rfYRl8^|3T|vFR1mh7uWjO%V>S=m9&2L8d`sQ18so4 znKsbge^wi0@1za3ch`p6`)R}NgS8R%k=jW61Z|Xkx;ENAPa9+ZLmOvbrA@G}*CyJ% z+9dl6NV zYMUILw9Ss5T7sj$=5-9$wm8OWTOCuh?T#7R4#!+=r{fQ8mt(cI+p$sG>)5L8ckI#* zI1XqB9mljojcP&_u4 ze;zb^ODEelcCL||LGKVVdah$;&vlgbTz`A{V}YLQ1cg~%RQ;R5PI~#{0oZ8@v+Tf} zV6ZdRe()@Xoi$-68SI=DcAmn{o3K+1cEJj}NMRRE*l7m4WQF}hVU{;a&oJ0!D~#?; zaF(5kvkZ3C3cE&OmX}D+G1zr0>;{G1e=uR^8SJJNM&B>xEbo_IV6fX(*c}SHW5O;n z*j+2^9);aAVV4-}z7_T_h5c*7{$a2OR@g%dv%D91nZX`eVUH>7u?f4vU{9RtoZ2}Mwez587a+NI5n{AU5T{*+c%?K%|Ie{Mio z?Iu*#ZbMD&F4WWRK@;shwATKGj@kq0ragkb+7lS0{Rbnor!Zc72Gg|XFk5>Gi?r9U zOnU=sw70NXdj~tT_pnd<2uHNfa63m6=|oZ zCco-wNKZX28K}pQ;d(kUPXC@v)?>*GJ&w%NGmxcvMzUJZOg8CR$)9>W*`;SA2leda zxSoTY)pL={`VZuWo`>Ai^O7feKJr@6Pd@4eIZpqPbLxdTNiV`_dQmP~e=o*;rZQ1Ny)>6wFT)ko%W@_3a$GsR0#{Y9#MRU*bM^HqTr<5Y*H*8_b<(SIJ@lGfU%eJL zSg*~E((7=O^t#-1y}qv-Qb7(Zcl-bOx|?^QFZFYDCx)}^#9U+He;#J(#&?cdZwyYo zDTsPAQ1s@ITyFs}dP|7Ye_JPhssDY@c7GRoAC@uUdSOhsuG0j3Nl7ma(hW*_MMJuToJ_)s(5`MYnBU|nBFOQ$5w>23~_-r`gF7?Y7 zO8R1u?)gZ@y-RN6-X(){pOQFA;tbNilw_kMn?ZU&Ne)VK7^H`k6hTQ52I&zcMNv|e zL3&I{A|;6i=?Nvde<;aikp812y138#7Wbbf3Zd`P41GF=a3+Ru7KU&(hHx&1a2|$m z0Xk_BhHx>4a0!NR8HR820J@2c_vATtg z^;6@xU8ZkZ5Qf(UgO|ae-G|J>m0TeOsOi& z6Gl=-6-qf5R3r4Bv{u0MoG{V}%ECpbhrWh?VW_eE4>?hG)m z!I-Bve|RRqceWOVQvMFfjK5MQ*rGgX=Yzoh5KJ+OaXFp-5~B21*h{{Kbov{%6+%8i zI)V}+0unm1oA`3@g_w*VQ${bu{IZCM97@R2ua688pE3c`)z0L#iNOQkN8t2NDDpEz z>tEnI{VQZiLLhq*jtvLgXNV#sDGHAa2ye^+f0~JjHrz*zv$Zf~qYod38tL<85(h*i zaYD)@5fGCk5;7)_((S%uBRoHYN8^2@&bzht{mwi_}f@t~D5 zo!zh2jT@SSYi^eB}ocml4NLUa>$w_ zDuo%=jMzgsL<8@T{tr+~2MD8ztU-K;008QV0RT`-0|XQR2nYxO@M1!iG6X<>d{ssI z{yV4LUXu$Xp(KC;0RqxgdI&8L2oj0`6)s7DNJub6fwcsr_uj!!G*VP*h}3M#F0O6W zwb$Ha-F0h2%k&+mip%$aB2dFO3YE{wnX>B1Ev>cfth=tndC zWFoV<4N!fhol^Kb?) z|BB*8G;jL&R|^ws$+=qbB8E>F%ZoTGEn%%W)`qjTwX$|Bo;MSC(VnxYy&ZVbkqf$o zf8AZmzkZ!J5_!>;7u|T#-O7?!5B}AY%fHRada>SrCf3Kq`daBu z*4oVa@%naN++k*S^18p3?qCBC5v(!h=OXkMi9o-w=_%ZoHFW*jfZ^WJohP2j~{yg88<8D=)g%qE-J6f>J@Vs~>B zGdasNGn>vC?lH4_&FnsZuH_6fn`vf#j?Usm7WY*)ACbf7m~Ccr%xtci<(k?3W;V~v z^2}_$ndO^Vftf9^vIkfpA6CSRVqTQ+;z3?KWM&J^Y>}BQ=B;0u*uy6F2qQT&b42<` zMl6+)Bc&j}sMw!hJjI_^k|V(oZwid0l+no(`M1Qo@I4|Ug*TN@bNq1LG&52%CQVEoKZ>`k=mcN# zgb`||oskW5r;WHfV^Z>@5sZZCsX-`ZT=Ik&lhP+JiVkbdn2?+@cEs=*JsEk^?)N|F z?~&)vpVK3wxG*<=f6f3#&JgdgwDgp*8H`%$fw1uw^dzTDN=+XRSxw)~7$&Aq#o!=A z@H>pb3~e#Pt5UW=M-Y5pqSi( z9zg^`Op6z16#I*F;JC$$({dK(X8H3p00W1W%%05$3e!`d`r^go{Dt#!vL_T2VfMv~ zQ%VX8bMlMTrcISoSj+{(af=s^$j=UbV}|77VDe2vC>JjtnVav=8=X66ZU)8|%u(l3 z7A?xl&F7PUE?SgTkXJH4U&XTK`Y}5jqe&T-o)(myK5}>g=Qb@UQoVt%lKgr31rK4E zl$SHR7=qFYvi!xl1wibn`T048DS7^)q8zB&Q}x1(tda#i3QO{fbLZ#uNGX`VATMWO z#-jPN3i3w!vx*A}7j+B?fR}`<*^D~1D&Ruw3 zODP4}(A$*;W5<`wpOsTM$v-O(NUP2_hd6b5Y8Sp<;n=Ksv3HT+CTMCgNngD4Q(h#Ym$!WF>l!3YVxy6Iwm(I=8yUP^S z4deU^gNdA$ldtAaia&o;VZlSHuE>3R1?pVZe27EB z&Etl~MGo8m+#yVK%0#;`)4;4e&4bpAf|A0loRPUa&8(TwU||xM!01+ZJ1eKq-y^Gk zAU{i8_F0Q=d>7Bi>Y;LDQdU*kuC|n2E0s{bR9bzyw$%Ll()!Y}+EP3HmR_{8N9j#F zdyKwh^p>TnlrbhSkx5MUsttviaG9|%E3+{>b1)}!F*oxt+)7w9^O;%*Em(1G6sbD?XZTvRD z`mnyNAG@91!EkqA1K2<|2!nBDU_)6l8^%)DaI{CTk!%zj%~BN%7yDP0wrtPM>99t}!#JN^46+JH1RVGPc_kZrv{###*qTVM@p}m%=Sm?P7uqD>?{&9l2es z6YI<^5`q>b3C+#Hv`RCZxJ7`2Mh#_N0S#^&s^M&epqYn_b}UP?DQuicVdL!zOJ@@} z%UzH+k!7$+Y%-e?lrxpx%`&l}PmfmEJ%YmSbt}PnQQRlYFe_{(8h$p5Whn~FW;x)Q z4P*|a&lMGx8)Tir?q~BbSst5z&+=u36`*SY20Q@vLI^2BT@2O|_8`iK*h035EoQ%B z53@(m^C;*sjH)gLYxNRvR4--KkF)A!ta>@CUcrHtkXF5lRj=lJYgqMKR=v(nuOL9m z+^SOkXKYnz^^U62nu7@5iK^1N^Hrt4U0PLoZGDhl*cGgQcetwb#b>L3N?&@us`Qm* zH~Klfy0NPC_j`ihuRU2+`ufSL(l;(vmA<*6s`RbRH~8M(S5^8>c~$AVr-SYHF5l?; zU{zJ=hg+*kKRQrV`ti}K(of3HqBwXJ#o;w5j%-KqWEqO5j-x0?!hLdd35sLuP#oWh z;=~~o&pd_+8L$MZtuV1$o#d^fPeglGEzY)=|--PhjZ$bR)w{qrxZHRvTc7(ou2V!5p z6Tz?Fjp*0!LCEX(BIfn`5b*l_hhi@}iAmm%);2NC%CLx_0&VT8Q?2x4CUB=0Rp zr0btXsOyg+*7e5_?E2#fcKwN~VfsG1M*Dbf`^|2uKZ!)BKZQi7KV6|gXO}eNIfulk zuRvndpGRWUS0XWg>Yqnq)L%qW)L%j})L%v-)L%i|>#riVfl|aWuoUqMJdSt;mLV2_ z<%mUK1!56ci8usSBMyNzh(loQ{-Cvib%;Y?{TZ#b0kH^dLL35{5r@DQ#38U1z7K4J z-vc|~_rOm0J+KRY5A25D1AE~2z+U)0upfR89DweDC*b#gKuo=LR9rjv_>C0z;%+VO z?poZ7yGzmH&cUH*ad&N@xNDICiaQi{x50gW-22@3UEe?QSu4p-CdtWUb}~786F!si zA$B96_nZe&Fa1OjLRv@24L*n6z3|`oaxd}~rwfB5VjcEP^f%{)?}qNZ@Wsj(rP`#l z5OPZ7Y-ti0Ys`q>y8V=2(VY=BDA0qhwEJ3eWk_J~o9uo?TP_WLe5-@73&S96omhVJ zIQ-*+|+l6Cb;nwo}+S%X1f?hz;zN1A-?T}pgnCs!e3Nu zau6^>!fD?^NC}Y}qO%QO3?CPXI0;eir?(*S7L0y6lk5(YzM0EtjH4z)qs5F5w|)!z zZy_mCs*k?EaFfey>g!(dfG-}{rd+3>aoh=Az1}6y=zMSXLTGFLt9Z12pOle-QAuMJ zg%O%IR`tN={t9QLt+^JBXzgu|{-4hLW^*kt&b9{M2)L^xVu%(fq+{){iU!;Txz}zY zVyvB3E@EzhS}d^LO3XdCqxdsXGgUzBGG_b0X{6zH9177gOMjI!uh~KiLap6ObUOE$ zATG2u=DxUHc?EmQJ|)iM^Z35w!Yg zjb}s7`qg_2oFuhKq!#HvNcK_L6q+dmANpbQq7-o3m&2%BQKP;{swy@Yw$KuSI;{dK zOgQg>J4HmCm%a;bl%k9r<3Dv?oLRm+5o3EDt|nYrBkrS?cUOP*zc#f#OYp=O-3{8n z_Ak=h3azoP6Pb-~k3Nv9;?%$ylp%Pj4MjQbH!X5;+Vd*Xby0V~CeR1PVnk&J3C}Y0 zc+b?7zYEAoK=lzqvakIE6)|Z{k91?PG&@Mq_8ex~bK`x>a62zG_^W z5@vy>Sv&%pG>iI69Y_|N#g?&RZSOO+US}sGt7pvi?zl}dwO35U#U}z#bc3(gL=|N? zfOi@vZv$$-D+Y&Z&ctY*@5*U)P82j+G~$koyr}=y^559M7myymENwvB^Ey`bL3j}A zklo?P#k^;-RDZbZfqs6%l$M)|IEgg6DL`UaOG}HeF1O@0BHJ9$67?Qb@^Fz6!KIfP zjur4)6OMiUB{CdsE~FbrTq1z~wO1Aj&{DeLbO~khnWu~HIPg;bmOt_*6^lmHl8b+$ zd`6lO#0iO6$fqVEwWh8FAGu1Wy1FyQ%y$DFCH zFLy*tlUMxQMYg}OZRr+aEwHJf~M1a!4|p$I|>XwB^DYt@am^n4e?e92W4Z^Jq<=^&X5u+?P9*FZxqk zXR9r>_{~n6xRqc~;gm=w6o_k-CN-#Vm(~OG&&$YeETLhs%rp|mo@}_(-=AedcB}K^k8&sm@D~tHr1Vn45P1`iaxIM3R zw6u^7lu4dq6_JMsnW+#-#T>tAeCQmZUJZK z&5LpKw*Mj$`<%LB@mwz@CCrCx{tX;!x^0-UijKDXwRw}>zEhc?aK9674XYB1Tx6W( zcX=h9^frxSXLq}N0FlIM7J}H{Xoa_hQ)t2GDrqsdv|7G@=~nOGex8;5=WJ}bjV zDO`_J2`pLMe(Do#uKe;9>OBu?v&4E0&v$H9i@S)!l_nip5$L-DMa5~3BYITw)WIrO z>znVm*>}6!#WopN&9xy`6pdf_ZBp}mYRQ{-h}pSSl0Krs0FHTxcPaDC6+X~9#&SLI z6#enGX(kR!C2pbaEl_Rd{0EG^$d${a^a{71?kj@YI1F8l`R}d3C>M9 zom>ksnwNd5cQ#RtRqT1HTKuomM`30vRPn(;4#pr#A3!;#ZGqq$^P_H!eD&f}4Lj-ze2 z`}2}A?E#^5E^$=x9{&F5ANqzFktNHr)egRqk9kFwG))8J^L6eX0%HmB2j=kYVbK714(#$&YDga#2+Rl2PWj_2b)Xx zUf*Yj1)PNxl0~~BqqO0}%Z#zm#oP^wYN+x}80)Ae=H*zJEuY#WEF;Z$buet0HAN3@ zAbZ~C-7n0zC9CZd4}8SOd&DoFAxO-RVC-KJ+ubUIgYMTQt@^M zukiIT4`=Mi{rnI*8WVbW!=(@+xXD3FA!pEk#kIb}TCmqj8dUc^Lr-$Q3hWU9LC&#| z`bF-p3PbZ*50{GC@LFwqom@R-$8vBVA7^ml4&QnV4icPb zCQaIKHd#@AkMOWPe;@HI1qQ*vfxTaQ`T6}q+Dey&r>$4>lES8bIR?<;X6Gcl_X#ig z%1RTWdzhX1Q)HcE><_)Nx-qlfMM|Nt{?7Vgy>-QTuVPMF**ou#d|ySV_hW(9!G~52 zXAuB{M)CvTT{^FRO}tWAxJ44vaR2c64}(rkq?*~ic~3qX>}NCz%~W*=9r{lk_;pKo z_rA&~peH!nPiz&9jB@RHPkA{Co`NPv9jID1F!){|JaJ7Zm-~JxO{0PSxc103IeZ?7w zec%V^dseJ9ZXuH3tgHQfMfM-ZjQ%`8Yvy}L4Rr#9gJ~}>@o$e_H}l4_wG``6@)Xhv zVhTS5L6h4JsBbPVDqQu%Ya2K!JCR>1`j+e_jfm%sB5ogRZs8kv!+}QLf=>R*PPo%w zrl$@zP8fFQzn}RGE=Wh>y&KmgeX}0n8t%T_zp@#KKLv)1Vufc-vCLeAn6}`aN)iR| zp*9!!f3kLB5+e$5K-A38DDtau!sbTz zmq^(h-_cy#XFJjAIeegj$Wx%Ps}gLeX19gUmh2dSfD+9L&Prd3Z~rhHcL9fv{~TONm#fq1h*K zznv{)9a=4y_B0*VY?8@#Xs3XIFInWjbZeMVnk@U8NEUgBo5q3$Tut>IKP?-v*Th;P zIB>cyGx07rkpWE(foQ~(&Pfd0km)7|8;1x7L6c?W#U_-d({Kmhe6Z2m&DKJP>emP1i#aTZazZeI#cp&}^UiDEPrltxoAhUsV@lE-_?#DeMFl z$90uVZe%%CxXjn0-gozK?=1(@feb!4S$%~XrfZBba?kY}+h2;i%qiWJ40K8J3@p3 zlf+$l#}=j6`^Y8k{nSC!xa0m%&f*P;yXYL3!+VeS@6nS!C{jnWC7FeSX0>$0Nkeav zKiC8LYrWD$4EBY!Z^o)Agnm@bsLF0N9DG|N8|!mMjUhLsM<6ukmKL`izav=*U+*9? zCYnxPUKW{`Tp%YUz}J^v*+Q+%jEE{D;8J7w$8pBlD}(`+$5p zo;c{ic)MiQciN)HRQ5#K>&H+^3Zp^_o#0i#d5?egCw54}A;^xMeQ}wwJ@GMA$Jf$T zi)+aymZxJ%+wOW-;@)I!`4JgE$NzgGRz*PjkM5{Hu31!RrQ_3@Z)>NFHkpECPD}aP zUsyGd1&tF@ZSiId+s=r`fztwI{KL4>XgAuz<#oaQVECWr3^w0A*@$qtc7)J6eG(D@ z&d$DZ_2IdBgab$S-1(yqnPT+qDj(6-m0S{#aLK-IOAt>iG1fcO;pdzD=Xn@Fd74&x7<(AD2W znHRrjJZACx^N4I*E8e^Qmu-{WzU6|IN9sOxmHD~cNK9GC;ul# zsc4=kY|^8Cs#?C)4|zPl4q#CCA&iz7?u3^V@zS4*f7(3_Op_JE*WO@_F6$ZY@$P9( zDAc0uIVfn=lJbMRqTXYd|60ry_(n=6*C90rJ#vg7Z^lRX`VJ)|3Ez24^$y*UfQnar z$D4^~w|X(zhfb&?QobR(=)j5?2w%iSb_;=7{qvEg=bj9Q`Zn}^vl>DzzB`_;x@RrM z&HJa`M^WBW*v;jaAuIhLK7z_T?o;N?N~AGenUEXS>(+rKqZi7Mu6{l*aCqs_IE8X( zDd7gB@QWn6AW0^VMVCv60^yTOy^?MRLLWrl*tSp5cE47bi_6g}Zx4A5h{po#>Pk9O zb>~avGOzF@|5j(BX2ubECH7~Rve$M_5C0KBH#TF<{`4ioaAKyV;wK;6;DwH%KoyOY zfefBA8dZJj$`(8~?#YMZ%!6~$?`DO7$&P3i4N+CbG)Ek{wam~5?P)J}?dWa&rPxaK zbNnqMj_9W$7P5T2E$jkCAj0hxKXr+Us50XyD5L1^x6J#A3uJjGmWph}t(oucsJ3Jn ze_SGd5lI`*@QVL%h}fz-3{LRlzC9aMFLVcXxs(o^1e82)c=JlXy)dsdw=9W0*yI%p zc(;;&W4zrqI_GYQRT21PZH_aWk~}rBSFbr;9N>|6%4cN&I>)sg05Hd3DfxZ0Q z*KR6L4)~^TA^HXURZKsvtV~V#9c1nMJPGsqn=`)0VUm@aseY*{7ud?(gE3cRKk}2a zSrg{`kvFs7uUnjKzWJC9Kir7Su%L3uzp^K@YL%i*-<^v!O9d#?nO8Jeu9wCLzhAkW zz+Ojx?qX5 z))+7Kxyz6 zCqm1F_Q7l*b9?s=^4AzaoHqj74TTQw-7-n~axJ+V-Zd2+RPdYDNpU})0Y41G4DSFh zjMj$ig92P@Q{m5tR|wnC*)Y(NhYC+OVz|MFo~~(PJYu{ZibFisk%``AzUvh^4i`RK zEq=Xph2ULd9oUhO>8O+4|A7_t-k`;J-U+JuzmdF-izIyT#ai4-`Rpa!tvp(fUqV4q z%>78GSY$>vk{*;Ek^qzdLNAya2r+&|_YUk(e+>E_fo!jB(hjqXyIA$x11>;YM22i* zg$oqu6D%Ec2AdMNq4M_Mr>FQjHThCtc;JQ;=PeZHI1#5CS0AwF^c{b4jDzeN3X%T{ zKZXxRXh&l&3*$*$;d;~y=#kBa5%IV`N_Z%$qwy8ZJFxRlxbVO{TIk{u@XtWjiQ^OR z)%B1!O#}~Skk&TR2Guy8==SUk|%)#{}@V&Ly4= zBfC++o|LbSbVt(9tC2uAG1!y()p2qApV)tq{`HW1-~SD3p3p@SLYvS3i3D8ssu=b6 zEhBKz_(3kO&?9zHFGNq$KT zYbCY1ZuYkjn;K1w1-q||!q0+eXO$5XHZ{5!=QA5DK3=Wxw1=C1Xv(vF>f9~AhiGpF z8`t>5JDv5MP&#Gl5g7$$Z%YPNj4--?^{@yVl=P5ZU#OwQ&GqRA*T}^KA|#(~jOxec zKQ+wt9TKg4##k@t;StWx?{T=U(F{2iSbS7LJNpqKD(jY&AgE`JC)z5>g2#COC9|yU zuMf}EuM3iTG7MwEs~c;eYxA#@p^Z?)^4bS~`FH4c*fM#DBylw8PVdkaBKs~i3x||y zo^{nlotJcv+{|wz*Ij3S04tXgEn#pzDEI_=Hk-%Y>VWnAdfzu*w+!6rj{}7A`U)O} z%T)}VFZ;<;w`dC8d1`+a5AkX<49;Q4N-{;ijDPmR9@*VvlH#pBd5idAk4TQ`$~&56 z%x3TQWa&80tYqYmn7CHL-%a%u!Z*+Nl(KT&D+@oD!rx8zX>+vzS!65=8(ltLN${Qv zebHPkd1SdIJ;K))I%q5$OQ(vf*p_D~Gt5NVPA?{9@S-MMIuG*4h9-+oZSz@ni@sXN zId+T00uaZ!A4Ni?J)}1m254~$eV$(~n0;Eh;XSAONV!_N$(rmgWJ#HTUp)IB zL4quO17w2p1Z@}c65hGrxVG$mBx_0J7eQw9t7rTAYXSUvNkp05gSmg5Ky<>g{ts#EY;b;?!NJt)o_REEi@XF^9+5^++4LN~y|I!}y>#sJDte+9Awil~D_mS|{N1Hc9 zLP{8-;D2_f}qQNm2UDVO_M4BpN2Cwug@esI@P{9yD^ zs*KNu{g(LqIkCU)Lm2aS zVD!ZF&p@hzN0X6D4fAKN<&O`G;y>U7SsKmCN(el(qAd4InobgD<1`h(Cz-RkolNc~ zPO_wb+ozdN%n!BZ>D^`ztx z?RBCfez@#QnCY~MX#o&=$=y}NRrfyHOkJL{iDKuVZmnaKZdTR^VJ&66RdDiz?yUcN$ zI!db2(U;Slcl;dN7@=WJN@G|b_dURREZL}Ojk?p;kfPI(Iq}uRkiOHwkh;@On8M#g zn9koqm~l>jLIG`lT`o`0IQ7;37my~>%p(spzRElfKXzVYWGOr@?WMdrv}-<&&r3b_ z@W{3~5;Jfvf6%Q{O2J+3s{`Gp+t)Lv!!zO z?54)32WaDKAawCAZfS#jKEq$)kX+iRCA&t{KB%||(Wy9}eCH%>-#v`m-+dxU+sTN- z*kKwRbcx$;6I!4jx)anNy2@d9394^5I5?rl7mOIe;FtLmojtP~k#qMaUI1nHKWfN_c^Rx<2CEa`QiL5=dydncgJaEVtBnx<Elb*AgSk1O@1r@aHGrQbuOsJ9_q9DS5kzK6(8KnvXs8nuiH@x1 zbcVv+T5Y~-8a_U2YJiXT>yPUjzoM118@iXysbMiEYs<*yio_GrLex8Sb!ne6x*uzb zmX)4e9Bb`j85@SB7GBy6Nu9na?VSk8U)E-ZJJ(!?QO{9^na&mDo9?hJaart$Xb?a$^*6Ae*I(^-ODZME%WnZjrJFB(mCT(&?#ozRi?@NjwTaArC4 za9epUw{8d1@i$&M){fs5gU~vaoh`Vhy61ov_9;N| z+TlX9@OU=W-WK1yjYayJ+L8m0)ZvD&>!bRpD$U<&bzc{$jXem%Cc$u3k%zQN4*;Ru zcRwQBF$pL6WiLAEfVurSBb|K)1E;U6sH*qwS{8%ydeDw&yesXptBgGu^CRCoN<7VE z6YY@;QJ~f~zWK)~+S48&fXva~IQJ?mL82%3`@L#2%F~R2qiR#}7-q$o({YmsoPG2xpNv!#PIL zT$s-W?zNXN-3*(H=^a36&${DN%`Ko$X}CaL1+?U%$5kif_58xEw5F@aCk<1sF9Rj*z|SHtmwsuMeVr^~)J)oiK>u?K_>{n?+=|G5Qx17jwU7WW&P zBaLMRjvUxAMDW7_-R0$Uc8-mu8W72qLrW-8AW_kk%i{m|3<{@2!bCy}o$L=rYhSFP zLXHxLd-nx7k|Ih+3=3DaCb|=c` z*6HCjrzatMOaO@46|D9*q%MuguJ$(QH!i!K-U3il4T9{g3JYiG-w7N_t5*9Od>fz4 z8lKb+p(TA)vp@|I4S(BiYpR5MWwUu?7WO#G_td1{Hw?m1WJJtv%cf9slmDPKYoK*M zr8m_7ElcWP3YF-co@@@25$$&R#ZZ4#wyo&{)E^j8rWEw;p8zfi?EFp^vpDfV>@ed7{%mVQEgxMHIpeCMLYIZdXA{%?6`jQNA5s~ETb z?6~w9ELQ=upvIVYjals8l+yYUkcH!==(Z;D1*7T4Gz9*o)xi5tHt?2@=``QS9Ai+~Nf`KM&tx}UOw;LbNlV(N5MOvIx*06$ zRU4ZywIm2FyJz}24ynAm!tR`%LwT9(f6{^9NZXo{66BVi{u4-k5L@s#Tym7IniTo3 zTltGJZMW>y3$}Uh{_FVFk1GFxA*Cf?|G!c@emz5|ZeH*L9SD$W>m8!gJ%UpO5*g#e zrG=sHKqRhRV#BA@1cb)(|2lPX;%oRMz7Swx!J@^BU-5(lku2zJYl=^JSbF`ho5(Mf zb_i~#_|m!a0cih??-j41;LwoE>D_-aZlT%N& zebP~Hgf|Ba9)(`CQJ!zWV{_~NGb9thC??XI9nZE;&1AwkjZ%9Ew|EbjgGI%JvGQ*b z+yRnA)`M3sX`Z5KD-HSIkYjg%iu&nU4!RD5aU}xxOj4cO4X8U)G2O`*fQDAt;kivK&y ze%t%6t_RX1r6&af{Qt0#%R(MGN?kQOcnb%ojI#tiianE#K#2m{nYxrq%o!Gk_g`4a zW8?6OJO2-*7KMD+pbWb4PtNM4JNbMFAbz@Wac9ob261+2T)3jBU^UQsHa&qRP7DLG zG_I^zcEJ;8#`M%WRlbRa8rx4g0?lV;cL2asZ+ohTmG>MyjN@Nrr;VWRtodm~cNVr~ zMCS-fc2)I5kD3q%^V5lZqYqINdb>dJ4}N91h(t}ufFI~Y$gxCp@0v~JS@w3!l>b3c zlOkcz78V`ZKM)C{FH(!alI}r-MT%6h9M-{!mjb^5bhLco9v6$?*{=8SZrr+7dbnKi>;F>WR$~NzW*F>m!{}@Xhty z%S(FQdsi*9arsf*Z*b#NFE8#8sM5+C3{*Nhc2{PrDv()7`X!?Beoq^Kn8=nhVL42L zXo5UI47ZK;A)jC4E^jcI8M6o{hW9N^_V@1xKv6d&)+i*l3ko7x#A-2&o(>sCpIr@V z6Rb&%c7w330_^G{m;3NIF+9l9#Gr3HeHoXnqOAFTaa$8=&-_tW8J9xy5TSYFKuEzW zRvYj^J>WVXnNGCuF~0njI+JepC5>%25O5RY59CK++lSK9=ucj!eE#1&6cY*u=w(#> z-huwXG5!3@#~9n!TIiqR=pWvep&)0)2WZkqXi^3cWMk56)wuMDmW^mXk09S!hYDR` z<2^`J?oP#u>#yiXu_Sg{Lf6FFDh0w{Xaki0F0QI3KhL^jrr-l9Ksu7_^QyG-2IDr^ z5M1b}+HkYV0_Dm#-#3atC7C(eTYioXXY3RSj(KGPfn7PaU6olwEaV94|1a2Q<2yU> z|J5>bkik~-zjbV5+r14CC|Z49K(OH*Jq+hxt@(`>b9=o`kT0yZf(;T@^TRHBc~(^s z#krGo7R6aFd~&jMtARBAuWB(E0MF{+b(yde%E360AKzpgF5NZatUGCH^R*qujc*Ti zFnd#Hc{L{PdIEJafsX9kRsvmD#1s{z6Iw5HiwXz7;9g`E5G^WsMSy9*ag}E;!*M0E zaKm)t_%QjW{zBB?5pNUD8cUw67czNTPnfd@@QJaHtHyB7e&dWkc;#;c0G6VKCvvpO zWA-bb(GIeTfS4(LRX>y{Cvh+{UGCrk>FXfuH9F3E(3W7$PnT8EyeZ!om3If7>8`AM zE75Sd7H+AKA5b}ATe@_)VQ_c{uVFFcH>}8$t?8Wju6t%dWrWOw0X?#k?9*Z}aCpbB zAKM^=()bT)@CQ_*2B8^1bj>J-blPJY!og=8Rw?jjoNAM6UC1z$KOShJ@Lsp_NOu)N zQe;;<$TqDS!}VP(NHfMUkY9y2-wQVC4ctXplMK?tQB&ap6DJ=5PU(y$4p=IE@uNI}0x$e1V~cBSNI2BXJ5XN! zoBjXp;wNLPYX!&v)XRIe(z zI~mM=Nw3$vb27coCokoxa-pkoDX$;)R=9JrypDvNLV+SB*|)@C_?O)vf{Js`=kOXa zd<@bgbKd~IbM}-T7P$ZE3|psd0D^kRYYsGbB)|A5lG*r^qS7URshXsk9lG@a=iJOz z333*whYjLZGr$IsAHBw>XYN7x@=HyXiS~+3XGEu7@;Dl6A@zYv1g=Ep%H~X0{OX*~ z#_wiPajf(CU_rj=nP|erTUBx(L+lT#6KOyjgmD$Zt-k!&ja2TyUe9dR1maldxZz@Q zC5n1m{l4hz39dqf)dhP_J`0*E(~cg7!UdSvdP3r%aTjCWP}@-hV8fh1Lh-cXYZ+XlfeH9CNB=Nm=xu;vF@kiso~qx43XVg6q!rwA;24K*ji^?#-7vh{XTUKI+p17i%n%?I zg#TZYy{V+N-B$-^^=n!I0#A(?!S6yn8anP~ml82mn~)m;dz{&fHZoOb_oA&M`1j>h z@D^?3=>iJ8FbvY9xJ7YMYBId;t7b~svQWR ze^B96etZZhzM#8y^<|&4?F%wZM*i?s>%a&7gSS_0ZfF!=a9smH*~aYq+DwzlKO$89 z5JCR{g=^+!Z&ZeIP=*rWP0`2~gTFeYn^&tW(vfj4t!g$AQE(!>*sL0kXlEcl`+3b| zIAPWGjvz#2Mf2gSHXPE<&Vdi(o&qRaWAx2;L$*fc=?6onF~6JZB-k#Wbaf2ZBU5GK zJ%vFSFX`<*P9pN$sRM_M>Wl#S-wUXqG1V1RP#K4@f?LzaDE-2gk3^1T$EO+9-19R; zu6pLmc1&M0tMbPEPOmv(x;)Zn&|Q~Il@a!i^YaKV+{K&`a6HAFW%iDPw^-=Tg13M- z_WKFfJd)9!1#P`y)X!ga1p)Lg4AY&ULZSYr_O|@hTxdV^@!S(s5oO%yn|W*1{QX6P z^m&h8U(F~R4u&L{4JU8R?*a2a-Jas?$8l%+`TI`K-=0W&2EqJk`3WLzYuXD>>~H=) zvjZ_E?EJipfbG63qE68(rBBo?S(lrRZ$n1!4|Sy^#eP=m_iu_k`HWLi%UKxnk=MfQVo{C^wN5z>C1OJQGQBU5eb7}A@T^BJ( zGUGe|XFY!FNzG3*YQnthFI{fz);|EYt}@Qma73fFWYnJNqF7D39_R*Iw)wX_Gn>kk`kCI+>ub^HTAq$~fZEfuwA`Y6$`mUBVeEs+nH zcQV^Rf=AEC><(n{Z&M7%k<@ z6lJbP61|0_sPM^|DhgXIJ96urqJk8=G$mTm_q|UAa*7qvTWxez{~)*WSUo)zo!IQ< z^L@1nXs3?g#pM}*n<27w;`kL7P*SBba|2Z1Zjoo{3v}gcP>%Veq~Pu0ChuA8rr_)= z(J?dAjc2(evk<4I;eK|&2pg8hjZ>M>l06v;t}}w89`;Gu*-gbw#bNxgNB8BHj)jHp z)F4?fz^}(EY=>L8d*Nd%wrj+$5UOLHPc^dIRW1OUZ@!|YC4VB6y$?kmVGo@Z<{NiD6R(ro`ARK%_3?rjr!pfG z3zMKEWk_b5V}~8cDg^g)_f>wtA*G0Lw*`S0iZVK^xGoPwedw=}?{i~{R7qc`@aRaU zs+LajE?2&Pym{bziK5P#vW26^H|5DAzG}?O%7hWF5 zvHl>giYk*ZxOvkdbpH@^ARN-swKZ4v@4l}*~4_jOfCBgpd6uF>JU z_&d0}sh6#phamR;OA(ux=09I-e>Eg2y#%~Ks{^WemPZ(r+{8a35_~@8m0;#HllTmj z$gI-fM3ia<^dR1y9`M0LnF{Xx_7dRvz|T@a#P_p-f>+dH%>m-Uc4;LN!prq0!^Mfyev!y2iq`Fw7Gke+!1`9`x)a25x#tRu?DhQW+&vzAO8D=K?wq01` zRs2MF$VG#2tP7=G5#_(%goZn^xC#5)K?N16EE*Yp7^(p?`v*ZEup%&n5&nBh50Ab$ zr@2D)izBFZfBs42ql^sslD{71Pi*{7opb0B5&oO6IPGYLG7j-F+tI7>7F^315)(CQ zVIa#hYj07qUvWHM-+Y}&eNC$J-723Z=lZ4~6|2@O69i;t8@4R;6`$V@m+NNzp+v}5 zeuLTJCKF99)d%oefO8ryO~m7r;Cf`qAhQe!m_bv3LgyD>hsq6lg3K%lRlZTboE|2XO%bYG ztv2+9teVY~H0hCdq$$+gNOifz_@@@jK}i@1&M}{0lauoljy;aqwUFD1vvFFj38iAT zLMN&j(}&7xcfc668nti{<;tm4dB#Lq ziz<9`ouBH6)Xn1K^fTQi#ZU8Z3o-)}OQ00Ak*TZ6oKNKq$XRoKc;u`G5GQ2a3z&3g zp(it@0btC+;L?w=gA=>VN00|w$b()`28yh7E`a(jemTjSD-8GUQ_dOa;pd z+Bzp-j}8#ZzPWMR>N)Bt>9`!u0Xb63 zFIV^tD{&j*lR?zK|0-DWl&n#1QUBx}vkkQeX4l(zWaGluapJA1F&9it z-BT8~Zf-eWB?EbnqZzX9lXbd|Nb@%d0qYr?oTo~6a8G!hTK_Se!gSm3Pd+2gf-1-ugAS6I|dx0^V56`!!!L8)Ucd21@vr!ZkqFspf<8$%3?L;JfcRD$I?sn<;;U!zP=M4g>tj2%03vcb{5 z2hcShk7c=IrukrdY3CFg^uw4>;-xZZ&=sb^Ch=DUn{TI0EFR+YSr zI=!`*jb;9iP#6o}R|yvGUHt=THUTifs_8|d{~DBtjqz(Da}%-AqEM)$h7N<{MOA0R=C&IOPKC4aj=Wxp>7 z_`1r)6ryycSNzp12w}n{$L2_^he6sr9+&UyfeTr?p@>_Uw-61!;5ojI2w%KyYXFCb z&>B2hNMT|v89J_Oj*HEucG&%I3r37Ge~J-S9EH|(iCq;J!1+Wkv>l#lcByZvgsz!S zRO843V+fs<34374iw}SgGlNT#>S-eT8Wub~p)MqptIfuuv8RE-hG$N>Ad8a{%Mb|H z4lnIeC){9T@ufWfxOBr6qbfxP&x;V|O$qfvaS>|hX!yEAhcOZEMyk(cD#SZ89FoBv z2GSXC6zO81KJm&Beh9-Bwuz?)UuyiBs)t+fOal{O?qIXykpMemUrtT^dSHrc_~P+} z{_2Zcvz~dt36}FUyCHv)b2jdEmkBDER8Q&ljZEk(OU8|1{mS!eZ8#Y$nJFsdl};?c z@|D7V+q5`7T~%ml`Ej^j$0-P==Y5J?KXt142NZ0&~PS3zrAm3KiYkf=iV zTORzUb)3T00bU_g(c4BC57~R~5hr6Ae0yNAkl4ZD*9-JC;>s9v4Z0t=$%hHKzI@KF z*{Kb=>=0S`%N;K&azqp&3>*Hl}_<&`oM3&)JISknU~s}&<}?{OCkQzJ(;b`fsEzUmCJ`Gf+} z9Er-BH{1Eg``{e2PFgQ7HVTbmlqyDHJ#bwMDsE8FR^w10QlD^kiGY+3zaZQ~S)p>q zYk@=X;2w^z<9KVXBebB@W2#o0#ITe2hB22aSa?<$8#($Cyrf$s1MXib?0s&S#HTLC z6`&(Af8SHNy;>jd{)?ME-{MG>sZot^|JKgMlmHU&V@{;oe;@ zR-3{vZ%JU(HgV?VZ(tm|J!=Oz)-!A;)v%E-u$ImFru#o$Lmj^Do!HKaxMJ_QDGd<1 z839XsacGmI#p`sj*_WrwKr82-58zmW5+&a-jG^1Xdn4>usgJF+@i5E`Fw-xx38e@_N<&GA%qnwJ_9SkFA^n!YLy^?V*>kqwYAu$mmodV z$4E|%4xz+fCWaus!U8~|RdzmA1!*sl0<=plEI!wB4rL~($H9ikm)Y-s8Kz;fS_*)c z+E}zU74RjX_V@PhhDpyyd(7SVZ2AMGn|nWNJglgfk#&ykZbkdV;R)_VyI0xqJwE3j zQ{kRt^E2n_ua3opC!q-QKTL#Vy2a#&Ue?D`iaJu`lT_3lXaaK(%q#N_nWOs);2E+Q zQNv5DvItQZeqdd{y(8FT=%71KCOLXZJa`;lIDRMnbr*r3RGU_&TA&$Z;Re-RLK{Our0%C$Qo>p&7ZWbCI}B zf8bN=d`+k{xR?&v48uJgd%!mWhWgm~XZj8x$Bb@d5dpi+R@uD^WYsU&Ej3yJVMESE z*Y~S@0Y#lfiyoCuiDh7#bs@oV8V!;|(v@@KSD*2NTG%){ZZG?yGa1L-yNv8!T9;K} zY4`o?Nr~&lQ&;kfd+N0_YL$Bhg}Ba{RnIN<5f%QROWG*SzmVUz?5X;|8S4w+f3x&s z(6B=dTl}woYMc zHJYVw3=Knfcfa$4|F_n+)-c1Gd)7X?_kPZ~b8f9SIB-wqO>pPE=)i7E zYPQE@sj4UE{IYk^iG4$7yUSr!UFVmjOPgrzqntq@FE;m+wj~=^%1*+9XLO8?#$0|A zTvtIgta>GNEuLY|_9k3zl%0N$U8a}DAwXsGwB`9$*tM%?fo?GcrO-USa{oWXfnv9b zS8gJJQK6@F@kY0BVeZ)n#Z~vS0#DQ7!_4p7yF+AD*yq+pL007PRAk528!OA^-~@6t zwz<}f%V&u!97ItbHS3E5A}u<%r!{69g1R#4D$49sH7*r5bw-^;Z~_IkD3{(7j+b}E z%3i@^r8mzN++F20!!8nTdK7;i6uwV}y|H=^U}n)#0x7{U2KYb;I-Qs!;hh1dauq*R z7fj}Rk&!+u?6ga2Nv5g) zc!nDO-qHZ80M|JX%Dwx%t1`?p>F>sL!MC^r@-2(qsRXHExS=)R zXKz?N+S_lR$|I-zKhxoBDC|JVo`ovP`498I-8{s7trZ%hi(Z|MrchBt;BfcjwfQLi zg$Q2W2h78X&_Vt;C)=1|{z690A!LKWgDgR1(g&I!zyAF2b)2*>5?Oz%bsZb&RYJ^b zq*r&^Z=NZ_@CazPd>i}B}T=LC+=0tZ#!Xa(NFGM+jfNnA9_%aQ{~ z4GMxZHlN^5wBEjqD?f%0rrvcGG%Z#p#JDQu&Cv!`VF>TGe!N!15-f>`;ejqZxy2H! z#PLQdii*VAbSCodAQ&O7ujHvJz=6X|cxZI9(&nDQk1=S>Bo|U$1ZhNt@Ey-igHEua zW*jt4>rY28%Jyf_#D<7(#i&}zdBX(rk? znh)vT*rKr7dBnubQ172PVbLjW4zf5 zb-0t@^46m>R-?M;qhHBN#QX{1`do8vh=M0YP(C?5iGb7%sXKAduMBG*T!zJXaDu4p za5Km;nL;&rsJ6UOw!E1!sYpKIN#GKapPm&5f7?*+eHzZYh6LJtcz_@zqqLhN?a;6*dqZ|0lFZk@zoZzy@_+TEV+k z9U0CECgW0C)p<>PU9@37z;X>1YirJhNz{<@Zw!jx zYf7H4m6*UsupxjW)~MyAlWHwmypIZa2Y3dEzZWZc^HeQNriG4*d88bmgP6npOD?fcykYT#_wCTp=fV z8b1HQ_~rtv0UbdZZcg9HO4hqz5I!ne2P%sM5vdUy_`laKgyg!7^DNkq z0+ghQ%vpqD;A#T>qW)cyqAcE+6S{iOqVrXildmh5><5{14B1Oki7lOOBo!$^mB9R= z>^G=iv*Ke$vcCbUkga!HB4J~fwlPA{v@ZU}NCi0bsIt0$V}+t0tXtcKqr#p&#u=eP zEUX?m+oc{Ee)-v`))=}i((N~KIlCQR@IcRd(FL(%+d2Mp!$I+D5$!vj7xb1KU}=G} zD0^ZJFEwy+qN;PpJL6N%geJTdLrT!mMpl-g4uIA!frE=0(*D{TEqV=cRE)6!>vK6! z#~UmvoSa9(&ya^EGmE+@2|!BnBobVPNSlu@!jt|oxfDWIi^_Hmn|65ir@FxaLmwhy znAxGBPXa#7EDYGK{DtkKmh&cqUVX3f$GGvVQf(f6ZeB56u1sKba8rU`EATsH)TN-H zpmDn+H%~}cK#zOK#U#$ZGzHpVOF^imYL3K}PF?l{f4`X-UjT^{gbzrq*6sYNtod#r3n-6_(j4CWNI0 zr7^_KEVTL;QS5o8@Nl32k%Y}5abO8AzR)x5hcH;$>KT%D;#>8B>n^*(b%mdY&bi1y ziWh13w8WP3dfZ68xD*Lij|w6eiK?{>UX}h+HoF3KbTZbkT`HS>N$R(%){Vsa z$3eq3`%O4DF1773TKEh>1Zmk;t!}Z<9zMe!7?cgvZ<(*zj&tQK6)u;48&Iv@(oiV% z51I8jxv?{i`8?Dpa~#yy^c4)@4C?a%N(6)wzj`%2dGFSnVKx0PuOr~NeB{&Mw`=BhyUbDx+Bl*Gh8qD^Z zL{&MCt*+UB9oG$v-mL^iuHG0J!M~lodF1JQ`L1&nH&)j-w&5nu7`mEBkIHVh z!rmhLK+HNKuNRWpn?jMOAGveHuy7wGU=VF;KZYnioK2mVf6P^p)9+<%Ss zSENHV@MR`NI_7z@Ci9Tt|C$lDMs$!|P;^RgXe zz>Pwx;INE2nNn%o|s*`zrNPw=0wGl1)0J* zyg_?858>te)b^fC{u}dJQxV4Tg1x#!Oz7{0Xwvj3TlObM{r{-qknNwm2SG2t2Rg+( zsPv-pMmRwr)dr;=794K>K zYKWQn!Tee3A!k7xE+4=hp}nD{swg79%n?9}tWtzQr1?kFs?RUJUmjs2t8%e;083Aw z!vV0^!)g}Kn=ch8K9_U(0wHfkd3Nnea@Lg#+`&R zKJol5o8%bc3n7Ct+b)9_`OWFnBWTLvJs@(w))1ON+{`OyN#18~mtT=vqkvLE!2E#! zRti>j9W{5hH75bM29vZeXiFRWr5yg0GJg^(NIMw3CUMG$m0eB!5kZ#Upv1 zxnwHyS65~JNlI`CCI07Wsng#$OJGUoui33GJwMGWX-mg{e0(}#`Jr=2OJS3hv^K~& z7OeB8{zy(%=CReVQuXOrmyZYbq6W?0oz)4S*M%BG*DL8!#m-m6+MQJQ{U5mLsG#dma60NZ9{yhmN$|Id)>Z?1*)F(2{+*5_nDDQMGQYbR zNh7uKfp`Ah8%Z6yuZW*z{cHX4ilh%cuw4q|lyxN{xq_2T-2;;G16pHg0%*xmi}u)jCVTNY&rju%8*fYSl>G(g{13r1*UZc0$f5T~i z@9|658$Ij94AMxfG;(8I490Oc-ZK_H<4z}WT}U! z==<(-=w9ZE{)+Z2II)swo_O4Y2iecXjYpCRFAc_Ye1B&epfaGSksbr4zWQa1H2nK@ z_NprIUsw6}li^pj%dbI+muu8or{3*Po3u3Xg-SmW-Q7B*Rrpa&u*HF^E-bnw!ikTG zI5Ho6gDAB6;w|1Pmp7aL!KwT!V|HW$IrMUQ{NCJQ!d4;Wufr^@@JgCMmaMCFwDJ%5 zMRVjQ?#0y|$KN@6j@dK3m0?F*2W<=DfKX{MZkjU7HXW*wL6floxUs7fs`c0gybBu$ zF_>eH?pI@pMw;d5_WFR;)7$Dvs2Y8r_v|mKI`OYaLR)4gh^iwknOpq9;fsGBAEd%= zeuT7Tj40`S2O}OfYK-K3_amg@u_XUiJ0qQEOnG#~xR^>tGf zk0Zw}yy>LbI5SZ!27EHYJ})QynEiD}_UBqb%5R5X1W_%GZ_|34Dqg<6`Pr0{SQ33< zvQ5w}K`su&gR5c}PSwR8dla#vv5t-AZ8cp1N@Oz3t&HQ`K4Jh^R=!NdI2DaU4r=}Z zMm!QsX5$erEERDEeY~)(IO2<%UpH*_rCr)409Jjvm3Bbc;jI=o{j zcLABjyMw!myBnCB3tY%edX+4ax1xH}ULdL?hVOUq2~=_(72{FdKtoZbRcX#?W$`Mr z%ek;C;BC}Z%W*y+%RMw8PLH}P(l>J{{E&zpUKgh^`o8PHxcdRny1&b#J0iT4-S{R? z*iFarTa~+@x1i@%?9GE$=eOBy;qZSmO`-%`%IH@bv!n@t<*e)Q!KgpdrNX zL$b&oC_l{)`uMz5^@kzkj?RI_~(P}@;`U)6U>bpI%ikE$k={+R>yx{SBmg3PlSh! z)(%!bHmtmxPPYc5uLdG5uYe;0umbME2PtxCZ^p0ua4sfYZol`m-AD|Pf(*Ei(|5#k zh8;B|y(TL1^0>(AU8S*U%kds<5!cF9cvJLtTAtg_+^HKWo0MXh;Sm8!lVmI3eta2a z{v(Gos!HDMtQs@JM@B}Afy#o79<|o^J;=U$t=9NITm^ver|x%S*IbiUU%#%w?mXPM z=viFert3zEDxpVxo!;lrm-P_uAJ2rE?{r_+1768Bi##zq;^8 zX6CU~+r3NSscGUF`4}!@G;>Vqg^0mK9y-)oXLxPZV_6Y$Pbs(EGZ^AAET0C3>jEVQ z(FoGeh7o}D*Kld8>HV=(6NdfnM1S3eYjkZ>&fG=zK5I8pnJ679G`-({SNg#*QgsU= z*`J(d&wbRumJ;?7+T9_nOB3}F_L2ilPst!$uDLNy^ikc-dNZ17;p{uw#N^NXKx=9( zL&Pq_PIq_V_2%M$*gpi$#3!RBl`yB4$)|eoA}&sF7Qw=^CvBSilUTS?FFA5Cj&o1y z;*eWH5f&GVz7|b-uy)Mg`0#OHzoPwR^b>s~!^JiwjasC_7FqmuG>3BDB=Wx3i?`Ao zRf4m~OdQ;@?SitGamX>)bg0ykaBAE~T>#Rx=Tpn5Y)!K*cv3P)X*>DMt`)SG#vDJu zRfyhN!b;{C7WM1F0@CW1HdXto6rBQzr_SeJ-r1$@zgr5g*&rca;Cvr`QN@t}Hu(IK z6l%%ZS@`vVKN9kg&&~@8jsij(uPI*SdOJrzzBvCl8dhc?H9tf{q;tk2fGF`1UK2D$ zJ|XtEeKxQti7&tqUI}3u>Bw#E%TM=FC`_p2_&QEF(441sBt~ZUPKd*U10{%^08^LU zM(3&ZA=T>)`f%o#&L;HxIsQt5QCSuPF7U#x34eEGw{kj$6kmYUHl5`XwEIq4(^&L1%H^xk~ z6vVCl*Ln!Er-n4v>`JrDziy9;+7{x5l-aZ)JWSRwni3p#}IFz!W&Fz&&f zmJt2+f}0%ZCcXQ%8FBv#VtFTt>9(0Mi4Yjq5N*2B%gZ}IA_%)Kto`K7k@4bO4m9K; z!RX!rwF_qSJ~j7cy0 z2_eT9Su=e7I?Z_=Ro@;z<++EZJ>vWkXI^UyCq9mDQ~|7V%Jahh=`p)`TKKN$F|RkB z1Q|p35h%>}I25oDeDFsas=HjA071t3#B7}5^>L>pvby~nL;%JTwsq@dRzSX;nV@R0I9EqjYJ zY8cMaKTgK`sZS8RIoEm6?_<4hvmWH`>rJer8;y~1{sUgYZu6kWs!9k+Ti>i`DXWi~ zO2hcIsZSXr_N|uzi0Vb)G#$M}FuaW_CNJeN;|Vk_Ep3Jjv;o6xlZabtt8%}Q3#D9U zUnn5b4Fa6u&-FZ=d&C0PxKg~yc7JMd3GAejCW){K>;mQXF_&~D8_(^q3I2{RzWx}x z`!Q+qsi3^|`l#V=)j>z>2N-@7i%440 zg6s{C>_p!$8@Ap0EGW7sT~vMJJjB8y$Uty$tHbTLK}<2M_&AEAF&K;3YEiV7=x&4* zOaGl74$wW(rjPKCJ85qC`JdT+jt5`DyyO+SWp^J5D_wX`1)N-Zb*@vryhhv^aw*g8 zHz@uddM7}w&MasHnGAp92TakF)u z)y(DN{a7EdE}uIoZul_`V#tlvaAl#O*fs4{vE{6pE;rmM!We3H#|kM_ewfWae?anP6(?R$j6BxI zbk^(>H@p(DOgXhC#`7>$TNLwvyIL0LMaJ^WYl;=IPC1bG#~AQMYM0NG$4nEZ{Erlv zkXLZ@E`2%$tkdl|RUrKMIfCJW*>$=HA}`0A1}XP<>aG!4v}Vn++H|A%P08uG8KGtW zkY=!!HX@RQ5Rn91Eh%~bkR!%Q#-_~|&P&p-KUj)tR1{cbxrAul?<+cuR}J+j*dVfd zewHy(mUEQSW1kSqj;}(Fu6;iWoC~F*`sXifOT1lHFN&1fM=nr^x}=QJsVj(-ViBk= zKs3sxama5|oZgZ@s=L1(|CSM0Y;E`Jg$j&~^&JR|MMYJC#YUpI{p92jt09^ciQq>m zdbef6?>f}`DeG1G9r&9q`D@2M;Qt5aoR3!E-S;OQ>Ndc#W8m+ae~}Q+4}T*e(+O_# z1&FY*VnoExS>y5aqsDgI?ZeuZ6SgddNPmY4E%S0Zgis4%F3DR|8I>uhLO!qBV#qVD zd(H~pczT~;kB8}J)ysnXb`gsPHRKpIk82;pB`V~);95&>yU}gAlq`;H2-t^k-v+4n zupmHH8L_NxIG#yh8Ly1$u)6C_h@YQPZ3soYdC7u2;nv*}cn5a;stu1CI7-1C*K4g| z(`o#(xr>ohct4TYQ*=F%nEC{3d!5J&gJgU@VEFPQS>EMg3W<+~T zdPW;Urj001ocR8VfZd6gq|t;fv&$l7-)Q`5h>-#64deVjHfwMXb=Nh1=Xk8Nj_pEq zTe9aIS2WBbGN)JCs!G4ee8aIZ%z7+cUVrSr82b@#sW)lD>>iOZtri;UoBE+2kyG^i z5y|D^_;Sns!TMj`YOH_0+*ZA>_>8qLhR37oydWeUKp1#& zpFaQHLyive=8$|rEKq`JNLx|vIi?7#{v{bZ@AD;*c zV(BEm{3?geb*c|vF#+H!t2B%psEMWcf8zs^*2cRn(?F}Xzgs^K@YV_)@z#D*478#{ z9ffOkLwReX6a$MM6})}7XaO%CS1TG#bJe3dyp?wm5+|vXMD$(ch*rNb?2nVsW9e$4 z({2)+98kEwZ<(T-Z4o#*4)k7Q@sJu|;41cc8xo*qm> zaQkkAFXY6x(ndOTThE3?mZY?8K~5>y`uqj+y4@+}3+&90^w9fWuARP>KjC`?ORmH6 zlsYCs>7_^^AgcUMHD%Cj{CgboSVkN;v)M04EaM?0G^mF)Np_UjDzUe3A(_ozbMBl8 z^EsCC5q(}}^IL8|A;3mj_w7Ua>zXhf%WdT;LU$=XZwa{Kj=DNxR?_cK)~6wr@X0ks zIyDpA>V4F(8NJXTy099~mc~ASe)<`pI353-+59c1S(@AL>KMVqgyWd{W2(2J7vew@ z{`|k8E)=Jyh>=k_ci9MnxQLPZOZkw;wLiVMjYf(c9kzU@* zH>MvC&b%X&@u7Y2hr{Hz>!$|90*ue^$%5wLn1D?wN|wOuH`;Wlm`zNi5*ut$L*$Qr zhxR79DVs#?_53}W*5oMr_Co5BdP3#<8dkG;$ao_78|dc)oCj#byFp(tkj zC5S+QFg=1E2dTu@mib?{kFB=Y#o)`TaN4Q{?4XPAk6WP#I4u?jfT{oLJFB=oN=$Wc z_H>DZy`aqbcBCC}9x0DQY!59(jiDL}QOj2yFZ`V6N1j^o`mDcGCRq?!XcqxFDZ+8flKi0_Gbqa%fuh8QC? z7)R-%JlG(XbtdVVNJBu%{jzJG&~7nlU0Ok7S~VT&ZZR9Fx!H^P0o8{YvOn_GIHf^K zL-SxbO(ffL*Vn{GKBw;C+j1bSSqbi;r4XR;-|1sugxp7^E4X>qD6ga|tnXU0BIqDi zXoORaT=O2wojUe`@sXYpORUW62>DBl@na&5XpQTnS3ikOqWGW7X+y>#Ja?gCPfzeV{mHfJw2+} za=iWa2NFu)GZ1xw_ymaYR{K4j|jbo3f!F8FlOOd@}bOa(oz~>9^r{|X<4+1S^n_p41 zc_b|#|BFT3r|W}w3j2kK4x+WCJO?~T9zBZqUB>X@O%{s}`hXQvvvfXa7CKZh{cfN14-ZLShtww{Z9(hs-CYSG)qM%! z!Z<>3NG$lG53u?t@CdbQ`LD$E*DpjwD+VVVG9U;(yaN%0$m<3t9y1;wAic1jLXlw? zwR5a6yN*c1VhhX&h{3;itng@Qo8fbhkmciD1e>is&HrJGG{ijnOJakM3&DHeng`v4 z#RemGj^}3Az5XM>f*>HacRcq%p_@zY%*J zh#Gp)71m^MJJNKY}ye@>e?%?e!RxxN*J7|TNpap@`JYJl8;67ewFBDteAHIYMi?xtU zt)I@WBkE^{ejNA$xZytc5PcYQSaITERHn%5UFz(2@S)7^Ie%D+!S@SG^Y67-I=%|{ z5S%x6mLYadW%|#-w#b2YAz)kot%YZQ)g&8Vm;}y1;leb5GnrRz=!falH8NB1C!DoB z#`YMh_s!H|_p`c4(ZMF!h0QjeatV4&vB2Y zJeenN;#w^CuRp-^sBVHt+hA`2)Y3&Hg(+8ciR=!b#S zzCWY^?6c@Ll1UuUc`$e{csYelO*6b_*YY>_x^!CK0s_KmJ+6^FvJVp_#B zuf)+E01bSZY%3*NDRs+lMoP5Kb<*fr*lolnfn+2np% zYa=-pR?%8-P^Q;qpqnqIfPacU3{7ht*J{ry0;-+!OOyj(?!mBMFzgbG02nx*Q0q8e zs{Y%sGBdGZD9kdwlD^rX`Vru@pc2vAC`cv&r6={9F*Yh zoR#2tZ_H3!bp7EuDBmxFGB)4(EAo+D$d96CScUm>R9*RtYJG&Wl<2~(N}S;2CF*cM z*hU_XVPkF3!Y_7E>1qP^b9I6f@A^X_(~VHO=?bXiZXI-gx&ulzT?3`rt%MrxHb9^5 zBGFD8O5dI)4KDbh-$areuXDBoLOi!kNvl+C*7ul1+f@AlcipT5z>DznLF2HyDb{ZN z0m}>G%IEiLYNPj0iq;nfMs707uYfx$P1Jism=a!@vuH5i$aYzWrxWb0U2pQ%oTgI~ zRqs$}g}l#es{;M@iqp*<<6CK%bVm2|meVBD)fd;o=H%*8eWTq|fhmhCcGvnlK4B^G zu7QZGVxx#wp?`E0>|BhMwp_o<(z$juAxV41Zhc5FM$^~Zj#FGik_4 zyNq*C7%SVL2K+*tKO%8;pdIMafu*CMq znAv{`6+f-fz5GNwDUBf&n%0b7Uwt}FE2VY}+l`}1PA4g7!~6M!%48z%cDR;b@(R_?`l6=C zx>YUZcO{>x_*tU|m$p@u2}jaInadiuX5Krd$y}_PKWVT$vG31R@0x4P@J(vdmpzjd z*5D>nuCw}h=zN)FC7YVeS;Ba5la-6vzNXZqs}B_>mO%M=3C1Mi={z;Po>99s zdZtub`(@F^gOi;wnlm7*q)gE!#m98wOU4YTb@W`ak445nb45eB-Oliia6{5=b!WNH z*{XGm5AF3-bM%WcDwCGU!7}~b_#J_3de@=(9^XIWhM_xllNo2eu9ITMF_S`|NClpg z$q;FI>x8FYZS2Y>D{*PhMA{>o`pS$TywAQs_@5c=^TvHyC*uRYB$9WRZ%6)^?3cFO zVb3w$Nt7n>CB)c<4Ssqbw1l1lhzZsX~Bu7m3=M0(JDZi6tx z`XtKE_9V>C=p=IA_#|As^EKn$mmJ{cxsk*TVF&agB~tS6oHTHGoqWB6gDa#1!aWea zV4#D4U+tiL<0h?l6D{p~^E8K=21XJ)1SR=7)I$1+B<+Z>49c*C@5!wWJ zB!B4dZ2M$KfXJEe&mx86Mj{*Hv`E|-tGP@WTsZd>m^t?p$xQk_lG%u)@{YUHZJHW= z90}~0{q;LS=DQksG`$Vi8hw+UNP1Q0E5&KEKEMv{b@C#sS&QNVE?~mFxr3);nv8>tW6XUgD+>{WDqkW7KdD4;sBlM! zGTB6Od;)~X^>a@Inm^VJT`;VYEjRqw?3n*S9_hp6Mt1#)hzvu8h`i-DE8m^0N9*e! zNA-thJ=YzJKkOoC3-StnbtK=7xqni$G3fYJ!;M;?tB@en#jAoN&*Ktck*jAiUGOKl zyr8nrz_N}sv3^Qk)~8qg{hVoDp06oPe$Eb7xG4ZwO%xl#3Z^EDwJRevA*KR6C2Izi zzWr}1CHt{V+mqFQZt~gjk&k;rt#zDYr+%%eR9f`Am{umI^sn)`rTpYOPhzvYGp{MW zO!=u>R613t=2K}?;(Yu=Yig~a`XkTG_?ATt#HHCotE9J|$5Meuc%r^zM`fG6(yBzJ z-?kc1OPaH?;T%(Nc zSMJixC%1iL9R)f5t*JI)_px}UEmcQgrm=DF{TiW*aEdzYg~7+76f?cgZjBx;b5?y; zTk}SG+HR#Dx^wT=PU?&Lwzr$D=atT19Cy?U_or;_aoLqNEHvh(Th6Nu@|umwaoa%v z^@+wxJ>ug%&$<5V?KB%PCA+dqgQmr`V$bEi&@Ellfl{~1OZ%poewi&% z$Fe!0X2M%^m-smHs<5ukcW72cyx+UXm&eKKR&8zObS7ngtYyd>a`$fyAr@ zz$eRj&Yy3%XEiiAyO0@q=@e+Y<_`+&*C&hM1Z+5mZ%SI7j|~F7`WDDVZ108*f<5wE zrH=I&HT~4ugzmakmW3rjE6%`*{Th3dM6H^%UMm%9SQ81Y~qG$apB5n_=ga% za&pC_7YL4ywY9HF?)GXWgOOkQ#t1NT1)pk#W)Y49f z)aFh`OFTDki>pp>imx_vib0zuYV9X1B_}5{#nPK@nvtVa<;lM|s*>}>?f4WI%uRl^ zSeWGPmuclu)l`r(!MY>8)l#G-i)?bHVN8+S#h=Kl%cuFaEUWFDYh1K|92(eW}YM=_+(;xCu1%B~P7rZl~t~I3?G~>@}2@^<&9% zC+ORYc@XVrUY~{J(GzkjTb@zRV$I^yx0UYO-KMz3zmuyghQoHjrmSopeD%k-OT*$e>G0d>rw-s6HXk7hYmV@N-O2yE5*)30 zV$5IW+im^jHhF6Limfuoh4YwVJG$?*wIK zf8T^n!ll2Bv9DFi&rqA9V4E4Xt?6<$t?5>x-JM#Zxt$B5z?~qXOV=;qy}Q4N)Mxm# z`pUj*_f-I&v{=imYBX#oEX!e~b4!E`w&DA`RYc-bky<-{$p5_lB4A-Lsh|z3N~yNC z6|kF{8L*xj9Iz0C+KzJ%iWRK7H@Ng}o^`YBm(Nsr&)Uv72K#*ICEop{ZCgH5J!|vF z?lRs-ORd;PTCH(TkfnPs?(@Q4@_5@`f=l6?Xwi4TM@>z!K?Wvqy;F>{o31&!Gp{)@ zd0Uw`gIcjyg<;xXgJB|Sfj6LKiPx=Vl#y~;AwZx(TAA=`o@+ z=}EePtzwU!wc^0MsebZpx{t}(M=z~2;Q zoy!p?jM*+EIMs;Knw9x@4cK2trGB{{NPT~%D>%B-;AC56wl-_A@V#=jnPXk^IxBVj zY$sKHC)BBCDtg7+c(D7jCq1Qd!k2g5?YdkIC=`W!Hfm`6%;P0lB=2Qd^l9f^N&Tea zpDi;ETfQ;95zE?J`J&;o5jB&u3bpfT7A;W&i0x@iQ{Fhi*>Oq2jFooDAAR%FCD2q*`U-7kO@}9N_lehr>rSI{6w z^kGi_D01vO{fLTUV!rHct#SNVCB0Q{I)_7oXZc_Kt<^Y#0(H3>+1o1P-(%bK9x8ST z&*hqQ9aXmG;+#}k*b&>P8jb`pI*u45e^vxJeY?F30{V;%vccH$af^Q4+?9Sz+(5Wr z0e1)zwGm1t_ZkwzG8&wF9*Kqk6vLf@{J~UMqIUZ;%O|`8ZeqVp?nFOQ?k1@G z&wYPQ?r6U$Zit^C_r8B!1%aPO1wN;~D^{73+7k`dA|%;fOJq4?Tx3#BatSpUdd&Az z(27Z*e{KbrU%(EH#QPc~rFb@!F~C?6d8^{oFT@%nlW7LeyxSMgymubM**F80WyRhg zo&vo%)(9E3PS7uF_8C;xR?vX;4+>{251RZcD>9EDBUFd|i3Up|(qs=kva91Yl2@IS zU!V>X{FNKXKCTEObydsX#j(jReAWv3d5;awbj|{&7sonC=tQQvwD5!60NzkVUo1EW z1dP^Yg-pJx>rd^0N3AoD^ECz!{pISi->b_si7IapJ}rRxHC`NK9Vd=%oj`@Qw9&2^C&9&ycd-=wy8-n4;Fjxb7ek4!)v zf|Vr-+UPRn4QcG(ERw^k0(kAECDC6Om0{JKgtke+D_$ZwGqp(o881O6EWYUASL|pY z!bB9QZBJSd%|8Ab0^B&r^>GL$9vCsgsn0tzHP0acu(1ZDo!CCdH}6sYnCNw|5gyM4rn zo_(>((^mz~L=?Y)F_b9vdhCx%p5TwFSA?m*SkXVKt+g`s=m&m^|18P0I!>KwjU3Q3 zK>ce6udU}jb#^LtcFz=bo(_1a=QDM|ET&4&E_KN)Mnz9cz)giR{KUklm9$sMeyxHO zUToqB-!Yknr<$0;XHD4QjVAu^8xse3fXODj&Eyh3(c1$+-}MgoFR)r6x9Ga!>NM^! zylUE!vG1c7J*e9RUkgtjcK!Kmv{b>rZ4f3}>aLSL9fz{`br1L`pV+*?t zeprG?O0b7Y4$K#)S=1w{SQCJsZ}fOn$=IypX^!OO#q&1sr)b zZREUy&47k+d8nwR7+j1G;FM#-?^6p$#mnDCb{dQFtFt6DNY{Gdu2e!G@{1q5Ruqkl zGuG)ZGtL;$ImT7?_Lk+K_DaB@p#G&sUh^|n^$85cd~JWmaotwzQ-d-UQIJSUGpV=qwEYm1t71z;zK}L~)lHpB%#16`v5Ftex+BCPA!*AU&-Pjb|x>?|# z5RE6A5T#ISH4@1h77CgMLf@F%ZyH^O|2}p(yrW#H%BFDCQ^qUNc0hO3bU@W=S>jr$ zU&39fQF-R5ANGclg~`0VM>A&qgGHBBuFy)Q3h|My1fDs+J%_nbX3MIYnF1!ih@9N9*aErGMnIhJbPHCQP3`dOilD7H|OC$qCDA5NOCD0!h48_s8lTF^iV%->Qi zMWVVWEvtS!UFmj9BHz&ExwD}Q{9BB=>nAaVz_K8 z_`-ru_pzFW zqy6T$>_X=^e@nG&tV^|QWdK3*+Y@ciuH4|mSLcg|SJ7~+s}?B1gnTe#$Jqw?EnQ8@N&=cCvWVc#=3)1 zlP2&@V)c?5w;zGt9jFBIlm$rA7Ml;DvXFwIJ)l2}CZIt>!gj8*!o}wr{rG|7xE>m# zN`x@}F+UgF>c#O8)3Wp|oMJl?ObAy*ATIbE8WJL7K--QzIa&6EpUXN_0T;u7r@f)9 zZjpAf?EtqCW-bC)TfBwBq+ePa@e?BrXKJ1XIk9oY7n<=7O)#W)z`+EAK~ zQv0NG4hmZeY#9=}fSibMILWe+eX0W!g`GF$yyYwwBMGn&^oO*?k3gZL?LEV*#<{ma zZb__u-xXFCpA)#e9{-C!Z}A1R&+QN}D(?-SV;DZr`;O+G(ftwe)JoI=&VtZNd3LA= zLn1to0ri09yO(`)x9~;T=JQ(Uk6;`HVyKLKJpAP+-P*}9Y%$AvN-@(dyu>8w)=q^# zt+{!d_CGBEejQsaa0aI+ZU%1?S_b!S0Ed^AsBvC{PWq9qSg?EpAnyT3VrystT! zyq_12W7=`>j)$?fyN{~bxCYCXe+KntO0wFyV)Q-E?NE*s(IDY|-=Ky* z-{6LR#&*#)u=hW2(5zWA{+>W$Fh+mLqM?)Ug_jc`a}iQUbra~p>OJZ$;N2@i)oi1O zyuj6hw7|C?u>Vs(ct2$!lq#tuh)OFWm`YPVh)NrNKoGup@CnD_;%D%)o7p!6zJ^&C zEftu4`r2r%EgC^>En0tD_t{)uJ|mjydKHdhT=kBLyJHE=4a=sCt*VWT_){AyU+(@@ zzS=z$kS$3IK(f+A(-Fq-hp|h-tG6&K)bJ!Hv}h-_Fwpe3gYm7}@f~emzJVx6B~@!; zHk@&`L2P9HR;P9KRf~2NR|~{WS?N%q&Ajnk4m80yb75>A9C!BjwzZ>Y8;lti_@+ zYU)2iOD0I(f1j|GUSfHyWvu2$rkOw|t9~0AHi2I;xyxc?;X++r;TfcQi zM&mlkgYUIxM}W3x5}N&;YSr2%_*-Q)Af@w7mq24rx?{l;ZPh0A6Bn z$o-n27;J5-pH;dM?`L{xXR6725VVmPx+kfAR=P;x&cbLztlMMSt3Bj1ZNwe>tMQ+f zi$zk@GzET|#ici?#*1~FbL+tnc_3ubP4m#TGFH{KLjG$iljH0ls*v$kXv+6f*~0y{ zSjz^6oGx2|H&)=tlp0ov-2>qmS)hSEXQqVIqP!ufYPLywcAuH%;QYy`AqO4!fRr}% z{G~kjmON)}5qYQFO~Uh_DTehtR=&kYl-nTv1NLklef#-VY|%MR58gRxZ1VX+58Jg> zkIi*=59PIfYy+-7?FFSNjS__^y%Obm3^ip{tQoFV>=v$V4^{~N`d2B$6QI{n;3Qs( z{bV+i_-ZB-(_`%j>11$)U$}RLN_cjKQMk*2Sa^~^nvqh*IVD?I_=gHs>TWG!f@75g zf}94iGqx0Mw=}V9zXUrsOam@->JHj-N+jG0&|uG#t`sj@8&g_0&ImdaXr zxNiq{$XOs~$hx~{RBHC9$}(FP`EjRH`4yFj_5E5{Y7YDoV3E1Z!ok7(q)Lv$Ly9m< zL5Rfnl#8s{L81JpQv&C&PRxaS^8w_77n#9>Zp!pq>B?&^Ybx8A_AX& z4dHjq8WP=xL7eY8H3Z+^kp{dgor{|NHWxBm!YXkvNhxzMmHM1=QdgRC3Ys~%SCYLq zxge!GDJG?>`(%6}NTx{_dA!?1e0Ps71XgFBdB=`w?iWs3KhpUK$N5+$K!1jh&xnTOCiFqJz6!`3VF!<}u`igX^x>H|_BlE4!5qxnJSi5ceMypP^+;a7D-E{Q zFAX`=w2Ndab(2z^l*=gCGagCZiyzV5;~A-f%8iKau?{!wSq=N_B@f^3rDuHEOV6y^ z)6eoK$sP_UQ5}&gd6onbek``n5>8Ufk`+`UyiK4%RMj)_NDSEB4Wn|xkyg;j9)2?= zS~br{UF^&zt<;bvJ5;MDIaH6EtybbTVmU>+EmXs09{D(QvVK5fs9`{6Z~py=r+`b< zj{)?iWz!%%XD8X@dC?Km8s4f28;;qXYU%?=kqFm@glsWe7xPl>$DW-wWCu>yR0nQe z5xBKYGH46T+3mpL6IiN9h@MM&ke-{q|Dyer45W51+iihu#OsiK+vg&38|lLQEYph{ z)+2`Fv!50&?!fUpy?!cVXg+y(>o9d2>*D!Y!ZpXX6&}VJX*Ab%DHS?w(O8&ig*H6$ zM7dqoYunIR^jmp3m2F~<95VkPJ;`H8Y{cuMo(?8YicWyZ>#c#RsAX9J)oZflW8?tQ zG{f3%g@|dIu-M0(5wn~`*#bQV{iv@a77U^s9;a~n1_&@&qqle9I819ib~PU3-|x<~ zd(vuZEf_X1KO8!+I2<)FGaNFoU{9G05u(!G7Q)cp7kU_fzFx+dhQ;+r$>i0f6AIIo z#fP6>v&IU5*a9bt66n8N=N4Yy%Ar>C4hO=n`oRmXm)0m|r z(=R!&wKt#-bN9aEYae_k9y=XvJ!^_62=!276^0|X+w(2D}jL$1Y{w6STW36UI&FWGC*H!`SzT?Pl zM<3NP(Iw~o3_B{CBt=lG*4-N_103Jz zas^+I(ZF4H83}-H1x@$=e#P-)_Li><7ckzhXrY|kf%v;zp&2gRm1{-=ER%aJXbr0X z{@y7^C+v2}IN)wzItCEn-v>qL;*bUC;*o_cU?zqx;AWJGAUKsbAiSJzdZ4@S>-P{i zr)fpktCGv)I@r8F zS}>hk^H4lj#*pZbzxW?terqN6b~O+d7bqi7r`8Myh~U@#@w7h&E=Ai{B*>ZqqW&uP zb7O~@jIdfA{HQ*(*WF;$7i%A%zpQ-|!&E|%6Hd=L2mXw^VA zSz!&pJXU+2P;0Bq*DRd>XbNk$9U5@BjQU*3p*oI{NQ8Xy^KEp)cx@xMI*HvhInWxp7_TGRE_1sA4r$M%ZBp; zm*j_}HxDlG?lADsABEUq`yaL9699OaU&7Ero^?q{zC9Yo_YoECpom5<@1~cUKiZCA z5anlh6pc3%W{2~$i%9b0kqxccQAdod=+hjuB`R(|2zp&4bBJiSs$}=Fh*aKkgCv(I z+o$e}z{1sQNxq|R$~K}RX<$ge3UiJeq+9^(8zGc=Sv6QDVp0_RF5EdIj=2uCBYEuc+BwS=KHkyLI;?`Jt)as!E!4KC43>n=OG;tQmC;e-J7Fy@psn#eB?T-3Zh>i#C zDIl2XA#NcYZC-5&M~g=fFB1TJtVYm00yVl@H(LAc@ygNd<;2mmn~)=l8&mhEzN|N* zz9NliEkwRVEsyUITS&P`TBs3L@#r*f3_HAUR02is1SLrULPI}LWZ4fO!oE9QCUBL5 zj(>%NKJG|^py7CmVB#`4^xch*v=}YH$m@uYm;Pjw$0=k)LcwH@!|;K)*ve3c*ouxz zc{U@-oTpq|qyCA+J1<^EVKe7SGvTY!!`DOW5k(9YRrHIUKqj7%rHR!*=RG0!msw;C zed3pqW$+=o4V~7KiB|R}zP^kF;aJwI&>fY*j)?pRMy79hxma1k5-Ag&_lF6;>W?g> z*_26T+?3-Zz{>Ir3sR{8LS6#-y)8u5E5pj>4q6cjU1sYXxXA(ChDMwW^ zeU@n;WEnx|IN3Ir z;xxqPiR6rkrHwFpi?NnC5%?kk#gKeWI!0=JLf@U`{0Y4Wr z`dp%AoA@Tv3Yk-gCbd(#eWZs>ZD$nIyzy7`Xw47P_^gC!3OD<>G~I6rh#e;q1eV3sq!=LrE_c@8C-2o=v{3-GLG^eFu2BELdL`^<-{d{*zs^WXiO6h+y3np9)ZJg6Lq0_2RAV7pas* zI;E7EEUARZwQdC zb`g-Sab`WWMRjkhFWc)W1<$^@!kE!s;8)|H#I1}mViU*2ESBlK0<)mwzHJkwi}JWZB>B4 zZ7n{`>v*Q)_R?texi{M}XLGDO@sf;aREw-=7$A8=cAw;4?LvI)y~nV+F=-c;Ud>Ls zXp=ziJ5%`jrhX#Ay=5Zk(=@q!)GWDN)M9-IMJ1F|$aN2R`o__UN62=MM#y*1$FXfv zV7(*IVLb;qF(u{bp%CMWm80bc@}~(IuMsi27!nPXBr(Jp;_xN2Fv=M|$H)_6Y%nA! zKR?09dqJD|g_tO~r<9N?Zj5j-cC6+#t(i4Z&zCup*vjgHn97=+c=$(PaZWWJv8UBC zai=v0G^Eyj028S#D}BqNx*YrLq>OLn0qWI3b@%$Jjh*~Xhr@cDbl|5KDX)8(*l9Kh z!Eq;H@7719Ro`%pe17{k3{N9@U-!}u#6`tzzEI1N zd4pBQzr$ql#W}j_rKik0J8G%BYF&nd>dKtk^DjB==cO<54w%;K4>ohIT@^-+8_?i-n&p`bM11_(q*AEGoimT3*8J?qjj1xjxRF*h)WPcA#M@evd%TYWkH)eiRN1q%q>ktvKs3O(1e;F0A;1DohwT4mW(JkVra6-&2 z{)oPY>GZwii8VKuR{DIJwfx~Lep)w1k$8)r2ES6*?J0cgCz_5K z?@}<<0~_yrFI7lBlUOLHC$FoZ_exie|Ep&#_)S31=D2wUBcH$ZYc|F?Ri&7Pg1nxz z@$mO{meha;BNTTA3`^Np@=?OwPkDuVDE%`tl|rb|iR5ZwP-cB1HFq7FO0r&@s=j`Z zO0}MvYPi0T8n)h)`e^+&wR1fnm2bU0m2Evc)n|Pz6%?c7D$bOCcoTHvFlBx+!|vzZ z9L}h}|4yQLmQm`i%IeXTCz$`r6wG{O3&!KK1Op&G&nYI${u15sXFZ~6S*y9F&)$^yc<;}IA*G%JWGf9g6C@)FV;uJ%B)0Q zypON3vTLiPKPvTQ1XdZnd{vay{L<=c?pGYuv9UB|p3y~B9yg@%ZwrWgUKie$gSJAJ zhqi2h<)SUU<()05UwR4D(rw*BUxpOe1 zumky-J-Kg@i+xe0V(P`Ny6FX9Tg5BwjnzdIkooL_?$gBL&L^mzMXzZorb&a_Lz5ae zHj|dAAjj#)FNF>xvr^8PR0h4q3S7LRmG>?_tCn~bJ*jDm{M5Y|@@Z?4`P0&(*{AzO z{Q^Iq`25K0CoJ~VawrGdib4CTd2|;RDk|5n3buXr@)Lc2yxngu9?$i;&L6n`SipA8 zQUKKY;Jm$Qwzb@Ae*Ctrxn{iD8H0t(hb7^YqUzk(mdeka(YG(_2@{e^UL3r<$Z*Z` zQn?=UDTp{jXWXOd_325r=;VE)W=*B*vaNOOy+mgt)-9Cyc~Rt3fmX1Tyq$-B_c z8{7w^Qy1=o3wsl#Q~M8OL`-~O<6$A-BghLMP>Y;zj!>g|Lv~rrthw=DJ7J%G8V=KUrF}!jFi|=qheE! zw`5blw_;OoTfvkTF;sy>;Wp{JpJ)14X@&PYW7!qfJ0n_pXNlkBJ*_AC-*H>viLtY$ zQ>CjZD)rRMEA?A`Wj4VXj<2*GQ?1Y&0p4gqENHwCaZIInQ`nTUXFl>KG)3fAYK*?B zemY<(GNx0_I$*{;YIKh4Y3j-%#wr3%OVyPf`e~c9WqL7sT46VGTB$#Zg&UDYN|pE$ z@bUXfN|~qtI7xiDJNF}Ry7Uug^J)F4=hzzXSqxvIk1{l41FvHQ6D?}wCE81i2>^-N z{5#Tj_>t-A@77xJi#?XfixYT~CV$4}Xl%X8fI7;*1DWAAG0Da9_h`vH-qakG6*{bP zP^7VmBT`7-%o#NmnyKmWuXz_mB^ zb;IUh_JX5{#f1*vEd7+#N{SJnV2ktw()uNN8Q#=%)Fv7 z?}eA}vkL;sv}+#9SONd2{`T$s#yV%`#VO}kX>^pyc~W-0Jb5+iGh+@Ow$9#Z)TuFG zMdnSD(Wf40+vAN!o@RQCO{@^Q)X!6rkU_6kkb&#i!G5pjW|R~PX4KL;d=vQpUY+b`eg%tUH2mzpLK($y3R)wy541};;v=U>_YCT z;=V^zx~}LsN)(dYVFVhtZ-*u&j)ZXq_reAr*KGJZ1#<5obYWo z-@vzhZDtdTfym=++GU2E){HJ~F^>wI@N83`gzqF@@tqal;KE$*_+W~6L@?VsZP?<< z@!4&=;O+8}Gi=3B2sUEK2s>VRcoyHDdp6d-w`~^Ew7nG)uuU404eV%yU~Nx@gm3HP zQfC8V-ci0lZECFGjTq1FQFQ9E7Q`C^A|)1pB5)VKim^xJr#hu&^$;}fWfUP3T8D8bf9 z56r}6_fm-y@=~ch`{htswnFj@*Vlmk=~20F?{_%%Yk`V_{Y&nsRAqi}swPvrBFmTo zGx$-NYH!L+fr;(6w^}q%4N)=y2w zosNFDg*pa#2^>aw;G!~~UX5~|zJY12jlJoa4d4Bg6G2y74?2-jZ)%Yi(R5v9y&t~1 zdhP5ic1A$UQ^X6Km=<}!}kyO z94mr!frZqqc& z_fATDI_G6ZOyt+u{Q;SBx<{5oe50)@K?BV&959@ zjohEuisw5%t1*=`vnZ84OvszAOfZ`+>@}^f2OML>G(6Ia3%olg)2Ig0Kseu$f$C>7eAkk{Q=I zRLkRhKuhNQcE%*7LrctdTQFSe;aI=bE7;^@ zCUonBGoR#Sld@7rnsQv1E*S1)SNokWUa*fmsj^V3M{DYd6F*;(&>XqdU`ba(Whuro zg(bg36yMVn)dAYUx=r+&l1<{RH^5kHap}&=yk+y+yp^pJ6`zve(7Tk=lCQOX?>^6I zHuzzEQ(OID39Vaxr_G)-8IDyPx!z`3j`e|! zt?B`*t-^s9`{4~T`<-Y9V+weSaER6M=@!_bU<+ECx@A+VyX8|`b-FTtcnWCOiEWM5 zHf`bAUk`%qcea%5uZPmNxCd*TzHF5`&TK*K(FQ>qj)V988xvvkne{vKvGrOyDyh#j zbn-eWiz}C-CWM?AUBu^)>+MUb*wa{x=GqgcOzfF=G3(-89_q*}pp;aU1c>NP4W$-b zrxg{Zx26`Q_fJeIIN(5ervOb*c!M%WyY4srUcL!!hXH7{j$9LxTis&(-Z#9J`rR7G z1!zNU8cejLrrEFI4G_0iRJsP+YpDGJqqWVyV-nE04{exz;5hXd|4anhI*mr*qD6l*!c0oONYqan@d?;U&(9?PyttH z`Y2hiR3w4ud}1qoWP=C%b*Gy=+`aJ_S&3Ku^!*x2nq?z=6Hh#k@?(s9wKXr_Sror? z-{;F_I+`6rjTvo2^?*UoP_se%P~CFZP*YiKx*Kg^IzStu@4iCQa@l662a^DKo3>AQDuG#v$N)C#6)G|C_KlFInbbk;TYc6K)I$`I+@W(k!#jl}6Y zj0EX>j700Za0O2_C3ciHC;r&e?O%a%P_0eri1t0!v0jN}2hNYWNL$ukvoCHABr%-InooV!me+C)O=@sEGUP(=Q<-Wy)=Bpb|3K=E-*}&g`7 zI3{YJ7tzs8>p;6*^ZF384(57|?#B%x_)?bf>?X%^91l-K*ws#cf(x%cDGYe;eiirK z`YPf*`!(<8Pyux6l_Yn1on&@$oxF8~mb7&$G~noMTPd7AW!*z9N=XG>7Abzv5 ziQb&y@mPPlF`dIwyoXePdLx=&ldpW)eNV_Y$8|HpRJplzJ@}~h1&IP zE!IV}Jugc>BQ!T`@Gp&>q(E#a+b_N=u3T$#`DP?+g}hU{g1qCqd|W(xgI6qjGoY@0 zr(VPiGyr^wEo0VUPFSPMa@!lyNN58YW>MjOfG8gOKL>F^hZ55YZO%>Z+ zrO$Pp+RftM+060Y>CQ>sf%zHlrufzFe3H{>MogbZSUQn*Rb62j&$XfatY&Mwtd=x1 z(k`c&P^WufV}??8koDlZF2Qm&1SRL7z^}TAxC}TSL0rT|mu{d@K5#;=zt#4)(7>;C zwR&z|Lu6Vdg2^-26sUEO*|vXzQl%(1XD||L2$ZpmS zW2qWMk|RR%JQwL9u`v4ca^w1p@p5_PLrtb`OLWy`q z;!uF%D4!3mawTP1*(#b7BMjem%n7iCVaV-K)X3RUW*;27IX?W{c=}<-M4q#uA8Ql5 zg+&5>h|p(wim z=3{m@j5Kg5h8{Q_T^y{B)ts7*+%ot=Qeq2`q%AvrO#4ms9XjMK0iCc0Mr^88P`;uW zZT*;j=ngiCkw^`CvalOwvdC#*?Vu5D^Jz}m_tTWJ;!`i$g45iXSr57CnJb;?i7P$% zy*NTwHeL|AdW zz{#w<_8*?0XFNNTXp_KW!9EXdQyxMD3~S}|E=%OpYG*6o)J_^R=s?N|n;~JuzT060 zhv(KLhtM4K3oq^|coV?fWv!`#}Cr@=Q3$_xD>fNf2oJv0( z<$_5T&lO1*q3rm+I|&572f9p+knf~&P~osO_y@tqO}?vvi}DUe5PpX@5OxQ^(Joi; ztAKvWtTx?CsB4&kU1=!vJlq}fI(FNKC9Vk~z56joUO$%b3u|DH9)Zl^$NDEaBZOu; zTC{_WMs$PqMjV69t89aHgp7ktam<4)aU8x*UzKmpdo3J}6BM$}5)2)FCWK`5C%9!< zFA=MhL=$gZn}#Y}=g0&#n`9XQ>6Q8OHF|INoJc3G5oIEqHB~C@Lh>hSG{z762wY%M zp{%gp&IBI~>4j#5kqkRc-u(tva%dBN#*hz_$V00o8kjOpEl#8oF;D)P1+za(JZl0Re_acLq6{ykztwc($a`xVhoosHdHA zKM0R64Zdm$yX!rBY)#UKMjghCmj2NUH9g!6Z7Ez$D!y}F*nrfcQJ-?+v@kJ8HO|-21F0ROZsjz0k9^I2fMOTFA*8q9J zVB5>Vemho>_pDM-RP^1At$T&L3)#a`9H&+2%EoG>q04b~PGexlP0xs_U3XGTg1s-t z3M-dK<9db48lzg50y{M$m);wf#++FYE_A6`L4Fv*n5!UvciJL@}(5^4!6ke{hHYR`#+gt|Ur#oZJ0 zPwg$|$phU|x7T3@>32Kyk=!u-qAiYR+xKEi@&X64{rR!BQBMpTKzvuRA7SPI!~K#G z)zjWPq_9Jvn~2|t@D|}rP6d}5Prf{GT+UoQ3jY|xX@6)WJ%6(}@IX84)Q++7e)Tfm zy!cjP|I*)mb7||=EoQ7+0w^}_I8HwMbdg=f5DJ=gxH0IyTH~ucgyaqPkW;+45%Q)# zz1xz!C%&a6qJKHOf#iG}LNwKqzzqSd@^i!YgUbchm>HmMF%#Vq_X0}vnTPa+J~>VE zK;)O}&|xoc(N+2^C|Z2F{AoJd3A5A4&YF`$JM$;-Xv^e*d~>YJHAV-$@%dH<_48=? z_$~C|9^Odws;zF_%La+){rIK$4d_b8HP6{z)B_($Eid517`^(_MSAaBsV_deiN|+l zKj;DD3%8y7+HbMm0IijD-964g%h*6{_~<>8z&)3$+*$Y(I%4|Jc6F?I=}@9FV0#TQ zmmP;d2+nRbZ||;x79dEr6Wx2h(!d?Unb!g!y&IYekw5D(8D`dbB{zC`56!sZw3Y2> zT|x4nF+011WGtPM95KE=7vKe^i0Qqr0Lp`-N9`iZYt@wE?dM&18PIeU1>nK03;BIV z&V8ufRiM_r$de-;=er-H)FbKeeP-m4CxM$KlZ)bxA4*2BEGy|{kk|1B&n<`fo!(@g z@TH7K$h|KbNMNY!yw9bLwEJ~+asZE~9&)1pzLqXbQLEf!CZ3CUL z*CoTzUhmHzWs-XYoK=Q_j4T)LQ}F0R+wWd?%-oZw#CFirACczzDjoGKN4PT_lZppM z2woAJ_1-UjX(>A*b$Gne-&2ACQ2SGP5S=T*AfRZa)$30pXY}tlS6kki(2wZ9F`+)> zh3|!EO3lo3E%;?5-CA9iTgHcQtf%1AjBooyPEe zhCcmNJ3R)!uW7!l&b4^o_j_{B4yrXb=QE(@AXcF0&RdP2J6At0wWW>)@ZGiD;J6ew zo4Y6F5he!L|dmSekJ6WS{P z`FHvH*}|~BS_1e1jBTg3}oI_kMVK$=)a6JIAa;>J|f`&g-G zB<}eB62GQ6PQlmfD`S^DO`HhBS4O6n@^|M+bX+Qqnd@oCBZP$aXvzv`=r(mXdu5Ri z9(?UZc%ZC+giQPZ9Uc7v)JRhM!JmHE;NIEM!Wdk8fcz8~U%2whG4rVL5UL`bkK}4N z?n?p(vXv9{NFpKxaCI1{8&CRixf)}41y|#=JM?EYegFRUy1A6)MfCU^3veNeT*Cm~ z>Ch!8(O5kC-9#7Bi7DB2Y9Muqq{2?!;Ps8(MWu7mz&-rIel8~~duO_yClEdFwbzqM zpN^w{h@}sRU(CkVM0<;SUu_+2+$GC3+wb+T(d%P_JZNsV6>4DHeWjFFy*(OsR9CZb zjt2scHe>DPxle|R>Fvm_HV5dJ>P^keS+J_qahRveg1vRR@of`)OXf=kAUfwa~+p$t8=E(V^|L zLA(_2trfZS>&^wzlG~dFJaL$OJ_J}Z3;|%&-uD;YTkk#6D>w5vZZ_Aq?Cxte?QUAp zl;+dD>R?VB0syz-`T z_2n(~&4oNhEwuT5W8}0&@WAo>iy3v@(SEyLx)`u}>C0Ms{vAB&(B3luT=;A_;ek$* z)7yoCm9{a`5+CnAj%H8zeZe8R+8!+r1*IgwZ|pBiqAnLZLo`BLV`kJ>`c&dV>p1j~ zOP|eBl@KF{`{C24;5Usi(c&J$Of}+{XHKM4V)u2-l3&eAG3r@G_u+G{ z@eqo4=X{l3vFzRP{dE*N-emxsQC^KX(c?wm z4AjL^M~T88SkZ%#qQXXr5Lo-!0_RB$UYel$kWXeni~CR|sqblrYIMuiOx}`{<&Idi zD0JG3VtIx+&GYcaOHui-eh+>rTXMeEq|H?#CDH9T^lpGS?^}wfbuZtV=jivfGwwTE zRLD2uYXb9^0RUwa`SsKY=qjFPrO&FdadXK_$mw>YD;|8rY+L`-yUyX#(djZ$TT!nK z(#(G|Yh`!rXmvSKETDV;#9QcbGsOC`*$E(Q4opwOYB{by@~H_*UnKE`!KOUx#BR26 zO0Q}->;P=M`>rGAMPgrA?oqZt2z8T?=!te4eGB8wcJa#8B01HD&5E3z$kmgZuDQ1K zTKbz=N;tkt(m2={Tsl2j(z`o}0w5cy%p9~!4Ys)Yl09xg>CM-C?cj^RS_ls5<>Jv} z0G71U2Y@^_FlTLpm$%$kPZOvL%K3`ck&es?+rg}JiDQ-bm5_|r`zSo z!ipU5(DzJ(nL0@BZtrNU1s8NHe>o!8Mt!|)Rniiee)sxvp~Yh-J06^Tms)xY99Z4O zfR7#kq<8yE3%obmkoMABpUaW%wi@qeH)qt6VfRO~D{}Yl@LvNKU4spRxnB}dgHBJt zM^@?RAei(e(LFI0B)v@u^vHKDekCs*69jvEIU=^AeTV^qIbVKP3ZeF4y4mJgk-G?{ zUU=+#Hgl9c1b3vq&ia=lz?N;}9lZ6`V_-<(G7@M$hACX`+zRLc7@*s>NRD5wYv*tu zX?rx4;HekE8IUvw{{CRE(aNkR|^*9}{tJ^6SXg+{| zpm#%!r;Bdh=Pe6vTeo)iZI7vH4-`tTPwGn3eU82_U2aQJUrp-!TpvOfp-nB9cWAyx zd3Y@sArRknU698Z&iVD$-FoNq`-pm#g{;N=#hk@&i&=|>i@D-o#j_99($y{st|v&x zk#-e!`*!z$-RDpoXbkK#tQuAVOM^AT{5>^qmBq4rvm_Hs(>%&se6s6bEEEnFI_*Mt zU7@m2Ca5Wt1gZ|@cL}Li^?A8aBwlo=dQrrYk2Ve-2Tx2*1nfTErG>IVZJ@ePF(?wW z43_CBEmi_=*vf%4k5r3hkGD+KD(2_);Nrm{Ho~6>m;#DS2BwE16JR6NpxNThQ`L&u zdr5&+pvb&nXE+9Y?5~&4e;fqNq1AvQCL^HN%dkJxue&r49rz<%XB{B%0zQ>f0$%@2 za+(rw^Z6y+ic3^ZQ4cN}bTK8?{l_&oG47ux196j|?LZT7vpF>iB*Vz8+N`Zkz-v3)8RyAc@ z+N~GeMCB!R?zs=0-YfsR0Qkoxf2*LKe_eWgFu2yTK&8j&`QC`~Oo!7R=Rd@W?M}}1O(f$<1R>HCarW|Uv=|{IzUC{xCm-{X5E5_mA0b9!Rm)OX z;=d+%KN2^0Po_t2Th&r_SrlC!?x_EEnpcn6^B?-?%u2)h;J+8ouS3f$zo}oNRZX(i zYjED_d~vDCqUp3*sp%e6Z$Y_OA?|x`PkqoL?ADSAUb#Z%2cyE^f4vwBU%pMqXHiij z*Q>~FeeIu&D1c&%IZs^s)LwP@PvDcnBysCgKh+0$4-^qn5Cu`}F_-@_7(a?=*!x>p zG4Bhn9nRu3xVD$@9R3#Sf4E-^W%(b)|2y;BMd0Fq2Vuyh;CUD_#{ZbG0o-MZRv|y9 z2U`yY5mJx@(d_?SfQ2w5dN+5*xl5@63H6j47s*;AfJWuJNjK5|9R&Ox_D`T-CelP5 z14sX#DF3E`A8-4YMzqL{lsdcnP4;i>-?%MaT;5I%KBv73v{R%>mk{^&M!X8FQFPx! zKEYTg>S2yi`WyY1!RqY5QuwV}37`>DwPxNu5|vFUClcjKaUeMB@Na|5qg{LC6ZG}i zzEgq>dI>qds0Wk?!idhu>pdHn==}tV^qg`AQLPmILWm+x$eVv9aPUjj@b5EQDS|lD z5h^;B-Sx{*jIcULLfP=OX{yOEAXwmtTja;U-^c@NglWVw6oc^C;uXe2DkkpL-cVK~ zCi;?yTDWc8f3trIS~l8WnEdicyb*s9?UhVhi_6*cvJ$VyO4zrq(VH;0K{Z{sJAr>Ad7 zG_?#&{1Z^re>G9Ph^$!Oo|RR!{*$Is%d}FIVg*4$i6_9H061UgKKf75!A(YHsKkc! zuLQi+UpkF*lVQ8vlc!p>FMxtABdWP(yUZVF+x%)`qG&0lgoB;2cgRKot_C2Yo~y&y zyn8q*lTu0~*cJPLY?iC)zXJL0-zLf~kj<8_&`>?@Fb;6H#*fBXEq^Y`AKHz2JpHdj z;J=ywMFiea$}4{Vb%nssMTY-dBZQoSB8X*Aviz(SOnr?^4t{ctOz=m-0hDaz#yL%g z^lzoOs6PsMqlyrpW+viwdOtB8GW7XV+#U(-EBB}Ufc zhCkDLe@qun3TQR#i;5DF`V-HvRH(f#>QRp^rqh%93j6(LdW2(K zX!ax~I~#FLDf@*JT{!m)CVzZ`mkie@PCYLUct?6FT;^i1XQYQ#gKJAUFI?+lzqbsp z2gD;hwEFubKKnmI(nKx$wo{SYm&9&W|EnQqx2pa&Qz6?&&Sq8d?Pmp3U(z$H3Q?Wg z&l7f9zoZ}l+3nB-z@BnzSom`+Rltg^0OBdPzJ-4fz<*z{RDUjKe_M=yG+BAEczkt4 zU?)gnlVkGHCkQ?E*~+qvNlKT?HuJuJ7pI zttPj4!`jw{ZZ2oK)2=5=o6q(jDf8;PYIV?EV7$zZQ18teLu1b1i_~~wW*5cXlyM=C zlK?YFQ+1X0&D#Z~afth}8ZGQFl7p(@J+*$L)^Bg@`JtXJ4W0q@QVRu(nTrLBUl)rP zvlol*-rl-F#i3@qLlf5%Xya%TA>$zv`uQzye|e{%U(lisWZ$XZroz0STu{7SfO?{P zf_WTNU{&OMoPXi!lIK|pi-DEZD=ZX?XNea!XH%(eO+-(u?P5Sxp*+wWSe@rfv0~p$ z-vai0v+>GZAt)=3}h z#v0xFGoPAI=mS^jI%GmCC!*;A_-QykDJ{FCPGBv%1HrEY|2B}?7W^j#{Ii9>)w!eJ z#`9dH_?WvZ9NS4<-wKc}U0o^EkOG?d;LEy>Ax2;JW2dlmg&UpKEke*gfq4G8vOiVf zWP+b#qX>g7u~7(qN%(-z34B?0%zCt1xT=3w6XIA|&b8^b1S=C8fCb{3-of{Erg=?**UycTzlj13=Pkgk`vQW?}XRBJOQBx!`4%bA(c*BHO8t5uASLAj+Fg^LmiOAQsZRqu7 z9R^5XWsB+NcL?zXe9fK+NZF!Vp;`scV=w-$x<~zw9C>R0(7I{QKuj_%ybxYg2Os(; zf!E1ao}1?OryxbGzmuBwt`316O4T8sm%oJApW^lfWK|?hAJ{tmaYQF(A4^p$kEfG^ z#y*Nfy5k>y)+*z<{O{p-kfy|58`u_(%w);H|xGI_;jGcFE>MB;_#_+ zBsxF35R%_L?g2H1)_O|bzP)`VR^VHb_C~2lKVQEPYxfcKo2TOK%iDK2atx-@Mm=yD z7|AjObHdNa{zA-+9~l2?eov^ve;fH70Kc7A;R^rwC^nHGOiQPK^|z^ip7xhXQrlX? zl^JHwhd!jCh+%n>oIU$D0MCDEf}5Eqk$hlW=_86V>rI^uF+TONZjOetW)b z)L=m@6h`nXEcjChp0E(4!2IZN@Dd#k{zzy}8Cw!V@aLNW9ts)Q3=cl`mqY~UAvPg< zVw@3fGY%_cfF(Hm{|~`v(MiUmwCk?a>#kyRid(^Y2j{i?E|o};i$4PR!~JUpFFD#m zJohSb(>UpWZTR~|*Z@dX7W+w%_b8hPU-s`a8>j7yM-yK1h;Ko&Rf%w$AM8 z=zksmgG@!}&iHHqlPXPWIF!%q%UXXRqG3_|VSqo}|B;c}rubI`{L{tr_?`r3blWn+ z;TfdQIX>tiH=+L@0N{@%Qrn{cUvz_C?>m-&yeYg1n_*p{bfa|qvw%OJ`TPF1gmtH( zH0N&jhBGvk3pHfLVm8|01^&4Kiw^8cf@V^DMP$_C?F; zKZ+5xQK~VmA5OEBsTmZts{8-Q{AY8+c7HNr ze?^z!tWJQ(28_~h)SKDm)ovp1(hJ@AdM20GyGfs(zuC(9%Jf~)GIdP!T@-lfJHOh9zY%}A~YbmqV3~OQ)YKjUkh5csSq(m zCE1T7H(y>Kt2|2cc-MJ zY3kK%wsWihN+PyR2HFn5imdln;n*A;$s~0av42S(2PYL4smYUd|5I|E%U!6x8r|3c z0ZpYJ|6g%m0*KYN{*8JGAxfr@N|Ko*gi57CLdZOnB$?-NHz6}A+pLldWr$>+5*bsO zGGxe5nTHG+zqR+fkJEdcb8qL~bN`?Ho^_Vr^IOmJthJss?Y((6#s(^%R!x1E8TK?s#ejzmw}LCGlu20%z7;onO?AH;j><2 zDgiU6AMKmkt^Zp3Ws^n;jrv_i))m}BqbSTd|PDEe$V@pT@O z@$e|hTuPBC)-zomyEOSZ#r8E{N+7Xyx* zFdfs zjDqc8_j@-vTcvw)a1SGn0Ul!n_6d^BQ2LMJL4J3+#mI59VkH0fGcwnTpZ-W2jI|4N z5bbVu)0oz+cl_ndh2PkYAD50yZ>ayIw1f4E$Acd?2FW7X|8}M<<45eEYh(f6p>~*^ z3C9ZWX98^j5=yAZa9XyWMpUM0>D+&w(Z631IY9@`=6~{;8|swIJEFUagMDkQD^8?* z-lb+Oo|bz~O($tT|9Oa>AqBzjr+hx6W}T3dtD>fpyg%(cy+(>JkJ_)mfjsmytF9#z?xQgc|epbMf_ZSjTyDNZAK(?zx5f4rD-|?OkFQ)DiVWu z(*Fx+R4t@cA2qdh= zLEVCdICGoE{wLM)q3~V-MZL(v1J2;R#Quc81fZWO-g{{j*&+`gaK1A2uK!`RY$yQg z&AvSRqMJU;KyXQdHWGxFX>#)9+*EbQfPui3vG;dN6h_(UdD;*=>k^*|0mp^{o{9qAmwy70ogA zL6KtmgC@>}+-{!cWf=a6T6fJ))GJ#Cy4W^Fl?TUn?U)%% z5|b+uAF6-f7+jk^Ph(f^Pno{2&r05$v6)KyYWXvZ=*ybS9=4yvTHTSvTYqH1sFk6h z_@mT}8motGtyqp5lANW{U|%>r5!%C5rgSrIqYSwRM7OkO{`7>cuw2|B+Xf!33rVAb!OL=th`<0kX<=G~pMNW!M)pt@IZ;KN-T)6-1l_iE*91~><% z?%Ft?&MSPZqo-0SVtiQjmlEg?!~vU7o4nI`osV@aRQScX;i!AHiZug!@i0}oCsip` z>Dl5pR2hHs`u&xlwOjy)4y6u636g)}8ZN2Se|bA+ljC9Nhnj0uq_wR0#guZhHh-2H zCK^o_&7h;#DZ%l|4B^H^sN9k0%Grg%pugv2py|`1!<=Z_B>Pueu+`HCd^Y zpQhpxjs7V!1->2E@vFXd;{?OX8&TF)JDo;rMZ(O|r=jl*EBe-bj;4oGCX*`TnS-vb z%M{DStnhehbRJ$x+8S?_Bgd^cM-2??o=(K6v@_38xpkLqve?>_7hKWjFI_ zf6BxX2%puRXV_S)o^#FqpGXehHoNt!7xeFll0V=^fknp-lg`sIOC0j^iv^-Ns$9^R zRg~*fdFj0VuA#dfaq?YbGyR<&Q$f$9LTB(FvGiq=`wLNtt935Z?OPlCmT{I^6HkyN zz_a(El=BS!0|_iv*A_cF&#O)si;qVk2@4k#ymdw1b-F{}Io>7I<*7?lzJ|N{r^GQ0 z{c|))0#C`B#hP-Oa+>FwXqw80yoYE-k6-=DD1AOZ=vzV1H!(Yl&62B1%Sz%p0V^D< zeBKi!6d4>TRCQx77x5pKF*mW!9~PyZ*YhSJ@R}*kal@FGz4?XK%EWEoslKwj6MJBJ zr2BgDBqt8)8?K={$ZOcgVa&u5_Iy&;n42Xm(-2E^%$JVGY;GD(yPUSnI^Fy_Tf6sZ zbz_5S$>Q=vNkgXf$xlfZ%9iIXRV>vll`YjQRpV6Rl;=_!QWl$*hbV`LXEvdGwxxHe~B!}i*A)iIK=?w{W1?MfRv z|A%+?niHGAyL&@=Gn)2s3(*UO3num@3pW=Yxg2pn?XKy5!d=Z>(Op+6srVtAO85D0 zm2UNJc?r_PmUSQgULmK$Ac- zZpPn5T`JKd!6P*-YFMzZjrD#3K6>(N)c;8aLcRC})x-IDduW3q_sHrds+_tF=Q30jAiU z%QWVS?U64;P0c>EJWf5W9r|+bUjllq+u!}I3;LPPn0r0v_p7uN_xj&nr2GcIeC1kL zc;?X$s)uVEzGc;FKtGTr0(BZ)fm#Z!89o?io^wWOTKa#f5nUtjX6rVCB5^{uCi z;)I#FajcLJl07JYE$kz&kmhd;&b{&qVd1|D82MDt`EhQS=MB5S`}~5@^Vh!we3;QK zs_BCEyFMLB70#*Y+;97|?*Bdm{jycZsn!e);gZFTllqI3y>+YtIt2*@lb!<_0}Vzy zlC0g`TKpR#CpAT+%_>dm=btgfiS}h({(u`V6Z#WRzqCWPPV<&Q-m7Et{oPC@ z=N8ka8vIwoD;J-z=qE+5d}t_H?2ea-XnJ|tJnFwppuf~WH6GrvH``q0f0&ef34+e( zjqt6s#(IftQCjJl3bWeo6>2s0Nttm>A;Vv zHQGj9bgt!;46E!Vd9=lxpZRDleVpX`sWg;UvTn@Xc3DUtd9iSH$8Mc|x?)Z@`T4N3 z4;SNeQaYN3n@5M*ySEh!I(JZRO)T+*J`7v8N-p2%DrF!o7IZ4g*Y)h4uOt6#E}&2( zTr)B6{$^a#qkD2Ou$x_F$KvP7r{8wh$lVLt$Ns*TZ{A?pf9lhWc9Z4|_(umW$c8b? z#Shsux)kKA7HPPja=-8?VN9J}nO!aJe4NT$lG4+LB-dt>X7?f6q3NNx=H(%Xa>x(e zjTz6-au5HOw(M_2gvMpQo`{`dTJ!Vr2N}e8iGh{upb>{X$@N~M&T@%$o_Xb>K>u0gDcO66 z!L{^FKdI2pn7qWb+EL)g*f-}do>TIP_d=B^{k3}BZy^6OXd;Q<&X`@AggeP6c=azK z@HYy7h4w#VK|g!ev!JT?{&f7;DP6lC{4O;-`L`KjczpSLPk`^Qmv?&4S@@Ms&yHLG zz`C#e{uvnhUn>6--Ra#+$3OaIFc=EF(z%_t$rhp=+*NlX+)t3fkROly-vZE|+wBh; zJvhH-AphR5N}7Bg|Nkxn{bQ;Z>}{@W0iG&O7uA0Q4V}`EQEIEQflw zun$NlpDx%t8u`Ku`jCd@e$UJrbUj@MuBZJY2=v12cf)_Jv9+EvTwV}1;4jm;nYYoF ze2}j0p8=qMQ0wO)8|Zw3&V3uT8Z~Z>U&}y$i~Y}%^%rx-AsH9L(eHU&PV{l-4xU}D znwgrh6aG+rifea_zuhaDFf6wQ{nHufcWeKl>Q)cK-k~WTs(v-`$~Nz}MH$N!koD)F zuWmNxcN|wgW+)xhsyQj&c7>aT&p1Be+KYPuVVUn$egmODMgQ+W=+B(`Yx8MQ@*?nM z{(7CryaTqTgCFV=BK|u-^Pf=i2OZzPonD#9hiiqvQ`a^j@G9QFO{kz^U%0c2eV{GH zz=&e+lYcOos9+!^ePUoh@h=nT&&02~H}Nor-@L*7w~{4guV@Avy((vpFP^`gf&PN+ zs8uB|E-+AdZ(8N;|0>g3FB%S+3AP%fmFe8dBekU(WUdnp|Gx#Ge`mK-zT`9QMgB@1 z|2#%pp+Td%if}(6hJOrz{voZcE0%edOQZeY(mA6~`QK&a6gp#c@AW<(W$@)ZCr|%1 z0R4N)|Ag`NsiV~DXoU<^qw48(@nmUSPOsC8C=zxxo~;?V z|0@7=QV6Q7%SQ zZ+=n!;)UIXLrNbyJEInVNITy>U8}$$boccsy4|P!_x!62^ed$QlvDMc>zIJ2GV%VC zYFBopoD@yku6T^+-PISQsV9ctoqR!_{U{N7FLH&YJup^Q@*U;Z6W{6DJ@rl&yl4AP zaaDHl9LbaIcS`6VsT`ob|8O#iuK8inowsG_nm5}Yh2oz7epL`rUZphpHlyMaA<5x4l+;6YaSxiJb2U-&eyIoA~5zm+JVabG$O3BMlV{ zzg?yibnrpqmNG$duRJDN>QJlj+vS}%Up_LSJt{=*d-|NhO(W@`O@5~@)WzI^O2ao+ zF0t-9u=k-5dBEu_3db%M`?kL~OWLr^W_?S9JT#BJD6s1Y*}J1nKKbuBzVG#YRG!4b zderh^&U-!vdj9=7=W~;+lzSh&I^pR@@%I7fKPdAb6sfLt(4N2CtvTjzLaEHn>|Jv% zuUjlujWY#0wpCd)Ej8R%cg{wP`~HF^~c z-H+Fcjy$;6p+WJ{f_~5q(au+@)epk<2SNkO>V3ya7-@auA2t3YNgflbPhP zf40q_;}-XoRl7S5;>TT;Ue5MpwlgmFztw$FEcW_(jpFkl5yy89yUd_3zV**lZ$+8@ z_!<}%TCR0?X;@pSx)esXJLO^}Tl4E4DKKyiCl4x@(7ww9Lxb z&G|TniZq(&f!RlQTLb5-E1`M0PLn=%eqSiKNZUp^&iHN*HS4NXQUpa_^ApCrs5s^^ z<7*oeAf|hIFz&JViZhX5ieQ&}jcvK2v%`1Qvu|x4^eY#$)+=953)GfXC94VBYGhMU z=Wz804q-1I>B;MTtPM`D$oW6-9gpwNzU!7RE)RAXs#D&j|g=iKmvLtXOx(XPA6 zTfdv-h@~u8%DiU~bI~AG7UliEpzhQvw{VwL^W*B6?6OomqtGQM=IyiWC5e546U#b8 z8`B?dT{JddP2Bx;y5c%`N1}FzZtDH&x;-R~&_NNwTW33~KD$Y`GJMj7ObUaCnY^P$ zycbp25~t%XN*tNKxZIM&!T5bTiR{MJAdA;l4zq*r-u4b!kJp;Y#})91KPj4pYz7vV zZ8?`WTOH1+T3O6H={0#NkV$DEn6^;K#((bHvgGjL=oR}acfOSfNf&7AVcL0@1!M1* zw!59Gd8Y;LEi!eh7%#KEU4=M0=B(NZQm*NW6Uz*Iwb>W_rGUy~e4;>ZI*Vj==sMG_ zUiS?_Omx%v@rxajkIeZ-bz?^59=#8II~$)p*dsExsNi2g@J z{ID0JluX5;Tk-u_{JsZ7=X|XOCpNZ`yuUkin6H9qMRVIFb-Q~5udYc^inwfFhN1>! z+g!FAf9Lfv8Y$1+_TB%^%}WiwRrJb*A~!WS1NRjv>O^Kd>}OThn=pMz6?{?jDe7YZ=DYo0me>h;;__%(Lc_Uwp!jo?=sud(7?1;}F zIsW_4L1Lcs$2UH^1AaCk3G%bj#U0_=AJ@&*Ek0MY_||z`aj?mi>nxpegk+eUN&d{Nlsy0u&Da`{ziF)ap9th@63(03Ic*swcj^4HYz9yNmYL* zYIIka6Z}+fN7l%vASUwZwcUos83kBK_m!Pc;|T=@Vck+Yw#GaK6Oot-3z-7`<^2EPC~QSL3uokdRc3o$oipCu9+0CKA>CV{}Y~wG=uzmpLCv>Mev*CM1OK{xEP^lA`$oPq=WHDrHItqwEMc81@9G< zGI$I%%D!)Ew9m8iVyUu*X{j)`yo+m%adQlT%W_RG(LE3R8&%Wf;-mV*0NG<9~ zN}dQ$xQ!d%_~NXwF?M)g7B}rU`AXmqE$1HbF5?>}t}torfG(ZW6G!VFCR2@XKVB6V zADH-FYR@++syHmM!EtdWzgy4pQ+lKJTt{E(;^=J4^tjEvPnsPWFV&z1HtPc~4qnOT z7kbzHw4C`A`#BYQr^p;?%ar(~StsZj7uzV?jt|5oC&?r#w8ce$B9?7>=`Cd)WJoWJUz-}=yh+P)~(93afY!!AzyT`R)YNgs z+p0HIic<%Oa(J_e{hs`V%5q_Y6nE*>8WDMrwT9;9l4tY`8 zEi>)ycjKZkFFQ>QlgG);9P>{;bXa)XRw*BKE#wi}G9Kt4R;l_v_KNU)A=x-L8&kmx zu_A5Ht|v2HF6=`^_8G&4_BQri5|LV#F((4@Q?s8t7kQ}J{m7@jn405IQmI^-AGXk= zG{rgUmYwqwDyGoqxRpvH{k^)8)vF*rr0T;Z;R~$B-;{~z%2--IvIY#Z zFr46yRM=~$&R?XRM}0XVhx$poHd)py@L#7knd(65t>o`5M|r1Pj-Gcin;YnAcaMlK zY@D;nm~(PD5us9mXfYz5uqx&2I%?og+6$yrJ6*_N|mE@oUOy4tJh zEJrUr&vD4C(w5Zxni{k1GwsOyH;f?D{BI|-FEj)G!x#pH10{0#F@KMyQNLa^-lZCkj7aqSo?b3ru*@^N>880QK)r}sn=MyL5D`jr6i>!z*nL^vji4R!Kc7=W`~qDjUigSXQY$%I4=L{3@aA`ob%_mog{gdNll3 zHE&cekE8!8Rf*XW`@B@&DyfWU(PX;u zO%|hQViRVQvbIWbL6$GCoGWE}-TDkCtomrJZcLuK0Qt+6#Rt48y%_MOtS^A8bZY=t zS!h6FscJxCSz~}nsYrlHSysT8QrmzpWzzu+rJj|Py(cRDdO0gkOsMo3<-X3{#xKI} z&EpT3-LF)eu<4_>%AP#qbbs=yQ^2HFZe{NFG!Z?rR+e;c7Jrsrs!EpLy?u&SS=N+= zZBCS(S9d@+JN!F(Q!6`qMk`q-sQY3j`1?Lhu=SmFO1EYl6Amo>RH^I~XH8SseTcMA zCc9Xhe_lV(Usg4PM1a|tzU#!8I)%q;&fvBMLw=6|c4i%ke({>eJ@eiaft~WQ62g0S zH-&IVJPhQmrm(*x?~t@x&gK{^?~b8;Rbe`p0{b~MA+KGwoa_-?<-xMXhlKS{?({xQ zY?JGMJaEg=?N$5wPca2-W4g72^I}N6@eUh*f4RW>7W^&gM88NEj} zB-EJM##ce^?0u#xQ{k=Rx|cajs;>1bMBIwzv<=BJX0r*blY4s~SLLj7Ct83qgz^$? z=DF>=8EWYIpPquKFC9r974TlUrCe{=P zsG7+nZrjNc67b=6=gz2LmIS7@J$zM)nM`fG+QEDud^>p|j{fbYvMUq$@1hU;e} zq(U0JY_l=qZhVy>vH14BVDkh6?V`1|&1Af|J=W2KF(0syGoeb5Ru_I3P+;#VJrPf^XJ8lwe~e#7sn_*aNSs z;?#GJ|KZ#AxqkZQeIlYh7TE9*$$mKQJdP4Ik$N7-Lb7j1=)>LnL!)<4z$@o*n^6Ik z8W0q*0f7*#t%jpRty-ZV2LKO;`Xy1r>87~NnTvkWP%a{&H1;)sYO3H<92!%A$0^))f~ zEHr_td(qKh(p?p_Lid12+0K z5gVbpTIBE%eXNU=^npNF2Q?n04~!$R-?p&PHvp&%1jG3lfy(Q8C=>jN5Dt`?KOj?k z6foUEzeo@;-3?Htr2&o!4HQ2EU}&#V=uvZ?&?qBHxXS?ZU=$HlT|xy?#+2|8LoDW$ z41wT+2`Z2_-2}%O;+RoYg@~Z~3MQb2Yoak#97aH3aTN&oU^62y!a>8s*AZ~;8UPQ$ zNljSvKRC~Q^(gRpGl+h|(b;JU6JG>l7-@%nMPG}EK<(}VrZhqAuG=6+Lg#F@qB91{ zHWd%qCj;1~fPIjFJz|Txw0seZPaCFFv~GYE2ds+|FoWzt%yYxKmvC%oRXr{N=WU$e zkSnNZ>Io~R@3zKgLL26(G0;Nn zfuKC_v@sTql$QZ|_d1G(lHH(&uh?PzVTDKrZ{j7|w;17fmoZ59gU+y z!lX@X^{!kAuQq%mjU}(3P~{}B%9!GIpyi8AL3zdy1Pt{L*#uKv#bR*BRUpW?i?T0X1;LNR zAcTP7_fhudFmkxzH+B~y*b$Bjg2TySelx5|rObdJEfN*PJ|u(v%y3+2?M^(braTQ? zOaQezMo>FV_`MlU872K_4%rCQ*aYvez!qI0 z3m_m%0)kV&51$kVrm>U2=MZ3&aIg&|1EvJLgcL_wlhzUxho6S_J{5)MVQfSv@268l z#%UQCQ-q81g*3qA39V0~g!8qrNpnzWOP)2?GHz!R3(5*}FiKK3FYZCf`sHuG9bpArYI%vGp^7=1;EpR;JS-rR`+10jCzK+e8a`)@N%XCOgtHJYi7cds zH(kQK`(bAyEC>vHtegCc;2vw-adc=s+bVrW0FYb&iLk=w%HUpWFs3bSu-$==4Y1T( zjz{0yU?cq-f?8LiXy{<&7Sul4z~^j%gsK|P54XkY_#8nSYVqg~TQK1u>sm>npArvn zBObUxxYoXWi>K<@;kKhopiMwr6sdb09qx*PN4Sr_6-=+5pcK_eH{o4>(14A}(* z0KJ53$Luhw!ruvO%@7sOoPdgZV<0i}cHbSs>zt>0EHzQ0?3b`8QzU}^ub1A za(KZNw;2tmGj?K|@Zt206p{15dSt|#U`;n{Mra=i^%wvXN()$f2nWa$ay&o74YN|? z2CR%yA}Alc%^hniUUz`{Q{zzwcWf90A*c&29&H0C+ARV5QZ^#peHU~Kp|NY*@YKT| zV7rLSyF#UzmaM?9)4(rTg2|Z#w(`KKpp&yu?NBCc(1P1e91Qn*;Le~EDnA5FOEKg1 zIYGFcDD}(UUKl@*r?TKh0}%eK5Oy8#m01yRKP-10tE?e{_Oj#AB=8Gb0q^E<3nZ?B z*Tt2~Ea>(9CIo2B@uA$|!zzkv-um!0?CAqS5A zVE7SE6b>-$P24g3F4=VREL?mOOc9EFsOqp=xQ+0`n^=$J-2_J41b&m?7uOxP0B9_X z_oPjjcr$Ey3v;qhiFAuunNw;OK22IxT@06-fXQvi(6D z$a$ik0r8)2-I75e1#@_U@Pnj&=3fks+av+_?dv9h&oT%fe@whxp*6$}SeMtu4Rj2z zHQf`(fDV(Hyu*ChFrhes_i&3B)~EZufZw%pcvR*TF*OW%VO0u5MA2uk0`kPv>yBX0 zm(}ka0zUWy9|%tnB8qFpNMRXoEY``x4SbL(Ul;I&2m<)M5}qIDjU8hoV&Bj80P1bh zKh9R#DtKyx3WzG2JHS~mHej|pz}ZJ?@WVSeUYJoG)B`z?qr)c9AmFMb7&h`iogjf# zHTc0DoDAAYIhQ$wgaIKFxJI}TjA`MO^7!Dkp?f`_D{MKNfWAaPCme>?b@5b7ebAqY z1vqB(hCoLlEBOi7umwzDKlIiJv@n$~*3dhAf$xb1h=>Q?VMvT$P*Jxy`5VN?fvruz zEyANg@Ygh_03W9V%aptCp=ay8RPi^e%JwA$q!i7xPnKi{lQlabzQ-l z4OL~9ZwB(2hDrI6Pp!+ERu=J0sqmu0H?W*=SK%) zXSt$aU{L%P{Qe%8jZ<%dd1^}t7WV8RK-A`m7b$uXGycAb4nRce-fJQXxGMzPqUReu zfRP!71o%pL-(lqr!smg(-vr0+((ZSj6`cUBNeu#!aEQnF;i(Vq;#km5ECv~p=>P=f zgRcgHA+WZ`rs4>F?hFjZu4|mOU_Ad^2r&hm7L4sS2 zimsHGw?^s7mPQGgOL}5-Ci$@6#4+K za7{QiYqcSA!*sm7B^`twa-S0&3sQqx`;dA50kA?inNnsV{QYoH1XvP~Jq>(vfpwEbTBZ33Ry0Kfb)bNUC755+YyD^g?8}KD9{8e1#9RgI4BC-OF&LHG;gxe zL)J5(g>cjI5H5`Zrw_zb&52b%CSd9;sQeLvP!NJSqH#)S?6o>u-htnlgV@V0gUh0D z{P4MGFdZRxO3;34iv~^@lp~`3@Xi<L575*c1?tXBja#eQMDO}NWX4PL<%p*;dY~)c-^kl z^$Td4%b=MEn<&42jn4?PLzssl4}dC~2E6Fw1Kb|ez$$`Xeuqbw-Vw8*x0+GEKliQ5 z^x+$-{5_tK{}3Aj9S=b<>P9>|(FAIf)CdN+=4&j%%%Md74&dA|;2h!JU8`xW&}Q`J zA!w9>$G6sEllx_+V;QNRN?Bw)wUkp!UjSU-M< zwDuFzpo;=puX9g;sAmu_3VVW`lF|`W;2R#Dd4kPbIpkM290X(eKJbHZ=SVyPPbPxM z*G$AFKI=rFAZ!dld0@VA5WdLm5j2=qjdpCT2U=c&HJ7lz1}6~yF_blVXZA7#ST*Zb zNBZvwOAx-5gxQKp0=9n4;?b{3SQUtq0s83&9zC0k?PwJa)|wszYWqPI2v<_7Wjr-2 z8BrOIO-Dh0tbc-(O#;)Vg5A@Z4J1@(#G(DCedAsWveNef zqlEj%jqvjn+zGTJexv|%kI3-lWu9WeZ}1eLL=*_RA5H|npb9O#w6-Bz{*HCEcmVf4 z#U2{)JOf3gY4AmxXh^oeMajR7PegQ&77_8md~_rf=#B_geei%?%~_!O{JKqo0K6p? zTlA+{B{H)BsbF2_^lXQf(|}TE29nKiYAUdYEYF3hz}`F)B9exa{XjS&6Yu%!TboaT zW?X+SG@k{boK{Z(FL?LzLsxq)URTp>AjBmDg^cLsK7%H3K^A_b^(>$)(5 z6HoQYz(xr<A1+El15adPoxPd~?9YhdlTRvpo#)6%*HXJn*j#8 zM`8HQz}w?%@*U_XmU#(EIh@3!qc3rr;J}yI)N}N8eNHf_hSR!!j5)o=$3His&H-BP zE8tNcMKC_~bFkL6Kt#eycoBOpXx+C;B-H4`9Q1%EA6%d<4O?b`Wx(^?8Vldh61ku( zrwV?Gxt@!~OALY*pU0zp;1{$a#CZVSqJc-{z%S_Rz!9{&P6X7U5Of9MdS(RQ$itmP zi`F1T7qnsP0?=~7Iv_T7=3^6&Kt2#P=;1{U`8Xyt!fihAgh>LeUx8M_^^M&SPi^~+ z+FSqfB{F1@9UbA|D!PbJd12`S+*WkrI6n9BHL|Ze1qRo#-)9YwlZUMeaLQ;@_+)0Z zARCAEPe7YY;NAk9B6`*Kk*!LFI1OX3iK{peg z8Loh%HPR$27GNuHNas?Zis&X@1il0ee@Cwqpu}OYP$@VGag|}WxQ>Y&$8TKvnf zfsuM}N$3{vS`~OrXjQ}qE-S;YezZO7F1tY+KvM%GFK9|rSv^K6+)=U zLdJH&Qx`c*h6DN^o_&QORAJaG8jMloUKq-cS04{Yj+N`DqVwSh|2W#28Si5rSptoh zfdhp5qfmG+#_I$y#i|m{t6(9i^Gdp6Ts?+oVn2nE*KHP zk6`Ocpz9;}1@&!$CcRn$__qE&o%drrRk{+l6^-;q$J)yd0|!~wImrG5p&mmO8W_Ol z$boS$=r;v|VOW%eumoZEH@GdZuRpd%2)+Ss*{7_DcA;7r3ci?)0WHXrXu=o~eg;og zfpI_l1{;9cFE{6Y0n`n^AmO3!b{awzfQ{_1y8x8;d8d8 ze>iOZ5?p2o4uE?z5zz^>4aKX0v$a`x?s7GFlpkD;)gu)VX=Sg8@b6JD)qtqn3{O08j< zH^9D~@D6V2D}*nN28GPshm}5nb$?w@jDTZq9q6cQwO~D4I}MmT8 z)Z>nzT3-p|nf^Iz7kHuxSm@&i4I<7)IHLjdk$F9Q^ewi3645N0`t#j-J~*Kw^{jh~ zg$~14T1w5`mK61E^yvDS?8{LNRRP#n`Vs$6g5=2fz$X1$g39lN# zQ|lYC>6$O@ehzZy`|!Hkvxeh%YWH`rmPg3yLiXad!^GKCin&XLfgBJ|W>xHO)2 z2tJYv+Bbg&PgrRJ3l`EX%*~*f+B_b8K(b*Y+`3Fc_xpSe`P}CC^ZB~w$4`Y6RzV+h zG-G`|gebLGT$5A5(k|S9wNv$l{-yoFPMCF}V68cC_mH2$aum!Ykj~hQ+0H8$gdy z;!&?QY^xB5prX`>d))9q8*V4+!}by8)?r}3eeWM*p>GR9-2-cH2R?g%JMBA(fzJ$# z%aINjz<~)Y;)H7=9|OYQ4JWqa*iqHIBX5k0Kz#M`6aV3Cg|os_m+Uvt;#E(9cU0qj zpB;6(Lqs&>L;Qz3j=LV=`PY&*?0^ql1g=Z~{wSkfLNE^zk*hut5iddWk@LXMJ8%*^ zX8_AQZ)rFq0Gx4ah>4C6u%^`!)^3=;6UT#6fBsiPd<0b5fi)^AEc+No#{upTYXAJk j?tTLPH)&ibvGgu@t`kQ~twXFs9Ogqr^hyr2GtvJ8W|Z$e delta 169995 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 diff --git a/cc-parser/concurrentC.cf b/cc-parser/concurrentC.cf index da838561..86a9d854 100644 --- a/cc-parser/concurrentC.cf +++ b/cc-parser/concurrentC.cf @@ -267,8 +267,6 @@ SjumpTwo. Jump_stm ::= "continue" ";" ; SjumpThree. Jump_stm ::= "break" ";" ; SjumpFour. Jump_stm ::= "return" ";" ; SjumpFive. Jump_stm ::= "return" Exp ";" ; -SjumpAbort. Jump_stm ::= "abort" "(" ")" ";" ; -SjumpExit. Jump_stm ::= "exit" "(" Exp ")" ";" ; SatomicOne. Atomic_stm ::= "atomic" Stm; SatomicTwo. Atomic_stm ::= "within" "(" Exp ")" Stm; diff --git a/src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala b/src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala index bc868b1b..2679f3b4 100644 --- a/src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala +++ b/src/main/scala/tricera/concurrency/CCAstCopyWithLocation.scala @@ -614,14 +614,6 @@ class CCAstCopyWithLocation[A] extends ComposVisitor[A] with CopyAstLocation { copyLocationInformation(p, super.visit(p, arg)) } - override def visit(p: SjumpAbort, arg: A): Jump_stm = { - copyLocationInformation(p, super.visit(p, arg)) - } - - override def visit(p: SjumpExit, arg: A): Jump_stm = { - copyLocationInformation(p, super.visit(p, arg)) - } - override def visit(p: SatomicOne, arg: A): Atomic_stm = { copyLocationInformation(p, super.visit(p, arg)) } diff --git a/src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala b/src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala index 41e4ce5b..a13ae796 100644 --- a/src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala +++ b/src/main/scala/tricera/concurrency/CCAstMaxLineNumber.scala @@ -606,14 +606,6 @@ class CCAstMaxLineNumber extends FoldVisitor[Int, Unit] with GetLineNumber { getLineNumber(p).max(super.visit(p, arg)) } - override def visit(p: SjumpAbort, arg: Unit): Int = { - getLineNumber(p).max(super.visit(p, arg)) - } - - override def visit(p: SjumpExit, arg: Unit): Int = { - getLineNumber(p).max(super.visit(p, arg)) - } - override def visit(p: SatomicOne, arg: Unit): Int = { getLineNumber(p).max(super.visit(p, arg)) } diff --git a/src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala b/src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala index 8ef4a023..c0bf2f73 100644 --- a/src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala +++ b/src/main/scala/tricera/concurrency/CCAstTypeAnnotator.scala @@ -50,7 +50,7 @@ class CCAstTypeAnnotator { program.accept(visitor, getPreloadedSymbolTable()) } - private def getPreloadedSymbolTable() = { + private def getPreloadedSymbolTable() : CCAstTypeAnnotationData = { def createDeclSpecifiers(tps: List[Type_specifier]) = { val declSpec = new ListDeclaration_specifier for (tp <- tps) { @@ -72,6 +72,8 @@ class CCAstTypeAnnotator { val symTab = new CCAstTypeAnnotationData symTab.put("assume", createDeclaration("assume", List(new Tint))) symTab.put("assert", createDeclaration("assert", List(new Tvoid))) + symTab.put("abort", createDeclaration("abort", List(new Tvoid))) + symTab.put("exit", createDeclaration("exit", List(new Tint, new Tvoid))) symTab.put("malloc", createPointerDeclaration("malloc", List(new Tunsigned, new Tlong))) symTab.put("calloc", createPointerDeclaration("calloc", List(new Tunsigned, new Tlong))) symTab.put("alloca", createPointerDeclaration("alloca", List(new Tunsigned, new Tlong))) diff --git a/src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala b/src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala index 1052de43..5b522211 100644 --- a/src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala +++ b/src/main/scala/tricera/concurrency/CCAstUpdateLineNumber.scala @@ -794,20 +794,6 @@ class CCAstUpdtLineNum[A](startLineNumber: Int) extends FoldVisitor[Unit, A] wit } } - override def visit(p: SjumpAbort, arg: A): Unit = { - bumpLineNumberAfter { - setLineNumber(p, lineNumber) - super.visit(p, arg) - } - } - - override def visit(p: SjumpExit, arg: A): Unit = { - bumpLineNumberAfter { - setLineNumber(p, lineNumber) - super.visit(p, arg) - } - } - override def visit(p: SatomicOne, arg: A): Unit = { setLineNumber(p, lineNumber) super.visit(p, arg) diff --git a/src/main/scala/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala index 716adbea..ec1276fb 100644 --- a/src/main/scala/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -3040,62 +3040,57 @@ class CCReader private (prog : Program, exit : CCPredicate) : Unit = { val srcInfo = Some(getSourceInfo(jump)) // todo: correct line no? jump match { - case jump : SjumpOne => { // goto - jumpLocs += ((jump.cident_, entry, scope.allFormalVarTerms, clauses.size, - getSourceInfo(jump))) - // reserve space for the later jump clause - output(new CCClause(null, null)) - } - case jump : SjumpTwo => { // continue - if (innermostLoopCont == null) - throw new TranslationException( - "\"continue\" can only be used within loops") - Symex(symexContext, scope, entry, heapModel).outputClause(innermostLoopCont, srcInfo) - } - case jump : SjumpThree => { // break - if (innermostLoopExit == null) - throw new TranslationException( - "\"break\" can only be used within loops") - Symex(symexContext, scope, entry, heapModel).outputClause(innermostLoopExit, srcInfo) - } - case jump : SjumpFour => // return - returnPred match { - case Some(rp) => { - var nextPred = entry - val args = scope.allFormalVarTerms take rp.arity - output(addRichClause(Clause(atom(rp, args), - List(atom(nextPred, scope.allFormalVarTerms take nextPred.arity)), - true), srcInfo)) - } - case None => - throw new TranslationException( - "\"return\" can only be used within functions") + case jump : SjumpOne => { // goto + jumpLocs += ((jump.cident_, entry, scope.allFormalVarTerms, clauses.size, + getSourceInfo(jump))) + // reserve space for the later jump clause + output(new CCClause(null, null)) } - case jump : SjumpFive => { // return exp - val symex = Symex(symexContext, scope, entry, heapModel) - implicit val evalSettings = symex.EvalSettings() - implicit val evalContext = symex.EvalContext() - .withFunctionName(functionName) - val retValue = symex eval jump.exp_ - if (retValue.typ.isInstanceOf[CCStackPointer]) { - throw new UnsupportedCFragmentException( - "Returning stack pointers from functions is not yet supported.") + case jump : SjumpTwo => { // continue + if (innermostLoopCont == null) + throw new TranslationException( + "\"continue\" can only be used within loops") + Symex(symexContext, scope, entry, heapModel).outputClause(innermostLoopCont, srcInfo) } - returnPred match { - case Some(rp) => - val args = (symex.getValuesAsTerms take (rp.arity - 1)) ++ - List(retValue.toTerm) - symex outputClause(atom(rp, args), srcInfo) - case None => + case jump : SjumpThree => { // break + if (innermostLoopExit == null) throw new TranslationException( - "\"return\" can only be used within functions") + "\"break\" can only be used within loops") + Symex(symexContext, scope, entry, heapModel).outputClause(innermostLoopExit, srcInfo) + } + case jump : SjumpFour => // return + returnPred match { + case Some(rp) => { + var nextPred = entry + val args = scope.allFormalVarTerms take rp.arity + output(addRichClause(Clause(atom(rp, args), + List(atom(nextPred, scope.allFormalVarTerms take nextPred.arity)), + true), srcInfo)) + } + case None => + throw new TranslationException( + "\"return\" can only be used within functions") + } + case jump : SjumpFive => { // return exp + val symex = Symex(symexContext, scope, entry, heapModel) + implicit val evalSettings = symex.EvalSettings() + implicit val evalContext = symex.EvalContext() + .withFunctionName(functionName) + val retValue = symex eval jump.exp_ + if (retValue.typ.isInstanceOf[CCStackPointer]) { + throw new UnsupportedCFragmentException( + "Returning stack pointers from functions is not yet supported.") + } + returnPred match { + case Some(rp) => + val args = (symex.getValuesAsTerms take(rp.arity - 1)) ++ + List(retValue.toTerm) + symex outputClause(atom(rp, args), srcInfo) + case None => + throw new TranslationException( + "\"return\" can only be used within functions") + } } - } - case _ : SjumpAbort | _ : SjumpExit => // abort() or exit(int status) - output(addRichClause( - Clause(atom(globalExitPred, scope.allFormalVarTerms take globalExitPred.arity), - List(atom(entry, scope.allFormalVarTerms take entry.arity)), - true), srcInfo)) } } diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index 85a80a2a..c7bcfbdb 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -1235,11 +1235,15 @@ class Symex private (context : SymexContext, case "reach_error" => /** * A special SV-COMP function used in the unreach-call category. - * We directly rewrite this as `assert(0)`. + * We directly rewrite this as `assert(0)` when checking reach safety.. */ if(context.propertiesToCheck contains properties.Reachability) assertProperty(false, srcInfo, properties.Reachability) pushVal(CCTerm.fromFormula(true, CCInt, srcInfo)) + case "abort" => + /** Treat abort as assert(0). */ + assertProperty(false, srcInfo, properties.UserAssertion) + pushVal(CCTerm.fromFormula(true, CCInt, srcInfo)) case "$HEAP_TYPE_DEFAULT" => /** A builtin to access the default object of the heap */ pushVal(CCTerm.fromTerm(context.heap._defObj, @@ -1277,7 +1281,10 @@ class Symex private (context : SymexContext, } assertProperty(property, srcInfo, properties.UserAssertion) pushVal(CCTerm.fromFormula(true, CCInt, srcInfo)) - case "assume" if (exp.listexp_.size == 1) => + case "exit" if exp.listexp_.size == 1 => + addGuard(IBoolLit(false)) + pushVal(CCTerm.fromFormula(false, CCInt, srcInfo)) + case "assume" if exp.listexp_.size == 1 => val property = exp.listexp_.head match { case a : Efunkpar if context.uninterpPredDecls contains(GetId.orString(a)) => From 5c498f4fb798bbc2c178e0b3c67daf4afc7fab33 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 2 Oct 2025 16:13:03 +0200 Subject: [PATCH 16/29] Treat static globals as global --- regression-tests/horn-hcc/runtests | 2 +- regression-tests/horn-hcc/static-global.c | 6 ++++++ src/main/scala/tricera/concurrency/CCReader.scala | 15 +++++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 regression-tests/horn-hcc/static-global.c diff --git a/regression-tests/horn-hcc/runtests b/regression-tests/horn-hcc/runtests index a23fea71..c3db3a47 100755 --- a/regression-tests/horn-hcc/runtests +++ b/regression-tests/horn-hcc/runtests @@ -17,7 +17,7 @@ TESTS="test1.hcc test2.hcc test3.hcc test4.hcc \ function-in-assume-assert-2-false.c function-in-assume-assert-2-true.c \ function-in-assume-assert-3-false.c function-in-assume-assert-3-true.c \ static-local-retention-false.c static-local-retention-true.c \ - static-shadowing-true.c" + static-shadowing-true.c static-global.c" for name in $TESTS; do echo diff --git a/regression-tests/horn-hcc/static-global.c b/regression-tests/horn-hcc/static-global.c new file mode 100644 index 00000000..8c152b6f --- /dev/null +++ b/regression-tests/horn-hcc/static-global.c @@ -0,0 +1,6 @@ +static int x; + +void main() +{ + assert(x == 0); +} diff --git a/src/main/scala/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala index ec1276fb..ebccfe71 100644 --- a/src/main/scala/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -1455,10 +1455,11 @@ class CCReader private (prog : Program, case funDec : CCFunctionDeclaration => functionDecls.put(funDec.name, (funDec.directDecl, funDec.typ)) case varDec : CCVarDeclaration - if varDec.isStatic && !collectOnlyLocalStatic || - !varDec.isStatic && collectOnlyLocalStatic => + if !isGlobal && ( + varDec.isStatic && !collectOnlyLocalStatic || + !varDec.isStatic && collectOnlyLocalStatic) => /** - * Do nothing when + * Do nothing when collecting non-global variables and * - collecting static variables & this is a non-static variable * - collecting non-static variables & this is a static variable (handled before) */ @@ -1472,10 +1473,12 @@ class CCReader private (prog : Program, if(!modelHeap && varDec.needsHeap) throw NeedsHeapModelException - val storage = varDec.isStatic match { - case true => StaticStorage(enclosingFuncName) - case false => if(isGlobal) GlobalStorage else AutoStorage + val storage = { + if (isGlobal) GlobalStorage // ignore static in globals + else if (varDec.isStatic) StaticStorage(enclosingFuncName) + else AutoStorage } + val lhsVar = new CCVar(varDec.name, Some(varDec.srcInfo), varDec.typ, storage) val srcInfo = lhsVar.srcInfo From 365b47e29c3050d4756c0e76318b27a0e96b4e2d Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 2 Oct 2025 17:13:10 +0200 Subject: [PATCH 17/29] Move C preprocessor to own file, support size_t when using -cppLight --- .../resources/tricera/headers/macros_ilp32.h | 3 + .../resources/tricera/headers/macros_llp64.h | 3 + .../resources/tricera/headers/macros_lp64.h | 3 + .../resources/tricera/headers/macros_math.h | 3 + src/main/scala/tricera/CPreprocessor.scala | 92 +++++++++++++++++++ src/main/scala/tricera/Main.scala | 55 ++--------- 6 files changed, 111 insertions(+), 48 deletions(-) create mode 100644 src/main/scala/tricera/CPreprocessor.scala diff --git a/src/main/resources/tricera/headers/macros_ilp32.h b/src/main/resources/tricera/headers/macros_ilp32.h index c4aa54e2..bebf10d5 100644 --- a/src/main/resources/tricera/headers/macros_ilp32.h +++ b/src/main/resources/tricera/headers/macros_ilp32.h @@ -25,6 +25,9 @@ #define SIZE_MAX 4294967295U +typedef unsigned int size_t; +typedef int ptrdiff_t; + #define NULL 0 #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 diff --git a/src/main/resources/tricera/headers/macros_llp64.h b/src/main/resources/tricera/headers/macros_llp64.h index 88b9bf78..21308c3c 100644 --- a/src/main/resources/tricera/headers/macros_llp64.h +++ b/src/main/resources/tricera/headers/macros_llp64.h @@ -25,6 +25,9 @@ #define SIZE_MAX 18446744073709551615ULL +typedef unsigned long long size_t; +typedef long long ptrdiff_t; + #define NULL 0 #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 diff --git a/src/main/resources/tricera/headers/macros_lp64.h b/src/main/resources/tricera/headers/macros_lp64.h index 7e272860..9033f973 100644 --- a/src/main/resources/tricera/headers/macros_lp64.h +++ b/src/main/resources/tricera/headers/macros_lp64.h @@ -25,6 +25,9 @@ #define SIZE_MAX 18446744073709551615UL +typedef unsigned long size_t; +typedef long ptrdiff_t; + #define NULL 0 #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 diff --git a/src/main/resources/tricera/headers/macros_math.h b/src/main/resources/tricera/headers/macros_math.h index 3e7c0c28..33fdbfd7 100644 --- a/src/main/resources/tricera/headers/macros_math.h +++ b/src/main/resources/tricera/headers/macros_math.h @@ -23,4 +23,7 @@ #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +typedef unsigned int size_t; +typedef int ptrdiff_t; + #endif diff --git a/src/main/scala/tricera/CPreprocessor.scala b/src/main/scala/tricera/CPreprocessor.scala new file mode 100644 index 00000000..b32efcf6 --- /dev/null +++ b/src/main/scala/tricera/CPreprocessor.scala @@ -0,0 +1,92 @@ +/** + * Copyright (c) 2025 Zafer Esen. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the authors nor the names of their + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package tricera + +import java.io.File +import java.nio.file.{Files, StandardCopyOption} +import sys.process._ +import tricera.concurrency.CCReader + +object CPreprocessor { + /** + * Preprocesses fileName using the C preprocessor. + */ + def apply(fileName : String, + includeSystemHeaders : Boolean, + arithMode : CCReader.ArithmeticMode.Value) : String = { + val preprocessedFile = File.createTempFile("tri-", ".i") + preprocessedFile.deleteOnExit() + + var cmdLine: Seq[String] = null + try { + val errorSuppressingLogger = ProcessLogger(_ => (), _ => ()) + if (!includeSystemHeaders) { + val macroHeaderTempFile: File = { + val resourcePath = arithMode match { + case CCReader.ArithmeticMode.Mathematical => "tricera/headers/macros_math.h" + case CCReader.ArithmeticMode.ILP32 => "tricera/headers/macros_ilp32.h" + case CCReader.ArithmeticMode.LP64 => "tricera/headers/macros_lp64.h" + case CCReader.ArithmeticMode.LLP64 => "tricera/headers/macros_llp64.h" + } + + val inputStream = Option(getClass.getClassLoader.getResourceAsStream(resourcePath)) + .getOrElse { + throw new Main.MainException( + s"Could not find macro header for '$arithMode'. Expected in resources/$resourcePath" + ) + } + + val tmpFile = Files.createTempFile("tricera-macros-", ".h").toFile + tmpFile.deleteOnExit() + Files.copy(inputStream, tmpFile.toPath, StandardCopyOption.REPLACE_EXISTING) + inputStream.close() + tmpFile + } + + cmdLine = Seq("cpp", "-E", "-P", "-CC", "-nostdinc", "-undef") + val pipedInput = s"""#include "${macroHeaderTempFile.getAbsolutePath}"\n#include "$fileName""""" + val inputStream = new java.io.ByteArrayInputStream(pipedInput.getBytes) + (Process(cmdLine) #< inputStream #> preprocessedFile).!(errorSuppressingLogger) + } else { + cmdLine = Seq("cpp", fileName, "-E", "-P", "-CC") + (Process(cmdLine) #> preprocessedFile).!(errorSuppressingLogger) + } + } catch { + case t : Throwable => + throw new Main.MainException( + "The C preprocessor could not be executed. " + + "This might be due to cpp not being installed in the system.\n" + + "Attempted command: " + cmdLine.mkString(" ") + ) + } + preprocessedFile.getAbsolutePath + } +} diff --git a/src/main/scala/tricera/Main.scala b/src/main/scala/tricera/Main.scala index 21d206e8..6fb08795 100644 --- a/src/main/scala/tricera/Main.scala +++ b/src/main/scala/tricera/Main.scala @@ -1,5 +1,5 @@ /** - * Copyright (c) 2011-2024 Zafer Esen, Hossein Hojjat, Philipp Ruemmer. + * Copyright (c) 2011-2025 Zafer Esen, Hossein Hojjat, Philipp Ruemmer. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -273,54 +273,13 @@ class Main (args: Array[String]) { } import java.io.File - val cppFileName = if (cPreprocessor || cPreprocessorLight) { - val preprocessedFile = File.createTempFile("tri-", ".i") - preprocessedFile.deleteOnExit() - - val baseCmd = Seq("cpp", fileName, "-E", "-P", "-CC") - - val extraFlags = if (cPreprocessorLight) { - val macroHeaderTempFile: File = { - val resourcePath = arithMode match { - case CCReader.ArithmeticMode.Mathematical => "tricera/headers/macros_math.h" - case CCReader.ArithmeticMode.ILP32 => "tricera/headers/macros_ilp32.h" - case CCReader.ArithmeticMode.LP64 => "tricera/headers/macros_lp64.h" - case CCReader.ArithmeticMode.LLP64 => "tricera/headers/macros_llp64.h" - } - - val inputStream = Option(getClass.getClassLoader.getResourceAsStream(resourcePath)) - .getOrElse { - throw new Main.MainException( - s"Could not find macro header for '$arithMode'. Expected in resources/$resourcePath" - ) - } - - val tmpFile = Files.createTempFile("tricera-macros-", ".h").toFile - tmpFile.deleteOnExit() - Files.copy(inputStream, tmpFile.toPath, StandardCopyOption.REPLACE_EXISTING) - inputStream.close() - tmpFile - } - Seq("-nostdinc", "-undef", "-imacros", macroHeaderTempFile.getAbsolutePath) - } else Seq() - - val cmdLine = baseCmd ++ extraFlags - - try { - val errorSuppressingLogger = ProcessLogger(_ => (), _ => ()) - (Process(cmdLine) #> preprocessedFile).!(errorSuppressingLogger) - } catch { - case t : Throwable => - throw new Main.MainException( - "The C preprocessor could not be executed " + - (if (cPreprocessorLight) "(option -cppLight)." else "(option -cpp).") + - " This might be due to cpp not being installed in the system.\n" + - "Attempted command: " + cmdLine.mkString(" ") - ) - } - preprocessedFile.getAbsolutePath - } else fileName + // C preprocessor (cpp) + val cppFileName = + if(params.cPreprocessor || params.cPreprocessorLight) + CPreprocessor(fileName, includeSystemHeaders = params.cPreprocessor, params.arithMode) + else fileName + // TriCera preprocessor (tri-pp) preprocessTimer.start() val ppFileName: String = if (noPP) { if (printPP || dumpPP) From b81da26c27184efa888ca66fb9fc4ea97a765df8 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 2 Oct 2025 17:16:44 +0200 Subject: [PATCH 18/29] Add support for bool to -cppLight --- src/main/resources/tricera/headers/macros_ilp32.h | 7 +++++++ src/main/resources/tricera/headers/macros_llp64.h | 7 +++++++ src/main/resources/tricera/headers/macros_lp64.h | 7 +++++++ src/main/resources/tricera/headers/macros_math.h | 7 +++++++ 4 files changed, 28 insertions(+) diff --git a/src/main/resources/tricera/headers/macros_ilp32.h b/src/main/resources/tricera/headers/macros_ilp32.h index bebf10d5..782f3776 100644 --- a/src/main/resources/tricera/headers/macros_ilp32.h +++ b/src/main/resources/tricera/headers/macros_ilp32.h @@ -32,4 +32,11 @@ typedef int ptrdiff_t; #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +#ifndef __bool_true_false_are_defined +#define __bool_true_false_are_defined 1 +#define bool _Bool +#define true 1 +#define false 0 +#endif /* __bool_true_false_are_defined */ + #endif \ No newline at end of file diff --git a/src/main/resources/tricera/headers/macros_llp64.h b/src/main/resources/tricera/headers/macros_llp64.h index 21308c3c..ae93f0a1 100644 --- a/src/main/resources/tricera/headers/macros_llp64.h +++ b/src/main/resources/tricera/headers/macros_llp64.h @@ -32,4 +32,11 @@ typedef long long ptrdiff_t; #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +#ifndef __bool_true_false_are_defined +#define __bool_true_false_are_defined 1 +#define bool _Bool +#define true 1 +#define false 0 +#endif /* __bool_true_false_are_defined */ + #endif diff --git a/src/main/resources/tricera/headers/macros_lp64.h b/src/main/resources/tricera/headers/macros_lp64.h index 9033f973..575cf5e0 100644 --- a/src/main/resources/tricera/headers/macros_lp64.h +++ b/src/main/resources/tricera/headers/macros_lp64.h @@ -32,4 +32,11 @@ typedef long ptrdiff_t; #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 +#ifndef __bool_true_false_are_defined +#define __bool_true_false_are_defined 1 +#define bool _Bool +#define true 1 +#define false 0 +#endif /* __bool_true_false_are_defined */ + #endif diff --git a/src/main/resources/tricera/headers/macros_math.h b/src/main/resources/tricera/headers/macros_math.h index 33fdbfd7..a3790000 100644 --- a/src/main/resources/tricera/headers/macros_math.h +++ b/src/main/resources/tricera/headers/macros_math.h @@ -26,4 +26,11 @@ typedef unsigned int size_t; typedef int ptrdiff_t; +#ifndef __bool_true_false_are_defined +#define __bool_true_false_are_defined 1 +#define bool _Bool +#define true 1 +#define false 0 +#endif /* __bool_true_false_are_defined */ + #endif From 488723f21ab42c9e2fd2e97b26746eeac1eaf610 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Fri, 3 Oct 2025 13:04:01 +0200 Subject: [PATCH 19/29] Fixes a bug in the heap model, update opt2 encoding --- .../heap/encodings/RW-fun-tag-opt2.yml | 54 ++++++++----------- .../scala/tricera/concurrency/Symex.scala | 6 +-- .../tricera/concurrency/heap/HeapModel.scala | 2 +- .../concurrency/heap/HeapTheoryModel.scala | 8 +-- .../heap/InvariantEncodingsModel.scala | 10 ++-- 5 files changed, 34 insertions(+), 46 deletions(-) diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml index c05e0ab9..17e14306 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt2.yml @@ -7,12 +7,12 @@ global_decls: - { name: "$cnt", type: "unsigned int", initial_value: "0" } - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: "0" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value - { name: "$dirty", type: "int", initial_value: "0" } - { name: "$last_wt_loc", type: "int", initial_value: "-10" } - { name: "$last_wt_cnt", type: "int", initial_value: "0" } - - { name: "$last_addr", type: "int", initial_value: "-1" } - - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } - - { name: "$p_g", type: "int", initial_value: null } # nondet init value # Uninterpreted predicates predicates: @@ -31,8 +31,6 @@ predicates: # Initialisation code injected to the start of entry function init_code: - "$p_g = _;" -# - "$last_data = $HEAP_TYPE_DEFAULT();" -# - "assert($W(0, $HEAP_TYPE_DEFAULT()));" # Heap operations read_fn: @@ -45,26 +43,22 @@ read_fn: int t; int l; if ($last_addr == p) { - result = $last_data; + result = $last_data; } else { - if($dirty) { // cache has data, flush it - //if (0 < $last_addr && $last_addr <= $allocCtr) { - assert($W($last_wt_cnt, $last_data, $last_wt_loc)); - if ($p_g == $last_addr) { - $last_cnt = $last_wt_cnt; - $last_loc = $last_wt_loc; - } - //} + if($dirty) { // cache is dirty, flush it + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } $dirty = 0; } int t; ++$cnt; if ($p_g == p) { assert($R($cnt, $last_cnt, loc, $last_loc)); - t = $last_cnt; result = HAVOC_HEAP; - l = $last_loc; - assume($W(t, result, l)); + assume($W($last_cnt, result, $last_loc)); } else { t = HAVOC_INT; l = HAVOC_INT; @@ -85,20 +79,18 @@ write_fn: - { name: "loc", type: "int" } body: | if (p == $last_addr) { - ++$cnt; $last_data = e; + ++$cnt; $last_wt_loc = loc; $last_wt_cnt = $cnt; $dirty = 1; } else { if($dirty) { // cache has data, flush it - //if (0 < $last_addr && $last_addr <= $allocCtr) { - assert($W($last_wt_cnt, $last_data, $last_wt_loc)); - if ($p_g == $last_addr) { - $last_cnt = $last_wt_cnt; - $last_loc = $last_wt_loc; - } - //} + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } } ++$cnt; $last_addr = p; @@ -115,13 +107,11 @@ alloc_fn: - { name: "loc", type: "int" } body: | if($dirty) { // cache has data, flush it - //if (0 < $last_addr && $last_addr <= $allocCtr) { - assert($W($last_wt_cnt, $last_data, $last_wt_loc)); - if ($p_g == $last_addr) { - $last_cnt = $last_wt_cnt; - $last_loc = $last_wt_loc; - } - //} + assert($W($last_wt_cnt, $last_data, $last_wt_loc)); + if ($p_g == $last_addr) { + $last_cnt = $last_wt_cnt; + $last_loc = $last_wt_loc; + } } int p = ++$allocCtr; ++$cnt; diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index c7bcfbdb..d73e69af 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -802,7 +802,7 @@ class Symex private (context : SymexContext, private def wrapAsHeapObject(term : CCTerm) : CCTerm = context.sortWrapperMap get term.typ.toSort match { case Some(wrapper) => - CCTerm.fromTerm(wrapper(term.toTerm), term.typ, term.srcInfo) + CCTerm.fromTerm(wrapper(term.toTerm), CCHeapObject(context.heap), term.srcInfo) case None => throw new TranslationException( s"No constructor found to make ${term.typ} a heap object!") @@ -1374,7 +1374,7 @@ class Symex private (context : SymexContext, */ val allocatedAddr = processHeapResult( - heapModel.alloc(objectTerm, values, getStaticLocationId(exp))).get + heapModel.alloc(wrapAsHeapObject(objectTerm), objectTerm.typ, values, getStaticLocationId(exp))).get pushVal(allocatedAddr) case CCTerm(sizeExp, typ, _, _) if typ.isInstanceOf[CCArithType] => @@ -1435,7 +1435,7 @@ class Symex private (context : SymexContext, }, typ, srcInfo) val allocatedAddr = processHeapResult( - heapModel.alloc(objectTerm, values, getStaticLocationId(exp))).get + heapModel.alloc(wrapAsHeapObject(objectTerm), objectTerm.typ, values, getStaticLocationId(exp))).get pushVal(allocatedAddr) case _ => diff --git a/src/main/scala/tricera/concurrency/heap/HeapModel.scala b/src/main/scala/tricera/concurrency/heap/HeapModel.scala index ca6af184..fc1f0bce 100644 --- a/src/main/scala/tricera/concurrency/heap/HeapModel.scala +++ b/src/main/scala/tricera/concurrency/heap/HeapModel.scala @@ -141,7 +141,7 @@ trait HeapModel { def read (p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult def write(p : CCTerm, o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult - def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult + def alloc(o : CCTerm, oType : CCType, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult def free (p : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult /** diff --git a/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala index af1404b5..5f556257 100644 --- a/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala +++ b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala @@ -126,14 +126,13 @@ class HeapTheoryModel(context : SymexContext, ) } - override def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { - val objTerm = context.sortWrapperMap(o.typ.toSort)(o.toTerm) - val newAlloc = context.heap.alloc(getValue(heapVar, s).toTerm, objTerm) + override def alloc(o : CCTerm, oType : CCType, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { + val newAlloc = context.heap.alloc(getValue(heapVar, s).toTerm, o.toTerm) val newHeapTerm = CCTerm.fromTerm(context.heap.newHeap(newAlloc), CCHeap(context.heap), o.srcInfo) val newAddrTerm = CCTerm.fromTerm(context.heap.newAddr(newAlloc), - CCHeapPointer(context.heap, o.typ), + CCHeapPointer(context.heap, oType), o.srcInfo) var nextState = updateValue(heapVar, newHeapTerm, s) @@ -299,6 +298,7 @@ class HeapTheoryModel(context : SymexContext, size : ITerm, arrayLoc : ArrayLocation.Value, s : Seq[CCTerm]) : HeapOperationResult = { + // TODO: remvoe the wrappers from here too! val newBatchAlloc = context.heap.batchAlloc(getValue(heapVar, s).toTerm, context.sortWrapperMap(o.typ.toSort)(o.toTerm), size) diff --git a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala index ea15b32a..1110ade1 100644 --- a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -225,14 +225,12 @@ class InvariantEncodingsModel(context : SymexContext, ) } - override def alloc(o : CCTerm, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { - val wrappedObj = CCTerm.fromTerm( // TODO: Symex should be responsible for wrap/unwrap - context.sortWrapperMap(o.typ.toSort)(o.toTerm), o.typ, o.srcInfo) + override def alloc(o : CCTerm, oType : CCType, s : Seq[CCTerm], loc : CCTerm) : HeapOperationResult = { FunctionCall( functionName = allocFnName, - args = Seq(wrappedObj, loc), - resultType = CCHeapPointer(context.heap, wrappedObj.typ), - sourceInfo = wrappedObj.srcInfo + args = Seq(o, loc), + resultType = CCHeapPointer(context.heap, oType), + sourceInfo = o.srcInfo ) } From add32c572b5df02315ee807b74458ca7367c61ef Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Fri, 3 Oct 2025 13:05:37 +0200 Subject: [PATCH 20/29] Add mem safety assumption when not checking mem safety --- src/main/scala/tricera/concurrency/Symex.scala | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index d73e69af..949d520e 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -832,11 +832,16 @@ class Symex private (context : SymexContext, Some(callFunction(call.functionName, call.args, call.sourceInfo)) case call : HeapModel.FunctionCallWithGetter => val callResult = callFunction(call.functionName, call.args, call.sourceInfo) -// if(!context.propertiesToCheck.contains(properties.MemValidDeref)) { -// val safetyFormula = context.heap.heapADTs.hasCtor( -// callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) -// addGuard(safetyFormula) -// } + val canAssumeMemorySafety = TriCeraParameters.get.invEncoding match { + case Some(enc) => enc contains "-fun-" + case None => false + } + if(canAssumeMemorySafety || + !context.propertiesToCheck.contains(properties.MemValidDeref)) { + val safetyFormula = context.heap.heapADTs.hasCtor( + callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) + addGuard(safetyFormula) + } Some(CCTerm.fromTerm(call.getter(callResult.toTerm), call.resultType, call.sourceInfo)) From 2af7496e91a4c16d57425d3ab4c490fc61de0f9b Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Fri, 3 Oct 2025 14:06:55 +0200 Subject: [PATCH 21/29] Fix a bug introduced in last commit when checking memsafety --- src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala index 5f556257..296079d6 100644 --- a/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala +++ b/src/main/scala/tricera/concurrency/heap/HeapTheoryModel.scala @@ -177,8 +177,9 @@ class HeapTheoryModel(context : SymexContext, CCHeap(context.heap), o.srcInfo) + val ptrType = p.typ.asInstanceOf[CCHeapPointer].typ val safetyFormula = CCTerm.fromFormula( - context.heap.heapADTs.hasCtor(curO.toTerm, context.sortCtorIdMap(o.typ.toSort)), + context.heap.heapADTs.hasCtor(curO.toTerm, context.sortCtorIdMap(ptrType.toSort)), CCInt, p.srcInfo) assertions = (safetyFormula, properties.MemValidDeref) :: assertions assumptions = safetyFormula :: assumptions From 95a90ca1a17bf50d09dddc39aef4935490e78e88 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Mon, 6 Oct 2025 10:36:24 +0200 Subject: [PATCH 22/29] Invariant encoding: add R-opt, R-tag-opt, RW-tag-opt. Clean up the other encodings. --- .../tricera/heap/encodings/R-opt.yml | 81 ++++++++++++++ .../tricera/heap/encodings/R-tag-opt.yml | 93 ++++++++++++++++ .../tricera/heap/encodings/RW-fun-opt.yml | 10 +- .../tricera/heap/encodings/RW-fun-tag-opt.yml | 14 +-- .../tricera/heap/encodings/RW-fun-tag.yml | 12 +- .../tricera/heap/encodings/RW-fun.yml | 6 +- .../tricera/heap/encodings/RW-tag-opt.yml | 104 ++++++++++++++++++ 7 files changed, 295 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/tricera/heap/encodings/R-opt.yml create mode 100644 src/main/resources/tricera/heap/encodings/R-tag-opt.yml create mode 100644 src/main/resources/tricera/heap/encodings/RW-tag-opt.yml diff --git a/src/main/resources/tricera/heap/encodings/R-opt.yml b/src/main/resources/tricera/heap/encodings/R-opt.yml new file mode 100644 index 00000000..518e32fe --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/R-opt.yml @@ -0,0 +1,81 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last", type: "HEAP_TYPE", initial_value: null } + - { name: "$last_addr", type: "unsigned int", initial_value: null } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last", type: "HEAP_TYPE" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "$last = $HEAP_TYPE_DEFAULT();" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + ++$cnt; + if ($last_addr == p) { + result = $last_data; + } else { + if ($p_g == p) { + assert($R($cnt, $last)); + result = $last; + } else { + result = HAVOC_HEAP; + assume($R($cnt, result)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + $last_addr = p; + $last_data = e; + if ($p_g == p) { $last = e; } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + $last_addr = p; + $last_data = e; + if ($p_g == p) { $last = e; } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/R-tag-opt.yml b/src/main/resources/tricera/heap/encodings/R-tag-opt.yml new file mode 100644 index 00000000..d1d9d0fe --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/R-tag-opt.yml @@ -0,0 +1,93 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last", type: "HEAP_TYPE", initial_value: null } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: null } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last", type: "HEAP_TYPE" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "$last = $HEAP_TYPE_DEFAULT();" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int l; + ++$cnt; + if ($last_addr == p) { + result = $last_data; + } else { + if ($p_g == p) { + assert($R($cnt, $last, loc, $last_loc)); + result = $last; + } else { + result = HAVOC_HEAP; + l = HAVOC_INT; + assume($R($cnt, result, loc, l)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last = e; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml b/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml index c000e6a7..1e7cac72 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-opt.yml @@ -61,12 +61,10 @@ write_fn: - { name: "loc", type: "int" } body: | ++$cnt; - //if (0 < p && p <= $allocCtr) { - $last_addr = p; - $last_data = e; - assert($W($cnt, e)); - if ($p_g == p) { $last_cnt = $cnt; } - //} + $last_addr = p; + $last_data = e; + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } alloc_fn: return_type: "PTR_TYPE" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml index 7cd7b657..4d2371b2 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt.yml @@ -68,14 +68,12 @@ write_fn: - { name: "loc", type: "int" } body: | ++$cnt; - if (0 < p && p <= $allocCtr) { - assert($W($cnt, e, loc)); - $last_addr = p; - $last_data = e; - if ($p_g == p) { - $last_cnt = $cnt; - $last_loc = loc; - } + assert($W($cnt, e, loc)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; } alloc_fn: diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml index 3c70c5c3..bbfd1d28 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag.yml @@ -57,13 +57,11 @@ write_fn: - { name: "loc", type: "int" } body: | ++$cnt; - //if (0 < p && p <= $allocCtr) { - assert($W($cnt, e, loc)); - if ($p_g == p) { - $last_cnt = $cnt; - $last_loc = loc; - } - //} + assert($W($cnt, e, loc)); + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } alloc_fn: return_type: "PTR_TYPE" diff --git a/src/main/resources/tricera/heap/encodings/RW-fun.yml b/src/main/resources/tricera/heap/encodings/RW-fun.yml index fe1de3d9..af61f379 100644 --- a/src/main/resources/tricera/heap/encodings/RW-fun.yml +++ b/src/main/resources/tricera/heap/encodings/RW-fun.yml @@ -54,10 +54,8 @@ write_fn: - { name: "loc", type: "int" } body: | ++$cnt; - if (0 < p && p <= $allocCtr) { - assert($W($cnt, e)); - if ($p_g == p) { $last_cnt = $cnt; } - } + assert($W($cnt, e)); + if ($p_g == p) { $last_cnt = $cnt; } alloc_fn: return_type: "PTR_TYPE" diff --git a/src/main/resources/tricera/heap/encodings/RW-tag-opt.yml b/src/main/resources/tricera/heap/encodings/RW-tag-opt.yml new file mode 100644 index 00000000..abf52423 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-tag-opt.yml @@ -0,0 +1,104 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: "0" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + - "assert($W(0, $HEAP_TYPE_DEFAULT(), -1));" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int t; + int l; + if ($last_addr == p) { + result = $last_data; + } else { + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc)); + t = $last_cnt; + result = HAVOC_HEAP; + assume($W(t, result, $last_loc)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l)); + result = HAVOC_HEAP; + assume($W(t, result, l)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + if (0 < p && p <= $allocCtr) { + assert($W($cnt, e, loc)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e, loc)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" From 1a4e552c705cac53d6f2fd45f8e5fd68caa11459 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Fri, 10 Oct 2025 19:43:28 +0200 Subject: [PATCH 23/29] Inv encoding: variant that adds p to the invariants --- .../heap/encodings/RW-fun-tag-opt-p.yml | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 src/main/resources/tricera/heap/encodings/RW-fun-tag-opt-p.yml diff --git a/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt-p.yml b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt-p.yml new file mode 100644 index 00000000..b2527e45 --- /dev/null +++ b/src/main/resources/tricera/heap/encodings/RW-fun-tag-opt-p.yml @@ -0,0 +1,103 @@ +# Pointer type +ptr_type: "int" + +# Global variables +global_decls: + - { name: "$allocCtr", type: "int", initial_value: "0" } + - { name: "$cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_cnt", type: "unsigned int", initial_value: "0" } + - { name: "$last_loc", type: "int", initial_value: "0" } + - { name: "$last_addr", type: "unsigned int", initial_value: "0" } + - { name: "$last_data", type: "HEAP_TYPE", initial_value: null } + - { name: "$p_g", type: "int", initial_value: null } # nondet init value + +# Uninterpreted predicates +predicates: + - name: "$R" + args: + - { name: "cnt", type: "int" } + - { name: "last_cnt", type: "int" } + - { name: "read_loc", type: "int" } + - { name: "write_loc", type: "int" } + - { name: "ptr", type: "int" } + - name: "$W" + args: + - { name: "last_cnt", type: "int" } + - { name: "o", type: "HEAP_TYPE" } + - { name: "write_loc", type: "int" } + - { name: "ptr", type: "int" } + +# Initialisation code injected to the start of entry function +init_code: + - "$p_g = _;" + +# Heap operations +read_fn: + return_type: "HEAP_TYPE" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: | + HEAP_TYPE result; + int t; + int l; + if ($last_addr == p) { + result = $last_data; + } else { + ++$cnt; + if ($p_g == p) { + assert($R($cnt, $last_cnt, loc, $last_loc, p)); + t = $last_cnt; + result = HAVOC_HEAP; + assume($W(t, result, $last_loc, p)); + } else { + t = HAVOC_INT; + l = HAVOC_INT; + assume($R($cnt, t, loc, l, p)); + result = HAVOC_HEAP; + assume($W(t, result, l, p)); + } + $last_addr = p; + $last_data = result; + } + return result; + +write_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + ++$cnt; + assert($W($cnt, e, loc, p)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + +alloc_fn: + return_type: "PTR_TYPE" + args: + - { name: "e", type: "HEAP_TYPE" } + - { name: "loc", type: "int" } + body: | + int p = ++$allocCtr; + ++$cnt; + assert($W($cnt, e, loc, p)); + $last_addr = p; + $last_data = e; + if ($p_g == p) { + $last_cnt = $cnt; + $last_loc = loc; + } + return p; + +free_fn: + return_type: "void" + args: + - { name: "p", type: "PTR_TYPE" } + - { name: "loc", type: "int" } + body: "" From 84b3ceceeb3d9f7b7f73331bb4c42215f82d4cf5 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 16 Oct 2025 14:44:35 +0200 Subject: [PATCH 24/29] Fix bug introduced during merge --- .../scala/tricera/concurrency/heap/InvariantEncodingsModel.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala index 1110ade1..ff9fee26 100644 --- a/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingsModel.scala @@ -284,6 +284,7 @@ class InvariantEncodingsModel(context : SymexContext, override def declUninitializedArray(arrayTyp : CCHeapArrayPointer, size : Option[ITerm], isGlobalOrStatic : Boolean, + forceNondetInit : Boolean, s : Seq[CCTerm]) : HeapOperationResult = { ??? } From 34c9389bd3bd92f059f5f8c8dc2bf83f0a6d8081 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Thu, 16 Oct 2025 16:32:11 +0200 Subject: [PATCH 25/29] Answers --- regression-tests/horn-hcc-array/Answers | 12 ------------ regression-tests/horn-hcc/Answers | 6 +++--- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/regression-tests/horn-hcc-array/Answers b/regression-tests/horn-hcc-array/Answers index 24e7880e..2abd9cf1 100644 --- a/regression-tests/horn-hcc-array/Answers +++ b/regression-tests/horn-hcc-array/Answers @@ -222,9 +222,6 @@ nondet-global-array-explicit-2.c SAFE nondet-global-array-explicit-3.c -Warning: The following clause has different terms with the same name (term: _) -main5_5(newBatchHeap(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5)), newAddrRange(batchAlloc(@h, O_Int(_), 5)), newAddrRange(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5))). - SAFE nondet-static-array-explicit-1.c @@ -250,9 +247,6 @@ nondet-static-array-explicit-2.c SAFE nondet-static-array-explicit-3.c -Warning: The following clause has different terms with the same name (term: _) -main3_5(newBatchHeap(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5)), newAddrRange(batchAlloc(@h, O_Int(_), 5)), newAddrRange(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5))). - SAFE simple-global-memsafety1.c @@ -321,9 +315,6 @@ nondet-global-array-opt-2.c SAFE nondet-global-array-opt-3.c -Warning: The following clause has different terms with the same name (term: _) -main7_5(newBatchHeap(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5)), newAddrRange(batchAlloc(@h, O_Int(_), 5)), newAddrRange(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5))). - SAFE nondet-static-array-opt-1.c @@ -349,7 +340,4 @@ nondet-static-array-opt-2.c SAFE nondet-static-array-opt-3.c -Warning: The following clause has different terms with the same name (term: _) -main4_5(newBatchHeap(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5)), newAddrRange(batchAlloc(@h, O_Int(_), 5)), newAddrRange(batchAlloc(newBatchHeap(batchAlloc(@h, O_Int(_), 5)), O_Int(_), 5))). - SAFE diff --git a/regression-tests/horn-hcc/Answers b/regression-tests/horn-hcc/Answers index 41927b59..341bc9ec 100644 --- a/regression-tests/horn-hcc/Answers +++ b/regression-tests/horn-hcc/Answers @@ -189,7 +189,7 @@ Final: main5_1(0, 1, 1) ------------------ Failed assertion: -false :- main5_1(x:10, y:11, __eval5_7:5), __eval5_7:5 != 0. (line:13 col:3) (property: user-assertion) +false :- main5_1(x:10, y:11, __eval5_10:5), __eval5_10:5 != 0. (line:13 col:3) (property: user-assertion) UNSAFE @@ -211,7 +211,7 @@ Final: main13_16(2, 1, 2, 1) ----------------------- Failed assertion: -false :- main13_16(x:10, y:11, __eval10_13:10, ite_13_16:1), __eval10_13:10 != ite_13_16:1. (line:13 col:3) (property: user-assertion) +false :- main13_16(x:10, y:11, __eval10_19:10, ite_13_16:1), __eval10_19:10 != ite_13_16:1. (line:13 col:3) (property: user-assertion) UNSAFE @@ -233,7 +233,7 @@ Final: main15_16(2, 1, 2, 1) ----------------------- Failed assertion: -false :- main15_16(x:12, y:13, __eval12_15:12, ite_15_16:1), __eval12_15:12 != ite_15_16:1. (line:15 col:3) (property: user-assertion) +false :- main15_16(x:12, y:13, __eval12_21:12, ite_15_16:1), __eval12_21:12 != ite_15_16:1. (line:15 col:3) (property: user-assertion) UNSAFE From c16c7cb99ca15c543fe1bf631dc43498020e8c96 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Sun, 1 Feb 2026 22:30:30 +0100 Subject: [PATCH 26/29] Fix errors from merge --- src/main/scala/tricera/concurrency/CCReader.scala | 2 +- src/main/scala/tricera/concurrency/Symex.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/tricera/concurrency/CCReader.scala b/src/main/scala/tricera/concurrency/CCReader.scala index 04c1c935..86037399 100644 --- a/src/main/scala/tricera/concurrency/CCReader.scala +++ b/src/main/scala/tricera/concurrency/CCReader.scala @@ -618,7 +618,7 @@ class CCReader private (prog : Program, if (TriCeraParameters.get.invEncoding.nonEmpty) HeapObj.OtherSort(Sort.Integer) else - Heap.AddressSort + HeapObj.AddrSort } else { fieldType match { case Left(ind) => HeapObj.ADTSort(ind + 1) case Right(typ) => diff --git a/src/main/scala/tricera/concurrency/Symex.scala b/src/main/scala/tricera/concurrency/Symex.scala index c5f41fe3..a26e47d5 100644 --- a/src/main/scala/tricera/concurrency/Symex.scala +++ b/src/main/scala/tricera/concurrency/Symex.scala @@ -852,7 +852,7 @@ class Symex private (context : SymexContext, } if(canAssumeMemorySafety || !context.propertiesToCheck.contains(properties.MemValidDeref)) { - val safetyFormula = context.heap.heapADTs.hasCtor( + val safetyFormula = context.heap.hasUserHeapCtor( callResult.toTerm, context.sortCtorIdMap(call.resultType.toSort)) addGuard(safetyFormula) } From fcae8206d01673da67b1d4f5e3719289696dafd4 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Sun, 1 Feb 2026 23:32:18 +0100 Subject: [PATCH 27/29] Include cpp headers in native image --- build.sbt | 3 ++- src/main/scala/tricera/CPreprocessor.scala | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 774b42ac..5f606614 100644 --- a/build.sbt +++ b/build.sbt @@ -125,7 +125,8 @@ settings( nativeImageOptions ++= Seq( "--no-fallback", "-H:+ReportExceptionStackTraces", - "--allow-incomplete-classpath" + "--allow-incomplete-classpath", + "-H:IncludeResources=tricera/headers/.*" ), nativeImageAgentMerge := true diff --git a/src/main/scala/tricera/CPreprocessor.scala b/src/main/scala/tricera/CPreprocessor.scala index b32efcf6..b8665e69 100644 --- a/src/main/scala/tricera/CPreprocessor.scala +++ b/src/main/scala/tricera/CPreprocessor.scala @@ -84,7 +84,7 @@ object CPreprocessor { throw new Main.MainException( "The C preprocessor could not be executed. " + "This might be due to cpp not being installed in the system.\n" + - "Attempted command: " + cmdLine.mkString(" ") + "Attempted command: " + (if (cmdLine != null) cmdLine.mkString(" ") else "N/A") ) } preprocessedFile.getAbsolutePath From dc645d1513839b42ca20bfc4634583d12fb0df5f Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Mon, 2 Feb 2026 09:22:10 +0100 Subject: [PATCH 28/29] Include heap encodings in native image --- build.sbt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 5f606614..b662c9ee 100644 --- a/build.sbt +++ b/build.sbt @@ -126,7 +126,8 @@ settings( "--no-fallback", "-H:+ReportExceptionStackTraces", "--allow-incomplete-classpath", - "-H:IncludeResources=tricera/headers/.*" + "-H:IncludeResources=tricera/headers/.*", + "-H:IncludeResources=tricera/heap/encodings/.*" ), nativeImageAgentMerge := true From d9ccb02d291d46d6c94e146df54e5908689b08a4 Mon Sep 17 00:00:00 2001 From: Zafer Esen Date: Mon, 2 Feb 2026 10:32:14 +0100 Subject: [PATCH 29/29] Add reflect config for invariant encoding parser --- .../uuverifiers/tricera/reflect-config.json | 45 +++++++++++++++++++ .../heap/InvariantEncodingParser.scala | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/main/resources/META-INF/native-image/uuverifiers/tricera/reflect-config.json b/src/main/resources/META-INF/native-image/uuverifiers/tricera/reflect-config.json index b1e5dcc7..7de02bac 100644 --- a/src/main/resources/META-INF/native-image/uuverifiers/tricera/reflect-config.json +++ b/src/main/resources/META-INF/native-image/uuverifiers/tricera/reflect-config.json @@ -1,4 +1,49 @@ [ + { + "name": "tricera.concurrency.heap.InvariantEncodingParser$Declaration", + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "tricera.concurrency.heap.InvariantEncodingParser$Argument", + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "tricera.concurrency.heap.InvariantEncodingParser$Predicate", + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "tricera.concurrency.heap.InvariantEncodingParser$FunctionDef", + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, + { + "name": "tricera.concurrency.heap.InvariantEncodingParser$ParsedEncoding", + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredConstructors": true, + "allPublicConstructors": true + }, { "name": "ap.parser.IAtom[]" }, diff --git a/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala b/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala index fe49e3b6..7c37e632 100644 --- a/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala +++ b/src/main/scala/tricera/concurrency/heap/InvariantEncodingParser.scala @@ -49,7 +49,7 @@ object InvariantEncodingParser { } catch { case e: Throwable => throw new TranslationException(s"Failed to parse encoding file for " + - s"'$encodingName': ${e.getMessage}") + s"'$encodingName': $e") } finally { source.close() }