From ef4166c9c0fa246af79dcbafbbe349a58862c511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=84=E9=94=90=E6=B3=A2?= <10549902+zhuangruibo@user.noreply.gitee.com> Date: Fri, 15 May 2026 23:40:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E8=BF=87?= =?UTF-8?q?=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/执法单位设置.png | Bin 0 -> 172461 bytes ...执法码数据权限过滤使用说明.md | 601 ++++++++++++++++++ .../common/core/domain/dto/UserDTO.java | 2 +- .../common/util/DataFilterUtil.java | 155 +++++ .../service}/test/DataFilterUtilTest.java | 146 ++++- 5 files changed, 902 insertions(+), 2 deletions(-) create mode 100644 doc/执法单位设置.png create mode 100644 doc/执法码数据权限过滤使用说明.md rename zdxt-web-server/zdxt-admin-web-server/src/test/java/{org/dromara => com/zdxt/service}/test/DataFilterUtilTest.java (67%) diff --git a/doc/执法单位设置.png b/doc/执法单位设置.png new file mode 100644 index 0000000000000000000000000000000000000000..cda70f85aa547ddb2360caba8de0c03282b3e75b GIT binary patch literal 172461 zcmZs?1yo#X(lvZ=4+M9IG;YD&gS!Mz2oT(YJ3)d6Xxt%qaCe6Q!5tb1?(Y8eojY@9 z-hch91r78$ryr@OYS*q^VXDfq7^uXk003afy^~T003-(hfOkQLh5n~kutya7g5vP* zy)yv3>iz2*CV}Y{2>?(6a#G@&?&*ii9^RTWPomE^{5PYiiuEZdwBO-rCH&tZ;J%~8 zs*@is@Q>1y78g4lsK*8A{h*NclSb7nvOSW8$HikjPmqSy{Q<(F^hXV+LV@|sNeg36 z|8RJ-a`CXCOdmfefgd7v?<=w>WPa>w)fT<}>36L3+9qvhyt_Qd_4cXCKj;LLDwf5$vd-{AcBhMeQxjk7On$Gk+VGjL+d zM5d8g)GvqoRh0iclIlwj7;Nyoy~MSeC7hP#xAL)Gdu|#Aj`}4FCN`cUS}KH*8+HG6 z^2mmx2dx~?kL-X8qC%%NiR3WUEmEtX0E55WeBbm6!BqNovOGgDM;s^&R%3s3_$XQy zY72h-?}1YVsWwoBuUoX-_#`%+K$=?bPd0GqIZUwqrH~Uk3dYp1^K?W`<3IPmE9)^W zb2ct^(wS>MNDov1WEfzmC3*-R8K}hGop=6Vi1&T|wTVJH;Bw|t4={n%RBxO0O*}aN z`5df$9!93pm6uav{pTwbf8)(QLVq_I4n%Z98u*WSw>!SGvJ~A~vx^m4a2LpP1~bw7 zdNE?Os_aJMMX;bZF!7jl95R5D(}nM^5hf19O#Y3qU*Eo!w@%}mWJd-f2-4I1vvN7d zQn-ClY4tYGb1xg8d)&^Tt1H(@2-i=T2Sjp2cT0+f5l`yq*gAvpjS~((Hin~Nn&r=> z+(6P#hhND&GE5Ph$aIBHv5O%wsK^Bd$k zSq^Gvu^e*LVw*n_)N-|^j3bX1dWxKz4h702`Xt?pI5~L2^S~P*z?sj`uHlbk3w%Qa z0N@}L8sbWu!24tU;rqid-j+pCsmIiO-wfwsHjE}=SWleB^LD7A*Rpi>=2e51>st1B zR6yO}-*e?Qb8ED+wtZEoANQl29IY7!luulzUWhhfrCDYZQX#m{vv`{+Tht=(WplpC z*@Kb;QOqBPJ&Z%{V<$4ywh;mNZ-L+TzUI*v_Oe@)>FQ5a=rj)Zj1m|x`<+iF$n%=z z24cnZLhRm{1`cnj3m&z`A!UyVxw!#JAi}lI&HBy(bwI zKHHa&i{t5dREdcP{Flrg`Y5u9_&jezR?CVSZB9x8{(at5+2_g1hlYqVl&#-NsfMrO zAHAZLE2-gUWU>aj^@iq7U1XQ#^j9vBT})TKy+Sx-{Mq{nabU#a{5ec0v4MVCAb0)4 z`uM5wkE`6=cmZKOI^iV!$D^1Tul9BuHxyD?kSd*u0eQdFcd6Ha0jnCe$B<+0pVttc z28q1s5JoNH%pH{c)y%tRZ8UJpHXBz%jnk|#zVyxB@tYh&PD-prJ&klluZJAQxRLGtLyVfBODE~tEV zB{Bi)B;R(&})_AX$Zk+5fS$kDVL1u@7 zyz?c3F|&D@HQEVX3`{GBD`Xclyye=o9E1V{E}1&dGum+Dv3k`lS#~(IXP2@GtIlbH zm^9Y}pC6BZ&#=MxbL7lb@IHoN{c%4r8GU@H%#-ha9{t;5pdN1R3kk++Lt)e}8^Ix; z85ynh^&+5_;;ZL3Ml)^5(a-v%3*wXkklE#1kBs=`8RGp>)b#ASmt##ILOElb7>e-1 zotvZ+UKQ2K312n~o_rHN9igL>Jut|X`Uc;b{EHBe2n#k6MKjK7*)Dp+BRJ5Bdd9!! zIF3;8DXI=S*zplGTj{PNFGXaQ4&6GJg{53d0I2xmV|jjKY<}{5P#DRLuIR8-NyYZ} zLhri1k;9%Xa#a9NYNyg{97H!~&8|X?LI*WC5UU%8N(_L`OkJK~i!WEb>$~nuIMI_V zJ&5#`taL(;`jJUcjV3=^GU>KeQmBLRPQpSuYoTnjo~4d87?;pA5*x)|E)EnPNQs;a zYFZ{Q>{+W_I&|UAU6P{{|9H$3d0c>cziKtwJha){92wS~yW?Uf>(YaYn50b5@dT;f zSQ2$xAOlqOR2z>}P7d!5T=NB{8xsChzkE2aOrbG-*p;$aX5lTQ`mev0*zJI&34(<| zjO0L!qYcZYb(f-lCrXxE3Stq}|CEy+$5GW>@(MS+(P%Arc2Pd5uyrz4M^74L;l|OT zPfe{V0ivSRdBa677s(OEfg%=1i$aSS*<_%cG{t~a*Z|IMXwBBtt#Jy{E(QD>Rye9; zO8NAIZ)cEOwVopmqODi^{g~5E|WB} z7EZUr-T<~l9nw@pbmyDC3*SkHlRNdw$ZRz}QIk7jGOR1SQh2Kx3=jw)r zr?>LwzZ@is!V?W@xVqCu%ro@56yhZMTHw`tiX?w@IyYn01zPBoSaTC+ZV={oGU4We zIQ#uMfNnz7A;2G4bB|VMl!vaLV)K>&FTAMgw&Yl5T{Q6w4&W=my53nuPl8o~GGQ%| zx+?4*IwjWd36n>0ov8$ZWm>zRPVSZwjqk5D;Gkj|~7{Rq;}; zR3*}@ht{aLxw+Lo>}SS)2wXxTwP@Gw`XUgjzlq|2s$7g-w{-L&C$&-)fhs*TERdG- zyA&o2tcAQJGlnt#W4?L%A(j05tB4^6TU3R)jdTdI2ISizA=F!ZZQ8yLoHy87R)NBL)4|6rC+)epxjc61nVHYe4<|?-{{>@K z4bXWE>$Eb6X7adj0)&_Mj~56{9tckL2g9s_%)AwU=ntv6^naFZ{y4|m+QJj!bu+h^ zG+I?k<8g87963W6f!@q-f6SFp5yn$1r2MsABftf^!W7OV;Su`0=3h!q^3VW2Pv#b1 z5BWDS5N7&-Ug*ITgKByjZX@n#gmEH{(n2PElc<>`oi>flZf2aMk z=!djXXzT4}cQR~j$42nhVJy92VAQW=Vts&@!i%b} zx^T6J2?qF+|77uo4*x#$p6F(>@ZyS}qTIOtKqAj)?J|7gg7?-onbTRkKf}RpY;mPS zIC-MMeW}PIsq5Sm9wzS)Q4{)nxgDL-D!{x`NHSMQb+Ss-2@A z0uzTJupqIXnq<_>&q)%ksA%@$ELr+i7C0^xs?~u23|3=sQ#7iQ}7=T`x z>ts+CK7LC3^R{A5+8_z!av~>fEpC%*RvL*t-0E9=4aqmIGdwf=SoqdrWjh z$r_KUiR`TFUz@cY#ZY5tvU@_xsL-%un6lRkCPR06!C7TFIz3pwI0ef+t6Yo`=rU`6 z6&HP2h$i^a5CpKBkRnl~-`3EYiPGq3X5Y8kW?UFyi@$dih0o}rS?hfHE~SO zgrJ_`XBVu1aC9(gzH;eo5!fyX9u{sN#v}+9hpw9tcozpLNP%S+zx+nM0a63mOZYB{ zbP<2g+h!aP-+yO#zxyle>37;wf>CT~S4yC}XUJI(()G111yKQyjFq)bxzWT2=K@Tx zt>q2aQ$W>d!&dO=FsLfBtAMS;EifGPHt0J~6wPy2ou40-u=acBg?n3+-?tA;L_To! zMZ-oud=H}|N#rQVpoj*H1)MpBVps>4OZrcWgd!jg^W6gmOws16g~AoPXI^mtAQalp zVW8FH8`{!s*_6Y^`Yzq z4=;0+2VLQ86@9;Y4x$%uURu$>{3&U#Fr}x|3tM{9OIOU&?ty5pqjxF7$sT~pC`w{TV^AKNtMY?WS zIO1t(vkf?h8Wd_beLe;(;C~+fP-El6b$pWbuyq_kMN=4gIPuAp|CELA*3y^DEMVWr zGCpKrT9iq&NpyHqeIQD)Hsg2k=T4V2}dFNEGBC<37$r0cqOtnbuEW}{QwP)cTThIO|XFL@zC!PCc?LsqCoP9c1@oE z)I%YD{m_+5=W(~=b~tpXyHy7v{{(gH?Qa+6M(5`;yFZV!8CHLWUO}c@K2VTPjP7|? zsl;XW^7gKYpNmD?+QQTL7dqlsKO-S_OaF*QG`&Rjdi{ zfwpMFV7@u&oA4k10DsGU_l>tcKl~+C%;S8l+vsV7{bl~`iA zEeZhCw}E4Qc7yTI-Vpf-J)I69HC!S9s+KS&^W8W|1h8Ujnc^xxZCwu;rXB`h#8%}( zM?FQ&n;MyHANQK9PoiMHp&@>^VYC%d3~sCpBmF$*76SnIFt{=KFm$3d{VoRFIA4}jZ+@`JcWdQ3%dyKl z$3}b{8^_ZyK|ud=z|}`*<|QEPwgvlNNU#|%{qfS?ZL=7I29qE5K6lY{BxA6hHzXD#E4zmHw(LeVz%5%!rFUPmrE0tB zpy;2u;liuH>LUfNE%aupGLbsh>%l*U_eZ1VHEAQWuWuknK8w*~=$?`C%=7g-OTXlL zO#fI_E##}%q+akq2gXs?60?Z&6t@atb2CQYBh$#Df%6xz`_!K&3{c)Es19)VPHnxp zu~^u5YdJqU&dVR|mmRzN;?_e_b+=38qJOu8ws}~+0Q)IVT-0{|#}?D5Tl++pl1cqr zR4wQMswoTgnVYN{I)GvT=(#9V$~at7JH}#hLyJZFGYp3Q-D+xKZuES2o!Qr6U(KeW zOcKA3_VhHhS!G##B;a0yNROf0{3+J2=R5QX031NcYd@A9@PvWrvqbV?m6{M>chc!N z1t~>^$HiH@tQyvH^rH@09~0!6=3cob?SA3&BBbf*sk3XS89HwAu1gGv3kw9qX#3S< z2sJ?b62=KVmJ5X>{Dv!4Bx9c`NNc_0=H&-p%yv)uIIzs%Ihg;3VJnWVkzb7$g z&6Wl`bAKA=SFkvN1N=9$FKZ52YZqm%e(gA+{g$y#BQ~bZr%O5-9ibq{alA{#N#}2A z7__wO8?<$5!jYmEO+_?5zSbt9ST=->9gHbZk{eyTw!{}oen?GPj+6fQqSEYy=uUZXHGQ6v1<6n_TPG3pAR#* zcx^qwHULr6G&c`azzSRb&@d;^h@2oV*OTjoGx3@zr>w3?LZYs-g${-u1H_)vAQuqKF`)*C<;!6mmS@ zZ-+}rw8E%BNAUl}9+gf%jGL~h9cQd%+M!8weepWBfb$^7KH}jr+}n9gvT!V=p0x3g z`C|s^6lFm*r0|avgbE^Yvh=l zNq;IN9~0t`ySZ9QBf%HV;9y40_I|NGc){4fZx>)K-|VDV5k{|SUWR0RC4VPZyK^|o zTI9Oh&CS6OA0K5_=;l|dn38UTYq-);G0;})wUi(q)9h0yg8s*e1rQT81^Le`NbKyEPZp|B7=MBs z>fLqaNQRn^q;flN|0W>>@fHiRF1E}}-kf>qA%{m?+qG$K-#pIGejOmrWI&2iAR(KA z`2J1h7^nHa(h>?Xmg@LDB7;yr$U*2b$r&h673eR5NlCTvdz0H4~c z6^;C^mpy7)6}HV_(LF{xikenz)pHDVKkY9S-W@)tE@0cfh5YWCw{cBdCeNLL?ffJD z1e0Af|EWeW646KDD;T5MZ-~+#!lpn4jSRoYueSQ5^o<~*W~yQ_8$W8%e=XAM;K4@5qC zd7*)?AOMb1vs8^KfibNIkC<5fy~e;9sVslL5GjlVGC&mx093fN04f+OQ~kT{LEd6j z=^d}f8&T}f(v`4g!2%x_**fT2wTn?eTpU zvC5NV&cERy1=hVn^sUodRKRfl)U@jtkNdxC3WG2)QOVstYerBs@VegT`Q`t-J;Y>q zt?F#`1iK8898OCaEZd%5dQf3V&@*e4AvcrgU-*fBBJcBM46emC-UzOUVPwItgw*6I z&@jecSw-$Ai(cgy7IgAN*!U1-4AA+9fb}cn;UmjW{qYA+ zy0O2YQ}sIj+zR5M>q8UdLaFAVn_5Gyiop{yf&o5qO&eMBBDQ_|Yi|YmCXfCFOM-Ko z%fMfuV6e(*>F#<)R!fiR+${?|i?bR@EJiK9ATsbT!*4ael$mTY-foybhh4S{e9Gh{ zzAPiyzi%dm6n*j-DE|#jV4YUOpirj0y)DCj^kCQ)nzinlgZL`Lp3tes^a*fEaelrFe7rb?q^GoZk^!3$WPFu=p~l$>rL%7hliz0h zO-6`gg1z>OphWC9+D0e@rcJ~PJ&-^yWv-ik)-^KJu!tzGw5(R4zm9Se%+RUO1q+=u zE-S+Ke_Prbw~|B##vDm2KB}{Pzy*-8qIaalq5ePm*BS?$OaS&P(176^WyIvu8YJVF zsS@ldv(>oU#+8c4v%Wvep(Y4Jt?E5Y+)7D;=^rzeed=QE2p?kTU7#qN;B-;(!SDbEe`ih{l9m$gWU@nHZHS6vbc_)+i6 z``egVmG_UK=toG_{ld=XXO)#934_jw!?thtt92+wpOMQ`!dYbkiif z$%1lZe@I2Vzg%bymi6^2?VL&eoi@jhZh5{$mCaZ^T!%3+T8%ZJRm8sx$+WK4W;a%; zO}#n19k4L#K;$A$bu= zsdfU8`Hm*Nm1SO2ry^k>#*6Ov^*DKb|jlA4XK9A)TyS(k;HoB9>`F z7Np}yBgt);DX9YCQrb?*EU#b?rZVvkALsC5@}4OmqY1zm2<5x_}q z?QaH02=EwDf777E>2&A7BABl z6+Ky)d#N4T`*NRIGINBYwzOwHh7AJT1S-D#9v6A?l;x0f(0ttO&?cL(zF0Y-Ak2WY z$leZ8$VWdpAc#$zcj+ay9Bed*OjJY5DPKIaCGOGN-1OT@U-Jm2d&_JJx zUj1JFB@AYpNet{+cY{3~&{}zX5zOH9V4h#fyi=oSJ;X+#I33_P&t>hmaCv~Z)uJ=T zYoVyXYvz||iGlP^(aS*vrojLOEOIG`fNCR@GPH;5yhSDh{M$?}-kf%? ze*m&e>Wo@5WP;<_`5WK+i70Ya}^gslH(W?AvSoy^K3qY3ixX={pnr3CVIoH&%ITOsPZ2z zK--zyrSh}SEGzIWrT!xs(D}e!kFIT`C5S<-;A2PH%0fwYfsHKVVh&oJ71-`VgwTLlG>>0DA_+T)i)b zh+-CkLQ>?FuSC3Jvm^S`tQ`U2L6}W86hC5X86z!K`9p)LPJuy^05mTpaca&chI&a~ zo~C+NnPV|kySKHvj!>ROZ0ha%<4VX%O>JM)zLhW!%gpET2lH28OhG6I^MdP*ACcdq zcCNt23h#fh!*+Pjj02d9K16n9^X}UB6Ub|70x^GHODAovoDG&sqnTfQV=8hmD*joD z!X3oaS@uz}Sp76eAgoto+o3UmG#**&jP$enYbn449X>{kAqN`4Ksk{dnLE(hCanp! zY!NBlu)^Y`6u(IMO~tlw%XOI_Y$x;=5{fy&qMJ2yq@hTMzO4k)&>I9m!ovuMim$}m zS_2zJ)TVc0iq7I(9!-G>(pl$OIlIOD@O0n!!nUwUBw{K>!eig9S#8lXr&9PLM5TuI z{pBmf$iwaZT{>qz6Lpun%h-6R4s0(o$&JZJY=71dLlmidg)nE%1T5a3stcJ5Q$}OH zpJu`afx1H8F^{KPHsc{x-$ok^k0;l!11i4kRee>{M9#BzzpnL7*hIcmW*1EG0=I1j)N6W+4M)tHTSkP1+43{nrK6FgW~o0+S zO_X^p=yUfFFf7A7KcC~5hLGhwHnx>1n&h=&?gn&z^Ey6`i^auH`HgR#1#gc<$*X!T zY@1ff9q^>Kso7v3QW44ttt%n=57}mI!`-fL2O8k)=4sY{Zz-fTSa}+0$hK_?bxK%9 zVQHr_m5CnvY)Q5+Anr3pf^omI{oC8ErvO^WalSw;5ayIS&b6-6bv=Y^95{^!3?A5t zJ9p_<%4h7$NG?vY+b` zo)|tRt;<*T7RqG!<=7qgDcGf|4|WM6U|q+>3mxgkIM zR3k4}kWl;GJlcxUAcON%Jixr5pgpIQl6@j%ZX*M*S!z17ZeOww@mi;Y%9d<*66%EjyH}ay?x48$Uot& z>?oa}Hmf!EMz;^`4Px&mBu;;}%pb{rg<{{D z4*?N%R!A%~ls|sT;V!Y)d$%^{w01%J>#4dnpL}R*#GuuKU!m2b;`ALGzBq2PAjo6K7SD_8aP6oE2eX! zi>1vEY*;YBuK0)@FNRG^kIYO<+iPg?Cdh#_9~WXrKqZAOEx{mL1PY6UfurwoX#sgf z`RxW!8h7YGjZojP&)L`vTb|AD#_;ScK1oEh7sr0*l|tR{mwbV83qEL0hN=XXz?oMY z+`@n5Z3ugXH#FK@G9et5=eZoaBFZ3D-0rvWQpccbS3|(_;|*-*w?bn808CdwIy1pm zc8j7q(GhTf>MNh~GJ@z)zXyX(Uk(NQ$OyPb_b&(aV=DF!k7pwTA$>4EZ*OZh(GK2p zR3r62?fLaf2MAj%?F&OQp`mx`5`$}F=kbN;uEsnwbo8&h))EGIe=jV?zIM);s2cJ& zD=D~wG=EUQhXV{s&#xh;PSeCE6s~Ba!*er>x;YSw^$n+VTjBZx^_2G2-R6^7dj!>+ z^z&bT?zR4=0hZa@6Nf~c?6>Gi60>gmIX7cp16xYkF4`A(Lw{_eIZD=w=`IpHQoak> zZwS~2J4p^lEQt}w3}(dn&7fkzAs~s4H1J%?hlp3j^7A{ruVVC7#e5MSQaK*uydz+^ zV+6xYw_(>VZazHp40iLRKR|h7ytw&14Eff&0t5A4$t-^ru*>vcx}aW-7#-0V84XYozA%_N5_CxX zSMFYoM1OU&>a$a>2%N@zxi}vi&iE$ifPZI4a_MQ@D++yjI~oV^WxL14W)^=zScj3$gq;i$fo?L#vZR#mZWn zCtL-PA09}HBB5K8-YL!O-P;OSz98TJLEFRBS6^v?w979vcJ0PxLBgGU*)|>HIhmTBh=(cuX=oU_6XW05tCZHrpa# zd;I>?x3+8y#x#5k4OSrNE$-BEzs33yc_L`DR$$9OQQ^bL=FykDxuOS*vn)KWq|?&r zR`a$y5d#3Kl@*NVj};^}8CDodv!iuKM}VM1x1(V5Y{WS<7)I=|kq#p&hRUY5wvIuc z0R3+2`OK{kMl5FfDTbj3&}2xvkwo`*IyFu63Jr!5Km$B}o&!iR?XI0Ig>8H-Gl>L7 zA2W)__hB2qd^o6vlGN<9bTm}c3vP?ni2mKxPh_nT;#HPY1?%heqpvc)e;@C6+P?nm z6%-LkM94%qzk>+aI( zJWqoduaGX^jF!72-mhh|0B@+8$A>l6c)XU9m?~u=+Zb9$FnF@6(uL(5S2iCy?|OnW zt7*zP>7B2g_P=fHIpQu*%Bc13OM5R{lf?QS>~h&CUU6gZ{aO{Yyw*RiL6MT4c2nRt zSlK%MVgS{CKv~o+iHZ$VD>Ie z8;H`T^0pZ&Of+G|{d42a<0ciUu_tIieC#s8y>xFv-_SYA8xdi@N|z9)Ga*lqUn?%r z0D(ydaJv0DGS%r+Y8itAv2!=4QA@Oot=vBryS~F_|NbrRUEE(ni*M^Jv(-HA0h|>Y zI=FbU{R6M%VJK-Ct%i(W9w(-WP;=>nNQDe}T;~(I!i3Y7Z&n9TpMB0bX@mg25*GW% z^{V8`khc|+b{p_-#>b;E4$&_??5iPCpA~c`%8G5M(2(d7{J)aSjb4L z{w!e%C{)=I=4x!XTAZnd3~v#rY$jWUkN#lhztmMUkmr=Tlv9j^GEOpd{cu2$C+)8Z z2VHLo-KVdB3nK@dUonB5F-e8Y5rD01N6gTy9umcTHvbnE0RFGLmq9ttZ-@*?t9-Jx&`Q2yxoOs#^fDg6-;E{75T|K-$rHV?*pxVeb<*DLHGP> zBhJ^&47JYbwRyeK0jQgGhDwm2{OGTZn~vtcq!^bDThjucMENbZ7wXldGJ!&e0Qq5ADXxYnMlICfIQD&~ z2u12R5R|wvSYO*0m}A`O`TZc8yOiju5K7Mur_* zKIA_wkAOJNC7Y1y#7T8+V9||b;2cw2ED_*ZaRc6U=WI!sgGVn^V1mTo@=A7(ZOO!G z2YJF4uQJ=IXL(x)@d`Yza^!$N*g-eSW@I4dk~8G&agb&zPc*GvZ)1*d=i}3w&56B~ zTY<_k4x(KL-AFjmTSBKXZf|PA&!-tpJFGzO4;|{U7GQBt&rF5b5V_+hvU+D^8>xiMb*OL zvj*FcN=tnQm&CKcBT}j;KW)N;+T+y-uYku}59OxB+{sZ2Z>X*X%A0haJvpz8j&Xdh z*R6>rPr^h7z9L@p5?*>h)lufqT(qvIZV+afUvChywSeoR!s~Zx*D_iS^-yHHw#!uq z0-lGr{Wl_j{|wXWX%^W2Oo2`RFXc;zrky&bFmM#hC(k#; zCofU=SYedR{Z<$c!n4ztzOEr#-N67V#z(D~PCbASM+tCJcN>_(Des-Sce@A_PTAJa z@-1hQzuvF9xqhK<;M>W~U)+Y3=a0@KHN(b{j@@Vs-)|=IWyyH`Gbl}6xfm4zm`W<_ zc=Z6fx@!VDEvMTt_ThaO?oDZsWH6h1vNg}`8XSsi&u=leUIidcj-$^PosGV|@i@K_ zRGQ<{N|u;`-07JMxHLMRdakK%yHM*u84t{Fp3Y-~UI`X{YFV5~r1NBiat~!~?a@C5 zf$v_oVs=~+OP>4quCo6|M!D>Q$JgxiGA|kXJKu&guiqgFO5etNiNn(m1 zC*&Q4^2P+>ez`d9!6w7F9y(YmyV&4RMwEP^F*R7RFc31Bk;v33&sp{q2I=V}T@wj4zAv zFAPy9eXA&_!m@@-di?y4px<{MVlDxf-@E3=>g=fTW`TdszU6jGiN^^AQgX=UWasEH zqV&?B3L#`xT5silRKj~l9_^Gv9IPx&UE5lxH_3>+CYP*jS<{qDUCUUu z!6BDViI?CaLR@zr7~*R%bTYN^+=T)`1i`_m3-D z{&w?cQ(PJ_7BvSw!8RxTnUHAq3(E~lVzv&b#jp;gcqImnmEr-BScj6U@D0OuP7Xs1 z$USOG%jbG>$>S&gh+ZM0)<8(z%r3 zaZ>!zJIMKpl+TLwe!7wIpdSMFk-xQJUwl>E7Dbx zvh-t-ozdwXPN4eGY!#|sxGkyajT}2vt_w1=LjlCPoWXIEPE2FYsL{}#k8I_B!gyLa zd6Kl*nK?4hE(;rItv1I~f1)l9&Y0;oPWt9?$4FhGk4xbUUxHTNB}BA zOb4MGW*qIz?1HuR(b}3oaPD1V+--B-@eh{2_NSp}-j}lZpxj84$(;^bUMf^SwF;KV zTMzqFrM&7U?SxQXJcsto zc+r3rh#$~0chEXU!BTS1Uo$}NgDl!Dq|pL`AY3&yy+N&{3rS@&X)|z_38$gbZoZB+ z?gy&W?^uN+Yp>~)g2|{|O04#Cq^65-$<@H=<-f+UB$i*b#1}%Q(D0wlyQnie@I;&T zhB(v^>_e?!qeOD*B=P#j8vo{xB$i{f^SW`jJFwcJ-f=pkNTM4_n4PBD!oXv6ZD<$) zoe-hYi}d%=c37|2WXWyi>3B&As&Zg11zT{a)sbtAUKuh5nnn@c>jZA0F~ic=Jz%jg ziLQX`Kgd*y)KFzS{CMe!aD1WY-R_3Ua;l{h0n-1pPa#u%@uC7pv>gN#HFiO#X;oq1 zknC5BYXrm;ty=~Uo4Pf5g@)|b68DScYg>UCV<@qP{2lBHOWi7Vps zyIrb&c`?`jv`rxA=;I*%pD_k4!o!*UuOF7M4gA0TSvfpia(Ak#f2Bt-KtHtI1B+TT z!SBC)4pc#QH0`>We{}-pf`(E!p?xIb|K|w}Y{uiE0i3Ae=cRaJ$UqMGe#PNG_W!R> z{<0LyB`nXODkCoG-`h`EDM9q_<|gRma_q!LZ^{jdJH?0)5ORX@z*vkITfhGA?JcJ& z7sxOYD2PKK&?Z)j`pL`xeZ&%3eXCfPMC#Z7&#)w*mmw&5!I?G47S-@)u=1K7Zb#R` zP)U`khlCU*gquH4HR8#*3tByu2rSCCd}R3>?iFJYOa#i4)=ZB$DPCzjOI6}$I{h&*+j9x`O9eOGaO{SBRv z9oAjPUMQfd)oE{LdD2<~H<{s|X1}5fc4M)IAb~V4gF=jnk`|uQd~nd`nKc31j1i*B zeSD&|qoRbC<}EOYfZjBfl=eIdkI06f&h_fw;&SM|Pm@7S#12I{Nk329y@s%LKJiuhlVVT)Eu4K1mXk!cm}cm+uOPSid|Kv0lt5}Oyf?0!E%xAE|D1eX$vik zoIjP?iIA~u)S~{GHwot%wvGxQPwGwKWIMtZ~x~q>@APY*YPrXud8X7 z)5(IqJOKF9n;OP6ob^1gKi~-iB-gX}KASo-2@VLK^$QYJiIW=cUGIp7`B;1icPqLW zCik=UOn*UqGplHTqTt4=XsfGvJ@{C6ntOwt>iBV_cZ0#JZQwGg&2zt5a^#S`*X?n` zdbU&I&T-+*h4FLck3AlkVUmcfN9E32d$YmtE4X>c5wtn?wAB2&B!$QIo&EO$$Rx!p z+b9j6H(L#Vad&E=EF7dE?S}m9U;4q&Af<4Q_}3kwwwB(_ zO;ZV#h9U$v=jgtblMNv=F;pfVrgjW}{QnEk4AG#bBFNuvzU^e3+u&5-_x*mY!on9B zu)MftHE84QX}I+iw@o6fb2u42oY5did!CpLNRc1f@O)ES>GW>HMo&4V#z#e+Lc!hl z`I^rjWb;#Hg~V3F?|Ze%wtbYB^#{gJ6`85Ro;%%|zl?-Ce$vdj4-Ywsru0>$mU-TN ziickq3qmP*W4aj%NnA*GvxM(3XJ&S043i#p&E|fLL=yIX|Cw>`m{_!@?}k%c&_BK$@D0@`qv@R%~cJgCXFm z?`p$F;N6rN*QMQFx*yg$4$YM>AkE=k{d(5NO4S?0ggUhehuCsAsh};gvLF!|&@D zpW>THr{naE1)_>pL85DEr?29Rlioo}lNP0uTcKB&o`aYW_0VI|e>|^h<#)kj;;9)^ zvE}g&H@iJD>mOHtSp)Fhk4MY1Z?UwnT`BYxa>Ub*2i~sF<>En>OY3E4rAyc#UNRLy zncda%+%FFor6zm&QyY)#CmYu0zVm|FM=}Qq(`H$}{qA~#JVxqTKi71MkX+farhcjY zJZyMR^+r@+ahzuHkG|7Y>eeFnu;HLw+2PD3xk%H*%w)e0#%6+?Jl$MnFH84<7o^N$ zC`!+WmT49z&k!H}$U*(&$$Baz8(?vUsWcBuaseoqe}t54?9=?ung=I_rt z{ESZ1_-&ih>r*^=PqOIY{NuhByIoj6Z!{gZ`({MIm8~8#W@ImNW*G1yw;Kg>W|70G z(q$>T>~MGBHnyiYu{C{cmiKmQc^H%-s=Do$U6JzYhM!6F-xQFk%kNm7D(U>as6M=^nS1r-%&Oj(fo6^#+HED=YvZ!5Z7^@qr5Dn3Rss);?2m#Nl8%)2j^DZ@g?7m_Ids)sGQ@=|pO>q9v zo%6UnSjmP2+zQgn7ax7x&E-S6n1J!k2se4wMd7v=X|`RtFy4^aKuikNvw0+{*fC8Nv3!G{)(hmz zLi+P$Yn<_z!P6wka~^vFxUlekedDlb0ES;cwmiUrx9=M}Qpk|CoErsJNPLU6d#Z zkPskPu%rp@?hr`h?(XjH(n$zz!5xCTySux)L*q?whr38#+220*jyuj7`^Tvt(5qLk zRaLX9=6t5qtoxOYrM{Q+aAwmN+;I6C4XAJiLmm$OTjQ^AmYOUoY_t{*C83S?i}P0` z$PM?4pBH_IG%qk|p1`FC<6^1Uyct`+SC}f2!UrTasq@M#G8&YMi`#Zp#JOl9z!LgN zvW|@J@gTcW5c`A%fA zUJajn)cg!hPSxPprYt~UuDpzIW{QRFXY#+f9i)owX{9_aR(f1KttZQD*Oi}|XE zQlY7)He;=NMGjvLAPAcV8J!KoMQ7^X1Q*4!S(_l@`FMg{Pm36?8_ILILxO@t;lgwF zWcbX~01@(%>;N$T0FyGBv&7h%=Kgt?slb6+%+7u>r{1>2eeMb%M_isjn>Y_k9i!^2 z11AD@v!J37WQ|nT6r&vO)!Z^WEFgwD&JSTA=}$Z(gE&w|e=qMTix`DJ;bI#TU~e`P@{) zooMK|@A&2jiSMX~Whpt$D=l?5D<@wb;j{@AW#o!U7dMw36*40EqpPs#O0G%=zwPG+ zzomzC!M&Fe`6isAyIND5ciJ=Iq>h_$;ZR+MdMe*+@F@CwT-|!|FF|Wd8 zdU}1p>HkoiUOh)8y}q~t7pOV!t3);T2-kH~rKHdux4--v{$&QM!bX3x!i+(M9H*;Y z!@Z-uA*0jOF?|TH8SSff?g4`SfQTc0UlaFT^3~zi9`fCB7qZE{>zL&|xQJHPV37On z;Ew6Kk7xd#!!rrB%n)(u?q zCE*{oOrccVH*8lya$bwE7rv~%-&9FWpjpy5eZ^mR>*M1SOL^^|gP>n~HAlf!3Uz5~ z>=EPHxVrL=R!vu%89v>37J0cAYk&4O%y4%q&^iL^B!X3HDRN~1Rne|~LwiPUi5L8q z%^~SYsHeU+OXRvkJ1yBSIf)}xvmFi&W_ua;I2B!D!p18*u9Ev-=TVPz>k8fS5Uc$_ zT?X}r!UH>~)B!!E;tHhUp8B2OwfvcEOZqWMWi8XMpRoUo1)Ro{0O7GD4uAC;8|U%f zNC6xM$pkGMy@e>#snSMqp6R8Qt85XCIzo3?IPB@na^VWQhXA4WuSB+_6&SRCw6yr4 zyaz#>xcmrM{5#ni&Wz7;H{HBvk$lpUrf8va!7cHF+2Myt8(NZ&{;JcvYPKurNsiRn z@!^Q3S4gNmmFu;`fQVebhT+%P?RX#UV+419k|!|)fBhc#SO56Q%ZS9MgUOJjd{wUy zG67=HS7zQx&9ot;i7uBSDcG7el{j)T1orPEw4a`+MMzd55Xgq~mseIhP?^H!*=ieJ zy}D(VGC=yt=e+O#o*Mm?9`wIFLJQQ=*V`Mj9CHZ9!QFLHqb;C~Db;6)QBHBYC{xPR zwYj(^3uwq4!n0L_(7JO~pdSbejljOG^tQJ06~J^##2l482F7;^lNyqI#*uso!xbaV zd53CiDPJg_PVA%>(lwL=LjF&2q6TU!(l^|N@3q|=w8miNGBz5w%;`sBIBc3s(bi{vBIF4b=Kee(n zJ!ItiQ@mN9_Wlx?wqi4>sLjg@_f^7p5%Kpc;JoR84lo0I8Ddlj5tloxS#hD8{jII7 z{XqSH7cC>5BQECnpikHuFJJqlnLD=d{Y3ivCha^O3c+K2Cn6)P^{9HX=&DgSU!@A(PE9lQ_hQ4-`YAtq`_eB04 z@WG$bJwy1a!P>++TxVJZkNl+SEkl`Iwp=NzvEW>)YKm6QJQHFNb z`D_+V`n1NL1DRni>Of3Ye8JIg5+;;<{gG+~r%m>mg~-gRy`?0d2px(vz{qzA%}yL} z@P^ZdjLXqYL;hkLKznItUvWyEogPju7^Ldqk$kP;?`;sMHSciMSwjk+ui(Y^PbhD5 zQGK0E8COTdzT#5J3st?5Z%q;>Q2HwF1pAX78=W z)QWaYll5hnGb5;Y)o!^|N5^7RGCZE&UZuWZ|G$=tGoRw$ph41*P zb|rg~5zB9>=_M0bty8Ng6)CRPJOjkf>bGFBEq0ws!**K7iZy+XnFUZxKtRX-T;O|q z=OKcGH;OcQHY~NCPBc!M63RaiYPoq0&y7KsH)D+96hJ~gIB&ZR`jm# z@8cCxyB!l8)mxef#9+EzA?KQqh}*dq`gCs~;130|9C`N^B^ElWW3chtR>{t!c*r@G z447^QHa4oOLw02zJv*bztl&J4E;KH4KZVNLUgu65m{ez_jSNR!&txz%we|)3W`8&^ zqvNpiuqxs)G7-LuOr<_>PJt;jNEXS?e58g9uhSC>b?5fq*R+s<#?g|!;E))gH}CRM zrjnYhGUSOFW-Sa&>x@=79Y>CDG4`Wlo2KDqQu0N^{kATIJ-aVdCM$rI7CR?Rp?F3> zN^qs8?&xm^X3pV2f|}@*EW+$?#V7~Z^bS(QLFHHoK3Whk0?e9 z-F7Igu=bRHuZrewy|%I_X6zC1{;x<|q@T*5w%)lmGU5fSOTVy}y{%w#iV1qXSY zp@w}6;aH2bie}SN3Ljq~<-}l2OwwCO!9Q^M11!V5H2sopBcWjtrfstImpTnDIQsxS&)g%zEavFxg}a9 z{4Sl@pWd^fPjh#_-nCp6(n-(ZR5-G@e(tv?B4M2<1uuV zz$I9|cU!tBY=RU`klA#&QD^P#^kBfAHhsc0o|yH5XhG1SJjBT=QY3kOY(imE^z z4CZVc4kj|ynKUacE-kClGxg5JvD9pkNdfX^vh|XjiWsDcEKX0d4R(%AB#MI-U}JoH zw>9=`hWdBM1_*xHmmX;{L_-|Ttdfo*QGJ0#$Mq-4ui%h)m{wKN7-t42Cl?k9D&!Ri z3-v44=esfezSA^F)Mx?_8_;NCI1H)BW_4f*Gh$ElJLlOJUNJV_GB+%J#x5-0EMey| zw?7~3fFHv&ZPgTKOu#6Kc|hF(0~rq-+G6s+y~NFM*58PH(lRF@v2^A$gBTj4AjHjz z4jsEveX=k5v|u3=W_m`1{n9ShMz<~eLk#gBVbW|Qd!L@NE^%43sFK|j+O^hr*|~>v z=`|?%?kY!?y3XYynivGy?rA#*%O(m>D5xvwtPK)_r54>95HJqd`%blEgVJqhBWI_aVlX8 zOZCv2S0AOgtykrgo%z+w@;@!FukBvb_{{}kY?vAuiHS`$?tFzeD1{9uU9bO5QZ_**2k z0X-2rAcn$Dp;o=#{-Bm5AbHJ033QN0Hf`n0I-eh0vu@+d)VyPxBQ<4);?zt=!_?Tx ztW`^zqd(RdQn=!&I98R*5EYL+E!hc%8mzMQ?j{>)avk+UJ8Nnx^$UZZEC*TF>z z{djJMe@XqqkqDIPAF$+@)o@grpUTc;$QdpEZJ9{)CWA_HA8$X#th%AFK8mYHwD|)l zY@tSZ){LOq&YSXjmdIJksXB`)UXF>S2r5!7i#hn#WKFL&-t{IpB3m{ibq_5|*{xAm zH;c4Y7L$%eL3C!#aO=tju9?<8t6UAp&eD_|QrEq|>;bj%-MBT_*Qw~2a%5~2 zIR`a9s;noap`f9li05#8jdFQ$b#?LX?Qv9OB$uT7?gNkRDHcJ7KTS=E!kt_>8rLg4&~qK+w_GR)V1FJxC@`J~6`a<|*2hLvFW5_k7rV z{e>uEmx>}KWt}adAgqcqEGICpkhIotcZS^;{8+qh$@)D&!ELYvh+A_@7jmRy)RTZ0l0VI?&h2Qwlcydf6H9_;GVFVPWLf zlDTu;vLoy+Ls5UkIA8X+xrUL?yeL7dFP|!a!G*Fn)d@aTG>e61d!^?wTe%)b zeUY~Q2G0cFzTIgycwWr5(8s9k4~p87CzaG3N#lz(H{D?6wxdTkiN~2kG!q7yr@TA^ zkEd_FPl^`}$+1ye;ClM1$(Leg?Mbw^({xFYgDoB&yTxXelwe=t95o`ykos4CwNrhw zKDsRGl*55UO4#>MG#6Yy&D@F zjg5_BApwA8DB+oe#A8FKg|f33o1hY4Ghk|Rk~9;sKCg8fm$8f5cC>zguPSwfT;}k2 zPV{ptI%e}^nMiDdYj-uQ>Tzzl`7WnA10pWxLwLlQ_BPC8)H9y5j9pU*5FVoaWu4TW zRa}ps25gNQsv18OU1m*kH88LJwijsExek0L0*_3ycGaW#B}V4=AVNWZH zra!HsMwike&{gTPg>1($&na4RGgTG&n`e5vzJs{U+wjyyWC}RVprA0VCsG;s3?f6% z9kePw-it^_pVvz{<}G@^u_upj-$0I2GkE$^Ir5T+g_Zxiiw?Th?{USdUAOU4E8KF0 z3z?hZ;Fecc))@ILOi_Z{ZM&nl!Yb+r6ltr*GznMXk){PG{EIPj{DN8GXYB)OwrB|ed`%dSdbrE4gNJsW2 zDpiO>djn}t?pMwKh@WjP7H-PT8}gBd#_am$ySitpgOaXC0tZ=*1g z97E^gyBN zSB7+u(NOS4?;dlX_(^M*`cb)?58V=fILFyfv~+>_pz!{$i0xWAk5_V2c4ABdlsf2r z?c8zRUSO8Ou(^$;>?~m%6xQ8K#oF2z`tg|}jA@%kr0|DqPX|WSA~Srl^O#*j-d;kD zcytkTn#TVPz3$tpJ_6>M@3W^dU()xI(%U%HY(ox=GDsoQd~VnHPyDufBGo54Z7u6m zWiscCsD8!m^?m@!C~WG>3+W+jFknc&KY2syr)M96PHqT9Ha`^FbUJaW9am*%NoqyX zD+)=d9ZDZlv#0#<4)+)YH&XL9C0k+uYNZ4QKkJhGaTV*YmRaC?vi>GiM4Hgj*!^RU zqIII$yt`Sx(zuj@454WyE=3dMFoE3W(9WDjcgWYPP_n|%n7XG%JgH^Dnjx!7|1N*e zDZxaUD-@B5v7&UJvm7~e@$OJ2V>HaPPulkT*d{zy+6$>;aNV)Q&@1`qz1QKX+dIHhzmAu0&|*Km?q96 z!_!Wy?Kz9E$4LJFAi-UB^Pc~T1Mzxy50*^r{nhA_`^f5CO1(H*XomS!94gY4g~9FU ztQ@;V@p=E^z*myCX&JTPQ9fJ}*T{>rf;ky{l+e_|)L05T^IF+dn*)u#_* zK`(Qoq9&<9Abd@ut}rGhG?Y-U$i#+>GY-j}&N;;*Ia24xg26|^4bW51|2-U7j6nN) z@Q~;p-7T^lA&3{&I}$e0GU^HNgb-}v&;`TP$c>0Vpyck$#AuJgazu@HtG&cB6Z4#j zMKPRh;m$Pa`PH$C1*K(`*2N%ZYo!6EjDkwuI}H!eYm}Z|+rp%#2CZ$ztjxH%is$o54GriME9F+|mDLD(B>WYwdWTje@cku&uL&bJ>v`7(= z3nM|fH_#`Qn>voYWFJc%&eKb6Lu&9XXTq7KGOY`PuKa7;~1 zLhxBo8vN(QkUTOpgpu{Xw8;F1k~JfFukb^zp*Urh>zM54M?DTzrFlLOV-P4TNiI_W z*jf4Ki~vqINydp-Ir9m9B4(HwNQP;Gg{hpBBc}>E-gQT+5>1(5_t{c7$MkXMG{+A< z8KTh8f+ryx%k3tX*#)M{#dS~gPaAIh4Lq7T8_T!M7C&deq)ruKDBJFUpZPz*B&EuK z2a~nWAb#109*Lv&v$H}LgUDWQOF!zEt%NA&_6UXlw(w|eSzBW`N#NeMNn$R#=~fnE zDN`%Xchk5XrKeP#Ub%FgLI{qGQP<4 zfoF{r7UjTo?-6w!j6@Q~w z7jL<)qFHOZo!)NV@mMo#J*i;N-e_TAR3x%l0IfZjBQD-=lXT4WRf>tZR8M04_c)$? z+~}N87YgPJ>a7x;Cu2>i0I$Iw(hq;{)Po8!?vr&D8~`Eh+iz6t32QuljS{*yI528( z-JHRoH#0@uRhTjR{6*qT^tWpKV5R#($?Amqm`Pu|OI9oMnR!R+7<;a^t3Two2B7GrZW<)S*gHE;o-a;V_ga7)roC#qsfAaxDo0!mHDA{W?ii zt&7*azo?RoMS5=QWYAIAoPNcL^nSFLIgO!XBGPBlQ|rq&8LrTsbjg$otz`748Ruc^ za=+qStFq1SNm+UNK>x)3RIlT}olslL`G}s`Kp7}M;%39y%m*p&(2U&N+Nz=K*fZ6k zIx&JSfh}r~OLnHA358+Gbxc%mS8XCQ{xRrQc*3rTwFl`Q{RKMNW=5ev=TXluzNI$|GezB}}qYAk<9 zRbAR{XmUh!nGdYTVSX283noS}RznL$?Ltd|> zkN$Ssbjs?0xo@mXC3E~_Nu~t%ww2`MW*+zV0BB|ZN?={IU3IEa`=Chbq*e&yQU@l| z6-iK%dws`le!b0+gL_s+7LWX9(m>w!d(lGAGQsvDke8YAX`(+zM>ImA?K~lL$ibq< zeYbIxN~c5a(XKYEM^!RnXdHLsDF{?qV0htn9@l#B*pxeB9@qC}GR@dBa*}8J4uQPH z3|Gnjio`#uqMwo?O~D_$Z(k6SgWRj>!L2;WhjHeSskr#)i*}FtItB_xYSW!Yo|r*7 zt|nN?7tl{mhXCt$An9+kdtf>8+`AM8?O>-!wsxybum0(m{W--&L0PIB1WNj(#SdO* z?+EF0cDi2O@9m^^4e=}7A!$-$%Q8~10`sQ4HZy>WAG_V0mw8(PF5+{(^2bN-HB+VN zI!p=Ak(!&I*3c3~HAWOKCP^jchd-QGa}kSN+kt&By5Lvq!6&F@Y;POfa+Sd?O#9rm ze}l1ORAW1*&%56LED0Sm1hYE-2vFrJT^$i3KaT57{-!(JXLQ+*dgU2KjIqAcNyiG# zCKen6nBKN0akn$BPrY28Zo?41ZJIU>v43#m52+HuJ>N!jxirZV9o}S8!@Yc^=c*iBB<0wN%?u!!0@1{R%*GN2lY4mhFWMxWW|_%F=Ob%b zfw^I^5|{xPgE$e4*bnsUS4_UbZ(ch)HTf*B7^Qe3H7Y_0f0V$k%sM!lcp0wgaH@4eWN%0kAP&|$K+%#6kv~mZq*hO)x7H6D71?64?U3U&UGWOX{C>YS0Eg@u=`4TR zq}HG$03Ih(%n>>#B9^DHW^5QUe++694x78h!sHNj)_oGng~C)x=6vR2?QAHhJJ4`+ z^iJ4RkOZYfc|Syy`c5i!CeOS=4E&J_h{ffgz`-Q1i5XH~nI1N4LpG3QLkV45w@wh9 zh-7RD|3gy&+Si-tRCsNbr4_CjK02zi*wOg5PNV|QvGDfx%%<{HGzbgPr$kg#^$QB< z0f#DJ6yr@mf2@zi7BiH$`+pnsiZJ^BfnNKl&B1(v5*F@E&MqH`TZxt}Ua+ z65>o%rgJBfsdBj-!YYK56qy(}MQuN|hw$bW=fUfvGsEK+YlYX}(0R1BbB)cI$GF-? zM_Op56ddmB6e5@0n$OhsB-p&bldvQ?2N>Pd8kOtl^IpcmiBOT9q#r)EJX8PpBHiUE4vzQ_IEai)?IpdE1C#0{y0p1_O_lL-&om$!j0qb@5ZlxKrfWoIN>N z(OWdnGZukeS|e7geJ4q0u-q7^%KDANxu8MG4A=AcR_i2Oa?~TCGJ)b;X*P#%(M=V1 zZ&*^|FUUOp@r{1LenZ$IgtmOpwqYYGLb0=pqxQc@Ig7zmHx(28_}Si;D17<1jA4<@ zZ4w1?DA74m3QY2g{S+vUH9kYgR-;_4qg*;A?)n~!m$K&o(@IIIG&?sI5M>dv8G?o$ zJRV4O%OoQ@KM;`zuP?Wll9Ppx3s2~Fjz>gH{II4f%jKO4R^E-}+Y)S(<2ybztw$T*DiyKQh6+;PJe&^TzuAm4v7y zBzKT2UU7^!N)6sH#8;CaVWxD41KrV|23>8lTChKPf8OSL(mg}9-9P8?WZQgrRT61( z4qNI=FxX6W=+`BT$?N{WLq2Ve5wq_rr`MT+@hzG@a2Qh16H)1V@JLxytiJxis+s=9 za_wZ7JD%EQ-w;WkN_Xoba^D|^dGmX~iDXg{2V{;s1H-{RZz;ZeW<+N^JKvH7n85jG zvS!SfMIRi&t*zgDWA5qOLvZ-l60SG{zrxE`gcH{`#9hXv%H(JakT)la#3nd7DA24_ zd2fHVcPOt!8CsMnqVN`3Os%A!{$tASOgb0uI&RFt*4Fs7JvAX(P(ZbB=1gM`oS)V9 zIZteHadBm*m0-^gi}o0k14yaia%eKD2hvfUnQa*TTtc-UC>p}X`Ihjvakg1X$FvW? z*+d|~EBT9R>=B%k zIB*I@#e|ZeAV=Zpm)Z2!kN$}U(0XH4K;>hZ^carTWJQ$d4`Y1ztA+8j_dl;_&46q~ zClkNB_eBw0prC6EQ1*+*N(d1W4&a@eTi^HO`eWzBik)5G2fhNlrocNs;{iOA+05LT zJ~maJSTOOA^S>SpbU~gty60`>gF6;@uvv=5pqKpO<{80YV|PY;ZOir)B?qiS?dNL=PbC3GY9#6m3c(JB_MU{#RI9#>ST|&?RSA zN#~&O$8cCBZ~k#x56jqO&3Db2_G8(~23!FA8q}(Jm=4gsnDpk%+xkWlj~Qy zK~9`xWsm19soW#Sp2A_-|4U78U?*0RzW(Mw47Yvnx-c~G{xnV=6gpRl3?XRZR-h~# z=pCF1Enk?Oy_y($3#aw=-!2k99TRrG|7r&h?}H~imw0j0l7s@+EadsmXwbe5!e%fS z+>>JH3%74yRRNh;STwp_ZYnY}!F?Io^&*c@Y-}*vP!0IrYJK^vLlbhXSdtFg5dS+K zMSuq0wXV2W3*MFEm|%2qG3llQA2b_XTUDIx1k{^}+?kg^4A6k#*C*$Vxd85klAszY z7guQ^tL4&(d)hB+_3 zq|k*&?<|+ra+|b3czh*;mh4oCzONB+p>Ah0nfYFIAXBibF^qbran3eZmA;53@#L47 z)(QS?nHjp;#9S%yzMET2ki~r(4$GxBgEN=J{nm7Tb>c1OU+(-bC`Nbjwq1eF!Q-i^ ztFUO-`-P&LQn8&C7ik}43P`v(RYWt!ez2^zyaUdca+m*TN-@hNYJ2wZGl)|< z%koGG@TrMBtU{Q=-qG+hVJEKqSd;{1pCU+s0qZrgqvOFATXGurE+?MCg z&dsjAHpzSmNBizoG2e`yUj0!4KZyrB0V=ND)wE_*!JUr>ht}2vVHc)m2n6U0pY2eS z{)8C*$mr^>=xNnXy*aSph4S7KQ#J^-M{&4hiGoiecfV4{U zN)}RH28XQ~-|XxfD()s}GuM;wP{w}lk6IMT zjYW!cW?!q);HiuB-3pz-eEMhAYMt2F*-e*SA1BQK2UH2vQt~p5X)H`38 zgWz***t$^)!&pIT(eVKt=XG4Ub0};CJj>>U;Dl`9SXJp9Izc08lk``S?emj>R3*6?D9!-48jx> zf-wAW7UM(l4!wmRjScQ;@Y5vVpa9)44ZeWWYJaEoladad)t~6JcFv;J+5nG~eSRqO zUYa8s8bZjFa^GhmLy3&7)+_2-(k_&b)34CZ`E=Aqqo? zkmz8Kto;$(jPsvyL3yUH69>d*(d?76qoXhbyFVLNNxVm!^>?7@)wgh%QnO@Nt=}FA ziuYVP`X(H%d(S5Q(eAeE{4UA&FRAoE)h~^Yp7(-JPOBgjn$a{(KeyULHYEwJ5p7ux zqS%zzqvRPfSS-Q_^!Ku2^2c|M8-mrsnL}ty(?}H0So#Bm1Gru6Edn(!@7N*~+_FE? zx*&)8G<&}*Piva1uC02v;wT%^AzK06;~s6bxdWvpj$AJwdo|USthW?_2-CLfKC3DW ztaDwour4n;UrQgBQ`sdOJ4@5wx_nBh8-scCPxX}_A; z*+dOB+y(@r;w>b)L zA?|^F4l#Fu*FU-`+L}tPw3P+OOzq7J8E>w&y?fO;HyB9Mh;Ml_&1`I0Mj!d*z%Nc8 z7Vg3eO34FwBT}^3jCUXQZ-HF@)Eoi*E<5(+RIgjL0<^7yeyO`o!5jgINd=IsRt&b* zPu$;3lxN%WGON1D@%r!v5DiuUOHycT$W}P2UgE#xd^V~(;!4USW6J}q5doJ)BlX6u z^?dQ0PM^`^kqOxBV`!o@ZzXg3J|Ztzv`i)-=|?$q7~rLc+6^rF9>3a9)zMx`em!wJ zkroLWA^5e>8Q2ZnLj#zSzFboNw)Nq%PxS$5te?N5Kys`HSK|eHPoUz9kIF*`8;w}v zs#8a)(Hqwq%q8g(JmQn)H(O;i8kaSHBXKyb3oN0Zl&H1uGI|0dEonfh)sQ>d{UOK| z(4QiAHOJMi#dxJR`+>oPAoCWQ1`fy4{kA+}7f_XOhyaO)py_BW!E~AZQB?n~TZ1=h zgL1e-Qqny4?D1Y4TYBgBnKvUB6F!xDj9c3`*{-KN=1eDppGCJ<2;)9&y6SahQbYs= ze+IWB&e>Hujiu?9MYYr6)T#nGY5y)rR6u+~ti%gqucz<`5SsxSQjCV*LjCG>#49jK z*HAi+=BZNjP=KXqgM};m8Kg?A}V9I_=BM&s~m?E@v zt6+!y$Z28pI6WTWvwM&h*A+Y5B1* zPcT79xCk)fotGiO1Ec8N43UF?luxD#W=D%LW}OYNoKqNA2iH?jTTKBiGz`c}d^wK6 zbS|Be@8}i;tYq`VoF)XYV;`ak1%jI1Jdn@o@1iB8Bo@bf?o4pJ9c(V0TiPh%Rt z#0RWcdXu?(;}!FWABzs)5#i=@e+^g;uwV$IIx@S9Gm&qJK7xAZ zn(QrK56o1%elBkL>0W}ZS6o7UoVHG=(=@Pco#IKm&8rwa(--jcut(i5BwD{6-qgZS zgkRdPhe8eBG}V*B@_w>`?Z(l8h<{|eJsok?7Yo{prQ;EGQA^M&ovEd1CJ=Sj>njNp z=}&ib=oo3_1~zRf=5IEQtz8Nr1Jb z*^_8PU|B?`+b_a~L8bP~G8uAsrYh>UwOy5PHz5cuu8RYA54<;!O{-%i7FzkQd#@h3;jfeU#PW>@0(tJgA0`OGL>UN=CFg^tyw>hkJ`U|3qkXlJI%m z53I9JdB!9mF?lBYx16mWwY5BHI;E!;&z>oRQ-`%s&=a~ppg!|iHGJaYxP4UdTT`fO z^kF-^JYI5ZQ(w=dcshyxOtbOEwkL74-CXtVVuT>3MeNtCs(0Sl^e|~CC->1U9Wl4Z zbwLJv(`{xI!p0-c3SjyHaQtlVF2NTU4==1~dd!yF`I64R<<^9-+97dLM*pcta4tYZJz>H&>IZQ;`uoI<7Vt-v(1?=MhjB+o zkyeK`BI?|#K);p8jF0-k2>0YUfbbz3;OIaw3LVZj#Ip_qy=~@Az4mpzH^#?_%hiEF z#&lhNAMHQlCPEO@)3_J#_|qv?C+S@5Kg<@>a%{JT%4Thkcu~?vhM(Pv=Zs`rXGt8; zo3IE_;#?Y+7S4YlAq+(z&5{!Xr{7xCWj=4Uv~^L-wn)dfHn0(MTxUl*b{r73PVHZh z>7tAG^A$Pow3xt2xsHRVLl0#Jx)`2im5QPJ2Ku^~I~m8Rs?ex6V&F4>UZ0$5LLg2M zpRQh6a&S*w5^VJw`b%~64vLR`r=e~dpp3FoE4WP{qNt$eb{*}7xcJs@K5%ty5i6si zb`+WvW3vqh;aSKrVlWb<&RL^-941>U1$y&qLD z=lIdw@bv@B5f>lWT~eJo?|<|#MPFpy9xcO2wObme^#)iR?2SuTqTT$QrQ>_*sWpki z5+uZGKS}$=X9xQ(Z6X5aXnxTaa67WY7)f{|4HY!DsBJO-wvWC@BRw0QFLut3= zvA}G+ib+gRaGVt_D>b3|*b#`0J7)D&pN*^A8SQ8zIf+_S0xZ|mnfGl1%2HqVH(9}U z@H#o_q&|!y!#8Fi;%g!1aMgdP;|)Qv^fMF`9GeixRT02EaWBr^qqsNF0Q~dz;i~{l zsu)1i-{;y0Sa1b2@R%hqa0r2INpH={7z#>Gd#$@A2ASc529Zp8wc{(Et%kFbp zDw>#gE8m0e^-4Fqgli|U0Y2<{=CXLUauB;l`+>gfuq%0xm7Trc|3y<$_}qDg&ZsT) zy^giHg2P~N`u?rJ3LG53cE6()2=yxQ)>aKf)XE=g4F1x0F}i^TZp2+wUw72DU%Uqd z3L$@spBR}RM&VlwH=-yRjl`|PXLOh5!N`-AX0z&GY?N>mN$*f2N4Ax2N#IyE?ZM6k zoNv4IA!u}8mpg$KvK}MmNiQQkeiW#l+WxTtB=W%I)%|=s>w-^?*1y%`g2=lW@JOdN zHiU)Mevk;y{=l#Q>YJ_gI`SQK&m)EK+R%8pJyWG0*k>`tJTO| zY`DLCa7!GJhV?h`7JMn-qv?^Bl!k@|1(4sRIAd8=?oJAIAM*@*Y)#$$r&>=>&q6tD zxSyH;iRIn^B(|D@uo!WEN>F@HJbGYFM`H59)=+cLi*k(OAz}ncGOU&y8owqCu#cXI zsF=^T%$-1jfGmHZgr4z5lK@gb-)|KkmPu73ByHHGag6o1xnr5PQq*c$9Huzx!ss0m zCB$~_h`Enl2p@!6h{kmSy!fx)>@nro3_*#>hA~^i2NI$3ckm03>V%!Ruo`LT)A1;# zZF?egrj1>nVammtIcrP7eel1sbCly%>9-CwNP{vUH979xmH{UL{fPze22Q{m6k8NT z^t{12_7Oq8^tw<@m-V9i(QrlYZC;<>iUhPR?qhpf%`^@le%x6IxMm`asY$ zxmx{Qhg%t)TZy;*I_?r~jfKfJON~4(H^4-t1>74Y-;(cK+~>G&xNLPh1K+D7g|Pl-wDo}8S#9vi*izO821qy`|!uHbs@BX==X%0i-4C=}Wk4G}okgQGQ+Y1sS_<{)%aMnD z;M~uOSdxDt3 zzGRFZRT?N{DjJ`PaQF86l_MmZ&gshf6RBUrVw-ma&fGs`#<6<1@6{Y*CO(xQmR){@ z!@|(TbFt5Yj_w$e%oqACX|5f1hQz7v zIj)ES{;@GQvGi~;PXOP6o=d>yiQB@=!hjUOY@>W>P({he>72csG|kBTz!tOC7Hbz^ zd!3is{Kfz}<3*6r6Cnc;i)@J`!(LD1v%e9%4hwlR8O+dQG*avl*o&YK4ZjG?PeAM( zz{XGH2EjDUX)Ko}!JdygrySO!Nkk<`pkuhH`I|=HSKnn^X2qd|e{SOtpEN~5Be#1c zt|<_=h>1M|pq69@MO;hYqQ0B0%g6Ls8_*^;$9}9bnP7kaIt2xVwXQk_M?lB}jFZiJ z^}BFV5@g__=%RW$i7>$OezfaRY^_$NIo;GOyY*buI?Wj^UaV_n{rl9_xh7y%(K(tD zp|Y${I9C~uAAQTIndB;>IlrrGYNBDVHAra!KD!Qi!T*I2lpmO-(;Cx^Ypy#bx)*f< zX`@s|0S1cK^MLFxGZYA~F!VLL2lE12frB#Pw9>ohl0*4#*zDM$X|({(o#2i_z4ZI8 zmn%qt5`LOsBaT1u>ZePN6n^<7l61-kj|f>3RN;;*9xL;Td6QlJ-pc8 zrC#blBi$N{n+D75(H%Dwd9beud-g}#+goq`^JbkXqB$GuUU?o)B-1%%tMH3enhfKg$Y1I;cb=nPR4&2i>b@vxn zp8)2`t>OT%4XNkvK?tw>QnY&eK7vru{9-KZYH11))JahFxiHWk{32gMQzUMDNkOcP zADuqeQ%JY?;imd7O95`furWX3RY$u^V+jGV*Y}C)!k+A#yoMTHM{Baz5+m8>&b)E? zKOV$*9sy~*N-&?B&D0_;XrwhV?a~&(yna!&FQDFy3}wmOSxuncfMl#+ybQc9*ds{l zqyz~F&bg=ElA5|-C0gK$aIJ)YL@SskM;^+lQR{>zH%qZogFh zIhFaToYuMhe2|>hr0?gswFfYRB%a&aO7yqpB0;+(uWj{zeY)eQ^ENltIyQzBLcgCV z`%|b@lI1Q_AYg=2JLx-Ics)mxRuj;)9)6Q~js8|7mVk&L#j9t#4;(huFDd%4>;dpU ztu7R_GBL8zdWBsg&0A8q!M{|KTPW#eQ9N>ybn9!c8t9-5sLJ{8U7Fj1`r1? z!IP^PRJi8j(ilc_nAXrEfuE^+V`j|p8T#4}g%{ip!CvhOO0|}F!p*N6KJVSe>apxh7(#gBSTtPnA#RdAy>c|^Lb@uV@8Pa10F59ahCy!r{A*vu|&ark$(K2 z-m(9SuKw#rQ?23jbeJs~0;Itpa^y@P=cG(MnT3S~*sAvd$cWW+x736(5{S+F5{E@? zsE5n(PG_}}3P1<~Yg3J7E(+l4krY4;f${vnZ{l`P06YEV$%_fe$k_N}mDtGO7KQr~ z{roFElJ4Ku#^sG>0;UHe4f5Z{$Zsh*>k>5~RZ}r^G;ABcP7;dQ$yb!1FNsB7zlx2G zh8zRBIOJv<3B`Q6dZwjCTX6IYkV4nU=?us-koWF?Tx%5v`FAiHY&<-?eqCgb>mXRM zSm}*T76RO_+4oZ3+WmjqZ=GJgi(kJ;Ga&wBDSBuG;eiSha}T^L!mm-aS~n_6%ITIx z7*m32LSEjm`TW)Sq&tK$+|-lZ}R{+xiF|mP2QsRZ1prDVrDhr^LafMj@V|=;7 zam|Z-4u>W4um7@mYJSuO(7b;YV}n?<3EJ#VJFb8eS?Oml0At0H+i_5DuMffPVK|^C z)9L~@;^+u{eGLW^KA_eRK}xztM!sS<-8I-qT25cFCcz$|u z9lMueR=V-5%n=yZs`H4zCOjGPNT9}?T$k>XI<2!p*Mr+j%R#^k|DgZa!votn`GDzg z#em{BU+I2v4cN8*(R{ANV;{kJXDXtSmMKwISyQi|tjN~a`)02$HY9tnr|mgikq`da zUkV^YTK}^%C^RaJBg3+(V*G~o{LZr%GXG1bw^!(Wv$aA|UpF$oW_^O7-Pcv<8I`cS4>j5gTHNUK*YlsJ=Gr8EHIU$0N zyzcw3?^v8#T=ar?u6?jsoUA0Gedc7HZU0%pZxI^E8bxuaGg{tk5t3Q>^DNp|O)tN+O2qKbx-_|g2` z3Vf~hl{sS!47)$o?e*)|YNorL+$7EA-A2E?!G?B{&%bD|Y{2*84#q6qELhqZ)3?pc zTozPCWfI%~+jKo(ga%pZKAC2I64goO5$mWZ=#WV1xc`T?w+^dv-P%V{R8$0{8x)Z4 zZUiSF-69Rr-CZiuCEXxMNOw0#mvnb`cb#YATCTnK_wC;~=Q`JU|5!NZnsdJIlVgng zzQ=fqZsvNQ)C%U|6cb`hCsn_?Ueqp3il4x?&vJHdnlTV%>-F&^KaG1c@4Pr*=U{NC zF=)sra}@fxs$3Y8P(Q;Y{ecG@jx={B>!G2sxW!T#GtZXx$BsF63pvrP!-T)!PE9Q9 zf^z2>!E>Cnfo9>LTvvS-7I{@_idTl0O z{Ou0gVYi3h(_C{t2T9Gr<*zjtxNzjs9pYk0Pi6V>DqivQXnFwW`!w!BN_h0CJ|V!7 zazYZEH*SmVPc3Ce&Tr0U>A!z5?r=r?E{&ZkR1n!4V3ufZnq69KN&m|RDPyn^IlcIa z0NY|RL!@rp6^HR>*qD#)-;0r0cV8=&Q5=U?XMDjfVQDX_$%N>)!hGr^3Xhv59PMTq zooZz9L1fEc)h0}cG3Fh$bzPBzi^epcNpd1y-gVGPC^2iVnpSX(5X)tXF0&C{mOb$# z*F#)I9B*FuIWDuhfkZpB-5#@H0VFq)bGZ0GJCMV|rDM!JHL6b76DkCfSP&V24jg)Y ze6kaT#7B1g)W!eS21_$MAk5eBbyHT|Y&nQu!- z6c?v@zsW@l5%wU0_Fz((PVRMn7e4-{Pvs6q-@!Q(F*JfLpkPU_@+DXLsi48z_Q;eE z#Vt*E_h7I}g?OdS%uNZgEUd4#Vwi4jZd@33y`O#{l5(YC4@gs*ib@S3h()YaA19V9 z+q60Td4>OEt3XgG7;^2f@wLzqt1l& zytaDNg9X;#ZG+Jst+n3WH{w>o@7@WGx-icMkG(MRSi`LTO52|8a7>4B*7Z~kGBkZX zNO*HbS^RL;d?^^Ye>huFOnvsoU$AJILTXL4tfy+T_v~`P=9T&L{(9;g&&g_gJGMzg7tJRN=k2j8Y zpJmLpXr_v)RhdvCUmIAgE8*Eyhod$X5vv%z!yIB@X)op@%n=hB8t6H+RfZ#SlvKX$o(&O?Pg(r&%@9AyIgAvQCYC@5B2$d&J0&#Vqf$Ij zQ}yC^A2fgxzx0t2yE@7W1#oZP2!L`<8r7A12DP8Y3G>gx!cJSJyJ{xJhp}-`n$Ylz zr^908oeq{dw$fb!#>S%Em9G5Xc+Xxs3e-$Kc>o88URTy}>|kOdK98~OQ>O@ge71v6 z2MrAkx2_H)wcp>|tPNCaYtw1$usg2=sNV*i53pU)EtutVc)yKWCzgrTrA{Mb+j9A3 znQE*+$7NL(7bl?`XK3-+5GZ-~H)VB?7RyJnx6X|RJvfS!NItyTAVW=An|kT2hwttj zEhgDBpFaEW6>VVBh}93TNK%k*IU3X*KZ0kLz_m2}=;L3bz8IIMGpVSNFng5|nEbNW zeHsr7>+CX0!-yVB!-0W~msj$|a~m5w&?z;GK?WfP7b?}KZr8`>v+ac1RSHK(N6-85 z?IBE=48?RBuU|K4i$&2RFh|ll{**E%#db7n|Zgi4EMYAfv{qC64deZB&u&0#`J+_@I zR$VKOJ{uv|Qgkn#kZCd5muvJ7^3A}pA@>o^-8E3|q8^X;&Jhsf&Aqq}?=JRTP??9NeYOxD`k@9o+K%lY`io_e+<$Yv2fPEbiuj81oTS0o<)c)RkT zUUtKX_j1><>AOHBEua5d2f`Mj^Kq+O_Q1F-bhDXF$0=3+nq{gF+1r~iHO1*mMwM)-cI*Mu}i1K z#7i=1$Hnp0CgN5O9ZH70 zlJ42a;dHWU?matsBR*HXnlDime?_)A*80;w-CIWfp!bKh_sH{Q$BMFyy-{!)jpG`N z)~-__82v~jjY6+_aky3fw-KC1xA9>Q^E7{j7GV@luJ&!n( zqMo?oDh0y9l}U<)V;!sD5_^+uSlsT!#Y8WQk{yv`XCzyen31kW0EmMsG8e-0>hI~g znLq6zdM+A%Y~jy>nSqW^v4QG zd&(G3(o`Z8E3MngdyVhc_zH$Bba!HxX4SaTpySYF{9?~i&gG@;HxU<|VK-Q>g!hnC z+DNbWRnPs!h4)rkUQZ;?{suIm*|JDJ+2(YchPodv414)^qqVXWBGg2w$xCn6Rn#q0 zeZ|p&{wTE65 z*FYja4$ol0%zDMpjGNH5+V^wA`?$1<#=9U z80bL4Q!?Xa;?t!WuW7d!EE9`p1@e?uEE$V(WHXRpSBz|tb8RzS0Y$urE+2Z}UAll| zy!`M@X&nu}R<39ytrYjySxu6dq0zyr{R>VmPW$>6-fa&1NXK7w*S0JCV@!P)21b9k zH8>7b&0G&du6faL4D_dJw+n}KdG5Y(6yOmf!;j8h7&0P}HvL}cq0wjKrEF&4W5P~)3KQ1tTs6UbD zM_>q}0t=aTc55o`+ocCblk&cI>1VB~ zi)D_J##}M!IPd`URUp9i{oD~A16LzuL@hrgglRA)s$=YG`9-yup+im%{;)-im`NKn zGOq2o&uolVsxEfmhbQ!5S;Qm#F+!E$5tYTa-ylG}`HD>NfDaZV!o?vFA#Lj~IIRP8w6XQX^L6rL zXQJkyyT7M0_aPD-(yMy?lRB!!B>7BtvHlJV33v$<*xZa*QeL2vZ!UxtBLm-Oz$6^Y z>X@0BB5uf#^8=?MmQCkCdcn`n1ELHeneQU(MOddu+iBA6n&2p*lTgl70@XM5WcR~9 z_79R{80fHfiWQ+bN~oI#iiA>=GVWv>2g*s-ETcStgMTC7#Krlbv9a#15C!|2Z_nmL zwBN{Kp(5bgbjrdHt~52(V8o=zY=j#={a!>Qr#D;FCo7ji=2$nXz?!bCkXRS!Lr#s% zb#M>nqZD)lcM|m}4yPCl@av?$Dh$;H{{h}B|g9KgvLP_Sjhdk0r^*&q6`c!-Af#q>m@hl~yiHmcd#Rqi)N} zL+@X6NrAsyz{+uXGCOqE44s!?KDEpSs%Ix!>#HF>eIsC|T6$nx_kHt9nrS33tNeCd zUt+TaNrVbxbG!F1$A`s$sPg;nDXz zowz}MwGLKN&<|LI|A05qqu`fz3D1A&lRxijF}WZs~aVRX~6m?8KSk!d39!S_-toqr`&EA-8bFY$N~=!&!&r} zoZYnXbmdl_=bA7x(Qa&WYipvod_^&syE|7H%uh#JuEW6XWpE=)Ty@ZK9RK8z+^?MK z-}loS1aZ4_7LFe03vaJ4z~L{*sFA7C-kBQj_Hs6R`0sIBy99Wwwtr?CB$;abWL!Uq zFDjuU7ZdRrxN1DN&5)lz-&3_CJa?b{U-`S3Ka$qgzjcP zeflkb6=qRd?wafVr-s?qKIj$f6Yb6@9!2Y);f;8S5yj>H7~y98aSzA`X^7gB2m~%D z*sH-7b`@A(TGeZBlR#+HTJ_}SS4}(a3FZF+bU*nwpnLB# zK_|VJ+RjzuC^X{(3;Qg+6>5zC{&nykDjwitnp>4F0WuI>(5fLdfD8BAVuKGYn&*Cn z*7kFNr=j~jk)Z$mi1}wufL9Ih|5Vllp3}coQQZ4yh`}cv{z<_AuWJ5GPVfRo{ZFq$ zU(x*;M)2Yz=6qoF5g}U*{q2nd5$8?cN|eU9%c9v|YIvB2!R4T!(9!aI*OM5EPoKaf z)^K;7u@x7(*zjb`gl-{aZ$k_mJ5lo%ZC_1F#v9-)rQf@E4*(Obt*xr3N1#i$9zE(j z+zrO`HzOme;+wfFwnk*0y4-JKIq$}itptT}e`^7lj)PXbIn`BCoCXbtD7R%EMsN^H zja#x4Z|w%t4vr!5sL38)!SWUJ@wv};t;N`LsBd-ETS{5R!#IZ&AT21OBQgxPWw!1^ zdfQvJRl-KM7E1p#qAerI)lzDUI{8<1I59o_-YH%EPi`}MtYG|Ga^vk?FCMsZY-SLY zFpa3FV@at=I@D=-S09Zu#uk zb^pHP6^oyp)5nwAab(l6P~Gcpl=M+gqGr)Ih?AB`;;&5t%Mk3U1)Gz*UU=zX;y3wM zf{wiL#I(NMYg4pN)R@(zw}MmMS<^(?5G~uzp4nZOz05iVz?Wq(Ggg44uvZNzVHs@= zOBHVJr8aDAr?9%qS&>SzOeJdjgWv5+^Kh~IJG@D)#f>Xd{gqCj?MEl!L)WB<`wQ_& z!uBpE{!W$4-J!N{aifKpt~r(S3@L;-+X}4|{=3PoPdR^C{K}k(;ptaDs}V($WD3JY zBz1ORn{}5z@h=@7EhnNkf_edgMfW9&9M%dSB@_w8=Sv_vT3(MBXI0$@`rhjz@*;2+ zpDkv4`$LUnZvjw7^!H-^M1BXC>8vuExxj9Mqmc)G8yIQI7_uO|tzw0diP=ILI)OI= zl1aRB=POB-3FJX|=WSqTLCPO-NESC@i~-$K&tJ>SO!DPP0vA{H0J>qb6Hu*w??-qR zuHmL@9qN)fZnZwuOAni!qCgMs{G^~_)a`|%VX1so7t{O0>(1eRrERG^E|TIKS9xk{cVuVtJcOPE z@*HnrbG_mHz~rQJ$<0_zQd`TED`xOK1Oh-pq$$4L_7HcUmJo5@{fwjp+1js6TO8C< zjsny{F7qu@0Y}56Vdn<5S{_cWnwoP3bdN!u(W!>l=VyFzEh&={k>)|SgVnDcdqRcb z)|0PnM0yUjy8FZPC+JA{-1dI>C~BGC6n#MrN~ z+CTMG%blQSgbTGFDR2ai1CAg`#O719S?}f!@A5A~4&Ao-01l0@)z;d@HRfA@Zd2S$ z>lo$^6CRw*;sCc;mJOGFZTM+hJUhQkOj@S6CGV)Kr`0A4k#Y!D0rlsgb!R{7ywP1n zg(G&n=TEYh?kV`=1v%zPW5_2|#VYe1Rl@?bc~K`*Kxt#e;e84cDO0BwbS^qJ%V$$o zhrgGO1@1FO#xlBamG5F(<;ixwR1DqAlsq2u>BP&T{0!Jd!r~5s!Nm{B;!fADUt_4k zBX*xXefmKx0vsw9h>RE>=2on8Q}f^?^F10rgw&DBS;x60srHAP!Y(_dQyWgZdRf7z ze45ByH*3@5xDEUsB$1@DC^F|7d8?8)eSZF0eAO(maX9+SY^g=H)MxVKtGiBHc~pEZ zd=WlAcA1EDTop@=XcM~rWr`xJ;@9&--Y2P-lB-;tdye(+q!Q}aIil26*Vrv`-T4n( z*amj+RY<`w24;3H32`NdiF!oNjz5->Xy7>c9XE|%9<}!U7HaBIsoZc7pADL_Ki+V5OTCb#NNvu=0GYD%g zM-B-so<^$ewmTYvjY368Ft+=sdQ5$P^+_Csx2I>G`~ErRX#LNgaL}h>qE0SfnH?R< zt#080S{F)SiLE`*&A6zOs$x0kZ*oBx>;50n`FJpE%3I`NY+Mn_{p}L7`~NjOZ+wr! zyv^#nbo0%ye4o!#C3s4co`CB{2JDk+tISo^)unOpz6L5H{cRFG;+lct*f6bOA?A*j zS4ll4Iwo~TfgJ}3rxZz4TkP?o=(}!}J2SzG=mS~d*YI5!guP!ObTfrnU*r0ea|a02 zFs&TsV;xl5mNLYQ5|J(&N);?`@;t;G>fr$}4h}w%AEeB^j*XS7cX8QYP&itl)hn(` zay_?C+zyq~3owyhe^t0<$10)sLT*K`Q#_XYGSS(KyI;*($Gf+E-pWkF|D=jrH(?T9 z5K_srmB&%^Mqel6U6=Ew(@9nBFZp`@SrCJZ%P)|a3WnyBF$mq62uCUAW_4BUSBS)6 zQu>SVJgdErx~t+SRD_Up=XUQnqXP+!s;W9yuyrAui~Pg;=zU)IWHkJn_OZH_VFBPX zL+B@~0rNu?Y?g2D20lLTWjJY zBX4K9g;^y=U%XkI?d?^v-&^z0)rFLMjW4pMKOa*+&z{-8;?dVokzJee9PjYpiXG*U zXLdiAkz+>=dstV=I&KXcxWOXE9f5-B=5oVeJnFA7z#&J6SEl!i0}hAaum-;YDNrSw zyUsx_ntIk^Q0HW>E8pa#KfoopC%jqUjbnPpyC)#lHoo?e>w>o~t!m#VZO)X&0Gr#$ zZMm(HBRFnie1jbW9pr2`sAwmrd~Q4Sep1C3O?>BjVx?zmBx(~*RXr%}Xy~f7K6f)3 zj4-*}D(*|_>J11C#2)9c`G-gvA#Q7J1yS*N>&d}jMqj`gKJeK-0Emvy%;A%7MDT5~ z;W3|r`_$g&_cmO}*V)T)8f3R{m&_z2Zx6}nCenD+iq7(=^iPfDjhVX#<%`S*^&J=P z8BG~cJy1{MxnLirmai3o$X9HcbHySV*DI%3g(13Ekh> z?Jj?Q280BP)dpA_BdXoRcHn6Y?HA_834_(vp(B>9Xc(MVeHm_=-EgG_7gciUuv_$Y!iB>^S=noU9hhi#Ax3FEw%P1q!WDwT_q3Kth%>Ka@U#cn)a>UM z?HFcSf{unJ#@ym-bKW2nX@A%>$RI=DB3t!T5V4tHVuY$9Te* zqf71n8yA?BJ)UZ;%f;)z4Ku-L(nh`-hltCDkr9tB6)D}EC5SYpUew*D>j653rPHK- zop~)hO~S10ypHSM@3^#1BfD_XD^Ec~U-gp;f{NVm4??RXTtEQmW*k+F(bP|6*j_tJm#?1%~CA+wMfIq5W>)%+dct;fcQTrm12p%~(?T!fxczUmR=j0d-be860 z5S|JZ`iLmEAkMegXalApCnQ`~O4e{N(P$$!lT8)MM8!Qi*?bm1onRB_S*aR z?@y`Y!Dx2>6QyfU{vDKBoKdt1#4t0HECICT_E@}1ZcF7jN)7n!eJt>HPotOy6zRf6 zymK7c)WAWbUP-U8{woo98r-YOC2YcNyufRtiJv9`Xrm`W|A z6@L)ap`KQK3&|e5`CeVkMNj{gW2ekbNwJ7VmIR8O+SUsKEg!Td5NM72-rZ;jJ*vz6 z3+wz1Z3HN*&AOf5gdnAbIxf8Jf6)v8%|^Xy@u5rHb8UbQh(&QPC~M?^2zNM2Lkd%3 zm4Mqag<|#m*z8h~I$T78)VlX@lkLYSz>6F@zXJ!F`2he?JRjY5{{~U+fm=7Qu_WG6 zN>HGc?PlcZ`5F7*zeYBr1#|#gA0ETETcT%%5^27#{OS1 z!@fv*Fl}Ky9(KwJS~ss!$FN$fH<%Lfxi?D0qX($NUc2(lD%I6mq-+n(Q$_Z<{Cxt* z$N4n?o^5R@)8F3PX?*0d?>@_Qu;hnEibI+LOy=|cx(!(2P29w;-kPa?%dIovEr;S3 z6bdU^A3e&1u1@<$4<8n$fxT|gtL^o9uSQ<=b=}W6E^I8=tE-3Q4|*zI8MJPnzH&Ph znO592KRyOJ*1OBc=eO7V9+OseYh!C6y%tQYxLdj9vZ$7Wa9yeEOLN~fE8(`pS{9SZ zBqZ;1TeyYyi*+9)gVpW^w|XRw>RNYO@5+Px`%cko zpVOyX_2qcq9g>lGeD(lpyhiTpO^w-|tqm)QFl}w^k@_>d!{~J{nX`#>e%h{`(egh~ zrb!_afKKK}rRxr(Houa>O7Y7a?p`f(4*jm?0`t-QH?&#DC8)Nu#;$DcU?pg!si|pi z&xSmW;vhEP6&J172AY=KygQAGYrXgDwkq+m>_%-z&P;3>^sfm8Wg?e7tF_J_lrysr z)DDPVxk|IkGN9#D`>1GEPltT{*O@mB-a84-!HSF7H$|JhT;G8{0RSmX_bi1jjO;eK z!#V)=Sz@&8r$D7>(f0vZDCeHu-aH;>W4Gh>=Ba!CuBu4@sVc2RtFJj+dQk{_9<&zh zaftm5rZud!m8HJF++uP+Tg--(oJ-*X^-eGTqFr|FOMrb=ZhIl);>uMBI=ezKcENbq zWkaUba|2R(uX(<|sx)Asc2ZG-)Sl=^X!Y*ruU6&;UIl~bQs)966{-cvpc<&DWjuXq zrkk3tP9BD6zW|&QPwQ`Z7ICBXpJ5x^{}LS0lU8i&)<}~sqaGs`l@lnFz&8Ax-#wb@ z)0q1n(}3l5Yx38Of`K8uzxt;(40yAF=Kru|wm8c1!c-{ze-#4Ep&C%j%QIJFKaX6q z$V($-yS-x6z=N|H4cLes}u%oC4H(wmN zYT_t;wHZM58GuVBhAwJ9>(+$gN*^PGc*jrT0xEGl?dNCN&7^dI zt{@&T4YLo|T^~a|qoLB(+(~PVlVcm`EW8I$?pb=p?BVp(&Kwd`&+W`a6nJJvkk}{R zOD-u#9;1hN63s59g!yum`p`i_^31s2fAZVNw`?P!wO+1ho;<91*vmnhzg-Z`a?;X)bCfzb||g%=#X;anD)A%x)yXLq_&+r-h3E1kHJ zZ<}ch*6FCUNavlY`=1bpjtAQr4(9)n?r(tmRCJ*67#q3h%qF*`9w6M zDdW*YDRPmaDMbQJnfH7DC#mmfV%;be&Ym-55RegO>*Uw>HYI)HaCoC6-Hs?F{fe1K zMnJWu89VW2s;E#}ONW4CRG5te?&mvXtDe?wQHqd`4;ao4#GuR7y95Xb<5iiC=9T8l znh!FwGk2WCfZa3x4@BZ0y+EeU-eBv!|B6UJ1p`ck4?5@NuJaa68pWiZtV8;;#cj2x zQmryIv|EO)R<#6jn{ETT_K(70MC{G0>dbw*7%`;ssv0>0jS=&y4E3@HDx7(8!kM--2~(j~iw+m5~w} z|1_VEqhfNl@8y_oEQ@d_$^5H83_pLVZ=SM7wsWNp%)J67~abiuRWEh?#2@z3k zo%hncOeqPXNp#-Q9tbVcTLhbmrQpaJ8&|>>3Cbkl%Uc%-sn1b~D34sHzh8WeX|>IP z4X{gD3QR*pc!d>ThO)!DiThNai|e;^0{QT5e5#sQ7K(CA1e!=-SsrpAg2d2NYF^B| zasaoDC!=#}vhT!H6qz;chb)?ba%*R$=xn->w>X9>kvcn$i7M(9aUTQUO1~<1^R@n0 ze1U$x(uK*&{PPad%46uFe(JTp5w$u7S5C`s3S9SwHAYF;MTClFH%EUg zBI^1v&j>e7?`>}fY+$1GHU-gTcr+IZav@VCr$ue{z3++u=3uRQ-TaP7Wz!$7ORB@g za?h=;M$N>~n5S|wI$V2`TI-j>`=#@UA|VBJOC3+Sdf#NKaMLM_cWfAxl+*{MCw+c* zND~0*->oe&iCU*(H1D6B>F!V#(Uq0Rpbb7t&5O7cc>m!OX$-Yl+3X{Fllw5HWf?}oe>9Bg zn(sC@!Q716D0X<2VRKx`yj(z;zcXLAWMhxD8qm7(xI>gxn*}3VBJ}6u>+^H@RO2B% z4p$g$qUk^Kl*7>Tg|xjd>|!xRU(p~ob;_m%Cz)>t^w2VvN4!u4RoXaRaE?m)lLCP$ zu9wuw4=qdUIG++QG}8#uDG|HVKm}@Hzv3LNztx0XM`obGX)I?>e(E zW1C>UmhZ$eBiVf2U4Zh3?Bg|~TRytW*k2N8m1+7!tN^m+Rl4$bM7S}CO(<{j z67@)Q!#E{`#YsUy7qPe|6nIgpmToiKD4iMB#sWiz(y(LLxE70e9b=}j;^=xo1Tpdc zrGlj89F_YcRpUl|ooU}aYqONYYYLgi-^Zu_`1ZI`j|P2ty`#`lSjR7&(bKu;cvoxs z_*9cBipGrBUD+HTeR-KPy4nZNISN`<@S{(=yviViDDzs3VU^8s?rz=uKN9N%fYY>2 z<7gstO6!SJK$y{Uo9RT$#l*_0_jMmq!oB=tG|C1_vRWLD`=UR8PJh+{0w}*YH1b=q z0L`HG#4h^F1Iys6*%&vvgXKAqWeV7J@m43>hC1PvU|8|iwA;C?I&0a=A-;rmIl}^2 zfbm*Y?y08`=8_%VOcT8ge2!Ackxx(RBc9=G+E^}~{k#I>1?r&Pxb-ExJh>DJ*iy8_ znN2{i(ult>-kyE_9}=P}m4s0R?mzmW5D}BW%Z;}w$V|g+@;`o9jP?^z#}*G082@;x zOJq!9T5S$!2g3qWAZbdAkY!ZN9z@$lO!&S{n4*e9r9w71MtU$t@Kb4%ML~`45M8^) zWoP%RGyoAauVclZSVl7H#>&XVu-tb?U^4r?Ha*xy;`&4NuE(hX2(xH*y7EVnwAcCH zVr@>`OT^F@O!CYL=x_@!5wb?`vTM6@>Q~KD z5F|(s%6&PNB(3tuy5R<9>>l*r8!x@|tR^c&mSxLwqT36-87GN6q&$n*zw+|*W0I62 z4wfJBH6r9-Ui#;sC|W*^%vB|8P#sjCrgm7Tn6E{|kEygLJmZpcM_3H1tSaMpNg*u0 zVpK{aVfUho@>N2S{3vYBr=NJgeAP_1qrI(I&nGcoVh^ zW6uLytsUbm1&VMYNt)2wWx+41ax$Hg9=WP|q01JIZbj=lE?$7~sA!e~J6#;#eRR5~ zKdg9g7(}w?cz1teOGHEm^2y?`S$+huP>kt`djLGlV$9#dtU63U$}z9Nr^_)B*^o6T zJ3cgKG1+nJj(d^k=6G`143~g-VrzG1z)9a)DK9zyX zW=aZGbwqbAgEu(?S9yE0qniKL0`$Dq=yA<#)a16iB3^++=IN-UzFne#=9yVv?NsgZ z?^usl-PR(PizJe<+jhK^Moii`b=SWb%dk$r9FE6Ip=RTG^&-8rd=oK!+4D8QC|MoZ zT=EMQ_G$+!1qfdT%NH=WZLm#y7;<V7hOwWypGJMtN3Ro@T zl#|`-iM(g@`<7?9Zl;P?Qc4#w8Pkyh8pTG0I$STpK1Z#DtlJQ_JdzhY zN-IN=*bhS;w^DK6AHJzCHnf^bJ$QfN+`>{Thp9(&F=w>#oXs|Scd<)AWfWdZ{JHC~ zr|}C~Fx~kllk#tPh+eP={>a}+YYEH#aLvoYdD{5A?U8&-Rc%*84F9_aFnHU!o0&<( zL$p;hbl>vsSYF7NNPwciz_3XJjj1coL##`w=e&Pi4pRb_6eE{rJ-A6P?f#I=`){0L6g zABDIZd1f4qB(!{XCPTWq_Lw<9asv4PQlyuxuCDX;XEAkkMpQx=Mrk)1O4?I(ic)7$ zVq_UfHOf2b(_d_B4$B-&te+t|kNUUVEadS~LI1uF~0=cHop1?{&l1z!hT{>i2A>dTJA{0~s-7>Ks2DF{6btGh|NfEl~p zbruGI7~awXX;_R;RaF%bb--1T!8WinMc&s{VdUC74Ff?#UuD+mQfaI6eFDE%gX`*! z@(tm6yrjmGQpi5OKL|iKDeO5bIm&!>EE?lwrVb@7W zyhpExcb$K+I=c02nAy%wE1aU-^n(%CJl+1gF$cvw7nqY4F* zNT4S4U5ji`d8#qmXPq>q>cp;xquvIX;|?9u)*~g8&@yXsDXZ_IPHf6P~U<1 z{4Y%C!jKU*jOJDq_9v?oGw+QF#iP+jj!*x(>s-WdaUf9JRUP)Oc`{NA_I_TE=r&8x zXN&>JR0Y?1p~!x%^(sB?P9^I*0D}HEiC`{J%VYVs%69!O3Jqe$&Bp%?AJZ;-Pb7FE z)Lj*7n&f)IF^NEYQ&#~p_u7Komr9Z~EG(qwjpI~zv3_G`#IvX{4HBMzFe_5O1HaC> zxfkj8T6Q(ud^w;ypzbnPj9VMTrVYP;-H&<2QeR*3t;ODnDd)*kfaZDTn_d)FUxFOD zDJtvyxyZ>XJ(!OSaDS52#nH^1u>ro$BUlTxt_K=?ojgq?^=s?vT8s<)wD2(Ww128? z!&o$%isRwpHq*R+1QTs=@kw2PJzMTtpqB-2A^g&7N|1uZ^HnT1krNm%nRo1GlSLo;mr|vpay=ADfIh$gThfqPq07qV-?_WsArMya$Wi+N7QJo6vE$#-Fg7@Bb(MWue&K}i zr@0nP6;Hx_*AB05137iEpuh4PQT}`Mfwo>Go^4s%_4sC_OwRk?(Dt4LtN_`6MccJ( zs{Z_Nv^4jlPH{e660bjR!8BOR{%fW0h7L_Ab@=;Q90LkPuwWBaLjVMdZ?&{C>Nk++ zM#;+BdaMBCiKt|;k2rWnp1++7q2hel|+tx zGqE58@z>X{jlws^3+82L=+2#^hS!x1>xe(R zayrQYPQYI(Iad_`7$g3XkYXYIo4q_>CIz9zwSOOiRY*g_YrTf$AjF-0@NK^9t?&&` zJSh=oZJ_M@V7UZOx1yJt&l=M$yorE2vRdLOgR)N+9b*1{#Fx?ZBGZngSQ}n;O6g~ zc?F>1ll{7OP~hwi2iD`Ek~FM^w@+pAkQ{%ZARTi&4U!`i0Dt_1OR^yZ8o=g7_%xwR z_e`ng(x#M7ppE)@07zG`cw3}`TO*DL$0acU$~5}7DPmKhz(xul)v5Q>$%w1Jwh^Bl zbkJ`ow)Xk4+pwc9$9-8L1F}1AQ2@YWbr!q(^EztT7yb?bff2&i z!{i0Ra#enQejus4+lQd`L8v+T@h}jb zCqJxNsqLuN+5C94jIr+u>a3Qi%i+JA#Kolc-xbTPr;KS{>iXGHH2w?N6lP6#`*z*T z4x0TQ8zGiEMFJhR|6r#iio{fRZGQ3h^6wr#UtYfatVv=y_b^$SU8l<*EUczcR?A>O zrS{2VSR;WlP-#&Yf(dg*5VYH!mqhRGt=i7F~%p~|2 z1M;|J=sV|3wK%N{tL1A2`{OaZd(KYCPjWIQNnN%a+-++1#&!sX(Jxv2DaUg8z^L3) z$jD0{L1Ita)3LJ(ASN+w#!$H-uZe@vb1kmCOcLkjK-m@%q7+759OV8EWiEAe%iG# zfH)MZFD-*jK}7<&gJ||KJW6U_5D|eWIBdU*kp~mvOs`*5R!ml!l0<{SI(&-ex|<)N zLaZ(4+V>8{2=k#la?FOae1?yYA0_bZH=H+oeJ*6FF5Zzm8oRkZVpYB(v1hPIz?OE z#x=;KvE^*%IRIR_$pa9z*)4o|v)l_z$H`XaO}_qs+ThY3zS9l}{upYZ!f0Su;%G2d zfc~5P<7?~&VV%&k8ov@%e=zC&C6z?|I-fqtST)y6D=Cyt&WlMF>7|U|IFTj|Y2R!Z zTHZ;ixnd40eKxMv90(=5E`O@38HeQKr!cpUd~Uue2|!tnnt0oUXTVVEpPJ}QIQiMc zmVlwOkHt)n1x@bzr={_rqzY6^4$)nAvSY zwb8fTku)c`O{^ipYN7JD3x~Fev0`$aLwnuGFLd`>LzN0QEV$8EDLE%?GfonCK>>y+TeBMOKNXt4EE)PX=g8U=?2&G}^HY9qwE5;OQ;(^q_f=56N^7Lc&e87!2_ zPLUx1vU%$PY`iF|B>uDH<;g{uNA>kJ9u9wqLFDY}p{|Z-=vx_CV(qL@ zx_EO_^Io};LOL?Ayh%uUV;y`*lfwH;O_gHx6jr3o#)INiyjl<(5oe1R3+AKbrF4%b4CD44gUDl+_wu1hz0Lv00;wA zlQ-YR!r22%`B^QG;<<3?H_g&buzAAg^#(SP2y)FWM88x5848HWTuy(@W2$#2u+cSU zuCcSTw`X!O5wo(UTlk-N_29tF>Agw0H}?k0HPBWMAV)AD_;kG4-jhZ#*$!62fk3(1 z6U&i?3GtzH`*l%q2pUEYc8#pMicSHE3Z3q4vx0T0vgzelVzCf5EFYhCgOc{c(h{jx ziX;U2EO9#wi%<>+lI|1GhUxVzNzp@*sCe%Z}50Hi>k+}_y0 zD-}OKXD25gAf@@z`E+v?J^fd7rqW7lCp6*+>PQ4&p*lOV@)%5mgEv^1-Z>l;D!wMU zt$~0&CUrD2(yDVX)G_N_muArEf+zBeXQ=IQ`1BS+>i>#}vU8iIMTCPZ;UFWI;|*Zqr!-g6K*ksU~51GME?t zGh_K7vaiRrxCX*=a_eQ=pVJn7hztFu^3%kT4wjOFwDWocEjNXy8&mW}K;$ zSY1y80U{f|(4F88x|V|a$M9Y%bqJ-jekc_Q#Y*PmOY*Y`oS@D?(%iOn?BoO-odFVN zpN%yOT@0N%Q3!LWxhLZ)JGg($Zld)j2bE}LoN6AGH#{m8B&$cwibaF9RR8X^vFh|a=I7^2NesVpcqR05kN=HpSbYjIiFZBz!mvt&=t7 zEI>B5x-%U#p~RP*KjckmR*{(R!#qK4_?a%A|cZ#lcbIqt4Q_xL0k$Sek^Q&@)%PH@{3H; zA{%!S!iXpxii6mi37jwz;M-3rj^bp*J9NEzjELd&1>~YU{_Nq(1JdkZEW83>8x(PH zW1FH4qJ5=VaKnf?{(H{xzi}zOlvHEXg59$42XWL5+j6`B%{23km)-eOQ)LmmRns$F&ZiIAYr5L*w-q>14A9Typ$;FYI3#t)_Mdc{#z zGLmJV4%J*h#Ubh_rKQS6T5TBh48O7^5`3jnWh`NW4@ozmR5M>Gs;(OUHHI-?rZWaC zn8v6m1cH1JA?^<6MU&PO!io5uUDwaYhp6R*uX`zRKyR8vTA=dWNKpI3Cn3FpGCy?+ zi7Ze~pvZY2IH+>eS=^IJjijk0%2_ehU%C#ds7%bc1w*@4Rg+D$rMf@N3TP+0CQ^f} z{eia$j1s~T*()5is}~oE7fz#T1u7-vno9chhFQ0tACF>QB5v(WJA3;0q+b{l`zV{{ zgScV%SeWjqgI&-f{Xv&qo*BrvW&vSczRWw#YlV3J3~_C@@8HM`nCT}z1@F`wl@a2q z2@gqqfO!4-W{*F^1EiDi#v+2*R55Qq>WVaz%5{F;(l#3x5wpCz+ectxY)nNtVN|v^ zt0NBT(hTI~$dX)HpEF@kL(_03rjtvt?b|1ZwoI;yHK z`X0psB?Y8QK^mmH6fPj$Al=>Fpdww;-QC?KNT+m{ba#huU;Wf~{Nlaw_8$s&Tu$tB z_S$RBIoDeCiAyM>#}`g+EZPCHG0o=Xnj9WUZwx1<+i27)><72X^Agi&eW!NF*AL!1 zv^2yGL>bK5cZO$QI|4QAuU|t8^TJj33s>pCwBJ7~mg;wFp29`G z7rC07!T-&F{>W|stu2@B!4p|w!u-f>n~W6(`-iAg!SwtEOnt$NFDEvIB<7=B&IsYe zrkdX1l6zR{nu!qht8$9q4;s%uEZDVj5}YlsNI;`Zn;~xKclztKFmL0i z*(1QG_Qw3=G$U1J*^)`q0yag?rixN)1vmbzY*PVbY@Q!$mnYu|TY#33YuVX2$qFxg z@pX9~x_>ns6WRC>nBw>29^hp#FJC%e=^lY5cObb$YyII`6!i%s(-U3=jWS}(_)$IL zZEG%sjnFcD7?q%R5DKG`ck5~|<6OJforJJwO2 zAXZ7N4x-q`wz%&*vrbvEs&lYy{du2(D#7s(zf*Kypf#?`r1u|05#~7-6BdOg5%%R- zv*xdr(0hhgug1=Pp6^-boUjp7M-p_33I`GP&h0<{#qqvF)x1-GSml+lLgniSKO3by zzsDp?((~4KtxGpdO1^_ijS38Ikz7baJz_*kn6sRLTj)b!eW6kCc6uRC3vWUtuld2O z{xz~^`=5YryjN?#TyO7Mm$ldAIzrdhkdTnTT@P>F1|M8|N?xng)kpu_sS@wJ?lH<; zK035FIN=<+@0{^a7t{tXG?!rb!-9+I}TjHr@*!_NmB8e4PE zl|PC@#&nCu7PsyM{aV)5$mdj-~zrrOuqr9QfrMoAo}#@pU^1cVv%wpdD@0lfb$zTaL4qR!p3CLm2BG>)Y&` zsiceZh164)nCvXSC~4{@8d<21tyUlVO>M@xr|Y0zyaVZSo@{`p{pTv4TQa?%p!-nz z_PENd!{sVqt#6c(ae9SBz)RpeiR6am?Jo{`?G=QmvW&wy4W(<$8O!spiRVh!0bIQ{ z2p*+z++pMGr*qUvcoue>Ce)wdpzpd+Mtf`jRbb2ok$aV|U;hDyqkJPps5&K0Iti0Z zXdNrttvws~S{|KSTcTT>!WqHi|JjR)MJ$s@Oo`-8mN(BHFu1(H!#h^68LE5mOMN6C0YmW{xfYbOcrDh*GfFyql$%Uv|2wKJt{A+ zSheZs021;dA|WFQu_}eRsWpp6Rx`pL1}ieiz*rse}T%w6kxYFkkwH~P^~cR(65@CJ12T4 zJPy$-Y&=e%o=_GaTU2kAijeucG{ti|--dd|6>H$xl& ztF(dFiwKa)PYYP$ZweV5BG=GRqvGt9>phAf(I{^Q|!AaFdO7ZfEk+ zV3{rXeqm9j?Q`X+o#^{ix&vwcR4tBIhkVZjyx2TWW-|zf;#_%fVsYGgT13Rf)t*Ow zg^st-g2@Xz0wbj8ZUN7~|LD%aG1g4Vz5+W+JGw`%zi$=VpAECIu13+(SUt z@Fd}!wE7yJ&2G!e%4V5 zo_%!mEaqnOU}4mq;C+i$tqkC<~=ZEVD#8=ts69%up_d4HcOLlx5_7>G)#R%;TMW2`vG zt5@2452eQ4mf^#4(RLv1$QpU!=vcQEvV62s#hB3Gp? zD>_9#m54Dvv`wD+hULUGsD6I?-P<_2 z-%AO4x9iZh%GN*Ko#e*R1iU7)m?zNmDT7h9i@|xFNIP+eBlHQ4MT*KNe;6pWW0Qn8 zD9n5K_|f1Nd0$9VkVKCw)Qz8=&k>Mvye_B^8jw{tD9Q@8Z5hgSD0dvpWlF^!3L29t? zlw^U*c0>HdrPGpS^AE0lC;!X>lAlYva2jen*?i|6^%5wD3(Bspou`H*25Ur%HV%od zZ|ga?riYI(`A|v6Oq$Cr0+bM7PSjQnEn7nuKmIm{CgGo3Tn1+Q@6NjqFAwQaNwadu zv$MKfp+*0mgR1Cn6W^0^jNs17HZ(6=wTzFoQ!)=CVSbO^Tk@?bJMx-=$$7Ve2-rfK zbDs+;nU`bhm^9GmM6RztiX?K0K3}wb&h#WJQB6TZx8A^LE4(A$j!brwW>>X$3ZwT; z#RS9GlBx-cIq}yLy;gS_dV+=;25e1*kDnXMy&F;t7)+vn6nle*mn;5$)2D_C76k+j^omf9uU7kXEP$07L_v| zv$gS3Iam0Cr~IW?!!Iv!9s+Scw3MXj4*niC`8xW=sTuFxFc*E(KDhr&s1%HLoFg1 z!+xzc2CwhIg)HSY(OQS+!RqPQG%lB0=3SJQY392g&^gt}%r2`kQt72;Q1tHQ4|4c% zX>{*vn;)RYdh?;oLUI`!g$haFtT1vA(e)SGkE&^nM(^Yx>L5KVGBsQt8eM)U5V5l7 zuzX?iFh#GAEk6WXs#XNGU~&TA+EveK^_%MMd|6*iES{I;zJZ0_{iQd%1k}%N1J=Y3 z-McWgHNW^G!6EWAp$c=Qwa0s=Jvp=f~?S!VmjtESVXk2LJM? zY!egI{oL3dd1AP2XL7kKYUCOMxS9i7tF~8QITetr8lzEcMvp7!DQ74&2<&`&d<|Z` zpN1Q|2mAFZio9`>y$n1+Eq=9IL_2)!3iDA!fHd!~o$$)tqgUm|>ah5=Fh8;*T~E&5 zr2mbgj*81nHqrgrrsXK>-PemB-Jfa*sXVA8PoM!TFEAiSVI;J96}|O4!Eke=_NbsX zW8<70P1@aE?O6-zK>WNf!D}XwINwOLobm7?z3ni6Vz!11nyg_1r0Sd{gA#9CJUlmF z$^COZYKdb%4NUR(dsV{oq@k}rIS^^UGdDjkyd6-CcX&LAqu3>JMWw$Rjnztk+CwyK zOB^u=Th-8>9Z}c6jJI>d#uquROtfFjmOtnNdwHQ8sl`NA@ zjrt;|MF6Y>$%}yGHEsL3GPbo7`)M9;QhQlq$6vv_b909=nq)Cov-5Aly=$HyIo5E9 z7$XjO*X^tv7@VWn`H)^hAk0R?Mp94D*Pd3sM|PuLuWCFz4{Ac?g_dNn8iL%?qp?a| zz#;s06raf1?F_|CVd_B6x4=5f0}OxOssr$&3$^y=gT$3#lx-#W^n? zI+#@88zRuPn6J?G#RU* zT@7v{qeAsbuZju71?$nxIWi}1C2}tv1%7`xFO5}o5BzHWEzO5Crt7vDcB}L2l?yj5 z7v-m{cKhZQeBbA_Lt90Rbz^9bsH4b~^9FXtTB{pVKU4L&ur&-z96TVW#3hlUrlcNl z#NRrLst6pNodXv5!}mG;Xo^Y_A`-V00pj@7>F&r>AkW`tSuivp93&b@4T^+=!d@nf zuQ|}_mzzXE)y~BYAd#$Fe2cTR?+zUKDCfS2@NB-d%jRQai_QLlRH@oIa;dv80_CbI zojbQF0d$yk9_SXoVw3VLstcBrsax$#Qbk2p43>4oKCUXdSzIBbgG`@zekUMrJ^XIr zoz6n3^WHTqIb|^a!QyLut{{0!JyyikFCCwGh@6Twa8mWf72iBhJ7=A=l~ZX&TJ*kf z!vdv@*hOACOsdd+f?t#F3w+5D5qi_GQ(ze-rmGYh*mNNmjp18N34pv#m{d=HDGZ@hp1xxi&et z3-F=lysnehoqd)5#aH?HzK?5==^Yz!=XE_ICVU}A$&GK;LNZhE>Y?l$ou_P}y7e;zl%f)n8V#cjX0_=my$AW%OC36!i&=fYL_9<=4O_7PrV$v<|&F1+uNE`NriJ2KnyEL~1m?*fq|Eoxe&`w)5+<3(?f_9hjAqqW`;O}J&G1~i}&xl&P&He{ss>Wq35 z+Q%Wiu@s48P9Ly)+n$KPQaxZ=3zsR_b3>dGbN4pF$Mx5F*rOF+-dDuwz^gdTTHq84 z#AG&if$?NUgppgW+QD#-=X~f!p{i%|sb_G-cQBS&t@2AjXXKf-6U-^0)EitalUGk>ky zOUJ-`Y%DaRlw;fs!=%52(6k~Mrj>SN$Kh%!hB6LZ-2LRHhcMz?|6ky7M@{v60KEKK z`hL>CH}&b*8v#qx(wG1bPnT1@ROVpbvbV-!uV$LCmt1ZCyeTO!FVAuG?IRd1AOG9V z5P)cYjC1H_n5f{)%cGEKpX%Y*!Z$raM^&K$Vbixlus@c8Slyr|Gc)sEv4S48z~_LDiUr5yxv!D0S=XEnTUW35 zW*Hfo9GWK5?{kRs^$aTaJSwieiO^+c_t|o|;j&X;8*&!^iKDv>aKQm4KRbaMeSgMM zvD@8I)X&jXS3M9Z$3%zxj+A%V=`1_Ms#rX)PJ}_E9JI3w1CxyelJ5Tct1nF}ZcroB zNV2=fVhTS!Yiyi1P_h@qEugUwus)fvf5iL%#$b@=StJ{`Oy#nFdQg8MKz^t9e(|z1 z+tF!2)54)cOSa$K6<8>ebOJ6%2H`2ZS&d>tOYY-t#=C0Hg={zOMu{sZd_WM9@dqzU zX%>3`;}^Px0zGi%u>4~SODCQ2dgl%LAcg8$h{ug-rXIs;h7(UJmWI??Vd?>=psq57!?!=HdgGH2U`LyfCuey6Rn2rE zeq8Qq+anzSrNqNnf6p@z1uKc$rY6RPp*mZE(|0W%DA$>c(|MGgti{v>_D3po78TGP zD6}ji6Mh9Zr=+=n7e*G*Tgy_ABTK;fW-`8p%4dk<@=?!;kL17{Rd|U8^QFeA&3cEo zs(F%X+^l^P!KaK4f@&RN;%hzme$v0D0sPlbI*LzWsHYE4*n)}}mNF%+S0hZ;#NF!g zqApFI?c;#+BLXUR@9*!ZRuns|ay`8duh_6?_W5wl36XV4FVdhiQe_G23-f>Bg??dh zM3i~#AZ{mJdin6gxL1knwtxeua0$_PqcPrfUN|+UMU9J8MY}MkrHX-_mpa62fZ!_- zV4l>U_Es}cOLcWfjet{=fzSFpvGLSezpSVtmiGw1?)HQ6a+{xsAY}HgjLGz$TliRK z5dUbcH7%{RHLbtDv=eJ%C`Gf1k&gZCOY3!OY-$1k?cWBm_jVJj_ZjF^tRI@_08)W; zH!%s17~v}jLi?){&#}%A;r>CO!J)0BK%t-6y*c-*!4xjX+q+~<<~_arWG>Hlr*SrY zoLs%^jsi_V{<**A#&SMnnbz_*UAnAa@b5PDj}AJ;NZ^w0HubECiebX;ee7=8C(fC5-)|+Fxt1&KP=q72-{XPNDtRt=% znZQz|?}-W%oJND?PlS(gU&GGF{~(pPh{0|FL?*<)VM-_nYq?*9acm8Msh;@3w;W6) zUNK}$tY%K1{T%kqW}4MCRb&~N+3jxc2-DENyeM=vV{n{o08oKU9WAHE%8GYDZ_${i zyac4Pmzpl#JgEb6H;-}4jPtLw90rCPA^S*;l$6i!{71e*0b@DiP!g9g1TUE)epCGT ztPe|r*U>6n`(2=HjG$-fl3>NaCH|BAWI&KmjdyxIfgY8>-W!4L!kIUFu6!^=i8auj z<)26M@yeK!I#Q`9K&8H~Ql8iI-YtmXRYHpF*Bs?q&RQo9R8)1|8Ep2672XDCQzu)* zWbk6b`5PzAeXkT7%#z|Bz?gf3V^dTI2+6Sn>nyCt)hmHB$DgAe9U^5~>eFQ|wf{X; z9mVpnrCDsTtufV@xFf>5Un8f1J-gj-6{?y;mT2hcSdU3xL&tN}6HT9s>#ueqospV4 z`&E{pc&0M~-xvUf|AM_2=2QzB8q*ux(#%++6hZQ<^jRbSjh(1 zj6Bi%!3fU=aLLv4!;>3VSy{SfX1k|b%^5AOB>=NeiI1+ zwI_W$XQ;!Qo1102o_;h|!2cNs0mmE>h$jR}(ud{Ag5CNT)h+E1+udBMM=CR3`}+C0 zsl$5J0AQnRs7cl&4}HOe{X9brz&kgL4lZQ|c+Yu*dlI?HVw6p{`s4)(xSLK+0gxn9 zl_xIR{Kl)5gM$8b<#Aev9W=u0PP@4yqnq)TySHcV`>|=usQ!BX9;)->1(U?8 z8gu`{yYm$(2%`kN4?yde?qAa8DV*cZ>;`DP>6eqn;5k2=IWyl)T6i=_s$%*w>D0c8 z1J)1Vf#*vriJNhLevC1+7z{i$vk^^SW-3i2i}#Fva87Z38a-zaE!KH8sk* zXNOo!uf>ebs5T-6o%XJM?y)CX8K7}h!OUENUr;jK-?(%{d;pq%uF+>m?5|U{!I6r5 zxJ(E{B&)!3hetEA*yH7O4DptCI+rTG?u#%=xQg8`Dg#Or635qI-M+fqifL(RmTvgVUjpUg~uIpl21NwC38yKmDvvt48Txc6oZ%Ex;Ap}w z*}AFI?2DqTAO0v%f`#RoYmCZ~)*bBuF!gLnpa&EBp1BmDBL?dR25cX-g=;Q2Ly>MK zWzmcxHGW8S7KolFIuOirJd+{ExT7orVlkRBZ(bd5i1wrotN1zVn&lycz`L`|R&A4r zDy$MssqeIeB_)UrZx4J&-!tNa@|ZkH*H`vY zn(dEEi!K6{q;_5e zS=w>O<+F>g^Zv%cSa86LepjDAEK5deQv=I88*-6pFtwD>fK?m?)^BS~v*ND`Cn-1s zUqH3Vu675n4bh*qnN0?cjg5iUc**R`_W*{`pgaOxuU`2|SlF;R-6Z;OIH~5%?a7d5 z?bdWRQ)o~SA@|swr3uB>J z=ubw|@p$PsZkFpJP$5$(|0|)xU~8ytf}~YYw5e!3=EYcI?WM@g*Pe`1wH&l`Mpd*V z4qF)6y6(l$ihj=Oo*g=^ajhQ9BALFI{D|3c*{e}*1!q|TCjCxKhg zIS5g2ZlA+;vt_d-Iq9NnH#VU+EL-~y_VF!aV^->45hZEM+AY7XM>`fth_iidgk0+D z%%wsg#MnqVSy`+A06BL0D`cCt2Tnhz`3F(#9D)Sx(3XwO#>pWdb!GWlgx+o zm!52>s8?!DY}c^kxTdM22k9<4|%? zrYU|m*JA*a*kCyPnM{8b<#Q$$bLA{&^%|Z34Kd*wvl{G2j%QJsfB1C&jf*Qv)4lJl z4dM9DIOdvOV^z>~>_*2%Cs%Lzdh%S)R!Z=#@-W*h75N6F1dKLnA?qMS_-_IZpQWW* zuGIO-Xv@!5I3l;p8=1Ne;;d6XEp|M*Xgn;ep^o%Xyq;8|Fc`q!F^^WW5sEMzF6H%4wYY;f%yF)AV~M@|!eJgI4><7mgiCWU6{>T6CX@r!^XjEm2#u*G~zn zV~sbW%0U^ZlM&lJ$+_q2%pybQ$)?)l9NJ+hwf`TvsZsPg!A&g(a+X$V2 zAW?T<816TL4fcbbdlOFiKK(<&7CWijd;c54@A|Bq*WIn_$f==kJ!K?7@fGfV`e1kz;wA!tXcBJMHHD1M z=p+Fi(r9dtq-+1jcIII=rhirfn%EXV;&gp^pSh-XaFQL021-{W(iaGtVzx8=-&u%Q z7Bz!{9O(>FQ%A5{c$|HVC@)U}3z4jPdwkwxYh~gkVAcw6)$aiRswjzEE+4p84F`442P*`uVIZy)m!RIOgoizoL4U1Ho3kwMyKEPv#z#D z98wxz`*x47WmXBDr*rR)KDtaeMn$cI5(L?YD2Q$E^#jau`qt=f4&r2l=6G$iZlBW{ zjc~sNl^Ml`YLhA4gqu?R5SPDYoN7j`%Sl_M&@q0|^m>u?-NkHY2(|8$^GgWwGQw zhIRh{yZ8NfEvQIG!Us@@Y>m5g?>$md;6*n)en(lc(EO&k94D4G!WJnX zWs;H*(kf8_F)Y-agolRIbw(Y0X}HT2xAVg9iBsq+*S4SzNH5sZPUYw2J)$Vlk$rN? zB}5z228y3fJf)7k@7`CGw6h<3KHD3_gUILl4@U|B=4LzC zr`b(1!boHqIZeX+?qv`E;it zv%;|9q7?$ZQk<5W%1NjEo9}hDA{&s`McFCyb;6oZB7x6yEQ z)SSBT+=tV84*Q$G34gKHYmr?L71`}R1vCIjo_$fV(b18~yu93rvC)_ZbN6F# z{l8WVQ>K$_r!mSB)mcT`E)CL#tAOO8%n>skHlj^z9&yy>Tvwj4 zG-}b1evc_ZtvtPbphc|4tDUgEU=TbWQ6!JSNsH@sV9{Fwdwt{29=Pt9gc}*z`TjOz zHynzqlkI-2F)Z{(yLghIUTO97B>ItN`=jF23yR{)S@YUeX%pZ!5vM*y`uw8ZNDz-wd`@F%q{qxPd9SAkTz>v5o*XUyv}V zU2-!~vQ<2(a4H%r>{5chJhGE>nSw!u+FyFyHiTaYX^yq)6FSutjt{?WI)Cth3OaUs zk+Ok~{(krKPZ7e*t+77N_5D8Ih?eVB$3M@)!qTX+mP4`kG^q0nI!y!kb6v*C z)*~DaHXk#mTS0el8Ihm7toiE`G$e|!v3q~TbZu^@Yru!<-;laZKG>A}2viq^`B*2s%I5F_pxOOTpfdG>i1=EG2t&0}W1-J}Wzbjh zVR#H5<^d)6>DyzlaKWpMniRG|T5A0_de^Ux@bkYVCSnPoU;BG}r1(ca20nWG;-3f_ z{Pq%_b?vWjeso^_(sx(jIe#H*KJXod&U|M4c34=6xXVrR>a_FN@DDZ~Xq^urcKh)m z^x-cg5fKrZ`9(cIxkjJ_q&rgooJY&y1~44dC(-1j{-PYeF^GerN4}@C+aC87DV>D< zulxGeM)%D^_pZoC`(R7%CDmD0`qctk-V?8*CyX&z6nV zc+2$?r`=&A-KiP9Y%6wB(lt8ItIexzmHpTQ>XhVTeAZ|_lBjhv*ScmCQ}4+g*Osoc z0Bx=WMeqL1a%g2}TiAc^ z3?V!`oXpIb;SbX~kiaHK=yrI~b${3bFjes6oOHwgc|Lg(SGA2AM5w_bA%tA#aCTC_ z^900uzm5P&N~bHd$jj)X|AKdf6Y%>`AuU=3Q;=O1*`k+JMPgNfHnbzreezC5a{L}`zRZmqC_PQihmam)9%QIp^)b>9(q;iUjN|3gPyB!vSwkk?>%j>JeB+bc=JY%WZ<$fMEM( z#x_7pcdy*Cx991or>}RLZoJWVz4tTuG_F9vaLb>)v948-*_*PvYW?RLBvRFEhXxt{ zX0;*|i}v+T!XxG#D%#h8LHXg4l;sPr!Au>C=mM0}MwQBj=Ra&q?26;t{^sPg6fZ%b ztE)s2xEM)COIvkSl@vx77E_acb(ZZ)?+Ekp5+M1N4Dsa&Bg( zUcABkPuDu1j+cw72aB}fu0tK<%5-Er9R)LV!P(eH$IC)lEfr`~*qtiNqhm?o>t&3h-CYa+H{@g>G50?y#Cm?iLGURr>M zQ$S7SEG#N2&j#xoi&vmjyt^56#$#8`ZMiwNESz55NTG5(-}@N=;*7+^vhuKK8*6|a z`W6PH=IXpESKIe~F~5sWLeKh54PdwBz+I1>-9>5@)@9?>DEV6PfB{CxpjPOKVvTj8PV zJI>0^{2~Y14EN9YcBfDE$;Lpav+e}T#{!YjQK?v^ZrPvM0IQjt^#u^_?qA;U0EXj5 z5+$8pzRwdk#@>Y&+b*aR$3KC_-K_Q4MORq8cK>astkn0hIBR8FvyX$y1uo#Wy zB_IF_m>pO^U?v!q1bO?(IaDU}E9Py;%rsqcSw<%K7ib-;K14%pm_6F*uRUP0>v#3Q)7NvU= zG*wR5xEe=ZF2OY1szjZAg0^pKmd(xV^yoib%OUYPAdKO0Uh9p50Ol2GV=$?~(U>vJ z?e5syi^n28C-w#;cg=T(5Sft;c@T46nskLn_rfYjWsqDx1}c`=4Jc`dS>`w$jU`ik zkdP589#@C@$5Z<~JKx+512B49E;|NKHU{s+MvGga1lzkCo}h4lzg&=(CG*P_q=os0 za0Eq#yd?=7Hb|cmMT(!mTsK{((}*c zKOcBO9T_^cw=t;slDJy_>Wz3KrDkh=7v=>KmRr{668(`w4ir@Hi^Au{(r-qpM)aH`~kuY;S;*b*>K;e_jE_>;@=o_L)j7DbWvj zuIBRQR6yMWVj3F>E>WAQcTfp+OTS9S63;Z$k)^_w&>x|Yd&({2!LN(4c_f=#wxtK@ zFTg8_WMq0~^;Lt_XFq*Wfi7c1Q`Br5^Ul*I=->r0wSM7 zU3B-FM9M$82lI5MEO`A*RrUXiXLe4hNRh(lc&~qVo(EEv0mz49nXjT_^rJqqQzf0| z)B9n-88o7;AcplYhE`@OPMaE4P^SkS)wx){h^Fw9gsi$lsQ^6FYxtz~FP*vM3?iHA zJ(O&5-CDUhOHn=x&O+j{veg-x%A?!m6BK}PaFD7tlUsEidmGZ9nTYx1+1l9W1Ivsi zqCv&ZYpTPi$?eAST;wii&+2~TD+NJ*+l9j`^2Q>2D*G-%D+k3jE`GT~`4b-=b(J$! zz{2|13P)xW{73G6dQefLOyUtZW~Jd87$G0rFR%Z%;QNM|REMX|mJHsF{)A0)lfbbN zGBS>8ZFT;Lu9$F?=tgHg8}3r`B$?rEy1NSJ|0MUeO7XjWOmX?@`QdK{Rzh}jGU|rZ zHbuKe*ayhP{3$4Tco=AT7Dj<7`bd8v(1-BRS%j)5Y+@=JL@T~GMcHJMY1S5{uPe-a z1>61kfr>bb?znU`^_dv8mqL@rWM1oMSsWS5AX}gO9Dq}wyP0DsKeV)rwPg}9%FZ8_ z7kW6HES#~X=Cza{LQLE<@*&So63Qw-APX9k-_Tkw%11Pi&ml{mda+zmbfHVwt zBiyL3@4Mb9RB(F?pdh2TAJ{R|o7mlxDyA=>A)~#5E=v^-!6PVyfX*PC-cpCOR%iHm zC#5Bsk78TQ_LP;4UBp;VlOm^4#l9Dml0dk@*8O>g=uUr9NL9z2Aj#RKavMf+uvw(5 z4fopr2BeS%w1o(kNK4K+o=-$~pG&}04B?1P)!-^-Qz1vx4gHyNpGi;|tk|UT@jY`< z8jJ8;=w+SW;lMn?WUrsm>5{5u!7t^;9O(X{4I+hh;ZpmzA`vW3lOp*-5ug2fp%JS| zaP*cVswfp+Wr$f;9`iN_1}DP7fKN%^5B~8s!S?;{fV|PMM@iL+?K5^>wx~KhX#jC6 zk5d93&WQ@MRiC`;6%WpJ<@Wg@7UrhP(t(BT0>#+V=CodIOxhm_ZBU|(GPt^-AQ}1b z^iLIyLrgx9;bkl`iVUAM{;5MxG?PT^YkN^n!}t-!9t~M-W&Ko)T=DL{ZMo$= z0g}*qZH{^YGX5|pKdo|`V3G8?=R6OR%DzRxvf+v2q$-bh{2^WX|3;9$l<^{68i@rp z=b<|kB)g=r9Gb#=Q54p(M*`Q0;{LnLzeZ&$WqL7=R`frj?1-gp8*m4YJxISoLDFQa z2%U70^!V}r2z`Ue{gccX!6L|9HH0R<>P1?>$j75k`6D%MPahR=lnJQz6W?SAphYuoK#{+R zw|iC}0;ni;86g4v+TZI{>6MbQULfZkJUL(a1l4uxXUGDOMJ%pCf#B(flPcNtSX$w> zZd0@4w>%}8y_@-yJ~anV!JD3+M_Rtk!99*Nkswuktc1Tm$-_vr!J79wK?XpWZ$sz` zDr75!3LJdz8R(6h`wFWrqtYB^)s^~s$tSNkeGH#~mWEALf~hy`-^_ePW&cVNJGr@y ztU6y_QWpvNg1@g3E;Wl%_5V-DekuXgvA5yU(GSGCtD7VD_QMkxZ2Ry}7lY(fQwMif zPi2MO$&D8E)hZ*uP1kP#m0{lXXmO+$ySAdIK$L$gJfRu!TVC$)`iI#oxp5=e+SqNg zbZL?{x1uVap7`&skjnFPD{?k|bF(rZu1kiWPM z-q=1`g5)}*uVrD^qJylWp?ht^LN2SEmAICr0FcM$|B=U^lcJl1;7{PhO`2SN)!qI2 z!`VpY^OE+*X{zHJDu~x_deV8$LaT11U&O7STj{^L_;;CqG91T%@|w%yZykdVkIkR( ztYh(J|61$l7f_P=`*D%^fCl2t3nQGYtknh*uWoFB1_9E(K!8gK^6mn!Q#>L8l^$OV zdVKK$O88|65Fyh%yd#;CrNR1x z#7-uF%6I1^P<@|NZ$(5iE1bbGiLTcbZ9Aw8^}ttTqM)mj5-TN4Fnnu2Qc7UiKjXx4 z-g_ZVuWmqHq!3=ASyeqLEoD|l3wmboW8gqerPo(;!uYcmm(LnoJFya32Y!`mu1td}=R@L>@yx zCQz%2MA)zRl+{lu`gaR{L&*=;gBOXo-bA=l+aC#(`6gM_0fh)-%{Z?4>PH~2S+H)t zabFu1M>=j0_Pp4$ED{-dO6@^Jh?57D=RgAsXyV`c^U-M=-R##_M_o#S(R@rH1UFug z^4CCV3YN#Bb#tFP6vtVIz1aq+3k+0jZQbyFTVTEjwnRK?udzH@rN2qy_Ob1c;Z%ER zk9XRs1ns9!tCh7_JFSOb$~33f`^b^XAM^Dry1%ySa@=!iFQ~9yexagq%36~`nVbI% z1@o@i&*CZMe*gMA2bW2uMNuowvlrj0HBroT-@kBbz(}l4pGmj!emH>+&E^BJD?Txx zFW>9RU7ktyQnDF0%{;Q0F7L+D+XX`?Vj$aRw!THR8L;u$OXx>Tt@b0>+W-D(-Pm44Z?n*_m zRDOtDhHf-QaKhQhHv!WV~c;(*C-B20xQo&{d3t*0@}f9@U|SCp({6%((Jd zf6gS!+qBvrI~Q;jV$~~FpJcZjIls@Wl&>w^s++QV7Ku16{;dTt!}DV|{o=w!?@VDT znlN}$FXn66tMu~JMp;yMbmV(LKNX6B?#CXnl8-akJM5@;PpRA|Gvk}2yEw_TRF_>3&RH8bhHKb9-dt1zE6DouRJL2z0ugzo+U{xAw-;-Dt?m;T=gBpb z7@G$)NA@^ldtOfz(uNS-JOX5k@a=iLVQnWWq`xZ~GARLDwj6b8!wTC!>9f(sKo#l# z_!`UifC1aY`5iPhwj~X!Cqh%(D5c{xM6Jy!&u39wm%%fvQaAAGQZM7jCSSzwL4#t<<|a@xunPL-v^dz{v6HfxBpmID4TV6#l^(pfp*fo32~*L z_x6hLCGY9hHN1WzDH|Jvh=SRuVpab+O(_Cfga+`aTwNLS)&Z^qEGr}=B&l!H5=OlV z!oW&V%t;6o@dzPq`U16Ua5ggkFKI5Q-w;>^l^Sxnv*-bG4Fq9*%g#sg?7w-dq8|>` ziFM_fK4xs%s`mX_cUBqyS1uN523QFT=Q=lF7GV-RkpVlk<E)X99JBY!_wE5n8er~>w-MBt{5fhWVNzZnz zh@ch}te4iK+_0%(Vmi7g^$U@MpE@* z2S}8gBA=4?tjrp@+8wTbroh9+t#dpy0)gGo>+>q(?r*KF@45q0Znv|0!hl2#h%FCq zFB)#K(G(kgF2Q83XU=mg$&6~ptZZ*7^WvW=P= z^&XWLbZ-_`GX7sZWlJ%K4i+!FvMol7@beoEK^vyE&IZG3mEmiH%cT(L;^-qV{eTr` z1So4kY-OF&y4_$53{`*)%Pt@Tau|!8eOQP^U6ALNOr=#1*-}bbMp{&E>QpK1;PJW9A!Lm&$8!_NL-tdB;pTD4a!NN z{*fw!cksU|C*g6MQg?}Je$aE+dW-PmE`B!u-C++Qb$T47=~D5I1Zf_2*leNr!|;JmJTU&vyEY>H z;qk!#&6CoOW57L1EMJ<^`BiJhc3v`wGau7lg=V)%X z@0zz)I>;}9rcwB#{;==Guqp@*0g%pPY&9+L4S!$%yPJsB*bE}K*x;F4njCa(r;#cG zc=w6+?P}$*aKvTDzCVVRKDdQ{)k~>&-Cv1HPEIaaRID)6>!_aw;F4xy&7cLTw6v232QztM+n?H;IP?i|(y2 zHVX5*Fu~fl#D(nfeMz?(RUbUZ(!s;*^All^VaVDXDh8~a#HZwwrxg~$<|tEp9A2ES z*y%1|Dbigy2f=?N>waIdv)A6uR6StmNnyF1AcEKa_G7)0pF?ZCCw<56QbZ&e0s&RE zw6AAwoqc^PEGH5pS$#~u(9Rzgyqv<(xDVHuj`C;1O1wtG%D5?=vYX5{5`+C1%lfih{QEbmh!Jhan&3BvrAF=g8Em3S30h zG}L9d56u5sp&m>p2ZLnbhO_a&aDx}hTzRcT z3C8S9v^NK|P5JtA4cQjm&DM6`hciy|5+yPU+ONu4QU%IoQ+$N)l2ByEAZ8H>k60t8 z=&y4*N3@9%FQFZYG$gxlp4XD!pG+hV5ulOBXkdvhZZNezT52P6%!@jPsExjjkTM-~ ztZ$*ghqtj$co^GcFTD3Qz9Y^=1ewF#1I>goTDg~!vPbO8C}Mea*390Q$m41*CNx#* z%ILwiru_TFLj)6@Elv1w`@4Lr)QWE6(QXkfTb-~EJu|*A(&(;pyw@G3wvB!q5_59s z&t`EiwY-vNqUcF@JQE4Jf1NEqkQ;u6aAZ$(1X5kRXXE}G1)H8$=YFx@sQ=H7^ceI zmni6XsLKeVQgNj1djfRLT$qjTV^g%s-Qr(s>-PLuMsGDT@h_>nZ~;$mX8G9q;he#Q zIKPpluxE9d7;|InsDCcG83>CX%lPf><3h{%3(QH=o|V_OaX0msEj^S-3{n%~w%O{t zrwB=jqts27#=|=u=RB-d%qFZY+hl@D$E;Rcj*z89s5y;lZ0>(scht4AJ&9ED^^Ku% zzaqPh0S421anPUFNMwihl0Uu67g5aFB(k_m?qU0pTdmGc>24KI_)-S;qXw4zFl>y)>eW!0mYEjU(yaH$OGNAjm#qI?k-XglaLS-$D-i$I0z4E(*s+}3(1Eb zqGX|OI2PKEe`TR>Qh~*cxU*C%ujiTWDU>viUVO9&zH4~sQqRHk? ze|d_=hL=NR`Z2g$BytoHf?&bAep#xYrN%MFd7q+s>Cl>%D*s@aJ!7GJXxjCSewJC~@b^ zc3hjX2Z1`0O8CWiiO_L!*CpLg*O67CTWh#G<^?i&y>Sl>jlyOjmEIW-ywHie=vgJ^ zNFr!rAEI3|eW*`+O`rb$++!`05~4-;GWNxI_DP)M*RJp|j&ud0nx#{N>lMaA1QUZ< zzG50qBV{t192p}=D%jwm*=U|xKKmLbwAV?(-M(9lQUns^&ri>X*+2&k#?X*7vDS8nWyC;Vv%OZozCUZ>*_g7Df2%#YQ9;Xw{qtV0no%& z@qn#*b?ESo9jnnd`~C<@2s+rt@6<^Y8l(O^Q^AQDxNZDG$8d#3d2SxOJ%BrrH*!$C zxvTHi&+Wzja|>7w;Su75E_!sN^%5J^KKPVB<5@VmfyR)Lw}f(hEk*DK6T_=NzBiIC z-3R#N8q>)e-%L!7?iOl-v#D#5%#`U9jvZTGd6K+g-WrOtpX!QXzFw!Tfa68^Wa5sG zCS6pHM7WgwbJVWUcoVRs3QARSl2WOhGnaIBEh7}XCYZ=ENdnb4Su(AP6^M^*u zbEGqbJs7{D#rx|wV`J0o^|#b!ut=MLF8zl<)r?s|F5=fI!CMq(`oh@pW9Mv@RJti) z4nkfwXX8@JOjsP;O zpsvGLVPpCFFx9F8uB2Eo18n4}Z zXCejh!@*d)MTtPTpuDQ$P_Z&(Au%W@P(O0+Zx){tK1q=9 zvn-`Fh`O5&NzzJYrP5#n@{riLL?b;O4z(t5p&yb3&BzeSX>m@>~#M52N zc&1JDU06XGoo$?Q|E|wB4DGDN^{k%Eaty!1`(~m*Y`KJUa~#syl?O~3xJi-c?|_rbKo$V+88??cqF#g)X?$1Z%YM4WKaAw`b0`vkXg^v6+; zhFo`9i)|qzIOW=KOh5L8zA-42TbYY~T#4W<9#EC^%0)+9!q=2#E(5%z4}NHvW~!2$ z7*C!@8i44?T5g?rs}dUqK8CMp-&^ zepm5heO;&j0eI2156~%7IMmtM9e3yTb8~qJ4!B?;YeSAhL4_aY(yYZ5iM*joL1#`@ z)Kph@#lZK9vakK4s|qZJ9UOjRW;WBN*2gQ+`9~1%1Bjq)!O7Q4E&}wVdl%)yUGx;s z2Qg+i?__0gxJ%kp_Jx{tJzlxyV`(%o|7sPeo2Hwtlv>JYL7&J?v{;ISspchNDYwop zdQrJust`RY<83sq$OQ`?C7+|o21W|t;4`4Lt|m}pSVqWP@!O>mC2)B1+co0SL{y1E zd`Jb+GqWIh!b0(B?})bUg@7%9zI&~#02A4w>5jUi!>=f_ef!N}Ta(NQ$**CO@I{kOZzqD2Je)jhE{`S*>iy%Zqu&3eip@n%9D_BDZUw1|E-VDBn0&yVDr`s$eFbUb;Y9zsrBOh@;Xy62m1z>0UckR4= zeTlJLaFW-%GenS=LbNZb!7-&D$q@3>U-&H5s5W6a2Dp&--(P(XeuLX~|E?iU&zFw} z>%eXaw}d!53`PuW{2&5tol$`*o|Z#hP`&rh^_2?(-#C(zp94X(1Q(ur5ierG!JS3} z+x+Sp%VaCE1Iky*Lz;R-#AOPwYAHCzO~$<_Cr`nLI*&k3I-eTgod1@`JKG(EDL-(M z|E}SobAX6&0?O+Ced)NsZsX6D_+H((0ch6(EPLl<1a{KzAGirf$-5~D-z`0 zFKf&D?61J@Fy0E3m?){R)gCC+GXU7W=|4B{0eZNreQSFWs8aTVNbA+I&YcwPs|Bgm z6Yyh#WyF_|)xr@Y{gAS$9ibY3zxB!~Hi=L9)87^xTK%-&4V_s8fXBvGe%+Bd|^%q6oXgVDSCgKH^N*27b*5;(|kj5)B~ z_4h@NT{CmDHFtG#ar}IjBxN{}I1Qwr9frJy!6xFT5L??_8oK?dNn$F~z8hCHiw#f- zeYMiW{SI6N;vYaJ_EA$))2oVF-@w4D5eE0~(?+?0=Pqt$o2d6)>T6cKtd|~Uy{$SK z>VN1T7zgSp|LaF_PSdh@I$h;?8oG{dL#&tj9}?Ou@TW@@>R9^t_%tNcP*IsmH9{Z3 zF%tZ10QXih#haS$N^@vwT{IUK76M2gLGQljWA&mJn2Nx31{xQ8f9RRqwJCumtd%xHDR#O4aw58)UGK*`+?5@2cnMwXtc zaMrgbJQMjFS^AdXVD9DOGKe04b#usDw{c38*K4pTAtKCWM^I2tNmjY~ml^K_e+T8d^Q1d-bE7PF}B4wLK^YO4d8k zAbt767#{BDSAjo^Ai~R|e@<3~@yr7jaie~K{auN-|DZ?Uk(d7Q1Ax!w|3ON?XYc=0 zUG~*~s>>$AsvP~fr2gC->`VVITuc-OUNM@oJ?+jjdivCeOvc=11UZ%@QGdb3m zHcDOGR9{!=ZW!3?4D=R)dmK(**hEn`kcl^lE*=}eKID^=iH%~MCk<2+GW?W9slLuL zsFq5f8njI!z~j{%wVB}SOZhVW*3VOe%{dl(RkhF%_mO$k!;xQmF6M4WU^a;DlD%J9 z2o!6~MN+d<3VEiSz>-Nr-xxQ6XZ2i#w}n-O>JXL;lM#J{;Zo%}anl8>{^!dR+|I{! z2+77^hkEeqG)lN_*URv%PnCH6>z%`%9RmrFK`)qi>&&iMA@xnMsh!7!scQc}$iO0J zTbYR6eA=O1y0DVKQ+8f2`j<1hD5eH%%ZPSX)l2hkL49|mKH&DSKJ4+;yjOdM9IOt) z)q5JDvUxvLnGuhhNUXg!M~nC^+n06;Ra}4OiaPdng^d7SZsp+$x##$~D%neV z;cvA+RO7a;j+$nAsPdxUjngI^nrB zdaRdYkeDmF3`)-=^3!ClL3N79+{JZtjnHj6svn<=2>z?*?+}e2| ziA-LPdi^`|D5P39>r=ck*Z zrk)PNWtcU1;>-&YvfdTdiH?HH1@B22Ev?ll@l^<8pY9jr5$1E0K-M zOEOCqjg(G)M2#VsF8HMFK?m%!Grbu0)|E6DSGp#GXq`?rowu?+KQ%nNp+s?3mvTOy zF|SA9UOuGETVRH3{3`JGpiZl*(LJsCX*#B7FDj) zekS2IH(Qqx9-p!v8={{%MaYW#e&&b*M-m;Xn$iFGgtQF-#t-E!U`XxV7LYIzdH3)o zNiy1kSlDIs-LERSA8TOT2znh3+i@q6h?+&kju$7mCg6EgzrhNR@b6Uu@Z-_YOYd7qts)>pQ<)G2n1eY_&6)Uf+ zNHqPxT%|m-pp4$?oZ)FI6EQ;P)TURDY2~S^1t*}%+x3P)S|~P75jRr}Q*r;|8D@;^ zH3Y;I3^+1 zLUke($hSTCD8$6pczIi{ej}5MnSnnAuG5{QlXue{b(1CO_+y}mno=OKuqCWn+kfL% zKh;ko$v43acRz5df2y;ZHF(rl z*WhrT*HnLGzc{2EA~4{6!>pWR_EznMUNpes5ceJ=(ucQq=O(4JjatN75bwgI6h|qEsNlJI-tp3v`uI17Xgcvjtx7^qC zGulHf0>O{rNLDY)aqO|PbR;*zykH3s<_myj_$4)1mBqTAeueY6b9{7^Sio61?{#it z#LG!dk^hUVbEnhC#b6(MF1gm{UO4?t7i@7r%ZGk7fxg#In4%iocql8tk+LS_nX#;;y>rxGmd*R~*g^APx;|^+EwU)0 zOFwy!8c)N8fq;31^E2dDcuR4lmrV9#Vv<`*qronP*vF>53)x=2w+M5NUvhU@Y7*3X zoUcOXKju~&OJ+A`(^>b=zHWa$*d8b3N=4G+l3~0@b`tE;lF>H@#K^pxG38)EnwZB)4lC`ewVmS(|RI^GVk`?~PbBw;3|ncEXY*Xs3yoEeldN z;;J(2PJgoffnpk$t18KwEj}#_>RD#r*R%399;V)G1w5AX-DgYuA)#f*qZVev-71%p zj?o0#1{GKa^cm%8Wfv&&P1{#4>s3ifyfC!I%=~B^v0p@>SX5(qSC4j9!9l#&%x2s2 zp#^M_iAAjy^Tx!}VZ~Qaex&?vZqHXoCeZwhs%J7bwQElQY3XYcXUn(inyFl|$#o;H ztPI;vYT{q*787p(K4`C#Q@4BR0yQOXqmGGTd*_BEwL9h{CwDI;VQs)>VuE;S@S5%V zn%<%6;C(+mNYqGl3Ul9)rhdE4)+9F!HXlEb)6%}{h{pa+G@=izo>o+&Y5{t7H?@bWOouNQmYY%kJ2w;a zpktVouj4)QIGs~|U}u!gYA7nzr9f{yM-WOhMQA4~4q2ISpun^+*y$_wqh?DkrOpM3(O*C30hbU;uacwYpi0k;&tUCcs^?R7gcV=i+$FNv8K-m2{{Q2}&zu9Q&lv>m)6DBtHd)wjIrz&C7OCD8)HJ|xW ztKu~yi%u|TISzC}wXi_Ah|y;svtHv@S4s%?rZM)^Yxq3+UXS*f@P$RJ-{W6ED;xmJ zx6}>#8s^&HA|d+B-gjtn)Jye+iPat}4-ZpRz3W=Tyu;R*)6DRK~1Q^XwOQp%<37CSm^tjk&~=Sb#s$d{13>Qk|c zgee3jJrSK^>7aR&?2U1m}CpGFIeyky+ms@ z%74%1uJdwH{wb==n-(#hHJaLIZ%z}SKei53q;>13<9`K9&KY?JlicU;#*UVq?Aa00 zDpz2R#Fj6JTmcyVf3xJnKRXA_ojVwv7LrZba?JL=eJbvvN?g}wW=NM8|-CpgT8XRnzOBVUXni6knrtcY|5Ol2*+7xD8PUDOD+Cchs zf&r3Wm2PI&%dBSzhl5}&Lb4_;o32Epe{-=i@K-m)=1=8_u?^aXP*U>7@lfD^|FO94#>-`kM{e5tZ^m&6B&oe0fij}P~) z%zzB$FW}BHe=PTMQn?-;Yz@VEN(2j-K|ck09oT0X<}53*cc_DdgZ1v}fndfV^#{AW zQDyCWt1j#eDj+zZ3+5dcQRq9VH)BC7S1nMc*VfJMZ01D5Aajl)bzbYHaZePJaI_w> z%nW?Ep|>EJE1F%Mm<8K1hK;Ww?fLgPvL(W24Knrud1hE(8^wa=V>k(|_S~ASRWHoq z1ae;6!Yo`a6ny~T!x3;Slp4W1BQmN25C0fcz2@!Wm9U5Pk~eq{vy)#0v60|BzCR$K zWKc~M7BqBfj;6~!RZyQ*wy3vV=_(pp9y#|u5+qKeqH+Wr6Fdy&|F)$0f8}IPrr_gN zs8(nc5ZPx{ti= z^4Q)U-o@c{c})TzV6*fahQoowAZv&&?y3CY0M2?qFw;ybx?EobJwTF+$!xe_Aaky+ zsqr&uZqqnrv_~~8lYQvXN%iy1`N0Z}L}@^7F13K;1i;;@Dy4Sqzr7jN)~mHvcf81V zmTaBfp=#N8iI4x*CsQA+W@gxxPPJ!J`c-LlJN(@sK32@~viQ~&g!{(IV%Kuiyqr?p zy38M|VWSi#LMa~ULctgq*fAUuv+fepI@oUI;wx7#;Izkbl_`rzqGCB-efyVgOote^ zR#(WtU>WLmj&wQ$4r5e9IRGSy&VMZ7G&9gMw4+#Au(s$OldF1ZTyy!T>QXb-RxE;E zGUx5^CJIJDU%$BPC(0R_i@KVy7pi3*x+G9o>Oo88*4nGp3jFhOT?wqUjrUH~iqkpNmSxZmJ zQB~>IbHn?m+-ZzFJbB_<|ky;=W8K;htA07ar*=cGvN=I6TH`hekP&Fj{Hu=s;{ z)cmAwe=8+3M^xX z{uXDHh({4rrQQ9odHwsE_Qt0K&iQ-r$6D~blwt?m9TQy^D;vwxH2s}32mILvYB(&W zP}plr&C<&>l~r3Tuf7{Hl;6irs%;19^nfE0`-9DSe7rv^;Hbbz$57~))hTh#XxinX zrsZNx+Z{GiY~Qb+w3!p@!{zw*p9Z~ByiT`Kqwk;eRCU^D-xd!;IM2IQKuHl6Yg zKPZ5DXg?u#6}>RH?KcA!Vg5+I)}@GUN2H+ZlUded4(H@f=~RuWwm9u^$EhGvwq^p*nv`rGvp}ga41DP;{P-0q#@Z z{}m?&KM{ckxR7@8akm!$M>dtLl`L#S`OT^TY><3bjffC{KREPdFoOT@OA6K%;`bE+ z(xE@VFN<-Xj748SU|`wgyG-X(E0;^UJ1L;s?yp2CyWygX*l*nRCqVfb>T6rLnC4CK zps)5td#O(EPs97cP?Fs{yZfD;HZ|4Nh1v}ZkmTd7QDz%`US;*_y(TZ=Ii`ALgYpSG zR~6#R4PFYeUW79>IGvJz@ZF`Uzmb7J`7Shk{POd)s%+`oINw-C<;FGM+v!??TRRny zsf9{|{AB`s^94}gMa-fEaFS~ky%_m2#uR1==!`j9XK*t>ehB>~988Rhnz0;WDMQ(}v`?i3;vWME#h=b^ZFPUrZBcs9ow*69 z>veC*k^9xLm0LIcWmG3-53-#iLv!BtDIg~#Sg+LDn0GswImwNJADvwtDQnAG4b>*p zblTTWOkWH(H9Wsc-1c*ovoX7_F2|$LFQ4ce#Rcj6jB@YKIy*SHmw(?EL75o_@j~CU~XdcBHcM@)(Q$xEmz-Q$TOo zhQw`TSvjRn7o92Y{_1Qf>Nz{3joVF?qeR(`R9;;X^ebRGh>3}@vPH*DU&-I!QKUhJ zn}6^xu_8A&xA9gVorCU8;zU0R&%yM0|B$w;P~+Nd^Blu$u}#caI?zDUhx=lSw)|qa zfb8vtMJU*#-}r*z_Q<_Jl@tw(YhBsTJ#Y2S?n3hDPRyY!ZcH?^{ncFd*cknb7d6+) z`a>YL1nNTJU&NTB-h6Z~yVY!oiY4q#f7jNm`f$%ih-R(>{pUGFZmxE>ijoy8(+3V~ z1GxD||J*G72DJWQ@Akuq*YH#FPJ9y;Frfk8787$5a(lUVOXQ1ol~))j8WHziNxiy% zWVf>+CeGqI{>Hkv zrsgstUcLaUd;UhFz0)i3$Yx*BfVC%%HZ{QYhxU}Q(8SObQzk~nWUBCbZCOXA}v z_46F|05GC?G6`CBz8RyfwY$6PX6|_~Gc5^z=WOqcZCdUHc-)gBr}Pc5u(<|v-)iKNlUJ@0% zt0sisN@bNL<#PcVmF+@xWnM4yQlm2;Jf3d0L7^HOw~os#{YU6{BgnM zDN!KVHSd*HO5wRSUfl)aXdq#(vt9%L={HHuHOq`i!u)MB} zM&aPz{n0kJeXMW}2LEnv@|LvNXZA9Ad^~;m9ctSJHZIX>zwOCyKh*;Nin4L>`gzwh zdpLcAgZp~-ERa!A-P!FiymmAQFKA5P(yCm_d)W?2XkPe|Twh<$vxwHuheELL`_<>d z$=PvkX3xAvM3;z&i=cP;(5U?&>$CKrL0rK4`qy6Gena9h5E+AAt}>_6;XyfQO$pFl zyP71|&>WIv4jb%ZBIX~1#0qF~GB z$>G4n#LQ&B3ihqNpuIG+tamzjcilg$wg#CtD`l$V^meJ9BR2WHhkhTFp@qiF0=DiA zNDU#9HFJCb`gPPJE>W3db$355bTvo1`T~rQDCvb+<^f@wi&Nxtpgh8STHtXoY6CoR~!a))FEcZArT%Z zf?cuM8R<>vzh%o8sARyA!^ZxQ!_%r{n~aEsJ)KWejclLY=;!^3uZjxfjPeJ*wwia? zx0X`Clh5(b-g_7YbnbsFm}BiJw|q5cQXMK9)GLT^=(0Hf zt$j9btl;(ae5PWEqvmHA2iv)(NXKnXe_Vu0+JoerUYgy)FIcN_zQllB2CNY2&FAd= z(f|j}{2tdwf(&~jX0aEyPTZm_r?V*PA-%$ax-M=eWhp_eBA8c_RA8WktxG&b`r9P6oA?A_T7X9Md8@;g(67;7}S zOU#Hds18zoa%;!B`ahWs{NzN`ghai3*&4xem)?SS6Xga@<;|!vq7Ar&z_%tKTICp8 zN7P{D0AR4x;3;*SvaXolC8v}_GfCgU?-U(56JT-w7b)|Vun;t?oTS=>OeM-^e2 z0w%9kjL5x6XJc&YGDOAJA)yKOfI7K%Hj1LXtX{J_Q+O0MjMQ=*TVv^2EUZA)Z$3T*MrVh`uKC2> z0o|+?HRBwvon~^?%^={B>Ur}ZmEk7VNiRoB!)zm1Xh)wKVxSEi^$@#eZB0lZp`5M_ zdM`fPQzrD!JXjV=!wEsxk7&@{726aJ%5UQ?#xZSUB{pMwStfh=)uqw-FJ1KG5pE!j zdi>=t6*qVa?{lnID_&SuS%FhxYHy4IUF6MouJ9>r!fY2g1mif?yI>68O zZRDE#^=nf1%S(=CnTJF9jvlKx1SFjkc=~5_3^Bm9rn!*maZ>E~E8-HIerfsb_q_|jB37X=yGwso&$g*T0u>-S zU*yQG{2FNP)%|Y`s~rSMVRdSBgn7F>tEXOBI{KDy4&Ttn-5WjmegSRBDes+bm5b0Z z^g8f{C+-UXnH&(j8FfWdsH3iUZ@DJfZ9)PMOr7zEO|!wL>#iVACGi1;LVRPbbwV`v ze7P>pFQ)RXDEqD#J1SR%%)P2VcjPfnl-3mIp;T*oo}Tw&Aq_l6!7#0Z05J@`65zR# zl?Q-qmJLWk>h==h=Qp?WvBRoz!<+L^Gg>7EKLshMiIMh9exD3r=&MXRl8LoIrFmAO z#PHMYEpS#epWhqJTk)zYbgo=efwko$XJei_5jF#Nj}4#BGL8pOjJkT#UfvXq_P;N8kh;_{ytN_4nGLGmN&8aaJ?>i z9AMJ(Aph}Bhvu-ur_W=;YDidSC!{7@ZW=qwYQKC7Y{KU!u9i)WW|NX%hd6%JB25rf zeQU6QC0bgo^(`a+G*-A)@Tt0)DOt)J$5*gCI|ObH+WM`A@qxKm2<jER6?eP!y+3l^J=Mk)+?S{yy^9HZgNvkw6f(STj;7B|w(LCmv;^G$t^QMnq zWpSI8zI~=_qfZoN^4!0c#xCx$y_=Ys^Sh=Yw>~T!8_)f|E7}IaO^F^J2tSmdtDw#M zrQPz*l)!`rU@c5-u<--fe`#abm`e}enhRmlJsog7v1xI1%2F8zB2JbPq{GPk;!3s2 zMRW`i3j_@=b**oluUOPc(5ravIrHRcGd)++hlUwizif@( z0yqpAFApV&jjF)#imCGKgSruDY%`lX&v&G-wHyRpQACysv<4(tQ%we$#d z@0pj?1r*oO*(Bmth}k^C?<1dd0ynB~F22LI_M*?Fby>X-Xqp*$8rqGJfXMkogCN{_ zCippiFbMS7m5w{5Tv4hA796D3W6^`PK@+1FZ$NJFDKoX6$=lC6NX@ISDI>1$J_}Ec zOsZnXGP#!oNKYTkf$k*d34RxT}_@zG}##Q`BM| z&yK%yf^J~ZK_Y8OY@mDB>}?!p+Y{YM`qdA`Iid0=lr?|$CPiO`SzM(Jz0g4I8C%1AGljkh@Wk-PF$mF zmvd;v0$nbsYYbaxuheLMs{y{2^Y4g7aKDXwJxFak`A`(N5CFaE=)MAVi1|9QZiITh7) z*Ilq(#y9vX)^4ZDlH~1kF(2)^-;*BK?nY`rA8bNBCkO(v-M;!c=YzNX#m>OYAmhc% zp>Satk1hv{Z7!HNaBb1B(DDV<4<`3gpo3;!6^TBThS*Xxsv*OVQtRBf^(K(+x?hjX z@m!~meFq_3Xx8CRjYsTnzgA&pN_(1HO4tuwT_gH`6w0Zcf zsX**!YKzj!2Idx)VWLB?ws*}|V1Mxt5jxAC_@2!Fq-@6K=;-*t&+ge%f;CrX-cX$C zY$$Yxz-k!=wn#|9GFjoCnxs}rXR2mxRAd-{82e=RD(K?Em%Yc1@aO!|Y(7eEfN*%%;Lp7sG%zx+cb@sk4Vebr?tqLKs=YV&+zc+rff)jV}Xvl!rI&{fxPjJhAzcogAmAn@b z={fPrA8~NS)XwCfJLb_Y3Yz<+6$R6`C2x z>;_R4nXRn$=5;seqU?k9jsJSDw>fL-^76!=ki1Cq_4VD5mbM?GEp-MB zsMP7OR@#s`5s_kRZs&}%=Xz&I=MR+)8j?ewH0bKnM_f^}Tk7OSrMO!X93I)M@t$68 z?yjE$+-y>sH^A3dC6Qbgo5y)X@*W)5r>iT`zx%5Z1V16@=hN8o>aRRfZGgPOGuX9d zo!dCPK#e&t0J@!y_w0A@DE^U>dj=L)sCzY;-sPE_wA|U;d}gqmI8h1{lR@1N)oW%7 z>1M{vih=jf^+H-3q~lxCfFxHMV@!W_&j2i2W1}_ONgxj*m~Z}H2`p21WQOt zp6{G+fCX@yS1bw~?t5?ma(~KzAqz~fcJ}t}0EVJ6BQUrNP-_4cqvFxRkniZz+489! z00mVX1koyx-D`9}bNIpq3^d_otgclbU1jQ(PWT4;N)8SH=No9EW!e><7?~qDEJrhh zXBaHXW~e&s9%HgnaX@BaD5j}-dnh+Mu$sv;;C`zmUo1B@>^`?erRQabjDPaVvp)~E z(7_cLMYV7=bFEt@Yh>J|tpW_r_{(Q*EiG5|)+#FFp>zybqAj~8Eyu$0JJ~5C&!4;9 zy5ID2&jT!Pm+mZ9@+$wO`fPutt({$UJ03u-=XE%2EnUFF2P$^PaJb;?oRXDXzv=)S?uWgZ+r0L6~v^U7wZYf z-!6Z8OG32z>>}jMj`!z(^2g zpdJ7`YtgF-ppzXPzI1zaQ`0WTlVfv~>^HQ`%!BVNN1}Jt4_U z+3F7~-*iRzQPPr<+I8LEPQCgiJxG)b2B7DyT#1h_RyN%;YXd>SmLX|r<6Qtu0+7~d zwFei5UGJf~mhrU51=&I%1?QccfLrOA28C3VjE%EBFvA(MnXh(FOOsuVCPD@q064ok zpED`Vpj}_0t6%7>A_%)akJ;RTBcS?tzbh_Ij+`?X?GZ560%kDA*vKi!&kxPONQ~oH z-srzhaJ!Kg0l>dl3;|Lf=cGP`9IB~`i}jOcQc0=Wsr~k>8Ieo#XjM7}xoJL@2nJ|x zTq>1#-8N5Zircf_BLJ69V}}^hPD1cuHrC3(0f1_fwQoR!##L)vqw#?0Jzh)opG)? zv_2!;9KgICS{R%W&+Mrb$4@$vpJ2Z;f6^>blCM~#rmisdvNdB(TokYWc6X2iBa=$J ztm|otGRz-ez->}{np8|Hk~RDiP0<{sB9kc_ou+Iggon?cw4V6GVVk1~k6kDR^(WPw0mQPnv$8aLDXHe|RbwjUKJDJUpd z*!A@8i$~Mi%^ef_`r%(__#hcvleGc9I=dezi0~tb^q2DASSN-fJ`35lsQha z*=LuzD~SkB_78TC){_uq*m#LN4@zVfML|Q$jKLlB+hyyFoJ?gf;4-gNv)`q?_+mm) zBi?zL+e^VyXj!S|`MR74xM`4odBB9>|4rorh>x}>ctz8K1RmMSydI8`fr-=Z;9*yw zQ@Y=T90M2ERralU(3rP#PnL_UtSm$Q*(aG-bbwd@I{~0{B!&!XW_Ag3roZt4G8D*n zjIf`jZ&o54~qB8GdOqkXLsvAm;E?@eko1y`C-QRbif9 zbCD@yY0FON2U3jw;StrTN#3(B4Wo(`FMYZZG}RA*r5EDe1hY>%p2$ndQ=^wxHw%J2 zZsX?V!QtDqUv~DD-PkZtA;jV6jlB5`vz z>#Sb!PPX;`qwTE&qFlT7QMPVGLXk#N=~h}=ap;n6knZjr1?iF&5Ky`ihE4(Ll8&Lf zyYt+m``vrL-}!y#oPW;q4=^yp%>CT=itD=8T0idhedgg?%H?+%mvXf66N5ky$_kTV zFfliaO@epYil0u?A`NJ2%KG#(o&B@6V#9r_Yh{4SEJ9Tgr#6!fs(~gSoo{^Jo}Zg| zoWt09)2EhYDf5gy=2U2jHSGN<>gTspPM~7D0xRpU-tfXP{ogb2#J_m1SWauDauF2Ys$Dcb)77)@1pf6@dAD5i`c%c(Vf)+aLU53_Uz@&P zg(dN_=hg65Zo!2SEqt3M?QxL@FxRK)3NjZ3ag&mgE-p2ulZ8i?=}n;oK#9n2P40~M z%%k5>;Vqldis-l1-xm3K(1(D55V?S>vBCxv0S=n4rM_h7=>%B;kUy~zjh>Itmy(x& zK4*JdrI=#5y0i13oDF#YKz(GN6K4x$y!Hkx#4(DlUH=mc6uHTEatIp#Z`IRGLnN6a z=juVsu@(_3*)kr~t6~alb_rr#d=^xSDPO=5axdJnFMXQKFeY2Xk?@}Gw>aeqT?*ER zvg@!O7g9`j(sb{G_GVX9MK=Izi(dBtLBhnJ2RhBePcF%HOAYs@mZ~8fE<0L{cRe%f z(mBsEI;A^psWXW|QEwrQe&Un(c+g(q=R8TmV3~NWtbYEnyJVLlYhUC#Yg?(0IYr)( z_h{6on#3Uy&TW;h(Up#_#2uO}P~aPct?MS%v!3uDBmRnmor)n!Sgcl zA*B(0^={Uw+WtJaR<(5OHCQSaq2(q-D0Brhi<4P5zl0?b(%QD=G}(!u*7_M-6a_w* zCa9UD*c8Pb2JWiinDyj8ELb{KJP|^*D zHBOrgI8^NPOz{5Jyn$7HhcnRg(Wc-imHYC7WO&tf&tE-%>xtO?2w}H6upPhHfc!9& z#c~(z_Z`^la1(t*@tJ7QG5=H)1q%n;!4*Fu(Deu93&oP%U=u)2n9UVbQtctMugR)s)SKoo+9r!-d{Uvs^T6GJDLq3Jj$MzB2n&8`{WxpES&T^9>^}-R2*evPX-CPwN zNtT|#tQG9?lHSGEAhgQP`y@jOS$X`d9iB9FXu*oDkX~wYskE`egyTdaRKBKGjie-9 zXsd%{!|cx3@~*?Cx7H_;8vTXxegTcyMsEHLSG{lFO8`=UbTg(PC*RrJ@HG@qjdA{) z3gTm=BQSHM5?P&OE{UXKRz|eadk2bwnld^~ey>FLWa9uQgSq@Sy8mOSpNZNbd z`iOy^>j1J#<=W&xVMyBCefclhcPneGYwNFit=6HQyb4PvxA^8FwHQ;cUlY85Mw)sl+8 zNn)cNTf!UGK6x>eqd<(3Qo^e%l`xveVHDg6?r>d<)+br69gL)NLh9_xhkikp$y{lh zS67r+-HJ|%;`xQvvXSaj!HJsaN`3HPNtWTvy(}uZ>_q+tyF2%G7zKMj3M2=vMK1ls z!&x`=g64+RU463Ha^ZXOa3=HqbotNiPq%2xbK10x9%*)G+#uk4LyKV^R%|0A-}%R< z9_EJ@)Fh+kbOq(rvGGyp5Bh{;x}Sl9Jddbdoc=;G!$>1-Fg8Jbz|lwV2MN@0bu0)ygABO zCa#*4QAPW&V0dCKucCBvF=q2u$MSkx2!~(>yO43gY6_ zd*`NddWF5rv=nTbvTrs~V<*LNvspKm4D+9sYL`VyOULE$mJBX&v)ybo8`bDv2X|a< zfSH;bDY~^uU*`ICO(-a$618B*BL_Z#flSIyR3j1{Tj`(M#ad7Ah^(=kQjWIWaChiZ zhLE4^R@a;o-+Zh?TjsN7Jjt^F?Kj@PkzgPhm3&b!^5|3kW-(PxvQS%x3ia+Y)6$Px z&b_B$u0luS9w&9}0^35D$R0n-w`ESAY^)32Gc|wo9BTH0DfWi#s)!Foh*^Qk{a}_H z6P?&)Ztg4C#rBu7JDG8DqnMkRkK|2F*I??8x4tZDwog3kXO?n5TUON(fO^kS`hYdU z92_l_i0Q8KOo*lGPv(PD+O2SKcrxM31&1Z8E7wP8hr1p-aDw3 zf*OC2Zq!!fGZ*-F`)#dXEN!u*b~UgV#8hVMQ9nxdYM&qxMk7{Cv<#A96*Ibow^c$1 zs|SSR=LaDHyamPA*HxpBAPq^Jn0;-D2E!w;IWISJTY=P*( zW8~3cNV{~6zFi!8oP^B6)O?bDr)qFmR0y|;fEHD2gxst=d#P`qv%$3^~0#IO&aef z+hH?+L~W0S(K29hXg|!Z${G6 zdNuiVlDVI~M{bfaMrU*ugx=gyHSNLUb6`Cxa&Zyb>vk(CVLx8R6A-Ac=9z$pWqGXj zfh|Y!FreY8Ft*FkQQ_V@c`yX;B~p-LFb2YNrE9ubWQr=Ud%idVVf4XR`f}^bTsHvupx2v>PYn~rYSG0;_a^MQM{I$opjJ|DiBfgx zrx!n1&~$rs4)J424h*E~!YwhDyfFOp4Aq#O#YkAxHc_wzQc z#fXy5XdTorjZQvU^%9VgHOSY#_iMg5K%>wf`3YKTf<+MaxO^PY68Z7btYO8sZoBPI z2?yMjdM<)UgffWZ65cw>r4>`QQtWu67kay}YoaT@E@sAz}}#t(0u$UKW$di*A6i zwFtNOV?h6=qOC%fxV4z@8Z?LUL~GoX1^>SUZGl-+N?A^zx=^@3oFjo51=DK@Yq6B9 z3xdmxk26q#CNLJ82DcV+-+Iw#b`Kg*KQlA)dG+v2RVkN~$;FsCR{eRsR!NT`hi&|f zHAe|e-^D?&oCf@-!eb=S2f)GoVNmh;({pGntY=i+iIH=4L@|^tq>MqJ#C5D-j8G#T zxMCXA%`008!C}C*l8&<2d%rc9=DLce3keB?9$T)CfIrEE44YXu2tyomha`X8J~E|O zR89$$TXgY@GtO35I@hQfZErQLb`Fyy-&sgQ{&TG4&SY+oUK7VLC_?N>{R7zY??JUW@Eg57JIshCMtbvs=9rBEj{mO@8y1KfCN`{rwJNwvhy$Fwu$Ttq~Q}x1R zu)k_#kgu}vv9RW^o@l;xFhP13c?VdRFC5(Eq9vx|V8tv8di}!c@ssn0);Jl;MGSgA zVp>j^k)OO^ z37scu=Q*GX8_0JERNE?!4@~NwT^+sdIB9e<^nQMehuC*HMuok-#n~TTXl9BU$tSVd z^ys#P%Ki$*Tb{_{XFKHpSGZI#hhNIMPsi@v5Ce(;X9-<)r_}HCJH8+RdoQNU5w+X4 zcH4OfzMGTc9z|V8rXA|x?(UG%Z$P|>CI7mm9m0`9aC6{mFv@#AAf|BE+N#wZ60hU= zo>V=yW^mrN?y4&v5_8j@Jz;ppZpo&}-<1lI0}e#2HK48ykNeUS_r|1rG?u0|(u7F7 zm~|~_`7Ym9>{!qU4a>*lHEZb~QKr$St=1ho8;B5UGUh@#Xwp;>_eJ*8&gY$pQp3m$ z`5Lc9ePzBL_BChcCH_YXV2fhB$v+fB&xr`ff)pg)cdp^v0(a+_F|tBzmZo3+fj2*? zn2K&9fDSe@E;_t&Wh=68c2ALpuV}(R-niY?fFnL9%nH>UXDo!$xa)(YiO1Sm8AjUf z^r*4k8q4m4Y+b!tFZ8D6MnLt{`!xh|!w|EcTHWSdvske(Qn}dg{Kwm+lF^kF?r!Zy zERIc1h7+ToFt}h1&f7x&I~JUl4cimH zxZ$mwI*MUY2x~s+O7n8whL;#oFL60Be+@D0LVxtYXI3tuQ(Cw9S@E8!+bc-Fv5|BN ziDF$Q6$QoABD0Fcs$4lC5|WVLm)c!Tk~N<1bi6S?iP^IL!<=dFMP{w~mAt=go|n!AdT4SzZ}ey-?HDDS3NyH*^;Ljrw(*?(ty zmPPX`B1ZV!dC^&or*9g_46aVV-XnjnJ3er52dRy)-x;5K{ElBS*?;hVr1WO1_bLC$ zx53v?jKBF~@Y72~itzXKh#qCu7@mqaztSiW_#-|h0BTr4o9fWFkyt{QzyIXj zP6~7`De>j6GY>rR2VyToZzzn73V5X@v$DXkq2*Q&*jnVH(}X=D@EsG&E4EB~49p`lY~gH_IkG z!zT=Z_-2-;<5M?Yw@PNwQI*S0Oj@hHbaJCY70uZ zNor~e9v>wY{pxrHk&p+8vUsGV#c@ zuP9I)%Al3tkZR#YfBy*eo6EtFXBg{)Ge(V9p{`!;_#WSbtx~T}+gqC3l*hJ&+zyTu zZ}&fZw2W6qi3izk)aU{;^-RJ6xJSFme6&nV1>j~vZ-kdmlF5`?wl=m(`mv37CH2Bv z=GWHONvYo8Qz%gBpL+kw`;vv~ilF@z95X?9a`$FPiN53mUZ19ouhGVfMjxLUv;*{)J?FMp( zz>T~fSrEBt!_{H$cKZG^UX{t~?Ca_2s4I8KTs$qzejNn%^DL2c@gl(xzocM(4J*%^ z^IRhdDRnn{uuCCJ17Ccf$+N&T_+Y8Vj4H;MyD{pJc0n1-?Q||Zn16Is$-sjQx_IYf@IC`&)p!>s&_vY zUmS2dZSSpHwT7Lq*>v)2ej-TFc#A=Ye&(=x3=|7m6mfT zP<2V`?hd@>0an;Vu=_y98;?0ZH4HaMZQB7HAN<{5NZRSC3Jg*UfS}ojVm;_9G)e4h;y8_P{ zQYl6_omklt9{1h zEyDU*K~xtY58Yx_b?&Xz=UY(-`R-EukL3&b8xa4s@HS+a2H7<*Xfeey);jK=1*sV&XTXIMNg%}=6BH28vYDl03$&Kp2a z;h?6>GG0keKmu}UzPTe8cuF<|PS_2WN;ATF{FB=?rrtUi{pm4TmYd5Mi^%&9!Fnr? zTt;wk?aQrv2>>BA2JIUahG?)Wr>32ZW>K7uUQKVQmzWcp#{x-89L25{O(*dX@H;d%vG4Wx&o=k+M}Nyx zP4$e;261%^`QONFt%H3V6~WKvClzd#oclHp9z%4j9_Fh`=P_|j3-g|CYo8(CBKd0} zs~*m~Ow$`G3dVi3{sqZORP>Tsbnoe1zi+}(i>rSqEbhm4yJ3}@@)o%+me2X-WUNtN zzz2X7=qp0s!xo=$S+QwWaS@nVjJ+TUzl(C~*-N~-NTV*Vb0J|t9MbG%+y&4|W_&sQ zA#`-&Q@!gyc8B=E@KjB|v$|7YV{XD+nfNxpN<#|Nl8&kL?mEM_XW*!JzROvHX-sID zQ37gpwokES0)zRzHil!1c3MLS3aM&J!Hl8SkU&#FFOOlw1cgKiNJa@9E{j1^Ul#CJ zZ-+_axt)HQ1yz@4D9)oR4Zov+p=*EA&xGN1KuRl@vYpK3}<3E~P`1t4*y_m;k0x+&JDI_f^ zTnWr3jr`mI?5@q0gPM$afR)&j+u7V?oUEhf2iH{*F!qlP)!yTEO^slZfTk}ucOfx} zr9Q0%Wc!;=2c~XK#nsj}LWk~V6I0bNb+&G<3y=D;p4uk6=n4CsDZjAE2V3hnwST=b#QLJ1-xrziZm}uf)%L8vQQP zm<3qS`4%y7o^kQ;I(-(0vSmpH2VYo>GEpRQdYmwgnO#~~6bs<1QhK((1ReFUyewu) z;x;)yYkkBWsqs>zq$b!B$0}KKp8gDj!<;=h=(Co5T2-C5Y7WM0P=y&{ig_yi>Zubh zYJAF_ei>R9QmtAuZm?ZbTO_~ofQQH_Rhy1qrY`}5*=NI9i>?fTRGMay;61L^d%bg5 zP0SyDYhvB^FkM1?6Z`j~zeB14I)*5$2nCG7_O{8)WQD*@L)9yPJhiVqMY0e8D_vnE!d;4hzck+_F>iTb zbAwg{GQHVZ&BMJYl=Jw&u;g<~l{QUyMP+5`yn=QG;}f{{N75kNAn(+=tK&ho3MOAI z#A{NDC61dGuyVlppPQ{?b7flBP6K!>o!Z;=Bn?D2 zL8kn>I-YS{cfZRSfZMP>l#R*F#iCPXd$KhlFCPgr?oZ+L;5ua(Q&7*9Za7f`OJfb6 zpzht0;_Y_Rm+b?1SZm&fSt@E41ABqgW$&hS;4P5vWCP zQlbne*Lio7Dx!L%Ao2s~K}1H0eu@o(m$Y2bXUL~hB95wq;bCPbchhQJrxU7AbuNtw zWP{U+Mm2538j5y6`DchO<4jL~%q=^&2{2TD_ov{{BYhuF&1@8D2lAOsm7W4g?c8U@ z9p2V0qTBb1RK`FqTxqhKCKB|z@QE?Aua{2pvE9jwRO$f$fbMx{oiTc*a9M49q-hBX zyua%1<=RuRbgaK)2I5d5=>3jyK83j!8Z`yJ+)xW|UN%_)fq~=wrKba>P~g>UMp3N6}sv>I{vHXlpX&FpZBWrllMAPRdMS zE$HipJRQbgt#dUw0XxR*rLue95>TC*EHo_^lNYiP4J-usK2 zVHcB(px1`um({Ul#&X)=a$2#7B#%gRJUT4~bXLy0s?y0-bU zWs-Q^?0W)^QGP5)SgJeM*Io{0-p&V?g3NY4uUW{(lyFu0%sL?$$pNp>N(4PAve3&3xPAYL7NM+FWwMaGr)0t>9Uh5`_4JvtZJH z*39`+p3eCDcj_UILMju~a8wXT0#6>}IqTA-4tI0-h|5NYY(DY$MM_{UMKNZlz zT4Vjs%v*bvRC_fbG15A87BtORqufKkv}FLN=k&ZKAi{D+tEUUN{a-OuM-D2J?u_cy zr6?FYiVGb6TXz>@SUe zD#hw;zNKgW!*yeysz-&VpJAsRRz+l8Q<1eG?!x9Z zA6*L~yY^~!-5~T7xDz@;4?}sM(yjJWE3GJ5BS$I{U{flZv&)AWXB@99LIW*1-IimD zq#_@wcPU+FuLZ{pOi7GRPF;oL8u(8w_9DJDb_3kJ{q}^Tibc6fCcWauBBxYB-ocM2 zyUAbZ=w$I=?Z)+45^XCz#MLQLC`tZ>G{s-Sajm&IZPAZa#}|X9P=68br`Hz_=a*A8 zku;8S^_A>?^bzCarldFXFHfa`78Mck_w|2?@I@&qPrtq zwx)QVvazu-u;t|^Iek~FHGUA!gigFW5XKj6`sFq9z9x_;t7~<$X@PKFR@RC-A?}Bt zVjow{@zb>S0~wfHt}N&oeX!aFTizcl1l#LV;`3#AG)l7F-tc{s0lR}OddTpx5WYQU z?zs9F8_ER#+FT}&ddiaHg+4jzCyBM^CSUD-F6eThN5`Q@3up%#VA zh1rI!8N4?fp0vZq8cqVYZk~xx`TPSHINCz#0Tmlnvm;!iA)i0O-F>cDbLC|{9ic+e z2|ARxE^PPrtoK`;c{gpq1q4eph%X)F++}_^9|uLNo}*AX2$QYXYnW4}ePKH8$H%a5 z1Vo_D=eBm6EyUe^pU}tr;1_5gc+XpnC_Uj4Q{W`unGee^5YmK|2FPjPh^IjGD(IQ9 zzZco24l^md@;aF0w5X{q`poZ@7^vf6#g0`%LwLtQVpMRUz$3AzD=hbIfSE~@M|X%# zFW+b$krB}~Z}s(;u50G~#z2Zn?HjV`Dt5DbPMSANb%vqvqtRE@l77dreAYSVD` zB{I3~LP_iAnoCD+;nG`IX9e$roo4jLz=e}#2m3Jc+fYHiuiaBbob7Vw?2IvFpE^Mz zf_%Z{?zq_JL`)8Ioq853f^Anu)q<-C#2h1f!+3{iVcAL+#A!$(v0^(h8@^z@lAP*Y^=k&OAvK&1tPD-Dk4w869+!c>^m0FRujTzcMN)lsn6X zhR3qk#&damSm!!qjmlP(Ny*w_bNLD62NUVw1f4iiq=`knR+Y|3Kfcc7+C{zjUnBzy zqi`i0q&ZPOy*Cz~UY9}G-{1#oU{X35F@*~bS(j9&-@Vn;tmSwS^xKw#fiw$v(&DOA zP|oS~sdwb5KG0x*yJGE+L&u&imwa<8n{0fI$as4g;xWk|3r~TpiBe=(rBrm5>)SJO zujvg8+s)70l+KnJ+p75f&@y8yQpQI*e9K!+Z31a2a&6YW!41l~3zn_P1wOYHp zZNhUxJ>yCSegiu#5GRxy9_V6jY3>;;-yg2gUdBkCoprRWFgrNYjOc z{n$l+N}HyXOrIs4Ir`0;;O;A{hAite;mYRSPY2Sz?EztZ=2rBX9wUMtm;aF#^d}VF zT`#OeMcdf`wuF)g?ufv$xkO%-^qe!Sb80vRw0(LSZ}iDfD;+Z|FA5wXGdru;Emj`5 zX-8lI1Y($*N0}=tY)me~E4WcbKqu@{O9|YC+T}vBE{c8K_y;uc<8}wDQ-__O)XWrFMgWZWkveUBLErP9AK;SXq zo0EM@_$3#3jCV=%C|y14irE469>m3)C2)h3Q|^*7mrBMFQo5HkLSp>wW*(I6-3A=9 zQ@qbS9(2bNUlOLy-m4ik7#8)46KiXzeItSdu{ZN+f@Fs$qnU7*nRHgd}7%Z0b&hB%bq>gZLxAccmx8iqlOL z{v(I+7&#A2n0O&W^my3Fu;+=1Bw4mzgal2z%+3@vXwZp1Y6aVATj~5|*|Z@KRwD&v zBArnym2yMdp@oRgBo$?i^w=U+DruaY_bDW)e+U52tV&U6zoGNbg+rn^D-K~DfCtQj zaYXmH9F`1F{jcf*u$R9N9p3{(8u$mWjVk0dqE)}Or}doVF@eShW)*fFsU)7;yX_H< zUR)N=_|2vrbl+~Md5s70LSUbHc$HQ8pUbk#WK>AX?6mqUP`nN3ye?YNHoAOoYFEWeEX!@0xVQx|@7?x^O9G@KI|_IB5Pc*u&U z@naq8bUh&*6pf5}Xi>Pa;LUeLRdI7u}R)va4*+dHH3*#;VzX_b~FP6{E z(Wn$=;?V|h=H4SkDU_Q({*8aFB;u>K$LA&P6jwgi)1kE z3u!MJ(SiI0z7!m?ZqCA09%EKGxD<3uu%ejTQ2kWLwop zqbGL`&-~S37a>b}6PVt5RTyQJ%oVK5dI3s;!H!07Bv0P<#Nptq6x)mD^g)!(`|`61 zjquHs-Sw9%5o9NjVVFLb2m~Ur^Z2FLh?co}+Y~n_T!?@Q;z`u#3*+GHP3syPEEk*< z>CVJCu&^i?#6<-{1MqRX6#-A(M9je2q-Ic&*^w<>HC57HUP6Y|sV$JMj@_H@wUQV2 zgT4S6Hlp4vjT@`gae`D}l|-lAn~J7cW9hf&w6;Z!=ECO#Gz~};6c$!8j6p_sXN?wy z-bieq{8n3aD&lb#rIvOmD7)~;vY*5;0_GV)RbyU>A_n=>odw*YIn-Z-u>O2e$)lWq%E(77Tr=$*G&#O9A@TaNg5mQ` z;HSMy246-mgX2-*9o4orf(cXRuy&H4O$aFTz)?UN=SG(dgejXV;g{1N zwq0}fto`=17}!R38UYNtieg{{k!~$Fn0^9$?0xt?Fxpdzi1Q(8;$)@i!={OlqN*lt ziKdu6sc-vY6NkC=O;v|hC8=snB~I^vK~?W^+U;Ocd-}1S2QBO_C3k!dx{^vcy`p)= z=P#o;nNfG52bej-Wk=S<^Lx1mA+6>SO72gZ$$n;y5{`5E9;_e&?DVHeW72Lu`Xeu| zOUt?9l_fCi;CL?`3JDFeq;njt@d#7nULDoLNuOa%FMH|Y*gR7?OuhZ>tR7)SHli6_ zm=u+y?o<`J9&eu+Xdw~yBDPhp{g}<;UiYwIuO`R;4EuiCr12oBnEbFUaJS)V0g8Fu zxi|-cJ|r1LsONdV=CYyneahWX;li+6JQ5PmB&j!u>k(GTE!(Knbd*G7O9RBEUxSY0m#Q?$85xNXwkIR=o4Z4J&*`o54WUcF)22s}Yb(l( zy8q-&H*)F!V&cBN1aq@Qg#e8y5BdwFx6jnvwDCM`MfXMi%*P?Nc?p!OAL4!ymE7`c zp&oYxkO{AAwoiTwOCAGY7J%mYsh0>?|058Kg+(E+%8UM!o$ zHKO~IzvGjPu@oShe0xl)^(O#O5AbIIMGW4am9-bHcQdB7E&#Uhocq$T#}8MZdW(+R;10Suf$MwW{6E^yWwndFD4-IHV~n#qr@vJWXpyhWH2hfU z&{^7u1NcQ2jhM5Ul=?As^{I9mUy=W40eEU`sOl3VhqdY18TbGzD~62#hkspDh7hG@j$EDrI_zf1 z?GSr3R~e8WeW{Iec3F~z^JFmISs>U^iv{53!O88!F-q@b3Ym#tY0LbJ%jIeya!ZZ2 z`y~VO{j*CL2H#0bxr(n_C z(&Cha))wH06*)2~0Ra$WizwmI3&sQ+Dr)O@*Zzw79g{D&pJ$c02(Tu#^#O(Rd#N~_Gb>Y#;x2)p)da78#$`nk2fOQ(hqkclHB^IZ~7A4`a=O>8?Woe z$xZ7~I{<;e8IB$XECPwD4B)`zSwg~+tBowoGQ?vN8fMZ1>>-ddxe6Y#T6fUaAb&v@ z+D<)?>g8=;t)DP5*(t1-Y86vkTSNM=z1o4GX4^THIaC0^@-Ty?JSjuIK-N1M9L43l-Om%(&$_kJnQe(heQ?`lAq_HTkK?l-|D?zsbimWAm8H`{`5 zrvRw($TtUIR3Z?{1g(J|!7>&87J#Bd>+kN|MZxS%=1UrRh#q7I?gT)hVC_>F)kRNk z6wELIeh4~JiUIybE~fh<>D^HGe=XB}RMcwYZgl+ShX1C4V&N|Ky*>enx9&iGba0d4c5Ude;dZQVzcm}Nm3ZTJ7?P=%QUgsdt|3T9Q zDqQEXumxL2zP(=?32-uznr0xi0>n4aw_jB{ygDy4Q&d!Cm=OE`m`ETBfo7BhLD^6Q zV*U{QXLkDY1;1IR?2j_%Y8y317P%X_v{Dt;#$sw-CH-Io@@V6k{~YaDD9|hxSg{Jd zx3UoewIR1)c8~QSpc2_3QC>)6SQG9!KWtMS6$zkA5T66;q(<1wu|RFyoEbfzh<> z-?D++0f?SulDLj{)`w;%j&&v{Ij^EGFD?Kii;4-Z#!X-ztUHwaEW6q%rh&|*zP=u4 z8F;NK0G!?SL!3x@N4#+6u`ni zbtd8_k5D!T#K*rRYo`yt@Bn%n+?`1INbvTL3vrO9(yY;s{+>ry)Lrjjf+`(7@zDOX zFS(`5Qhj7wtzaysQuNk<{9tJ5Sq6t8M1R5`yt67eb2U&wUyyOO}R`J6Ca65@ppj=E$(z-fdfki~=)rcN=1l66Ye%Aj?N<$I?D6h5MU6&Um)7sNl z+<@i*TT1Xk9Bu621t6Tg4i3hox~nMkq2p&;WwJ@k8caaF`j@0k^B+U;dd8n5;&JIxB9x{@!}CKxfX%RVAa2lK?gfxgKxXl$=I7#un(?u*cF{$5 z-EZ08T>!lV1q0N9ShME0*HHVYtz5q=p6-_J>?^kVF)+{;S`R^b`{N%ikbwx0&lPmr zDjy5R(FFMU?T45EH4PA`03VYS;wV%g^au;954n_VI_z;O-x+}Wmxvx=!oev8f<#Qg zvm^p8d?pP#=z1$bRTK9*7i@ABECuj!UNjX!_K#hRjV~_#g;_Uw+<-d-Jhaon(kGzj z4{VKA6Rq2vo{nd^mK#`M-s&lHvKa3I>Kwqt1K3*KHymtS`{Z0oku)HUX`OtXU8uRp z$%#ami@>byzN{jpzp+?^BBP+pu3+OLE(m0+G4xoW(okXP+p~e+u<-1cb5PFsCw4>b zU%D|M%c>fvR2g#<8$17MoI$);2_`#U+`noLM>8U9s`0qNTB8TXbBgf4faG8GLk5Uu z$4#Q@c3`)Ms;3t(?5;HZEk|3^WL#PVPkim934~JrT$KMcYVQAko!0+1S(qpnC<=<6 zXchv(mEHAY1SfY@-}+lG`K<9EuVsGEH5X_^hBn!i&BH)oAiGup*Y#c=v98sgi>Z2b zw2XJYfvlJO&=lzilz}oUqQlJx^jI| zm`2j(Eb_!~?BOhFdY2rS21sq)!~jH!>=a);wityMzu`IM{n;NX7RRQ%jGC5X*ck7e zywdOj0e7!#in=1+j{5;So6Rzcx;c0$P3-#cB=GtYuk7;1w{yz5xEpVRZ_j^RYPmK1 z(y~@P=W%TP@k)-8A`QTW9xbnf3GV4$DuEXJ4KKAf8TWnzg2+fM2NSE=Carzb%I)dV+nJ(ooTg$0HGoLU8YK6QBCYlV57yyCe5f6$kH zo+<)_)N((HJLcr1f%>`g)QOS>Q3iNT1z;+F*c+D7&Y)loUky0@p5i{luMzqJrZe<| zOdBET6l07u3|A%L-#;-~Ia=lNYfUYf^EouN_2*08fv@)%8H67w;{L`*vMjmcLYf9e`@3)iIapr_8v?2O>JAQ2AUFJ zbg~LHaX|LK+!8KEE+Z4u4K^=`d8?`r3k(W5fco&Gcp9MXPEL>y$=^nhJ`~%J!?reT zuMCIjrf9|;?E&4D`_0w&0QOjo7P5>&&1ew6pW6eK0q`*^eaYLAFC2iv4nKqz7|DXX z8H9}DMoKFONZ~D&H@fCQFU0S1h~a?m#D5G#VJL!X7jNYNdDWhL?_`C-5whrw;23%l z|ECYkMlCP|y`Sm)s-UwiesUtuJ*@F1kCwumvG@VbSmQHGP%*p7(ryN7DiI)rg1sJZ zEWxn$4tDnA;2_fdTRYPyzJl{aJS>rchL33y9E@B|4u#bB1w%CQHpIV1M>5io<+vAh zj}4cI?MM{C+$ZU%DR@ANZ;pb#hVt~^rFUAXNE3xT1VdJn@%8v0X;V~FuEg!vf`c5( z8XAXJycQyW*0}QS!kl*SPi^$+@bls~4`-YXYH5l5W~q=uvHstS?M|@TBkZ-|GbBQ~ zl92k{#?z2Gg1d-Y_^)iB%=P0C+t3&&N&*xpxfd0+Jc~gD0dov2^aZ8i<`Guxqy+$jM>RQQEv(MEZ?|r_4Co?UOL8K zZbT!B?l8|cD_j+18C@p$)?yV)6nhw$)u$_j0>$fk{WgCBO3&l1;DPq4A)r4-E&Nm#`?K`GzvtbQ<7t>ee-`2oM2K^q*?We!&#u40MjB&&N zKVs!${;FR++pSu4oInF6{v0a2-^Gvjdq$2`v4{I~g}Z;(>ityfNc3JSIo)!L@R)?2 zpr3pJyvEk6;UOr-&*3K@i*)MUGxpc&E*Fhw98RBP1L+@(s~u=uL8X$=3)pZ6(sq9{02HEBB(A2_ZEnKqvKc*3Xbc15g?m& z)pDGv`xF09hhz?rkAB}x!6G8MuvEE6@OszXgIKJpz6Swr7yjpnzUtwX;eBC-RP^|sBU>t7R)5vnq(Yno$n#}Y7E5~cf^&vn}K2)dGnL92QdJQ>2z>c zZ~vz7`yT%StmU9{H^sCTEB)?w)4%zO4=|@m)8?zrqU^s4{haHC45lu8C?Qz++0a7kJmpq;42Of;}V z{$>GI;}R~+N4L;?n2i|Fu?FxqRU!K9A=T`euZe~V#)i*LBb!*BF84joxyr0E^lOYG zScsu`jW)J2u0COy&$A*>)9YCf!a}TUPAQ|b7W#O=(&J_SP+Ana)4&K*L;qg&yD1E1 zd>vlT60S-Ot)3Lw&uo5t{jpnO-E6@Ipe~u&I0`M;7sbkL9v0fI>R?#e*FjbocRG5! zd(3k}`bwDQK9WJq|3Vy4SiCgBx&L3qgDg~3ONq?SK!grjk4r2_bar+}0AOLpn+8~r z#-tAobrc#*#@aMMFb>Rq{Gq3gtLs_ZSa8)*#c#k2$hFTX0kFjn$_$i`Zz#iLKx#S@ zZ!8cqVKCa2Fd_)k1Bg(;>b;OqUH5%Iki9+(pnUqYq0>?id030jI18Mu@nlRSYcIsA zivw)+$?h6VAwADg@F@BAVfYxuM7n^8NqNPQ#%_3c0;JtC8I&rG<}3-TrZE^w2bER@ z_FTB%*3kDAfAkKgHc-ZX)UNiTzvZ=H%PZhK#jig)|ni50JK#CtB5!P zM2YZJzX+(8!iemjZE+(`zx1vCRj%Qqcd^qAoAQOK2ZL@8jG)vPB&lNn7V|mBBoT1t zXR@5~UrjB{n?Y3lf+BQ~I2x2YgV+*?X@Tf^qEqYc^6x@3e*Z3S>${B-$XFsFt&lQM zrRJ0g0#k5P`evOY8e39MzcG~iFZUH>vY}_iGsY!^-iy<5VA3`O zU}t|T9YWv;=Js$GN0T_bkEh+y7J@c-h{D^=7KSf zPP8a1AlnF~N#dV=q+Q5bHo99v=T$dwT+H+41Lwzx+S+kDzbsddqbK%WpJ|dJwom;Z z;sLe|GSe8aSo0j&T(XksSJ z#n0FnO5xV0u0eQ$4su@M5)c&&6E(F@){1{L=86FQRwG$Ls^VRwsZs>&{#Q*Sy4C-z zX>5c4kD5mRZXlJo{tzTzAeYLX7Z=zXzX_*daC}`D>ik$=xm>KMtGw z!R( z)zblC;>}W04}Qb}sOi&u1e#L3W7U+E{?yooCst~%lFL(^q93E4p}ZdClmN&Sf5d_I zm1y3uebyO3eC(_S27h(gN_=G}`fQgy#WVM3r(vm5IaX`2?MbpYhw&LRvoo>7yInM+ z1M3G{p&gu}CQ#JfC>>Y|M}h*Voz31sEha9m-vZTZqDg6AUc?f2O<=qKtbH7lnYUyA zS(GLgrftWBPc)uoqr7^9v(Lz;#cspWX%k1Vu>^rE#5kH+d#jh_qm-Sisa~PcNA|YU znx8aYarHJk{#`PO5l~){6$_5iE?dLxr@P-&Ui*|2QMl!$(KJ@HF~~&P3VHwOE-O?$ z7Z?cWhP-Jq5-hB>>hFO+kV`>%WNc$~*le>8bt6Kx7ErO+(yZgYkL=~v3cocW7&`!l z=`)<781M+7CIYA%BX-&f8a|cR&7CT)WPSZ#E7D{%@sQpTBkHsNtAes-bYlAn*mnaK zO6DPLpPE7>tvHvDTh<}0KgYQlc$B3fmM}j3r@3loHELO1La%T+_4ME82{Nc-sa7^t zu=`v3QYGma*n6sic2J<-$!C`)$tav*8t65n)>49CWuJirM*#fE4Cld*9Mt&QA7=jg zk0UK4mJ|HxM>LdE!q5w*TeQehr+Ju+^15*L&FaQ^LA_r$DJj9aq>r?{F+G`ZF|Qc+996h=u`aD#7uF9>tDS^Oz1+zX$a|p32;*Uh5QDh` zVy&dHrK9c@^Z`2qsJ{ZW@_;x0Jo?rCrVJ-`>k999ob7kvB{|03Mmg31PEMU7HGHV< z=k;xu@hms3#YG@p)VfCGI+Ybxw=F}PRj2lUIChTqZixff`Fu5d+}Pc0a}>Zfpfx6A zmlV+Ik2iRd8I)o*T<+A4R>-M0hS0z=O%L(Ck?Mi88bs!$=OBeT971G8ACafMW*1)e z{~`KywCxt{;lqYrYC6Of7&!ia5%<<%Rju9LFcvC^h)N46C?%!Rse+)S(%s$NA%Y45 zA}uW~(jeVk0@B@`3+Z0pSh%($e zhFW~-JQ3(9#dNx7EAzS!!7uc1yp^YZQFgI5sP#H7Rv4mrIu zGSBci#+zcj^CGR@_y>+vH_mKGsd3W=8+IEhzT zdDe0zHhPxu5KAGu->bev)<8K9+|t24=GrBnb4X^=`&GCa07+1W-|37u2y{>jtJDiv zW?*oORob0?8e5#*pX|)Qw=!;JgJ7!&>uw_{#LcQuu|yR`G$O}&7tW5IL1UAds7yum z#fh9%t-P{%eQ)jjZ*$xQ*9^grktMQF(v}vKH+N}QfVoj1-Svoaw)MZjsvZ-Xq6(9K zqo0rW8^FF`-de@R@>>IgvPjzH^?w7c%h*MJf%r(d4ByB5j=sN!p&_lyc~=dgR+tm0 z)PKs`jfFI^RdpVmND|}3B|#r0w2`Mz^+s--LSR)aD63%6Ju$GFy4-lL_T|#3&5idc z77|{sI~NNc|Lg29LG(ZVCHVILFYd(C4+gS?8;k$1{e{2AhXKjSFd0U!Z1ylK zPt5QE-B5h&hsN;uf-WA9-a7JKrKcmf_mBqQV*__9c)P%r zfQ3bN1INkfPxqQtGhs9)!P_t2;n0CC*F6Rh)GDl>qnp@Z`MiWuBc5756U;I``TJA; zX9JhtJtc~#G&6q|#Z69k@bZO61|9!)5B>(K5!0kkGVC~4%-JDkT)Z6o-g+B)yZ}T7 zvSn}3`G;yWCio{)w&=jy!9}Q?43b4CFK-73pQFW_82^CNHDinL(pP#r z_8YeaA`bp4v?u{@Em-~lIC0u~`O)iAr7ot=oyD~!U?t|;RUlnbAgy|D6Rt4{BJNHY*WN+)hR zYkcX=hht<&pQrB^ZHKP)XnDze4{RfQn@f9swOyAhn#z>`gR{RlQ{<6%ev^CXR9J(g zp`Y@4b&aMlR!p#&L}k0enbyfbj%c0HZ+E{oKFuhI>my_F7P^-mo$ubav-L3c? z9##$fbN?GYBqr9;N8V_;PdjdexVC!XR@%$#saXx2(Q$vbyV(kla8~)u&HK_3IiZb` zH3}iLYo}g3q_NvctD4SqL+^^cNviFOY*&&Yx8oNo$75@2F^#VKK8cBkY>_Rne~T(^ zWjQk71gKL~*ZYv}x2j?DeF|<8j!eopkLG*oP|Y>M7yVlcaJnninY})IAj+M+Fs!-u zc0P7_!*MfqulJO4Cj&{PWn=K;K6rNLstEp7E$|+n_a^Q=nptyBu0}uNMw#h?Ard`a4q`Gs zn}hELW-B8h$B|Tf9!^e9BCWJDmc`1h9V-ft%=(O#RzK$Hb(k@ms!Pbh;-$Mi;QN7f zH>i0nlGg<3?qN(YtZv@mvdaUvFTX~u`cbg(kG=?)c? zZ~Ib&UPnYTBJqdw+UEAoPQyq4)eT3pK5|f&*$5T=VSvo}bvq6+>zKn=S=gNVMDgNs z1-97^)NXY85_aQ0c%Uo7LabXLJY8CI)b_F8 zwcue8rmYt4huCCBmtw=n?m@x>Y46<*j>BdS)*q|C>S#h>cV4di#wi>3l9tM*%Vd`3r4tfn>vx#D~}*|@K1(TCAQBl67Is?Vniw9}1CaDNYkWT8v&6E$y~*LrakT7mNHEOK97 zn%La8T^-9)f12-dr$XlrwQUl1tk!r`szE$L9{xbI{>JK2=dg=t>O&jla)xe=V?C)&7J7 z?!h*4pgF(H%R2zx*GP^iIVgYcKLEe%(t&$jU6Y5+r8EB)LviWp5!vnaHrq}L5p+S# zdpZTh9LsPO(Upfh_{D2RV`Mid=AVu+iy2OcTgP+lrS@JPPHQ`&psUFoQKXEhO*WA1 zUGi*8epuKT6q$#L4^-mc;Q`BMHJZpbv@OFU;YCxcvG*uyz`yz0@WMr@26P(#-F|KkxebMxrWnu-sFWtsN~UDBn{8{_m3te5kYUN ztHmFtr@fbty*96hAd;_Ax5p$7EFIJ54%MV>^GYZXF86!KZlaVl))$b7ydY7n`-Teo4SfDWvnpWXWi`}>o+e~8 zBp_2Sc-{G%sEQgftyXzlnh$#8nxmG?g2Pa7>Gr!CpIVIk`XZvV2pX3gk@79HCJDbX z1ns`v?#ABR8#V1-G&wrwJ=k|-poYilvPv%5cE!tsYHZ)^(IJLXMO5LEcy)?Re?Ub| z_nEv6WhIvbBIIjB-JX^hBN=uL_7|xU}d|<&?+6tVlOJ$W@GWlK*Z20 zL_pe9N_GkB?FmPg`Pm!!$&#~c?(tgR9xNCh7-hb9v00Qah)m3)7rPVhOf0h`V%_-W zczA#7NGF1`j&PXPC-Q|-jSH`DYs(8hSxK4LsW2(*UwmkleAwxt{;I42A6a*09L@^4 zs_1VH&xQvFaOHP$%^#9rs>aXLz>$xd{5Q7cvh-J0t`N?$PVEN#y!I+I)pmn5daNpw{c{%{aRjBISnHeimqA9j z&aW-{iPNZsz8A=)KbDt&)fzv45*hK8WiY+0iuvAn=u{@#(w6HgBf6Zo(v1kM>44o_&%RKbogd%-yetg!-{?#An79;4g`8a%2T? zL=@gk52%+jTdgRVCo4O5gfWX4c}4oN{|cHG8tsduT1AKrMCeW~n;~~ykZzZfGM~Gp zCH6icY91dXDy~@Cu|}hK5#O(IlRA8y_YZX*1+(u%~WL~5%S8k_4Z|+;L(WS zI?c$;CN0{wB6U{z7ivZ#i&-scfvGtU7awEGIm{FH&y_(tIayb!S?> zs_}VP*G7k+N!MieupoKVIJ=@YJkx|yp>ng+w?2yDR zjf_NCo_Px={hAS{i!rp*!96qj2|bZJX~+Ux!UQjc?S*mdqX)XZ32(wm><}eRza(my z8DVLzf#99Vu`c!Dh6xRXkx~-E{WBr;0>?@DwLBT}zp~U!5U5y(_lwK^uC9`iRI|!B z>ospjq7PR}PUPkZjQbSH$-AzI3MTT@SBY4VvvuJy33ZrfR;W@G^pnMAzZdk{;s|jv zxIIoK@wmhL*9_CrEyDa_8rwW%gJVq_w$z5nF6+&Zg&)jJ$r+Mnn^&waEUMj*OAtp~ zyT2WOyDi|DlLAwb9$~OFOyOuW?tRI!1C7bi!mY;h&gms%#aeDmAdYFi{hGm8Hm-?7 z{AldlZBy52T|iCbHZKKn5K{~FBasYu5&|!|nfoP#qu1;SzkZpmuVS!m5$$tzw_w3r z8fK0Z&Hq-dpz|Thj#{%BaXy1peW$k4@#jw6QA6FCR_YHjlKpJ9cXejcyl&xVibg%G zcWdhDxhdgSD^7DlFTjlzs@oO1H(zr!2rFYuB5=1WditA;nf~^2Vl|)8jJOHX-wqOB z2$ACl{wPA>+KUr!Hrd^ao2RGUh5kh!iFR}B69XK>Ae85m5y+96=B)5@-o`EXMfX)c zk+vv59a5u;>|i`GsUUK6V%vr8gRYG3!@Df|yEv3%+%FQB1`%Tyr4Zgj*0XPmMz)FM zwBp_}x9D=^n6<~;CI3dVcw6|^TG(UPYESIeH3TvnYIKFigKO}tYDREt zl47Fb!v{uQB0AT{*S;E&XV8cc9?iJED#~`sZ=J3nj4ekgqy^&DG$uJI-x>)Q(w_#f z<(cAzxSo^oJ$z;NQUTaiaFPQAY#x|Pqc%}sAIE-+Y&_|NW0_Rsmx$$Yam zl;I7qgmtlH_%ByBUbn*m*SWh7`c3_dti*)6ISyzjgGKBF0!qL=0m4+W-x2v`1I^-x zWhwFkWzxd;*Teiyz$^sq*HNveF5&k@lC#SQI;2j#bmJP`aF38RDmCx0E}foHcSzTY zT+5(I?z-vp>XBG`69q+oc)uyD{BUE6S#IAqdE#-Ah~>6>j76E(5&U0D$GWV;Z3Y&Q z&I^@sx6Hmh!EjwQ=BlnP0;#IoHU>0!T=2U=d41nyZfiLFXJv27=x?5F!BMNVEbu0p7RdLGJtSgVPmBu5-U1nK!#)ls1YD~M8L_~ppJgmAMo z4#!diL&pQ(^4Sl*-rkbbnGWRv4<1a$p!#TEf`M}cIP#b^zZN6YmCvU(=Nl^fy>;{m zDUvVF$ag7w=M#D8(Q`sSHI*xho)_o#sIdCm{0VDCZRQnA7CbyQwL9cQvF$$W7uj-A z8Pbz}w<3o^3jX!ZS3ySi@}B7J_*f{kC@+VFC(jH%)W0o~ABlzKn)2d>NG{6&Pq;#h zhH^RI*VXYBvo{5atRjns$yhB~O4eu_^?T`xl zN#Uxg;$=VCuKueh8tUu!j9yI#f2!~4U)%_LE2fr5;v(DbH&cl!5f
F7+86FFjt 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 literal 0 HcmV?d00001 diff --git a/doc/执法码数据权限过滤使用说明.md b/doc/执法码数据权限过滤使用说明.md new file mode 100644 index 00000000..799b2311 --- /dev/null +++ b/doc/执法码数据权限过滤使用说明.md @@ -0,0 +1,601 @@ +# 执法码数据权限过滤使用说明 + +## 1. 虚拟单位树(efcode_virtual_unit)数据模型 + +![执法单位设置.png](%E6%89%A7%E6%B3%95%E5%8D%95%E4%BD%8D%E8%AE%BE%E7%BD%AE.png)![架构图](./images/architecture.png![执法单位设置.png](%E6%89%A7%E6%B3%95%E5%8D%95%E4%BD%8D%E8%AE%BE%E7%BD%AE.png)) + +数据权限过滤的核心依赖是 **虚拟单位树**(表 `efcode_virtual_unit`),它构建了一棵与实际部门关联的逻辑组织树,用于控制数据可见范围。 + +### 1.1 表结构(EfcodeVirtualUnit / EfcodeVirtualUnitVo) + +| 字段 | 类型 | 说明 | +|------|------|------| +| `vir_id` | String | 虚拟单位ID(主键,UUID) | +| `vir_is_virtual` | String | 是否是虚拟节点("是"/"否") | +| `vir_parent_id` | String | 父节点ID | +| `vir_name` | String | 节点名称 | +| `vir_zone` | Long | 节点类型/层级 | +| `vir_ancestors` | String | 祖级ID列表(逗号分隔,包含自身) | +| `vir_display_path` | String | 节点的单位路径(包含自身) | +| `vir_include_statistics` | String | 是否为统计节点("是"/"否") | +| `vir_include_search` | String | 是否为查询节点("是"/"否") | +| `vir_show_at_business` | String | 是否在业务中显示("是"/"否") | +| `vir_domain` | String | 域 | +| `vir_status` | String | 状态 | +| `vir_remark` | String | 备注 | +| `sys_dept_id` | String | 关联的系统部门ID(sys_user.dept_id) | +| `srz_organization_id` | String | 市认证的组织ID(srz_dept.organizationId) | +| `order_num` | Long | 显示顺序 | +| `cust_order_num` | Long | 自定义显示顺序 | + +### 1.2 关键字段说明 + +- **`vir_ancestors`**:存储从根到当前节点的完整路径(逗号分隔的 vir_id 列表),用于 `FIND_IN_SET` 子查询实现快速子孙查找 +- **`sys_dept_id`**:将虚拟单位节点与系统用户的 `dept_id` 关联,是数据过滤的核心匹配字段 +- **`vir_include_statistics`**:标记该节点是否参与统计类查询的过滤 +- **`vir_include_search`**:标记该节点是否参与搜索类查询的过滤 +- **`vir_show_at_business`**:标记该节点是否在业务端可见,用于 `getUserBureauDeptId` 方法确定用户所属执法单位 +- **`vir_is_virtual`**:虚拟节点(如"深圳各区")仅用于组织结构,不关联真实部门 + +### 1.3 树结构示例 + +``` +深圳市(根) +├── ShenZhen_Areas(区) ← 虚拟节点 +│ ├── Area_FuTianQu(福田区) +│ │ ├── 福田区XX执法队 ← sys_dept_id 关联真实部门 +│ │ └── ... +│ ├── Area_NanShanQu(南山区) +│ └── ... +└── ShenZhen_ShiZhi(市直) ← 虚拟节点 + ├── 市XX局 ← sys_dept_id 关联真实部门 + └── ... +``` + +--- + +## 2. 功能概述 + +执法码数据权限过滤(`@EfcodeDataFilter`)是一套基于 **AOP 切面 + MyBatis-Plus InnerInterceptor** 的数据行级过滤方案。它根据用户角色和所在部门,在 SQL 查询的 WHERE 子句中自动追加 `bureau_dept_id` 过滤条件,实现不同用户看到不同范围的数据。 + +### 2.1 过滤规则 + +| 用户角色 | 行为 | 生成的SQL条件 | +|----------|------|---------------| +| 超级管理员 | 全部放行 | 不追加任何条件 | +| ViewAllDataRole | 全部放行 | 不追加任何条件 | +| ViewFilterDataRole | 按虚拟单位树过滤 | `bureau_dept_id IN (子查询) OR bureau_dept_id = '用户部门ID'` | +| 其他用户 | 禁止访问 | `1 = 0` | + +### 2.2 核心组件清单 + +| 文件 | 职责 | +|------|------| +| `EfcodeDataFilter.java` | 注解定义 | +| `EfcodeDataFilterAdvice.java` | AOP 方法拦截器(设置/清除 ThreadLocal) | +| `EfcodeDataFilterPointcut.java` | 切入点匹配器 | +| `EfcodeDataFilterPointcutAdvisor.java` | Advisor 注册器 | +| `EfcodeDataFilterHelper.java` | ThreadLocal 管理器 | +| `EfcodeDataFilterInterceptor.java` | MyBatis InnerInterceptor(修改SQL) | +| `EfcodeDataFilterConfig.java` | Spring 配置类(注册拦截器+切面) | +| `DataFilterUtil.java` | 过滤 SQL 构建工具类 | + +所有组件位于:`zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/annotation/` + +--- + +## 3. 架构设计 + +### 3.1 整体流程 + +``` +用户请求 + │ + ▼ +┌──────────────────┐ +│ Service 方法调用 │ ← @EfcodeDataFilter(可选,覆盖整个方法内的所有Mapper调用) +└──────────────────┘ + │ + ▼ +┌──────────────────┐ +│ AOP 切面拦截 │ EfcodeDataFilterAdvice → setFilter(注解) 到 ThreadLocal +└──────────────────┘ + │ + ▼ +┌──────────────────┐ +│ MyBatis 执行SQL │ +└──────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────┐ +│ MyBatis-Plus 拦截器链(按顺序执行 beforeQuery): │ +│ │ +│ 1. TenantLineInnerInterceptor (多租户) │ +│ 2. PlusDataPermissionInterceptor (通用数据权限) │ +│ 3. EfcodeDataFilterInterceptor (执法码数据过滤) ← 重点 │ +│ 4. PaginationInnerInterceptor (分页:COUNT + LIMIT) │ +│ 5. OptimisticLockerInnerInterceptor(乐观锁) │ +└────────────────────────────────────────────────────────────────┘ + │ + ▼ +┌──────────────────┐ +│ AOP finally 清除 │ EfcodeDataFilterAdvice → removeFilter() +└──────────────────┘ +``` + +### 3.2 拦截器链顺序(关键) + +`EfcodeDataFilterInterceptor` **必须在** `PaginationInnerInterceptor` **之前**。 + +原因:`PaginationInnerInterceptor` 在 `beforeQuery` 中会内部执行 COUNT 查询。如果数据过滤在分页之后,COUNT 查询不会被过滤,导致 `total` 不正确(如全表10000条但过滤后仅3000条)。 + +配置由 `EfcodeDataFilterConfig.configureEfcodeDataFilter()` 自动完成。 + +--- + +## 4. 使用方式 + +### 4.1 方式一:@EfcodeDataFilter 注解(推荐) + +#### 4.1.1 标注在 Service 方法上 + +适用于 Service 方法内调用多个 Mapper 方法的场景(如手动分页需要先 COUNT 再查数据): + +```java +@EfcodeDataFilter +@Override +public TableDataInfo queryPageList(TestEnfDemoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); +} +``` + +#### 4.1.2 标注在 Mapper 方法上 + +适用于自定义 XML SQL 的 Mapper 方法: + +```java +@EfcodeDataFilter(column = "bureau_dept_id") +Page customPageList(@Param("page") Page page, + @Param("ew") Wrapper wrapper); +``` + +#### 4.1.3 注解属性说明 + +| 属性 | 默认值 | 说明 | +|------|--------|------| +| `column` | `"bureau_dept_id"` | 业务表中用于匹配的列名 | +| `tableAlias` | `""` | 表别名(SQL 中有别名时使用,如 `"t"` → `t.bureau_dept_id`) | +| `includeSearch` | `true` | 是否包含虚拟单位树中标记为"查询节点"的数据 | +| `includeStatistics` | `true` | 是否包含虚拟单位树中标记为"统计节点"的数据 | + +### 4.2 方式二:直接调用 DataFilterUtil(不依赖AOP) + +适用于不想使用注解的场景,手动在代码中拼接过滤条件: + +```java +@Override +public TableDataInfo directFilterPageList(TestEnfDemoBo bo, PageQuery pageQuery) { + QueryWrapper qw = Wrappers.query(); + qw.orderByAsc("id"); + + // 直接调用工具类生成过滤SQL + String filterSql = DataFilterUtil.buildFilterSql(true, true); + if (filterSql != null) { + qw.apply(filterSql); // null表示全放行,不追加条件 + } + + Page result = baseMapper.selectVoPage(pageQuery.build(), qw); + return TableDataInfo.build(result); +} +``` + +**注意**:`DataFilterUtil.buildFilterSql()` 返回值: +- `null` → 全部放行(超管/ViewAllDataRole),不要追加条件 +- `"1 = 0"` → 无权访问 +- 其他字符串 → 过滤条件SQL + +--- + +## 5. DataFilterUtil 方法列表 + +`DataFilterUtil` 是数据过滤的核心工具类,位于 `com.zdxt.enforcementcode.common.util` 包下,提供权限判断、SQL 构建、子孙节点查询、用户执法单位查询等能力。 + +### 5.1 权限判断方法 + +| 方法签名 | 返回值 | 说明 | +|----------|--------|------| +| `isFullAccess()` | `boolean` | 判断当前用户是否全部放行(超管或 ViewAllDataRole) | +| `needFilter()` | `boolean` | 判断当前用户是否需要数据过滤(拥有 ViewFilterDataRole) | +| `hasNoAccess()` | `boolean` | 判断当前用户是否无权访问(既非放行也非过滤) | +| `getUserAccessibleDeptIds(includeStatistics, includeSearch)` | `List` | 获取当前用户可访问的 sys_dept_id 列表(null=全放行,空=无权) | +| `getFilteredDeptIdsForCurrentUser(includeStatistics, includeSearch)` | `List` | 获取 ViewFilterDataRole 用户在虚拟单位树中对应节点及子孙的 sys_dept_id | + +### 5.2 子孙节点查询方法 + +| 方法签名 | 返回值 | 说明 | +|----------|--------|------| +| `getDescendantDeptIds(virId, includeSearch, includeStatistics, includeBusiness)` | `List` | 获取指定 virId 下所有子孙节点的 sys_dept_id(已去重) | +| `getDescendantVirIds(virId, includeSearch, includeStatistics, includeBusiness)` | `List` | 获取指定 virId 下所有子孙节点的 vir_id(已去重) | + +参数说明: +- `virId`:起始节点的虚拟单位ID(如 `DataFilterUtil.SHENZHEN_AREAS`) +- `includeSearch`:是否包含 `vir_include_search='是'` 的节点 +- `includeStatistics`:是否包含 `vir_include_statistics='是'` 的节点 +- `includeBusiness`:是否包含 `vir_show_at_business='是'` 的节点 + +### 5.3 SQL 过滤条件构建方法 + +| 方法签名 | 返回值 | 说明 | +|----------|--------|------| +| `buildFilterSql(tableAlias, column, includeSearch, includeStatistics)` | `String` | 完整版:指定表别名 + 列名 | +| `buildFilterSql(tableAlias, includeSearch, includeStatistics)` | `String` | 默认列名 `bureau_dept_id` | +| `buildFilterSql(includeSearch, includeStatistics)` | `String` | 最简版:无别名 + 默认列名 | + +返回值含义: +- `null` → 全部放行(超管/ViewAllDataRole),调用方**不要**追加条件 +- `"1 = 0"` → 无权访问 +- 其他字符串 → 过滤条件SQL片段,通过 `QueryWrapper.apply(filterSql)` 追加 + +### 5.4 用户执法单位查询方法 + +| 方法签名 | 返回值 | 说明 | +|----------|--------|------| +| `getUserDeptId(userId)` | `String` | 获取用户的 dept_id(来源 sys_user 表) | +| `getUserOrganId(userId)` | `String` | 查询用户所属执法单位的 organizationId(来源 srz_dept 表,向上递归) | +| `getUserBureauDeptId(userId)` | `String` | 查询用户所在执法单位的 vir_id(来源 efcode_virtual_unit 表) | + +#### 5.4.1 getUserDeptId + +通过 `UserService.selectListByIds()` 查询用户的 `dept_id` 并返回字符串。 + +#### 5.4.2 getUserOrganId + +``` +userId → getUserDeptId → deptId +deptId → srz_dept.organizationId 匹配 + ├─ unitTypeCode=99 → 抛出异常(不合法的机构类型) + ├─ unitTypeCode=10 → 返回 organizationId(已是执法单位) + └─ unitTypeCode=11 → 递归查找 parentid,直到 unitTypeCode=10 + (最大递归深度:4层) +``` + +#### 5.4.3 getUserBureauDeptId + +``` +userId → getUserDeptId → deptId +deptId → efcode_virtual_unit.sys_dept_id 匹配 + ├─ 筛选 vir_show_at_business='是' 的记录 + │ ├─ 恰好1条 → 返回 vir_id + │ └─ 多条 → 抛出异常 + └─ 无 vir_show_at_business='是' 的记录 + ├─ 总匹配只有1条 → 返回 vir_id + └─ 多条 → 抛出异常 +``` + +### 5.5 常量定义 + +| 常量 | 值 | 说明 | +|------|----|------| +| `ROLE_VIEW_ALL_DATA` | `"ViewAllDataRole"` | 全部放行角色 | +| `ROLE_VIEW_FILTER_DATA` | `"ViewFilterDataRole"` | 需过滤角色 | +| `SHENZHEN_AREAS` | `"ShenZhen_Areas"` | 区(二级节点) | +| `ShenZhen_ShiZhi` | `"ShenZhen_ShiZhi"` | 深圳市直 | +| `AREA_GUANG_MING_QU` | `"Area_GuangMingQu"` | 光明区 | +| `AREA_NAN_SHAN_QU` | `"Area_NanShanQu"` | 南山区 | +| `AREA_PING_SHAN_QU` | `"Area_PingsHanQu"` | 坪山区 | +| `AREA_DA_PENG_XIN_QU` | `"Area_DapengXinQu"` | 大鹏新区 | +| `AREA_BAO_AN_QU` | `"Area_BaoAnQu"` | 宝安区 | +| `AREA_SHEN_SHAN_TE_BIE_HE_ZUO_QU` | `"Area_ShenShanTeBieHeZuoQu"` | 深汕特别合作区 | +| `AREA_YAN_TIAN_QU` | `"Area_YanTianQu"` | 盐田区 | +| `AREA_FU_TIAN_QU` | `"Area_FuTianQu"` | 福田区 | +| `AREA_LUO_HU_QU` | `"Area_LuoHuQu"` | 罗湖区 | +| `AREA_LONG_HUA_QU` | `"Area_LongHuaQu"` | 龙华区 | +| `AREA_LONG_GANG_QU` | `"Area_LongGangQu"` | 龙岗区 | + +--- + +## 6. ITestEnfDemoService 接口说明 + +`ITestEnfDemoService` 是数据过滤功能的完整演示接口,展示了多种分页和过滤方式: + +### 6.1 方法列表 + +| 方法 | 数据过滤方式 | 分页方式 | 说明 | +|------|-------------|---------|------| +| `queryPageList` | Service 注解 | MyBatis-Plus自动分页 | 最常用方式,注解覆盖 `selectVoPage` | +| `queryList` | Service 注解 | 无分页 | 列表查询 | +| `customPageList` | Mapper 注解 | MyBatis-Plus自动分页 | 自定义XML SQL + 自动分页拦截器 | +| `manualPageList` | Service 注解 | 全手动分页 | 绕过分页拦截器,自己 COUNT + LIMIT | +| `directFilterPageList` | DataFilterUtil 直接调用 | MyBatis-Plus自动分页 | 不依赖AOP注解 | +| `directFilterList` | DataFilterUtil 直接调用 | 无分页 | 不依赖AOP注解 | + +### 6.2 三种分页方式对比 + +#### 6.2.1 方式A:MyBatis-Plus 自动分页(queryPageList / customPageList) + +```java +Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); +``` + +- 传入 `Page` 对象 → `PaginationInnerInterceptor` 自动拦截 +- 自动执行 COUNT 查询获取 total +- 自动添加 LIMIT 子句 + +#### 6.2.2 方式B:自定义 XML SQL + 自动分页(customPageList) + +Mapper XML: +```xml + +``` + +**注意**:自定义 XML SQL 必须手动添加 `del_flag = 0`,因为 `@TableLogic` 逻辑删除不会对自定义 SQL 生效。 + +#### 6.2.3 方式C:全手动分页(manualPageList) + +```java +Long total = baseMapper.manualCount(lqw); // 手动 COUNT +List list = baseMapper.manualSelectList(lqw, offset, pageSize); // 手动 LIMIT +return new TableDataInfo<>(list, total); // 手动组装 +``` + +- 完全绕过 `PaginationInnerInterceptor` +- 适合需要精确控制分页行为的场景 + +--- + +## 7. 自定义 XML SQL 编写规范 + +当使用 Mapper XML 编写自定义 SQL 时,必须注意以下要点: + +### 7.1 必须手动添加 del_flag 条件 + +```xml +WHERE del_flag = 0 +``` + +因为 `@TableLogic` 只对 MyBatis-Plus 内置的 CRUD 方法生效。 + +### 7.2 正确处理 Wrapper 条件 + ORDER BY + +**推荐模式**(兼容纯 ORDER BY 无 WHERE 条件的情况): + +```xml +WHERE del_flag = 0 + + AND + ${ew.sqlSegment} + +``` + +**工作原理**: +- 当有 WHERE 条件 + ORDER BY 时:`nonEmptyOfNormal=true` → 输出 `AND condition ORDER BY ...` +- 当只有 ORDER BY 时:`nonEmptyOfNormal=false` → 直接输出 `ORDER BY ...`(不加 AND) +- 当都没有时:外层 if 不满足 → 不输出 + +**错误示例**(会丢失 ORDER BY): +```xml + + + AND ${ew.sqlSegment} + +``` + +--- + +## 8. 单元测试说明 + +### 8.1 TestEnfDemoServiceTest(数据过滤功能测试) + +#### 8.1.1 测试文件 + +`zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/TestEnfDemoServiceTest.java` + +#### 8.1.2 测试架构 + +```java +@TestInstance(TestInstance.Lifecycle.PER_CLASS) // 允许非静态 @BeforeAll +@SpringBootTest(classes = ZdxtAdminApplication.class) +@ActiveProfiles({"dev", "dev-cust-zrb"}) +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class TestEnfDemoServiceTest { +``` + +#### 8.1.3 数据初始化策略 + +`@BeforeAll` 中: +1. **物理删除** `test_enf_demo` 表全部数据(通过 `JdbcTemplate` 绕过 `@TableLogic`) +2. **批量插入** 10000 条已知分布的测试数据: + - 前 3000 条:`bureau_dept_id` = 过滤用户部门ID(可见) + - 后 7000 条:`bureau_dept_id` = 虚假部门ID(不可见) +3. **动态查询** 过滤用户实际可见数量(考虑虚拟单位树子孙节点匹配) + +#### 8.1.4 测试用户角色 + +| 用户 | userId | 角色 | 预期行为 | +|------|--------|------|---------| +| 超级管理员 | 1 | admin | 看到全部 10000 条 | +| ViewAllDataRole | 2 | ViewAllDataRole | 看到全部 10000 条 | +| ViewFilterDataRole | 3 | ViewFilterDataRole | 看到约 3000 条(按虚拟单位树过滤) | +| 无权用户 | 4 | common | 看到 0 条 | + +#### 8.1.5 测试覆盖(37个测试方法) + +| 序号 | 测试范围 | 验证内容 | +|------|---------|---------| +| 1-4 | queryPageList | 四种角色的 total 和 records 数量 | +| 5-7 | queryList | 列表查询的数据过滤 | +| 8-10 | manualPageList | 手动分页的数据过滤 | +| 11-13 | customPageList | 自定义XML + Mapper注解的数据过滤 | +| 14-17 | directFilterPageList | DataFilterUtil直接调用方式 | +| 18-19 | directFilterList | 直接调用列表查询 | +| 20-21 | 数据一致性 | 注解方式 vs 直接调用方式结果一致 | +| 22-32 | 分页功能 | 翻页、total一致性、过滤用户分页 | +| 33-35 | 综合验证 | 所有方法在相同角色下结果一致 | +| 36-37 | 尾页/超出页码 | 最后一页记录数、overflow=true 行为 | + +#### 8.1.6 运行测试 + +```bash +# 运行全部测试 +mvn test -pl zdxt-web-server/zdxt-admin-web-server -Dtest="TestEnfDemoServiceTest" -DfailIfNoTests=false + +# 运行单个测试方法 +mvn test -pl zdxt-web-server/zdxt-admin-web-server -Dtest="TestEnfDemoServiceTest#testQueryPageList_SuperAdmin" -DfailIfNoTests=false +``` + +#### 8.1.7 SaToken Mock 上下文 + +单元测试中需要 Mock SaToken 的上下文环境: + +```java +@BeforeEach +public void setUp() { + SaTokenContextMockUtil.setMockContext(); + MockHttpServletRequest mockRequest = new MockHttpServletRequest(); + mockRequest.addHeader("User-Agent", "..."); + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(mockRequest)); +} + +@AfterEach +public void tearDown() { + StpUtil.logout(); + RequestContextHolder.resetRequestAttributes(); + SaTokenContextMockUtil.clearContext(); +} +``` + +### 8.2 DataFilterUtilTest(工具类方法测试) + +#### 8.2.1 测试文件 + +`zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/DataFilterUtilTest.java` + +#### 8.2.2 测试架构 + +```java +@SpringBootTest(classes = ZdxtAdminApplication.class) +@ActiveProfiles({"dev", "dev-cust-zrb"}) +@AutoConfigureMockMvc +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +public class DataFilterUtilTest { +``` + +- 每个测试方法前通过 `@BeforeEach` 模拟 SaToken 登录上下文 +- 测试方法通过 `@Order` 注解控制执行顺序 +- 连接真实数据库验证,非 Mock 测试 + +#### 8.2.3 测试覆盖(24个测试方法) + +| 序号 | 测试方法 | 验证内容 | +|------|---------|----------| +| 1 | testConstants | 所有区域常量值正确性 | +| 2 | testGetDescendantDeptIds_blankVirId | 空/null/空白 virId 返回空列表 | +| 3 | testGetDescendantDeptIds_shenzhenAreas | 深圳各区子孙部门ID查询正确性 | +| 4 | testGetDescendantDeptIds_guangMingQu | 光明区子孙部门ID查询 | +| 5 | testGetDescendantDeptIds_shiZhi | 市直子孙部门ID查询 | +| 6 | testGetDescendantDeptIds_nonExistentVirId | 不存在的virId返回空列表 | +| 7 | testGetDescendantDeptIds_filterCombinations | 不同过滤条件组合对比 | +| 8 | testGetDescendantVirIds_blankVirId | 空/null/空白 virId 返回空列表 | +| 9 | testGetDescendantVirIds_shenzhenAreas | 深圳各区子孙虚拟单位ID查询 | +| 10 | testGetDescendantVirIds_shiZhi | 市直子孙虚拟单位ID查询 | +| 11 | testGetDescendantVirIds_nonExistentVirId | 不存在的virId返回空列表 | +| 12 | testGetDescendantDeptIds_allAreaConstants | 遍历所有区域常量查询子孙部门 | +| 13 | testGetDescendantVirIds_filterCombinations | virId过滤条件组合对比 | +| 14 | testGetUserBureauDeptId_nullUserId | null userId 返回 null | +| 15 | testGetUserBureauDeptId_nonExistentUser | 不存在的用户返回 null | +| 16 | testGetUserBureauDeptId_validUser | 有效用户返回执法单位 virId(含异常场景) | +| 17 | testGetUserBureauDeptId_multipleUsers | 遍历多个用户验证 getUserBureauDeptId | +| 18 | testGetUserDeptId_nullUserId | null userId 返回 null | +| 19 | testGetUserDeptId_nonExistentUser | 不存在的用户返回 null | +| 20 | testGetUserDeptId_validUser | 有效用户返回正确的 deptId | +| 21 | testGetUserOrganId_nullUserId | null userId 返回 null | +| 22 | testGetUserOrganId_nonExistentUser | 不存在的用户返回 null | +| 23 | testGetUserOrganId_validUser | 有效用户返回执法单位 organizationId(含异常场景) | +| 24 | testGetUserOrganId_multipleUsers | 遍历多个用户验证 getUserOrganId | + +#### 8.2.4 测试设计要点 + +1. **边界值测试**:null 入参、不存在的记录、空白字符串 +2. **异常场景覆盖**:`getUserBureauDeptId` 多条匹配抛 `IllegalStateException`、`getUserOrganId` 中 unitTypeCode=99 或递归超深度 +3. **批量验证**:遍历多个真实用户ID,验证方法在不同数据条件下的鲁棒性 +4. **结果断言**:返回值不为空白、不为 null(有效用户场景) + +#### 8.2.5 运行测试 + +```bash +# 运行 DataFilterUtilTest 全部测试 +mvn test -pl zdxt-web-server/zdxt-admin-web-server -Dtest="DataFilterUtilTest" -DfailIfNoTests=false + +# 运行单个测试方法 +mvn test -pl zdxt-web-server/zdxt-admin-web-server -Dtest="DataFilterUtilTest#testGetUserOrganId_validUser" -DfailIfNoTests=false +``` + +--- + +## 9. 注意事项 + +### 9.1 分页合理化(overflow=true) + +`MybatisPlusConfig` 中配置了 `paginationInnerInterceptor.setOverflow(true)`: +- 当 `pageNum > totalPages` 时,**自动回退到第1页** +- 不会返回空结果,而是返回第1页数据 + +### 9.2 Service + Mapper 双重注解的注意事项 + +当 Service 和 Mapper 方法都标注了 `@EfcodeDataFilter` 时: +- Mapper 的注解会**覆盖** Service 的注解设置 +- 每个 Mapper 方法执行完毕后会清除 ThreadLocal +- **重要**:如果 Service 方法中间调用了没有 `@EfcodeDataFilter` 的 Mapper 方法,该调用**不会被过滤** + +**推荐做法**: +- 如果 Service 方法内所有 Mapper 调用都需要过滤:每个 Mapper 方法都加注解 +- 或者只在 Service 层加注解,Mapper 方法不加(前提是 Service 内只有一次 Mapper 调用) + +### 9.3 不同方式的选择建议 + +| 场景 | 推荐方式 | +|------|---------| +| 常规 CRUD 查询 | Service 加 `@EfcodeDataFilter` | +| 自定义 XML SQL | Mapper 方法加 `@EfcodeDataFilter` | +| 需要精确控制过滤参数 | `DataFilterUtil.buildFilterSql()` 直接调用 | +| Service 内多次 Mapper 调用 | Service + 每个 Mapper 都加注解 | + +--- + +## 10. 文件目录结构 + +``` +zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/ +├── common/ +│ ├── annotation/ +│ │ ├── EfcodeDataFilter.java # 注解定义 +│ │ ├── EfcodeDataFilterAdvice.java # AOP 方法拦截器 +│ │ ├── EfcodeDataFilterPointcut.java # 切入点匹配器 +│ │ ├── EfcodeDataFilterPointcutAdvisor.java # Advisor 注册器 +│ │ ├── EfcodeDataFilterHelper.java # ThreadLocal 管理 +│ │ ├── EfcodeDataFilterInterceptor.java # MyBatis 拦截器 +│ │ └── EfcodeDataFilterConfig.java # Spring 配置 +│ └── util/ +│ └── DataFilterUtil.java # 过滤SQL构建工具 +├── mapper/ +│ └── TestEnfDemoMapper.java # Mapper接口(Mapper注解示例) +├── service/ +│ ├── ITestEnfDemoService.java # Service接口 +│ └── impl/ +│ └── TestEnfDemoServiceImpl.java # Service实现(Service注解示例) +└── resources/mapper/enforcementcode/ + └── TestEnfDemoMapper.xml # 自定义SQL(XML编写规范示例) + +zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/ +├── TestEnfDemoServiceTest.java # 数据过滤功能完整测试(37个测试方法) +└── DataFilterUtilTest.java # DataFilterUtil 工具类测试(24个测试方法) +``` diff --git a/zdxt-common/zdxt-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java b/zdxt-common/zdxt-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java index 393a0f0d..5f5ef4cd 100644 --- a/zdxt-common/zdxt-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java +++ b/zdxt-common/zdxt-common-core/src/main/java/org/dromara/common/core/domain/dto/UserDTO.java @@ -28,7 +28,7 @@ public class UserDTO implements Serializable { /** * 部门ID */ - private Long deptId; + private String deptId; /** * 用户账号 diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java index 977ed6a4..1856f5df 100644 --- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java +++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/common/util/DataFilterUtil.java @@ -2,11 +2,16 @@ package com.zdxt.enforcementcode.common.util; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.zdxt.enforcementcode.domain.bo.EfcodeVirtualUnitBo; import com.zdxt.enforcementcode.domain.vo.EfcodeVirtualUnitVo; +import com.zdxt.enforcementcode.domain.vo.SrzDeptVo; +import com.zdxt.enforcementcode.mapper.SrzDeptMapper; import com.zdxt.enforcementcode.service.IEfcodeVirtualUnitService; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -320,6 +325,156 @@ public class DataFilterUtil { return buildFilterSql("", "bureau_dept_id", includeSearch, includeStatistics); } + /** + * 查询指定用户所在的执法单位的 organizationId。 + *

+ * 通过用户的 deptId 匹配 srz_dept.organizationId,根据 unitTypeCode 判断: + *

    + *
  • unitTypeCode=99 → 抛出异常(不合法的机构类型)
  • + *
  • unitTypeCode=10 → 直接返回当前 organizationId
  • + *
  • unitTypeCode=11 → 递归查找父级,直到找到 unitTypeCode=10 的父级,返回其 organizationId
  • + *
+ * + * @param userId 用户ID + * @return 用户所属执法单位的 organizationId;用户不存在或未分配部门则返回 null + * @throws IllegalStateException 当 unitTypeCode=99 或递归查找失败时抛出 + */ + public static String getUserOrganId(Long userId) { + String deptId = getUserDeptId(userId); + if (deptId == null) { + return null; + } + + SrzDeptMapper srzDeptMapper = SpringUtils.getBean(SrzDeptMapper.class); + return findOrganIdByDeptId(srzDeptMapper, deptId, 0); + } + + /** + * 根据 organizationId 递归查找 unitTypeCode=10 的执法单位 + * + * @param srzDeptMapper Mapper + * @param organizationId 当前机构ID + * @param depth 递归深度(防歿循环) + * @return unitTypeCode=10 的 organizationId + */ + private static String findOrganIdByDeptId(SrzDeptMapper srzDeptMapper, String organizationId, int depth) { + if (StrUtil.isBlank(organizationId)) { + return null; + } + // 防止无限递归 + if (depth > 4) { + throw new IllegalStateException( + "递归查找执法单位超过最大深度(4),可能存在循环引用,organizationId=" + organizationId); + } + + SrzDeptVo srzDept = srzDeptMapper.selectVoById(organizationId); + if (srzDept == null) { + return null; + } + + String unitTypeCode = srzDept.getUnittypecode(); + if ("99".equals(unitTypeCode)) { + throw new IllegalStateException( + "用户所在机构(organizationId=" + organizationId + ")的 unitTypeCode=99,不合法的机构类型"); + } + if ("10".equals(unitTypeCode)) { + return srzDept.getOrganizationid(); + } + if ("11".equals(unitTypeCode)) { + // 递归查找父级 + return findOrganIdByDeptId(srzDeptMapper, srzDept.getParentid(), depth + 1); + } + + // 其他未知的 unitTypeCode,返回 null + return null; + } + + public static String getUserDeptId(Long userId) { + if (userId == null) { + return null; + } + // 1. 通过 userId 获取用户的 deptId + UserService userService = SpringUtils.getBean(UserService.class); + List users = userService.selectListByIds(Collections.singletonList(userId)); + if (CollUtil.isEmpty(users)) { + return null; + } + UserDTO user = users.get(0); + if (user.getDeptId() == null) { + return null; + } + String deptId = String.valueOf(user.getDeptId()); + return deptId; + } + + // ======================== 用户执法单位查询方法 ======================== + /** + * 查询指定用户所在的执法单位的 vir_id。 + *

+ * 逻辑: + *

    + *
  1. 通过 userId 查询用户的 dept_id
  2. + *
  3. 用 dept_id 匹配 efcode_virtual_unit.sys_dept_id
  4. + *
  5. 优先返回 vir_show_at_business='是' 的记录的 vir_id
  6. + *
  7. 如果 vir_show_at_business='是' 的有多条,抛出异常
  8. + *
  9. 如果没有 vir_show_at_business='是' 的记录,且只有一条匹配 sys_dept_id 的记录,也直接返回
  10. + *
+ * + * @param userId 用户ID + * @return 用户所在执法单位的 vir_id;如果用户不存在或未分配部门则返回 null + * @throws IllegalStateException 当匹配到多条 vir_show_at_business='是' 的记录时抛出 + */ + public static String getUserBureauDeptId(Long userId) { + if (userId == null) { + return null; + } + // 1. 通过 userId 获取用户的 deptId + UserService userService = SpringUtils.getBean(UserService.class); + List users = userService.selectListByIds(Collections.singletonList(userId)); + if (CollUtil.isEmpty(users)) { + return null; + } + UserDTO user = users.get(0); + if (user.getDeptId() == null) { + return null; + } + String deptId = String.valueOf(user.getDeptId()); + + // 2. 通过 deptId 查询 efcode_virtual_unit 中所有匹配 sys_dept_id 的记录 + IEfcodeVirtualUnitService virtualUnitService = SpringUtils.getBean(IEfcodeVirtualUnitService.class); + EfcodeVirtualUnitBo bo = new EfcodeVirtualUnitBo(); + bo.setSysDeptId(deptId); + List allMatched = virtualUnitService.queryList(bo); + if (CollUtil.isEmpty(allMatched)) { + return null; + } + + // 3. 筛选 vir_show_at_business='是' 的记录 + List businessUnits = allMatched.stream() + .filter(v -> "是".equals(v.getVirShowAtBusiness())) + .collect(Collectors.toList()); + + if (businessUnits.size() == 1) { + // 恰好一条业务记录,直接返回 + return businessUnits.get(0).getVirId(); + } + if (businessUnits.size() > 1) { + // 多条业务记录,抛出异常 + throw new IllegalStateException( + "用户(userId=" + userId + ")的部门(deptId=" + deptId + + ")在虚拟单位表中匹配到多条 vir_show_at_business='是' 的记录,无法确定唯一执法单位"); + } + + // 4. 没有 vir_show_at_business='是' 的记录,如果只有一条匹配记录则返回 + if (allMatched.size() == 1) { + return allMatched.get(0).getVirId(); + } + + // 多条匹配但无法确定唯一执法单位 + throw new IllegalStateException( + "无法找到当前用户所在的执法单位!"); + } + // ======================== 私有辅助方法 ======================== /** diff --git a/zdxt-web-server/zdxt-admin-web-server/src/test/java/org/dromara/test/DataFilterUtilTest.java b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/DataFilterUtilTest.java similarity index 67% rename from zdxt-web-server/zdxt-admin-web-server/src/test/java/org/dromara/test/DataFilterUtilTest.java rename to zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/DataFilterUtilTest.java index 1293bdb4..1c5918cb 100644 --- a/zdxt-web-server/zdxt-admin-web-server/src/test/java/org/dromara/test/DataFilterUtilTest.java +++ b/zdxt-web-server/zdxt-admin-web-server/src/test/java/com/zdxt/service/test/DataFilterUtilTest.java @@ -1,4 +1,4 @@ -package org.dromara.test; +package com.zdxt.service.test; import cn.dev33.satoken.context.mock.SaTokenContextMockUtil; import cn.dev33.satoken.stp.StpUtil; @@ -285,4 +285,148 @@ public class DataFilterUtilTest { System.out.println("VirIds 不包含业务节点: " + noBusiness.size()); System.out.println("VirIds 全部不包含: " + allFalse.size()); } + + // ======================== getUserEnforcementUnitId 测试 ======================== + + @Test + @Order(14) + @DisplayName("getUserBureauDeptId - null userId返回null") + public void testGetUserBureauDeptId_nullUserId() { + String result = DataFilterUtil.getUserBureauDeptId(null); + assertNull(result, "null userId 应返回 null"); + } + + @Test + @Order(15) + @DisplayName("getUserBureauDeptId - 不存在的用户返回null") + public void testGetUserBureauDeptId_nonExistentUser() { + String result = DataFilterUtil.getUserBureauDeptId(999999999L); + assertNull(result, "不存在的用户应返回 null"); + } + + @Test + @Order(16) + @DisplayName("getUserBureauDeptId - 有效用户返回执法单位virId") + public void testGetUserBureauDeptId_validUser() { + // userId=1 为管理员用户,其 deptId 应在 efcode_virtual_unit 中有匹配 + try { + String virId = DataFilterUtil.getUserBureauDeptId(1L); + if (virId != null) { + assertFalse(virId.isBlank(), "返回的 virId 不应为空白字符串"); + System.out.println("用户(userId=1) 所在执法单位 virId: " + virId); + } else { + System.out.println("用户(userId=1) 未匹配到执法单位(deptId在虚拟单位表中无对应记录)"); + } + } catch (IllegalStateException e) { + // 多条匹配记录时会抛出异常,这也是合法的业务场景 + System.out.println("用户(userId=1) 匹配到多条记录: " + e.getMessage()); + assertTrue(e.getMessage().contains("vir_show_at_business") || e.getMessage().contains("执法单位"), + "异常消息应包含关键信息"); + } + } + + @Test + @Order(17) + @DisplayName("getUserBureauDeptId - 遍历多个用户验证返回结果") + public void testGetUserBureauDeptId_multipleUsers() { + Long[] userIds = {17608604388L, 17608604398L, 17608603588L, 17608603589L, 17608617735L}; + for (Long userId : userIds) { + try { + String virId = DataFilterUtil.getUserBureauDeptId(userId); + System.out.println("用户(userId=" + userId + ") 执法单位virId: " + virId); + if (virId != null) { + assertFalse(virId.isBlank(), "virId不应为空白"); + } + } catch (IllegalStateException e) { + System.out.println("用户(userId=" + userId + ") 异常: " + e.getMessage()); + } + } + } + + // ======================== getUserDeptId 测试 ======================== + + @Test + @Order(18) + @DisplayName("getUserDeptId - null userId返回null") + public void testGetUserDeptId_nullUserId() { + String result = DataFilterUtil.getUserDeptId(null); + assertNull(result, "null userId 应返回 null"); + } + + @Test + @Order(19) + @DisplayName("getUserDeptId - 不存在的用户返回null") + public void testGetUserDeptId_nonExistentUser() { + String result = DataFilterUtil.getUserDeptId(999999999L); + assertNull(result, "不存在的用户应返回 null"); + } + + @Test + @Order(20) + @DisplayName("getUserDeptId - 有效用户返回deptId") + public void testGetUserDeptId_validUser() { + String deptId = DataFilterUtil.getUserDeptId(17608617735L); + if (deptId != null) { + assertFalse(deptId.isBlank(), "返回的 deptId 不应为空白字符串"); + System.out.println("用户(userId=1) deptId: " + deptId); + } else { + System.out.println("用户(userId=1) 未分配部门"); + } + } + + // ======================== getUserOrganId 测试 ======================== + + @Test + @Order(21) + @DisplayName("getUserOrganId - null userId返回null") + public void testGetUserOrganId_nullUserId() { + String result = DataFilterUtil.getUserOrganId(null); + assertNull(result, "null userId 应返回 null"); + } + + @Test + @Order(22) + @DisplayName("getUserOrganId - 不存在的用户返回null") + public void testGetUserOrganId_nonExistentUser() { + String result = DataFilterUtil.getUserOrganId(999999999L); + assertNull(result, "不存在的用户应返回 null"); + } + + @Test + @Order(23) + @DisplayName("getUserOrganId - 有效用户返回执法单位organizationId") + public void testGetUserOrganId_validUser() { + try { + String organId = DataFilterUtil.getUserOrganId(17608619627L); + if (organId != null) { + assertFalse(organId.isBlank(), "返回的 organizationId 不应为空白字符串"); + System.out.println("用户(userId=1) 所属执法单位 organizationId: " + organId); + } else { + System.out.println("用户(userId=1) 在 srz_dept 中未找到对应记录"); + } + } catch (IllegalStateException e) { + // unitTypeCode=99 或递归超深度时抛出异常 + System.out.println("用户(userId=1) 异常: " + e.getMessage()); + assertTrue(e.getMessage().contains("unitTypeCode") || e.getMessage().contains("递归"), + "异常消息应包含关键信息"); + } + } + + @Test + @Order(24) + @DisplayName("getUserOrganId - 遍历多个用户验证返回结果") + public void testGetUserOrganId_multipleUsers() { + Long[] userIds = {17608604388L, 17608604398L, 17608603588L, 17608603589L, 17608617735L}; + for (Long userId : userIds) { + try { + String organId = DataFilterUtil.getUserOrganId(userId); + System.out.println("用户(userId=" + userId + ") organizationId: " + organId); + if (organId != null) { + assertFalse(organId.isBlank(), "organizationId不应为空白"); + } + } catch (IllegalStateException e) { + System.out.println("用户(userId=" + userId + ") 异常: " + e.getMessage()); + } + } + } }