From 3f380b4e6494fff51578566a6a4d5fa9652089a8 Mon Sep 17 00:00:00 2001 From: yabwon Date: Fri, 12 Nov 2021 11:43:12 +0100 Subject: [PATCH 1/2] Package GSM, version 0.16 Package GSM, version 0.16: -Check for the `SECURE` keyword added. -Example in the doc. updated. --- packages/gsm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gsm.md b/packages/gsm.md index 9ed1c9f..ebf856a 100644 --- a/packages/gsm.md +++ b/packages/gsm.md @@ -67,7 +67,7 @@ Required SAS Components: * SAS package generated by generatePackage, version 20211111 * -The SHA256 hash digest for package BasePlus: +The SHA256 hash digest for package GSM: `96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7` From fe631f9e4428db7d42dc94ee9ad2e706971fa6dd Mon Sep 17 00:00:00 2001 From: yabwon Date: Fri, 12 Nov 2021 13:56:17 +0100 Subject: [PATCH 2/2] Package GSM, version 0.17 Package GSM, version 0.17: -New parameter `secret` added. -The doc. updated. --- README.md | 4 ++-- packages/README.md | 4 ++-- packages/SHA256_for_packages.txt | 2 +- packages/gsm.md | 18 ++++++++++++++++-- packages/gsm.zip | Bin 15552 -> 16002 bytes 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 033db4e..ee82c81 100644 --- a/README.md +++ b/README.md @@ -164,12 +164,12 @@ SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") -- **GSM** (Generate Secure Macros)\[0.16\], package allows +- **GSM** (Generate Secure Macros)\[0.17\], package allows to create secured macros stored in SAS Proc FCMP functions. The dataset with functions can be shared between different operating systems and allows to generate macros on site without showing their code. -SHA256 digest for GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 +SHA256 digest for GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") diff --git a/packages/README.md b/packages/README.md index c25d56c..e2266ab 100644 --- a/packages/README.md +++ b/packages/README.md @@ -110,12 +110,12 @@ SHA256 digest for BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04 --- -- **GSM** (Generate Secure Macros)\[0.15\], package allows +- **GSM** (Generate Secure Macros)\[0.17\], package allows to create secured macros stored in SAS Proc FCMP functions. The dataset with functions can be shared between different operating systems and allows to generate macros on site without showing their code. -SHA256 digest for GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 +SHA256 digest for GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index 763b38a..f0299c5 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,5 +1,5 @@ /* 20211112 */ -GSM: 96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7 +GSM: F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB /* 20211111 */ BasePlus: B34E352EC52E05B8BBE1816E6104F47677CBFDEAF7CD71B8BF04FDBFA01B0EF0 diff --git a/packages/gsm.md b/packages/gsm.md index ebf856a..2d3ac5a 100644 --- a/packages/gsm.md +++ b/packages/gsm.md @@ -8,7 +8,7 @@ --- -# The GSM package [ver. 0.16] ############################################### +# The GSM package [ver. 0.17] ############################################### The **GSM** (a.k.a. *Generate Secure Macros*) package allows to create secured macros stored in SAS Proc FCMP functions. @@ -68,7 +68,7 @@ Required SAS Components: * SAS package generated by generatePackage, version 20211111 * The SHA256 hash digest for package GSM: -`96B8E8EE268403D81BBB2740A0F47B835EB480F16B47A9B51FD976DEE3595ED7` +`F6EE77A3C042E1E083E970BE255D126B52A75205DC1FB9A4A7337D0A89EEC7EB` ## >>> `%GSM()` macro: <<< ####################### @@ -115,6 +115,7 @@ The basic syntax is the following, the `<...>` means optional parameters: <,source2=> <,outpath=> <,encodingRestricted=> + <,secret=> ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -142,6 +143,13 @@ The basic syntax is the following, the `<...>` means optional parameters: encoding of the session which generates the dataset then the generateMacros() function will not execute macro code. +* `secret=` - *Optional*, the default value is null, in such case the + secret is generated from the `sha256(datetime(), hex32.)` function + and is printed in the log. When not null then should be + alphanumerical constant. Non-alphanumerical characters are removed. + Required to execute the `resolve()` function. + User who do not know the value will not be able + to run the `_maxro_XX_()` function. --- @@ -214,6 +222,7 @@ The basic syntax is the following, the `<...>` means optional parameters: <,outlib=work.generateMacros.secure> <,source2=> <,fileNameCode=FNC> + <,secret=123456789> ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -238,6 +247,11 @@ The basic syntax is the following, the `<...>` means optional parameters: * `fileNameCode=` - *Optional*, the default value is `FNC`. Internal fileref. +* `secret=` - *Optional*, internal, the default value is `1234567890`. + Alphanumerical constant required to execute the `resolve()` + function. User who do not know the value will not be able + to run the `_maxro_XX_()` function. + --- diff --git a/packages/gsm.zip b/packages/gsm.zip index c68e00780be8a2c4c17435c0ed52185540e1b486..3e26b5373552eb70b1310a3f3f04853d07c9d885 100644 GIT binary patch delta 13271 zcmZ8|V{|4=()JzOwv&l%+qP}nx#LMDnb@{%+t$RkIkCQHcYnOQU;V7EuC7z()T!#e zuI}>=_D5Bc1p`M1007VcPzO6zNa1>&cvJyMiYb>Bgo}6$LZI2`8BZRi9XaLAWBbYV z8_CqN9+>|WE{S9|wE+$T1f6$KUD5=<8r?=6hD4p9@y_#`1`bIgM5O0IpN?_SPjN(C z+LAO9cS@J{JSDtg){s|&RJb2)LI^HrepT^DWn;-Ku>oJMRSl|0gPh~HJn7;2otalO z(Z&lyuixi}T)>_co8enq9s%iOH_J_Q4KxUq9%yQdW)bX0IcWrbCRC0Hj7zg>=n8z8 z47vQf?&mT#5Q4#|(|1k7GkdMfW;JF#6e$&8@Xl&*-wGb$7J;r^@r$`Si-A}=U5JMH zR2$RZ;ac^FZrz;xxuicY7RSDkd3Eht!?zAkZzqd$cffAyFMZcAZ}@E55|~_L*mAuL zdev3#qekd?Fx|_StYN3<+f?0;WHS5v0hMa*oKV?vTOnXvH z;TLnAP+&g^p@x#q`f~*35G-wZwi%-NAhA6E(xFX!=8yFLi+L~5NgcBmMfat)nRF5_ z1QN65*w{E`tK zCB2FkCp}O)-=3cQ7yP$3L9)1^*N^Sg2tiLpGorWU6Cb*< zx$+_t*73LISMh{SHhz}5x|Q2Fe_0WTZ-4m^UV;g$(q?4Q*g8mwt-!st&b#sN!g`K9 zD*?@Ay|tSu7%EH4;%eaTL&~D|Ls+j|zTlCcm6V&+IlRu%hb7xx1!iLIUhd4DbYA@! z#liiI&`GAfJLP0dSgUbxrNTV2?z?Xh*g59oeQ?_%MGMHLr{k+UQYsyg*r)6)PAxz8 zBxvNhq}j);=ggKEJE8FhG}S1KFi;}QZGo)^M4`x1cbX~i^j7a0Z{k~;Qv2hx35#mJ-Y1Tj zz7H%|98Lb&jaI9tSjj<(C%J2c;OIS$;0kX|EKfaGFx|u~)F>>)s~wcm4|`QoNx)iYffNJgqW{{3q?tIM zta#zLZjeQgPfXY(eq7lo$(B)uh6D|Ao#AgMx{OC@p|t9r-hF`VkwKEM%ZPqa8w~!e6ms>(mWGgQ6-lWru+!WE2P z+(?6BwV((F5vUPrTn3mTrT!6E_cxC&R ze*(UOo%MXTw{>QmldZkaE~L>xGFU{aKP5a6o0 zlvqI$RJ@%W+4y=rKxD)q7~{a*b49w%5ZK7!VF$n0eCk$FOpbhMX_4c-mM$&PBC2O9 zvRkv+Wu?zixx1>j6cZa0OMLPQ%Ci+v3Eh0S;o6oTZr=I4i*p>}te985gSi{eMW1nyA##x5lY%$_~Tm)9GB7Z#!_nZ4y0G)odi0S|)`;Y(A=4U(n@%}R@g zepSOQ!w%6p3DhiJKl{?B*Q7m3em)@z;AI4+_4e*XF`Lt@%XaA6-`f-QUzD@ z6n^iaxqr9iVz;QWoQY)uKbGtCgAC1lBXr*EXFW+ySQyeWCaq0@`(BZ7P8-AW3-Qy2OyoX*Uj3 zfWiohNu0S$H28_^AKVgNp z+LG!*$VpykHP znt%`+1bvDwPHjL}MqkN_ zLxZnyRr)nt&>;M{W;+d|I`}LXf|mR)8i`G<8Hfb&@*=F8;K~fSzDR4FF6%}>1}5sB+#@{sW$IH8ME>I_(KfI%aU)idHi#1rF4l2zsWrJ7y>iMvGG{$&>E z?ll11d!F{|%;id6t2HXV)^lGM=hFUGF*$>)cfvnESY;}R5zRHLCQGMIpJ%?k?5vAZnR={9IB?M+{_fLIpTx0UUAQWNE{ z9!)hiJ0V;ofz&19WQUrdb{fQS3eUHG&9+?co;uM&WS+l?)Ji#F(NCUODCGNFE$&%Q z`Kz8-FJyPdAuS-i`!w%CCJj<6FC09Y#5_&TF-Zrr5IUYhR>n}eyn2Cbz0B?AFzOZf zZrE7tJb(4rN=`A<=e8EK^m!@2kXbSWTYD52d5L~Uj-jfU!ksu@Czu3Rna8ei{VH~y zlC-MdsGfvjJe-N?YgWPinHjLrX6N6%@J=HDtJAFlJ(L}~Asp9BKI?Uxx+^o3w~A6v zWdRp-$DIYaf6`=q(W;D(!SrBOMg9adxzn*zV$g)_FDy|KF zUK*S0v1Fm4|LEA7KbjOhmDi#Xtbu-Gv*X6-kh0TUz`Z3&uszkHMEFuuN6-xX^VwzP z+i7S`EUD7Rln`~lV2W&gzL>_OqS-FZucApF`5TX7S1sqkef&heb>5Es1~+x(w}-5z z)8E8Fo{BD|gU}`?mnp9zK(ePBn}|8A5`AhhkPu;%Y6BTrdZT*Xk%k`c%iZn`LNgi7 z?h=Ak?;0D_(oznVQ8q9u58mH~vcFv}2sE#iiyyk~;e+Gkz z^!WFW)310*>f1+&w%@f&eBXoJNm(hWFK62P{M__rg5vjeYL)j$PCDUz$!)9T2n3JA zuW-Bbd-=VZl)frDK3P+kZDA=tt|*k7Wpw7c!+th2%*|!k|?d zc6aM@xB@TwcGUEa(&PmItxqn>8EuED67-4yu|4 zvmWxB2Gyda*7rJR)%bEOL=M@KCGMwx;l^iuD-Mq7qI)u?*=G29&AJMAi@utiun$Ts z7~u4Cev}rWC+Iyi@l5ZM?^qPYtr_keP2nzuf24n0_5N?m)Vj|^Gfp%^^V={}Qb z7upo-fKW}cPaWU2fy~b`g`&)ZbBKsYoaWe}P)=GCY%5o&IazV?es;{~k6{e_rH;wt zyM7mtiz_6@HI8IUE%~iPjSgfJf?FlCP>Rq4#efMGp;6u_Z%{grC5P$HQeevLg}ll` z^XM?XVX%9yd53D>hB>2Q3?+%zDMRB+WJlAxQgwoB5PvL?*^^%$0eT4YLa+M@_}^?-k@I#Xf}jh4=q3uGmjL}8I?#4AQmjeB z9EmZRhj#$%pU>t-DdohOOsdS_@s3O~IrNzVoO%`M`n_pUa)96XZxzd;Nr8jsb|FEE zyV598LxHeCS)x;)a{Y4Tq=U#IpyN{zp;ABU(ql3+Y$2nhWYS=vnRJ>q$VXh}jm9W0 z-|IXj65bRO(*z^uMuGXTLyF=aJDut99h}?dNIwUAo_SaRsXbn(YD1z>t9cu~*bO!! z5~{NF(@MdblWHxTAiP-{Ym<9}dAt@%h(25$J)QW`l{zpLU(9KFSkf<=y)q+O_~G?s#b`IzI~$X80VYk=-o=+Y}mBBg86uWk?; z#>r^P5$#hN4nI0!Uhp5Ndf)^(2aH<^WV{y{9c=R(N-0B-h=elfWU^_XeFlit(izvQ zV67K*^I^1f^&C3%{9prhPgh@QEHbP_Q>cr7yb*ET*Hu z;b}P27Hxn(9NB%=>E0KjJ}X9r3Kr;Orf4*2@w8;|nw~NDcm>2jJ=W6G2Tv~|c*>!# zqrBKZAc0wiemyUZX_z`7F#npm@31k5coW~TSb>M%Od_e+bSsXj7unG+HY&WywFogb z7d1P`LG`~u=}b~fYTgbUQy}o(FPA7KO|(+7EiEl_v(xp#Nk$w(Z|Cr~Vs>I7ksuaN+0g<>MCkQy`=7J184g%i8Y{!ES}@qwi7#tIQ)i_pyoQ(mFtm!wpgveyqsi{NyCY<|Co3v(Sbmd_dvyp@yY4@2_#7h!6zt zcmwl&d(PuLMSAZ=to_1%s(BjSF*6xf3CR>~b64$u@qC%|hu5CU1!Y>kK46X7p(o>n z<|T}p^1t)tjDYy869{d7r{QPL-0{mfSq4h47>1hJj1izvEKs(E!}T0T(LF^|z@|XE z)S8=5%)rtB-fPjgFikCIYI3)ZHl9lIV zs)`D|-nQIogubmILY$eQo=iVn-YXh0yuU)Hlyz=MX;o?uDDnOpxsk&XDnK%&WC@YFJht1|;FT}9dS1)eEfVAF;; zwaBhcc77#nzQQuOu7=a1TS7Pb5lEHa3CRi1JB?qS)s=s=D0`kPt$5ruf0> zdv(~dolkkS&AOFP=yT}N=cq;j$M$z+L7B7qyMW^vE{5{sMHzg0;D_oHnXd8j63cK!*W5r7 zMvIfvdP~@ypLqzpKqq&&(Kr5gg^vtC;8Fra?3on2?S21hsz#BsU z>z3Gw2Sv0mDbs8meXd4Rg*C>Pjh<)gu^hg+(x*>W1Vuv7jfYG`glLwRP+(dLP2B&vKZK9e+%McyCR`^+&n83 zB`I#{JxtK?XVy0Kh;OrP#i%$L(3eUhABd-}xjQsY zPdWa_=0K;7=JqW!4%R&OkSl0?P1=17E#v)n4TdWZFnb`xHaK={x0K}~fMTgx((TjH z>`l&8lNCNmbWre1Y5*Y)qzyeG&R5_xh^_aL(WJ`vh+$~>dbVN;(1vMmnei?(+XaCEGhnFj77h%8A(v1x?sXEqhTZ2?| zRg15<*&5K59VYenQ}Fssox{K*X4W{w+MkK6bR5gFMg7NQX9+*}IQW%m0eIrSi>f-H zZPH+kqUK{JKMHpZyZB$BGuD=NhwMTyBif<>R0L>EP?)<-ej1i*Rb$=_pzo1#_+9AC zIzk{uG~TY`RjiVX#Omgy)1 zFX#$VXkpWGSR6OF%co{elBq{AEt!(u+eE+c1(h9J8@6^PLyAD?z9bt~I1}89koX;dlWnR?M zU&J5F7L1(4Cdpb%s3YygWYx+E>@R~(*#ioJs{pCp5r8{*OD4`noIaRf zV%B4$$xL}}pfaUnphHMZ_->fQI?mscf#{qyt#}Hxp<< zs%O(-g=FzMrljzLPYGhtJv^yNV#U%_8TX`*<+0LDKjh7jsbFD8+@)YOl`4NDw9^X~ zYTr8JzVXXCbSt3HAwpu~QR{F+wa&j+JMomIrvhVKTSsU-i(173*yTUlU{L)sT-U88 zyxoe^dLOz@WLoIS_$HD6yZbM#H5(8?%1LqmrcGhm!}6WIK0`y|5c>hivctj}0fP@$ z2aS>0=u*5sAtmG({63KjhN|O9;6jAer`GzX$)DB$a*r>HoRHPNWf#x2x0fwe)NqCUR42a&7h*vUmetpNHj})kL>MY=&@JT4OrqyD+n1w)wJ|UOzKwMA7^g&LH z+5NC3Z&egbn-ITtw+O2J%2mfj&`3N#es}0$^Bt>P)njSc}$6I~m35^yd z(E(95aZ$CMqBGKApfyS%ut(k~pHIjjm&L2btwtpw@7~~oUF`X@@qnOfM$tawyvVHd zp=*I;8Ne#y5&EZM(n8G5tzo9JwIcZ&!C`01`VF>mXizEYGVmx;~*!4 zpHCOp>GPQs8;2^T72w*eTMu%*&r(p`21o(CKwk*XR?C&vKtUu#pHAMo&W9~eCm$c! zgPB^+8#!Be))m=(Q!Z}qAT%sePs;ESeV&bzlM&$Ac#tpb4!dC|Zzpf-bHNB)FglAL zk86k&e`IMJ6aU4d6Qu~N{z<o^iL^!Mz962@Th%*lnT?}u5jSb=z$joagN-uVcqNQX>Nk&-Ra=F z#IcbT(%*x#!Iu&@jZJpHc!j*E8Bl3n8|s{X|MTGhC+^JQ{hd7o5y|5bq!dJLsa2I-iMvt=n0$=AuD8!8R@CK+6fh zc~bk`Ch)U=mE_A2Gg75R1&$RIJZ{|G{)yI*XJXSA`!#CKZd?x-nW&qUT7YdsLq3DB zeU$$y4K>+5y$L1EA^&C`+D;{rE=39?*J@CjGv7O&o!n@Q9kplp%#!W=9+C$`q6e{m zk>>qoqofipUqwBK8Q>Au8W5kBQSKz+@eXzojy}7)o&n~#7n_yQ;jo|!X{_;YXRT_Z zPKAG}_B>lWFr~p09US)02PdOQ#FXBV-VMzweTj@xFq~s`$X^~n&dJ3W|HK6;UX;9!usJ}(cMgofbO9Q~j#3fUssiq=CC zZ#6#S{ro~T$V-61^f(hBbpl6)kFP8cOkl5`>B2oV|5PjH6jzid0`Z|dy zCOxDpk#t;eRd}v6rGYTPZ7O6tTJkn;5obu&c~afVs79-DjTn?@*v(KNKsAY%#9<1? zU!hXS_t3R`_fZ&&-BJd|S0opT!(Pkm-j#|A7)N zi_IZYg}X|8L)3X#WIB;tDQQ13*dlpO^&cmN5*hMog=<~MTAQ4%FP;*%_H)n@^&;;U z+ll>(U)1ddDFwe8Fs2=Ww(}e-ba1fY5h*9tgEXlXrz$e?%TUkP^GLOFo9$zuRRB7? z>*2*ovQoX)DpSQ`-MC|e;JFCK6lp|1V&(+=RXD9OEp7&pD)V8Tls$ZZs6^=X)JYW5 z>CGRmyDTwJ7a>}m?Sw~K9?N1=`?Gk#B{OVhwmPD8QD)6%xNg}}*8l^F}r|0Lj;JU4O`nlI5Jcq#3_KMRs z2d+~P4jx2Go;+cF(N$tuX#AUvpHC>ijU%^pWai3ZdfjS6Ft<2|K!-J5)HPy?!7-B? zi4(%yv*0~Ek+;-=288*TVb6U`yr)muZb4{*=}j>ZqNj0ZbBH_vd~qU|Q}qb#en8&< zIT@q+tth7eiVd10ryq;FO@6pSomnFu*)VTICu5t z!svlusWJq2k)#%%Xd6{eFnKE*8FP`Mbxdt!GIlsB>Go=y9HpM`gOs3&P3NwPJ=D8p z9~Ifw3L7+F7n0>lDpqQ*28u?q#7w+%thQ*iRc4^AFlwS++Tk>2n0{ky`h%3HgOD66 zibF4obs@~AfngUOrhT-+91m^!ro>Y9mJ%?i%WKPsi$ZHDmqKRM4X$Cm^3-3!<>_Ny zwx>%$FaZ>Z{;Gjd-0GnvShI7;3rk`&a)I0^BF(>dX1B4I8|z8e^_)W%Vj&;CIxmAt z#P_^`(d!4kmP!YM?f@Lx*7B_H!L$h;hh71r(l1;nvqnXI^3Q^?sAgER##iW6#KmYw zSw%7){K8_c^D`(jRG#HRwL|LPMMk3JGyoK(9@;fEyHNBe^E1u1BK@eoG> z+`G=TI+W+DPE2K_2;)!*q#8OVeFXnT!6N#G$#I<{n`D)=bli!dWBR!)bPgXfik2nP zyZLy87^%*Ric`T*IA$+Jfrp(K41Mv@SBuY*$lS%0k@Y;zR-}&Y(V9PVozh*~RmDg7 zC$b_)CHyOrr*FYlHeQO8p*{FMjRa~5I457M=(0x%T#Rcl;4irJ2UG6nCsG&CHaQ!6 zI0aRmp8t8f_xX4;b2`0twf4hvMaR?UWujgp1T}<@ZBC`yOzH^3pj%U4yCeyQed(}Q z&sSPm1}>@e0SE&BHL+0Qd>VDABNu73Rp2kGOit)a!&21vl(l_qUVMHu7??E+9Ce_k zvC#en^STq)Jv+*v_1o}e8Sp`#bHXt06faGxCzxv{nnw>`ZD0=fME6=?@jVCW#t^ko z8l+(_m7AyH8UF{r+MIRhTR5T}o#OY223KjSDzyg<%QS+nT3wZjxo|iy^SLX+bQ}`l zveOb_Uj794x(R+8KhU$-=ECO*XpW;%`r!H`F9%s0^{l?s>3R&Cig*lKma-*=f1&U1>OCZfu-lP@kd2`zt|p z7;C9>9W>nRQD_*CtJlx}^W;zUQYk~=MX~c9T7}7ZO2ssTXPZPZAUP)A)SX%vz}IL# zHclgV9!XUj{px?%@zx32m=vMWD8ubtCi>4~eXBymxjuP(JJ3oUQq5iKLk;69T>t3z zhUT>`1flcQgb#WxoDX9=5F87~OZznxncLh?&gzi1*mVzLv5z&&0c|0Rsu!kcD0d{^ z4@{;O^eCU;2)NY<&R!-CX4WJda~&jT7>7AjOQJ#g2jnoIJj$&+IlutCI7<53_eiU7 z!dqQ0k@pul&KycUpEul#9X`Z^)OY(lsuQ0?%bEuW(5vG7I_aKU<5RMuV8{O&Ee zG!{cpZ7|d$tRip56gC*Yp($}_zKM3DW&yMA`B&MY+ARH>6RBjR<0ObUonndqU2GIB zMGz7toJmJ{pbVp&cLiNqdO{3V`yc78zoXKJg2pcK&s>dm=cmY-utj-%xjl?) zOo9v^LYfr1xb1AwBZco+jM&PPN?6ej8`zNvwgehd^ZRRYn(|zeKj1nsg6$5Kf;DJS z!3M;yuIFuHIpOWwkh|PHL4jmING@=cbN$jK}t$#${^vQLZ zt~J-B%k9;4N|>1QQimD^V!?9aVC$}F26YA1SRtJbD6uFGW%UX;9g)PqQ@&cqW>H<( z5p+!@Fq3Ha1My82Muba+BGq5MT081&T4}Q`9=qSrr-N)su5w1|IwGzQ;ePn61S9AT z2-Zmr!y;RQKZ8AeLp)Sy+PkZJr2t+LiFrA-=)2Hh)^zu`_>?k=I&O{iCp~ z5sA>Yg8uuP?7CUq6f6Njvpr84M30mIJv`b3NP@e)Y9+L8E3N7b(}0R$UCNT zq|g(I2}F#o@xzm5=1agRgr9r!CT&AI^qN8ZjY!T?KddZUJa7!=A%HT~D{u8B<_5@4 z-xL=;5z$qxZH$e?P#{-0-#yMd@^yNZKYdM%I;QGblg$4`gwNwtys!~ZmmF)%$M5#C zDDp;U!N*S%K(}NG`{zdgwJ_$y-@JVnr-% zqg^?Rl#BrWw?BLaZmQEwC?gf}F(~DM4VSYxX-PLiiiiO3sAe9*unBtSljp2^wAL9ofvYZ z#y&^m4vsPE06tzqPGRsFD%q~_cB$y4Tl-WS^9A?6SLw8N1}ixj03Z)HQG%HtsQs?E zA%pov5c$2gWItvag0`@tFES^N?(+{k3A$xpTqz&TFHM)_Y@-ORt^VG6<9Upd6(_Xe z`y009B#ZUrE_<}?w@$SLFw5^nELBr-i*~@YPqG@bI|uwEVREM~bf= zYnU4%!K7S_GGwSn4r)$4s9gh$wW=Ka>o?JhnlEF~7%0W5O6a28oMg$Yt$GIdo;(w} zz+I2!uOR~Hq(HX}GwUDsS;gVyT^Q-Vj*#7gwh%5_oykc%a?l)kro~5afyHw7FjGS| zi$*k}7^Mq#&N!1wadE~Rxj$|j)a~SI7T{y+helE*Q_&%4#=;7;=6{T}wwlRE^Tnw5 z6{OJ-LEv1t(l5zDOP_@z9CE($X_{oIQbam}hao2w4dR*SxXPro3v+EkANs}6n`21ezqW%uncJ?nSsTKKXdI%} zPrw__&nuNko-I7v5pYTL(gTDhj}Ri|L*oF)P6NjYgc3S@-_ZSjFQ>J{s)fK0mH?l( z8RB&3CNPYGZ-sJC9zIZbP}(U~O&(gw*3Q^^5rtz1V-{QqWHs~V0Zxm|pQlkhJ#w=N zj0j{eKA6gq4ak+v7+f4xt~hRgJt=loe^qhwj5Qb9aS_0kyZjO(w5Welt!|mE^c8qq zD-&q9O|{X#v&RJsYvuu94hzN1gh1bj^tmcDD&xm+;iw@GKG+Ea5+4(-kMqxH%1w>@Y=8F$khs(fWd|t7^REmL0!yr2hp9{=*;~|yB)Yr0Gf_EZi zhAxRL*dR_nue#uT$8#%b1abZ0xb5dqQd^wLD%+RZq!!udft zGcN1B`b|PbrppO(GSy6unHd?hF?{^^rqm(OV%;mwz8bMoXa*`8e}kh}7Lr;iL^EM` z%=BUB$jZ)!2K3I@bdl6&yzQ~~KknhcD@HFK^52svVWl5DE$ugXhv4<<=CaF`FJ8mN zcw&(CHSGD@mdnUtB6)RvZ38sEbs8KSf92)>b?b|6oycq}>t4t)HG2IBXdkTgN5`}9 z5bsi`311mca=K-|@O{Ko{c|?1G9!lg?ANO^^7tl$0(2~hXwCmHt0=qcdYW8$fUHj= zN7$Nj{k7%2&67Aei?s@aDA+vnM{n##o$y?#HZ&+GL`fJ0nT8My%^f$glQV$bU~;s9 z=tP#lP#7X41ks#?)i$V`K)25q!*TRw>bYV`Ld>dGMxPn83to$a#_603aZ!xSoM0$m z-$wmRAIJltb+*B#-qKRU3Djn&u|8lt-Q;PUjV?T&|!yFEJxKX3>(CONyUduf?=X>U|g{7uDgam63EZQBS^zm#|~ z*e%X;>I4zE)Za!%&wMgZ(4EI`*b8_?c7^c#1Ekz;$*2t=OQzlIu?tacWo|t6_URX8 z@RnEx1lQ?NbB5d#BxfqW)>LFR-PtC!WQXLB^mIaH(kWFd>A>QV&T7CB>%!jOHcpLU z;gO#`ugp!kdTc_j;oJYJzNG3id$(LoMX9<~Kn8ybzND3Of#(c(pMx7wr_qekBDwaW<8{Di6a z`WJUmUL3A!l4qe))H6yQQD$_0H$Mj6|H)2x_bEsf!F<@(ORn#FAlIe5i^S@3^}aW@ zzJ(1WF?6jRD`Dm!-HXY=#z>=&U+ z`|IuAlo2JQk8&{<(puYB#v@|#mXk8aXsx;qe}bDL1EavlMNxxRx2GoIw`N|NI=n@( zhnxFzvoM~MbxN@~$IX-@;uTe*JfXq@i8s~OwYX=lfTEX(1{wT&B6=wZKTx1d?M#`_ zT^LSG=X914`%sjmU~}xb`%y$*-C0BZ=Ch5b4l5S2e*cHOSjrUV#N&DkcDp$j?3eAQ zjC}({#>CM=+NVB)<_0DH4D{y-&Xbt)RT@C8Y>KR)#C8hD!^FpmE}_KlqjyK$wOaFd?BWh0NlxNrH;9-kA8Gs z-k@_Ytl=GN2$+fn6pft?=8C;EB|NrRz4e3Jy0G9awiuXVAA7{piNPJi%|2pu0ftdfcIVA-o of{>vl>hQt;+w%YBOaOrNf4niU01{=H$r3C0kRfMy|F!i00GJp$%>V!Z delta 12824 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