From cb4f82eac936d00f4a4d9fd7f4f1776e278d5e4a Mon Sep 17 00:00:00 2001 From: Bart Jablonski Date: Wed, 6 Sep 2023 23:09:40 +0200 Subject: [PATCH] The macroArray package [ver. 1.1.0] The macroArray package [ver. 1.1.0] New parameter in the `%array()` macro: * `q=` - *Optional*, indicates (when set to `1`) if the value be surrounded by quotes. It uses `quote(cats(...))` combo under the hood. Default value is `0`. Ignored for `macarray=M`. --- packages/README.md | 4 ++-- packages/SHA256_for_packages.txt | 3 +++ packages/macroarray.md | 39 +++++++++++++++++-------------- packages/macroarray.zip | Bin 51548 -> 51814 bytes 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/README.md b/packages/README.md index 48ed746..ab654a5 100644 --- a/packages/README.md +++ b/packages/README.md @@ -61,7 +61,7 @@ SHA256 digest for DFA: F*09EA5201360922A91A9EEE72F4567792E9CFDFB591BA33419E2BF2B --- -- **macroArray**\[1.0.6\], implementation of an array concept in a macro language, e.g. +- **macroArray**\[1.1.0\], implementation of an array concept in a macro language, e.g. ```sas %array(ABC[17] (111:127), macarray=Y); @@ -80,7 +80,7 @@ SHA256 digest for DFA: F*09EA5201360922A91A9EEE72F4567792E9CFDFB591BA33419E2BF2B which = 1:H:2 ); ``` -SHA256 digest for macroArray: F*4FAAEE7DF2854EA31933AE017A89C1615C7291A66A07CCE345041EB0D587ED4E +SHA256 digest for macroArray: F*6A22A01868F4203862B3685F543D723C7DB8E9AB3C1A6357D2BFA030971B0D3C [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index a92fc15..368aa25 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,6 @@ +/* 20230906 */ +macroArray: F*6A22A01868F4203862B3685F543D723C7DB8E9AB3C1A6357D2BFA030971B0D3C + /* 20230904 */ BasePlus: F*2FE68DD9B3692B9D46EF85B82F63C7E65010BF9E89D670FD1779F4670FA03F31 DFA: F*09EA5201360922A91A9EEE72F4567792E9CFDFB591BA33419E2BF2B31D9B7C62 diff --git a/packages/macroarray.md b/packages/macroarray.md index 7f2e20e..fdeb46d 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -278,6 +278,7 @@ The basic syntax is the following, the `<...>` means optional parameters: <,macarray=N> <,ds=> <,vars=> + <,q=> ) ~~~~~~~~~~~~~~~~~~~~~~~ @@ -312,8 +313,8 @@ The basic syntax is the following, the `<...>` means optional parameters: `%array(myArr[*] x1-x3 (4:6), vnames=Y)` will use `x1`, `x2`, and `x3` as values instead `4`, `5`, and `6`. -* `macarray=N` - *Optional*, default value `N`, if set to `Y`/`YES` then macro named with array - name is compiled to create convenient envelope for multiple ampersands, e.g. +* `macarray=N` - *Optional*, default value `N`, if set to `Y`/`YES` then a macro, named with the array + name, is compiled to create convenient envelope for multiple ampersands, e.g. `%array(myArr[*] x1-x3 (4:6), macarray=Y)` will create `%myArr(J)` macro which will allow to extract "data" from macroarray like: @@ -325,8 +326,8 @@ The basic syntax is the following, the `<...>` means optional parameters: macrovariables with prefix like the array name and numeric suffixes, then the minimum and the maximum index is determined and all not existing global macrovariables are created and - a macro is generated in the same way as for the `Y` value - + a macro is generated in the same way as for the `Y` value. + * `ds=` - *Optional*, use a dataset as a basis for a macroarray data, if used by default overwrites use of the `array` parameter, honors `macarray=` argument, dataset options are allowed, e.g. `sashelp.class(obs=5)` @@ -343,23 +344,27 @@ The basic syntax is the following, the `<...>` means optional parameters: 2) macroarray "WEIGHT" with ALL(no separator is equivalent to #) values of variable "weight"
3) macroarray "W" with UNIQUE(|) values of variable "weight" and
- 4) macroarray "AGE" with UNIQUE(|) values of variable "age", - + 4) macroarray "AGE" with UNIQUE(|) values of variable "age". + +* `q=` - *Optional*, indicates (when set to `1`) if the value be surrounded by quotes. + It uses `quote(cats(...))` combo under the hood. Default value is `0`. + Ignored for `macarray=M`. +--- ### EXAMPLES AND USECASES: #################################################### **EXAMPLE 1.** Basic use-case. - Creating macroarray like in the array statement; - values are used by default; - different types of brackets are allowed; + Creating macroarray like in the array statement. + Values not variables names are used by default. + Different types of brackets are allowed. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas %array(a[*] x1-x5 (1:5)) - %array(b{5} (5*17)) + %array(b{5} (5*17), q=1) %* Mind the $ since it is a character array!; %array(c(3) $ 10 ("a A" "b,B" "c;C")) @@ -405,7 +410,7 @@ The basic syntax is the following, the `<...>` means optional parameters: %put &=g0. &=g1. &=g2.; %* Or something more complex; - %array(gg[0:11] $ 11, function = put(intnx("MONTH", '1jun2018'd, _I_, "E"), yymmn.)) + %array(gg[0:11] $ 11, function = put(intnx("MONTH", '1jun2018'd, _I_, "E"), yymmn.), q=1) %put &=ggLBOUND. &=ggHBOUND. &=ggN.; %put &=gg0 &=gg1 &=gg2 ... &=gg11; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -433,10 +438,10 @@ The basic syntax is the following, the `<...>` means optional parameters: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -**EXAMPLE 6a.** "Uppercas Letters" +**EXAMPLE 6a.** Quoted "Uppercas Letters" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %array(UL[26] $, function = byte(rank("A")+_I_-1) ) + %array(UL[26] $, function = byte(rank("A")+_I_-1) , q=1) %put &=UL1 &=UL2 ... &=UL25 &=UL26; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -451,7 +456,7 @@ The basic syntax is the following, the `<...>` means optional parameters: %* The range handling, warning; %put *%ll(265)*; - + %* The input mode; %put *before:*%ll(2)*; %let %ll(2,I) = bbbbb; @@ -576,10 +581,10 @@ The basic syntax is the following, the `<...>` means optional parameters: Currently the only separator in VARS is a space. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~sas - %array(ds = sashelp.class, vars = height#h weight weight|w age|) + %array(ds = sashelp.class, vars = height#h weight weight|w age|, q=1) %put _user_; - %array(ds = sashelp.class, vars = height#hght weight weight|wght age|, macarray=Y) + %array(ds = sashelp.class, vars = height#hght weight weight|wght age|, macarray=Y, q=1) %put *%hght(&hghtLBOUND.)**%weight(2)**%wght(&wghtHBOUND.)**%age(3)*; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -599,7 +604,7 @@ The basic syntax is the following, the `<...>` means optional parameters: %let myTest6 = 16; %let myTest9 = 19; - %array(myTest, macarray=M) + %array(myTest, macarray=M, q=1) %do_over(myTest, phrase = %nrstr(%put *&_I_.*%myTest(&_I_.)*;)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/packages/macroarray.zip b/packages/macroarray.zip index a047b7b0b5c812282db438e7258347e5bbe8706a..411c831f9af6d0d2ede276746f281b6e17a0bff6 100644 GIT binary patch delta 16713 zcmZ|01C%9A(=NK(w%yaVZQI7QZ5z97ThsQmF>TxSv~9b4`po-&=iKvucimg7YFA|J zs3#&a*NV!@$oQQEc9a5!rX&jnjt&3-paJA96q?oazSF#kXq-TyuiYJEA>-BQcE#Xz zbX8o3M<&X^OANc<{DO)`@n{nEqz2M&s}9@Bce)EDQXDCDAm`;igj=^)+6S%Y|ETDpNEf#|UGCtg#D#L;uesZKt*wP_wTo4h|ff=_&zu3W7*nkJb;ejeq- zcU)_F&NIJgeuE#@Q(6zCDZWr)8|Nv-ugajCC3RpD9mVG4VF^q90%;Q{a!hiRAPo1y z*QIP7CO01cqnfx?RPQSNt@EPi;_D^Fk!U0eHr*1fABP;MzX9uS!P>5r4a-HdW?Q|) z7##z%cFe>3hhshh=I|t1QQQap6sb>HJMZT%nl1AWPA zjzTd9PT_sEJZboDQ1AZeE|AelfK*#LFcB?3m&l#eP@^C2foM+kh`StQ%No+JQm>jy zNp=7B2nGOV$Q9i-4f`v5%n3W$Wg*mPTE0yoZ1>tgMwxl8PrENIY;>;r-@k=)1!B$U z=B}f8@c3B6+Q>3Ad^Zjof6cY0X`%?_-WP$@oL}>Cd>6IjRAQF9vGm3qisnNgGi)%rouIF|i0I)p!J! zr5~q%`;Io9n$}OjDSYnj1}35TOGLE*Ro)Z6@RsXsHFOb8)a*e{=v|0&16fvr(&eDu z6hFO=j>cL*mPOeNG?m6{-fkAJMUiB?e~PIlqMRP5Rz^YTJd2~G#rMuqO9TSK4rbEO zPE~_h9G*;q+5lFo0i6bykb2Toy2D1Yk5=8AWi^Reg|6$y{UK{U#MLo~hp=5iwq+AS zB2#11!|!{s7%a8CPgU9^(i^veHO@PPdIy#=8aT#z+G*?)P(K<)rzqMC z`^Jg%6I+sbdH{-dbtHI4;;qSgEflEeE{V032zSx5o5_(?y-kDt-1KVfvw^F^gJw%% zWg$KuR$%s!JL=^S9-3nJoV;iA>G;E3Lq_U6KD_^|LV+~iIU_5`mL$YXKX>LXTiahd z{qSSYS|1&VQPX%!=@0n7{!{#Q`!`s3SuPj=@QDNfpaReVR*iAcQ(!Rv{KY;59s48M z6rKyTt}i(kUIl26pmPf(>>Q>uLiu!Eb!9L-%h@jz-x$cAJCMPvhY9X@q5 z=Rg#P8~ZxYnp^W!T{!QJRLZ@XGX~4yGu+(^dIXkSlJp}c-~K=ova_6?Prxt4d$iXs603(xNr?> ziR&L`&LiKo=dUvNJHO+t2NzS3&4F%W76sOkBYn?$A2d1A`VHsGsvJu+75{T8o|#UG zoyFV(OMn%q^e7q3N^n?d|EB*#KC^^XmKA&3WA!<6cSmb`7e5z%0er%JH!U!7clcqG zE$kVle^$}Ld@er8$m&SW0y)gJcQ2%k#;bZ-y{1>7(8cG-vg(u@9hGqNfaH=5<5A+P zC~ezxEdBTM)HzSwrDFwb2KIbtv1x=bywNDf%J&N(JdQ_X?(A6bG=R;ArJ3Hmty5)> z(U-50?RAiF(w^}EFn}32Hm5iWwqMZ0#LLvFJ5J*bj!og9xM-2#EhvY#Ik-NF>qkH* zEE@9(+X~<8rWV7#NMtwreXuwGx4{z8e*SdqC{`G6kkRvCye^SwdT{e+R^lvas|R_XtnC^yX&R#q7fU3_0m}IG8hV|M6%yNL z0KYzZ6}15je3c)mO^7dBCrQf@ITJv3-`sqV8Nf7s_1kBj$UpGN;d&*S`FcLnyb>|k zCv{uYK!c+XTQ5=c&Fx35)81RZzA21bl13j;C%`EPy{bxf9dp185!+AuthQJTU(`{Q z&`$L9=^g%OV&}cY+ix6KaZh;fvH?Nf&zh!tictIk=qY74J%2++$q20y;!=Y>&f%-R zHnZr}t-U{9o19%i_%0ch3*fPC;iX~qCW=X+2dN|nhZ*ARY?Ypt+Sx{hHI_f(g&V%e zDL(?qNvmiK9i8QOV8Z1uBq77DOUmgW7+`JUj?v&NNfWG_vyzdKNtEKO2us6)5};_c zQzjRtE~Fjt$SOw$-`J18s2r#j1^{fWmXTKD5KulghKouJa+|~o)bi?VSeg(u4dkcWt%Ur@~$#bVT++GV%gC%t+tNXZY8IUiZ(il#{NP$%H-wb$v* z`!$MtYpqEPdmGz}jpG{kl|L^L{Qf%arG&cWEha6TWN{=Hy~kzK&^vUQ&7@Lf z%HWdG24iWN)if~4?JpBKI0G1QkrrdBAZZkI)}K=TNnwXVNG$}KLRej(GO$}wrDSSR zmE362#k6*&h$){jA>%;GJj}9%nXyugWUDC)GTsWbXcX?E{pp>(^RWuG(38$W;H2{p z{>N4sUWbo;WdV*4(C{gwYr!3?cG=(~eS+t%NxZjsW z6NfLOn|cW+V?54Pji(Tw6kV{foGGb(Jgw1hDHGtZ2Ha1HlzV0oDTrm*@_!N~d7956 z8oRCLCk{2%!b$f=ZX}=gvf?;jxkY3k#%|v*`U27=vh|#>1-WUs^{e4OcKLsF>|{xgoph{1(xbW2rcNo|mnk<%Z4hw6L_H<rVKu_DjBV!lCy6VM%}7R=rNQ! z;U=VL&H;U7^4On`sx{ULzochh@^f`Y9dvR&(Yz30Vt9|6a07WUt0gtsusRDds%nV! z7s4n`NS|-!n@G7;Jp4$F1>y5d&?(D8a#)wap=Hc0z^1hWt9N|WY=Jt(p?wNsr;H@e zJizZUSFzaje06>QXIM@6yeOLh29YtO3Em^``#8Gpejy#vrfr~*s}!X#jLmi4@roPO zwY>UscQ=vE#B&`|ReJDz$n$hp@tn?VcgU||vq&)E+^yYmfE!~|d+sl~!uo@}%CR&3 z@rpTrAVcR_#jJo+$RaH+V@TReAM+Ws>6N%bmE2 z^D7##$hf13PL|O+`BNYNXZFfj2pX<+jNQWHZF*y!@U}kgoAJ#`iKbXdikvixcwSt^ zUU_5m)^YSuQQD+}SI(Ty42L4&4!&82bBjk7@X=hedtS)Zw-vMas`?L=Oi0X+{DF0r zl?!Sc*@MC9P%>W`>TL?3{sRx?X7c&;ZThsfhfpoVys*C-x9WZd+qIfkR3Z(VfAffm zT4|Kt49G31cY{1Wved>E*=qaz{O|>bxm|^@dItS zb&~en!@CV<_D}jZCLQJRy%JOM!_ktLCsS{mab>!{FV;W&Z|O(=-*uet$@Q*T=#!=~ z!Pi)<>NR~!>?TC`xf`24b!nuMhCshSPD*S>#v^RQ%T&EKAjF;uxht%f*DB0cHKM2d4V6<&7N zlA=&{RKe4_peLhx*q)+}u!vyrHSa>58Xtec+C)YZB9Rl-+I zZSzOk6*Av zcEYby(<|_8?#WR3JL?K|&DLub4NS70G=c6UcI~oR$u1T~HW07B&ht>T(My@vAQRYj z6dHZ)4Pq(C4(~zyF-sII-Qt@jN2(=4LvJ@h0&!>UMqIDRkhsjRM|@DuGDfq>mG&WR zJLxS`7JoXIYfliNUNKqm=*MvBdk&3dtQfbUj!2`iFw<1E@k2%{rK4LhzkaP5dt33lP z;35~4lM1MvO*?^Pe1<4F%L+D>X~5sTlqi(5=bo|s3_U{4I-!XcNc?Uk-}XXYd#@`# zz;-CX;XpwZsRDa`@2cBuBtGO6_osX$zP3WWSKic}JVo z%l#7Xw2SBEl=rXqm!03~H-HQ9l8276I8sFfDK@-%BQBw7tzICRd z57|Lr<|EpilTp#_$Tr1GXbC$1C*L;+5^Zy#9A`HF`R!xG(oTF zK)nn&cYn8y$zm|1fu=n|F#;E>)^1SJ>mY-gLFeLWQ$44up;GrQp1-cKMrDjG2`4k6 zGejLMP6leNG$~H6YXd9=omf^jjV;Y0uqdLf!>7%LHfPBhv&O^Nf%c^fmi9*mev1fn zmCSBVKhyMn9!=`N4N}Yth$f4O%?ZI3W-^IX#HA{G@NHoe&adNg;nDSlC)Tq(d(COg zvJ`5FxRWqWMT;SO%#~@-tu=1ry-4>f{$Le z`3Ana|R8>=g-^f_|5ItTAci%BnKMZptHd>ihyTeRgax{R~p$XgVBY z?>+5iae!lqfRL%urRs-SykxfWxxQ&%;$nvvH-0}4?h~fUr5xvDlm^J!FCI}{p5QKU zx)i3&C?HzSf&@Nm%VkMPn|mZ`DE){kRjEB+w=3hX)75+`VHGK@Kon9aZI%Af_`q(E&B;|#p%PXg7`U{CR6x`fgb=l<^ z#DBYK%lM^xiJ2o78Swh)><+1_m(wdM*Yo}WRfiG59*W>(;*K$53Wws>ISqLrT)Fi;L+N?$&hnHR(Q+FD$3}Gq9hw9S71FN$X3jZvX~vf-!x(| zAUGX{CA*Q^>Bor^>weuWGnh5>cjci2cQK+Fu9eiE>PGZAXnbxvV4;%gxJgUjPp8x+ zVVV!7JRpGA7%i}qA<=h2Q~D%JQLRoYzjiV}cQnTUhYIKoiGB$dDmM$?f|U}7)e1kT zjoQH`ehE==i@#)FVIQ~9|9)N5onN6%YFYvMp`KA;o=em&yq5}+?&Bc}aT`JGr_c%! z3~D25(4y-Mox=nJT9$Ju%jnCqQyUPy8ZXzqxsxMjA|HGLw)w}f-a-pg$9{(>%%v3z zafew-WETi!IDO?%MH-{z*hKt&*P52{O8Kf#cs|m4p6y{4-Zbxw82+a@Yg&4Yv?R5_ zumfz|6Mijs_yQoEcVyMd*f%F+ijCG2lOgX~(C>s-oXms><4;(Y2Ga7w@kyb>(rfYN zIANNsaeQ7dmaS<3d`!9yIZW~Omo*OpnO2|D5Ghc0@K$)%-pCw?YBRfsztubRI#GtK znt4S7F7Z6XAOy;2o`@*u4SND+ag~2AIgZv&oes5f-$dNn_QN21`tsxGX@Bzc6rG>R z*GQ{(kH9#mWIjCbqW&l`gPsfn_9zO1FjhJH19Kxn1lRa3df%Rmj*0Rm4>PpHGNt*6h0P9miy@v(N`jzk0Mpy zD_cOQUpbvhsCL{iJ5)t-y-O{3E!4!YoaBk_p%Znf;?oQlSxNAyHff|~Mvb_XX1L^y zXm-xjF}OAZGQ#8d9dx9*7vWWgU{k9L3N(HX|$g+Rb zoJ;pugEfNg^Qhm?7^nV=Mh3J$R29>A1+L12$n2G_?8DiO+UD1c!^u(Nuz@2K4#MTp z8jr=)DMLLZ>TfpuqB4%U+_@17dmW%;JGq(L+@%mug%f3wO&>2VjQ#URbEB?>$IeP^ zmBuKA*;uYZ^Ul@9K1(qsKXx2KXcs1~b(N9T7rf0t)EDu&4QvFDhE zO(WQd(Xu9igv>HY+rb*e;ZO)BE7oEz(rHlZqDzRo$zi8or9Q>OQo%dhcrn+)-a-83 zozS*s_{rBT#`N??+}cOG=L+))CO6J=scWJe)a5epzk}Dt5UZVEvNb6?P$hVz8NtiS z#=t&n_=CTf|DG-@ zXv?(#&hXd{HXmo{r+2k}aFL_J-?tG?cWC$Ti$1KqP$mQtX!>`e^T6K8hN2yksH$Vk z581+11mD>W?~V--zU&ufV4#C$GI@%5BaGxNAK6@T7C`>{8A>ewsi=OCV5A~RG-?@? z#0r=H#^=p19}ec2t<#R&8pinUjD-o(*}Rz*CF?&> zthq6p*XuECX0>N=QmnT-N38JrtL_T9}Wgf~o#%DROy zxa89q*&go@qWMRmJ*gYS*h|<2^+eKXg=zVM-(#wb1fQ!LGw>=~ln$_@-o|@V<3E z+67_q^URM&PNaN6m{y?4`iyGcPAqG~LxCE`GHHc3H`+nVgDu*Q2ocB}bBRMZMDvD5 zWI-%_2**HykhCQ)xj~5JL9Ts^JBkDOeEOpxK^Gs?1`JIquNpDYHtfQj`V{37VK~_e+{8a?9_*2U>`BfWawDeG8wH`7s#XsG zD4>V1yiThM5oC}ilYbXMYoIzV8S?~!+`L+|DNX&HJN|iIu$J^qC%;u~4xm`%Wtda4 z6Fz(a{=P;+)`7EVwZn~lk_a(joF@wUdvLWD8;F#q2G$%-YnoGNbi^-04mJvSl2tip zuZMZ!%6IK(A5#rP+;SWIkz&B&K-Iz30t|ycsivtz?&1&q_5;>kQ785hQD&|RtMraW-VgqwXmyR|; z0E8yyTnUz{s0AeQU`H&{foLBLzzi2oeZ#D7hSrXn1Zkj{w}@>%c+JTa{R>L5U5`n_ z7(pkgA0wboQb^cJ+~Bm}kR4zYqO84Xniyu)|I9K%>l`8fC;A?D(-*ffOITu(RX?$W zBmWgD2K4GkTLH6|E#qAQkHRyF$GA%xSelKQCb1mTltm>Ch{Fpf%yp!DU`0SoA6Kt+ z8cT8kQ^e3N<-*ovJhIiG{SyTv?~FGSRgrm^7|i_A$4^_%Y=>W*kW7Zc%F;nO=K-(i zy;4pHJML8?H_d!mSYMeTBRe>mHb1NzlMJOycWk!r4Eid4!A)Ly$MY^S_x7_Bh&v$} z1lie1Rv}jih<#)mhjl+)qT1`Fv3jLhKc5P_Pm29wD(%T#35-h7y<>5L$?&-Oo>#}l z=46RtbiBKCw>vzRK5Ya0=JWE&x8~fPWm3~OWLZZxGfc~mfT?%PZ|SOiafyc@u|Qw(!8(0UxKqm$Lna!n_gPY+pby1 zAZ(>&&8Beaah`M9?z0L}ZE`Cpy$7E_i~|`x5r6`X1guHR6VQH^VECM$dx2aYM;bt3g+I^IyuR)y&_jNpuf>jwH5j# zCd4GC%Gt6$ONCna_vnK%JXM@%8#+cYYzPjZLBGsM??UiBs`Ohzwcl`bdY=qx>>`#u zvnu6|gG2>#cQqM4t3CveZ%Nk&tbO5$49zx4m%_bWjoIY++F68&b32EM03E^slIlP! z`UE$2OCSEHn_n0A4Y5rV5X%fhC~^BSjSE{pVyi5P3Q(CI&($k%SoBr!(P+|a@$*a} zG)Z9ybb5Ixi{OlvSIv}W(U3;%yL(OTg_c5vmcUwtT2gK7LAR_IsX)6`biC?Ti1hi? z9vn{RjDYXowmjlp;==s1km%&Mh1x(KdHrs~WZ^D_PSzh4w^|7W+w-+6c=J}ntI z*gu3QqX!h?KRH3|I~f6gd;q}GJ$aOa3Ha%+{3NWceB$W^~;) zk1rhMrg<6MiP0Of1mNIaq7SsVm>X93_E)D{M@<^q7vnZezS-Tw;8%iw-%?_kWx5k#_j zg&b9TA!`BsRW|@sPPE0^R|i4hji&t$E9l6FW!@c*j9j%Z5`kgyv{S^7x;hJENCj$f zus1Lp4Ck{WmotlainBDR!BIfF3uN}h58_2`tOHjNSIf5?7=#h2e0V|8>}c{E5y*=G z)Z{qEES0Ga3xDTY;Uo4C!02YJqePx$tWyFX8sC>J>-(K6hpEMpFJX`Tb}uY-LYfp2 z4c86bIaX4-Fq>^cX{czyB?F2__j|URA+S7#X4b%9#2LK%>Y?xcn`7zpAn>WrMLhK6 z(cU&3d=*18dyfa50S#6f`3OY?0SAWIz5G!FB4VdO5|lN=Gw{aky?|gHImEcMy^+ST zw`+|l`<({lH44M+BOhWHie zD|H^H!Bt-lv?3Y)M*1KR9V=a~K=86VdU?7k$FG4?)?ccTBru+# z-A8{u#HKT0dj`T;1$g4{1R=6)z##1zB%$jkKF*X=Zip?$ZYS9OCB}Iq^E(1`$asOM z;E$8&vM<>7?i@xmU#(N&Q(KWhN}%9S+zT7!;dijvPR(r{MaUfPBUJP zYmW8B%!pi5;lNQdHHu^yC#7k4V0-cgcA@qrslp`PiyA}^q%c8D1H>Usij7iDw$ym% zktU)$$ry-LV;k6Kruf^rYHE#twSlqGIn-nKVuB^K1!&oP$tZ-MmEsY6>7?N}d?|h) z^@_uerpER761yn% zLJ3hY3E%#EAe!(nS}e?MW(=4v@`1TmfQF*=F3AJwBPpfFt=1`f)>@(p<*tM_+R8~S z_&TM~zU_=Tnk0`j8NoOjYO=J_xOm4luMh}%GEw=sf|SXP?`6Ir#0!cqS+H_O2O#>}I{6VK)ECIZ7E8=@Z z2vBesxtkxlK*-Bk_pM#CS=l~@idymqJ%PCZt~1}k%q!CN%p zS>T*AUG`gT&ueO%z*S z;us9-u!{IQex}~8l${m9+JNA>Y?!rO0HRy*;=*`C6o&=A2zZnQOkgQb8&FL2 zux~F?KTm@`@i)Zpz`I{f_XK11FvGd$ufigFhYDc2+>a&D$~etZd-YAp4wUpT!&D~B znd-AHNT36}NVprtHYMx@j>e&03+MRE7M^PLPcjPMaxYOfoySB-%`;5jFD(fI*2qj0 zNd-|^J)A9!3`ouSiJ~G|$>aA!AAogIqt#eKvm_52ZO!Y9`Umps<(0)J*wU5{c@Jj3 zf-dI$C%~&BYl2BXqE{yE{K(>=9BuSx3o%fO8($7l7X^`61Mu6NP10OBE`7ugMu1OZ z>A8zwq&TA7@@QuQOZF<;^#goFzwRZ)Q6;nF7;z-Py0+d?V*dt)#=Bb?2ox{~0v_O%HiWt_My8Mx<&}K$arft+i{HT3@qjV>f`4M6%B3x(?kSg@kD*svs zs^`K3EkTdb95yz2&+sBbj#cIZ%_Wq4RQyQhTO(|`4kT9Su+{s{%0k*LH!uX33TA|+ z_mOSqh_PBXPy!RH$^4^92FP4k=mE)L#S~0m_sa^?S!^r`9o5t+V4=T=DK&MctPRWg zdy@DwFPJxehD8tY;?<;m!o94SV_H{#J_iimqr-6b2 zRuT3(i}~RyTfEj+ZgD^xcf>44Bwfm`E`^_Kc3o$eEFcNdHsvKDUt=$(A{`KzRku0j z4p1m@KYz%^RU-vQNdrfrmm(_#@03{di=;itFZ=9EGh!MA$4lOLv~BX`Ie0d?MlGC%*RTB8?8XLC31{AFB_>aQp`# z_nZ$>$2EhvbKe*z0ipgdRj8P_tL{&>OlH3VrCPy>H-ip- zfnZ|Qz<5YqU;&ebbmsY9yrw29p7^GFMQg_kEZMU(YLK~-SDD8l|CsX`(w8}-YV3jh zWO!_f4yUlm>Y%LxH<=I}2dqvJSAsJ~lh=YB5RaZo?xl+;Q3qlR)_B@HxZdlL`<2V# z)*H^5t1$`YVTbtaZ}?jduD7_&aZ_lq)qHq})4o-oX zssU6sXCnb>L~w#QIOI-VlnJVmH#!vfEZ8Mq2p@~&E&vm3|PGM`~0+;7;69TvR!#-WdCRnwO z*OaA^A%IEzoeF@mxp6;QoKrDXiY}7TBC?J)P%CO4tDH7O`U<*IQWRXgJdVlXux1dQ zQ1~wNpoj>5e3}*zf(U}qH>eo!-+}1THvr1&fn|M8)rdTg_i7Goh_&(nN4Tz_ielm} z{O#mvh9T#ln8UVu`3dTI{A>e`&h8ISP46AIy1)*vMHbX?)WdJg%Lib-4Yv~#?qtmK z_0=iWE9<>W+99Y_}lth-C`9T z5kPFr;yNX0sXh_5c~nfJ92DNo z021e}?*_+mP_Kj)%%Ab120s10fpl*LCE_`&oP_a83x?~6lym2_%^=BS(%8nFD& zbGu?)6?IGn^9L5TdaaZT;1pts{H31i`jmG&%**^{|Ck+rDtCq@6JA4c?Hsz3Xru1K z#=DRY-pL~?4sZF2Y?QqKJ;@X1X@Oc2aEh;T?UL7$3PNSL#;=9!M;DG9Box4UxqE)e zUq~$dpW!fUYUnh;Z$^h*di4J(w7n+Slf zqWv1l{dQ#0gRrDl@W3!*&`JQuoYE|M!4UEh^m^>_^gA8avezzy3EgAA9+14lt272L zP_Cx*wqLJFMdBSq7S7E2N7dtdpEQ;QJ^r2nmp{TO`M}q_k3(ABu^8ElN*(QOGX+w6MN^ObIR|DekJ`` z%fIH2q!~@^L=`Lro_O-X5P=9enc*Xh+2J2#B6lkb!D7UNv^-W~XamBO(Z1%+$vZDi z(F=mF55-GUY$fBda%515sr67M#9;Nm*$=d1*-_!Zye{MVoes!#4^F;5uM;=&`bMPt zp2RJSbU90aPi}WG80;t3J3XizvLJ=y2<^D4JR3i}-jpNOSSCZv_kmv3WIJ}p`I``> zCMFoD&1B^${rEjFXLUFl<6M+9DC1y6r^}5Cl+$O3!DLR ze0w*TJ0GP({-A{-+5jVed}ND+Q@DishK|ygv8SCN&ucs=;iw_UEmOGhZL{LHml^Ty zUd^CMyrvw$DEwHz-fT?^bC z*-IIg^SK2vAtI|2Awekz;_wR&d6hs2T@aE-z6y|)cib3?Mx=k7SBb+Ca;v~ z@OJezrp8q^N%u_|#FOu<^niZ&HUa$(&g`5Ie=N}4je#yL3Elus{?!#ohRiKkC-RW; zeFnZ>nVj3TRRnmJA3;V&=XxU)=9kEo5Q!Z#v{S@0f7n=0#Dj&^@1d@S-4kE_o0AYe zN<>uh6$i0~H#H-+Bf+vz>=^P}9b+>z-z%M2z)cz)$T`A$5+kadlV)L27zb*k(@N&dIeu@4Y>ILt ze>}@wVkYpEg9jS*+nVpAHBQH2Zn4DZc|@M+``C+yJH8X6UmEGYFSIf=VZoLF{~3X+ zt|Vnk$Si~7s~z#6bGz#}DGI@sqo)|l+QisR87&gwcMT09_fdQ31K&Ux`VzUq>Yft?$NRZ@*om2>mDP zJ!s*(#f0Aa>(k~Jo4=Bs zr&WNZNBU_3^~l*4P(7I?e{hRF5-8Zqz8tPu{8Njlpxiv3ZxAp4C{gat9FQM)LT`5k zUvKq!T<_E#6C|{Ej8Q6`e*vEsC~7!=yvE`6($;YQpll-nze;T>;;y*!ceCZzc-DW?6=1jGhh;rffFH)_hJm-W~by&{rbFvsJ z62HRBOMI!dd7e!97OP_9+AV9ZH>~b9^uSO$@3(Epn*1x&{p8cWz^e#R%zi5c@eu~t zS@>gG-`!D%s)biZiFQ0dyprI{RwFP=QJKbkf#B};N$33SIrER`JM-%mM z$$puLRV0x++76_|)F9+CW(iCP1vxBTSFu`Phfk>7jA-m4$6^7bdYv3~4_O$$OtbW{ zz%|bkUCYlwyVH-lks{S^_y;|@XGfjiD|K6i8c0-$$9~0)cg?rF(F`S2;aa=`qtMj^ z6?{ZakISQ}80X|~NH_6?r-Saqxt_=5BYydsEuEz3%6PsH|KTqAkNndZlE<~VZiTEcItOrqnnSlrP{`6GttSjouvBc62e{DTY^u<@p;=lvQ_gPKbv z!WoqhXJ;^2u7N4C8L>%i6c-IsF4~O7AnyPCocV4ZoiB{r%NTr@0>Z0&;w>4YNLrRA zwnqGWTFSOaX&U1*V28sE?*=)w8va8@(;*f;>r(AeqyJsC)C*_D5>XkJWJWE*j#S2t zL?LB1CX-O7NSf~+>6VjYGItS!A{{Nuh&V6)MSvoZChjubprSQrjU@qn)vV0LWAE{N z+ME73)26!#Z17*lPCE(JcD2%lP8fKUB!}i|$ntcEN9~ zXX?OXdJYL69-oY{EXyC@w%6I>UR8~Bl4y(3GU?01gT>HwA6?ouURwozPyMUt{#8q- zCXEiw!uY#kYGtW!D!DLbc=3G2e2GLlkKV7-yA+0*lRGp$|D$nTB;p1|JCgO<0|%r6 zN1lN?AP5EyhMXFBBei#VP$Z_md-D4yk+8GoAn$1-c@I9JOk zpsSR{|2}^$#0gb0W6$`n3u7aJk|m}*3+!A$A9csPMPe_71f4q_=+0XCop7RanHLNm zep0Dk`+2SC##uE6n*91TPJ|@UrBz#Ft3=iV3YCa(Fi`J2>Vx@Ee0S08q3X9NXqr?{ zIpq=$y-nKx9C6e21~&U)QTVz6oQ(G^AI$AM=>-veFhPA*&V(mJ7q+YzqJ-5~4ex&} zOo@U3BYB;rK{^+6JkPAK?X;V#=rl4^R|D&yfvZ#&md9Ky3~HwP5<5y05M#udON=nc8U^+Ns|fAbc$W7tARGPjER) z*rs4y)s2?qNUC9N%u(Icwc=r0_WLg{?Oc{x&sy+S+Ms*b=&Ca{5bEkAgd77x51`ep z*cqyaN}5}n2-BDM=Pz4RAhosF$1gWxolOxc{xqLpSooG=bXdR zD(Ni(rZRQ;$6dtbZpkI0=adfQ32%#>V~!S^e9s?MX`tDnd?%D_b)ioLwOUu~ zdP3*S5ik{Knfpzg8>6eanY?8aPokIsPw`YPhlGcm{uO?62)+OU*p7pgm9uY8*z%$CYbo27)*GOQP*d$XPGC?nc>UfSF0Xl5b_1zv$KVE1 zJ2v^eNL6Jc+rieu{vEE|URzMp9`Km2g|I|Xm{5k*i9_yjtSW#JB}T3NkQxhFfqxiV z3M5{Hq19GmOk8_-kK0oF0*~|~^i1}mnk8v{*w3R9vTyB$aR?8jRB~+63Mfc}%(bWvf3{5Qv0rbY7~Vo^T}=3kDJ zf&&0Hr~m-me?i$N6Aa=0Yt(=CZwU=y z;Hi=R%?_K{I{tqcmFzf#2LhKIGek}Fk9tch93@650Kn&OKKZW!|HDL<ka$Bn9FykXLRyGM8!57bdLS$~-N-)7X`X0dj1*)Z+5f3zq?xM8Zp004VL z008EHl>BdmIRij)pe0%|Ey z-MxBst=)Uq?&mp50^djkM^}^uhrj><0f7Or@*>la+P$&oOF-uY^nC8_7z-J%Of@6- z=Wz@s4e9VtNE>>KuM=BZp4rY8NW~OgNWna;yC)r_mdGa9QW=3SDLwLa>~FdVoc7US zVV&$72gA^FlDde{YQjX+&XlZ;;3%x1LD%YS0^QCBc)vQ*pZ+e~St(??75x%082#mF zB)fdX0jF^a<`>f%-~|p+nW`}l8&fixPDE67=+d)GbF0ny%558||8BQvy~?(Mv>&AU z%thc=mqD-e@{U0p6V7iTD`=Y3ddXR;^EBsLa~8?C4MV7S7W?m(2(%yI&aM)>WV_M) zNOxS#GL9j#14-|tq@AKBr-@)sM%V8*NLQ;N0)X^<$C5Y4e2A)uLW=xh#nGx?_+^392fPM{DrL`#a#KyA+q3TOWf9gJ zkuj%*uZi-P+v5VpQi^U-`T$1q9lxH2r8pe?PzXkKUc=+=L;IM=cc1kiL|@;f=j$Fr zlgOV=;cbG^2+%IT-OmK3bT{$5X~$VqQ6;I79iMf~_W@tjuz$rAkMu!zspD~OL3*43 zW09M!>P|YC)DqSSZH;?Pde~AYlro)1D=|AZBTpKA&za6SS4Y)i&Qu_Z zqU^m}F4fKN=W5xCWuPK#$eKuu$j-IJaMUI?;V+p^nso{xF?dRozS=fQcZ^H4;!H_& z3wz}eB><|=+BZo_wB{1Bp=260F}5}pF_zAQ8{wG144`?+*xo3tf+aRB$`pD^J7VmI9NI5;T)0$!QzRpKTG1w2?%rNX@ z9l&C)UXB5jqa2rpHXPn|qt5a<9@Ec8@(i@(vVId3d5YaILb4njnZjc*9_XK|0a7eH z>0je8_ge$i^p)?l5+hhJ%T#;!^<(tgeKA(C>|>Rr#Rx_{v>XH1R2yMC4}p^XXfh*K zvW9SYnYD@3#>C7rPcl7`_d~QX%HO7XwJmZr@ z7G(?Q%xq55C&Pw5dg8m9U{X{e*348d|BYW=1HwfO*)`wJ;e+HT=_4ECK}qijF)Sjt zu^QsCKoSj-%9Zsg?FVyQ%r1#@7i|V)QytBl^3)vSigY6Estf{%@;U0j=c?1MUE6Jr zhQu8N{`U4LjHw@TAV=U?d(*s|u}q}dS4WjETJzZ$PTF_2?MXb5xx3-!v4pbeTsqwWV>qX(m?JLsyyngb33 z(hv-@1P=R8ek>E4`*MIL2wY$$J-}=PWxy|i#=TFzKzN-+#B-#Qiif-{=Cra56L)+` z-}1h%F0Dp7Gi8f5S3h7%nWI=+`G}f{Bb3Wk^9C$bj(k#mi}H6fzU4b420iXZYfUKW zl@JLxZ1HW>05)p6@i_c=t$p~cmyRXf&3|=Xj_7h{r0)0@PHa1t_zFTL9&F zI-`IG3#=r%u=ZG88tTW1EPZbj=Yy}1L(Sm7_`$QCCYehZUVi+hp=+~dy0{MuuyNZu zsrb=1l97HSbz&NAMK_`>Zhevpgq7Z+9;qRfw{f?Ivo&DA&8rGN~PgC|9ECQMwhLX(fbt8-!+W@J^X@n zd~KRWq1g=Ig76K2v*fCTxkCXZ)Q^WX$}b5)meqnMh^Yu1i*iD3)P}v<84?L4d!1F% zL~c4i{`!Oh+p4s@jPr%4>5W3R>!8a)f7!`4OjfN-L-=QW5(0BL3Bu}8Mid~MWS?Oc zoyT+Li@&)-N%J6Gs)o#4NSs9qMea(_>SYMN;R-1e_Y172A>Tc=IdrJItd@8jNdLiQ z#0!GTRhU&_re>yAVNDRZWw?_fXlj0QY-C;NOCe%L6b?=j^p6)4{Dn5u=RQYCrVD-j z8rz7TG@j;AfDyH$9Z45KJ|sX0>F|?OaT+TCgyXh9z13Td70nCcv6{>yf*#L!;MNRL zl7iWvPvn_D6HJ}8V^7t;0d9m>HS_zh*D z5}3&JHmu(kFstsEr5-3gg9U3%gVi7r7!!TqJbTPG>y#m{4tU(VjnY>9yWC?f!N2hM|(052Qf>J>O? zlM7M9fxtNpp!WDZj9Z4+@<-_OSo3#*$CrM@>^-A!yR4X+tOq&EPfLXQ@L!R0NDrWe zF>DuwwPK@ZNp3Z&Yg2_w%r3gp1B%ouPMPbQQCGo!FA#b_xiZYb@-^S|7o7@ya2ei^ zg2xnNWh-=9xP3t1_TAj>0;iHg)ekG|0*);1=1Dw@Yh?UT0M zlG#fph9#H}x0EPqlX~Co7i#g5O!DDaF%%R%vvOG-$&MM_6yYBUkL{8wBLSeO!?+Vz zl!#W!o^An{*zK6yPI(x@u=|l@R$Co>;d9?b@!Rq&_94+Q(c1}>nDf|_oc7_!t*1J4 z!wbUNs=aLLMLgk(?WI-1fxXJ6T6JXPw&MYXSD(x!AvM9I`8v!Py+tsQ>1t$x(*4eP zVe7H9c~SbHHDrhv~i&+ukbIBYm&|`iQB8LE=Le%`}vFUu|XyXxUV)jDBV0hN7 zlZE5W?*r8ek?;Dmg63^gIbOQO*_YJn(prH0+TroUG=G z&c#p0uTh8kxXzi{bj(wk+f6vh#4zE^d96pOR+G$TO6A5ky`nC*rrAqK#S=twOme*v z08(LigVF~c-4=b<0UJvJc7kW|pF(EWMSW6PBA8pp=3^mik7Rh$rK#HpT*Jco51wh{(4aHMR) zA6}8ekxqjdjV|Bs-hM(Ic9x%QEh8D*Jrh0zG&w6~TyM3dvT4JwrOu=@(m4^2%=6-7 z=KTs$U!F@5XG?igVb|J}}_1g=|X3m%A;;Gw70%VF2tosM@+GnVpK;)o(|cxZY`JJBoe*9mlGDzIrqYo>hpT^6Npq0kCy3rhywC zi@Y4T(78w`9uZ%M{#{e&D1+b3E+T8CEk0O*`f&YVI!gbz$lH07`(uv#9O4W;jjSu;%FJI`>Yok1L+FJ}tt~9b?_C>&IRp z0=gd@y(sTl<0~GZB$hK+L|<^O#n4T!F~41aT!>jrr!S+f9IG4Ypit6Mfz$E&(WLGbewI zSNBoL2p@K)5gSWC4JOK=FUJ8D5I0ZyE^HL0=myGiJAA~(R{)akCMO=&&3QM|ob zd-yDr1*=mo7kWGsBYVRpCz}8??v{QDSX2J_X7^SGav`Zjl%%wmG2Wm=>%RQ zqZ-`H=Gea!^NMhRAU@MX?OPkaDP~W2 za3;aG+b{H0d1#BOq#WCJ!{f&T*v&+ikpToeg@RE1ZqIb-61Bmq+G{D|EC+`VQpUM@ zq%qz+qEd>3iOE0R=-z-UX}>Y(2@8SToASoSD-n@**;duSZ?39PS$_B#{?&#T(K`kuf z75(ez_m6K0EeS=8p?@lmV{BNL7sM1 z-w1P9Y=<(6(uA%QVfhpI&JctP7`_5kK=;M2oZTC{7R9{hiFHoeuAdOwrvH~`Colc^ zVSn^CI+CPTd@wXAK?Fk}AcygZg>=pww*iE2`!J9qHkBRQ<=bkfc6VArnt#XKfkqeM z8w#7Mxb;LC;C^Chh9gY$u6q7leF;kEsO+`VS1mz4qC9XOiyRb|yOvstqukL^K?Dsx zw<8HR7d0(X3Zzd-Oaxih$Ocv(h0aIDNTdhd9`1GM{Cyr2JUu92(Seqw_B7~0Y?3_b zS6`)>Ydc=VWzZ^;vmK_jL6I)j7#naQG0w?m^*!YjKowf(+**tfJc~5eR8@VbN&34* zsukMJc0x?C{hHl4`Ljq(rP-=jpfbe_7nbkq`Mdi#L3s(2+ zv+aiNr2cAu&MEN-gZ5sw#7wwZ-u22^`(<7{yyTj77(q z1QZtpc9dZv(LlCK0mW7M4+^l~Uv zbW>SVSVZ73*csLW$8?mqDAWBuDzlBn@4us}lJ&<#GR&(yLQBPLyAn$bIb4HaRx72QG*=P}G|c zet``ygU^EkJ>;@GpZ^l2QWlQp-YcWFet-~smvywx!N_@H9?!74|Oz4 zNG%_NTEf-GRB_!!aOtjP+(Ko2Oq8ey_xrz$Mnw0cm$=+Am%8A4A_$UhZZE3rq-Bb?T2stx?f+al3483)_j`t09d3#&IVi4o^lGow5c?0 zb194Ct4#pSh%-Xh<;43nEl3}_^`nlwx$3EfPi2W4XWJCSD*eAANw#5jzul$ok!6V= zY8ZR=(|r-!O}a;$IcsUq@Mp~2BJU5{uV`(P!da#IQCUVvMEC~%-$IoPRq0a!3?SqL zRL2k$c{=?>lAY;yUA|Yem5U|T1W3v?5T;y5zfwXD%|MWBP;y&hg5l>FohfR^ZjK7gLV3}+9BIcN47 zOluEW`Q7zXp$K{#b{{mxaDnK7(QD)kkPwdE+OGG@(Y0NVYghW)3MZ>5BRDFWZ0xsu z>tR7M(h1CgTz~$?VT*oui~hUAlS$Kidt+qxt1g*=3>KgcP!G|1U=4DkO_=Oj^dWF; zcH4ixg6grO-p4S*XsDmNFXIw-2AYDOhMl-KwB3@@C%is$Yzz+)J z3S3+@9-#$0DHgjGVZf@7FR|buaKR(ixg-4bh+?^u;3SgTgN( z0*k^p>XYVlj9-AU%0AKC82Fdm`YuS6BnsRtxmSX|C%ochCPb*c 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 @>TjO`?NuMQ?JDR#e3jL@5`Jv?x{k!n*Oq-8g* zJm49cp;~t^pIDR>pn%;|n`G6y=23g{(gtCq=*Ezm-6@TN&lz9oR(W7vhx=2~>yfaN zJ~bK;2{YkXV>`rU9MkUvshUIH4+Xdcc3!jqwhq^&MvKHBg0@ypFM1l8u0d7y!-x|3 zFXA=cs#h-?dAkWa1Y^LP?>z)-IjX8iMiX)H*ru9L#xsd?6goqKyveTt9^(OXHkzSI z<^n*%nb&fH9V~M?gVwwxf+_idgXt9NuHz9m-me?m-zH{;X>>n#%!|R2wyXs5< zl@?^aVuWlcJIABpfwcgh{_wVP=%b`gkK&?hiEdOor3;bD* z2}KqZgBhBSkrJVi+f=C8w2TeqdnwFO4H{c&J6hYEYmsKRf#8xtJJF3v+nxzNZeH7* znM{~bfNmpt0@7fEl^A+IC?)&?WSjKGMFI4@;PXSr;yByj7@`+N#j2(RVKfu~A=p_1 z9j`%$3JdpoEjxIAM3!Ur$LG1hS0cfnxa`2oyBV++`%pk-`vD%E^^QuAAh~4g%r(fct!R`zatXb85=l!eJSQip8cz`w!Mv zySt~_m)C-5K;-hnmU5CvDjgeBIudyGRiQl`yAekYPf+UQGjGO-whq`v{oN8xV@4x< z!&%oPLLT2|Rr2M{5=7Dim&DclP?mV5vF3dh9FeTN2oZwh0QL{`llTEJReH1PF9(ez z)-JOlZ#VB?>yv4#E5{~pw+!gAqPLIqe#*6rPM�-$nf5;m-UuaCIjY|Mu&(g=Nrj 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 qQ=@p`71bcX*&0G1+}OW