From a91dd7482b3e40f4f8bc6dd737bcdb27d3a696bb Mon Sep 17 00:00:00 2001 From: qinoy Date: Fri, 9 Jun 2023 16:06:39 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=AF=E5=88=B0=E7=AB=AF=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E9=98=B6=E6=AE=B5=E6=80=A7=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oft.apps.coe.method.process.subprocess.jar | Bin 64588 -> 66969 bytes .../subprocess/SubProcessController.java | 4 +- .../subprocess/graph/GraphAdjMatrix.java | 43 +--------- .../subprocess/graph/GraphLinkerRender.java | 2 +- .../graph/GraphNodeCloseHandle.java | 55 +------------ .../graph/GraphNodeExpandHandle.java | 74 +++--------------- .../graph/component/AbstractAdjMatrix.java | 61 +++++++++++++++ .../component/AbstractDefinitionHandle.java | 47 +++++++++++ .../graph/util/DefinitionThreadSafe.java | 56 +++++++++++++ .../graph/util/DefinitionThreadUnSafe.java | 36 +++++++++ .../process/subprocess/web/SubProcessWeb.java | 6 +- .../action.xml | 1 + .../diagraming/designer.method.subprocess.js | 26 +++--- 13 files changed, 245 insertions(+), 166 deletions(-) create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractAdjMatrix.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractDefinitionHandle.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadSafe.java create mode 100644 com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadUnSafe.java diff --git a/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar b/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar index ddbb6ffba84f910635c4f80dc053748b0ff16dfa..7d9c5eccacd221c19ab0a9432080f87fbd5a00d2 100644 GIT binary patch delta 41726 zcmZ6xV{oQT)GZv_w#|v1iEZ1~+_7^_II(Tpo@ip*wr$Vkd*1i_`OfL8U8{Gks;>Ui zyLYX90!vjQ|lCRnwy{kglqXB zXzZ#mFuN-={Z9SP_3p^>mX;+JKtK5_`(wLnk}4@)LZ#hx$NweQ_gc5d^}1X6&&SzZ z8u+f@T{YzOz)=Q>)rYtpLK|SvF&&W;(6Th;TIRhKtJbWaj;$h!kEpt89|oUj*bc#}xptCr9*O9SyzirE$=z9|9Mj`!N#p**O*q{?G9!O%z%jg%@_fqiZt| zJ(~Ypn4^-2L;ZmkbQ>Q?z{qrD=I$oNCzIk za(lx9t6&`fWpok3+0_@wv#&V0IHe>rBD8t5%+!Va<76L2;M%g$c%N&_cBJ#wG%whq zVJFse98un);q+8JjBSOFwIPxX-(7a&?%ZLU_mqiVVg4-!ejmu&xWo1MEFlJlK6`+(UgLuwM6ddvIgmgc zuuB4H+$t;FGqY@a^ePEX4+$7#@9rBy@3{6py$a(3tp~77uYc;{|EAcJGQ9G@Uhb{< z-rjh8hU31r6My&UwR}Yt__q*Cd3l>j{AD=;G!=a21%0XB{(&o;`lX_>huG4=WjslW zASJHI<|*FJbq>UyCrtSac4r1mi1nrSaB<_3o9BK%jbj#}yMD;;=Yl)4ERZ55FY6~= ztXkJ2d>mz{As1nuj*M4Ete&F?2;e4MFlYWp*PmF+VY3HXyh1#?))HFAuygxGNuEbi zBD+Dbzr^el+*w;wFzi*mLKto>&}2|M#2G>k9g0oZG6iG`Jg(@$#?C&CnN1P;@t)lAcIkqWm&tCi`-V=pbx~?_?@o z8To}CLlh-NEz2z8dPJb!GV}@V8Tx%Z60HEgIXmR}{M$?s^r>O0WbcLyQwuvb$#9Vs z#@}!f6iMK3gNj8~c0P~n2;UXae(K>SR|$5@m_>Sp4Bb#;iK&V{qfn@k@2A&D1%Nncnq3T-4UU|->UHG?{On5yXE)= z?4Xlzh4so1=T4~{GgFBosJd4j;h(bEzAV&8Vhtc{s3hmXTRleVaOqa3iEdbz7~5Tx z-^r2PotiA1-9tUToQuBDqE%ZQ`d7p1jiLi*0Y5JMD_W&^Z3E9TFCLEKf{(^S<236D zj2uQx7YLaM7spXeQV1zvFO=SZICMLU!SEd>(1830QzPoiV>`DxY(sZyq^fPGNf2SP zaSX^Q^vLxo(>+rly-4GWaseRORc&Hj0ysx{`#B1UA98sihV3Y#Pc4!ZKHsc5ynWO~ z?4|NKgTJwrN^|Oou!nn1EwgCh{t#BzD%&kfP9}>s@!gkdEpEgC@)M>iI7Pa0)65b= z%aX`~FsL9H-3x_At84OE9#h>&7BW{tkN_f$tWR(~%?hNvqLHrVjy4lvybu&o$NlZ9G3yXEf4lv1!r;7>O-{1f! ziKN1kBN_?G8RJBjY`CD0OsO;vdl{q9ES8nehmz?ObsGec7s4%twca>B1FUlg+dtm_ z%pxpgt4Ue1LWH&B6GAuO6+_=wvC9Z*O2ga^ILP_Km5uP&wdhd6%CbCDE-atllvKk8 zeMsHxWy`UuFur zLD)<;a#!`N0j+*NNH>KR*?oN_8$aUx5ROUeb=Q@UXy zDeAMP9oi})ETenrU@#(v6!Ozfe-auS&ETw^9HqF=Q*w_$H7|!rIhxs(=XweE7n8W8 z)bcs?$kJOHZZr|#&Ic(YOqT_k4hI^ zN(m*~!HR+}%|cf9qG5BC0Tk@cFx2n#-h!C;xU5wh(F?X;LizZ2()1cH^IhLGaM=qxlVv^xb}K}{QRC8J55U?Ev5EeOPij;5Su%p z08SFyBSBVanO3JDX5g;KGrRqu;h^o(&-$jI&ExXSJGRYZ)8}(2XGDNshPPkz^hirG zRRuetCQ_6_y6>xkLi@0ypB@G?kp(5x%;H+FU9FZbGl@J5INW!5$IoO8t1xTFD}YO5 zkcw2Ta%`TNqZGW+3Az6V`t%r4zq#r-8%Sq&bZ z=O9Powv~c4*p#Aa6;ceH`2Q^$j@)=FU}Nq&YbszRp$S6ruxcuVjlkzAcGH_hG9XA4 zP(*5|GResRVCt^_{RWnhh9euq0!ld6i}vctw#%)w^BozqllAa{Q_* z5m>7LXbe<@P@5WNH1#1lyI|w~I^H%;=~GkV{Z|p2s2ScKRb)c~Be9RbX*yayp2WAV z>E$E6X31Q&Lys0OO^t9l>;T3}4OM14FGt+ULLBR=TkTgBYNiD_=0-ouQ5h92U%@GjrJR{&gQ|m=j*pdx5);+^qZUjt$yObyFO4RYWO&59 z(d-;XPjhl%abFL%zA^RcK13@ zeK4i+Rd8bvSEE7PAQX&~PBXp#ta6n;6U(`Up>_|vQ{zt3xrU-vedx)ojll_xCqSzp z;{uH*B1_X55qprr^u1=ETXU1;T4l&6Rwc!n)AfX}r#Mmo|1SIHdfVIVB;jD@TIe6J zAM07W;p+GDH#)aT(;3%%RCu_7BU7i!4A}4L%=NvQE{paaGwKhNdzjV7_KfnS14kK$ zjF_BirsqawE?3WxBIN2f(cGM9hRF|f@&v&xyt`3rFbIr-pP=lXGdbnT;!P#5Or!#*}6%YeJ7QkV({X>yOMzTID zqw!2Ay#DjCbY&poPRDpo9?}3^c4z)iClX`p z4%)vRhaf3a$51~VOs`|6-07cz6`pap^4yY6`DCMH$Zz_&zQR-pA|^8?w1sN)QrySo zCfGH>==>Ll!M|??r_F#!g~UOnym!3}sHE9uj=`UC=M(k_b>!IVT2iUfc)PTrt#Yx8 zhV8{nAZcCJ|7|&`fGRA=lPU;i+;}iIC_$g(6T8eSnQ7ti*6C&Ppo934HnZM&>g+s$-lee|=wwlcW>t32M+|W* zN}sQKP`9*=00X!tyYg#hTV!nO8&U(1o~<9B6`@`8`sHCgt>dfRR3K?t;BniL(BR`* zgZiH?x-SnNlOjb@1u@EJTQyxzleZ?|wO<>Bw%ZFfCKpc>wlFzRe>bSua#pq_{vrGY z-%TX@2+CSN+MSU(5|?86zBqoAROf*EH1nlqxK2Y-=LkfNcNPdfe9#MDmOsKmd}=bR zts$^?1Yvir-wFLl)$*N4yE{rvF-&AQ_Q%0N&Py_WKvPaxU$(ng*Lf$@EeUk?AC#;^ z$5H@Sx+bhd^LnuJV)Nc&@wBbTY7xmY+8UHPSCqJaefsgm?m$1r(s8VjhBjXxe633t znP7d#hzk5L=C6^Tv){rm+I~qrj6<2uRhbr(-!ynXTJ(Rzpa^z>%TeB&ScFjHn z%dsmP?nwo2l>N!RcgWwI$Irg00>zF_F(Y^N(mJl8ncPM_fjq1`q>3U6to22l(%oxh zH8&tWLQwwZBZ4XGF2Iy5G}mGdRv?|85;{r;a z(2DPXRA}yWXq0qh&U!hwGoBn(7H354_{oxvw?!zv%Z0f|AJbD1z_j2p+p(f^1rGxgI5Bk? zG1}!{7Bb)A-w^z+sF2imFY?4fA$C-Dvk8r~;icoeET_~#y|Lla_;K4+0gp<@@ zc#sAswn)wd^CGFQQANs^cFY@cFHdo{hM<6a*$p$M&#t~5V5eU@E2MA>hHA1u&}G}} zO{?Cc>n&7Me$)SX=?O+NCM*d^?|qU8{AT|>16`}2{>N7BPm^quh}w9V6dtnTH}p(X z{$@1d@3x+lwjj*vUu50z3AL>QDYty>VRG`G^&2kJTeq2u#4A1WT;%pUMS7Xl{&{w1 zjn9ykYZh0()I8TD?xb(c6Blf3LRTuLl(IQxV=OVgU+mJ}!koprt0L_KSPjV~y~-uK zou6+ROh9cf>rcNLb@HH_Ph`CQ--9YJ-D@eW`RySFi?@II;6D1e-}7~MV5bZo$m$o? zvRw^ZDZj<#So{kB@#DG)UkCR|4t=(xjjiJ_^MYY!myC7e(muDAu;O*2vZKuAsryQk zHv2i!lxrBtR~tzq8Ka5=vcl%OFnV_}hpIe%dhPhF@k2j?^-W$&4?^kjIm=mI3@gX&-H##XuGo!L}YD^@^W zSrR3;jZC6O;3Fjfnc*zh4caJNVHb)LT5mD>Up+77{&@v8O!4?B2>hb253R57`hUOI zzyDGAtGjzZ&U}N_t+}777=MqeJD>L*>=SoW_W4u$byj15c+ski2Njo)U9nB!^*L9u zon**vw)?V8;Bp$`2ZKp2-o5t(hZI=;jw=qcmE|sH7NjJc0(Hy z5FUc9oe_ui#Pce!_K##VAvIg{@8xYmH250`yP#ta6;_vFluoDj6!8v1!EbnYwFM1;5^l^Ti5vw zR&p^FKj^)smJrD{41z6b3?Sa(AJy6$;$eU>t!LDQH+jUpyBGj-sm-j|V@JMGrB&^{ z6wMVps+JeuP>OaP_*KNzFU7H(p`oKMuA^^mDQK*4_enK*;+25c{Uv@)qbbErXR%0N zDS`)(uMdToq-iKpD>|J1ls68X;D72;`YUM}-1zh-ajxlLpuLWOfhK_DQR|LO84&SS^}GG} z+vPoyC$gty+W_tvZ5i=@Oc|HKN`z4sy*fCS$q47@fE!*Ew@ygLt|TmZDMFeFO0!Dq zMx=OnNkKiXbT8#;P_P$@+pdil`~$GZMFjbMu;CUaHu%L^@OT$W5SDhn$6e3|#GYyj zUOQm62x4g6bwk=$uvH<&uZ$zaT0#mgBq-cN)WDS5mTcjqyeZV{nC!eOaJSa2M*~09bVYQ=^0VtGKevspbId$`v-pK1j;5oNiVjuh$0nj>JiyKdQvqss2PJ02w`1}2S639F^4yVXjrAu@9eEBs1vW*%pNCP} zBN7r`0&%|u;gGT$ZEu3Njdl?pIhi4#bAeIjMeO;h*q(6U;r7cIKpoU$mF}9k1hOMS zYvP5f*Z;&LKoYN4Id`TS%jGyk>gU6bs@H*-VnVdBGL48xXaZG6BmhmI%x1(?WtiKq z%0b16tXw;9-{_+)yXswTz3nSVgWR-LebEVh*@>$BBhC5yN*nJb*@-OC|C-^{w2NI1 zGFR`VV{i#4^b$Ewm0U=we^Cp^*s2=kZU76N^R?qI*0E298NL;tb?fO452KSVsl!*wsaM*>HGP+V4KRFy zq^$A3B?=U_`1lp5U^5`aTnZaAl*v$^ie?QiScG=_(roaW|{cS+d_;JVW0o5SvJ4w6yuso^JJVoo5!P{qn7$CL#Rz? zpwt4V@DtC`eS?l~Re`X)2L7&NyRpef9EG!VIk^LZ>zHOd9^fC#8;lE;FwOFLaD^kXS@zu^m3MIIK8ukcE2 zo)8SIOBM|5|C&uEp);#PqW&05ayk-Eiho8-;(b5`YP9rSF)i@|dZ?~S&*q157+Pwu zpcEETkLVsn8cgIF&-!2@RV2B`xVI87hqsVhjX*=JxBd85M66w=+0MgvBI)PR2VQ%j zKrcS)C-M5;?!#3pHGTB-Pu#T|A=2EJzuX@iMWg``Afl=myx}uE5A$Mh)`Mt^9gS}U z;>6Q{+_3@Wc7M8GwEVMQv=*kCK*jDAp2u!baxoPb_E58+bz!<=uRwZ|0)JRkd$Ea8 zpJm{x;=o;WO7fWx#NA?JfcnaKuI_BHg-kxV<1zCVqd-{iB=-}D!5)`O=pv)_Xgw;o zG)=BHwFSAx#!KEqiILA^8Du!cY|TAZn8N`y+Y0~JCw2#{HY@y)$mePha-ZoEIV3`c z&Qve8R7i`$ANXBvjgZ`2d|7RjzCx^iPuL&cX3+tGIisq%Jtr@}?)^qI#jJdmYhGL5 zRsP@1h|{qJUt2y)_oP+(Ut#&^a2C5|Q~U;lBw2R+e!2PSbaUL;8SXemzEc>&dK3uJzBs+j$NY*50}~&}`_@INVOp=2(+6NPad7#ZYS|Dv7(TJ{PO4(G_P8 zAOI&#)LSC#tB5sD?sk#dvtiR}QwC zBM58k^=j@FRPUBX#)$|Hf8||a$$bAo_MYMpMY$x!QG4=DLUXZn-SSw|mm>WUN&3a% zm-ZCbcka)cLly~)Bp1E`@8ILkQ4M4tnkEN}Bj4hT_1~E(_Og$He>);F_4(ETyT`2G zwna>5*Ub(4Z*O(%e~vf=FlQ91)3v5`GIWzmglf{B7=2iHQYV`7ItGh(BAK`~T@f|p zDpe}wADNhDTXORWwUqLUTCXzy;+)D0mJq(k32((OKZ1#>cx9ECLoLZeq zMr2yUlD8JsCq(g_2`xn;ut>evMA6_b)O^oC3OQJoZUp;CaxNytPjPuXtagKO5 zCrcrjb9bs&3#B`Hit@5943cY^fVld+S42Phvsf+(u~&R|b${%|uShm;;1wp%Tx5RX zue}Ns4CPeUe!^^3E>CnoyZJTq`2{p7?F@n7 zc+jkHPq_;fo1aD(W=mKGlqGK!R_~;_?_o;GzAwDTHlTdaX>-$nOw4ISk@yaJ)zzfS zH{#x5;Uc8*G(Z}CY|tZLQv2l3P>;qk)f`#*U&GP20z#C6C%|AV}|0#l4U~q77V8{QD7efOq35Qb; zNLpI^%1h$$PU7sQQnaBAM^i0m_V`IAk)1DDAx6&(fxV@$(B?=+#pPX<|4_RtlCvQ^ zA}L|H&^RUUtj5C7f%uS>_BQq7W6_bnEP20{|8GEE{=Cphmu%*Ivm`yKdlBc4+=uKF z?`c<|lS6p_f4kF$VAH+7JhG#>JgSHI0m4%AZm&&B62id)BW%Jel?EEbm%RYdr=LH$ zBSt)%ZiNKtNKh+m8YpqIYF>MYzxSeE4ZhcV2~v>6ReDWEY6*myMq$To+))aW!{}=^ zN4#)pIW(CIc<3~!Gd&k$r|I7%>m1lJdg$IoW6vP;lj`4L-u+W&3@A1GPn1DE1mY~$ zHwiJo64TisRh%m<*Sn|$7b5?27!dtiV4vc?Kk&As4o$VKUHRkjHzc7>XL^m5%?SIC z%AH^^LBz7{k-KwPmu?iKHjG@>lS;dr7F})LkVzE^mjr~5tAaV6`{<*FIT4Bkfn3#- z4&6LxIW23oea%T$kjOljP#P@z;CC+sO)n>hI-4#q))DK$GmqZsJ-X&6spn zb|kJwm&`{x(^r~}wb|_)LEmvb69MIAN`J;t!kfle6U4*`XHtr85pD`IL+4>4TVrO8 zvuP)KyoAlLd*DH5FFY2(IE$<;POP4c6TN&dS2N$~T_AGb@&( zs9|^8T|Y;op`cKqfd^msuEJD1 zBVTH+#T(DvSVn_eifSiO3!{cfpMLv%ZsW>SoLF-xb|8S znMVA|`Z*r>pmN*`oqi_5$Ktk2F=>Xk?YXahNbCjub=6x3+!4b5gRSGgB`_*;0PVKD z=0N@#Aw-%c@jmR$@=C#S#EOlTdK5{&9}fJ!%M7cvZwH$iHDb3peapvPOqOsS7;a=I zQK(S$oi)(Z@0zQ}N3UMbm}J>6z#J4{VoTSxdGexImI?O}>3=u7#L4F**1(E~EN#xo zaVI}?pGK1f4E0E9N@6_)f(#g+=f;YaQ5OoNLPRUAnWZdR=0Jv#K}vBTx^z4v{YwsR zoIGI8a;T@{CrNs(`q47?MP{$zLDG_b=}^RgbRk7xN#?ARsJmtKJWuJb@Ys-L;z%Y| z%4Q{OMNH@4xU;-?WNFgo{XP6O!m~un@ZOeWn@r_^-%29PVOwcCXn4sb>h|rA1Ovgx zu%Nh(BU6V&)GL*i{2PnoZj|&uahxc~NV#mu4!HoXMB%ZLN}NiLgy~sT$X#5X4diWpi3BsaBx*1-5i-kM z2gN#o7RAjoMi2WhyzNW|eyPH1Bv8o4(}a~DPwD(5xm3|UBhnwGE9yJ?f3C3a2h8h3 zhx;g>&_Ic~E}mrn6P@BHFW)Us15xLA;GY8_2m*W-!61SPr`j4$P@@c9Ca(MEZNu}1 z-jM5(|A$k+d!yus*4Co)LhLiMXWMu8f$b>(wRxxWxbgXBYu51J{l`H@8R+^6`oQNS|hbBIib6 zzJOiNpoWE@cY^3D2szWaH|nF&{xLn5$4YbgDBA}{`F)Dsd#y-6PJDD$3^}Gn)p_|O zj%9{S3jHIqIgq!yAUQ|8qb8%-xOxLGTw5hWhNMH79-R+Fd$!PmhC%u6*H9OJ@D^!R znPl`xEvu^-sAC`>W^NYtVM5yWXE74!5#LwYXy$anbG{oovc$DPNB_s<64OV1ExzTh zY?!W~xL=;P`O?i<0ni*QxRfxhGu^0HZd$~Yr<8EuLzyj!5LZ}GKtn5fOZBaBX7yMf z&aR@x-?q>uJ)BlL>(x!8hms)Mr$|&HqS9+ao4F+ka+zcK=^i5e9 z)(|Fe#tda=FipT$S@Y{p_DooN$BYKio-x82jm=o5aPb>eLhar}-P0EXWo2yosHq;m zp?i?9a5t-z&P%WR=~3OtmU96cCN*?E5T*OX_09@v3Q3bB9OTJ{S*yOKvN&;TMVqKm z>|+%1BoAJHxx3Y6Rkk>Jx-0$zX$bj$5uoxCi*3>wmi7IAtauwX~75 zk~7J}C57Jw{F>lvMXq%RVS8)V4Vd3qIEn`#x-5h_0UilF8=Tu&S5v@t$>Ln6S?_Vj z-Nx?SNjpMo(QMwul)HD^K?paJVf?r0JnPKEN8SiGOe^1PLg!i{I`^z^Z?Z^~iI{&` z>L$20v#y+Dd15wVlc0D^rDUQL`wzVh9r1qe;?UZkZHghjb$Ji-hoP0N(1)bYTkwV= zsb|8KU0D23dhgP1-!=!f167GIQZD$1E);OHW~aV=pgkcKCx%hoor%*Mb@2Izs)v$` z<0gB#h6*vmGX7v|N)3)p)XG?+cvx2v%Xnd^zT|3OyTBU@h*G`u#G43+TUg8DP5KLd z(%5#I`6 zxqSt%t-?CceZ;5Ke_3L#`Cc+Tqi6M@)FV8zeK354a5X5eJzbK0;9OV`@~#GFH{@hD zrTvcR9>abn=V=NyII?m&(t75f+0$)g$fb>Oq#O1d_r*2*R#^{*xJO02k`I$c7RA|x z5(T0sD&7$@km3T86!qTku=|hVYcX#%_ot{GmHUt2$l^3j2<_lcEKo6M=%`suFH~WX zJ?E!@Lt=Jb*|9J+!?A$7*mjNlaym-y#zOxFJS9CR{4Te&=y=p2htgLx-76MB4m z0-hm3EqoqHW|~ngg?KvWsEcOqXpb0M@ww#7+B+S#X=V+?rse99&f~I00`-EoLHBwb ztG3>KDOsStQi@)Knnv49ZVL|=S?et)BYZ1;mNB@BHH-;@pz`w#CT6Or7#;u9P~y5L zqVkjEVj*3}{GPwc9;>dZWB78auC~EzYl*9JMSV-phNZbicjg*Pt8VM3GybET?1hy~ zeI;}mfI|9ITftZ$u5&g2db^Y`P5FQ_VA~&{?G7L=>-n-YlPo(``%AL5=#e^9V57>j zraZEXHKP9*mDmj5!P5(X(YAixFx6uRlX}EFEe^e;rrdS#G}S6t-yNo6=p0$vuD)VM zjx$Srw3b0^I?|2J=*fW0v=}S*iwl3otb$5;s;7`E=@e4!uQ4vBYt5YMWXp)M50f?G zs04OPA-~}|@k7n*Dk&VXgm?)ryYhHAqi*ksr}rbK$Kf_oTw8kHnqH~~Q0$CHy*ddm zH;2XXwA{iUqp@~`kt^~j{OgI*+<@r5jWq_w3M>n`^KBLt6$>uHWa?ZyIM2MO zZCiG97MxmwJ$`H!d}E*E-9AoG_r3WnD2jauK8N>A=HP;#9bAsK6NK5g|+wt0X8C{r-<5zB<4BlYCl<_Bw5x2rV$Cjx_Wbl zwH9PDWVyKx6XVe%$}~L};T+7516+&NZ8b`+F{UJ2hsFH* z)bK;9Qo0ELH^~nq2UY=b`?vH*vn1rB7DAnzITfq402+CYa<-u*NIrVH9Kg%+JN}{P z%js3;yK8V&T*y;LmHr1}Xs0wCitE_Ssf}l)>rU?J=GR5pVx$D@R|lnhg~W69bh>@; zw-OjbI=Z#&h~>^HE=z$=M3gIA<6lW&M#wyQzc^lp(#KDlwz_h=2MO1}N%qCx%(nZp zUbzFHcLvP;zQ<)581N|WP64I*ZGd z8I0Y0v;S0jK=_CJVE-v_{MRq$NGl-k$SL5@5y?NpwXf}85FTK0yWDeA$KuWcJuDq- zrSRp6@f(k5ID}|B1Cf|+AG+XLds6MmYqCbviHBVF;e<`c*s}D;e=C4B4&Bf`a-|E6 z5kK`x^B(#oww>hj^dEBWlQ)X)lPjhC$2&^@?G@Z7>*PHqnG z?!gE{l(M$cS3Dg+rvZZ9C4Myh1#0a0sq{GlwC&EB`McGv1yy4+Zy`Z$6hHF2RQx!* zRa_oJ08U4EzfjirK(G%9uQAE!pDixZeia>HAiqq zRX&sYaDvv&7|17WHeG8sm9bC0Z(znicI+^xOfJi;Vp9k`03CZA21j6i?XZ@~XB|mv zEhlQKW!iJtjLpBmhX_TxM@2j5cEa>cPl#l0mA?G^d{txgdzd$p$2J1bPSD<`Gu9pL zx7;5?V%uR8Zvc1oz5obzC!+H$=~Wm&(0^Tc#Rp(!?yT?Fzu30-zW3$5DLcpCq!OpM zj1CdE=Nj?MpRAmGgY?AEATx`>L*Gd`aL3~(?;$N^O4_3sk16Rz_$8_$+w%z-bOv(Y?{AJ~4^WICHAx+4J+z?6rSz3M#Lq4z(@`yX+|!`NmC1sx0wL*oAtSCU4c|BteKDESSLpg@BI z#|)9cxw2rFm7;kV%7_SB#!g|-YiWOq`B})_T!PUtu0HEna(%w+)OqdkF~5uvw9&G$ z5uNv^MQK$nZ(4LBI?zCSLDWE|$wD#NcIV|yF? zJqJO=LM#pg|A{3?trG=2hyu5O5Z`A_thFKNfDhKAqaLx-@Nk{-SGUV**?~9gbLZ{= zIIIz9Px3P-+s}9e^{{Ou@QI}>Bp79r_UUsru!`7A_x#nD_-i+aw2t?-67nmZZ-Q?x zn3^l8JEQ47;9p8snZm2>aoV;zUS8}Ge?T%{75+J`tJV_%V!5oToq8{TfeG5>!VQQ9 z=GjT< z5!gG)?utzu+I(9!+LjsD`H03)x8|J3aDY#3gT@@Q$B?S_3pglzKlc)B&tw6);V0<0 zs7`P}U@9q2J%MD7JIQj&vFmALhNL9O#E*-nKjSJYg2#(Y$B)Ot83vLM6-q+(1TGGc z=QsAH%JvIUp4@?POr42%wuOfUZe2q8unkQj>^SybOvF05Wz>1Z{p^|qFJ23h{H{GE zicVXGt1Moo%Ymh_;4@nV7;#2im`;tJdbRV{j99>2Qp57#q}q9sG#>6XRhz zi431*7@f%}%+yN>i4wDBwRljBuzmCj)avLQK&hJxv4Qk6lHc zfZ!eWoGmZJKduL8?@%tkh@p5;4ixp4$T0`Qse@H%dI#I_ z7mt}R={h+z&}?#V^oK`J{CI3rH8po}=e$HsPvYyFmT_zOzFTL-7WY2!88M1%P@S%J zj0)hZQckB-;3il6F}O@cIjEqOB!t9ed3eZF)ROkjNcx7ADl6HDL%Gf`g1(1BNpA0> zp0QJH`>*#N+w$MC3A;{?g^=x;QW*8M6i`UHid_p&JGxg^u2av!RHMJ#&g;bJNo}99W?tM0G#rHcBh^K9}A#TIS=(=y8 zfrvJRx+|&a{d)Vu^%t=-mO-ptfo{>SxZJ#_PU>tTh7Jwf_ zYdN|eK1sBV@8;>Xn!Hn23~=IzW4mzU3XDae1^caXX)5!Mm~Ed`&<1xOcmB**_#~ zJlE+2cun>6Aj7`j?D%w0$h^th9Z!_7K}^J$~iqj#yz|ep=g9UyUtd`lo13e@ z8?D6a{wE2<%3Xg)eTb#Eyl`)R-|^;x%%g~MlLyqj#PXk;g|2i=VJA}X=>V! z-mbZ!vqAc%Bf?V3^zsv16~V4|2R1HxnYpsxVm zb6oRVGujH?)_Hebm0m}=qE7)$&KOm^UT_VkY*AohsfR?LN3GldZH`Ob{UiR|tyyMP zGGVJBY4n4p&vm#GaacbTcWGLq@lrf(ofn+JurACoXnG?Tl-qTy2}n;E!MhvikFFU% z*dMgzyWvWldC!m+HDB`ClqBT^JN`=4o^j^v1ep-gj|@a`B*ZkuE9XRoGjqK);H6c? z{_dS;C9mKU7gcKugXwp&cjR`I*Ikpbfv??_$!hkWO@Is^_%Qjg9Xc7hKIvRCBPLKU z*~RkbfB}*_!12IC3_xA=e-;A4IbiH0#jBIWpG|B+ru9;qHH9=n8HEVs%WLKJVCIhh zq-6c*${F>BS}PIGnrT2R@`<+${0(khF;k)Wo-KR=uFv>~8?&`d>srjHH$}UiFf@?K zSZn)qi*6nMhJ9lCr+(Hk{bRfvA`XrZ_nsP8LyJ@2qyKG!1)xB-k(R@=e8TjoVTax6 z9Ck=!mEFGz^UcZlSt;7Mb(zvf=`z2N!{13gj(+gqL55r}6Dcmapd{kK4Ik!hY1na8*vBDgjP-}_hRJ~l%s<^ADVF?@3fS+#=~Ww z*gBo6h};8eOQ3raENi?`+L>hpgEw9MjThBiH7p`M+9iAD$;BW7aW)WvN+m)wJqVT! zn~)7zpN&{RCG-Tnw<)1HSt{J`+}5zEM}~(0*FGL06!fbNFw14!|E#O4S2D)eK*`w`ua2hI1g8 zafrFuk?+cgTI`kaxC;|Ca-u$n7neISqdk&HcUAOC`(OgJka$BWll`k>W47>cDasd3 zjL{XSeg*G8Y%wid9e5(h6;6AFUawG0I-zi1hI1$DS3k(lSy6Er?uF;z(@x}&Q-GQ_ z2c4Z_0V8a>(iySoCs;|}^QOt|M)cRl5E zs+#O|WppwSN51o~Yr7hIcQedN-$NW#s=}Mw8o*d#tdJ4XbxG)$Eo9NUC@G$4`c{IV zzB!v^s425g#EzY?CQd_3{nR@gN)nyMTN{(gd93G*%06bSnQo|gICX!_s8q(olhY*Q zf>FjR>&kAO(AcLhgV`mC+zlz&k}Hb>Gc}|^XMz!J{VI?DDhE>=(f5x%*cW%e2X){T z3>bK2c4MD1_kuU{!e7}R2|w@@MEX-U5_iC#Qi$3F+78a*>m&&+?udpx^1&LzL!ye& zr%qFeSJ*&;uAwQWKZQy0@hI($IZUZY3#>y+lzhW;qBtz>zPUed&y~G8czCuFBU%4~ zttLT!32 zRK(4j9MKGajwhvFmKlw67FEh;FAP4J#2mPtS2!pysQ*M1Ph|;R`L$0-;QL$m8hD#d zScGj1n}gjfZRx32w$FMvaCrEg!uII*2Vsz=i?2}?(yVF|hnKmSy8)E$3%T}==GuL| z=aI>4%^=frIlR3`I78BL7nl6Vra#5~w+H@3SN|_?^q-Y8^f4#y@z2p?X*0+#;onz3 z&otek9--&4;!aGZrN@UT6gy1R4S>v~ZDKoaErcJ{(jWLCiSpwr!b?VBWMCg$m@cp1 zssT4HD%e5Pcm!uIj+SHi;4B)!kHZ`}ckGqF)mkuSJ9=xi0Nbq11LfHU{Bp^zL0LcO zq{ZWMg?o?M5f){=@s4tXx64X^@Vjd0yX2v|Hg3|BtbEitZ$e)_r56V|9{_ZQJVDPCB;De{9>fZQHhOcI=zJXYaGm-gk^M z?!&68hxs^Xtyy3F);A%>*ljR*D{?vk&S#9DJz_sgk?hHKc$InJT}3A{_#bbGCnY2m zij?a&j~P(X)RW@N8pSH9apDzR^?t8L{K&=^$!Q81gGe@lY z2LsXGHhlsw#PzOj+WuWR_>vGM$N1$mu;(Aj337AxPgTQHF`)(ffc3)`5 z$2Ffhb!)c=30Rf9T+``>5pSDT!n#AW+0z)%hMCN51=|H9<}^gA9_uj6$BsKKQz%Eg ziYZNDpWVA8(K*I4f~%4K+E#)9T*i^bU-n-}b*75<)?It|o`0;PPSKpplwl&*g%J>x zW13eNgylNZE5kKnC=SZ4C#%5G2`oWd8=5j?tcc%W3X)!xyxTzgJ{iI~Jwdj-kh7*H z{?#b!OfE``RHPD#${*R+=`7f^$X>8kI!tnPAgi=A2_`0L1@4l#P+}zn$Tsrg>`>|{ z)pq0<{{Hr%3cN)=_0ILNI#!^GQR91f$t(r=NMlNOwCxGOm)EM z8c;9dxVz}1o&wRye(GTcWV2dH?WPEBqf6bm!44}aMLtAj7BoaYtkGB*lw87Ft@Fds z7%_p`@!Is*Z>1-e{7|G9(HiLT=0p#rWDW&d8z5=P?0n>$x<;$Ng_rO5cw@B0aH!Fp z7%abdc^d$EmsntEJ=zzlRV$p6IjE(g>ve~i8($iaeuIkCBlD^SoVA3fB(*-{eD}B^ zaPL{?>|FvGax)*4BE1DN7=8}R<(gTZ52wG76qOBm;@PJLt@X&dx09IO zJ-aBEf3j!MGXbKoEypxAE$Ga$4J}o>lj5tUl`{A08gw5{L1||aM+F6<)xYm=1vfO= zO3%vK0?+aNfwF(sRFeXNU=RT?yXQ2!vR(?inb{gGJ@dbZ*uF6SX&-y)H}}&&fPnN# z{s&$6-%LJufPmtKuE^tmB_jQDax}A~`v>CvF9zis!255Z>fe4Kl>Y(&|8JnMk+GSz znWLGFwUVj5k)ENlwW6M}5v_rxo`XYUyoD@^0BX>7ZXwM&c!3Ywfr1=01{RB{6g{yH z{g4tp#h<)aL$fK4|)qVmNV2dy4&LC1-=^DoC+$F5CeW3^$FUD zTx*=)c<#k(aosFBFvYl6l5UAspWS1_OflAB+daAVbjHH&B2|GA^Sh4eI9nA$%6Qdi zl1!g4R#B+a1b{KYkg_WT9wptihaOF9!B`)np0ue)ntOmKXb516(O(QGRM6V-DDdm9 zAw)yoyGF7JJU;P@ke}bv)}Yf-kP5Q<%WK0o+IFdWB0*h;0By-~-Ni1_{|$^L zg+f$)%|EtAieF@~{DxV2@Hzs(y@9z+K20$q)uEu0y|C;vh1fMF-5uhe9#@JcMP+>@ z_wFb$%c88cm5FDVG5oj>MdxaDzR3Urv#yeeh})gpDBh}n|Rg5YzATB7REf)bt{ zosaPeMD;Jd*KK6BH9&xXOu+w7Y43mLtm^+gXa6f>D-*12=2cLKzt|-9S)EQ%qH*PZ zug4Ub!TY1Dxf$m`7akHofpxUmS>rT^TCK_yd--;57q6@nSP85ZT=L+<+;%su8_QLK zOD9!Nf4pTmct33zbbs9(Zv$2Bcmwy71F%x4e)<0eiu$9YnFvxD=uM6OXE#rU_F-R> zMrUaZjfWabjn!89*Ye*B8ee-SMQh1&6b_p4N3C`gu(3$$55|TpiZx%ye9B@fkQbb& zbKz#Ns6^!EBuBOi4OI54p|K5Eh|X)4gdW>PyG4y+ZPi`}bsKps1F%(h0#LDOMF0Z^ zOQu|oN@Hge$>qrH#*Ah(_30adUc#b^{Je#l_s%LMTxE^oHUk^TDI3b!^8QGF7D>mZ&RPs~l zw(qKwZ~gCfSzNycxjRnZN<7ZB-34zEjRh#uA$nRlPD_lFhh^!AKT3!VUHxXh-ib@I zJz=3ZEoOV@Rj?7S+2}(9Z0uHhtXC;5;T|BeUr+rQt{;sIr^g;uTd$k$BLJTDSsg$8 zg7ulkpW9pFeLe3s<)z9m!MqUpQnp^KQ=Gn@8N+`dDzgt*de6C;OhMxDA~KOPb~A%rt#+s% zM!$^7J+bCzwU7(%_gN88g;tZl@{wFYx+zJTZ>OnQyBx*8m2tI6@Kk{27No z$?d2WtLaxkwpE~NdltfZh8fyDe%3RTgv7!bGS2}OACG3yfAsBe@P>CvCDI1D=PW5W z5Cmcy9e%+(h3*@jNlLX(G)qQwPaLQklsMd0g}2KMqW;!o(n?(I^@!g?+fQo0LHbvs z>^;i#zd?b3L?MBI>gQC}5HS9?`_zBiSOovGNJ$KAtZZ$pjjSF2FWb zgQLBkf#ZMeN#c6ehL-=i8!3!i&-0`5#J9My`$CA1*C)uKn^7^O_dx^<oYZxjS4pnr`f$~E184q_d?#thj2M-po0a%W1n^%oozT&T}5YacY&_-6X8>}%m)Mm z+Ig?^@}u6IEE%6;f0im8{w{`FhE%j8bfunSz&{c#+&6)1Jiht@@7MU6zP>boxNeLh z?my!%{A-&8Hs|?6fEqUgLBx|f!v3Y>wr=9DoMhIBXC6@& z7VdA0)=Y4W-IWkaK^}=B#nhvBqdyKpfFCxrBpqmGsFH-6Kga8&P?}%Y4{OxG34eGJ zTk;6h)9jr3vC!h4K3*U`Oa%Pp=SYa`4h3BFtefr#;IJ&5pETb7(1gSP+U~>R1ay-m zMqrhBiMcz3GHNK2MkHda#*2tGIr8X4BX|TNWJXPu7L|zFflAl$8bOxKfWBwa{o!gq zF3C_(5eUCfR)Rg(OMK-rRcz96-iKL~7e+`#FbK%?IY_y4Dd`Tr)5 zfT6jxo};~)>wokxN}B(An9rhiBR%aOVLlr29YBR3R2bDFgbZmhsIEPd0mWwR4dF)L zjSRBaQ!u8k=dD2Gkmg=G-6s?vBsAHkxNu`HKlLJm$zS;T>8zf~=8ikY; z0H=m~(qqWI3PGDHuHQF+`mM7;)I-qXv=Gh^NTy3N!fcR%ti8VG`P@9uG)=Z<;Y`Aw zqz=|XGB0zL1Yx7qWk^*HM z<#V->VFi9=4@tpk)!X8-jjRbGIDnLY?Yfq}S@%-~N*80^_B>e-&NzspQr6LwJDC{y zYd0Bgkl|cI+l27zk^*Xktu3VieB(BQ2W$yDIml!AmTLY8B7P<1-8N1sWe(BWCmJ?g{LGZ*?qsPBHoi&kJugn;G<&rGff4P zh;<>KAVQHE{_(F4j**Do0k_bX(A=Iyp~(R6i0&g&Z6tOHbswY#gM@Q98G{G|RMsK1 zTzI5`Mc24!0U^QT5-Yt;p*|am&Eb5&v@}a zo)P2m9+3f;ny`PA4ii78I$e%rNaKg4jKxK1#zJ5S7(o2!d4VE-GlNO}2oYZ%osedv zpNM2a0oz6#XfC&)2?-l>j%->IRMp|FX{WJpYTUeR(p;~!Zbt4|b8236acitO8xadGG?OK9Jj>`*65L7>lvBepb4?${ zeeBS5DmkS>)E6&dDE|ikT5&! z(!#a;i}F^nD$?ra32|oZ+mP5lR0%~B>Z1j<8LG9$P#BTt*L$BSx1iVdDuhTHgLSyL z#>`oJJSgJtDWr+WsCE&#%1Nd$eCp6lhyQ9YV}#yL+8=-4XIv8QVH&yrAB^~r^=P&b;jq#_0-w2Jd$ z(I%Wy#XIX|&sz44f}XMi)}@52C&^DIO3;pd`!!U3rW#mp7YLD@g2U2C1jBaXG*JOV z;XLS2X!DAkWTI&$ENS9JM<#u>^yp()9QEAho7{c$=>T>F>;my!x`2CIkoos3QNcU5qR8JtGBf8Kwo=( zh_^%-pJ;r}yH@W3{=I?Od)r#iSX%@wZ-KF}*L%YiChax#Sh9ioKUrztxxBCXa9frF zmG|rruMX$mc5|;%M6t+F7Ma2i#)&HX&=oFJU~Zd8VIDcM zB1+Pb?6Dfe)yg7gkbmVv~|Q8H5vhOW=0GJ;*T`ABVP5RLu>Mn^-W zVGD4EO+O-GcSk8DpRb)6$sK9a5G`iUbt9zs_5cYMvb1Lc5IkZqXb5H2q7tbF=x6#- z+Jaj2IG>Bd7-&(+hVb9OsmyY+9%=SzARjRj;l-#CS+r*e{4yI-!w=u_`xLccSj)3R zz`9F=6WTC@RRL$ue9bBR87cv*i5Xe2wu;4Oc=^X{Xx`Y5M?P7lmGT#(WQkFv%4jk7 zG6``dS_=UvKut$d=t!?-aN>qBe>vX@y1rgWru7E@8GM_3HYDmvYbDYe+cQajxz;lf-?5Ms?Nwj(O|~aRxODAJ!YIm|EUhPbQoe=O_bCN7(8~bH zs9$1foSH}K?5V^7Q-dDekC9hgY@x@SvKQ@_i6r4qfK9LSEln3k8}F94!}KTaJEf<6 zi)2TD(Zd$x(uK!2&yJzHS?_$lC6>K?cYtfwHk_s2ahzK1%y;wW>2bY{ZM(zp`gPI6 zy1mn5GHG-D`m}3*u=B}AKW>w*YV~cyp}l##(dJI^n(wbqly3VC-!r`4RLv5;miK)Y zFIGDS;HmTY8R1f7!R|Fk!B|)HT<4I=D5IpDH?S3w^57ZHlBr@{8+9zpZvQQLtZibf zwGvF%dNqOKzU9CU8cVdHvU3m>!)vvrja#4Du56TsKA0$N^QeT^!nlcU$qJDKhh2gg zaal$~3!ww+Rf{HIz}4KBU3p;B(}~Pv6zH`MP|z18M`&i)!9XI*z%G88tj%B>f}_Ei zL{=%SBlaQhl{*E^+ze>Aj&hd@kbig*6+6veCGhy2#OOKtrc| z(x?tFZo-uHpe|*=T10kXW_e*Pp2pr>v(x(=TXf8dPX#9;Klv!0=%b`r7F`t>#cTyRP3>2Ygh}7)FlDCBLs< zX&UF^Q9Xm;dTXqAsZ8UWCGVw#N*n|4dO^+<5Q=3W)5#5&b52Z+uMT=l_z&tEjEisd z0m)s3e=xu%m-s}f82vRePW)^peFRd6a>KQ^9=Oxbs^ z>3Olw5ns$7#nUgSrvHA)((uU9@n$8pZ&t+Fn|2!bFF9 zldN&BCb;3<{3GvZ#1HbGjERLgnO@K6URWKf8{2%lhTfgP!^ng^aqaR z5B20AnE62JLI4&szLO)zni+7?tf1o@T1z1MK0zBYju~{@N%)G0>aH{lz%CZ&h>OP$ zaij;>oFs8=WLWjl>>XWI2q{gFAx*$8O`4QN5wg2qN4lI`;7K8_ONzqXkMk5&0MYG{s4dF<#9btpBh24A&g}-mqAU*vmVJ)LHTq7E0KIqe)eCyE1thRyH&QKv zYFGaQT@Tts0?7hv00T=EFwrJ6q)TrDZQ=2ajYAbOC$XFox0+VST zXgAaua;+bDm>N)gzf0ClkC}RX?O$2)Dtx66)JVCoG{TGsxv;_*3VL$M)uzfzE55FO zm>|HD#edD9p5h>3B@^sQ=doE~^(42Fug}E=ipkoR=neWbc~fFM`Yh z<~@f_Z-VjSwYB-udsdNgdUr+X>eUk~%elAid=ZSMNblN%WB1BK+b}&tw2r!&7b~*$ zMc-+5pD3usnZ)^zc@Gv|Pp5)gSC3#l=30QPBE}NOD;=N#FN(Lq-;JSt?U&{1KTbXK zp-!s~_^sk{E|mbFrf9{PAdbx@D7gN>RvP!Nfxm zq7E&c4Zsk_mU$Pa%`is;gnS$5`KioBLHiBfrZo1Z5HKwW@HsO+ ztY*f7`~hCdojyI5ho=PM~Hcr2rUgsG{b5YQ z1Osz(V$uy?rlGXgy>{8cO^>b2x`R-w`a7nfS=0F+doAoFx|E0UnZeZ2eQr!o^Wo)~ zI(BZ+O-T9Lf55^W9{%iwJO;W5TO8x}Rsm?PdP|V3I{2uTqbx5)|00pNr}YDJal;Rh z_H;1jH)GA{k|B5fqPHvAyk8#~H`A|D;5M!~VKzHKR*{jk5zDdcp_Gdh8Gngjct5YQ z5k2J3MrcL51T`mT7B{}9-s>~LA38s|VJz=Z z>#)M~HSYfpmv6^U^DSMtj&LpBR_N&yo{V zzcMFj{5Y3OELxX6Y{6;n$)6m(F~5bYp5&iPYpfgpI%zgNm>%KCmM?j16nKF^-VhXHO>tX%KIpL^Rd zs*_!qn-mMN5a(=vw*J4<--vqH?mtAG?;BBv`iH37VE#kYTd+>bD|$ghks_|%J(L+j z2$aGf3Ve-&KQ)wj0K^)1-l}B?2bsR5cU$CQ($Byx?sA-3DkYq0DkZ$`eSFwhShg1j z+|Kr&d|4UEh)y+GH^<(bSIsiR2I?VT) z#&mpR2^ydKM$|pqJgh%3%;=`9EtkS@+T|#R2f2}3q%4{NoSWFUg{9MpcT6c;@k0|a zDGoSnXtGZXcF;_TOb)Rp#We-ArrfiEvmnC``CySOE>)J36De0zSvorMYVxEUu#_9E z8HaxHc5(4$ul7lrm3Y~v7YS^S&X(8*)!i9z#f<1Who})MG9rbH2=NKGY6VJrltv&| zDrI)r_MCVC74w@4dk9u4lv`XQMjgeefu}?YSJ~7s#DscVxl~#%`g1wIH(Qji_P}jj z-TuIq>|Fa@e<_!MT*v=d-G<_cGoWzaW|6w{n@9?bn@H~j^SHfYr&l5P-M#*GT#VTG zd)0<6hSZO{1VI}m19UeeL1PDWKPLQ&A(QzJgcBZArN4k42&;yeLym__l3Py60M=a#lk>GP0D@=9I_ul|L;jU|Oh-1V^B;>y z^+VQW8fq5Rp`Aek6EOr-Q}96xNn8Ay^b2+L=+G&*u92;Tn5?O!YMQ}*lcM#zx_SdB zRQs_tUu8w$@UUsBX}(}8*k(bR=psh}Z&SEPh{Acs+BG~WayTrZ_EJ-F#5G~11C0D) zgqVJmfL(quYU3aj@6(7k9O(rEQFi%YRm$C$Tb4uUSd#>bo=DJ`xr3tAG4eH%DncSczydu|&zGc_H7FtOOl0UY^p8mKO|$M9^EksZOmc7~j2Z&WQ?b03R3n{wUHwYw z`*-L3a=|6w)(AHoRS1bOYKq`9{6O0~%e8_LqfjFt4KIch=H9RLb+D`{>`_Cr7HFtI zMz#;UfDx-(r5Xek0y5XEfj~180;w}o9v^cD#i`UQ<2t_)FOAWF$7!34Sw*nuVHZ+K zuMKE5&Q-$;2R)ZeUZRJuSM^nshl5JP1f(q^N2CHX6nJZJ9Pz&$%r1FkQTjwX2zhP!1w2v2^Ca^NsDz@X9e@QB@lOt*`R>sF*S|=*6 z&usmbU~d>j(K4lOR28Tw->pHJrW^{(Qv|$i7^X{R+&poC_zTzybbjRs0ZetN3xG9c z19aad_vF!MT4`0gGH8Ic=8m-)%yL{{%UG(*j+g^CKL{%JAu*RTfn9ZPbA|#Q4*6TX zSi^eE>|k?u^_CPfIOteo%O-B4{281<3&(ok=;){2dx#W-6wVOYMciSV7 zh+M)f;|g|sm~15z<~Y)Tgy97c5J0AynZ&Sxtr;_3MnpZni184et}@jx#9mBscK3%4 z`y~r4NL?BsZmkc+FmZ}m4!1VJ=b{1f zzEy!VCy$I~DlK;<5tQ>WX;JwUch4^)Zs62+vketVl)8GsG3iJCNQ_fY8UUTB``im> zm(D(pqfVbBi%!v*3a<&BI1}@$rlSPdYxg^Y&~0IpV#w&T_lg zeC;MqG_RY>bQMkK+ZAWq-RD+idepa%wcFe3R=ab!LDQKh3Qz7lO%3bzM9|PACuEDr zFog|x$*2ZB%ce%F$v#i_7NDm7cz1J{_2-$_3+Y|SL%5?6r`_-!LedJ{~&ofY4 z)b}UCot(?{=T+8Q)03rJiOKao59Bg|i-F$7aOFmkVua6HURLn(6K_}X@y=^j745|3 z=8NSt)6>(1d!EUMjHHaI%fXIwCNkdgR^t#;5@7bO9djLk!0MHx`BP}&n+b8U#AxL$}RI@FdnfNg~SxmU&)y^Vk9Qw$|yCPWgkOeqP z^DZVk7qY|v62z=KiG*iKxDDMw^^Tnw!H3i_*GoBP^?p0EPW2r`m*&0)*dH7QpxZweMp(!2f+kz+Ae*bx>U-9i(p+6)m-_@thJg6KVBqv&#R* zgEHyBoT=$K6n2Y7Oz3<{V3IU0WYV73pL}$d5GS3#2Ezp*bWcRc$Boc)eu+AV@iL)7 zws+HKy8Jc3=1$sbX4M;ltAMPU;3Op3%|FmyKo8$A*Cs{xo_%sHdRJkRFUREefk)3g zhyX?gJFu%R|52#d`NZHKc;ZdpA1nvcr4~bk;A!>>Y3ozSn<%&3t{Hf*_`f ze$N#cOzl)DpXdke7e$;4FFqf7>oB zf^+P|hLB`_d@*K1wgTO}hkTV%;3|=*yY@qQb8X;Q!vi!Ibfb&J(Kr6_l<{D$b&eT7 zMh*ZoRQ$UFSxo{u>X>AE`7}$wXFjlJ9EVMdD_$_qE+0N}3ZaFFg5)NB#x0zA%~Zv_ z7dPldn-wp+pHqHSikMQLmGTjg^lxS6_^3SimhSK@wmz$Nzwlhl1;ku2;m5_e}CL z6tV130$nvb_&7PZ1p%th530ECe z!T8~Hb`EwWHUy&vq5*AIu+6*`4t`D;tBebfhtj}-cr6oxz{I`*uqn!U@SGPJWftzo zSA>%BF&RlGOz)a3n|qP0l03oeP+UhjU7J;j?q!dE&vD}KWB9(&JiZ-oaA&7)H0dr~`b zC6)0YTn4$s*Up@)-tc6dmLu zt_m37548{0MdL3YXE`z*WeVqyrDX7^;=QJ1u$Sfha*wa_?;iC%itA>WDfu}7nL+&V z&`QvnlRh-Yb4JYJNAqY6K2-&WN+OfYIBTl?xehr48wrI;^WtsEtW=Vl)|%!})b{wB zh?3GdB=f)u^6MZ&bQB2gGEf#{Ykc&1GoVIA-NZl2zhNLD&} z`HL`97%@34VTG+&IDG6DOj|xdcYA2ik4xr#=-@ni&*qEa(>UiVSZ6{u*}*-1^r?alQZ@!1~LeasJ05XLeUkY*!BTS;?Q(flr^cYXhq5$P$KnbRz$W*7M+i`ulNyqtnZ$87a>iWanxU zNXNIbOo-P_BfJ(Lkgsj386TF@W}ODfn5C<`Cea9aLRl1Kk3*_Bj`n*ix11`oP>>NQ zqZuKl9P)s(R1fFW==)5R#!k+;bB1d(wa4R0#43s4o`XxqiFACt$Tng>h33wu82?hV zUm0G$8&pEzjvr}&E+%kFk3w@_Y~C{U2yf=l4DVq~_)d)sfPEm;j&`lud}d;4&41}~ ztXD@vKpUunNJLg;Jlzy&IHGW4+BD;@5F5Act)2aQs8$JXu^py;48rP=rVl*xYF;{e zpW*Vt>hx;@1I}2yC~902JcFcp6N&w}SF64l#>L6+bvx74X(u1-!Ki}dSNqG?(B`(% z)1bM!j|TB2!20~K>olkfosX_gfrHNw7Qa4A%?i}dEhw<2Ia=Yx@{o+pG1of+4;IFJ z%;~^cqcPW3EK&!evn_=Uosbky92Q8GE+jumDaRc$yFDdiRKms~02#|?wWU9L>>XH~ zbd}&M(b<OthpmW(B!)4Y9{&4GDGLT`clPzR0 zr`ts$wag>gac+*dm%VfRV#!Foa{O}XFw@ZhW7DwG(E$TX#n{R_7z7e38MnNj`YtWA zL9nwx!i%v_{do$$0#$)6#^py5pD>G@2Q+Gw(2J8CS1LV$7iE2g>M)cF3kOzctF>Z6 zyuXtQ!0+eY%nCvFz7;IDKbydfqqu7pT6$?p1zmkFa~*YPAp{30K~a>Ey`M^Rw$R>JX`E9>UW*pE&rc^|@gXU2FWtcj_d)6?S+jt{_I z(WdD*B_zrZA&WGb-{+M@O?5o*&Xw<06LY5QfIbR}T{p@Yg#337`}?<(Hz2N#Xe4}~ zyl$z(Gd-X-w81@i$=|V)A{|ox&Im7D(KL$1UPBpa3D9QsT?-yOesHUbdZXy#nKYMe z)1mc+pne(tk}&hdXu;?F)YAn<4Z85oXvMlp5d1_#D9ZYW4hksebk_!Ao^Kart&5^Iq{V-T1b zlR+|7+OAl;r(oq`e1K1ee7?Q=z8~wMCDGl=@o}^@3!n{nhh#a!e^CyUJyLZ=ye7nt zuKCeNL=h}@Yl>&EJax#p?U3p&|nTkx>3mRS8gR08p_|#4$qk-r8`6)`Y43 zwIFDtCM4cIm!6c~#J}D^prlahmuwwJLLIOv<-9NVaYpz33z^CLugZgBBMn-n-TNK} zAhN8UT2K?~zDIXYjp~cia<1$r==S`7NRYqr-$)Sp;~*fH$z@6ESc14 zsA3q<6Kdu1cdE`hp&}!e>E5mX0bP4|iO#5)QL$Bo32^;FLD-*U<(3Z;ydO!!a`k2m zCTJl1tA@*J)wrlFgNaHtQY$n|ZEX~%5G!AQ^rMaGfJP0BOZ}YqT0QEL^DfIeVZ18K zMapaS9zDZPr;6Qe-pQ#sZJjC^9B}e>AfHV-Hemjv!6=gBH z`WpgIv);zqTI<&ZEvAtS^@LmUXmL#8DF)lK8UUnBoiSN@eLq&Csu=OrCI9!Vp6$@&Q zK5%)C9-at1Yz;HDzJw5TL0hBU1h!?&>iAdw4S1bwdgRkslr-lt@L3b zH=thM72$aEZ_UqAie>lhdvH1QB>xjW$HU(1ieU*BH3JYdKlE=W?u*M#>(h<@w?E^q|=o&hD#nC*jPD@445dasBJ zwD}m*pk2yTv^46hK12;%ElX36i_`8W<&F0sUUv7DYy}Qv27RGiP+NaN4MCAkQ32U6 zB8?h7?z0+kU|t_wq|hv+FMF{Pard}`3|&TX-67JuoMiD81k^F4Vo1KzcA-IpH(U#& zh81RLvr>#p6GrsJ?Y!9YDzz5yG{6~;dX9lju7shFwjPFP?KZqEof0<$pHo7ff!4Py z?t^UNVKxke*80CagDv(vCc^OFn*d_ac^G6NHzHe7$ag@MKSaeJ?Oyv+^o!yf2#MW( z6uVN6W@|#ar^zyb0Eo(V3g6(+U9n8eLjuQyvaMNju{sI*S&y25>H(BKq$g`E!kGIstZ|)#cxX zl{ZDBTl|6TF#Pq=4EFHm_Dl>1v3s|NoNmiydzg3OZD;&>F9axULsT#g-hqN7guu)i zVv3N48j-fC3IxrWRhLZ>s{cZKfeN6T*hSrEJU;w*hO~mw81yo9N&{TF78ir7kzLYuHUq$BTd7{{r-b?lruMWx*g4#I0-gibl&mXl0-Bzf$d zkxX|=)$lgaGqGcd>&1L)hcuH7R(09<)~RD~bomb6THLeV-^Tt%C3XP~+s0wW0-U9ce_Sbw+xf;?cQOj+;6Cv(+u|sU3shM_EK;L7km4(fU2<8&jzJ& zljKjUrp^;o>J!YZ&YpYjLa2hiyeo1tjR<4r{yYi;;2GUE) zKOz(4lhY=%*)os~TN4W&eEeu}sybD-c}^9-e?X_}Pk-J_#h>L?p8SX0n(DFbi)acJ z^FWTG`8k&9`${MgPgp^3((%7Aq?*5!y2DCGViY7N@PRyfUz5ZKFd`BqOd2e65f4My zFv|te99N2;{XbU#%tfK#Vld5IG=br@c5WrW!bd8;foVxcoVtdw&9plxfq`e8zJpsK zx@X2j`=^O@GZl>wT{ZOJ_LjAzfCRHod8fsTaF#&qvA&>%u{;{5TYZB89BaySqHF9J zCJU<-9Ltn&vYr0E7qdfnyp%c%gRNKP#jTn=SpgfI4CEa^d=4D(L)3Ez{GnNc70nN% z``_SwQZ@^!@YoyPjDUkQVQyK;i+fo+rU1)whoU=7PzOU*1!PG?1Cn`NhKy)N34HS6txbJL%Ww zsN1YMtjWa*QvMuM=4M-Th+>|zZ?hH<$Vz?wQ+Q@0i#D4_lz!4*V28G2YF zG-a+!e5BdVUlT~8H#t5Sf0XJF=m2-~_A6xq0x+Oz6EO!rhtXFG1qv$ztgK8yHCAeT z;o}8~_raWs6zaOHM_=7L4|a_O@z-|F{N5qs5u2~zwqFVqPT8>zYL#u&QI!1vu`ksY z)1o2-5Rhhd`Ad0|bd_0f`Y{c;CPM>~A;7H4in+C5Ccas6e`;??Y~^}_baf5|n-WwwT=Zl= z90F^o@)c6e(a=_3aReEs0;-%r<31B1s5G?+IN)vMWym1N)SR0uzHRO?K&4$wzET^n zki^q}*$SG%mOv8ewM#{YG{0pteYY}YgLfDm3+&{!w>z%Uls}5295BJ3 z@AY`yR@GrinxpLVWAY6#Uk`NhU;<+N$y8L<6-+oA?ac%YD+r6jCw#F1V#mWT?NIPe z-hSB&&mNq7gIvs8rFTy+W<{`{#qtyvWglI`>&@KD&YMw9pv_HIt*7(nY@T(ysgE@0 z>-Zgy^Tn(H`)L*{*{zMPw=-G1_S}ys3&bl6p67R=OI1D+&h^4OT6d9R96%1#)?_92 z^{g8mU;bTvM|A0s8a>0NTC3Gv5uc@Jh1I%Zwl(+6=ST3`_4=IiwSyHTp7naeZM-(( zr_opB31`c7Y*Xdi+S7$a`)6-cdUMldN2k@7`@p0c=G(0|Z_d2R8U%Hd)%uM0TU65r z&f4SE;Kt)Hp1H?PP!rj;Ibi)JMS!e@tK~}|(>iI_TJel1K20#c_Pv<0voV` zToI?QZ#trnpImu+?sBK_Z-+U({H=|!7nQ4{b*$*q%H)MeibP+2HJfcz-I2XhOg&3} zK!GlszeAcm6ZI`X*i3K{K@4jwBj1TQeMaytpQ5i7&6n%jU+)hBkhwi+hFn5E^XKsk z_nBU`j`<`{uNe>M0Pm`qUqb*$ei^F)%B5Gt%&*a};1b1Sz->2@``NdXbm<*|x7hwy zNGPuJt!m8TGOh5;h91FYA9}cPtsnt%s90CLyf(K{NAi*s-gx~}V?iSqLgZqP=|DKcF z`|f+aX3ehZwf9$5-BsOPy{o_d9*b?#zi%Hm#7zJjpGR84HvGmHF8|sFJybrMO`C|D z6Ejb`tDEFLY`5ih{N}?mQO1?K!@)>Tdv6Ha9Wecp)e!Nz^>cyyhQKk3(=6!1%>F2{ zQKGVa?7C47_69HKoVbJ&gA8@oIgZr~LynTz;)V*QWg%@csZ7Pa%z&gW%C7T~=c-r? z7Zsh2|Cd4r`#g*I3+jsUz5#o->fAn?(RnBB7h2S5W!yn7BUXmBAR9G+^_63O&Q*5R zC!oE;Rklt^LM;_-23Oc(vXYrpnGR`+>Hw{(Z9#6Fz#VOMG-f1T}ozegBqpZbkHAw3~mWdIWiKh>0o^zN}bMwXC`1AmJ+6gs=n>-J=2&6ucP{caH zTxg-71u4=h!Y34UW#>RsIXJ*5MKAdkuT{vzV79)1XN=z;QUl=`;CwEn6)5pV&tZ5g zUfefF%f%3|)6fNx?flbKLknS}$Pa)uRVI8nORF*C;Nr>_s;jhF=oLT8`JYNI#sei>PqM{YSH+*PpfIpBcZ*wa+rk zMR<80oeSGH&Fv|d9UK7w9mL*DVa*Y5N%AaAN2yK=T0w~!%KR(r({u+19o2 zL?uIt(?Qb4LV?=thsb2tX`G z4H)yUG{p&qnTxWgaWg=;nF{rB8#HEa&}Uiur%AEX=6U^21KJSuQ&;PWG$XPfBSYd(*&xtQ*E$;x(Pn6M;8Pf~6w6=4((z zAsF?+wZR9uCR))~Vi!l+#4k$};OHmfYSfpxG&?k}nelL{^Q2IZ6p>2i-lk%$U$29;EjqLbJwPSAn#aU@7A4lNz6(srZ&MnzqI z%_#T#!M6MbNM=!lu(ju%RB+cpIzyV9d)>~s=ERl@zWLr%g5CgTxx#_qzvdgyqqAeVL{i~NgHKa(4nxN3uiffxSl=+r@V zU}#>^QW2nH?bDU$Tl4hiE228@;)NC(FpN@V&X5&`qa(QcmqZ7u?J9{zPn}fN}7aUhU5x)rekWvqB*&A z{bpOhC$;A2MSVIT$9F{Hg43cpduhu58v3$*4LkJ{l>3oaF9+9LKU?P7oA1tmPyBg? zS*}ep4#5b<$gCuhK7}Jf(s(?A_f)VJ^$bIP%E8tuwc!bcuY%(YF5jHwwHwL0=IAop3>AdxIl6FFiz-@> zO)Yh&V_`Qs#eKA?t!5>|)*6g4(!vb!S9Jk(tvQ9w%yMq%t)17G+vYq)%?7?m;60I+ zc-Ex2iYQhCJw3Z(hY{+Au7e(SvG*Ls%CA$l{jQAW4c1U zzq!AMB3n3OHil;@DPN*VR%7B(b|ECarxHm0n6R8zQ3u`->`+>LoIQZo1vQ9clZ*g( z0{P)2*eo~bLg8&!{-MvK)~E17H*9`)e2$-*;ku4_RYKe|#*EsD7dk;lB*ypO`1uwk z3yz?rZYZknIXXNso8Fwt+JKR3;j`wUpj+Un`8k+KLavcu&_iZ5KO!_VMv@YFHD$0{ zv_=k%4sC5_I3hD|qXkaus{LeJYUBdM+S8IwXtmE)s_*d%#>yX_t0DHU5FrWp=?-%~ z8;7Yv_M=)uwa-!t{O*o7AL#RC#EbYYatjmf$N3>$xg%jpw>Tz#AS0QkR`Hys zdBt*$9o$y(8`63Hk#u`V7Mir|N_5g=h=h1mbg@3&bY{t8At?p5Ta4=78&_<(}5L$zNI%a=CS?+X=kve8#b;$I6!?yM_ zx@Tgt$ZHf*nOHw={}YhE;`Cs4v`4r(f~q*N6M7%nGfQVEYlRSJJcq*%Tve3iw@pqa z!O%SzPzHSGKj8}6w@re-U@gCuM7+kDfV#Gi3ClMQata;)j-CWFM-8yZCXK)^?R=oZ zIsK^$k`2mkM9g!7DmXd9=3jvIy~ZrfQ+-)ECYLS`sFkO8TQaUXFtYPSH^JgBv(FVy z*wm|%*ZMb0gA7yfx^V{2g`Jn|obt#Jm!hsGcCgoP zZLnpsZZic2xYX2wvVdfcA00}#)agk{TB+rz&)^;d>m|fm6M;I@p9fkH%Df$A-I;H6o(f~r&u9T?E<50ei=qC}xOfDK>Q zP(4=@J&-n+u_zbAFa}#<9x_99k+7^0QwJeNU&VKIz0TOxpPgAzs+-F|sQR!8yI=&mpWe z>hcyXie&M5o?f6%Uu+exw@zQ&T1qzv?esd{+{||;EZ*EI!#fmNnX^?q0$I5-PIx@J z%6~9o6?8DEYz(`{co?0~&W(5&lkNj&8srMKl5A~J5VFE`JtrnIgup^PGkK8hDrd}A z!r3x`q{yxTEzap{e?4Ta&KZ;Xa;FEgcE-=l3%jR|<^^!W<&qo-h1K*EVv-=3J}aBZ z#=<%+3GVh3#15U4b5J}&L}v{yE6ivX3Zp%-W84H)V^Yin3SmHtjR-<$6yy$@aOi|vL)Bml`D_GF2SGys|=K+@L~qmchut|UK7a&rg@hV@6~^>6;_ zWpEuVg49s)iUEEh(fZpvX=(muZ>3Hbq+m^qd#F94NIKOW7HL&Eo6$9mG1F|nJMQk^*9o4N{b`@vnembynTm9E@HIX2f0G6h8B?x-_HU5i;c%D}g?hLpij?Y4Hq@4zm) z3D{?eU*fOm_ov|Dz-lF^#~Qbl%bL6{@9FRlQV=Mwk2~L(xw(ysWTCNU3wN$N0yTo_OmBd-y~~LD`$|33Ufg*B^}tR zRH245U>#Ju2vn~O8!gWYLhR8wW?sh)sr*QOgtcR~IAUI*sE*&Ke#KlEi~Rz>&n&<0 zC-%t<{URxM0#{nQaL#lMWZ+s#!u&_?a$Nig4%23e4VJlCbnb=AH1%$P`SAPaL|b%} z{@)$VqP<5sbtb%t)^Z@Nnl%1}+vdQq%X6Z&^bl0yC@R<~`95Rm3-f6AHqHXkNYuGU zqx#kEj4t`U@3YE8(eYl$FX#F=1Jl*^~#OpLVV)7-_8vhHf-shA4bASKRZbkj8N^J&Y&rpZ^t z$D1uJ_wY-|jQh2r`Y%tH-AGiHBH!oa+GmoIQBjeFAy+b<(rW_Dg@j;7@Tbq+8SC`z z&d6`O2ZZ517bR(O&Zy~#w^G4XCHf`vd3!Bz05e>@@HVcbF^2Edwf&6u(P>QJ zq&S^>o2PqpiyH$l^wl&H`8kJ9Cg@#cGr?qnC^5JCb!w7J-mDMo2vZs5(Iq${%XoAa z=sC4)qI!_vw_5C^;R^Lt7+TJcMJRMmphOnhCocqPj5BHF8`qZ}O#VWv(&S+z@l2T5 z=#8`;#OEVGgITobYeG;IF5>PjsgdB1t@)NAPZ^b<#5M~M8ZmQtzVoFDPAwyx<;d&Z zOPQOXVr}l(6ZpmR#lTLT3RCHlORr2oAI9=kiX{0G2sb@kbygZeB=w2$EVaonrurVSoh~JAap>{b}3(e%@-ZPzz;)MKQARp=MlOgVr6jL5G)3ffKLTMyH*CIOr%h z$R~9iGcl^{hzHv09h9Wx3pl^bDejU?#7SfwX|!E>>z}^4CO8;8apHLmdilkz@S%p6 z4`yu9UbAM6U`M;y!l4brvR>Sq${(+GSof2)+MW4<{Yd}UIavm~`eTU%>sSgoxxJcS zh!(xXS|Wtv5-Uw=b)9EV%1WPn#*ut0-o2k*$CY&|j;`A}UY-$o!@m5+p(;EFUc&;R zKlzMlTB=!xA^dYsKI6`nf!FdyyfNnth?UXds$@v{{`n^=5r=&rUzR4bgpxG%uX2l$ z0^YaqaF??25=(I{Bui|~_M#!|`xHMA9D>phYvJq8sk_`Lp81HAgU(S~&31?+M32cs zs^0&=gpqpoGBZP?fS+~7A@Y9gtdHw;L$HAgvB9FS%9Ac`4di`byvxA)#XW6SU8KB&7 z)T2;>>?xiGS9B8opm5b7lH9dZmDQ-1nW;027Jffa*R1LC(02U$5{49ix_L{VI(=5pUQ&2i*9KT z)1*`Nje(4?P9A=TV-1UI%b9re7SI0UE&iLatg2=h_8IJ^Pfu0j_#N`U5{qSU|HP^` z2JCUQ2p{t14{ByJJL~CD>U~2JW>w-RC!Au`@vW@CeO)hF5)kyV%I_a6=Bi?O2kXsA zOZ+)x1OXcdXR#wuf}7)q>;nQB%{|_aMRyA~y#%;fMj6D-)T{HhP|-O*UVw3*g7*iYvfj!H=iR_kOHGcr&(ad!i_xC~}yw?XzpI-h?aavd1Sd(?syt*HJU}=YX5t zqARmv?G2udCAX}r5qL|?-gHL&>xbuUX#}Ni#KL8`;M+UFu8mUzEmlG zsbZGLk2QmpugpZBrjf6-Q>kE{pMH--!ra3ZSy`b{CxL5r_rBrv>!aw&zHL0Ss2?NYsP`MR0uk% z3C`~(t9y&LqsIjp71}!1SaNIkE@n-a(RK{x}gGl=DRm-T~Tq6pzlO!7dc5fw>4KVjm&@ z?X3TP7_$!9TQ2oTB|@V}U0zLTr9nN|SJLD-k8H8s*Znmekz3SezS28)s81BlUq`Pn7Ci`AL0*-RE9pK@=PN#C*9^^#r{ zQS0?uwT3gAWB*#49G};=ZE%BAoOHa#qg z%fHa{{4AojP3)a9TmfvFBFlOgj{2{b4Ijh<8q22a6SKF~{fNMGuWha)mqp@*XSbA? zC>~QK!H%luyn;oxUVYU!D$&s3ktQPsMKb!Sl)VcwBY``Nyj!50;7CA@&(TA^E`Y8L zV*{-ZC&;EeVsoX(@eEqp>wf z?vbd_{g^nik+~J$io9f5hW)H-O57obRVMdLEoz<>jvh~vSjslTDe^%Hs>Sh2Q~@3k z%6lirvgy8wr@e*ZKYJ`rOd3ED>-iP{j}p6EiT2x;+Eruf>-BVnS{ z4W;!Wl<`vIE}>Ox6snGj2)YPB@2 zC`j@yJ@EUc+Qz2ek!yw*EEj9Wb5@xk+SXW)8WZi0ui%FGH{gYEk_r{l?Ow62B!|7* zpj>s1Ij$SNjBc0?xG`~&jHwe1-mp02_~ym#7CZ?&qBI5-WiD&TGLB zWngIWMxe3=AubAPFQ|KFzpr>eCawx=of+9O`D-riX=GMkb{>o;AA3Z}fYfAL_jQbZ zPSy0;-L*oZL6cius(}VyT1{vz_ zdm_|7+cT(Vko`TXr<)=KXJ6pARNEK*Eo1j3f6Jfy3cn@If%XWNau!?&+XX85O8%}w zISU+w`xKx4e>+r=KIz!35a63D>m3mARJ-_3kFk<4ej zFvH&e&c1U(g_NEBt0VmR>AuEaRY#0^G|>8YkNI;ow)$U+A2a@qoN`X_yD$E^VDaT& z$}g%Ol|>-^`FQ{CxPMO9|E_{}?Z1&fT~Pi;{_ElPFXW+-M`cL}*(J&E;U|1a0z)|k zX}uJJBwRAUcswOF{~4(yFf6l=%G{8LaRi9N6+O&{|H{HabSH2i1V@;V^DAN)%e8;B z;2_7O@fMZ^NY=qoR$|NJIO-xxa*8n|=* zg?wNj^#2Qe;rCD69hL+X3ISLzb(|C{Z7PZx1)ondLXqHEqgb_xFM_tEz_6O|pG~z+ zr`6`Q(Y0&mwpgo*<))2|Rcq&FP4f4T)2*~=0u)IYwA&2t>(=kr?CtL?r&{mxPkk-& z{BXsjn4CR8iIR7Q+GlI361Hbxva)+iam32KI(GHmGqCpQ0h}QDL6qL^VVtd1eo~dd?y#&Mj}LpCk$&`;egF9Kn4J*P2S?k6mkf1b)SR2k0DmEbrN2ezEg4WE<3CeaR3sKkiN(-@^Lp`1T$b+I-p21H^oPb?J6l-@N!b za(d}g3Etia-rxcOXNQ0zg7>n--|#J7xhn@bn^X^lL;1}X|YLx$! z-RBEEHx8+n;mwBdU8?vj0lfFJ(CaPM z@lg-_cUXp5vI$WI!h*dHh5;w1nuQk6`MvW}I%slCo#=FF65^`phdG}H) zRv6J%N40E99!A8cbl2DG*JW$!*~I1#?V>`f&$y_u;=NiMIkxd77-?^K1CzyzEC(Gr zTLxuYN42a_#@*Ls4Hjmm(@)^NoB%dbrza{i*PdR??k~`jaH<=I*a{lUZOa?B%c9ll zS~gN#SmDj%kX<=-iRU^4^8TlT1$&BX>L$gTYMOX#Z8$yUb7Kp5_eU)$L1-bEji1N- z1|rY9c;y?a)Vf*(t*d6bAkhyr(PZYd5$#l2Z$C72YRponf_tEs>5g6xn|yfaU`l$<@4j2XwZN3m*RrH;yK8&_@=Lvj=bq82y! z2baCxW<9TVC$HgcnT|~<@>yLbyIu1j(R`V=+FJ5h+u(%m!YodhE*_l|>m>sx0dqB7 zUJHV>^LJi5ZkTNFLkY8?8z65fw5h22u7!*`zZp)Q?aV`{UcXRLx@VYsuq6l8m%~zu zWMurW}>J6ZvPoIYX1O_^8O{E$;L&zkOHZ{nI@~Lx{1~u^hfGoyhYwh z(om2%%r>=iZQk6jweTNo$wxnh8X^RKJymYlKa&Mn7f~eV;c9FzG608iVf^%pX{Bpq zvZS5Nuu=1*R)*RNY2r#vd%*aYgAf`a1aovu5vV}5xU~b(R+ct$^lh14YeJq|zh9D0 zbNo208(E?&&2@;!eM;H#$Pf+~%A)H+0MPqiWJfPA51o=vYme;w2!$+$Y~ml1>;sAC z>v;3ZHYFX@E?w<^V}Oc9i@5PH|2}A(e|$?ew4;bT!PASXn;mU|fhQ^As7(6~k=ZF- zOT^S%B*blYgZwr4_WG~6DZ&`dn}?j`7SRlaAohwsM~@#9w1s4^`vrXrLLPZbuGA~o zE^(A{wbG4LUgQZ%TaiR0ZeC40X{uQw?fa1mHjr|mhZ)7R@qm`JJ^omqF(x2)_+XRy}uDNV@N&6f`n5`^=nqqtp~ zxK=tSdRPBovjA5Y2#iwUHa@%&A!4nf2`wq)N&(>q25??x92@Hy5}5g_)%i%>UOHLG zn8=e?!T~d*l+MQX6Ik5JmxVPhR*7IKu1vJtM%i@Jg(PUjH+D^~!`zEzs%fW)u488n zn{dF!mok~ye{ETiH%-aaB5}xOVI3S##|g>G`w8J!=>byeoEr5!S-IWmCkWtnMSinF zIOH(b>L^H7o#U)7K254ziWZeZQzsI_YEm8rM+cGQ{rN3S2~OhBI|7F~MZ^k_Pl9JN z8T5rK2{4 zhq+PwzyKvu5UR{*R5a9v8eCXSmOuK~+Ut>dsFBrdmV|MpUwG+*qAgz|e;Y@y0vJM4 zn3gQ>I>Uad#-8Whp@ma&9Rw-!0vqZOr^9x80r2WyANZbs0RnabuA&zk9nZAwR2-wO zgxk?;;MHt*7I(?gry|uc)72|S15o-8q|!AdGSz1@mP1O_XU_urTiX(ZCKaGIyKpzM!Iy-vo!^Pgstm%fOlQ9w zCcwGGM^!$ol7|XqfX5whDXs1B0%x&hw=<&-q#?6s*fgRc^FQklA?pw+15pIV5=L4p z44qC(7pL!oloYGX3>(1tBD3kO)&6FJy({jolbg?v+{5YZ*W9;>9F*;Cc|Z&mgyc#_g&-Vr(ysF0GNe#_xoCw#33l}i zupxcK=%T$F^?VVjWO8cRKd{;1*)(X@73I?khY)PLipM2TB^l*Y9LaRcgp4Q^H#-E) zrSRp%>?Ds;23FXR!`6=6@8zA&UElZi*4N#S$y8gP%e8)#QT#rsl8g#Epo~jGH$blY z%OW|x&xUgHQ&f4y5=+TmdS_~R#W|KS_^NG41>>?a>!AGHs8geqT;%;(-JAKPJ^=mX|{`tk`7hD ziqBp(wvvwME|ZEpA=_xKC!aE&!UfdaDv$wTz2#i%4iWvqFHDZ5g?_ zX-j_6Sbj`-av53(Ewe&FhD{|A(_NixpoN66)OsbuvN)|bz1UrtQr|^%u|zYN?*r;P zQn~5|$CW7S)0d@(_{thOJ%%=$qMxdee9~ejn{=QqXU9afLg&^;`RT=7380g&n)#%( zY*@i+Sv}S=qkQR6Bhg#RpLQYH+%J!>WP@rdWM%_pQz1ii1MHGqUQ=QQ>k?gFqq3Sl zp_rNfP*<+$GB~nJd$-rvq|2g`Y00h(>T$y|zOJmb%qERrEiW|Ogomv7uRi}BOoV{8 zkcCY}+u*(B=&EW|SYkDk3P9<%WcLPVNNQSo5a%o?-6Sx zGRLA~bBRr8+qQ!HD41L38OkL!|AuXu_d-``yY%KaPtxgFK35qb4R9f#-FLvJnX*+)e*;k#B~VvL_O5p4i!MTS2~*ND*n|`B>=8jlOpS4h6of zrH=Y1UFKOM-v!+D9N@Gw%3}0yRL;fI&v(ConWJQq!)7O6T2B##^J9V-ZNhdEVSH0= zs&my#;PfSfYPq9Y^(B{~%K(gJ+qCo&IlM!KkdvY8!sa(;UX@7k5;m#(3>Y@?8kD=6 z%FA%$6OXp>#EF(pR#reYvIyOc#Q1AW@G}DE^E~zYRGA3-9B{f;Sg}WVb!?_T2Tt7s zTHA+ZfN(lTvAdJ{q;dc>>l7-eL#PuKn%xKoI6>ul{nrW#R%v5!&cSwDzDV7$Z&o9R zColJY=J3o}0_G#T2hrI^DZ80aOGnjYKXGgzWhO1B7+JNB4JE|t#GLG?hff&p)HdL( zaaV!k?-ncx-W?-qRom=jD40G!s8VEnQX24D7eE&)g!% zv&ub#0Z6rRW5%nU{UBQ03OI`^Rt3Us7!oF|(PEyi;#nT^b$(a2(Qt|UcR;plG__br}kK~uMR_UFE4j?8W)AgaA z6+#j;LEBlA%WsJtC=FyDi!K$3=J(1N^u{&N8{m>)Q02xRuwl7O;4(CfLiX?r77CLAvNQ+0#exXSydybc@l z7$EAN8+ab>^K$2;v&M-5_cVzbK!euazfvqHUc$8mBlsatgSmVNqhiqx#5%z{Z_`w5 ztW)K}>WlkA&$BFsIpE_@fwz+?;C?qTlFbHMBI>Xd(VwY%<3D#2 zR;i1nK^#A7N3PuSu9Dd)Os5w3l;F?^XFwNSasxNw?F?T(r7O+{r|)%h>1on~Lum>@ zdiC++tUCrg-4As3!^ut7wdA=`uE7n2T0`tSYPjezv+CQrBZtnhWBkk44~CSL5S-NU z7L}IH0O}(jWTfoW`7EGMDY3bc(`%;c5Ki}8e+$Tg@rVRW&0h&3gbK(mUNi`61#rrO zSzy~*knQ@2?yw+FmtZy%387|SCG*nIoYe78d=%kBHNR@aJ1jRi2%O2>$X@|x7W>)% z^$1XWw@-O2bT-~LnHS*sH&-?(FQm>S@Y}lDLvSYKUpLyOZSjhj=CLveqW>GktSfyZ zvCVaw)8Tr0BYOZl%NhNA)-9+O6JQt4m=A$cpydoJkAVHeCxyBE!I@HThYulHOXvip zjMagiXxpYR%-dgepCRruJwy(pryO+x`#oTBr=BDIN&`pNwIr9tFZ&^9d<%iZIFzPw zEtf0LC!l>s>QYHj7W+a&iMO=J_(4(E^ubWq&=F*owOyAk@~9#1QW{?J5}?=vyS6Jt zkGzS$Yr4vIp=7Q6v63>iqog4=o1NbS>%=m0xXFbgev^;c5J-0<;b0z9f%)4{%<9^l1^%<(wsI z%OP0!RoHo!l~JJ4_5sr7Jda68Mm*Xhc0GWbUQbpRM zu*8J>xFxazL1=k+13-ae@TZ`iCFo=xvLkC`(K|yBrYr+}K-$F_i*`VVS4RTQ8IQJv zw<+kR7?D?S@_e!>phqzJ>2^uDx5)H^w)z0NBj9w-QdgRGqYrA-xyC>A&YMekcA!hi zor+g%c5o=QJ{Nuw#y$qjdLi{p#NL(k8)-=|VE=X)R>!>%6u^vMLhNq2H!idkU8*~U z9a0dhKzY&=5@S>qt2@H8_-`=(WtpbA);~k&FqtO0HgKd8lRr6Px9}d^=a3iMWNx=h zE*iYsbdDYFWAoJl9z%04$~VkH&fuJ*-th$+!j6%w8dJ0Sk-u2AB<{4!1f2eCjRzEPs=u<{1@;y$P-Hp z*BRWCNB=mwO}*k>W4y2UFXU!8ZG}WOsFVr#w>WjrYA#@5l>p~yHc0)FF)ZQG8zRJ= z4wI@sv0LP^(h9La_KH~UihQkkz#MFK_nW;jtipaK`ch zhu;bcZ_D7E;co!P?uxuF+J2C13nG|vPlYlpH>LcbsbW;$Olun3tq^%NM1ear1fzg_s^9jq}23u&b$ZcOgD(A@I^uD6X8!8J67kU`%?It39 zXNAJEok+}k{9-bZON1P6Bh5Y~=5NUAp#6;fwNS6}TW0%$QNKMod7ySfq6QH(Q11sh_e6dYngra;xnH_7^H8w{oP%uWJ=pua{mC(=x)q|*~7B$nqOkgT{!LM-p z3BCE+{4px|H#s<|Mtw5>zjEltS@*r;F~2shU)<~WwfbEYU*1&MuE=uHQDz{DzNNKq zk4^=>@-{jAzd1j98T$fH9`{H8nhO^J2URfqbG}k_*1c4f?6s z#8)lFuX#8HY5Nnf>l4xn%)YQ~(!7p*ZCvYu(5x#Pcbok3WnAx!kAkb(agRLUv5q}D z5ZkyB%(ozqgZ;Y|@?PQgE=|*p`11OM`us=pmuCOeGLyj!%HRHJmtrW;_Hu**jCh>) zI>Tei5ft*b-`oGS8UfkhsnUwUDn3rTH)(ydFZ-sEx<>JmRLQNFWiFjjPAvix^HG1ES8TLH;!2@frD0I zL2nU&6{Q1J)&7~71?`~+Y6$haru}z!c_vo38A}P}+=Jxjjq~^2cW=e0uZTSV*-U>p z)sMdRj{%dbE|5x(zZ+Pc-lXP3GfhKx$~0?jd%G!xwTt*^29+nO!6Q!+AZO?c9<6=_ zvVH|LdlrK*w^uAxs%LC^=U42OlPnN{D!X}v3lUtn6B^R>dE&foh;`ffn%Y?>mM9DR z#jWnX)4q`3lCXrc)=Yyy3b0&-qkrgg9d!J!CQ-TuC1c&}c25Id=}nAN8qFpoFqatU z>cCQ>?~p}a)jP37s@;MSu*4-%fEH}l#{o{_D7`LYuo_X_kF1uF_sX$uZY=NxVH6{k47OK!A9$3!D~xFC&AS5w3zdYI zZ)|U_PZ3faaNPHVjj=%8L5YX!n#INLy!b-gM0|EzlHI@Wh=qg+Krfp^B;vOM%W*~1 zV>dI_7uIjv4BTroI1+Cc70pj1{9A5+E)XRkmksC|tYVLDsP(yxem>p+cM?=1Ohz#OR*fKXK)X z?H)rtfy))?J-%ztB))0qOf}BKKPc0fQF{=pH4ZPfXCF7&r?{56;VqisLeq}s&;4QN zLZ72@y`XF2k=+hf4X^3!+A6`T1I|F+K9InAgND>ATEOd!K@Eb9- z!73&bV(%Oi@}SCg#QOe;q4qnFn{V~Nta!=~>#)1C7uMj+x`HI(7e%u_r@t4+2MhAf z=9?|dhv1*vmpD7nsDj_k6Z3%8B=+m~@}OyAP6$-j_=4iX9>#HC$JfNpmMMe3y*2g# zKy-2A%8l6rU~RaP4~~_e)HKhG=MvQeVJVfFE}kY%ad;%y$#8gr%liGe9EorL)HtWs z)fUL*nV&dx7zw#dBXuaH#O6Yxf8Jh{behy-Qlv0#5}UN}bhKvPERweREtB}I^U|qC zrAqguCL%=UK8oHA^{M^&3`2 zS-E$NWT$IHrH?afyJw9zZ;%QTk`7ga&j#^e3?$=v`0kk&t&g7jjs>!OON@)@JOM$6 zK!}k1?G|?`Hx9ZOoEh|K7nCW6$t%*%7c_owq_J1?dlt2zr=DQ7c2)ZwARXvf9tgK(lgFFIlTmSWM6R-bAdL-jSm5tv@*oTe-U7QkCSh zeV{_)Fhw9JI?U(O7^j|%-5*)AE1#wP-Nr67L%qOP6vAK%gQ)kl58M5NT=05P;ISA7 zp7Hf)^@ZRvU+N;jI>pcK^;*Y$8REhF$W?v-FiX2XomiVemc>uuNr7F-gxdel$-kk zVrqn)9-Ua&JvF0$k+zoJ2!@w6^kkk^kE8XHm~~avcr{mk!jdaOYs9F-fuxOWHp4CT zxmBgPosgeCs&cE{p8VWYJ2lzOlRGUPpY&kAg}!;btIR72saH%e2|s9GV=;W*`IXea zwVsC(AYEkeVvT)=bzeq#@~CJ6Ihq(xc{QAjl@4@{|B0arCz^Hmpg zo>f5gA6?rmu=Pyvgi+}ch+~+u(Vnd{pGow zC~wr&o$vTPtJhw0*H*_h)|K3wTp2b#(R%Lyc_|3Ul0I);He4W}6A2)o|MWYd|6jv1 zv6@B+Bq^>t@#<12@vkpTV)#1(pjy?+4pjxycSe_M^ICo)MazO344Tfy0IgUYCOJ|& zViSfIHUIC-jclt@OXua4wT-}i$g9?06! zfYIYSNIS-g14$Sy_336KSYU2(2 zhZf2?_FGRemK>~DOo!14K#@~A61kyqW4kzyk?4qw8B1cA@wN2U)G<-Jx3wznEXkBO zed-LIXYHCnF>R?-9vct;(+DB(t}YccO^l{RBRfAn^EI(3&2XYT3ktiUP>9XA&;HzL zlqRQt;4iSs0$W32Jc#2q?qLY!K${sk+$Wr5`*U!6 z`$72VebzG^3Ygb|tGgr_H`?SX>!`--a9{u`a#(8CqFN6~=~_vY3+r5#+jOBxMFJg; zOY}=RHeTi3Vhl0}1N@EK%4TUS8Hj&BV4HW<<>yXx*=@PLD_Js0+kKE}+Rp~twYK78 z#_J&7-%O_+47NxbK)mm{VkYuhLY32M!+br4BAXpTvu|QUtrMXY1?BF@=$}lQj_^R2 zy_HCSW$=M360@jJW;Z(honjrm@er~>1LwkGgrTu~&ti@DYS0`*R+ayN+uv!knU=7| za^%c0cA3`4%tgjXI_H5U>0AnmF$VkY9E+r!QLzM;Hu z2dhm8DIufm7F7(u)?K{^-&wjx-&whfiE+En>HGOL1AQ0G5L&>%VLqf$bMYX5Fkx_; zyH0D_H@5D9bzIRn+J9|`Con(&{Bk%*9?S{oS0}6r6mCU5C$Zm= zz|fQK^`uxK(pEFyLAG7S-g(vxtS)$>{ZKF69r)G|zO}75=maO1nN@)Yc{FT22Sl3# zCoNSJv?#2+JIk%0Ian7AQ65n#2%m3Hn$;a!yr=-fp_y7}64N=xMm)<^Ve^`!xe>f|$75dWZ$gi|QfF2Oi%OM)Wnc_Ha}0qgmF zTptZ79S!lWk0gq@H$d)a?P-~Is=I;w{E@)}C|?f6{E->tiJuVy%OJ6wc0=O3EjIM0 zLPfhKRSu4j7Zj-w1gkLC=jUPVdL$-XYG~3+vpj4!!D@`f!cDtanFyN8#E& zav-EgIG*uxQ%0Zv;Y7JQ`}eH>wd}$oGvo*5Wjs{z4Ro`3tJ4BJ5|qo^r3XtH#yhAP zpr}bxq!8LG;!#yNi;YlHe{_(&YmVlK7c7Yz{4=c(p6j_f57wXYsz;g91+uLDYQXr? zIE|3dX`Awj2!79TV7-p?WB~pB)q*=RirGiH<1O%A`Q<{5#WkjYBMj$igy4}7U7vdV zs@Mu1Ti*D{vspTWeGgoCrC{`#ypVhaki}TDp@vPnG{SqtjqGX_$Mk zsIrGRdR>{5Y`(XD984{<${wk(SeosoW3#vRN3ni3h?$nSkwdzdc$u>}ARtSW1CJq6 z#m(pHNrNv(f=+0yt`G}v=o13!ZVF?9NOz(2w$%3=l0kn1&#)^ixl*~_c*Xc{k(n3# zJ3$5x1QZSXzaj&Q3IquW`QM?ML@_1{K+A1CaiY3LkZRDiupOo8nDQ!*4L3HbqREy0sar&-?9EvMPT9cHt!{l!lNAk5g_4Mvbmz|~q5 zEt~YH>b<)<4?a??n2L3y&~OQjH(V@K#VA;l4o^=`F!>$ay}P1FBVPNO!7%&v8+wlo z`AX@~p~bzs=&)PWn#Jh9tA+y&?w-io@P1n~+5?|NG_R|*NFUWJj7VOyVHs5(`W5&7 z2oTjS^Wj&p{a*F^+JkRWYTvvAK%R*v+)=E_#@8k?P(m6Lh`d9f$wmMP&u9d}h6CiU zX}T%SM}I&=g5V^}YAt`O?bckbW=T#GW^DvPImc9(08M$P^*dUaHpN$`DMQx5{6k_l) zHe-7eg|+<5Ryu0v&q}hnfe9z#yukv3QtKGv+h3wC9eEZ)Cs_Fac&ie}lhK{kUnzVn zAOxo?5GzKE8p}^sg|i|_3Sg#jNg|?E zdA2(LZH1jk$WV|8(3Ym6O<>G)hNa8JF;DV#9xH!yL*p-Tk}mn3bY^0FGmq9+QYVYv zfAJVdJB|-d8b|YIU1gi6YZRrU)KYZ)el9d-(>gS~4G}`F!CHimv4I$kx1#7EDb~QW zWK1un0bZTk&lAI#B=6T?@;BL_yI{x|WT>LXI~6v{&rFmAY$RHWnCr8ypyl!A%Lwby z6x>KFEQ*LTavY%#_bM31vgI2ZN)``^BhtbRAAAHDbC?E$SP*+zIy!vhi4Ix*WsMJj zva5|@8xGjGii_L+rHaqFUgr$eHMmyX*MvAZ;8*TC=##t4g`W~m2T?PK0Xc5l@VAoh zXDIvZBcJ64+$nuc`R5+0K=}IWaotgWWfb)L{|*4S?{Ktp5uBJC(?)vIfvtoV8v z)9}=hplk2neHJOn2YL+kc$}GKVzAV%U_=M!F{h;gZB^<&3&x2Ys}z-Ch8BNuS0j9! zna>vooy(C7;vO_2ku+>rv{MW6Hi>be$wI6meMb5Z9_icb*VHiPKo(slwl>IgP};P- znY<>OI2_)@l}YLZQ8s8Raxe<-qR$Bni1S^{h$bf?tCd6-g|&0QSm43Oj^@+W^s-x6 z=1^AvQ0+{Jw#dpo%|*cL)r@pe4vjoS-anJ#B8OY*`jC~;BB@qLxkHweo5gV6_vUF& zjF6_TY?{@o1QGIM!fK>gL<$Z1^|24-Aes~LX+d=&`CQ%pS@mot5JJouF(YFr$56?U zK19tynj_}X-V=d3f(x2G%@Tcgntvj4z_d63*xEJCUQK-HHkL_B@L%wD3(3e8O7|%s zVsjUL3b;m?TZ6PRp(~bXqj((tyC_{F{;l`m*@lh|5Ig+@XPW4lMEjmeWJS5SZ-weH z)sA~QU*Ue>A(gX)VilQ|r&t{6B(O44F+QK%)o!<_vtB)}Uo#lC+Kyj2+%enrwJxgw zq3YRPSLe~g>R8*3`seWHQT#3YuVI_fmtJ>grOEoxT+WZR5zuX7?iAeZ`|1^l-nEX` znH8PZZFlR-k3zSdm^BdD@K_iqbCt+}V6g)X21C>V&w0rp{vIFm86hbB05Iq~|)T zqw;BlMzV*;wIaBj=W!CvOWB13B$j4bPd*#f&Bs^#G1d^pfp((TUwA8u=2>6773mwj zs!hZ&HN^~Ze5%}}Fx-iF z(oN`$o2V4bx6biR?F28bIfI6ENF2Z;O= z=c68h(Jy<%JA2ZVM#c8?0O*&cqG$2Q5^oGdaoqVd{f^|t7r9R+;Cm= zHBww)zun`;3t^@KjF;d)PS{wqO{gOo-ALLvgr$M~H{h!fE%w5&k295B4;!OnViwmRZMI zkiGmN{Q^sz6i(t`F;uaO#qI+dBQhFRUHM=d?bCv<+r2xTHPO6l5>0r~81RPIC{@TK8aWcM$Hu5k z%Ok20{6z#1E3+VZV&>N?>?zhO4pY5L@z99SiXZDYc-NpW_Cd6rpibGmG1A~+ z0S_dWJdF==2z*SFUw;6nB+QpEDoqt8Gb$|^23QY+hA*|W(OLA1ua=>s%8c6*#G)T= z2{toWEvjZQ@Yk-SK~H1Y_%}0jVxhB32B@$~=2HO}+mV$nM$*jdCT^#MuSVMFu(Y=s zjgjQ_j%V4;t?@~t$M)>V9o^)Vk6+dG`hu_%S2c7B-F22(P3?SLqK7YQY81M2F0zA9 z1UE~nuYl_>r(^Y{!Mha~xU5Okm!qWkL!vuYmXhZPt6HqQUoONC=U-+9%ng5QE=;Xk zTy+8F)Kz%uosWi=&9-Zb)H%tzROcpb#yGl({%vrz*qXkeN@gva8aG84Z1aJIiQLBY zIPhi=Fpbd5p6q0b8@!dS&6_m?cRZpJayS;IEj*LtC3dEvWExCVyW@qtZ&U&%ywtIZ z7dJ9RcQbN{7;YKU5RB=OOoJqoQB-Z`f3g6Qq$4a*r;83?x&DZ`;niKR5N|YH!)DCE zdc)q{@YDy#SH8OaIr~oUw!XalW2tFu_nJz~2pK}!?6vzcDUt778h_-`B-C#BwglDc zQM4S`b<)`pZ-8{xte_@FwbCNApd6XO0_$S_B6Q|Pvv902J5$#r;yO2z)>;P)EzbZ* zNG2fY2p#S-Nk}4Kz)UB_w?a103!1b-_TdARk2JyeWdp43wYt>h||$91ZLWyDf|jifc^1IjL9T0 z4lnQ+!Nz8U7bO%^mCpx4h)Q7^WFG(>#8(tdtyUAVie7m#7}`nWa^{13PS3TMTc8v+ zs5QCPQ8NXtx-fMMH9}&^$M?prst%^Sf$EwcUEwb|^z&dgXTJ)@)VY$6XfN@!A2X?E zU@TmeF_B2=ij;|0u*O)ZGimJvdfEoJ5tHss&sf*qKI&P8a7G_Z^jkif+;#v0R~uQJ zk7tX+Z=v=UJFC^ySc>_@t8bWVL7G>jSFSKyqlRwny-*PR59{vl!`9SwpYRxo)$f|e zx$VaBl&~{T%;`AhvV`meI?9auN4XxX@|;-HBh{{z&h9JN>SMVgj7)0^JKvyXEI1R_ zL9q=BaMqGGE<$qfVkET}L;--WTj@?uB{_3j2b6kkr>B`*jlG-Wum;^b65O?{%Z(OF z_Gj;J+(z8l-ma%DVRBfG7xRcF0c<(nDKs>jS;4cdlgv8IZvnH{Mynx1-)&H4?Wnsi zM$I11n!u0B3)AkD>^-eF(C$R$yOB2nAd6ss^IhV{B{7oU0DH98paT%eo|$vRoy60l zgf-ws>Ga+x83a({9DdEb{^EQj`RVe&2lQ9ngPg#9i9FW6Axx9M6He-Up-l>Xk*9>d z&l>-JazL+9@~PWXzSGmIW9lgNL?NE8#s}m&d%nD35x3RT%Z~E;9mHmKk@mF46#;|MCAW zGxoBsGqwtEaG$i>25k<#eqeCn`s4>#4d(5jnpqV>-vwBGhPmbj$c2FAzNwi7cRwZ% zkpg~spZONZ_@U(Jy$fAu92S?=G`7KDF`{Osyjb&bgwkMF0E9ZzFJH|S=TYX9xtXMZfvN%TaSLka5+`&>*#QaJg7YyA{U%SIf_f$S z<(>NSBmn56*4jIc{o}3yA^=6?3v%Q^mF7gu0fj#V;PnQzH4BIhecOB^13+}X5!`|N z(81sH@1y;gbq)Upw7z?BO#h0x>a!7Jyc*$k+m_DOhBCk)AS(a$j=PFMOgj6&>j^AC z8rd`MFPQ0rRRQ;adjod>LgF@3SMFJi`#pXSMJI9KotU?Tt60b(M~`$IiikUk9wCLE z_z!TubK8c!i>5GEZ^;mXJmG<*d9nKsTyTj6*)a3q(852(Pr~;b*pY!LENg*aciaR@%y>`?vV%~c^mq+@%zm7y7Aa{`p-|HoG#}e5W`@_uT&iQ7Ams(13tc_BgW>F|In;ChQtU%w)*N(+ z7gp3)-#+fA4m{Qw7jM!wEP>>}A-=BHZ=l9UPvh5r|LTaFSHOoQ{f|~}&_p^Jn4KN| z5Qju}3rU`eRehZ8K#VF&GJ&E)OIa5%Q$oi2I4t`>3#7{7}E6D1-FhBTK-Swh^# zM{uR9wC(oRWx$H9LQMN6Wue46Zj4D3PEJ1+GmJk{_Lqu;xJl`dOUX$P`O|{6Rq{_( zhXlRm_QD)$6a!qVVCZNWEB`-}6b$(BPB0cybde;WC%&vOWmX;>JBTsOA%|O6cZaOi zSJD=pfW4DmfF+Gw!)*v@^o20dmVnVTEmW3OIxgJE#w3memQ}8z;YF0FW&myfLyJC< zhsQuz@~lOco*rH-gxUgFj4Uy-)Qnxbw*FLjc{@J*xHm=-O7owWqWZotNaHc@rSxA$ zRu_2>7U^{!ECrLagsk!;2Jcdz76DJKtuuM;rTiXQfX5#zEGAP=-wiS=qjCGrh{6K} zaCgIfwDAvLPl2pPR%C?GDUc-gH3?&OnPML!h+v;OE)NFY=y84X_b&a?2@F+9yxxWT z+N!V$>#q#fnDyZ;Xcv({#YU`R%X2(nxBCR_N4aq4TqR9ATBu`LVv#lUaPkBgrJd;r z@I_Ns!1#)>Po@S=f@mT(RObg~<^uUN6HR|lFkjl+A_P|FzmY07w#_iHni`mztleSg zGa9z)6w^-RaebchGE8@TN*HI2bwnw};9p@wjQWP+A}+-QNX;pB$o@HqrHDkr7UGjXMPoGm(zwBwGD?1e=p&p7f4XQZKA%T%Sh6*0!E(i*0ZqEGn|*zE#1%$kBx53Lz~q zy+20WxtM>i)|4^!WAZC}Y+1W1P5uM{4oiV}COP~xsk~SFDj{)Q90#x=hO`e)Olak) zlfGMJ@za-3Z1S_B&!nDh%xiHj8A5u44KUQGW7bBIjT@9xsMi-$*KBQb5ZF31eh?EE z%dZBBZ)O!H_ds(X%%?&<&Ht-oJ9PY`IcU>gW1cWZ9XL-Xaoih&K4+H=bskko-0<)Y zaylp6SVPMa+&mP0ybnmzGZ^&gk;;5S5lwnY17!y1t|r~W4`(!ps#Jt!48*5-Wd4p3 zqUMA)g3`jZkfAeTsJVO$w7^P@<{(zEO4mL~ZI;e3nNh7!*rtS5+Eb(Z*kJ?NC^$MB9E(_Y>HvQKT|Tu=OU_bvi8E%xl6z<7PpP**zBi(GhcA`z1aU2i{l}?ifY9>FQbYe>i4yrtbKn%Amj{JsSO ze!I=?JRz|1<;8ky*J~97Vzr9tVLq>SepW*y)NRv9s>v zbelqZd)4tg_Y%6(ZI&G~XzT5VuhF~y? z_=3>YyR#} zMrIODiw;`Uql)KAoGf0@047_>;(D#+SfUyaDBTea2s7uYjU0!Z?psBnNo^2U&Gg}w z-Fx%BmV5_F!Bdr4oPy>HY}3O1Y+sAcc;zWamJWb}AtI@8f2e$H#A2*;=6xt7<4fHy zQh8Kc|2#ErDJ%bPxt0)!L2ENxU`uh8HAxd9hEtKu20}hD1ftzdaJL6J)2W4$STY}+ z&9CWw#8*rO?Alv%^ae1m{_DEiAYq*Z4<%vgzrTyA?KpJ)UPIteCQv*GZvRrN_xe1Kco#+A+p&rPSOpR5O*S?il^M~=Gh;*Ev>Zl-3lFPzdmDO;j-+D9Cb znI;XaeK6SSy}(E5c5M)M#M+b=DEZhb#Zm%>4j;t{H8Wsilk$th?~bxhoQi7^PJ5U| zuSe2gJNkP;N~yh7cd+>6I;7i+FzA4;a z&N$=KRA`BgZ!N#-z%X;9@egcIifv>-Ho=U%rx;z=rXMBcfS8o`2c@e2gHnf%QjZTv zbXSrdK`9$pgxnKL3sAG?+bzS`^N~JQQ4B6DLx-P2Y%fFd)utfRFG-8hI6$64uP#Hw z`_Fs9uiX&jV#p|sT=!qMI~dFmy?y)}spK%ultlV|CSz2?WF2H=`ny)zu#9;KL~2-a zlMU3hE@8@^UD~B=6&i*ir2}0RhLQt-lC$A1h+^2}jclvw2n;m*QQi$lGpWnd0Y%W< zWF{8X3yG{2&S==RX7z5VeaOnZluaflbP0>N2^J{_9pbtxD}nh#Hf6j$D@(zU$R6Kc zN-UHk;+|{5dB_=4j6p$+ytL67G-f`1ovUUJDb?9Wm<$YRDJ{;bZ#3-_>1q^kN4@r; z0d!#gXZP_0c&07PiD23}w^&7aeYQbG`P?KZ%Ot2_1mz)$Jn66zY3g|$^3==4ZY9J^ z;h@V!^-(-q9pueDTHU7NPTJl>zzo(2sj9WW0Ipajty?_*_L+cmbgGg80R$6RHO zlFI|xL>i1d8^Ax|S2b)Op3!>71@3OU=APe}54*;^^~#xH`w+%)aPL$419iCmq|i zZQHi>#YN+cu_uGgCEF{}1QZJ)iHbI{U2sthEWoGg#2V566$I(cC+M# zj2fy4bo|B-QZC7K$C(StrLq1 z4%5nU-fPht5O&;NyTg1c^Jdm88;>8Pn-(@tKgmBo)@buDyh}eR3z_r%cP{TgRy*tk zaaJ~)>1-Yt<>(t%kiSMx>AKY#wEc@Ha-WPzR3CioQ%Cz=2Gy;9B|5aI&x9TlyYpZ6 z1?~fB&8*aEJnjSbqUPM03qWE`D*KhNcKVj1#Oi2_Fq*A`SBtX!w={vg8Z|GM(DyZ} z@ID%4+!Z!rK%1>U7g=Fy)@4U#RQ~$nzb!6>XR2E_lsZt@k{%YvJfJ4Y&^*Y5v3{=R zbNO|(1|KcTbfMEVX>~4gjA$2`O2N34sDiq09mb(CxnKcSC6!Wvi5?hh*QS+&^#T`I zMbUh@>TOC&`)i1IR10Bxl+Yd@b~%T+ByXrrO|kf*tlso@srH_U)rso}e!ntYzYELo z1}N~eSiO(4+hOun=5=}QGj@L~#Vr16L$S{-&4J(+GLmN*afCIofaM6H3@S-_TyXm0j;6t@%~L14h8Z2%STngE3Jc| zfLj@A{H$m4Z{+tJNhD|+d5YhEJ5&G@B!9h>|9hxRBn`1z7Fed=ugz|iXck*u4tz-u z2(GuGWkSK1Odq-X$;V5!J?yauz{nVB@vTqNF(|McH^fgcFTVTEZ_o&2iUIO8pCIqz z(j6A{m6p$Sy(B)^jVj(QCX&4yoS+!1E9 z!k)mtUx5LaYPUj62ND}-qC84 z>;}UXrk%sk0PEqM+nF8~z<~=mnGDJ};ddJ8q$fQLVF<+{FnFXiis{I1nd#?X0Nbrw zF*F4zU#3o4u2F{m&(jxT6!t6Z!fOM_f#U58%(k(7fM&3!GLq?NR`X!Tq?SC!9VATg z+d#Y)rlRDRihx}qZ6PCExBk1T5AH2Q1&kyy5uo-wr3P8*osk6=o|HG0^s#tV>(pxUMB7iMXf+{W{Tgv>hO6$6ilT z2@ZQrovpxK;2nMrI1tUSeS-XouVD-dO(@?gQ%#LT%$y*UBNYvaviQ!^)K*if4l(tb z01c{>TkziQ)wUa*8Br+2Eqhj~G}Z3TXxvt0QO<{;TKwff#FQ@s7rKP4DUxfD#@Of+ zwqX?FVtq6yKiUysoN2`ZpciCiqW`W5`eqHzmd8E@C-!LF3Z2Y>VwJ9?$wVn zXJX+C9Apyv`v@EHH(eFJlq3n6iO?DKw~QbshY9~m26-}3m8kt3_CAxyAs>goBO_H` zd%nJK6>`p)M82iPAWnqv5cJl3!1=wnLj}2LYZ44V{OL?Z-|mLp5b=SU=640!7CvMD z=?eIxCC(Qbps5b7wK|bAied_uA=>$oCi}Vy&AYLW;uR8{uZTxF>07IjilNm4UQdTV zDGL8NeKTF8uT6Pqp_9sVF+RCW2;<*Z)2`J|D>ZgX+o*;l!OlRc+8tH3M-2|Cmy*YB zD>zQnf+?`avVlXg>2^oXq8wL4z3OBwD1!^+oOdV(px@U-QCNhRp%waT=%ogxl(P1X zdgr)cL}ZLAMf6ch9|A%haFkjj<|u+;h$WTJ5QB*ujLy=qZ%L!5@5bK30~vEFwqJ#D zNjr;_D`4LiDST-+Tp(+v-5q3$q+v_hZbvm4@c5K&o6-12_%s=?f>k&D%T!VKWT~$E znL~U5*(W^U+Yx%Zxs|Vfw(ItFKF1?oZmlFCsJ^j!>h|?+c>}9-ur=;#UeV4proJk{ ziMN4@qS1arb~NwkRW<7Z_*e~?u8vc?@!rCi_u)lh9{EwrlM@RtNvGOpbR=L?L{-6* zTf_*Y@0MRdsW$Ongek-QxMuL4YYNAZ3hp-nyfk^i=BAI)9{ZuB7q88tA|j~C+x+TN zP78lg(=qcNqM&?~r!B)q$D8;?vI1ga{B|(#s>hu!J|Z?6>>YAC`f=`LqvZEeRz#Fz zI%a4hTIAtTLNkTIyI3e!Y<15jf0@{k?~`#NYdR3sm&VN^QJQB!MOOI@^U}3x!#aEb zC>JH|bO;4UO}6>*N*rr`!;jiE8C*vt8;06@*^;0=*%&p`R&p28s07;js~mJoVYUuv z`aRA;leV~NwrL(ADvq1K3}Xghd(h9w94$i7970JeuW|!K3Nr%gD6b)Pm@<|HQN!~~ z$31LyHMD7b8U?wBx@igbXkN-O^TcQXFcuhn=(FBZOUq%Z!Hw;j3?@T82cVn^pJ*_= zjr*t>mF&@`A>TS#bB$&+YWBksv9|h7MHUC_f^hjBF7>V$2!89P0Ot zx^X*JB7TN%pi50#9~dnQ8>_vGV^Bo;<{NT$3`_d+jFa*uip!De7HqkhCBTWA30X*?^DIZ zR+$LAt*ss}?F&{bY&Pu9=cC2Np|LD>9Q-6DF*fGDd%;R#_&iSbH)0*ll&=I-ynO_i z#cmg0fz1c~ zE1}S)9!jcwN;73fc9a^Kx=4H-k4o*3^O|znl~;jWmPYb$%=8<}ez1M|j|0BHf?E<-|nZ^B#=YBNCk3>0a9?H$M-tHxl=ET3dzoSbP|$PPa*yPBwp--L~RJJ zw)Y`5XT4t`_v;z8wu4z5BEfE@0{CCbj?vS7bV4>Ru{$YnO`ll=8*fF-#Q??w6vZO> z3Y1g|5$ih7MHrNHXOQmlmH=hOxPYu;^0Hm#44F-ad5cQeu=n-!Ne}0l)^4GbTgDZT zbLrpF_K0IIongHM9QEVOB)YVHXC3m)4VWO>v=s*$!)Tn%{V#imsT) z`1sm<0>sP;bIKAHDR$hs>NuB@z<-?9s$LFu=mIP>~~-j07T-1NhI# zp_OnssA}U1g$$R5UK~l&x7du_=mTlWsYOWX4ibjU^F~b@A#DBKu+Q45`}LeM(~AS6 zmi(gq{|rSa#A+D;?)l_nNiKs*Ob<+1xptlpC`WFrYPgOIC{MQhna)y<9O(hf%mvZH zr?l(Ft3DEjII44oXZCmGF*R=2)UEBA0xY5 zgn2<*wc_p=+QH*`2ci%#ELPfqIKqBYf6BB)dxeCqs^bmOJ4TX zFU(O@1A49KJ!^PdLqr2^t;pZa2us#HDfRHBMzMzQ8(}uqDCcXY%(Wx8Fdq=QW?FZw zAL!dg8@EJ&4_01-jXSIl1SumfbwG2X&P;Qi_cMD(I?otsEsr(2S446{$r_I}oz}?t z8v3(NzIRAhZ}*7rWR3}+8T=*l#)$7sjuF6krorjb7uvdK^oMP)*KBk^d)%JOSIC7P z@xg%ji?sj_Hck?oc0iCiAo(#fd`KD3qOb^3k60VPdBzE&N45<&-^_O%f{|_wf>4lU z&)OVF&r8&naaryM1M6|9qnu!j@^(m8`kMmA&yk@v$s;bodHPPgkI8UrKIMFb#7&=!h5sWAm6jj(K zv~4gT|CR#+>6{kaNQ)lZ6?_79lgc+Nbf}D@3^NLC=ExiSu(M;jZ#5vde=!A#klRAi z?)Q7noE5so3M~B*B3l%u87^%sX2~H^Qi7N~IDxV~*HAxdDC zKRMLdq(c;Bzs^3Zgkz?|CAnoEs4#U*?bjqHj8nTBCr`&IX_(q@i%cRWG&~7M(h}>9 z*f#pBw%@=+N#>|%tD=dz6CgHk!Mzvjil0jnfQwWPBGts$V<$VHN*q3}ir`l*Y?ml~?5OHTo&eCgPw{W6U}%K8cXb!wJf7u1HtERTU^7L`0G#U&I@O z5WUm$-FwZs!|RZHbTJ2?@`GY5Ycb9My&p(;*>roVu28}5Z_*=v{9b@--IU{UV zqs2}~wS`+zob_vdlfx1ia;u^o>NCFY0S9D}_>@iySdoL6orq~&j*^BETuJi-KHmwU z!w5bhfbS-P;R-Cs@dvRv$!UrO+`|aLv5I}wrQ~67Nimj@k|O$wQ7g&F;n}ce3_%63 zKJDfBVvA^;d&JSi=_Aw=pxx0v;#O;^3{gKtMLe#bp!7hqrkQ z>*G_Rin9w5%8-NMg*_pSuMS-RqN}RLq9aLHg{}gbLvXIt&xk^gX!WAl;11K$<2)9a$J z6sQ}|)2TSvQp4;71PbiiiHe;lc)Kb0hI~n_YzK_0PSM zrBGvF&-=Y1Wd=`X!m%czbQwMdj3ld8<5P|yfg4zk2gY-wS^;10HzLBb*ybSbP}LY`vsUA#<6)cmjeH!dcQ`(zIk3oGZl!z2rDUWvV9tCnx!RG<}}X!;e`# zhgOFSvWV!OgJQ=#-j;rw8V%D-k_}tMBFG_-dHywrdD>m|K5bblQF^0jtazk|BLBw+ zV(k*w*H6ryP3t^x%00=g0lq-~H(}_W2K5}#8R|sje74EjY8XrH#DY<$BmJ)NSl-WT8TZ17WJ1}?oF2=*B(@2-#CT(Se>-gy|<}LBxnsy)Y*6K9s{d z8Bm4y00#*|^Xc_vg%^`!A7~}ebB&rhFUZzw_4kTs-3NLbuA$~#&5UE~A1v|&c;k7( z{|Ae}nz8+ZMb!=2u`F4QnM2?692F(Ia-Hjtz{+J2PB%WJDOfp;gi{28mBh8T1O1k zbS3rvPVOg~66Lc%a4hn`q?j7-UxFPDUp#3g$ zF4#gM9cm|jRjT9)ko&j6`1Z4lxEAO0jmYJ z@ZUkdVi$QG76^DAdmhU|X^UozdrxdRiDrJB7Gy0x6Fa?$xO^#wBpMn14pRpUMc^VX zH7HrODLP5WI4v*%Y&}&)J6P~{|59AW|DGA(JUO}J$0rf-9}eWXJR;Kl{Vd?jOBO43 zXO5UVapDoac2bP7#Xam|a!Ec0z{j7!7%e~8R}Gt1dklQEm$pAub6vW-Q8U&b~l7>i<{se~5R{1hcbiV8Z2M}zJ` ziXQ&*4?BwmU=uw_)m+&zAM_R1Vm-8!o_&vpX_&C7P?t8Z4C;a!nU2Pxoq!2hO4;Rc zU|MSb`j?RG-Z`#~1eYmoR8=L^2T{;>TSLDeo_r_13Q+m_Y=48Nn&Jncf@d0tj{My) zuyukE4f$K4fpisFx-|M+goD(K99exx*%&L21qn_7kZhmFg3dGm-Qzs`1uL^?B+9N3 zsAj#FfdmJM!jw)+b!pMEV3FR5iK8ZpUH6lREv~k*KCeHFjs;Jo&V#30=_ z$7FCy^Ag)I!^f38aqN4MaiOEC2HPs&4opcPWS|IK=phlaQKa>(QdpeUa3VptBVeO{ z622Wa)nIaO?Uy=^O#kk&t>VlpQzW}n`>-0ozlxsE4vzA4%Z3!mPHU@85N;#|o zl7$MlNIy7@I%^Z>E~*Yp^{EVbBK9W7u-;UfzTXa zco;A{nI%~fniS`{`F)r2|OvI|+(h82ViE=NrK zo6X{pdA@j<1$%`t+pdigmZjcH^J$Ku;ZHs1M*4#gh1hXgz(tnIu_im(Q$qJxz5c2FYL$sy2h`kBmDs%6XlmEubrH3qP`CK$ohdbqORVvb!x|1sm z*@0J(6Wuty&Z5`iOCp5H@~#2WcN`r zQAkuusDR;HIf=y=M#*+>zI-f<+>IFx4`DBOLH9tAu!46U8#c{RIw0M1V!>ozFMD~G zw77qPXX&&t!*-5Bn1(aBOymHZQ*Qv)B|=`gB)U5Q~U&A<-stYIK6WBguRpZfUH}7$C#b^5G_6NQ<)xbVYz}r z=WN3}?=iDIJrL_`>%05fbrDm=wc7MHU7ej7)6;pkYUJj2y|&);Q*G37bFtoiHW1T{ zs0S#&s7@VX*l_6%$6q=#RnP1h3mJyzgltt9p|Arl9n+*|+0txtItT&8F5g^x-yR)Y zAi8zkE3cqrauM*&d%T`a!(YU9wLiRsUW=`S;?20&o}F6WoOZgIoh;L2e>A(`x1+S- zz#8${?we*Cf-TCPd)w=*Gj%4j6q-VayKfKfDO4I zj1Q_Vo{9wo;gP!+nco78-os^k@>-lZg+pC*|8&{S&p0D6_&t_K!AgZxe`zwM_fnNV zOyLS)&vQ&eAO6nP@@R@F1b5{7LG7!$(-fGhVuzTH5Jq+g5@=MFKqffc-+*~_<-R7* z(>wp9`EH(eyVt?4S@7W5sk(yzUKNGo_deQ2ww7kL@{XO(eA5MF-yD3z4`)p2D>(_4 z^dLKR5*skF0ok3!Jc0jS9(Xx2?%WwxGNpH=@dP=`qWV-0qkH0dClIF-^{);)QufD zVlk}r?#rEi^7sN2Pi`J$i^rLuWT{XwlozR`o63GIzEOChnpKGs8z__H2@6^EgQ@2p zn*~h)b(s~p%Z~0^bwQc5O@g2fj>^uN6&vckU=%;R^A-0Qo%vLtm`?V3?v7UyD{}B#CJ?Hm~+M?wAqU&uuw@5)-N9E>(7Qvry;; zH)|fST{KJX1B45Ip*u@$iD#GuOMOJu>k4iU@a^hs#bswH{~<_s1Es3^WAz8AV)ck5tF?s*f%v-T3{A`-9fs^C0@gY;QO=SGcjCKrD*lE8G5|icAJPi+0 zdR8#28DQil%_)6Q^2o6L2`!prsoRm+Z=q3AXFGed-_h!`tiq=(i)Uj0xT+hX!AdX@xBZ01n8CF!m5BK zQ6h5}%+m@uEPeCdpDJmAtEbA$6ql5k*cQ@ffa!P!dG5eW^};uoXpa-w%Via_;9t+f z;4|!=e&)T#$G)+y9|z_X)p^R_j)_9N9eKxbbadxfe@i{Lt$Plpt8<_~*2;5q-%JBf z2n{ubtQ58*T3#qZ9q&3TOS4-`191UtjY`wLj_7DNC7byPUx$>O{Oi7s1ps~p3oZ}W zxjaWR$fK=Yr{=`(cV24d5K<-RBZIPyT4gLt;e#;=4E+XZ<|NXDSQv(K%&I?_7h)O_ z4kpaew1pc-H^aa3qqvy{k(q$9nq%d5{SG0?c=6L74j#+>~N7?9Q zE9aIczB*BydwOSL8$oCuEaIe`7PKyyF5N$=Zo9zP%1YjGFlh+$`q~m3qh3iNiz%N; z_aZzuv#!|Bo(d8;@H=wE^g}dCPV!Oa1@SILkfSYur0ZA2j_apcjwLhcS=^GOA6Yic z?bT31Gh1>eR|C(oCV$J4V($Tp*ic_1f|=0D2$|Ai6GzOkrt{wI0VxZ~i~MM_zUa7` z;D1a@sGG7v=6D)4G|pK!6hRH*z0P>mEvae#ew+c5^TyKV(~K)38V1GiS}m$B4!RPP zpTOQ*J;sS50tA?n?(jMM;kyfjMRpD2Z5p@giJHe1j_IgW+qEKcYAONBmCCqEU`kPU zF*XITgM;puB@X$`;8A{_DQO&oflR`N@3cIY zk<74m0ns46PTamI!hWn7t!ltOtR|_rNfY!hq+qdsSr@7}o=wxouYvTH_1QxbV4cEa zB4uemhnp4(GxGOcDF*?(iB|rRzm+2{BqcXW3pc|(%jUb`EK^V39lO3++iN$M1eAVJ z{8UC7@|4lRm=FJt5c8%uzd>7zpW*{T@Ey z=3meSRRvmhgoGK(v0*-_2X>t~;_<`6*t9#GG+PR0`}BEv|NM2 zxf$HBs=d+c@4x9!9@!PI`$S)TL{NWbn4B8O^7hQi;olsXZf3hb1O1nY?%-6^^Ox-G z<8~a=6NPG+XouuqQ!^*OWUr>|5r!wQS$p)3n+JAHJI)l6M~n}sH-!kqbcmA=|Bzz~d!6 zeEFN`j-x}?wPUr_wk zQ!tKiVcJF6S#vlJ;ZU1{sS$__>p1~f{dz0QOEa7CG?yX?Vi<{ykTeRG4dk|>Ztc1P zSXbwwEB4aC6Ham1p_oF9567$bF=9MrfRKX(7fk}->DiTOd!cuWX*bpE40qRo^OpuR zGc6dt9oTn^`4piSC zQq8+Wb_Yr(n0U>D9r5TN*p0lzQ4i!XQZ=G4qNg8x@GCm=jQ;nWnK5{(gPqtjGS*4H zI;Il<=S|c05aellyW-8$P(NnTHqM~o>`q6a@KTr5y17Mye%7{$>qUL#@{#MsJ!|_N z(3Wx4;}oc|dV13yIXD6`EthJj#y-o2d9bHM;=6DV6EKBsUI~ypmINOC7g6EZfVi)i zeo6uTCQexp^qEq+Nj9fwZTZ-k_@qlkeikmEvH|(@S53*-(?JlGE5WXNT%Lr>O-W zGuU2I(k(Zdc#q(l)#2&O>R_oCXj!F8(y z?qZ7m65J1Kj$rm3y6}zoop%WMlqu>J6&U~#%_}FsABsg|@y8U9$SA8=D?UbUiZ8z# zZTHK_sMoj4)-W$&{4P8ob675#FPr{LSNh_5!0GHDU#G=C~b-Z}c@c9beau z*Ig%NPv<>=PbHw0-6(&my~?eC84tOIx`=Rr%Q@-4S$=%8m5|K9S##D-9* z1&R*)%;a%J6q$AlDlStr0B#!{mC$yfP_2+Jsl|+glZe}9q}H1^Lyqg!YvYwnd%An~ zZt;~NgD!Ou`e1lKa&8nN)B3LT_PEJ2&0+#a3w1P0re2s^CA!d7`xl~1!Ym6_BG#ld zy)=7@xOg=A-AHqU63B7T75v8Zpz%1(ulo%3d@GO0-~rYXbUB+h0Noj>V-Al2hH|26 zjHl}RVO+8rJIf~VFD?9C!R7Trl}gFawA{1Yn|fGUgPS* z3gabvU9FK@#o-19703GYa_v9{mXHH*H_hFM$oF4R?zEA#Gh~ifnfS~zG*U>pyx7+! zdE8Dlv=M3fHveM70PS#l(M5L-%PB8G{3!l0Yv40E9GB>L9DDVW7*mnpe7*e`WL2G) zuqC`R8L(KXo(xoZ8ya5g(;mtfZxI)H^-Q8$ibOU$hogV>01buXzyHYqbXG58g)-W~ z1GpF{dV{IbgR>_2I6S29vjbQ<)}!5meHqC*bGIfadVM~mfa?)ZQv5-o%9!w)eJfJ@ zVPcR>+JMQyl{<2(6Ju%a5WBQjQhYWCP}hX!rwj9aE%yNQt1Cs%gj0BUxpa5znKbrj zJ1h6)LAP5Sl$kxRP7bTCv{znVLi^Jn_Yvyw{e%4=>TEqmV};?KvFWz8u3A;Sa81-xs=g1Gssk(u?=zuiHA!Ga-|7$1$qLxlJ9EHo$~KS z=%dBsdi52@TwVqBBdQC)cspsW=I~o!EG5F3m zh(r#20L>v#a}-3w2KTTXbA7>aylN4?JQ6-UiZNl3R#^|Iq#c`z&Pb&bG7lb?PVUxm z)Wjpy=xdB$>$OHk=7%0GlBR~@eESN_VI$@FILW6Ft_Cd;`ud1PKu5rx6>#6UxkS7l zdI7E@9H&Bk{;UwtRG)HrTZpU67@oM%T{d+200VqcAh8>mh=rTZZLg3NqU0e@;k2Q| z*&!u$svOZ!cL<-P8l;)>%65Zmg5vQq$6EVw2nMU~T#xA@E zzjKz^-4`SL{i;lBn|ATRqWH<2W4iIO<|(sa-w9=OA)~Bb`JM-JW-p)UeU76OS$)R=mmCPl|r&QuR8Sd7Chz)Ri)rPgaO zVA}}|j*r}ku$>(NuPp6J2fWY7n(WtBiG4gc6~kZcMGHND#h%@WM*s*_b1qKmfE&c` zT(5kbMbh4>8Q-vI9w+n6ful(MmVAGGfEedzj`J&Ma|GYMCokln6=vaeoI74iB%exY z9fFp9Xnsgv{7!{wtVRma+2sZU2rA4bb`UDkHu1J#0ekH9L;2Fp(1&-Npqe(QA{zOg zS}ldV(3Jo*?IvsNGth>2@Hx!}pj88A&t=bi1een;On&t@cvp*!SS^cVP^^4~uW<4n z_z-}=z9owMJ3wV0UYmA%(DhEu_x%(8V`wKH^{2P=m5l2XLN*LQF)IdT$whbZQn7ta zf+i;qgR-lsE?(Cn@vW9#Tv!k;qut7;h*n=5_ZR%<&w=+UCSBr^@U9IrrN!!C|ENK( zyb<3U!GGtrHq3pIFC-9gvnCxgZL9Zl6cPv7 zLna~w*^3|rh7Ry6%`_HAXYIJShUh~PK&^3aM87F-8q!2lfHLQl%3Ikk^Do((aWe87f-3&dX&zwnuH}-HFfw zGzV~wn#P7O9{#L(Q|OV_Oz3!n+dcEQt3j)6)W2DF4-aj;X(Aros>pV4kFkXn($2k# zl6CDLqGN!+l9F|u6ux9X`X}1CPU@Cn{vNq(V66xkZfP|qenC;$F27R?%B!*T&Wxl@ z9B%WjD7~@@NW!~s*BR{;YVA=v=wR*!WJ<(h?#V9_z>2V{EHZgeuDr3nN`iLl3t7le z?<2BK>d)s#ch?eawILDjM!pI4fq(m1+Q0RGQ|isG=nJQ%s4fR*Ncy-i5@KuOP(1|? z%+0sQDPTW?FD7nQHg1Q#;{=EnHcH6Q(I8?yR2FkcQC70lwUt!Q5tQm7LoZBqQK@+fOdX!~*Ih();7~rW`rb|czV%%@eTZHN8Wha$ z9L7?pS_W|xC(g6Xuq=oC9!`kM9c%W)PvrSkt~H};uj52w2xe3?k42+n znTLA^Zj@XafG{Erm?g*@VlJ))l-PSUN9n}aj0-&xQq&-Wsj;ywVaJ>2iM^2x%$NqKCiX_0E4$nsU->) zqJQnT=~OnHd=v^`aKO`!2?!dE9W4ygv9^}gqLaVPqsFrH6)cc^_tjg(*?(Ha!{`j> zkV9JqSLPSt+fmHM!Snnk+bw;R*sI@QI}~^xex&y+v9Nan0|gJf(qWQFWlr4|OjK%|q#Y?%(ODzs2?R5f; zrc?`Rhn0RDQy25~VPh5~;&;dNYYi~3E@jIuok(iez?!{!mC3jp#n-I}MVjoN zPh8+?A)T|N9S-*%^^5VHq(v8iUzlcxt;&D{05tF@q63-h}L9vWk#7elM zhnL3rior-ebH?F;;(lgjnLVR=RLQRXd&Q|EwZY;me`0sv;@qBNJ9~!nm?ztD^i){M zS+2InBfgt0ZHC(s3t8s4IVfqBVMU{+N-F~us50sd=w^{W2zCBu<%?pMKe@Rj#^x)3 zFzS>#7;)L2lB2JB>j}xL&5P+ExNd!Jd%lWo;rmE_wzB&?Y^Ncx^C&-9pTc|5c^Ip% z;Ol-Ue-^X5UiCT}LDbo~YqH|CwE8-I`{1hH{ImWhctUpO#i;`s|A4<;;ZQOC;odVX zcefx7SUL^}KRX`3QnUNmS`J;eTYnl`Hsi`^?K!x%+PLwo{#t`vZ?XAupYh4%aRP1U zwfr#klF}OKZhpSFw(4ms@_Dhjnz0s*iwdqIXt`tJ+!Cj;uhx9n7R1IgW?FgN>eXgPWZZ}2%g`yO&9FK?iL zY}>zD>7>qTS1r}dSTZW*WoS~OpG1H{hmL8yPX>gS$gi*;R?E+D=1+t>i!Qq3Oq4*3 zDw`NAg>1f~oeO8CrqjpzwB?$+eLg4>1Yq1pyLau99f^^WN3ZN3@}i#6IKDeG&Y$!j zkf^Lxc@?j5kzT7Nwyn3||<h4GNsw50yNge9e+=wPVMZe+(`kW;?K_O3(Ha;ZW!BdYLNceGPC@*)JVh$) zA<(W|60cjLJ8avk_F~0EyYn8vFgB6|^0Q`7NR_>mzG=le+2d7z)o;L=2t!y_p{JJs zN&fk!e%KJ4ELR)f!?W4&Lf+Vy5C%dF3;3+ zGtUz4{7g}+0U3qF_lCQO4$3Kl>>bn?8&2u`z*ct1Mhef$K@%0uj2IL^HIFS~!$7zA zVi;GH(tP}4q_x5I-7h2TE`GJcfkW_}6i#KUayazo>-;v1!U*R?_}&Fiqr`jeHywR) zi-w65tBH%^682fuHuKCW8n>AceRo+p#@(c)6;{aPTFF%5D9v(~u7IVT2n_D<9k{R4!r;t147#%yeWpfuLeoXC~&>IX%# zbWqblBcvr&q$sTO$qPO8c+O?Z5&bPjn2W+3M{8R`-;2@_LB(jVc5N4jR7W+k7IKZGAj65 zad*pJnC%e*rtvl!T5!|N;iFtbOmU`|%hf&!Gdb_su|+pdEuTsVS=;P{{%P2@=U&-Q zT{*V$J2+(`K6drpY+5^7r>fpOjuxRegof?W-679-rCkD8#v?72<^&E3IBTlc1yNnb zbd=jt=^}r;#uOTJ8@mpL0qFP`IhWZUQMG@)T$47p|2o(0}q7 z)ZI{z6o{UR>JEzxqp;DD60iFu^TMx-y%zN% zlPI<|l7qZ(wjvz?^)80-aM9h>b3U(Pm2+Pjk3jF2m{mrbY^MT=O0)u6q@J`C>!8!m zaRZ5fmfX$cAvvVqWhGDy&@GC&po=Z#hbH4l&)i?n3O^^2lA0F1x|F@BCDK#96?w^> zO9#&jyjzjumL8N`Pqcpfu?K#V~)0DfErtp9<{eTawOc>jwYL6KqVx z2RRrpNAtCjN{4Ur=;1S{_dRY>mOlTQqrc4!GtysiBt`cii z)L&vwz0g|X&v4qlN;-s05z{cY;P*$eh}E(P8q(Y_oyVoW@GxjB99pT+`QHF+)AOLR zG3XLfQt6BKKw_8v$HSod!5}Ohx7kitz|5p7Cw#8P>!JsfO4DDuY+bgkGZ*(`@sa^1 zH5bcrOV{=Y#@snoQ+1SgMUR2`WLK-8@~fh^UrY3V${DvRA}z!jMlw-WEhdQ+ZRq=-Pq?jtP(i*6?KNu zo?y2J%>13wmQuU-T<>RCA5WcQ1#HWzJxu+tuC4;Ajjm}!aCdj7xRv5soI-JeJCxw= z!KFZ;1c%}jN^$q%5TIyrcUmYEDOTjCeBb%rxBq6dGrRlDxOh<^&R<|a4=$6u$60fZy{m?xQX+3t%K%@6^P3#Ixt9Rz3frMWd2mIN$bo9 zOQd@fq_2;_Imw4L+<#bd$Dhx*$7L)JoAn@!DbiI2B>Tyz;YhydO+R0J0dHx z4G~~)sAg3Wh#vC!wVl60hpXV7W})|U7a5c{LX8ie0E(#U7)nHQjnY%;l>XsYI)qtj z!zR%=*JK0~A4Jg)HR}uaRVneUxvEsIt-{Bw7gim#PQ+xCA8GZ_rHr|%D#Z#*&^n)? z5;kb=gR%YaQe1lYiG?^G(kGs^TZK%Yro;?Tjz{n@jc1j7*!Fy%^k%yHnmGq^&%^czBaXO=AG(C80IxgY96G}<_lvv} zjRU#_Mf%9D*2a*sVOxp*s%G&l40stZU;uG#QiGy4U`SskyCm3OG#iLK_G^um#0xd? zmNWREo7x}FTS)xSg-L2HRR0{IY~YNz#h2NJHBIr?VYqPDt10`jC=G|S{ghtf{Tgtt z8w69qS7HjHJ^sjqtg}cC?^>;fZT6G8gjl>Wpb! z9E|Uw_b7c&QXDt`BL>=UwZ@vcjF> zBP;m9AzFPwX-RXA+HJm}pBNwExTprUxFTX|IZw;b~u#v}d3e(tU`<7n~IF`f6EV2!(%~&ipvhHe>Z# zLE>oM5!=qPW8Mkh&N9E$o0mXvB-Qy%inUefcZ_6fyS%^%^jEcA(hZN>6mf0nC+HYt zOZaG((+uH|jpALZtN`Zm$*Ob&RNfP?34CKy8ojAS`5OJYowVN0ZfRbg;@yB#S$(Gt zno6}Myfk01^Yu7TvoX=+lWT*1>F!3|XO?w~6~bh+y+Di6$GDHT5@Alptkd4`@D z+#En&RTR2DyJ8$>7@mLw`$%cQ%Uj&n<;?X+z|1f<`jP`S`1 zNNdY}u(I5z>zcB9#U)_1k;Djc&FPw&WqhP(sWKe+xCH(fKn|DRPez8_M%xL9b3kS= zw1W#+g0;s-Zio`ES#%ok@@iW@V?twA^(SPGG*o3g%8O(=&NI>Wux&ARdu2ZzE-XFI}NX_+cLtznfI z$iat7DTjRHI${=hY@G;IL*`GxwE2)Gz4ds~AI!mLC-fHc6k>=B^5;glU7V&xl> zBqsYxEr*=5l^Rl&#+QeA#PHJ9bjc;DFy2wtk-@Pyu{XJpOHbyE$3}vCJ)+D5ITw~v zR-c|myT<3A#^R^P=r^u(UimnitlD`_*1j=xUz~f=zjMZ)$$6tf_nXM-jp?6PB-{1( z#Bw8~aBys5|L+|Mba~R^Peudb+*3xw^LVK+CdS0LI7DhrJIwjocqw^g_%H>0d3n+e zq4UxDBI3etFjX9QTXjm&th(b*TO3xd_}Qd*{W>4D%Wj##v?<)z$)?f^u4De<_VMzv zd79UGbC)YY-olrwXJ5~nzz^TX;iw0&5O8`H!sU!+C+5OChQK4%N?b@-mGD@Q5PAvP z@#JmIRYV-37Ng0Z(p2gcb^|(8(;}5hCrG~gvdB~c`n?L6^-3s?SEY~y*xsOLKml5A zU&;2a9767Z3i)o)ml1M_!mY>3w$|%%NO|P=o2zyyXo_KWb$gP#4sF1Rg|ZZTv#@9i zJBGt6ZUen?D{#O2DXd=WLf$7}F@sy*q}U4Me6~a4@c2yETtfI&Ld5kujZ9MC5|;%o z7y$s~#k|!@aZ!plpYDM27|`0e=8!n4q@;wogfG@>R*TCb>V4=|Jo-7~cdfFu%P*)e zA$TEOsr6dbEbJ;|ZRc?*Ff9W0HXysCWeR0W6&u59C|I`ojU=>uuQ{StbdRaRq9%K^ z)yoZbLA-2KtM69l)soGj$M8+Zu;YQOF?(fXRz=iAwZnsK z2BX`T;hh2ZGfaY4MVgunY`2zr{Y3EYs~60Uwn21TsnI@$^fOI0y*=h>7@(5JL8ph- zW9~qc3b;%mt3;gL-?xX2Et|ZPHgTSGU2S$TRHsrYU{>AB!BMaS+A5pl*t(>7&-eWGxh=H zi~A?dQQL$_J<`&lWl$_V@f*W2)Ou&BD=TX!NCSB1Io*Uz9={i?t}4fM1VZToENF_p^JL?L)(|!|l)f(fx zo(1NB#5iv(F?WU?qaU_n@DQx^UIK+!Y&TJ^@?&T=bO;i*aDhwBam+z+b9R#}oW;4g z?fDxe%t4X4S?Pr_;E0Tss>>6@dwHZ!ppF zjR^AV#^*eYQl3@Y7@lx?{M*LFHY?jp+Py~tXFpt$wf->JbTxuO^nHlfjq25a0 zZy9L{A>Jr@85XUX1(OfV^rAQ(@*h@Tmsl}Jo-;J&DLGWcI3Z4A#jRJrHCsn5#@*2n z(?9~pj-%%GI!m{?VBEa)sgIQ|Kz{)3Um$p4$(hKVna$Bm)&m&A&$uJ|e}OOWd40lC z@lyJ+`_knoJZh+xzqSt4h$d=!@d zViUfG#67fCuqPOMoc1PrP;K3+L6zj=yRoeqK3I9fkmt*uDwOzGm}YcNre=Sb_NMg5 z%^6KtmqvIa_0CS5mZA;<6CL<#O(~`agI&b2ztpwh9fHnUd+~{O!*;{Kq~Demf+dZ8 zW@}8On#C_Q?A1vaqoTSS=A6|^5tPVbbB_&WjqoR~UxE=LA2HkjL58ZpY-KI@aAL|cb zgMU5<QX(1e927rxggYDe5O>2KI@6X>&w0?Sf#!x}<- zUEpk~R|;9&!Z)f1A+69gUc=8AHo7(u7En$4jPv=?BxuYtAO(V}52TvKy;2ht+k$jc zHeUTnVE7!zI%Xc5-hH%ZrZQkI?g!n z-lnn2p}B~1Sj{g9fHiHNeX}zs&^wM-m72wLt6x9n9gB)@VFSJjUzLlEH0Fq-yzqT~ zf${KEzlsMrBi;o)rY}hTH+=ye4h|LW4|7}{_Z%uB!XHIs=??ur%5D`B!eR8lBVnl- z*quO!^r7(;R1gbEwi!_%IJ(}bR>vT0hrSrm?u~5m4tC_1-3ccpudSmGNX|w%l(rrL z7LYs5n za8_cb$VDjf-8JkB&X$d$C;C|%CW={&!5=Q0VeVJxFAUg;gbLiXwxic~*(B9|+9gqh zWqm|7j(x3^|1+ppU^xu^xwqGQ4ORg&q6iuGC@ih*vYpWC!3G($cURTLpkn?^$DegH zm@UxA!if{}6}C^AN93vB^!1E&K50|xG=&=w9~J3nvp4=J*LiQBFG%@`SiWN;7;N3z zsKbWlpDR-lw;R1{kN)GhT-~rV`JL?ibdRoj;a%WuYm$vxsb!^OI>8X( zFK-ccbad;q5EpsE-Tas2j5<<&{()Ss#w0{Rn!m>()*zhp73~=!0|AT(-ME&_Ajg-V z6n)Jf=>fEKrk@XQ#%+*B|H}HXV-My_kr7uPG2$65C_|dov8wRtsaFLRv-uqMem`IS zE})VW$@oS+slH0qPc2Cx3(BqREojn@?0y=T=b*gRh${?~T;tCCC39e6RAl}>+$Ou5 ze$G2=t*3Hg_!i{eFSS&;B;$_M8+B_wl0(X2F|murJQ$VA#fFjLO=rBCya=w?gFAq^ zVXKlC(}NaGd(6Lxhm~W&2G0jioiC=+;zD&NzJAKwQWGwHpI-xQ30j(Ua(T6sD${{w zPOCdmXOJ^H^G0^Gv?N?hS}L1E741Dndl*>`?u*DoA~Yg$KjIcfuV)4(mggW3E7u=o zM-T%@w=hsT;*i8BE`DTKlo=eR!a`a-q!&P*R4MbU3u#otkaBL+LJ2cdP6N+QbxzdN zFvr2vteXv-)oo$cGvvkM4l?8B;@dC7TCF3g_ zy?+OQlc@F72niH`FfWsuVZCN{iq|5UfX($j-6)Gh;;J-&k`;(;YTv_+WZJ<1*wcrL zkU>dpdv{a}fdF+3NffXuJFE(i-wK@RveqSE?zC4WkyaFYqGO3gsiUgtKqlG47Z)2# z$D>JsR`R9zg_khMJFskYvv#}&_p9Cxh0D(02T{&6fj2w3xht`gnCdNRFDyKQC89MX z1BYr7ERu^8EYHza;wCv;D<&rQ&N?EOtSSrIDdh9t$38gpUfLAYorGlL9-&@LF|U8i zv2J&`GG?%;Z8XN%Vmos1U`)NF2YGUGBRI7UN`~)thB!T+KL$&7&iUo2UcWiMB1$~k zZV=v~hy45un;TW%|I{s*W5_%w7yQkbJgTcebY#gB>F3VqxH&g8BK$!m3rX8{-m#tAG$9ig4pg9w^IeR(lScD;P*d02LqtB8w= z+=Y5BJHy_v8Eh~uvizIKGB#ZP- zF(#sH-pJKP5RLt))XFlS{i>btQ+d}gc6aDxJvIj&Bz_t#eM&*WEksECecWb63B}Y=(T?hrD`JssQrXQTd znc1kGTAlI1kE?d^6OiVj#f@JL{9cYnUdG8kz!?SK&AfPVm)^quTL$ON%xB<1NS3-U zdQoL}Jw9p*{CpoKMlkzX`77kv0qJX=u1d7>6_N2p4=G`)*J_0>yFf!bsbkbu4*TIk zZ<6WxMQt#(u1!pbS|*WjYHY#K(~Y0|>Bmy&0@L>u zeET%u4nizgAxXrDs)Q!a4PvV~`H8eTJsx)~N}eoif~%CK>NAam!b1e&!d3;U)Br-F z>+m)0mWO6&TqtfY>P#=G+@+HXhmq>~lp=>1@u!23fcSd~wC%hmX1FBOU`7Bf8VzcK zno>i-DaTKx(lCKYq%F6)=~I>pY=c zXZ(Mi&;L9BOc7Px}b@rz`*t4o>Lt`_F>N39Y#ofl^;%(mv9Q>;9V@R`nm$qh|02DEY`c zPVwaN-^3@{e*tg!pFAe=Q9=VBFlisTP;~#9N)!%G{V#Bg+>_Uc8{(t~R4Dl^HDF5j z$=utB2zvK`2_?U$29#Pqfqd@;0aR{}s@_uz{ym+B)?ZF_!k%0t@*zG>QOfWH{&&TM z=3n5Y8yU#s8jH{M`)aswdC$&BTAM zyA()Uf`{h?{C?7*usOoV zQjos`iTxJ^pz7-%C^T>hC9MMh&k8`Cc`~IyfR_P$TX{Oyw2kxsP19-+9)G54?LW4= z7-?9DkG81m|J_G}uI&<~#UR470VFq{j$wVHO+!P1$E5ueZ~qSNzk|kn=LyYyNKX7( W1?e&V;ouk_KX#7;$g#sed;bS4;sN~t diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java index d3714506..554cf12b 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/SubProcessController.java @@ -137,9 +137,9 @@ public class SubProcessController { * @return define */ @Mapping("com.actionsoft.apps.coe.method.process.subprocess.shape_expand") - public String shapeExpand(UserContext uc, String repositoryId, String shapeId){ + public String shapeExpand(UserContext uc, String repositoryId, String shapeId, String endToEndProcessDefineStr){ SubProcessWeb processWeb = new SubProcessWeb(uc); - return processWeb.shapeNodeExpand(repositoryId, shapeId); + return processWeb.shapeNodeExpand(repositoryId, shapeId, endToEndProcessDefineStr); } /** diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphAdjMatrix.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphAdjMatrix.java index 9a408706..c6498620 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphAdjMatrix.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphAdjMatrix.java @@ -1,5 +1,6 @@ package com.actionsoft.apps.coe.method.process.subprocess.graph; +import com.actionsoft.apps.coe.method.process.subprocess.graph.component.AbstractAdjMatrix; import com.actionsoft.apps.coe.method.process.subprocess.mode.Node; import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.model.DesignerShapeRelationModel; import com.actionsoft.bpms.util.ConsolePrinter; @@ -13,9 +14,8 @@ import java.util.Map; * @author oYang * @create 2023-05-11 17:10 */ -public class GraphAdjMatrix { +public class GraphAdjMatrix extends AbstractAdjMatrix { - private int[][] adjMatrix; // 邻接矩阵 private List vertexList; // 存储节点 /** @@ -23,45 +23,10 @@ public class GraphAdjMatrix { * @param nodeList */ public GraphAdjMatrix(List nodeList) { - adjMatrix = new int[nodeList.size()][nodeList.size()]; + super(nodeList.size()); vertexList = nodeList; } - /** - * 添加一条从顶点 u 到顶点 v 的有向边。 - */ - public void addEdge(int u, int v) { - adjMatrix[u][v] = 1; // 设置邻接矩阵中相应的位置为 1 - } - - /** - * 获取从顶点 u 出发可以到达的所有顶点。 - */ - public List getNeighbors(int u) { - List neighbors = new ArrayList<>(); - for (int i = 0; i < vertexList.size(); i++) { - if (adjMatrix[u][i] == 1) { - neighbors.add(i); - } - } - return neighbors; - } - - /** - * 判断从顶点 u 是否可以到达顶点 v。 - */ - public boolean hasEdge(int u, int v) { - return adjMatrix[u][v] == 1; - } - - /** - * 获取邻接矩阵 - * @return - */ - public int[][] getAdjMatrix(){ - return adjMatrix; - } - /** * 构建邻接矩阵 */ @@ -90,7 +55,7 @@ public class GraphAdjMatrix { StringBuffer sb = new StringBuffer(); for (int i = 0; i < vertexList.size(); i++) { for (int j = 0; j < vertexList.size(); j++) { - sb.append(adjMatrix[i][j]).append(" "); + sb.append(getAdjMatrix()[i][j]).append(" "); } sb.append("\n"); } diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java index c1e5b7d0..02d01d10 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java @@ -48,7 +48,7 @@ public class GraphLinkerRender { double[][] turnPoi = "horizontal".equals(direction) ? calculationLinkerPointInHorizLayOut(fromPoi, toPoi) : calculationLinkerPointInVertLayOut(fromPoi, toPoi); - double[] angleArr = calculationLinkerAngle(fromPoi, toPoi, turnPoi[1], turnPoi[turnPoi.length - 2]); + double[] angleArr = calculationLinkerAngle(turnPoi[0], turnPoi[turnPoi.length - 1], turnPoi[1], turnPoi[turnPoi.length - 2]); // 构建连线 JSONObject linkerObj = JSONObject.parseObject(LinkerDefConstant.linker); linkerObj.put("id", UUIDGener.getObjectId()); diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java index fae7e555..2d3b237c 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeCloseHandle.java @@ -2,6 +2,7 @@ package com.actionsoft.apps.coe.method.process.subprocess.graph; import com.actionsoft.apps.coe.method.process.subprocess.constant.LinkerDefConstant; import com.actionsoft.apps.coe.method.process.subprocess.constant.SubProcessConst; +import com.actionsoft.apps.coe.method.process.subprocess.graph.component.AbstractAdjMatrix; import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache; import com.actionsoft.apps.coe.pal.pal.repository.designer.manage.CoeDesignerAPIManager; import com.actionsoft.apps.coe.pal.pal.repository.designer.model.BaseModel; @@ -252,53 +253,17 @@ public class GraphNodeCloseHandle { /** * 节点展开的邻接矩阵 */ -class NodeCloseAdjMatrix{ +class NodeCloseAdjMatrix extends AbstractAdjMatrix { - private int[][] adjMatrix; private List nodeIds; private List linkerList; public NodeCloseAdjMatrix(List nodeIds, List linkerList) { - this.adjMatrix = new int[nodeIds.size()][nodeIds.size()]; + super(nodeIds.size()); this.nodeIds = nodeIds; this.linkerList = linkerList; } - /** - * 添加一条从顶点 u 到顶点 v 的有向边。 - */ - public void addEdge(int u, int v) { - adjMatrix[u][v] = 1; // 设置邻接矩阵中相应的位置为 1 - } - - /** - * 获取从顶点 u 出发可以到达的所有顶点。 - */ - public List getNeighbors(int u) { - List neighbors = new ArrayList<>(); - for (int i = 0; i < nodeIds.size(); i++) { - if (adjMatrix[u][i] == 1) { - neighbors.add(i); - } - } - return neighbors; - } - - /** - * 判断从顶点 u 是否可以到达顶点 v。 - */ - public boolean hasEdge(int u, int v) { - return adjMatrix[u][v] == 1; - } - - /** - * 获取邻接矩阵 - * @return - */ - public int[][] getAdjMatrix(){ - return adjMatrix; - } - public List getNodeIds() { return nodeIds; } @@ -320,18 +285,6 @@ class NodeCloseAdjMatrix{ } } - // 输出邻接矩阵 - public void printAdjMatrix() { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < nodeIds.size(); i++) { - for (int j = 0; j < nodeIds.size(); j++) { - sb.append(adjMatrix[i][j]).append(" "); - } - sb.append("\n"); - } - System.out.println(sb.toString()); - } - /** * 获取总图中节点展开前的所有节点坐标 * @param elements @@ -394,7 +347,7 @@ class NodeCloseLinkerRender{ double[][] turnPoi = "horizontal".equals(direction) ? calculationLinkerPointInHorizLayOut(fromPoi, toPoi, currentExpandNodeIsStart, currentExpandNodeIsEnd) : calculationLinkerPointInVertLayOut(fromPoi, toPoi, currentExpandNodeIsStart, currentExpandNodeIsEnd); - double[] angleArr = calculationLinkerAngle(fromPoi, toPoi, turnPoi[1], turnPoi[turnPoi.length - 2]); + double[] angleArr = calculationLinkerAngle(turnPoi[0], turnPoi[turnPoi.length - 1], turnPoi[1], turnPoi[turnPoi.length - 2]); // 构建连线 JSONObject linkerObj = JSONObject.parseObject(LinkerDefConstant.linker); linkerObj.put("id", UUIDGener.getObjectId()); diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java index bc26158d..70739396 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java @@ -2,6 +2,7 @@ package com.actionsoft.apps.coe.method.process.subprocess.graph; import com.actionsoft.apps.coe.method.process.subprocess.constant.LinkerDefConstant; import com.actionsoft.apps.coe.method.process.subprocess.constant.SubProcessConst; +import com.actionsoft.apps.coe.method.process.subprocess.graph.component.AbstractAdjMatrix; import com.actionsoft.apps.coe.method.process.subprocess.mode.Node; import com.actionsoft.apps.coe.pal.pal.repository.designer.manage.CoeDesignerAPIManager; import com.actionsoft.apps.coe.pal.pal.repository.designer.model.BaseModel; @@ -36,7 +37,7 @@ public class GraphNodeExpandHandle { private final ReentrantLock lock = new ReentrantLock(); - public GraphNodeExpandHandle(String repositoryId, String shapeId) throws AWSException{ + public GraphNodeExpandHandle(String repositoryId, String shapeId, String endToEndProcessDefineStr) throws AWSException{ this.repositoryId = repositoryId; this.shapeId = shapeId; @@ -44,9 +45,9 @@ public class GraphNodeExpandHandle { try { readChildProcessDefine(); - readCurrentProcessDefine(); + readCurrentProcessDefine(endToEndProcessDefineStr); toAssembleScopeLimitationShape(); - } catch (AWSException e) { + } catch (Exception e) { throw new AWSException(e); } } @@ -76,11 +77,10 @@ public class GraphNodeExpandHandle { * 读取当前总图的存储信息 * @throws AWSException */ - private void readCurrentProcessDefine() throws AWSException{ - BaseModel baseModel = apiManager.getDefinition(repositoryId, 0); - if (baseModel == null) - throw new AWSException("未找到当前总图存储的模型信息"); - endToEndProcessDefine = JSONObject.parseObject(baseModel.getDefinition()); + private void readCurrentProcessDefine(String endToEndProcessDefineStr) throws AWSException{ + if (UtilString.isEmpty(endToEndProcessDefineStr)) + throw new AWSException("参数异常,模型存储信息未传"); + endToEndProcessDefine = JSONObject.parseObject(endToEndProcessDefineStr); } /** @@ -136,7 +136,7 @@ public class GraphNodeExpandHandle { scopeShapeProps.put("y", y); scopeShapeProps.put("w", scopeShapeW); scopeShapeProps.put("h", scopeShapeH); - scopeShapeProps.put("zindex", 1); + scopeShapeProps.put("zindex", 0); scopeLimitationShape.put("dataAttributes", currentExpandShape.getJSONArray("dataAttributes")); @@ -149,7 +149,7 @@ public class GraphNodeExpandHandle { * @throws Exception * @return 节点展开后的模型存储信息 */ - public String handleNodeExpand() throws Exception{ + public String handleNodeExpand() throws AWSException{ // Thread t1 = new Thread(() -> { // // 1、总图节点以及连线处理 @@ -393,53 +393,17 @@ public class GraphNodeExpandHandle { /** * 节点展开的邻接矩阵 */ -class NodeExpandAdjMatrix{ +class NodeExpandAdjMatrix extends AbstractAdjMatrix { - private int[][] adjMatrix; private List nodeIds; private List linkerList; public NodeExpandAdjMatrix(List nodeIds, List linkerList) { - this.adjMatrix = new int[nodeIds.size()][nodeIds.size()]; + super(nodeIds.size()); this.nodeIds = nodeIds; this.linkerList = linkerList; } - /** - * 添加一条从顶点 u 到顶点 v 的有向边。 - */ - public void addEdge(int u, int v) { - adjMatrix[u][v] = 1; // 设置邻接矩阵中相应的位置为 1 - } - - /** - * 获取从顶点 u 出发可以到达的所有顶点。 - */ - public List getNeighbors(int u) { - List neighbors = new ArrayList<>(); - for (int i = 0; i < nodeIds.size(); i++) { - if (adjMatrix[u][i] == 1) { - neighbors.add(i); - } - } - return neighbors; - } - - /** - * 判断从顶点 u 是否可以到达顶点 v。 - */ - public boolean hasEdge(int u, int v) { - return adjMatrix[u][v] == 1; - } - - /** - * 获取邻接矩阵 - * @return - */ - public int[][] getAdjMatrix(){ - return adjMatrix; - } - public List getNodeIds() { return nodeIds; } @@ -461,18 +425,6 @@ class NodeExpandAdjMatrix{ } } - // 输出邻接矩阵 - public void printAdjMatrix() { - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < nodeIds.size(); i++) { - for (int j = 0; j < nodeIds.size(); j++) { - sb.append(adjMatrix[i][j]).append(" "); - } - sb.append("\n"); - } - System.out.println(sb.toString()); - } - /** * 获取总图中节点展开前的所有节点坐标 * @param elements @@ -535,7 +487,7 @@ class NodeExpandLinkerRender{ double[][] turnPoi = "horizontal".equals(direction) ? calculationLinkerPointInHorizLayOut(fromPoi, toPoi, currentExpandNodeIsStart, currentExpandNodeIsEnd) : calculationLinkerPointInVertLayOut(fromPoi, toPoi, currentExpandNodeIsStart, currentExpandNodeIsEnd); - double[] angleArr = calculationLinkerAngle(fromPoi, toPoi, turnPoi[1], turnPoi[turnPoi.length - 2]); + double[] angleArr = calculationLinkerAngle(turnPoi[0], turnPoi[turnPoi.length - 1], turnPoi[1], turnPoi[turnPoi.length - 2]); // 构建连线 JSONObject linkerObj = JSONObject.parseObject(LinkerDefConstant.linker); linkerObj.put("id", UUIDGener.getObjectId()); diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractAdjMatrix.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractAdjMatrix.java new file mode 100644 index 00000000..947940d4 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractAdjMatrix.java @@ -0,0 +1,61 @@ +package com.actionsoft.apps.coe.method.process.subprocess.graph.component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author oYang + * @Description 邻接矩阵的基础类 + * @createTime 2023年06月09日 10:19:00 + */ +public abstract class AbstractAdjMatrix { + + private int[][] adjMatrix; // 邻接矩阵存储 + private int n; // 矩阵大小 + + public AbstractAdjMatrix(int n) { + this.adjMatrix = new int[n][n]; + this.n = n; + } + + /** + * 构建邻接矩阵 + */ + public abstract void buildAdjMatrix(); + + + /** + * 添加一条从顶点 u 到顶点 v 的有向边。 + */ + public void addEdge(int u, int v) { + adjMatrix[u][v] = 1; // 设置邻接矩阵中相应的位置为 1 + } + + /** + * 获取从顶点 u 出发可以到达的所有顶点。 + */ + public List getNeighbors(int u) { + List neighbors = new ArrayList<>(); + for (int i = 0; i < n; i++) { + if (adjMatrix[u][i] == 1) { + neighbors.add(i); + } + } + return neighbors; + } + + /** + * 判断从顶点 u 是否可以到达顶点 v。 + */ + public boolean hasEdge(int u, int v) { + return adjMatrix[u][v] == 1; + } + + /** + * 获取邻接矩阵 + * @return + */ + public int[][] getAdjMatrix(){ + return adjMatrix; + } +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractDefinitionHandle.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractDefinitionHandle.java new file mode 100644 index 00000000..11cebea7 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/component/AbstractDefinitionHandle.java @@ -0,0 +1,47 @@ +package com.actionsoft.apps.coe.method.process.subprocess.graph.component; + +import com.alibaba.fastjson.JSONObject; + +/** + * @author oYang + * @Description TODO + * @createTime 2023年06月09日 11:21:00 + */ +public abstract class AbstractDefinitionHandle { + + private final String definition; + + public AbstractDefinitionHandle(String definition) { + this.definition = definition; + } + + protected JSONObject getDefine(){ + JSONObject define = JSONObject.parseObject(definition); + return define; + } + + /** + * 获取 elements 属性 + * @return + */ + protected abstract JSONObject getElements(); + + /** + * 获取 processProperties 属性 + * @return + */ + protected abstract JSONObject getProcessProperties(); + + /** + * 删除 elements 属性中元素 + * @param key + */ + protected abstract void removeShape(String key); + + /** + * 添加元素到 elements + * @param key + * @param ele + */ + protected abstract void addEle(String key, JSONObject ele); +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadSafe.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadSafe.java new file mode 100644 index 00000000..b40c98fa --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadSafe.java @@ -0,0 +1,56 @@ +package com.actionsoft.apps.coe.method.process.subprocess.graph.util; + +import com.actionsoft.apps.coe.method.process.subprocess.graph.component.AbstractDefinitionHandle; +import com.alibaba.fastjson.JSONObject; + +import java.util.concurrent.locks.ReentrantLock; + +/** + * @author oYang + * @Description 操作 definition 工具类 线程安全 + * @createTime 2023年06月09日 11:06:00 + */ +public class DefinitionThreadSafe extends AbstractDefinitionHandle { + + private final ReentrantLock lock = new ReentrantLock(); + + public DefinitionThreadSafe(String definition) { + super(definition); + } + + public JSONObject getElements(){ + lock.lock(); + try { + return getDefine().getJSONObject("elements"); + }finally { + lock.unlock(); + } + } + + public JSONObject getProcessProperties(){ + lock.lock(); + try{ + return getDefine().getJSONObject("processProperties"); + }finally { + lock.unlock(); + } + } + + public void removeShape(String key){ + lock.lock(); + try{ + getElements().remove(key); + }finally { + lock.unlock(); + } + } + + public void addEle(String key, JSONObject ele){ + lock.lock(); + try { + getElements().put(key, ele); + }finally { + lock.unlock(); + } + } +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadUnSafe.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadUnSafe.java new file mode 100644 index 00000000..533508e2 --- /dev/null +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/util/DefinitionThreadUnSafe.java @@ -0,0 +1,36 @@ +package com.actionsoft.apps.coe.method.process.subprocess.graph.util; + +import com.actionsoft.apps.coe.method.process.subprocess.graph.component.AbstractDefinitionHandle; +import com.alibaba.fastjson.JSONObject; + +/** + * @author oYang + * @Description TODO + * @createTime 2023年06月09日 11:29:00 + */ +public class DefinitionThreadUnSafe extends AbstractDefinitionHandle { + + public DefinitionThreadUnSafe(String definition) { + super(definition); + } + + @Override + protected JSONObject getElements() { + return getDefine().getJSONObject("elements"); + } + + @Override + protected JSONObject getProcessProperties() { + return getDefine().getJSONObject("processProperties"); + } + + @Override + protected void removeShape(String key) { + getElements().remove(key); + } + + @Override + protected void addEle(String key, JSONObject ele) { + getElements().put(key, ele); + } +} diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java index 3242a782..6623998e 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/web/SubProcessWeb.java @@ -312,14 +312,14 @@ public class SubProcessWeb extends ActionWeb { * @param shapeId 待展开的子流程节点ID * @param direction 布局方向 */ - public String shapeNodeExpand(String repositoryId, String shapeId){ + public String shapeNodeExpand(String repositoryId, String shapeId, String endToEndProcessDefineStr){ try { - GraphNodeExpandHandle nodeExpandHandle = new GraphNodeExpandHandle(repositoryId, shapeId); + GraphNodeExpandHandle nodeExpandHandle = new GraphNodeExpandHandle(repositoryId, shapeId, endToEndProcessDefineStr); String define = nodeExpandHandle.handleNodeExpand(); ResponseObject ro = ResponseObject.newOkResponse("节点展开成功"); ro.setData(define); return ro.toString(); - } catch (Exception e) { + } catch (AWSException e) { return ResponseObject.newErrResponse(e.getMessage()).toString(); } } diff --git a/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml b/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml index 6b37bcd8..e0075c2c 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml +++ b/com.actionsoft.apps.coe.method.process.subprocess/web/com.actionsoft.apps.coe.method.process.subprocess/action.xml @@ -30,6 +30,7 @@ + diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.method.subprocess.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.method.subprocess.js index ad9bf446..7ecdf922 100644 --- a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.method.subprocess.js +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.method.subprocess.js @@ -10,11 +10,6 @@ $(function(){ window.subProcess = subProcess; - // 连线框 鼠标指针样式设置 防止因为连线z-index层级较高 会导致节点展开图标点击不到 - $('.shape_box.linker_box').css({ - 'pointer-events': 'none' - }); - })(Model, ruuid, sid); }); @@ -33,6 +28,14 @@ class SubProcess { init(){ this.shapeIconRender(); this.handleScopeShapeEvent(); + this.linkerBoxPointerEvent(); + } + + linkerBoxPointerEvent(){ + // 连线框 鼠标指针样式设置 防止因为连线z-index层级较高 会导致节点展开图标点击不到 + $('.shape_box.linker_box').css({ + 'pointer-events': 'none' + }); } // 图形图标渲染 并绑定节点展开或者关闭事件 @@ -147,14 +150,17 @@ class SubProcess { cmd: 'com.actionsoft.apps.coe.method.process.subprocess.shape_expand', sid: param.sid, repositoryId: param.repositoryId, - shapeId: param.shapeId + shapeId: param.shapeId, + endToEndProcessDefineStr: JSON.stringify(param.Model.define) }, ok: function(r){ // console.log(JSON.stringify(r.data)); - definition = JSON.stringify(r.data); + definition.elements = r.data.elements; + definition.page = r.data.page; Designer.open(definition); // 节点重新渲染 // 针对范围标识框渲染 节点关闭按钮 window.subProcess.shapeIconRender(); + window.subProcess.linkerBoxPointerEvent(); window.subProcess.scopeShapeRenderTitle(param.shapeId, shapeText); // 提示用户文件已修改 window.subProcess.fileModifiedTip(); @@ -183,14 +189,16 @@ class SubProcess { sid: param.sid, repositoryId: param.repositoryId, shapeId: param.shapeId, - endToEndProcessDefineStr: definition + endToEndProcessDefineStr: JSON.stringify(param.Model.define) }, ok: function (r) { - definition = JSON.stringify(r.data); + definition.elements = r.data.elements; + definition.page = r.data.page; Designer.open(definition); // 节点重新渲染 // 针对范围标识框渲染 节点关闭按钮 window.subProcess.shapeIconRender(); + window.subProcess.linkerBoxPointerEvent(); // 提示用户文件已修改 window.subProcess.fileModifiedTip(); },