From e764a2b8471b535ecfa4251fcaee6bc82e61a3a3 Mon Sep 17 00:00:00 2001 From: MT-Fire <798521692@qq.com> Date: Tue, 10 Mar 2026 12:50:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90MinerU=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E5=8C=96=E7=BF=BB=E8=AF=91pdf=E5=AF=B9=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/history_detail/02-layout/layout.css | 4 +- index.html | 13 +- input/English PDF Test.pdf | Bin 0 -> 52427 bytes input/pdf测试.pdf | Bin 58234 -> 0 bytes js/history/history_detail_scripts.js | 426 +++++++++++++++++++- js/history/history_detail_show_tab.js | 17 +- js/process/main.js | 117 +++--- js/process/mineru-structured-translation.js | 111 ++++- test.html | 2 +- views/history/history_detail.html | 1 + 10 files changed, 609 insertions(+), 82 deletions(-) create mode 100644 input/English PDF Test.pdf delete mode 100644 input/pdf测试.pdf diff --git a/css/history_detail/02-layout/layout.css b/css/history_detail/02-layout/layout.css index 55f8439..6554686 100644 --- a/css/history_detail/02-layout/layout.css +++ b/css/history_detail/02-layout/layout.css @@ -15,6 +15,8 @@ body { max-width: 1200px; margin: 40px auto; height: 100vh; + display: flex; + flex-direction: column; background: var(--color-bg-base); border-radius: var(--radius-xl); /* 使用变量定义的轻量化阴影 */ @@ -87,8 +89,8 @@ body { .tab-content { background: transparent; padding: 8px 0; - height: 100vh; min-height: 300px; + flex: 1; margin-top: 0; /* 优化阅读体验的字体设置 */ font-size: 1.0625rem; /* 17px */ diff --git a/index.html b/index.html index 9998a36..f93f766 100644 --- a/index.html +++ b/index.html @@ -231,7 +231,7 @@ pointer-events: none; } /* 新增:右侧大 Logo 背景装饰 */ - .workspace-header::after { + /* .workspace-header::after { content: ''; position: absolute; right: -20px; @@ -242,10 +242,11 @@ background-repeat: no-repeat; background-position: center; background-size: contain; - opacity: 0.07; /* 极低透明度,仅作纹理 */ + 极低透明度,仅作纹理 + opacity: 0.07; transform: rotate(-10deg); pointer-events: none; - } + } */ .workspace-header-content { position: relative; z-index: 1; @@ -594,7 +595,7 @@
-
+
OCR 文档解析 -
+
diff --git a/input/English PDF Test.pdf b/input/English PDF Test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d1544ba26bd630269560a29091ca97b3860e4b7c GIT binary patch literal 52427 zcmeEucTiK^*RBmg5D}$FM-dTe(mM!9Zz=-PL50v;fB+%zD!m0!igb}C(py4+fYeZ= zNe?}gP(lI(2oMO@Z+_psGvB{=-hb}QojG&P*=x_9=d5R~z1G=l&pG@ro@-ZHe$Kp7@=v8D{&!29S5{tJPDYMa>~)a0Bd?f=pRc2X2d#<< zE$}~gf!R1DLx`z)2EOe`UO?bN_e#VwjlK`hem#tmije9u(9mJnlj`|YES~N3R!76q z{#DE~!J_F058ig&ipxQ_!z5zn`t83wU@4zOZyroq<}BE1yOpfSacS@P{hZpCYcTt~ zNK^p}6p3&F@Y-ST&XpF^Awy`lD&!=3d$@U_VN#_lXb5p7!z@FZ*Im zVyH9~DN;=Bphnt*sqsoj!>T!hwI^Z5e zcIx(|ZS#4C>O2K5dZ3->TS~%N$d14R(0#)cKFmVwuJrbj_}Y?xi8u6k?#zG6b3Sxs zxa2Gcm_IQ@&LdOH9+J3_c(LNfgpA(dBpJI|IK+9DR1!kHoTq*~-Eh^4OxfY{KNKYj z@TFZOLZ)twmmhQf;kk$a3X-E_JZ2P*0C?9`F{kBd8HStZn-|m5m_Nhcl{&`Y7N;D@ zc%O5wG>S}N*om>IT{Q8&{;`*dYZ7**P|7#^gfeuqQQPa^zRR zhFcEVMxguH@Ul@36pLJX=CII649#)93M4GHhldgu zPcbJx{A-h#ix`m-`N10L=dHDA7t59t=7WFe&Uw?nx^HAW^|6!T`OCB(TC`4GZWC(?~ z)Ma$3%HL_J3rX<;6>IU8mNv>~Cue4EJrGQuqPnAg#{DHHr=o3M@Ly0F!|+Atq2r(P z>wlp|l%(BV&;{TGGgf*MQ$ljNim&ZQ7@~7h_n5j$#Rb z0bPbvAL#;1H(insq{y>5GcKE(qWqbENw(ujzKtP$o|~IvI^Qw+H=x5lJ%9DRs&Sa- zA)lnkv0IKwwmt~^7gKO^vr+zYj^|%>rPusFMBHvet*)(YdVy&F1=QothikGIJ43(A z50)5w){p;!oX?eQii+?l^M{8u1NDNnqT;vyV(qQJMc2EGZg|~#^e)3X z^07de{P6{P1M7JO1W-kQVykbs#g|c$x7$2KTXs7R4i-5L{*9CuNK8&kliv&tZ=09* z4>sDJQUJ)OZ=ba-%IiW0h6Z$p2O9qNNXm*0JH9Wn`X>0_ULee(KYaYJaj>~*@dZCl zq|Q*`ll?pA>TrH|tz_Aje?!nSXlM*BUj2SkT$JqZ^Awv=58TD^Dq7Fqe zthtU?Yzkx(nArnj>|?@joGu7`63+BH zQ)U9xot*`(a>3f>tncraIIbI`23<7Ah(wzJqcp01u#M7R-#6CN*RQJ$`?pewwwc*b zq2l?OnrP$GuqHw#!TNHmQ#M$7(J)J%&&}zwr;(WGSNSo+z5&>?v9SLnv(g_wzDlh9 zdmP|!ExMqdlW^;MLVtq~_5s#u*=-$RPG?P_k}R=)N+$~t&h~Go5(Qa8sWSIYWBx|n z^w*}QYpZAL_WzeT^nVQN%1RP6DK=`79Ofx>UMT;YQq$yRIqX=o!TxDNjk_PS=>RM1 zzyHjz+HUL@V=cdZ{Lc)$+R-k~k;mOiTA8I}5~^&v=;g`rNW`u#kZ6st+O(X10*c%Q zZu{&gfI5%m)VsWkT=wODHld!@p(K9LlSIt8cm*Kx*_RgRB_c( z^9__|*)=5>mCFWOxxl5ITD|mb5#M<;kMZFP_UycAgWCxw}39=H46Eu%Z0r z4BJWc6!DY>rJCyZ?bM`D`(ZMu&1-5<774;8DtbMgt{!xA^JKn2)+UB2XvT#g9+(%~ml;#5*w}v+|8{ZS73}Hd~e$vVX8sg~3=AC6YWqyB9jNT=up8RhZbVN<-X1vT#BYc2Zw~!^uHU|miFrECk$aQ- z$Icr$j@?!DsH2I;N5?-%L$%WGUzVx%?pdz%?n5V7d=2kgt`>QTz*!irY?NNS$>z*a zfdoE=-iy;Ff9H4Wk2;TX7|fT0-%1p0;T^SW@lA|;w$jsft>tu)*-FxPB2z-{9YQGD z+;aZV!ddp66qD`KElrld^hW(%+-P}n0_FoVUq-jkqbjM!>lb?Cm4z%-_x7BQ`B}xF zD5pvuyjUyk&ij*}6H`pKIXI0uzJYkM)`M;#T5Ud0D$7Fy1_nkRe}Zu5SpB!6`qYXo zE%RD|Bzgurb`BeE!Od+#9Z?_q{b5wNes{WUrVC+;TG`wh5iIBCv4?)kw6VX|2?@k?ya}uImYW&A(sSOM33dzW7gBim z;{N^Z47$^*9@OU7W>>>K)7I$2{HaqLqGeJUtHt8s(ax)>O%|gO81MBgb+EB$6bJ}chuc84sOKyM9KCeV{>%P^&+!ncxtjv zY(v8YP+Nuxdh^l1qws@7T+unXr--S zWvsN8R2s#2TNS>SC`wLrtctr6H{5(hH=1R7B>`v2Z1p9f!s4o(Un(N9CYdP&Rf(_b zaqRa=y-+IqmcKV4JNE%>b0?MsTBvSpH!u4_iB*9)w6DJPIxOK-J* z=yCZ;@WYQv$LS_JKDI8`y!pl`$_`FbVV4?{Ukf*OP+Q#1e$H}pH{(oA$O(O?Gsv!n zE3yQ|V;%VtXjsG5SID2&6M?&>rHs>d?`Cd@#|p*q@?Y2$pX={34jm3HwY^@SsXR$a z+28uephx(996lt5KwO@5!U?M0JLvzmNY4Z<*H5cBB*a~3SGt}^J2<~+l=Y1RnIGu+ zPqN_t~k0|&n;vPZ$g<2kdmfQ9C$F$yrYh^j&U z^N?F{qTV0MN?}JRmCd^Ol;eHX^??xO%Zr~W%MKf zX|9D&sRYxyd|z7o3lHCU&y4N#FR*phz0KQwC4yy~o&jLA5oU4$uz#eG`H!glnPpNk z>AT8{sTpkB=OfES_h9OVY~>S=Ts2UyGkc%A1i8DX*w5_}^N&Rm#s3@7*(lrO=|OE} zU?ssoh&+BHwYt>(Zz0aNInzd=ktE$}ULGnIQc*}jYkg*9SQO+3?mVvl{?2u>M>dtJ zXA4{r0FrE)cdVHXp0+ULE*H6(vhDFB&SInf&J%>gJ*92(>5pi+nXfmjwtVZn9ZFcS zJuSiJ1Y?W1@R>_J|MY&GIE)A$;_n6C#OE|9NtHg`Jtc4dl5ny1V3Z6x3m3n zUK9UvUZW9bpN__A(wwz96XM~%HffSo#69~XG2SQQfmi(aTbLbFX(x!eHC@w{kqlzT zF3-i+FX`~M4&1JS2;3$N#E{JY9^P$BExSbT3!yU{IjFEfsGBCY5aX>uPXeC=oi-vs4!+W?kBZ-^slNMg%?MX?Toyev0Gd`{I?CD&byN6gZc zMa)%b*7RVgcJKRS?TRMhF&Okx-@<>?v8XxjPSJ{{7YanQ>WMdNU9-{LgA0o`9f;J$ zXR>&RTGlwX{O}pA{Js`X`SHVHIdGJpe?>E_-oE8WsG9ER?0Q(i4^K+qXl>AnW<&Ri zChM^Bo7a+{7H1b6hvr1h-gkarPyEky+><6}BdeE=qk*HC@8O!vtWZ{@|54!RSyP8a zn6(mNUXw`M_EL)Uaqs(d`QG>M^6~NOzwe1PRok~X%e2y^4>tV-JIyDQHHken|A5#B zObp8fuGLeSC=yv#1B?vUAJysCDwya!$g$|tk-%mO=49}*<&^S|8ddf98|gX;=OrgR zvXMYOtdO+6vt^(k^?7-1z@$ZT;W9|mVqkOJr@pz~be?aaHJOU*DAuA!$8RxayQLO< z_yart`Rtdr3P#j=RKoY$yF;V{wZP5c7bfJbQJv$oLLs1|qoe4j+F#0hn>l=xlZYxF z7AUdl(fo%o!_eiS3T$qAkkug4fB!VCA{2crE2*$ltXXH1&y_r2lMh_EQ1VHLL|t%E z>Xs>&n}%6H$YvIa)$6?Lt?h?I_rz_#tT{8;B@w@{E9N|_PS(iDbD!#9e?D{g^(B0l zG+kCbFv7U0Y%Vz4?)uavb$$fP^&=Gi@ZLc4CK~J6(Hr(_hBA`Z2pS_e!DVUS z?T1>EmJ4 zMbV!vy>zV6C4)j1mNs>Tu3D6XA0Wu&vw)S3B58g)u~xav^L@Yr^VWm&B05%6F`Gv3 z((bc^;~3c(37Y2DaOd%&Txg3&P!sE3%L_fdhX>%s zx5RFU*?cBcv^t&Uh2s7(|L{~c>~xG}abY)I1ELmEXI!M!ng8M-vu@x2;~fjSU?19Mfcn~G$y||9$1*HIbSe~P?kG-e6xu=9q*LwvzZLfF^DfL%7rC_ ztT1}*(WSB$86*|6ObLtFHgySQDHHk!%sAhCnhWYX%D;OHM7VeHepN_NNSv-zamAOf zVL-BTlZuUPlugoFs#*MMU5XlO_svd(i=X1}XYBp#{f}~eZkWU%TC8Q^u3BoYy1IWg zwZ)I~n@Y2?MyNAD&;4-Qwn$mxsu)HwJ^SRBr0V%5+!Nxx=TDvr<~gYRXD)DQXv;?9 z9Yex7ahil`^|l8LPP3)_&e%&%aZfR58UV6F`V8Cs9(T(dKqZFy#)-RG>YzAf5s64t z11@k(BN>AT0=^T?R)kNtn$#vimG>HI23nA|RdAQZ851$Erfsj)ZS>*q>CHBSpvCEu z9{dgImN|m-n+)E=UGq=D#qnYHrL)(Lg!R+DkRzWxFi zI&$J9x9pNrV0jae5_Nwxnr5S-Aly7ksG(EGm)lUnEWzIe;jXMdLMavrN%wA*R(MM4zQJS>j(jZGFv+u0y4tJb>vXGFXC1on%qW1aU; z211(3xCY}FlAahlrUKTAvZ2=dC+#gQ^{<7(rKHC6UtD*=rhQl&exkxIBC1t6!emmW zzw}%(!C?L@C+R#7xzH2FJqubaC4^km0XlfV1Uvd%i0~R@`0Nk`%|721FC%X1sIqRB zH2snMF^@Lch);H=;rFT1kDcR@lGLyHd07+sx+34=l|FVo+6-bZ%t-NH{a|;#m?CHe zd$VW+4U=dQJ^N?Cn{JLLiKS>UiS1Y_oz0>}shRh)GGM3$CumZ;KKQFZXI6bZY^7&7qt^q7?h1 zXEHu3 z2qKzm~8vr3;H_eaU2P3Ov0j#ouN?&I|LM1&Bf;yo_d(84;`a?cC#bGNF-p3`l~U zjzuF^+IH9d>}+b}m_iW;Nb^>&nPOY7(-~AN=|J{k3Pibl0{1<;K2S4)gajG6QiS0W zieYP1qt03j!XSlL5LfTX@`M&PwdD2tvuvUUpdKMj*9!ZZ#q|up`VQublT;P@Nr-D` zYjl4e$LZcYoIb>F^H+bg>cKpZ*BN?2AeYT;HVk07F>ivLZQF-)ncJK#&@cFjtxdPN z^N>mD>p^x+*gD%k!5VAFIveaMz*aZ5oOO#E0Bwzv{IhZ$vw#3St&Phm9@p8`r6rHv zZ9gdC)5mjVr}-+JJ$Oy6plcDHH_-k1qyDt=sLfMapI;)q@bABeQNN~vM63!ap8=jC zT83}LWq7Yt$wsO+g>EMsJ5?GkhOA^Bnz_EC>u6Iib!_s5AJLsiiunoEIawC(f9E%e z=OY#y<){FR9QryUi^e!g?w@mRyc4SBWU_O45mNNHRh_k<`RScKt4rjRhJVc2+dHdL zoJYdTHJOA<5rMi=s$RkMaJ183GLZ)4qsbC&?VvQzD zpywyz$KIW(ATP@6gb(qmdAWF}b&C%M{`@~q{bYsAm~!QTt}2#uNKwev=I#ubudZ(9 zCU#K8@G9-#?Sgyz=C_#=NU)tnUy`EoB~yk2D8O^x-1c!aWw3d+G{RL?fEOw_aL9_U|S9+_b` zN?JoPxQkn?!r*amsum($^1ACDyNr*-QG;ymrQ)T%z}-+dHhM1G5GMz0g6O_ z_w6Rm{c)w9xN}t3A$rF`BH+l5;^Y3C?tDW)3}U|uEFk459G!>-=8@N?8IW{gd!Nmp z9@W+C30xd){`D3HV+&C{r`7FJEm5bYlge{Cc{a^b6TXbeFLkwZ{T8LA@?*tD^w?*R zwvE~c4zittPM%Ir0Yux>x~M4KokU@lH-hc>&JB3=G~A$Eg=q1@#AJBT_mIwb&U+Q3 z^Vko#b(oQS+SYQi*A{m1moD7iaLDOy338MbmAk_oII!mUF6)87b!uvJk1YPnI_ z5wv)gRgzo7eJbeOleBW97_kNJ9CazF@N#lE@L%rnD;s9^P%t@JEo|z?9ZX%uR9kzF= zquE;nmY^hDAE6N=B%PjS^VRB}-PC@25`(R5QIYtJEkt+bBh}z`1@1|YD)Uz2TwIH6 zf|G$mLrGNU*sI#&BF(x2L0l8tDD||Ut)uogKCH@Hvk2xQ!Az!m@-ivbEe{uQHf7WC z#DWEYjK@ix@o(}wF#rzWFOryJ;|BA%kz;#tM%*4gYK2UUQ?9Ho55G*aLkYuwiClyP zXt_cGk@8oI8jk7Yb4wg)hM-O*eT8qR81 zf$+%J3h~!dU+`hnxJF(9n zBNBN(hEu2L8((b>KV^d+IzpP;aqKg6)h2qh|Y=m)q z*rj|prj8Tq#^xEr?|l_=dTbzm?6F?wxn>h8e6>A@XN4Q{#V-EE-+7L2iaV)35a9_A zdC=_kz>dNdKzfvhE`wC&hD7c65n~&N%oQ}0?Bc=Ya|0H(EQ>JS`TagWTk^GSi_WRK z?9;sZq2=jZi@nBa$JnhWG0{j&rS2k z&Iopm=`EU-Gmru0HCy%8)A=t8!v&_x)CHz^@Bx^1QA{njXD@*qu+cgqSS4`aQH6qJ zO%0Ox`{Ch)8$nNY!DrHx+1o2Jq*q(R^ZNN7`0f$U5Q499^ij*--J0lH#d=nhs2GdF zS==`sKg7ar<;YW~uQ`ok%5%4$kk*lA>Jw+7{j=9IQ15J)ikD(NCDn8arPv;9PN;1m zHILm7x8^KzsWClBmMXSNmZ}f=>@9I41Nd(5x>?3x^ek)ef*UQQDu?nYNC`oZ09C}T2_ zO6G)HonB%+zg|wBZm(Gl72)(On6@`hnHqw%>38 zNnpwO`vga?d*~uAk=-W*54`?}x~{VkgM$AE&UAc3V)gHGIE1maEz&G>+ObI)U*O#U z4#RS3Y=nKh-qJaLP2|iYgwSIGVS>%NuU2yIg$#6&8_3CI0O)4Er>3AvL^C14W`hrP z`}A6H=gT*=s88$nQ$~&RH3$LJHq=l>Z-OLE&D6F!{?_;Oxz+Oy#Yh5Q47_XpCIs0z z_>A%@Ih}6q2K=`&17z+B9jP!LT+zED(@5}*M$R&7C(3qC@TS_5s!5kBRW=4mw$DWY z!6wNUwuDbv1U(Jq$5=6S5{!2;n$Z^up5fTno9oQ~3WAeFyu^Z6=0|)vkUT-nNNf1O z_PzpA4RqPh!m&{{B{n;>Z|ATW>~S1=$@qxBFl8%r9q&`J7jksQ@Lj1jGDP(fWKTlx zKzwrqD0Yqyna`WxR%)Vw|<uQPYCTt=kWv!;k9Y*}H0K@YjzYGJd}Tnn|@xi1kQ7a0AjZHfT!1x%8@Y4s)of%oPqtJYyGyjS2%>4!R=j>pc_cG{nekP+r zEV;}ZcKPJqQXRZQwOzukr%t95&gSUh|N643P^#Rk3aw+&)n9+t1@%8?cbSSA@E@{& zk#=Zip!=Jh$YFKV8~R-D5?<8YJLkT|t{I42Yb?>LwovP3uz)v+6~Fm>{?UuK3=ixE zH+FV(DwyQ)np}S0{F1&4)MJA5mLwxWXCo!t)PLAihvjPE`~!=*BWlv7I_F5d)>nfM zjJoD_LWd?pva-V8xZNHu2)yDZo2uh;OD~_^r|0FDLH8th4fXHnF#dya4VtNVYaR!y zR%(UP2t=vV27T{*cw@mG{xK+EOB+w(d(ENOuVso4zuOT3Sqd}Z$w32eO;)&kMf5zWqTO=)_c}ho@ycuH51(0$2&A0$kj{e7pwz7 z*<1=s&q!CmT>E4-&s5e6_BBt1Kh>?iw~f6Vl_Q?QHO>T7%mdV_9wjH`e#=$Z3*ngI zaoxiy+MAj`ST6)$Gah3;D0M3INb{z{vp+*8_B!wZM~BVKKLQ%iv+)48Ur62YD3=6< zIa56@)2ooNq-OF`dUWQ!j{}xovK@p-H|{@A9I{G(0jN$V0*;SXV%?8M61V4LYCc28 zE&Ww7@)3<#-b%eWH%r{pD$ATn6TnHcv^32!{LXgtjh+m9JN+f@Hb{NPRJ}1X+2}@P zPjVY~$U-CmYoW(XGpdJ7E6lBLa?@yGHfW#*Oq5G*mlbd8J#{_YpYwYsXj!SOtvV#k zDza-4vCr|`;D(Zo;=Y{DxvMLnXAdziQzbZ&Nw*Hox?+?fE9uJg*^0@ zu4%*mf-?m zh<)W;vV78I$ZJDCZ3Scs2Gm?q-rgM6I5Xoh(__B9oe!hDik?dWYVr~J0 zxwY(E9rSWOtXI7qfHMu0-k-IQxiM|Spa#XrMXbmid{rE&^3p(Bw6$^s^j)3<|C71% z*phT>t2?m~$c0h-oe66_5>a}Y-2~(snD6kgpIt<;*O>u8JI{uw89OYE6c!Woytyt>0U*e^A-+vPbSK62SD)^ z?s;qj)rlKGSN7@7HL{&zLr&2&s?HVqPUfeSZ~4y3hRe$A1E`v`d$LD)yKS7ZgCg1K zE*PRZl;vY~!vzE2-ztl8gAnfzK2~ls?Y{SuT{P^V%0cL7xLx+5h@9B_iyxY_{0R`o zm8`^ljt)7yzU0OF?EvRv0$-Tw(#CXROVS@q;7!m%(#q36Z1#ix81m)mDr5|jKFw88 z4|mhA{_x`Rq$^K@y7ZKE^A)Sd?Il$!jk6sR?rNe!rRnHp*sxZ;So5EMUL=+qgRj?> zl!vU3J#f>alYxvxZ|8Wc>d@`VS-oW-R5t~&+;_9+xzRH*^rm_A?oStnuj{i3Xc@?; zhRt|fi`CBby~!BDWlIy8MUO(MYe8Z~_$p0n51pCZK`o+F@oawy-1_LjkOEqF=Yt{q zuF9a=EY7~!`4^UZ63pDH;hm&E@qz0MQ?^y!d}PQQdUDaCPV)ds{-13pyLum-%Pq?`mnM%N z@mgt+Z277l>?Ls9jC=SrG$7l5ioRx# zz`arAiH=SyxQv!}dRbpxVJSBIt3(1k>e`a7P;zBiA^B&+aN0AhU+qozGYjqWrY}gT z55`|?VFldlb3GLg_2KNOkWkUJ*KJC)7cIf6lY<^aYH|UEoGqfYoi7_{Lp-x!IT$*Cjj( zKEnhlPkdNDr~;+ZO)=n^y2>$1T(QA1z3waMin( zoBb>mDKGJ_D|Rg{Xdc~GnCHKz`ni6<%>p>_shGEIkTcpNG>q<*Ds(t_T9u&&qIv~V z%P6Swu@TCfL;eP4_jY7Z!7dLe$1F4L18D&zpA_p9?;ce6hYgLwc+6}+iX2_TD77C2 z)8!812pZmtaf(Lm6y@t}p@ji-C{ifY+w@+i*P8R&pb#cwB%}OvLWqY`(n6eo;-$r` zj|-r`pO!H2OUG1S4Uus(DfoI}zMQemxWcQQ)H$xPV||xvDYeIbeY7JqrLZieE?&l( zVDE~&=>;haZ$J+y20I5;Xv`n3oQNQwKzZp~;Hi*rd3@R;`|JQQmm-fQXu)gMeYZ_1 zlgzKd9N;%}*e?~Fj(4-S>z@h0YC-GXGL!oH@VMYnv=6htm!$7Y4IA{Y50oYBH)51_$T<=2VEyQj99-B0sa$`kXqz0DK&0Ccl9tlDi_);UQ+z(8$Qbw5dS zNH$g0quOTnX@b>P_{_0;58$S`-Vf9loZ|fNod}ug#xl9g`kI5xY0vGG`RDN^$#rKe z&}<**u+w?DeZ`}%zH|hy8(OuZ>#*eIbH<`Cu;&8c<=c3Q3fk@?x`O+B)*X(-3nrut zSMSKwwpkd?GnNZ9ZrgVz<{w1K$%7r zd~~EIf$QsuyH?|l4&>4a`k&B|L4`V49V5lGzD342cOkKLEb2Dg=V5(oYq$u2Py6SS zv{8|JUSG1`c@{X%$Lx9VU>gc(fQqO6wuKY%+g#&M6&)G^YOfDU$UPqf3O2xZ@}`{| zlHG34CYvc&3XH^i<}X-8-y1~lk>4}qz7^1)=h0Mf$;xV&R8xE>pdGE^n*R{n+FAcO z;DN!7{nx0yYF10|?cvts)1OH)#-CS!%H}e6$_p%&3Jx1{>iaEs3vIF&8+@Whh5|-^ zWuR}Q1xxSrUx#Y3bl#ei|7E%#u#w@rHEg*GyQMs#wK-^gA-JYgcT4(xW|&wH{a8Ys zd@!zKV@h2p=-%23s2k+*s1{U67tJlesDHJRGrz(t_RXXZ%n=xs(^!^c)~5y=sA$Bp zq*;G%I=s~C;n&EV2V*x&QrIdHnT>+YTp6_06(K#&EsWe2U#rh!8HKrMh5$c>pX)S7 zp!a#TEyl)Lj|llg?;*+CK z!9(@AT2{{V>kQ|@gEFpNdg!|iIz@3!kJ=kCYSRIhiL&=0ck6OK&#}2LwG8hAB*zuD z%C4&r7>n)CMcZo{l9lJw^KRgH!bEMfA(OwFT}Q!SXJyk-c2|e2A8SfKvW)-qh0J%) zc!~L&$b!E%^jj!dJ*V5}wJzE)w7RM|Bc(&Foj3mp@+1A)K+y+wWF*Yw<7rVOdfMra z^7u6yYxAGqLSyrlUymL+N66Gp4BqN8?Qd<$+i_sN|Ht(wCn^mYx!6ytj54$fe5T-$NW!E zT?5K!^(~({3q#$Zht}r85Elu6AT(Xx>9g!Ik(*6;70M!y>zoMR)va9&$tu8H*O7(t ze6Qrzs8nox(wM`Jxm@f7AwS)r-Ud!;M@?5@3)=W+JYAi$PRe>4-1BFXjp%2GuRdnZ z8td{g{x}(?+=;d(h}R_D;To z-d|u@#a+v5%rv9$2~&;TOS<2sjLR#iZ(rxDg5Rf*!w(x2QixisAXU^Kaw+S%a-?!d zdj9p&sc)gKFEEQy!?L5`&pKni`_~45)Ri|S^IB~cerK$Uj6X4~FDQR#xhpIyzHkjs zk!gTdUCw)^Vn{+E^v0l*9%~nJL+szKx+`N|_KbhX_Utiv?VUZFRR2VN1(8JTeg%X3 zrgVg$na??~1Em(^le7qwbdr;E%$>=cuSX-n?W-t{4-FZFl8jp}pH z1}4x|F1;t#4o$Iqt{gk`Rz8b^vVy1bJzmc?G#*Fav82sn>{wvddr?ACw{m}{giIjv z5`JjNqkn!#yvpH2kV#3gxa^eVxq9j=slCOeGqpgTiIfB7+ep1q^}_bQl&q>$IlP5 z7o}d9)ISZO0zb<}OZ1u9XhIxToCM5yw;J`ou6~)IZg#o>boCWib!*rq*`oI2;Qc*4b5;UWDi_($THVvw08xgb#}b8>ykXJ};b zyu0U{fk)_;RbPd*ny&XmZK|TBf4v(!g2i63^lD>(koJ-adU40Pj;Anjtm{OV`rYO# z+C-!QSuy-DgTUhYiMz75!CSWX)IhM`S5tYJ@KmiW8VN-dv> zc=j}i>P}#oNF#e|YGc7?AtsUWIFW1UyAhd3mTt5V*3b~jY{a)pXD0=HwWTv70%z-LW#%i3x!1M}C~v$fUsV#S)W_!caod{9+E_??;pgZn`)HZ*w}_+%AOUf9sWFTs7mSN?19~|N zVU_Z2tuX_52h8K}HD94I*RyGKavthk;TQv)zn}6}@=t}mBHn({W9=nddFSA}S-0hc zKBvcvv60tZ-I@SF(qmg85t9 z1_4h>E6~%htZ*><*Cd$k-c%*7Iif7oDb81m6;YXB>F(xZU@wu}9Vt4#G&}&a206xwL1%h@krO zAQKMl1cj{}nf00|q}-6deVgoS6C&BmYW$U(SuI4y`@A)g*t~8(Ul-dzsG{>%yvX_N zWEtvjE$fOcaTyPWI_!O8+6osCDKc_*5Gw^_8C=`us=Fdok{VDg7WvzQ57o=ws(J?- zV;@|8NqiXfvOfeJlaBJ=X7766oC}`zY&wp5e#d2A4LQ+XlOMifCP_9C@P|lFU7)Ao z9Ho%vnI<;@b5^ls5LbhbB5 zn;B;2o8=>5bzZX{n<-u-X0yA7=(q80h`@c;DBKH#BtJv*vsdv_ z#1`>4-DS5X4-_m^eJZ#8MlGE&&Q=55jh7KKzvf4b*1spZoea7|8bW?v10`x~>B19LUPZ@Y~ZK1>) zmMB!?&`gxqEKg$=pUG!=73eWR%{BUkgby@k2j_ER3msSuLigCD!|XwI8B;8K^Wl#y z^$y2VJ>0*<%ZVP24!Pyizu>`P0;+{Q2AyTBi@fLKR-RYaz0h}S50m|w+5C;7XL&WZ zAtTL@E=j9?KBzut%Y|%Ot@)bz&{6qm&#N45u8Dp#nXIOQkJ9EwHWFDy=FH{G$BKzC zES5k_^Ij~^oV1r-EUsniR7){putqf&xS5f)HgK0oQX-!Q@oWhuPP*BvO4T`DH6Vxg zid2eo3!O6>^C~p)#84fj>2^d?8$zx>_vtTW?d2Zx;TFHz)JL26B@P$kYdernU@eXp z7n42Fa$jbLEZON7I5#z+ZIQdPa_E_Ul;^thC7+4!bH=+B(PmIy8{E~sXPE+RhD7>5 zdOwQ?Z4>=4T&9C~OS@5wrAq&(G(KAzE>pE86eK3j~q&@Ghe zI)_rfk)Za5C50x2)Zw1$;l*KYvsgrI!SwZ3Ic)ZGeY@JX$@!JY;jL2CzN4`JhHWIA!$=Dg$4QvEt@QMo6QW5_Pf`+;x(ncRRTFTr+nVKJdZsk z3>cJGzxM617_KePU;A5}b1wA9RsA{MK2DrVs&FJ6se*vGpKD6rX#L^N`-aKaRI$`` zWm=(=#zVDF#0#8nhLnB0y>{TT+;2b!PzHTd=I;KzLeu{TjdrNyArwJ(-i6hUI;(b1 zE=`VVd8}K5?u9bTxhD>r*?ZVH3SineeB3oGJfB&hUPhC?J+F8@Scxyzgv6Nn(UIo+ z9qv!OLRkpTG0qlOFw-VpYliUrIO~mQ_y+6jXzrxX;FMi6VPyjx z_6->vxS$8Rsv3PfGx#|Uh^kJW`W#Y+T9=m|Z-UIJF7)kkEZYs*rN8!F_%pcYpfbn7 z_QfLa1~h}dUct(qH1Vw>-P^dMJmJ;Rs^w6c0l0jLHg4y$KXBD+%}U7XW=fQm3XB7j| z{Z`4qd)V0}nCvBn?^U>eX5ZgKsd0ldh%Z4R&_^mnAI^!#JU{{+l#6DpOU4^K@(QMg zBGn0F>Qy=9(p~cLL_kSSd$XI(hk73s4^QiKX^^;fn+A2hO z^~FSq`QFr3(SyjG#{zW`Uh2YDF3Mi0RJ~T^(V>7w>Y)DxKS030JVI-|hAW)5N?5}6 zyC$~Oa^~8vlP>Co3YJk5-}al05VI-%n{1_Ymjp<|x2ctUYSILmGd-hJ+$v{P$2ce4762k*kP2P3EdMt+hjrS0_X=N!16qqX@Q z;EqTkd*D4$EWi1=sAw=zbVyZMgD%_e1vsl=u_wduWw?=+P(8 z!!~f;=LCA(4tx%|FC+9LZ1?v5k3UCm!o6*rza=@#h=>wbQA@GXbu-7arCY*rhM2i(uNYG=R4vegB9m$VP= zMX-5}^4B6y@HYp&tnUi0oYe8nf|=~CU0hdb=W5abp1Kjw#^2j`gM0_|5yGHS}QXh;m)oj7_oOL(y`vA&kFP?Ni^-w!! zBtHvg9=4`ApRqIrqh119u9<6zHZHVsouZjDoa$g@#k4^Mba9+>qGsx_B-@L9&*98D z9=ylpTO3V8|pZVT6BDxClBRh+vp8yJWGJ1T!SwTWwdHXbix8Tfj&iSK9C z)0R!p(y|h)qb4p7?7&1&7ws&4e@8XWy{|^DrnGYWvmNs)>ZK0GR7dULzrDVQzgMVY zS=I$Me-kYb+kcPt1 z^_&5f@|~Jmw$pOHao)&PwtnWLmO8*%OoF==HS9&zoV#`~-gf8zKCOxtUn8xR#$eUk zuP2MKf|i#3qR^uy;_uFyHYumg)Ew+PRs}1x6=+L++y_o@9m#aWOt#_}Q>|c6s0h|8 zyJ^As8lwd%)o~oP-nid0E4dUJ^*-ciE3~4&@87_&tqvM^D?aalMsMMMRXOf!4d$E8 zoK06c|GlYd{*u^M-bOLD9Y;*ts0r-XXHRnkvE8fvoL_Ba`00=;z9Dc6f6Ld6JMA~i z&D_H~$ob?wd?V6g+UD*Gr@9y68pWs0{-4H3a4W`_hhUH2hw<-L{$}!+{esflZS~-V zktci0#O4N%@O_Fpu66I{=(&LwNCAIqWSZvycYbR5JJbW5xvk@xa4qs{t0TwR3T|@u z^DRl6A>GRNKfcGBx0RZHt`3@1;)uhxv)SwbM#5dl*Gc}m?>3BDy|e?qX>Yf9^D*-D z<9N(HN`36_Q#Nu8=w%6ZQoA>BCf2}GU&mJ8#d7a){+qV#)X$r_`rS)?(8p{3uVq`= z>blr-dfCP|xQSmmb#M)=kE3HVYs?>`O1W0!|AwX)V|<+BL7eMd_W$*mb|0kfX=2|@ za{acOt2*RS}d z5dHUtZ460rKfQ{*tdS*_;9cF$fB&(arDS*IvG3FbJ56oD`e9`-cdF(HW4omN998_4 z{0;2Ojm)t>gEY&dVD(E3)y(-UXe{(W`|k)b(iPwsL9z1CRg9 zg$7y#ZM@5Wlfd4Oo6oV>Z0%-_B&MB8=)TX{+p{)nwKwqXx3imIJN*jnTr?hdaOef>$aPV>JFcRtBggEqdW)5PEYw^0-A;ySUd z&(EjDQ^J*f|1IZMuA2>bJte8Z`iR(%V#)~&dsgnJ(TycZe|w(!fg^X<(*3D^p%qk+Htdjh`S=i9YA+*#zHG5FPi{chNHxgUk) zYO9|Q!+iwhbd>9U*2`>%;)m=TdtnXS!yUX@mh~>g){G}O!1n-J`5TNMAhx?%=1Hzo z#aT*EJA1EeC)eFuxbEbSAon9|oNI^nuGmdni|*ihoc$X49;AC4^WTCpKS7(c5%uvP zp26&b$1$3G$|cvgdHm?Wl_$z8_%r%JbA0 zw(E0@c3CM>NFvu(_g&6^V`iW0;yQc{-zN8GdI^-(DfWS8uF}UjV$MeC97T)Rj%)UR zCiS{s1lq^6*j>(lAGv`#sg|0qn%XrJ*Pn*#V6e~8%r}%zz;#KmmSiPrE1EV3co#e zEd@%gwWW7L3?YUvglU)#!!R%m!!QhC7>03(Lkw{Yku-!%3^9gMONph{T1&OmS_`Mt zQfkGDrBvkT0puW7L`38!Dtbf_ZwEcz4qo6{>%Dd=dd_*CKc45jey`Wld37?E?|i@e zyZ74bzCLTATt)Y)>RXLiMIqrtBdqCmXE{p)=(Q?uwv!K|wuEN+{1A!TgZ45YM`#uP zMzpLUFFDp@Z&;0}M$ODedXI}yqt`(!U+bTTsL@i6wF&>3YD$~PV=JSn-2)HSdfX(w ztPDH<9y9^Xp`1w$z+*^il?6L|o^e6OR3)q8UO9f0D&Z79=U$>LYsvOeX}Q>0rF6tu zE^+j=zX%QXh_-JzB15tsNe}@xU@z~MJ-A(Xa|Eu?NzRmM1>5AWR$p$C^KQX1iGvQX z8;w!dbeuU+oqi=bc3G^CQTzZ0Gezjgk+9|(LZ^%mcWCZVn>U)jYY-!?}c`TL{a^z+?ZWZytG8Tfn#sJ$De{2k^~c>g-cDBT-pqYZL%xrq>2#1=s%RW3d>f5&r!B~+Rd}d1 zw_%3tg^gs4N5DMMTJ&46jg(gApkb`XnlXLh37O+3+@8QNdICtup(2~q< zTS;tXr~I~`_*hl0sF`h5*##4F7ZXIo^VsZvB)36#wpOJL;UOQOR;80wT!FWv>a0Sr z4{dD3N9)q;?ICQ>75K&CL|3gcG*5IfBS-HQIvHk$V`Qwf5dn#C)-kwmk+HuguKj#|PM>TJTu#ZI)0CNe0JWN)=oRgi<{v}19qb-KfIcB_@sGcEQNG=t9aFQR0m zCEc&E=PRmHbUr+jaZac&!+d$kHpwWoIlNVcaj;j2ELdkldi!1ei23FoMoqvO?&;6N_uQi;EP|RsRMJfl3C_y@?as1!Q_kx3BhG3O4RxqM)^(1WFU>)D+~tTdbl|B_ z|4A83U@P}=2kVeTPwWwkQzP9GX0CLwphX`tOrg%4X^QxfV=;7=-fk9bkW7{j7(mMhHlmR-H;f+I(T zo3>+PYUFeb3${oNTPL|QWvFUERz42R_PWkPF`=BBtPD+guSAI0uEv0ekaYb*V-=3* zBZAxEeSvwtw>s7cmT(HaB<~EtD$UMLlJ}_;t=01xWPb?xoWTz{$O`EmF8PR3+9Mlu z`W(Fkd!v_m%)`}+(7axMEqgM}UXNkF_Typ9p&x1Vs1p}=yp{@ny?*a6EaAuLzzXgcnN;-|%IzR@^a_<`@o8DM zXBi%xLhtNgC0p3}Ri8mHz6#tBkvqsS zHjM!;#4~HL-8?&0qZV2Z-if~~#yB!UT~#Q5oxdABd$0Gv4x#^A6{=NbD<9|~emaPB z%RpB#_D=*4U=|H6A;&ah!?gMsy;bj5;GUXM*@|AFw6PVPFmuRTs5uGSh>t9kR~8-Z zXU$@GN0t6s(T4NRa2V`$jGYm8Y0u|#cyl`N!4D(9lFslt5>!!H{iABm_1twCuXusV z<#r;nMQnr|5xHh^29zSZp@cFTXdKyki?jHMW@!bGWFaI>9E!2Mlx1I+c-`y_DNW`2 zHnbJh>FyAXSEY6j{;4=x-#z3amRRj}xZr9utQF+9hvmvzGj)fIVT^ljVrB1R)ifV1 z8;pBzZN+=h%{Ga-*VpD*)NmnML_3~gwZaFnIkf6+u`}GGysKjc)YsbT4CBorA}yS~ z9gQ`Gza~y(J4qB%HCd~?k3$WOXrjuC>v4WwNW{K2-FR&O;%Z@^fv14c(vZUJy#!w6Pqk5W7T%zQ>uptTWt7aP=_I>q|xdl z=uMj0GzJ$?ZE-oY)rb5@!yi|o*Xx{@II0YlC>_priWJt)aa~9*LsM!b(iKAY89_Ff zbSg5|4&pfp_-Y4Iyce8_BD_=On)9O`@|=CpYbR-Ebzo^{h+Y+TeHcAqlo9nitHW!7 zs^jP(2_hsdG9O{AuO?@xMtP2nAib*0ZyXM~9G_{YGn^)k#Ed$N3FR1f9Nt$%UsYbG z)Tz}%6LP;rYTXw4SdH%8aZg=++-(eO4z)>Vf`5=;-)7jsDQDGK1*o_W4I<1uS+ry_ z10X`KfM#5^i8Z_k?x>Wp5VV+>kE~eTR{>9a!Wp__4Bf%-FnY))w0xNOq3o>;F?jhMJyUC5(!<@g!ktR30oFPl9{A<7ilVe2_?12nE z3#F^AL|sz6>vIJ+8U0QnYm!`frRZWB`Rj9rFw*1_Xk_isNr=zVK1XM-n}wfSqY6=< zFJ*Z_EzE2ic19a>(!#2>@=Nty>zL*vm!h0CiWb|%3Qks3d=K1+pW!o5?!J=T&k8#y z;WOu~J}OMENsd^dJrsi}j0G7&<{a%TL%K;`wK~hm2>V*02D}lL;iKGr7MU!X4>1pI z+Nu)_v80i>UL*WDN2E21)^9$dHsn-{9p6r_lxm0bv0YfcB%VZve@JKx@bFkCxcS)i@FNzlbB%I|jrxj7nLNVR!OVzTPu{|5zIcP^p8IOxq zn-or~d4Er$x85t-+&EnSahZv-a9-6s6+60D=+i(ZQYB7sr;PGh?(_kts3`~J zZvpw16DgoJ=pHDiRk%bS(FFB&HM#YH>FjVtvRIC{Q!6=_W3egrRvP&}fbJiKrUvlo z4H8WbIg1Xb(fcj4If?!nV~y%rivhV?LjWs5pAnzakcCTy_)P_!G>UYnhj&FeTNd7D z{>=*c`B6CG0(h07h*glW8kK5>S0tR(ffnI)aq3M}58H%n_@lELmmkSa1vM=Ya8_%Q zah8Q)_F%KjX%kwwRxXS(H@Zj1okhtr?2mDD$PC`lED^j;IJZS0viM$#*gq<*7E`aF z^DvG^Y0S$r=#lgnjHn!|gG(0(Txs8w2Z%kOr= zHTJP0J+2k&R;A2tbh{E3R0K|^^)2dOp5?4wv;zyV;`O44%(bELWuOY>VG~G&Mlz}@ zNP&BtqFX6N3=mH&BW3hn+M$}1*DB55)5Tn=7B&hRSrQrAj!j|JL*vY17B6?n=M;zV zx+J(-7H^v&O+>sVT_!7_z&uaZADJ(>fISrk;cAGxNI_A$Tbr>1(#TP(TOPubTEZuz zRa%Q(5_G#xWY}c=Sdl2URhL@b?kqTA4|za?pc`}&e@kMI_v7tK2=`I%br&8jLk4N^ z9JvDxryG2iGNV?_H7xvY+!^}Pe!0I6xL}C;%y|vX_FN8nRiASQt2IoCPK-Yu73nGQ3E z4$zMzGapg`d#9b%G4!@7npu;x8iEddXND81*4|bm?8J3VsxF1xyRFi zA^G;eV=Nc9;w%r}a$|G&E;^afqRV-Iz$D7!WL2!jo6mFw_J6@yv^|ceSfx@cH6#VJ zxGeWP%&fJ0O{v#e&c4-ohS*(MZ#_rQ;zHPfDQ{DCc<*=~Uv4`)HRXN!N_7p4p#$#S zfu~b5G1xBGWyv}a?fH|Sp)dcljQ!C(VNS74HbtcOFppW!sMg3`e_rCVTcDE-q&I|@OtMH%yJfM#~x{BsOV`qZ!r@QL}I&s{jolg>v3&9YXH3W2sm9l_6NP zaE?y6dJ!K*hTOOUxi#JLI>#=zJfM2-BPlwoBaHiRvd*xxyU>o3(8Ww|A(Y9kEW>9y z_)W93ESIA9*X5y~IdChhi7${3)`?b?V+9QxD-SiPjMJFeAY(|Q%Xc_K+Mi1wpKJWD0Kfd#Zf!|yM<8E{35 z<{DPI^4;m4Gxc(JE$qsA&O40s3Lzt#kg>z)IYnep9K9uuW^b9dY2p|KnZ&M7#8#CLgu+b9ze+%mbG~S+K}Dm@e8pl zn(=m28GR3Sy5^zvBd^p}8-{~qJ>T0%6gkhmv~d55>fg^@r@SAa?7gKrzoX9TK=R(U z>~e-|m&D(1s0syi(=11%v7Xd|=wx*#FA9RJ6O!?rs^H&%3~d&D|?Tr{!m=qGE50pBF|q&W9FM$Pe14!V{Mk9v2Iyo!UO zYv)|TTfJ>yTx#~&c4FLXi9+28#+Al-wm8L3QTn`-%*qUr>Q3@QHp=YYOFTR&=l{L@ zPmt4~xdUrK6exp26bFm01cpXwhN(ESieWcwX zLex~QA*V{K>W5u|?D=kdLRvRDQ%2H=4>V3RLbDdM%2@Yul$_iod(*I-v)pN1ezy(% zzu*j!!Vpbzes5HGUxqVOkkB!tK-pQ9K#p_tfS1_i3{k{*vSoip;907*4Y0PBe^x=y zS?8>8f*#Z3480;wR4&EbbR+9Ku{aX!UBfBQ;lC)e+vD)|BKDWs=l6PDwT%94_F4#O z+(|`OH=d>x``a@A)86V!d#lc}M?2sTWoMX9RczuGXYr&ixP1pQ=V=gM8nDlDp5|Jx z3o33B!G6#gVvAMXba}eWdP~0I%3ia|`+Lt2{VU)_FoY%Zb9Ukn?!~^=8J>eqHtfpO znB>_DYE@0JMuxJGVScPWGD8+|)~`X)>zz3?Bden<9KyWGJIgiBq6J$okRBv$8rhL` z4|(0eyrzccG3mcBjQI}cBIK;TKJ4|ccCOXVy(G~OEZ;v0g0>;oTSd36W5&l_%lKHV zrpKzV+L3oz);RC|7*?w@&09}d^f(>i5Sm`v`-9u@$(deOWPYtOP?_pl(eGDp9 z`lqR?s4sWgkfjv!*$sww=yU1oO`Fw^x}et{XLY^(Xe0?Vsx0%F z#PbnjFNeAJMPA>ss=oQ`qcDChtAQ~qtB*S{|CjERa~Pdfm!`>_$>JSN;StWkWt-e= z#$?DioQb}w^P;~~jla)N-A%t4)LXlrg@JmB?iomB0?diS(@tF3~)QzExM=Qa2yD7X>tM1)LXi=o$J45kt>A^HS%?L$r+c44O%a-DDL=IcEriEzC|AvLl1N z5OapVlk~n|%Ro@CZ#P_|kA6J`?1&zATM>_uA%6{VmN>bT>gig+NJ@OxiCsBp#Wsv_(_uECZS@fOm?_scY$C&ARPAp$QH}!i8D(Gg zqE9rlqhe@fnyI!DzSAIohcy2IDpGF0!BzY^jIqvfW<;^6Cgk(`ps)_Syvm#VopmzG zlKpiAT6PGkxBd-=M;d}}#GwMsvfImwjllmk2U0tJEr%vI3l)yTl@yy~jrZ%WM9-d( zW4Ch!i>Hqft|DD2`+_Ry=hjAx^ZeD4+DO{BmcQO>jy@1P-yEBcM$B8@pi z@6F(+TS1hxE|NQsvquNzYASh`6BSd+)=bM5eB*|CS^+O;98D(#hwK4$D&Y+2 zb*)@ytJhY>gVs zwMHO;zG{8G;&}by*lZDIB1L|$a?fqx8CmXs34e6d%LKz!R&Vc08N(v2sgV6-wYO@U zwz9$%biVb@sz^6c-5esqIEeng4}_y_ay`o-=_i{a26ovU+;tT^+6CPdG!@Ec>44+gY0g{C|zR z$60^77IfNmP=?aXI2nb?k5@X){aTCm5JNj`!XlaMcv?mGYQyK%hfUl}_Dq`fiK81- zz;7yo)4LXqo+65_$h;Hi6r170EzVE_vP8go(a{rBPqh=xSB`Us_s@5u`>uAD`?L`r zxe-62dHL0<+K9Z#`piO=j}y#?-s@U4#eV!cjno2_!8A@HH8y&=wH)7q`ZZKbtY<_M zL?5;~!&6vAOtV=&8Ie`h4C_^Lo)XpQCA<-e5vbB`0&mI={D4~Dvw_(%e8UL$K0<`C zhik5ccdY|0y+E{0z0;dy4(H;pYNK+hm9;jlvHS)#`rc_i+z)O$#0oefJ==(L-HRJNar2#9#ZokGOzLYC;QNL7ZUN zXRxXivVI<8crY?pw3cBrMwFvMZin^dEqPB)27Pf3nqQV^QVbbYWw#DGtLjtU`72@r z+GC&(U0V0YFdR!)X00>S^e9(Nd)uKG9eKU?5w|<*UYNt8Ta9L-)nhB1)=0$I-Djiu zt!2iwpRv}14q{go-9grCEzt-=+_qfu9Yj?+$T3i@@qo`kQi(X?Jz3_LiC__FCeoQ` z4O^X|)nwr7P4qrh-Pd&Em1uz@_zwG-_aYRmyiqI7hTt?Ch2{sz^RueTvV7i7)yocN zXctvyIV&lyH7+*cFcGmd)HC8H5hAQBXo6icj2B`EzSG8)R3@(^%S$b0%PJTWIXA?w z+K3}q+$f6o&=5Eqd=xf=FKD?l^i}l?Y``b0dt;8=uf^9_z!8gX7P@-^gs(E(MeW%& z>~+ijX#<^l1-`od@^^$hfF$y&+1s^d&#J~Sh$cGX4DEY_iir#>@fdZaR(Vjx78|Ee z$_iHkb4%B{3vI0lB(D@cvIeM3cVRuVWIm%XXDDDlu5kro$VnNUqAHe=E!K%cS9UeN z`<2v8jKhVtVe6E!gtAufFoh?r+Zop9Jai808=!uJ9Z25> zjS)HjuXO;4x7^nPYG<-O_M~bD=J!=ib0^kQ7{6IRd}fRM zb~Aq73|e|8o}HxkuO^9oRGeWa3{g2{d6nb%!E#94P3YM1~kL+R<>X(;CsNdoeKG{g$k}AIh0`3UB){^Lmfm%YLz< z77K^m3g1c*Q9J;@&!Eo?xaZyXkm@_|PrNL1I}MqxE4m#H(t|#(c^ex={^n#qKIZa7 z7Yp+1ekyIp+3^|ns#@=Pc5m6|qCLp9Uvy~@#P(CGs|cP6XPEFIB;o+*(z;i+5Ifm} zO}v>JdBqXFL&mn93*xAYrR$+}V5WQgmexp3u zQ)Mh>wQ2XUzdD`O4DCR^#qa{HCkn1ntF`EGT5lV3mZhv7+FS6Ex1qUft?v-46h%I( z_q&g-TwQpd79%O|bylyn1sh-uvO121U_M{%BG)L?dnd7$9#{4{#d?m~N)GS<{T#ZT z^`bYtr*U$$H-d+EA0C{Ck?f=FpH?_g6M3krt7vb)buyM)7*!bG+$wrsjZn{@hUW9~ z+sEasKLZb-NCZjodsku`Z9y|o%~I=w56BfC!G0;z1EE`H?qT;dn&K!NAP&xQ3T@A7 z50u;Q#y4r)s4NmI>a$ywUs$BF9n6Ig@y0vx1ik3A??}Y+3#G7_>@P)=G;D_zo~k?1 za*A>XNp$29D1HZ>jXIIAJJI^g$F4l4(|c63W;^P&>D5FQiq0_qGibt(%j?zbu6DdJ zad}p|uH@s&tI1tX$s9c(v%OqC-55B6Drdvi>LH37_a1wzRy1UJt7lZdT7xqj$T&VG zwZ2-3)oX^a=4da*KWlO(gr?I-c8*%(C3L4e-L>Mr3L}CpJ|F%Y!VhFPjxA{Y&3xA2 z;}F&f%rvbe=Z*W!=N8W`4fo8@B^rI)%zO&!325OO&2UQdrH4Qto5lI8@-NPQYH^nJ z9P(cGPWF5gc0em}oTKq<94*I9W8c}?Gw4VO?E4P>S`Bi6YlX;=x7-dzUT9*i7E)Pd z7#j7^PAgaG<35^LnR@i&cCf1yZ)+j@L$8uy9->(1^NHu^5x*suyxUm^;STp4+H?Xm zh76VFss*m&8turxF!MA(UEo9bLlWo+Y2s!HY;ud{On7NzKC3n=d)vKkW0_2Cc(Dyn zAPQfp2Bryh-vMXbhAb`$_g9Z-6A{~@vz~+z?;%XV9b!2K~fgfm%vu?m^u@QbKdtx1Ni-PbOJ>OL_ribO-pSg#kj8gM9 ztQs`sBPE7Ly8^p)7jk`r?52e9m@@Y59WwHRWRE17u`SMOf^_HZ1);fwo@Kq$*CFBe z$sMdlzAL{!2%jHvmi4U`rAoXf(34Zpb1#+Waq`~PZd3ftjmW77ptUi%lEwgb(=9Ut zGKO~T+6ULuT%@h!ICl{zs4xQ&=t{MJtw7Vx;mv5q+h6+&NMucTyEQ{|EB<<=kvpAb z^moX7Y>_Kw&3OW z6FqG`*p{kW-a_nQGjmuXGc-;Xa*MM}NQ>up$=MVotRQ3mnT+6Rx#~jqn#WK1qVUH! zh$x2Z_8fAp7l~I9>UdJ_rcc)902-WXwvT~AwE+r`$-O-$T8?ssF=sWzVbOrp6SM+- ze3#RDnIFQjRHNAnCs%LDK^d3YZ2P#!G#&}#(&}ODl+g~!mDI1V{iui0bi;BVZP+Xa z<*dr@7qho4M|Q8QvgH9MWp33=tG)UjA$POH9BE8eE&f~RwYSz;hhRf1c!b}UK;uv! z(TIzCPFcizXqjiNAl0>VXA}5XV`R{D!Ua?E>0{`Z+o-n5;h$)9R&k;>`WNB4VRw_P z#Adm>64W<_MY@Nh2IL%uGT2L|Tvb;5Y;?-|u#+0mr~2WkJ7h#h%ds<|pEda066C<- zICqIy<0_}!EH_}AX>Z@OvwFqtAcCZbN%vF3nZSFedc(s$60Fv|_S!AtRZii}850UB zc#pwk59To1+g_rHoA8FLViotJ+p5=Wr89(!t#a-Px?B!PA4l`AlAlsRYc_t>jsI*G zepsu5RBQb)XE|$8XPvmqct(muy(-QyEzFCS!saSaJEDBsuq2Xhs*7Vs<@}mN(Kw3e zrj}<>!Qu`PEh^&o&SPuqRT`Y3vRB9k(}@1rLX8$D=WBkYzzK5fGHqg++wBZxy_q>szi%&*|D4aLC_2lCwVnGU( zJv>)!55q^T#{xWp8LlUW-Ri88QS-aPu8!`8{X}P4&}s7clV{*vZNh)O$W_6zi@?kE zG1KcmQ7CB!_%MorJ_G-j>P~}l?@E6w!DCnnmu`m>C*T5#;kp)!FYPQ7Q%AiKf8Sbc z{V}-6Fq}FB?@1slCwoF#bT$D8?R8e2RzR1t3W7A6r&UIUk&FF4s=pXrPvv48`fZN7 zMcoy{NFal0yoV%HbN4-lQ`b7&A5yu0Vz@r{Un~yoGA#UQio~UC2 z>{7#Pt@s#UikSE$Hn-VHA@p>s<&6@RXye;9vYQS2)uJytev7D<&^H?V*<;QSL&E6p zG0&@#(0UOcqtza^;Hi&6i%hY3BBM0RQHmrK@pl%Z!XoMn1GWL5n~v`+ zIY-$UvaV(r%;5?d_+c9}YIUz6?jh>)p=0n!%Svt~8j*p^CGdwP#hMR0%d(DR`J|m8 zFBF{h#?0`$4rd6XO|SjV8EW(lXT7=GJinho1TcwxZjtB|6`AeKPnevWB)r&gTdc!Q z0`IuxP3Dk8*6B9K2*O0a%FcRlCY^Phx9a|OR<^@?Rx{43;v&vE=N<4?P}W(tSri?j z!x>^n6CU|tWMsivj$6scPt>-U&rY-InlQd0%Sg5CnI1;Gkn1ftE$!xYH*w7zn#3wBsR))zm8#kt zRFwstq#uu)O4ebxWE@Y6Rf?#Oag~=88tGbv=3>3$^w_F1>=N~P8*;tU^MJ2fDyVAFO|nQPu3LzU^q|ItErN7`8pTM-Jac>AS~7;YRn zYv?jo>Dfm_q8~)7eqv5t_|)^_azrB)S)z~Yx00#UN@S-S zin9*9QFMo}GtA&3I@ti))MD37mCP#qUe;6EI^Ffj9p|wgmG7>{@gNRuR^>l{aT#tk=vf{>ZHCwUS zd%3gdHvQ-u1!vXLmZK7eVhhgt>xPNE#=Mr=hZff_`dmK|AMLIEtk{SL!8F_guFqaj zLm!ogqCFlEyXgt}Ui;BLBzK@FwU6_y+G4xqleOR#egZtqhlD3-XWo0MPB|!c+CF)I zpV$qn=@|Dhtgk`rk(v0vThM{^PR6+R7#{f;Qn;5Llf(1b%kB>O+-l>D{lrKLK5nYk zPXjZkxMaI!}8;<4b8mJ5j9fd&OqoOD^CT z)l|ciyPI)P4F6=C$x8SVndc|3Flp)Dj_I#6!XOK+GBpmTsrDaMpj?x@hlp)`wsZ-lUb#*MsgCKBK-#el;O9 zI1JZMkQcl?y(R5cbfhy9pp%5h>~pewX7NTQsgquzsA@SG7~tIxwl~;e6#z$@e z8(i<{0Q&7iP+NtV*><_}QD&#=3@6WchQ9la{U6O7A8nbRjFMZ5ucX_2^&8iE-dnfx5Yt%rk z)jNrYt#RvK`xARJ3(??q|y@$a&Go}H%g z=SPGx6%lh6)eP#b(TtZ0h%dT&ik{JmA6!SXT<)O2N-TF-ACK?FuCBl#D zyk_0R)zjWf(1olkh~|=T)6i7*$l3P8Pm)k=1*_R=p;jWvt7OzpqBRdV>zb6oOJCqO zh8R{Pq=P(@;wo#9Va@P}C+rp+7-?7tk8PyBU zbk>>N&|9oKcLyKAo}5t3kzqu7HDjMMr-L^*rHP1e4J@FH5}R0sEJo#5ISWdV6- zb;j21R(DJRf1>4KRh{+Wj4&fn#^1!cr&xZvlx35e0wGS`Bhre_WU<^dcby{=8iMjBd-^0; z$2KTB=6(5AV;J(@l$5hRr3q%U3F(o*_6jj`<8Xp;;yx*_XGG8|XQ2Bxag7Mnl)?AV z!N{`62&?p0p4#Z&O?G=W48k}^rG5Rn{UU>>&~T1Bu&~np(dy|oPY#sDIP9BV~tV;i39}J|3JoevEzm+V*N0TdvhjqE#1(WhAi&>)m9R`UG6B1Z9=+ z@>_ji*coa?0WWTg&uz$IBU}F}jTJZYZOoso6T94aZI(*tek5#)b^TifW!hV69X{G@ z7zqg^k@hj^W2{}y`qq@4A#ilyi75N^t>>;v&d?sx%zMsRCVSZB{h7<;=eN2^{Gx=6 zN_m!!b0K+eVW?}4_YfvLLPoo@I@%8W8!a3c@_g=SXXtlU36jRo)Z%$x1nC=fRux_1 z$_>ncdZXiHvm1J86l>Hv$w$eZiy$#(;pwwnf)0_@wjb&_XDc<6i`{G=4J@*UEG{!y zOJ+OIDk76^61_2kKglq`wVq`)S+o6O$LMTom5|i|Sbulb3N!Anz7nks+hGJ5m4~8> z&hV~EtfS@|K8}As?<^;Hggm7I;#gXv@FE_uviA#GrBN3;Ns{XRUUEtmE5GU`zQ*h| z6LW~@W(Rsu&TG1Nf-$39z5);IaMsZ`1pl)t*FG``yU^vW`>4j;x~N%+l9dy~)(Io2 zlc4eUvIa?LXB;hYBkOq3Bf58S)e8D+3_s`?6|+@OVVcu81U7#o-ncMcwkrAkDQ5`z zib$unb%9+m=GWD*?z9RiyBCpWQZXet5P41X%o6bS31KCXoKIa z^|DxN{YIVj!x=~KY=@qrM4QylJ%CRv0#B?Wnba>bjwU#U*GRFsH5R&(KA&k%C0dg< zDzasWy{KMujRikUg_w3BXm^%v(}?{#?5rwON2}Ph8Fa61&k3q%m8+=J+UPwkN$948 zcd$%u`NQbJ8GKz)^q4MWV~i}u4(jV-py}tmlpGej#Vjq2(rNs0fZB;w@XA}DB16h* z!NV~`yht^|&CdF1jp2vW$huZ+sYN?Sc4w8Sl7JAL z>l*d1Ctjo0Pd$`dz{?!r%GSfH4WFIzsr}^NSkA_5WLg^i*Sb8GoYm${qR1+TY{BDN zc9sEF6kZcX548w|RkCN0ll5G`jGk6uPPC%E%NgF8b;6Ajn`?L0vupwz+_?4(YQ8kq zHPaaebQvAK;`P-G)Q9Y8hg!iJ%an?UnrFq%=pUU`5=5QU0g2sIm!%(g>LQ}fW z5+D?f_*hE@jkv;*)*Eg)*)1yB6qj_DP?ToSZkEwLB9^}PQn^!ptyqz2d5_6!MT~h6 z@6iE%o1qWwekuWW$X`YI3n8ca=+tAFbNij)6||u-uVbY`a)uGsR&(SVh)pSu?@niE zAidmM9<+HqUk{pplnAJ<{2VBxh;Muje7*~GjvV%C$xG2DGG(H~PNQIjXF0YTuX~A3 zP&p!=lgJbWbfd-2GSW3;t=HQiF+7IW!8*eDT8TQC1TG!25zG#2_u5LC71NB2Ma)be zt2>EB7xQtsZm;QPT*610w6|Hs8Ir{yds!_7%g~RqcS{^ua+7EjDXKW?k@;pxWQl!r zJL`>&y$3j)&G$F{q$dPP^ez!CdR<)-H3W&?MRdaItBdGF?@?BX-lCVqYSFDu^xj$B zTC9B+&+{$6-~WHT@9i?zoSE}E=giERb06-e<*QUERn|i~*>DV0OdHOc|3I3XCqYm^ zS;YQGl2<(B6?uDv6r}{LH!3Xs@G-{;0k^5kVVz-nATl0>+r`zt3f(kjko?76-QpuS zPgA7Vt?j7JJVrUL+CSB|3@?M3iV4 zyO3v^F=!>*ald^uj(4Q4^`Rjdp7Zbmw=ZgEDt{ycwA)5 zWW6UV`pEo1t@SrcCLit$Q@13z|Id2MgSp_J%BVNogkv@GX2~wwIL85BjO7iN-&8#X ztUHZ`hA2F=8+WPsJhHVB7nEj}P|%gfvdGk1mm8lEx_;Xw18~o*po{cvZ1=(&)4<4J z6=8TGpY*Zu&U%r|rBAXX_e7-L)&Ua>n!vaEzguOIhkwJ z#U!6%v+Y994`{iv30-gG^HqfnYcNGYl|24OG^5t{#qpC6-aO=|^2FF%h(g4dUCAv@ zhwi)XIi$MM$km4JHYs6ht=*zYBj#B9e0$-A$6J-7Yqy1$E6|4bf@0`HBy2AqxI5~z z4_a&mq`R*O9NfZp7Kobt(YFLrNoqSC(?QnHX|gw!r>rDYXBzMs@)oF;e;qH*B) zHO=szFx_0z@NF#Z6f^0mKFL?rt3Hq|?<4L~HC1MCrS~GPeK9B5nK<)`)|KS^=WDBd z51HlwW7D0Ee9r0qBDU2AD)Wo_ls|%aT@x{C6#!c?Mvotl8sbUhTI5gsCYF>m`0B8< zIF)JCxqLey+Kfy=M=F*oAF1Kb_0!~Ym;ORgl9#rZnbj4{rwB}R*&ci^F#7G=wa^zS zP*AtXNT_($r{)}${weeq6{T}eUpxo(l+4l(p~xr;W_VlGq{2$3Q-3)XIb=B>e>v8S z#k8Ru-au>S6D$hu@a)Eq9bFTFxq2rmjPDj%j5?2Z(%wn!PT4DcTG8hLe`Puo+r5W; zn!|s;p)>AD{foz5<+F3=dG&+A{U6H)zgHb_p~Eu(;hExF{Jc}P1j3_zD$5!Q*$V*8 z)bw=TwFduBm#VFU!DoT$v}7F)!ukGD4o&B7pJg`65H+j^g5QvMVEs81{ZLLgmvSiR~i&q}>flK++=aooBO9lHcs3Yn9~D#5;SJ zPW6yS_1*p|214bOx-WwqKanhqsk=0-TnHxugrt+{T9D6X3x?qhRQ?Sr?PB`P>`DfO zYPY6u(;4qsC+ahHm}y7SKl&+7==O8nklg_G%($OK%YcA#@Jl#FWRTPD^I?&^n&Q{YBK*AEx+^>(!Py_9_q<)TWe=PY)iF&vj`JMYv>VC?VY*U?$a5&-$gdtp^SW5cl zZy+)XpG?ieK-kO;N-(=8NzeVMp#JYQFqg0w&Wnt^972o+>yqwo0!FhxCR6tL3{X7k zG0GbXR~&bvnthql%q9@N`4mqm^b+q0CClJ(?st>o@m+??X?aJGY)$G5I=>)5e(2!0 zwL%|3k-pJcZ`j;=A+h!Y%HirB5~>&hc=~5UA&T9PUsyxmP`x&pVLHs^Y<-}UJlgGo zr7Q=HpLFcAU|VXHX=9YTfehY7+?@cKiK9p?`BC`zAE6(&Afc7ZFJwM%+B`6dTTp>qzW5H zhxsv_j{N8^NR3Z^XU){*WWn_A{XyFnngp{si`M7AdS&{wrUFwUo6p^IdVzSH<&W$p zRm;l+N&6Bt@Du3E3!eJ81wQfmc$rUKDBDrJvY!4Z@*dGjeTkSxQ*mQ@J344$)MfQ%^bl9T%i@&y4?`~Hw*2bwa5DB0Y}iVrRKoM zr$hd}loEJDSh*f%a^%LI)fhQv|(O-@SnP&7M17%{tg&%{;-kH_C z-?4p$7MEnq2@u?3GnKI-qE<)4WckAz$!NaK++rsKx$M44l6Xwjrl`}_L$+TMO6*kg zPIy6BlgFRmS|Dw#X!uLZh1;=J*p`moS;I@?5qO5eGGty9l7O9tS0KBPinK}$Df$%9zw zrN7^&!Kjy_qbyn;v!qdltK7IB#fsJ3@xU)5e?8hYU~Ce2)i$C2_Nm2`#pNbHpWCcv zM>m$9-y4?J+phMJlawi?vESd7y8TE=FInx{SJ%>nC9uL`e_y`iXnAEBnMPFmey7eN zh&lOWl&w|sl}zd_&%sA=?N917Baz!JvvVtjrsGENoUnRqd9I!d1P8;@)8i+)S|AWhPJTa7^0C^1rFJ-rrYITR z$0U;?nXjWYWQ>}`0I;g5MH(%j;ZS5zJ)C*$;C=7)(q z&+`k*PO;S=7FCqy7@lTplfDzGm8=tO)#xWQ)c{kT;uNxJMYg(jzGlkwQI&i!_ifZ{ zqRl1#kT*vJ_Dh;}Z!1AR%S2PeLpQu4sI|F0*^#i+Q&-ZI($rD9D=Nmrq(U%^t|htcgVk7 zh_9Se{f6M(&j-7vgQVS-_i^TaMI1VRD?+~^n_&zc3CeiTvHygrGKp?1=>0=`;*?Z+ zEAx)_6B>Rm+;)@&=-s5a#jEXRU&(;*)2bCk z$3hx^B`=M21Gbh&Ey6Tek4j38jsu0qb1y180_&AM1zv$m?1LYdhb^^F8%cM(ajH{IRCSRxl4V=2C=Y0cDLw7 z*K9Re>v>?TLnNy(Te2-lP|=XOaZIt%qgfBUXQkBrU3a-gJ||f0n0Z<8<+M@Y)N8hwQ zO;FehpRG1n2c)_+(O^D$LvQ-0if}pY_`u3^T!VPX$rSZ_q!`{JH~Sb+Bt2QRV5&k! z@!X{G>69@yiV9(P3w}#L?qhuZfkldYBbA(j5bu}QTO&G1!UNfYXKFnnCG)`BzU|3k zN*~_>=4&Ur+|bTWFY5v?MIMU?I1jQ1y|xL9v)y+0zS5QDXL8>s>=Q z<{c}Im~{{oUOv-UEffW;(!24KK2Qjz%cxhZoh*OLZDmA4ex?I1uTSHs`^4^Ef~^lE zKFf5R>=kMy-EoK}N8uZh`*pn}J^7gYz5MbM;iiY3L`ZM=ur%8`qkDm` z$m9x^=w-rN;N&6;^Q<85afE4%z5k@X(-nhDJjFa*D#Nt5j(K4d za;Y}#m*+U26!P(kCNvc`ohG0^3{zGB7Q8$0K!md9*qwa&u;4JZ!Y)TU|0jpsjPA+> zS#G*`wS$}clee8_v`&9JkuFH(kc8KfSCna&hVwl+UT;yFQIPjW!m3~R5f;go|24K? z-sq>3%jKpFG7_65kSuV00wc`kGYU@z(N5Yz>)DplOFnt$_EAQm?>I|hUzku(e{Gkk z=88H_d$R%m&;u&?0KYYXjTdp8S(?WE`&+#_?AJGugFqp2lnOTyRb;vOO1l)&D5swM zj*pd0do^Bav8}mK&mEhN6}zL>1D!>eShsI1J>L;PZFd?5_pX7i7qC}u_KoFl1FB0Z z+UY~7fkeW*KG|`t_xSi7YeCAj<}8VS`6uHf}FP$Bfi1N_I~xzbrbyt z$G#{r?(LMvl&!;$T#1AT)d`vHMf$|i%#~BsMlAq6 zIGJ^PYF%g+7QtynAhN}>@b=h_SUFE1|6xw!JE@Wcb?jvE5@G4~kwC|TkF_Uuq@x`x zsEGq}4bPHEn1jIDttX1lmvGg({y-n zVST@Jg^(+%L+8&_|04l}6HmANY18LUDC~+tdjvQ<=9!v^t8gJ!Hb)Lnkdzv2gwIy|h8o1T85Q2%?0rbmHwS^_VxI_KDzkO>zG! zixl8w8fCc*t$RG}syStLkMnsUSz8_Fvis_QkyU_*c7H$DnPpgIrEnj`LBp~%X*;p8 zhzUzPQq>=jmqXitY8VNhdEy<$x#|M4WGp8ADkwn}+9<`0W{ zR?UOY!A76xBk7#7IY`Nmd(YfW1HnbGd`T@50~jgRHw$6bUaN9&-@Wf$%fp|G1%d?9 zGBpD|Nk6w^f3N+@mq%q&w6ZOE*1PC-_-UQQ?X@1a*r!^_;L5U?cmAeP8@XIo>+42=GWY~lY9LHLHO)xFbn$n?u<#nACe^~m1R3_%klSY?YGOS z9oTYQv@>RRe|JCM${?L7CUrARO;!~X8_xV`ZsN&2o64b;<(L-Q+N?f5*EI+b#C?(Q zoLg#eQ&2!E-0VekPn|sJnBtmHp2SD*~Zj%qTbwZC9)8CX}*%i3!gAN_6hCHCS zz2bs6?R`1=m%n8EXyui~NNSE}gQ zx_3%DGn&={e3P1mt_H-7VTd0gz8p=1P{Elwhy&g$=Y<#zn-a$b0>*GpFCU>H# z(lYU8O;{Iav9;pfejURW(KzK}sV%;H44YcF{V=zw_hV>by=uB#O635(^Hxi*1hwQb z=Rf7jAVpnAjT&nQS>P`w5_CXEOWmj=tuo&jPR|lC+|9eM*{`{_40uWMq37~ZZM2w0 zss|1AY2V0q8%z;wt}pjZ4Es2;R*c?k7*HEBP8w-%P?*gwXKT~EP3h8BAR z-?)oh)$zcse-R#k2j^e_3b?EHXl#RafX4ncrNNB6H~y9a2v{W4U>$z`?ObWb?e(jK z{gab4==m?Vq#o)Ff~?fq)Tq?hEybb1pn%l)x{lkWU4{alQ6~y9wlge-f@F09%6iA0 zb6)Xih90kVroA$y7!hpAO$O6WbouwOBR7|qXt?bn`jqWNKTm(QFSet^Z;_ZWw8v9G z>$1Djm?{kCLUk6(awNiFLwa;6`^ocDDn#m%ug3y?Jiv_y^1j%tXkxlVo7Y`R-MbX% zUxK=y;4Pu2mhQU!61KbPAxMzmS+_r^ka>Gx|)>gEJtTu3S!>@rq*X%R*6w1X$zv3440}6?#(We5!Wq(ch})gJn}fmR|Bcc z9MzFJu8l}KJ5UH7y7^)4I*r#_E~7o*(QryQJ6sjp_$g;!281JfM!8s>Fd@!d}uIyL+4 zfR0-$r=Xs5<`o2S=O0)sT0g#Aht9NK;S$VH!XATOgA6Zgnf92mMYxD4z}NU|!T17G zgmz)R?x_*BI<%(z%ClZGx-8HJ6;DuUJ-TjsYa@d;nQdHHH%v@&RpzH3M6)75ZYBO~ zDtZNiy;28^w{2{tWM3Pz)q6Q!|GwQN&!+i&r95eR^k72LZd&!gMak1P-3>}n{ju1o zIN2@l-2Y|K?-i|p^sKszNB%V89^7ZT&%DfTt*1mW7RVlJuS0*B zW$2uwbL@cZd$4?1uyPo(a>;J1CFJ@PDkMHTM`I``4qw%&9jiQ;K{}hU$Ls>5ZIfBR zsZ8LM7a;rKi?`#FD1W)!*8*yA^~@5}QNJ0kQX#?4{q?xm8m0DhyrS_sO-9T3^TL5v zTo;dWcP<+6G{bn!1SPE(K1^^PxAPC1#JPL*_pJu5O*v!M;-{!BjYJ=Ua`!xnEc6@; zqUvk#9V+iic=2nRn)aec^@^uK!qYQlczSm1_qq?*G(iR0DeVHf%M=@4#2)wU$7@n@?~Yjk4?ZOa-g&Yg-3aw4He>>56A7K;|PI5b7iz&Af&smRySXj*2 z+hz^h$8TP;8U9J}7uhz>$-NT%23u(x)4kzlhz}Ug^Z99iGy6R-?&b4SaI;uY9msj+ zsiX85Zb@HZLn$AGFUQGYr?0YIOS!1l$!RBfvbGX5=4u%~erC~w+m{i295q_+ZnKVs zcI_TL5qycJT~iGx7S*Qb8i{B$G2$4Bpxl6PjiiCQ56dF+g~N3O$SnB1Y6J-^)^l;Y z7>HG*1Ngm~N+K;&*}c~Oto)cGNi`GQ{6(uZo?N{e&V76MTeSiO=27dm{gS(Pyy>`G zxp9RSDJ@~xN2BtO?q}ESLGXkQ+FFf<=oN78XHQR(7yFBsoEz;kY^k%Jz8+#v=ih(I;jY^1t`-5p@3u~J$f2s{seeKZSF3$v=*Yz3nSuyejN zz>7jn%_q8!s0e_1%Ube-nc{L(f_sxloCZ+F)nIi|FV(u+@ z)Q{S|Kz|g+A2e#NLsyf7LfDzCvD}emrkAeUMPjpOrKmgcy0d!+3}W_(G0mboAXRkz zvUI%H7Cz2g5D&Zn76@l#LtjqmIro4rcVZRY=T~50=OK?8uQ z#_bmx(F2}9PfxHKBJY8$$Xwiy7h&k+NsqzfIfz?_;;RnKZBu850H&j!r7rH@XCGJAOJf^F-5Sbn9cpW=czxFeNM0Wv@TrHced>4qH%4An$_K= zPk$B-6Il4}DPq~3xX@;`Z}Y|OO*UE)n-3r?4FwCjNu4w8w30NZ_YX?vq>63| z=5p8%oVnfZOJ*@+F@qVBv+E=munL?k-6e6zC zYw$NayUVe*8@qEM3KdxbJO7g}<^fu@pHrkjMs9#n7n`g0{%q8z)c_GHq4S?B)B?{B z8kO~QDlf9#@^#}qGK|k-{><-7yF0<)2dPatRQ(ORRi~3{nA_SHs?Z5)r)TkRcN0Cj z>czm7yUfhm;MB82EwkZpFSq8pIj^m$Lp85;cJcB1))&(Ovnrk0a~@;;Zg4FGDhnHW zHi{2omG#;m)rRt&Hv4&)CWAI(#Pn^>vEygXvMtgtw%I4GMVI2{N|2Jyi@yvEFrO>s z0~sCXhOmE?97oZDAf7vDtn(+UM%zoiP!BKLBKikilWcC|WwV=R`r?}+nW)N0k4Z8k=8CUqIML*nz_+nTdj9j8aiHWUE z06kZ%{6rw_YC5sVH6Zw85CSalT8V88!u&g8u^pOff4IPYY~{+LqUV7=$Ms6zX;aKn zNcQSy5c0Pp)^RziSc4w7`A`>nA>`-yZFD&2yIJ{t`EXtaFXUoDWH?CF z@jVER2dbzVN^@7=oqi=v2&$-{a zP$;UF+SBaJW!K}(e_I(?k64HoMeS0P@tbc>&F$~a6zKw}t7{kzTUrE;E0v**^D(M- zsC#!QoYi+vvvXSJrroz+_TVGQPT!n{22d{eAqTyg-ul5EFW}G>aco@FCk31CkH^x% zV<@Vp7v}L;isSmQoB4mx1M3fG#FB# zKmVnwu5WSW``#!^#*jfCmQhIY?Od0UN?wXXedl79y_UgvA#4Vn^MPsdcBsu@H96X@ zjTM~u=Kvfzt|hL`2i;&0YeXj@fP$xQjru_)=oZB0jE5pi(F`(rt9asK7JL_c(Z`;O zYWF)1$p^dd4J{E}x}tJsHG6ezPqDisP}%6ma~!+#=B6{3z2qlQq%U}Tvh<6`Qns|T z*yS+g#F1Bw=wVauUfGtO$Kt7ffyF2g{b^Epj?^~Y*s>kQ=!rNPhMiC5jTU5kKr80A zAmCzAXLR_iS4S_kUai&P@UA73C){U^7J1gCas` zCuUu|>QEbsvyH3qVAmyqDOWMC@iIKBlTrI|7BJX-gSn#~nP;j0hzc~MuA~n|Ct%~k zJY44b#!*?NwAI$@>%`Vj>%uMVEK5d4i-xJ;sL`B>V@ySg@ zs*i(vCdbjp5%R|42E??@;RCA1ibMYgyXedB$2)-+~0e^UW>fUhJW6R^R`S)KFWFPm+_r+?fU%ZxrR^zOB_Y-H>N_Ap`5^q#I`G zBO@<%W{&89522S+nXL@yodD%H9tHE$Evs0N$v3adiBQFvlMjxY-KJwY2hF2!Vua4P z&9-g>RN&%wNkG5LOn-PsLf@4_v1Q{*YW5W0x)-2Iy>z21+sORgIjzC8x;>nystmX>JW1~YsAw* z4(iXj?v${LAV;TWhbz!K`l7V8OI4dAVYO?ihhzG))n?;cdvTK!ApBQYwm)kJBuJ8(JIA3{zgQjbJs&GhL{pPU?!f_J7M$QVFs1H3J= zqz^cAZ~}E-3!eNJy0v**j()X4Ulao0{XXcD@vM)WKp6!k%f$B%!AlaYO$HLUIlPF7sudA$@kc_Mj>4Q=tk2q>Dd`%PDmM46qQ%)1l<7xPmj1w(Jan? zAbf~WPsGllX?4KwIH5{ZjE!^G(B4p$#!-x1tFqd?J5b2+8F0o4Ww@{fy@ZxohT&10 zwzn=qJ-~JOK#8MY{w+3OO2^}{Rk9=9>49! z@C~h+g_AE!P7tdmaaJ$|^n%YR)L-JslY0)Gucq&hfhbNk0n%X}N44Ea>`-*Ed4FN; z=|njD`O5Epk!ky5%wuu-XY0B%)LKUiA(zJ?@#7w6fmVlXqQ+>TA__XmeQ1*lfrck> zI^jn?elF4ej61G0tU;p6U|Yyo|G|tV8RUb^%Py|BWxm}?Cq@y&vITvReyVtDggpKRu056b)sex?BzMoYtcg?!@g(Sv+8K z$X98oRUL1zB$GIgN$9eSA@61R3Ii!c@1TXKy9zCRF9ZjY$0nFWo? z^wg|$EPpsFJ3d^yzuGV1v;*Wk$=$X>7gS1qr{FotDNCKSKA3$vrWnDoN|Ti4KH^@V z%K<%|-Xfr!OL%`FKuzl^x5BJUI-+x{J+sq}aS1zQEQ>X>KR50jmS-3!gyBKrIv*cc zJi_!5f3NjcVS~#>yp|36pw4Zf`|V&-UYyl8r5$sV5C)CGjYh;0e(dB6(HUVdXd8>iZe#-2RrAc`$tHhEX zc}n9GvJD2ZXu;M`zWWvzCDb50AHRr?nQ-($o+;U95-bg-+Y|ch>GIGc!$V_H zIp7Z(2_lPCjgf~YKKmq$4)4Yb>^XL42q?22B!)Ba+S$enuaZb~X)=3M`4lUq`7ZLE z-=z|)rhTHHyu`it9K;H9a@Tsy&ED`L5pJr>qw&ZtblpZWw=9uq)#M?|*k_MC9){Th z^7inA;D<*+GnVL?AL~t^AxAMA}}$!zv4pMC1a|9%I9Y!>SnF7d1~KeC+b(q^(L5_p z-?r@qH{BAmXbLji68ZiYrE1!8XVbuICsI6T6aIMx>!X*v0aFRd8puAY1*Mb5k6r1_G+@6WNd+Y${KFY7lshBQ7NFei#Ka^oq_x zZbep^dVE-$Zqdl}vSn8C;RqXYf=YY=s&8GYL1eO%lFThjJxlhC*I20YLYMeYhH6ZuroCVE8fZx0Es77Mm~u6dBO@9u>KS& zey=>cUaJA_sn~9N&-9xvfnV&YUlCVI(Ih?N2qSC9dgrzr=THN=-iH)daXYR2Fd%{0g5+UtPDprCu~vcNbJf?W zKO;q7hVq;%({^d-_0<~RqBffq`^m?Go*0p$z>SXm+HBnR`*)Viw|88C0Qn%FRWX(| zF9w_8=E7Z;hqLixH@bQDy9@ zLEbpL#&LY0BN=l?+?mu!e5_wn6JonGT1Sn8rJ|irzZo zrPg2UO7hj3Z`FiuY2<9Obk~ps)xBOX0r@3N-EtR7q0+*8Q*!&!vnRbDZXvXKaPfB{ ze27uxZ7WGcHPTOo)%ZA|KVxDRF#oo8D0L!#D9a@Cvwi(f-erU7u7F}d~{iwclP?;0cg@~{TlATB=qV^r? zG)ByedTEAh-9L4ZTLd94lL;Q~c7Mx^PELn)RQz~VY}xv7@Oz7mA=iOju>T*Ictu_w z<~R7odN|*7Q(I+;QMa5sYoz&6>fzk$8FB zrfL!y99(nH36$sQn z-+5ZesrUW&>TZ4(OmC+QR zGJ+bvBPg*J%04`JnNUtw>s@}BW~lJxLnB$D+(zo0%Yb$9TDT>FXCB*5LU`p^55@X$ zqn7!%Y?sa3A3E-@{i!{N50A0s@xRbLsr#YIQ~GDwzZiHhJjxPE2qZjQ$nC6?`ec9F zN~5L__s4k`RogAf=*FV^;`2`_xASJa$$MQucO``ua1*-;aE3a0Syu=DgXBR@?-^3F z=ERhV&Cu2+Xv?W!j>Oj!*yX)grzH=p!XRgzJ2)^ZU49(+u#%@A+Xh0Mu5NNA{;kpPVf`7DZ*=r z^vPdrQd*3YbM*W*j%jp+uW1-5Wdx^kakqNyptu7EWx^z1`40s5zOr97BXMo;o=9V7 ziaLiTzX}jqLkQB4AUoo8-|%TvbRRZ1aB4*9u7e1CNn1DLmrmK$4uzBGs~1Z>4CfAy)~I}J*dtRNvq7Bs@pa*4909IUVg`G}I<%s|`8nI- zdl#*y$@6hRb)1(QKVWRpU5yQB-W|@}<+T?}v(~b&*oULJckEYF1}*5i*J9 zf|%efZy%Xa{8z%yS8!C@lOJ!+#N6TJaBGWwe(>>)eQj&tZ6Y6n9Z`R$YQa{ckSRac zPNut3K~j6cxs!*6oa7w~3p5-o6cY9%%3bK~xHF*U@W)GX+<|YU)c2a^p&y#iEzZoF zM%edxzpONW5i-G6T6X2qU%=1Y(2?!(#8EzS;sks$5R#_1u+2A~)ow%j>h;BPQH#m3s27MoP<0N$UJ z#XNPp5s{{Y?yVFI6lwhHkqt%`f=vAd(I+z!e=}b4ghXvU-Hh z@^FBwDXi+HgPiFfGL+Tc;j!Fj6H7?1?csj$I6)cc& zUvVM&>~KHMOK1xEzTnMyjFOe3BSd7ad%IzWo!O4kidY^%Y6Gd}wKBH=Sly-S`}{i2 zFI32l5OJg|@?WY$(#@Zw+g&{8KcKF=C*pa8WPmGNW1b4IXzxWsoumF&RlsE1(FuADY_44sv>P&pofQ z(yu-K84%BAO3-fy78st&Z-4BwUz8GY~uN#~Xb&T9`bIY2}*q^EQb72`<8`(S985>w#)qtNZusAts zIB2da!opbWZw>5?rGVBBH0${3@S14~pC>q@l> zQ2L#Oynzi3`#U2{hq;3b7W#h8nR|KAM?23E%ZJp=C?48E8f zzOgp_VvI48T^TbzH5$MTLdC@f!~NgZU5`WA@w3Bq-`{h2#mI%l{%?LPc6AzoYaybd zG`d*qlGcVmqpO+v*Qi-#Fv|WBa|OgGR{^S8n`0P_X*fClrv+Df|5;ZqOy@uAiW#DV zu^qWhF;9q*RSEN z;?=ijgB9*gGKn9c#p&v5iSjx-hlG${@gju->RsQI^Zlw=oZYq?1(5VP&5re&)fu`-#YM-QG=AEVb1&q*f*BJr<{E z=GceyJbuEhv#7N__L>%6AFFxZ{?l7>Upk9+>H5>~+)K~Jsb~qD83G9tweFiVwIbv4 zM;|OvmxdmP85N~BHcGJG^$paE`S=7WbvH$)uR_U-k1YQ!fhzf{#KMUXtvoE#qB%qD zwJ78d!^5!jHdvFWbbipQ?H}xFUcO4GFZp5aoG~ZN5>np1zN8)8rYM)Zxz<`>HXxLlye1fE0ca`jvv3G(7t`A@%k5)^?f>fN?9KI(r;n*k4-kPZtgiy5Y4 zagJcGNvoSV9^LW0o7h<=)K;@~N@Ca?XX&^?+_cB(BufRWSMTf5IQh)|yDA0y7w!AP zKn+6@>QeCViTn)U7=_lcASVi7%G$HdQ!FV;R{R5bmCVo;644=$)8Kr1RMV(FRG1eS z{NnP~1~jW+pNLCYO$<3m{Sow95fP~Wc|w;Mi$5+mGT7Ly?UAhxG|U`rPl>u0MNpdX z{}Bkd|I=YG`{H_wNpaF#M+l`WANjX;{U@(Dh8MF9ui^sdmD4F*`Lehj(B^8NY1449 zVcZn+%PYXk#?8gS!AZlN-|Ka;rk>{PYIVSpjumfUpSO*#t zb892JzZKDZ#sn_wt05Yh8#??=UAGxpT}7(@8Tn}b9qAa~U_z}i6Ak;nVj-idxH5+R z&)7$U2?9pOCKy4Oz;_dZu3@bIgg{md=HDFGW5n2kL2%v}bG57OZ43;J?F_66o%rtp*U|SjEt*3@oP$g z@0#Md0`N&m0B)!&0EXhfp?Gg7fg9=yz$Ybnqk;EEgX9g4_Xa0*qmS=KpVW;8z8eiv zH=KNbbKYp+yU`$Zqk->6gVdXAeSB8{J}IfUH`EmXLtPoq!NGS0z)&|M;=5`D+)Ndw zPvVBUG6F+M-cVdO)D-~3c{2vU)fh0;l@S~qfGZXZbz?Q)iUmX6SPi(c8bjS!4Y&ee zs2f`V7+Ww)^Yl{}al9|z!{l2hQS#?A3}$;Wk5J#)&~I4aC2X40{m0*a9mpkxSmx^$$c|^{%fh2 z@^AV4*Q3CcJbe6^z=&DZtEIcjQ*M@!^~$cRbmrPXOwRLfrmIZkiV4H<5AHwD{^CGK zOx(nzL2~9sS5f*pUS7rCf5%Dt{|uCWOS?+)u41VDKOy&qUEBbZ3;|956L6K;UFp9< zym53e!=z`7OjqXsV*>|sptZzRSZ0(Epiu$Re2|dBh*2?jz@%sYW}s0A+8NQX(yYe) zT7lHj{0n%~z8V*>nx4sK1T=JJ`j4?V+Zmf+anNw`;$U6H&zpmWkC&I5m&WApHjD!c zVCMJgpt1gU8^-njM;iy%|Khviz--H_<6l@z9V7j}+ju$oFs}4J+W?%HslGb?6U&Q9 zUH_|%my?SN<2V1^#=(Pe_5W_;5#ah?@^}RJ`2RPS3$tzi8_Uai<&OVqbFeeOWYKol u9&nxcUkScBDFZRCcT-n3cf};Fyfey&6yA#}<7A;;RxVuxlI7Lf<-~@tu(UjnR z>9Kpx`+MH+bMJl5{IRoV&6>5={_G`_$%IDfqa+IlD=!un;5GYe2NN4CdKoiwdsk~$ zF9s}gd$T_j?thMmK6K6hMSlMevY;Rqo20d^tGV-QHc4A!SM!hNrVeK2SZs3U_Li$H&S39*a%Q%hCKbo2sj`xv?FVurQX(-|sv#_7|~@UQD-({C2Uh zpqksKook~GUNoOW)sn`b#-#q-CM_+7K^^=JlX^qqbz7j|$B$1x_M!Q%mD`l6$WH4x zpqz>|%vjzxOv7iqD;s9YU}Y~GDjP~Z(B3Z(+lrZp6N(wvtzKVp2-F=5x z-kUN<7`$t=p9##HBcv+h_iX=#ewQFzs(mgRvMMTZ}IUYIQ9)aS_*>d)4OMaF+~bc7@`-D9TqpO${CUAlr1y1l3>ru4vAn(tDjHx@CR{P z_TanoZf1uUJtgiYn5%T%5(sJ>^MQUm;_>I28>HpBa#6|Uz*Md;6e zFwLYe)-7$`x1jxWnmK(=U_^)PME6p+Ui(|EoM7&JZlMw%VQx~W{J!Ed6ciLA5>8Im zOMaY(+yCpv-bPB=Ix{dZ`g`-}(G8|PTS$jO&j%%bCcjKH!@Og~BR8@?GNYo<|0sAO zdb_P*So{br3}PQyJ^3&YBz17%^gv;Kwov!zpW1I?<7)UHh!6cx+Fd%^-)>}3;=<-G znDrly3&nh4=s<_UlYg*3QBf3VyH#npiC4}~7OT}q<2iSqwj^?wQ}xwmsT?bO!rp`LvF z_Yp^q-0ee)|B!~lYA@NpbnZsx8v?zR|IeX+h+7fk;-p;L1AJJHl1tv-13U|k+wpkj zu1h^AaQ8)@_v`6poh`yB_B1>1KA1wt@H*+xBpRZnHB5_Zbt^C@>~>2x>$lA${~#@A z)-hOdwL<~*f??{_zZ*+Zdv(nTdha*K{o92PR!6DOjJ6$4r5=x+p(X-JHSP}Mi|I!D z6p5`PG?t+*|DoZtsA%7#PaRGGTz{NC^q?>}S7OfJF#aRd7c(1*g7S=po>o_eS;E6kU-BMhtm(sFn)~?~4%f36HdueO=%GILiAFJ+{W1Lz1-E9PUu~!~Cz- zm3ne+KI3>*3tHKBuCf%$aK?cWij=*3`M%UYk*g;d*X30R4$8}y_1-yroE!z^ z$|dF;Yr*CZ{bv5@?kLVxEc@BbfkNEr`m@eO>t8jvPyAa6yOy<>iErHLp2hdUF#quW ztG!RS>lh|eFm%Vc(Sx2=gsE2j@LH1sZ#<@(j&-(3`E4AN|LxJrTA&6lz*3!1$<9bg z$q6OLf%q@MB@PWGMZ@BL`bP`v<0ON(C?xKVZck7?1VE1rKI{I;HJ<`nKioEp-s4M# z@3a(O-yT4_IxN?l1RmY!I68hS*bCtPB#e5^|4$tLZm;FUaM&QR6o?4jnYQ%4B* zd&QfQc)gW^D`n_2Lg8Vj7d$9>dSknvw<>HNm*G6aVtkHr!a_0i{^|yZQNqLpyS?H#=)lwWmKEP?5jPmq>P_*^*ybmw1Sq==D@ph za@J5jELT`j-jGG$qTx1J(u@8rKmU<;K_Hy@2!%wf;y-MyXqQA`-(T59L-}-2I~+-u?5HOVHihsFu3R1L#VJWxDr`L2>E89ZDBla7f6G(`xrh@a2EU51##{ACUZq zAAI{uKaiy0a#cLPp3kKA8-2ciq42Pxl86WKZBIkH)WmP7Ulc*oarYc+S90NUb{`g-CHL|~i81Nqu|N3i)pJ4yWIy`R@82yc%EBatESIL0G=f|H6zl4W# ztaXR{2tWGofc)$)K_>YRkU9PuWHgK2teNvBJGJFH@dr1ybc|ho{1l}VkDQ$R6ZT6q zx|#n@@~!#Hs52oYvml|Ldhy3qzGL*B{bi{j(>6MH?d)9S%R|h~PXE!^{U3Sa%th}|aev!*~ys&neVVi{0Yj%r$rd%C+cqh zB@MJ+Cg%^Y$mmP$ykF+y_b=TI=}>M`{tQz-O#5TrpVlQYa`-24c3Hdsfg19+&I3Io z;OuYy@psl|UhdiU&;RfXTTt1AUG}Fv8eR~x`{gjN{1AZ$NAsDvLjKq#S)9kNz_ufv8k(xxZDqsG&`)-iOMu zj{L89ays^31>cv*e_x<|Du-d9gi`1&qM(dryR>PpX#81FuPn1F1=x=T1dsPJFHZK~ zH8z|J3FHkR+$2wCsZcILFbQc>{v>3%|4x3JNBzrEM@aJTjx6`M$A7nk> zchL1%t~1qkjI{@GKu2n{W!Gd2Bo&(XDfSz(87Ja;X8R+sI%MTV!l>eY6L z+1tLu1m1S9u)`Sb%q^$_d~fc6Wn=lE(#-*Jad2Yj_MCQxH1YTzSL`m6ybjrIc-G-k zYFYWbGR#^~l3a(X_~@gZ)h$ExwvG5+w)H{*PNm_*cWrW=&Y~lJJFViW>r?nQg@IW! zQSxB9exN)YkNm?rCLB*7tAC(@`YbzYqz=?$MIOCZZ+xQCzhzjCa|R+|%C5kP`A8O^ zN&f1Zr2Lyr5La-&PyLVP^qR8r2IGb2{ltjzP)tC;k+NNiV{i>kHmIk!lWXR~Jnxu) z{4axr3y@t3k}=cfD^GzIiLQS&Pr*{pY|;)~DFr&KUTxE}U^srkZI^Pb+u!J6)zhXL zb#Ny}UUo0Ko&Z_BnhJ$4bGe5pkSECivI=pAkR*EmkT^)oUD-DS1apHK)E)0q z%s1(~Z4&9SEj!O`$@1DQe7lQxs|3L+3>s?9`;c4a^3gb_ZnB`{DdwswBy*XbR*jMW zT-!u5jY~u%mgUQ+x{#E|w8)^(MS_+~oRbCN`#B6>X`j%^Zya2;xd-vr`DM*7WeF{> zr>GtdW)rPDs`b66IG8(#XEG$+O^1`U6041~S~0S`Msi-P1_$8Yvig7h-SHV>-u zxJsQHdB0~qFSaDD^cnj(923zZn8xWL?{sYo&%c$%0OjO5#T{duE2#Ux58Ou7L+W`5 z^$vDBpGs*(9CO;WR4p!9H8t(&LqjW!?$xlH(}-ozx=JY|b zfYFkX`6{TYvar&UWxDHJ|NbZ2IwO4gCa`vx6*RW=2y12kTdJ<-uqeDtFVipBL4@Qh zMSf*X=FHC-70=u5$uI-013p`e`qV2RIz(MAEhRvS-c3LeHgHJ^IlBpJo6;|ykr@X& z6vJn;+Pm^Av|oyIJI@q^1EatBWDJ>PsH6Av%+G92Qf8pH78PyZn0%w$aX z#c1P7JjDP~+AIo?0F>8E7{Hd4wu@wZq(yZhQs>*>MVed7o>0`M`(ep|o`7R_^Y) zLYeMS?KO-=m1W8!M)0ioep>mdOndP*`7b$osa5?J-h3vOIBrlhyHIBwKbIw>1JtUh z!5ivA%oL_NphwX}BygN=g=1dgVDqxnnQvcSUFX)we0SQfAM6+9x``#nPMe4VP_+2rz}4lJ zvp5K@mZqs*xY-de8Ll!w>ak|C9ZC!HcijCyG zfN5z??7%KCi3Za z6$nJ=z+AtaWGVpQ6yB=;B~20=oUpy=iu-jcP=!-*n=x;Hq)3M--`39IC8OZdnsO7H z3QzP7BfA|}T0T!EWMpU@y!3&k9WHvhD^hpG)-`SKsw~aR!a+oWYx*BklQ_qwFl(uMB{h z%24Oz^Rg2Ik0BGdrdo4)edWm#@qz*iW5Yu9@wD&{lNPd!=T90;U9Vi#=jLC2-^t3& znrCIvjBJ<@Ed{rA4Puo%_oCB!2eO2URkg9V)MtboJZ?Y8a;798;pH!8$Vb_(4|>e2 z1gZu|QWJA=pV&pa$-@s4om1r_2i5r5y&H0#Ox3olS*I}ywvdzpD>D%uTp z4-GoBn`v?M`K;BF8r;~XN?YeErla2@_6qGyvvnIt(cRhen*j4qrp$q$7nV2YVFV42 z8D}EOwZ_i$DjEm@yj3-o^49R@te7fQN-i1TtuU2|35K|xB{h{LJy973)#r9<+a(S= z&Rq0^;}Ii7(%52Fi^nrQ*vIfE89FTbic__;`4gViY2W|BIR zNjmvpdC;?@+Cra-;S+=BMQvwYf`#{a3+ay&vA%xT^x2GD;*mN~IQdE9mgLNEmO);* z(Vkl_W98;yHxG6g*`+yHJR^5u64ac~qbW8}JA8ML(ckhujI)hGbiLBv!SWPX z=vuAe;n6T}?~v=SL0P;+yhyK`s0-HDo+l~hakiUUwJxpJoTolDew%isvI)dZzS@D} z35=Sh!rw+tUIRXyqYQ2iM#)s?E#1dKW2Mxs<-s3#y~r5h`)7DeEH-sv6YC$Y8*I+J zlli8-TwlTlykIKO6`hv%4X43^E%%;N{cJ^_T1xEfo+|i=>gwy>#z7BofHYPDRy?YR zMum|#a9A9a3K3(?Hmf>KsnQgvsOc?m3G^uNRq&a;>7zVNYRfZd6|T#8&MyNx=Qp?1 zk~@7vr-o%DA0Nk3kQ;%IhaGY3^wY4eJ90swa+U%8X-e)31JyV7y_G)tq&9D~a z0&kdPiA7AYtxMu-3rL55*iOh<_vgy#`YPbHE9Q%SH=hSyz{yym34(vvKx;fu3xjAl6Fjm5@-a@sYGSBQQ0BB#yMXiGP@=Wo#Eqn?#35 z#XOvgZK_WOdqiDD{WmfvUH0)XsWkY{lm7+!qd6KA9h$QK~QJme`vwDrvi;W@rVm=SMa-RZZn?7D1$|v`}nI%4LczI+@3}r>wB5r~YcZ3Yg zlUwWvxU%`DF8czQIbiO~t-8MqI+~cU)hURi)&NV_A+!24l9tYCoFOzi zTsAc=O^}B3jov74da}0jnySkB+T_GZQUZFxZuNZzfrz~g(AO91AXPS#RdnlZ%IC9J zCn;tYl3cQKa*ec#3eGz?amuCEPDgRd-r{<`WnIrdN>F&RGw%L~eUpEW>>M9=kfi)B z!nk|)1guQe#%0ngFy*(l4~LS5;75UpY9d zr~%Dtd-%D9895mza$;-wiwY!q`6%?)Ibil>#3n4)d8pLgG?+CwvdKKIZEUafTW#f! z!v}1#mMv!Ns@mU)vG4Z0@%V|81Y$0>=WwW_Zw6C~Sa=#__g4%mh0-)fAN z<5tnyKkuACG#dn=<~Xs=MMWhtIWNpG&i$NywA8FfI+gJtwE}mF{`m=RZRxa>oCxl8 zsxL|1`rY|d7`PkgX+gs=G3z40q3!S+cRpQz*1DZ3{gBGakTo1H7JRYqZc*_OVwZkB zgjb%7FqJLnb8G@VRctP-W27D-#b6Adi$#ltw@WbR{4NEKGWr;P0Aj+VT1Y##mTyLvV8`$FmVjM za^{HoD6Xv}$L(0|^3cTC_XpgLfkLrh7;i?twlE6ymKMDYqOV< zp#}TJOAwOmS%@bjFlP2F0$A?ZYxX{s-(?#|m1ZYSb^$yu*S$P)f`mSAdO?7fSzoU7 zuDQM&tZ*Gba=!u4yj)kfxOjtuUsTN10YQ^@9K_=*`04-ZR>4mA(=(3*#B z>(;JY%syF1y$=5VUbbLSc$srKJrzi-(;CEjF*V6YI-sc8#9+O9nq8z;>`5$%BZf=_ zlvzMR2t~<1YVCxCg^~t)ChL&IEz@J=ZXjU3ymDXj*7TWTpb% z?6bndGw*pDDvfn=JbRq<*3YMO|SJTH>Ii4Zyg4wdC5!D%Y1GsBtCM{p}_nV(V<9l zS(~|X!j#eu2V#_s0fTtBNK4mT6~~kSR5-(+pFNym`+PB<)%a*`CLUSOFRnHFGj8aZ zb8^Ba3Fd0(Vk0!JW0$Pno)@2>s?yHVMEyqF&NpL5t&A?7+JInSLjJ9MbHN&oceTD8 zMAC+7)76#Rp{@KhT7^m36OmT9uQRBYdo~iac}j}F5cM%dWmuqXd%qq(b7Gj~&C2=x z?P>z)g8ep=NSV%@>j|_$A>B93SJfKmw$=gnu&iuzP5WkghV1vf9Iv3Kru82Nuf;7| z953Mq;_>hcx!OnoZ8lzv`%2Znuptbtu$EjhnX|ATbcn{2EBZ3N2}+cd{fZk*Td4M8 z>(yAe&+uD~reUAe>6VIu@o;00RLk}w)0TCNAM?XiuT68t6HjJK1L`+0r7RtAUOtYF zi$TWJN5v3@Oh0-gO4FhXZpM#W$5wo2M!Up-X&VzAK8V7X`;WpJn;>>Mr(hK zarGhJfRRmzx_NsvWsfl~u)MQ?Y8vHjjAz;-*=IV(230Xf{6($QY6}O=|kD)n% zLS?pwhK7AaOCz%;7I&+ctxTc%m*;g3Jdpcmgxy0z;rZ@A!#376MH17D&l1s5rF?{6 z&UVbL?p#t3ZcG#;Zc@20-46@FAA+>?N#eZ<;`>e2olASPyb)JvNd6fMBlB<;IKy^y zc%%V6iu@%xsJPYNB(KSC&t`KfV`H&0eWJkcIO4!5nzoqnrK@M+1P+I*ev|6^MWv9p zu~M>uT-F~YYQI+-H}|o-#QVPKZWm_bHc4}xFzXn!HPF^>l=Yl2Db;?{r0HX&H&`x+ zq`xENQ*>Yg>^vE!4(HX>vLVjC`8A__gr61vA*fl6QLwqSs-aLDk}+>}X+Gcw-bB`T zof6C53Q}sQfRe;7SvU8aemamwoQg7Mj+kO6g53R$jen7>d*;)JS|owxF*7IftOjFOnDq7+P?!L6F?R9+J1|dLNH5b2 zb7Dw$%DjPhzs1Z0Bqe=U7OKJ_=fCaQRzLR+qiDA_fhrM@ILcU6!2n+9!>3b}iJ$17 z9?T|PxKbh>CD3}rq=78=+?_IVsTcNM>s_hH%d7cedJSRIe8oLpYP_o+pF|AQ52HU& zkk(9iU8Y^Iu|E4vdY5GvwUAWS>7&&&oq8oB@BmA5H}NY7!@JO{XTk1r`fAt9WB8jO zyUG`ZdbH+PFbwK-7PooYnr?9QrZACw(PK(*E8dW8X7i9|DBLxGFi>Oj2!{_eOuo@u zj8lYe>DzmJ0z_B%>N!TZ9!*=f1lMa_rcdEN8+2Iu*0%HE@*3BoSr_#ht|FYZY#FyK z;8r|f>Y`DlrO60ZOVVM^ice6S@}u{6f>cZu;vmUGGre0vOL)ArRNM=M0j~V9l-sTf zis_u@S5YC@k&#mJRMTM5MVPW?YcF`o!c50Z#|ENyiZ6;FBczhD1LqiMm@2~f3+=vxh~Yg`sjg%App0=AU7VoP4<9vWT~MF$Iz@{le&2=V;m%Xv6zJBDs@ zB`cAf+tWcBFqmc}`K1q;vkUMS{YZn{DAvZ?(Bu=+si5dw4Qp2Y)DdPT0S#M#npx7o z@DOwO;9wLF$$~Kl$6@dH@593=9$lSg!?<;R%Owo8A3Wait%DOa# z%9@;pl`c9IYP)%&I}nLr509;>)|&G&&FoM8&P6Zcg?noUoOe?;`&T{~TV(xqUnLtV zWijb3HANbpVSG-S;mq|L+B$lR6|jZ1>A=n0pk>dK?Wyj)-IayHidsC|;iK8%Sc^QC zvUxrTa-iUY<%T7tP zn<1C~oWJoTq}e?7*vtzNL^D|a%lL2|N-y4a_?!nE{gX$Y#L_j~6(YvDiGLQMLGuc$Wmm zgSXB6ppo6A%}vG1jjJ%Pvmb`Tvu4ewnXjqGUXX#;=$&R%vgKHlvhQ%JDIA{Fgjx(z zxz`eMPwbH%A<+Y)tMB?&124g zwQ35TDK^irAP49ri@H5L-=_9ccIHg;VHMgUFbcdr32TX;SXu3Fd?e(ei@8H-Xqisw zggBhSxfzADtuN!J(P@_Ugv&f)j+UfL1IA9JKeD8rNmG&)3i^0c6^en;xPVGLzqfo} zZ3bK*!PuQIa4}j*_UO4zO4C*WW9QdtGW8wGVgX0&PpKTT__o*YE06h%( z7h)Gj1@XY9SHgMw(34iN!nk!)8+SjDVVs-fVa6uyBAWrfb6b~qtU&boCc~&Lp+TD% z<4-?bl1}bL{ET-L%NoZ=QpictAx7+XvD=5}HqXB}IC)%r36<%m*sDNOX8V%IqT-*1 z2pF&A+8wD1jisEv8W8c>=A~nl_ZC;$II+x1&UQ;#&H#wrapA7(X8XS5YXrCY{|I1Q zW@if6-Y=~+1+~qqX^<7+R;+kvBpPJT_MT(z7C$-%+xg_2VdNLjY9n8UJ~?@j-W^fG zk~vyseq6WC<1nkl%}SkXQ$M6mL~h-nF)}(-UZ(rqcaiMI|e| zB}?~B%XyC5^mOe*Hn#;!reB?i5sa>TNMhpWKOWwa$A!cadGFTtDVt9>&>-)cB0=S{ z%S+xXT|7;t1uX?)OTKL%se+}hA=-FZzdTibB0Q05=9^JrBj*yb zaYsaaU?MLfw}xD?LMdSOP4{qFVlQ5kt9ghEG^Use>bXYUv5e0l#z__=J_)I<9w7kk z5U36z-yUm3-nb{`kgIdTawe$)JOk41aO#?K)s_r9`c3APx+}#= zn({ZnzuA4(F*nH;!3KK5bkvom9(5z6D#}KjX+sy`f!zy&=bTH>6JG)_sQHkP_=n^- zt)#))Ip(A|iiC`m6hfjGiCkPlLUgp8oOB-jQLl_Qem>JwkkmZ3J21_O{K~nYO9qKn zxh}A^A#rPYk7H~q;n1`=KgpYMxPxu->b$C-uF&u@nW&k#1skF$L(QAY`&;Z1gYDV2 zxunaL&D}mE)q+9b;1=VYX0kY#MwY@b>g&V78>9UTAp7p~)DiPNg_?<84qYUP=9&TEs)9b=o>-Uvh%K1Rt$)O}fN8Gbas`UQQzG>ZC>qIKhgl z2?_V7gdCM#yXuN>+YUP2Vduh|7$<=DNj@OIh;s%y=I*#|>tAHYIN{}eqfC(DtqCBX z=6CCZ`Uyx3?&XWSV_@>Dw*ivvQ=|OCk)<2xp7H~r>Aq4>h|gvPoHQ}qVMyWb4DGJt z)zC6bNKwY&t7%d}DwPH!(98F1;rj9kMF2>it%5M+CT}4wy)kO}!{`KVy35cdI@9Ki z$I|L%w(lE}vglH_&eln@*$SV)tfX~q&QmSBxunEd3`&AL#kBV<&;m=~fLb~0$Ae6j zhx1}b3IghdOpt-BJ9_RI5Y=PG+X;rei7~7zOMwoypVes=l?t&9MOYNtq%16?ExL6) z)tBB>9`@G?DeNXUQRs)#Q+D>!d|*MB#fZm8V43^s!}jH>3oX|Sems*lLq>ZNyJyz; z(GWL@hpm}0I!{?rAz^e9a$%8`sRoC-lFVUM>#XIr`Q9F|B^aFfyeH^HZ_k8qr@2w% z@?E{fcwk%G?(Qs-@9EPTW=>8XK5Ao={oVlUje14PBKqx$1)Gyy3jc~T?I`3$bxdM0 zNu|ioftC~H_|G2aE~r5T!V|xy7{`z6&}_O|grkeS7Dgh|Cmpc4C1X80oHAlX2v~mh z&j2iSt{5)s1lC@fQ!vaEk?++mGm1cANP&v@SEmt&Xmjl4xyDIG%sLI1c$TBA-iMKv z8!*C`*c?d0HYBeX4!4BZM`LlfIi@y1Q*-Xh6#8ZK>DrT4kC~LWC;cBUSuVLXZ%*by z4zJ}J$9-$eZ<<~Wd5s-KuqVvDNIAP4+?4UqELc*h#N}|{O5a>}SorQT(8DX(#>C~d zSITmuU#0?#u4BM%N(HwL0Ux%#D5hYXN-QeE=kQ(&OMx`5qP|LiLc(m(DU+r``C`4b zjJ`cngyk4z! z$CaMuQ)v@2)8R%x~ zLPK;yS%Ui<>ijzxOQ+X;AN%ERAJN9OM37}ivp51uQlsga6qbS;HOZIYDPivARe1B$ zP{=&1HfDfvd-V7w`=$v}`^FgV&B`{)g}#XQ#!ZmGQGdldH*Y;I-QtCVT?u^*Y?K~@ zGyRF&Q-==foem!tuaqUL7)ZiBs|a~oyurRgm2_Q_P*czQH@1aLM`}9(nml3H#FJk* zz_Cn)PQ7`Fp&>6PWW%OySs4<9z;!MbEHaEtTd{zly2Mfb6I;SXHuqi2u|<a)72~~4cO)o>Z@>I4ev$pdf0a-=6@Z;^p%s|R)F)*a zD^?fgaaZt78<<#P_$N++%N1h^_&?n8@7k49^iATD8}F7C`^4f;X)6}dSnDk7Q7wb) zez=y)I=-W=f{#*UgSi`DeLstLlnNUFtFH^1%**rU@f)m^0H*Hd{0S7TQmX0i$%N$DhBD*a9YYENBw%?pH^7x z0`W`U>Lrd9AeRGTBo>e|W!xWekx6@eMBNvVdqUk2fBGc9f-(&evXte8bCIJRWtUq5Y+ zBcZ;R=fo=dhQLmWV6s+kpDxu~oJKN*io3c=)s0ugaMysD>3m#e{anOsZ+`~!VZWr^ zV6`XVqW#SO71P?@!|!$?xX|*#H(v^zGcl7@(<)%U3ocz`T`S376}+W3jvYAMIMn?% zNmi9;mw4t?(MTsGRHB`E;#)X*^+t!vkX@vOlimJck0C}zX0Sh#$%1&Ms?@9T?269j zT(CPfY}giBq`Lz={BE~>`15CPNuDl3N5(IC0*)i5v05NA1Bn~##JplahiFge zIx}^KbZXwMZ6SN68fPG*WM@0FrPam0Zzj5RN;4NB#1^qkKU;l|`@@r&wFR8i$9~c% zdrj&MR)rHDcLxR{i2(p+?Rd?s23u`012IH3rMLSppO4Nk54OCd@}trtW1H0iH=^f= zJ5I>;bPybYdF(HeR_5#4*Dmk)9ggZlg`yC!Sy-8x7t`S9eV$RY0ALsm)M!lUzSGl9 zU`1UPDz9q0fh=?;E;lW^~v_-OK2<-jujy{ zN!*b247tpjRjz4ca5>$TyEHIZ_(tO+;beanr3xFhtzud6fW*F-0>^kPU+F;>-NHQ< zQk}m96lcVK?>o-%6z|)Ap6jf?SU{(-xCtTXVLo|H6U=N6s`gdtU`S+*NWlk*z)O8a zr~_W#d-?Z*r<~MVE{C#Mhq9Qo_NRxsQCpnFU<2jL6O>#CKkEV-hx9W^FQHSNk>P1s z&7+H5?GwR;8vDWfrKywp30><$GqsK#*So zv4${$qRmWr?b($l`w|1mn^qs{rRk~B%(v4+p;ydkGIU!@4huqqmjzw@Q z@$_#;N^W&Uim`TN5Tb&fNijRCc59Gno|BA>lQ?;=G3jtwv!lAllGu~>bKLhV?L z^jd*_5WPFPuBOnx{n3LEQOeR{^;^;IbQ$EPK){k*7XX|c?*Y=5q=qWi9I1`wP`Rvz zgC)FG6g!D@MwY4Thiyt8KWd@t7qt?$n5}AFXl3*Dr4VqUnz+Sch4FU=Xsd^jM@&gTs+UEMrVf9)! z_`dA*g6@FNd8VR>3??^DpSesqarMu%yEoI+hHJ^{Z zA8pFMHhI=aeDht8d~&*{T!_1Lnw@%brHKD(G5eWTtBCHeQ|U4{WFqzlh6(A@NI{#H z`t6rCu(dUD#ehiWij~I9CW%;QNxq2T)?w?0W-)#?-er8&kXZs*vNBoKf~Z7IW(Feb zg#1a=%khj*wDT><$Y#2NoqdXzU^$P!iphbgWcy7EgI)J5x~q3cYwXbnk9hE=Nk} zDM!Wg^IWe-4E>CYa@RF~_!4-aKOL+ds^+L#re3n2&GpGlO*wi^IDL;LeYwFZaoOE% z&AtEa#;KuR{=DS|w!U-vlsh-qHyF8`uSa+Hu>?jlj)umw>$JJ2CVF4s8Rb+&*lD6Y zs68ln1n$+eGF0HuCJmk_8gm#t2ZZ{`-e4}%BUZ_+7u#K9?D+>!h`kb@N|S~~$B#RH z6#P+Za7n6ow65m3iCbI!li=RTBpn&x=dr|;HN|4AJUqxqiOVVVlKmK;fkWUY zJO77zvS)eR0Du-?6E%{m#;7L9S>;lMM}sR48S9O@>l#d7$IL5{H0?ur)JspZLoJd& z-#az7!7%lGpm2;qxiD7NX}5HTV4{1+CTAkQ^;5^utOJ|SSK9FTsO0p5R9w5O)BD34 zXa|+>O%OWe_w4)M*}f-hTfrYi1^HGXyA(T>vR!qo1q*pE-vndSnKf#;(ym$q>%yPPsxoBK9_5S6(NV<3<5oVOq`>bi7KQT7Kt62QX8Z-o^6R%wP0ZGl^5%eLAL0bq4aZ(>-*SO?98>{y2L$jh3W1D=tf7)TG2FFB zi8FeQQCpP-#w;u~b&qvi2<3UlZ%$8yvnz{ACE+GQEZVYr+_g9W!#UH(=|6#1GKBK- z#tGU4?a;giu#lJ4h<93TopV}U##wXPQne*`*PnN6Lc`5EzUANra3Ja4$Yviq4@jkr zr%u$l|EsKDo*{B534KACC*U-&dREVk+Lkh|n@IQfp-n|22km~Qb_7qOc{ySIXS zT9bhgEP7W1Zjj`)3@g7jD9*Yh(*fnT$jz0B%7;1o(omF7bE!1$0+Smc}7N zJ!^@%tKNb9QbteY8i$(ad$+mS*w2(-!=Me}TecdbZQ!l!9l3@U&E;|pYfbs`b9DhG zJ8!~v-Qo`T^prc;0_LB{tvN|{UlqehlPIpL+fj2~#Z=IjJ_Ni~o|w8!`mw;M2DY7|$SH=#uo*6m{#CyjT>Wo9y`6qWJ`N^nJ29CyU1O|ngGw$Jd`tOwLq zU%ux_zm2)g@{`}OG3(sCA5+B79#=FDP}#oC>Nixq`5Y=zdyjvo>zToZe;3APe4o#% zx#eHkfA2YK`OYY>jSAnk=?t^+nW?|ih`?9MxWDb@AcvXDuF^n%J=MZ<+HU z*NW)+=#jH3POW48!kgIEttcF_DL)5%xq?e~FV1gNA~<&0`voe|GRHH4V`;7hhumcs zt`Ty=F$UYnoeFV31kTLh_U}0WcbH`<$ovR(_1(2f#t7@nyRPb&F-OgL>d(v&;rV^a zf~r&Ft$sS+UL$@zqq(L`QU4!Maq@+f+`SxEc zs>dcN4kZ?P=?$<5COGdSx{X(5R;^bh$(EU4Z4p}EyzetM78q#{bUygz_;mnNqyWh; zceLC+)ICaHmG7BR3{;E=AjrnQ?~Rysk6@a0cPjLJySN=N;y=25>|cJ{JewB9|ichq>P~m!Z216r(i=%rI>&DrLa870egLi33LqlGQvB z^oTZ8H-kVPMPKcO{C7$e)#jk-Bb72cz#-p>*V8-lU3Z_hc?4c7Rd?e>652-iZ6Y3 zebO|lC$6V2Qm#a^%bd7cu09V@gPVrwaKM-uw{p*l!B>S!{j3 zn=gK$J)1s_=1~B0!1_iA?(k|}^5ArnIex-2r#{L|#AIimq+!6NB+Mse^SC(?E^B?& zy6=By2bW@uH7j*ZEZl#32Vn6Fjoma!8jeE3wwD-%#_lr(*!;QE%6m&XyF3?A^VZcLaw#Hyc_aWlpPVwtD0t-;x+N^%d@D?Gjte+_w7DF%Pg3Y1 zL3Q+ah@fhf*v74T`%&gOCQR8c?;5w=zCbXgr$~9^{qUBu$ooj0Y&o7#?|N*jLt`DD zSm$dQNQhioRWba`52*flIuKRIgF#np=-7J1%XNe;2X?*V_84sWd^$S3UgCK=(470> z-z~*3!Lpa7^~p|vObM4Vt7ud>P@6OQF#LE*$Z|qp(+Vh1`$dfJ%vFa>e8^>1EKLC1 zm{nbsD&gWxzc^`SSPCfI_sB@gVkFy|PROu?YI*rTQ+ zocX^1PC&80=1-@oOo~NRBPY|l>2$n2+S7VkCtpqB0-Cdk24(MKDQ~N2odh+Ni)fy* zpL{Bvm)W-|*Om2@z3-)AA{~8?`u-r*ulY16@g>o@h)Q`rr7ce_ zi+PkA8)l21pSO6xD86e#`exm2s}q_a@kga4xV5skl1YtE6%Sf`+Pdu1WNHzDuV@-yWgiP zVJ@9d9L-rr*X<(8vpiaBJN17)roB(6b6P^{C^c`1n))TQUKU-^SJ0jpvwx_y`A#;P z_L@rj`8l0|Qg0^H5l2%l%%gqgQ%TNN>*Jm36)=|OPo{S2Ia+TirTTknUH&g>lj79W zOjXxjNvV5=wwO#gGoQ|>ky5{h)|y8-qNMULt+PbUiRpCylj&UN)80O&c@NRL^JtIb zXnGE!KcQ|s{pwKnXb<$07F6InPNL%CM=(%CC{y^hxTHidS^J!3nyt5uYa zCEjvcNawd!y&k5~xnEAb>dCa{D)uuvn?>GhYBn8P=?TxFt(MWTb0~#5YAPDlS{Fy> zs+8V!bZ%L+Z55S<(qc@fttO~#R4TPMjkI+=&9hQTtfMKV_AaLNucN6kbgVeF&Lq%l z0$o>^(cDHlBjxE~F)d$Adz`FZqe`uAr2X7O`yNgEnoQd&t=RqQQl(5Y)i!II8mY8~ zR!fxYut?o!k$SEDf5P5AwCyy@^L?^S(=VTGP&LmOb8)_5JCtc6vY-rQG^hRq9~fCD4M2dnucZ= zhGp(D+?|>2J>SoHoSo(VaS^s<>G$&do|kjJ=X+kB#Ln^g(Y8+|ee$fGCHuBv?Hk+g zQ~Ue(^itN2Xd~B#$VrV|$F7^@u4DVJz?f;RO4coz)|&9YWMkT9uAXCN|EU!%`()Yr zZ{4nx*wb~bjqAu)wXjFe_mRtM_H7$!Dw$tLmh_Q(HReXg?lG}e_Uzn>y{og{&)cVI zYeUtJ&DniRcK0?bzKirYaDnXfx$kdR&aCNbRgmA&rU&u#m;Wh>^6t?OGhZd%t54VN6-xyMMh`!>7xkc%63 z=Bi!qE+ehA_FH?R2C{RNe%Enp%>5%qOtVgB?ODs$?Fh}B40Bx1(MG3g{2Pp$zMmj} z3)b6dR+qjnqaTVKFP+%oXNBMEtegq@v4dRD-xS|`Xh)areb#hchfk#4Dt4t!WJbr% z?N~cz=+lnfqrzNTK}t3`s*c=TwR40sq9=KcP>~tgVFV|<^n_j3W}Q_(v;Uj+U(Q~2e&=kw zig0}?do`{1d{!-RRKec4_AfGv%Jx}?y$twm$}}Y_1~uH`5c;G(skD) z{7=@tKcO8**7m0$j@NeP=k{~g?z6(k_3iH$hF>Rk^^PIcuJzbwCZo0fR~XePQlS8^ zIfz&&;pxlh-4=b=vR3AhOI>@f-!+?G`lf0})fi7bgYcC4Cj}yF+6#<|&JUR3S(WyXDMS9`(vYI6pe zo@Q05_g1Z?nw>3cn`GD2j$X3=3d}Z1@dc!B1{u($trKRv=J^=u*hDrjBV~VX|7*=& zvUX^Mz4vS2F8}1%z8AjepnIBe_Dj<3*jUu)`vxs9*zXlqzcAanNzJOYRd=4TwySo< z3Cy#`yBMYYid|LOc*gT+el{4pk-enyFaMT@zrRkp@c2`_5IC&-+v z9oM(JYJRq&%<0ny(m$)n*L_xLV!!p8FptKxTzYFr?-uMQ#iz?$Q@Tp>e*hwBTMG)- zcTF_;44IO%eo@c9ZPwWcZIOT{TC9WtBff5Dz>``g~^_(eRJ7#8`gp? zYu6SldfT4t*gidotM9;Cd1O7cZpW_hY?@O~&Hm5ZGgs`2>u8U=$e}Kr=nCJ|qUF(I z9SwPx#=7X(_dV`5;drf)9-}(pj4{Y-)y8gS&#(LC(I8dMZL?$hK|=k6U=SPOfyjh0QYby_A9+pNy>SYs2AZXUU)d7MY~Hmwy!WN8)6mPYOj zk7(nWZ->~JJ0R9-^7+NXBRiLI3@cCU$j-$TOe8*1${fXYjP%o z{47~(%eGRbrMKXJ(%6}08zD*lE2cLj8RyU*mrVP$K*?9FA2Rmc)OxgrUKxTtp4nBZ z_RT%8TF$PrinS%1Vc*W`f=X^MFSqTS>-5|Z*?Me$r5$eCZ?Rz&8>1OmwqtX%Ws*II zlzU}Q(t?l4fS;DZHf_7!ytUw(-FpdXc>^sgIqlMajLa-pFAvbL>#T={$=D6#Le=K8 zY@{7z{wXLzPa$?mv$D-R&$B`*SXw{YTxdu8VMcFukcc_(M9J=wN7f`J4e<7jiN?R8}1lF%Y8R&56M$_XqveP z8&I*;^}vpAWBp18PtadgJ9=z$Q+D7zJEG3mOp)|MYw1hgKR1c@rG4|v?wK+vH?z6e zVeaR^c;X)W)`|_7#k?=O%ZJ7EOLn%x@-3-GJn3X zUXe}HuyYd7e}!XZ>%F!sh=2GVEAH%7`u}}Z`8oT2_U`Pv|MN8$E}}c<&_pFTxH&At z6joWz=B4cCyv+5u0`%Yxe{DZjmeKy8cf1@ogL3WwSQlW6c(j z%gc7Ht*C4FSe--ec@+k|%M9+)sty>eXuV(Lx0s!mrYW{q(d%#r-?8Ev*1}8nZqq*d z*sl9E_V;V+<&O2^fgPQ)pX?0-`=#N?}3oDVjkFaTh_A2 zJaGY(|B_yi#CUB-JYju41%sumt+(v@pGSVJZ2i1p?Y)LB{T#XIK84G~G8FCZMH`=@ z_4x1XlW%SH4DFt3$#?YUo_%wbcDh`;i=}xTsZs|=sV7?YEC*aSv9o`N)Nu*;owZZ4 zzX40rwb`xy|Hl5SnhX#h@ro<;tfgD_6j}7#HM>_1i{}OQVw(Auv0g}lD`x2V43c$5 zl*BnWkETh8B|A!Mtq1;SgOo>biekkp;Nvwc#UUth3`1N6xoZAOLZ)Dt4$!C_@P-)o zLn0|===e1|`nL7M5=ddoj!>*nf=r*7wAkS~6RvrKGs@PFVhyARHtgIT>nWiC;n5BF z$=K3jV8 zT>)t>Pm`YJ7RYsApB0!t^R_W6s1uOQ+g1xWW zPX=422O6)~SszBp<#MlTcgixOGFZNOIOS5ffYx8K>wIYUcMe_hq#gZyJv?(YJU$Jc zwa$8PBbzInk*7cMJW&Pvri!F!aeS5)&_G%anbmpZh4f}02BM6YaLAKYqSq`ztM!qq z;u%)q7rLO5YtatW3ao*oyRf!bthc)G0uy?m3GZK{S9)k`u>o44($o9=mj{1zU^F%7 zSFssJ_!n!jPi3DvN^ZlTB(RokJX&RNO${zUp41il?j{;|3jXfG*{_3f>eweeuF{8l zDk1H~&kSjI3kfoYk!#@%(t7HnABxdOP^U+G;8R)8VtbZoWs9qo@Ds=m&tZ2L>H8Tt z-nrm{eVVf~axfGvq+$!3YJ|)_v7g5#4WF5udttKm4vf3}i1G|Rvmf#DU%@v&K>w$) zb(|FzmMFn5PZ`fT++~Mo%b8vEj&OBf6vh9>an}{DV|`|z%wcF+=7kRiv=3WbnNs@n=R|D)M&siD-kVcA*IbX9oOSD@Bv@Pu@ z_Oy$4ssroO!A9%xuE=lqmH6kfXL3lZ4s*L1&#BUm&YPEWSNgjI>(`-$OPuf5``<^8 z;*a;PdvxpEuYp!BFwe5A=1$}sSCEba?$RVap$xCsK!TR=2)O^Cg8wL?A5uu$1nYg7 zwm073xe5qQ(#}2FZZ~z%7-i&6hc*^j#SM61UkwE$zeih?keWH>XBGawgMHVGyl0)! zcV1`|Jf@@x@+-p|b@?rcT0w_3VlPzUlctf0Emlc|IhjPh=*S}R zBMmfyn?s5;`M(xfyh7yk z`ixHlUS|MWsH1I5tiUyE%^Kd&KCS4$4E@i^xSKcIEVH`Rnv7FCX09Nm@n))6ZCunI(`7p*|ER!4?ILO4QcTs zyZ#fq+imNa1{$%;ic65Sjp#e=;C1Ol?`D(lmWe&6gOn=B$_{gK8NDY|Q(`?TThbs=}GO~T$5a;LiYD5pt3vw>*vl3SDm922S z3T^2#ONYGg5s~&?obT)SjMi-YHODuxQiRr3~eQhR=^ik#U6ZQ z_b;PaYSyD3FLTDQk1esf{r4fdtArhpx3OD(6DgAL zI~A>~8ow)VtgM__6t(ziJ|2J$xUSh6Ikveu!#0&waoq!EZr-+@1gbmz8!x+zpUH3*tPkz3g_$G{S@u{d6Zsb{%`ZX z%I{5nkLale9>W^n4T9fI zehGYAH60^%__k@PP5iNGwEF$X(&UlAIo6hckI0)0B_h@*|Yb0UA3PZ{9K{s zPs4BQr_M7!vY&$WkKP}}pFKOK&Kx+2GiAqQ{EWV6fIq9)GA(4ETc`aPyEcfg4)(N| zFX5yyW1O%yWUY>OuEinO?fpT+#AK@svTeuI4ezpVuoxZVT&hSGVr;gs~c75_fvcRBv# z`7aOO>k&7F_-dmCKBngjSpG#u(U~jPB4s=xxfqdM#=D-5x?%`Ys)AAra8x}aJ?q#f zV#iDP^d8#G`;Cplr{P!jx`LMdH6HnF@c7!lHDo_eERdsO#rK>N)7-K%kL(&{;_Wi_ z-KY3~KCvU_ZRY&OKKomHw`_m^GhA8<%Tkf_$Dp-?zy1&V|FYfdSK%%DHVMD5yZzGI z`5qejq4ntoO!C0i!oKyBknn+BWgGOoYv1IEp6D_UFIyY$f!2#KoMH)=;P2|p)C{fm zF&Q8ivh-1%Xuml-Vvd(bvZZ;Sj_l?V?4F`v7bCN|$oGBgwJYGmKbl4n<9|d{yK~1L z)%h#DO(Qtp5!j-R1?FD=*1vnzV=O=m?UzKm?ccwgEA!}&CbQII!+Jz(CNUNxi7T`k zS7R%p;5J&l89BlZd`$MuwcUdwztXPF`f9`ib?m$h8ovvw&+}dwVbS`dPtP{EQWF$2 z#`aXK$UC6@Wt$Ppu$UjmSIN-0URj$N^VUD_*>~^R>m6IY@-e<=-_6@x(5D|^ccyK2 zrTOnuJF3b27Q6ZZej@$<9=c@Fj!4_5vVcCazi(M<-@^;_7TG*myqX`yzaJ3o__mGr zM|Rb`{bY#v$c3LX3o^t==j;mS?cF@7A4?A0qUf=Q?FPg{8wZla;L1NeJBYARB;;#~u*1%TKDbf& zKn&0Q82fVpPigL7k;v}tr(Wq;U7Zt+yd{vw*NZz z%}?Ra;ZN4%--SQeteo14erzjj4c_Omt++k=y&3+i9sQDdulOIg(d%|@2m5V^mC^VQ z|90*lLIM`is(flcJLh)Kojdn-`1|lraBjkv*U#N2PEqpcirq>2^%}o>L^=F@xO8sU zFsrojO89TEcFM;RyP#Oosl8t|%yXY?k?+Vkm@wX1n3FP*1s}3n2kY6

zLtEm|JpG*euq9<^R#QmzS?D80~zr)Xl~6e6=CX^=Hp+`uMk zBEyEv7yX^ba&E*pE=MCC`PpFp^k6rp$dDv*%_Ep$=g>+qa-jy&Ek@gl>Jh(5@Hj(XRpJWf!7x)el?3apkM=6Rk$olndJQ<8Wf;ml+(0SD`zLTXqsSR_ zZ6)dZG|?zxAwOa5w%}y4!DFu)cwyGKhUZbaH?_hY{W%; zgPt3Z(C205coE$^}42(49~AS<(MD2xDLu-?-HIT zVY?ycmpFf!_B80jWm;9i0!kB8Q(~TGh&Zpovdw5m2^pXnli;l=vWg1Wu05{X4W6Ht z2l3TFE49da`#9-}S&)`83eSN=+&e32k^wU{qu((f8QQGPr73>k1RhB;;zMTf0(Z@_ z60(u69D(3mVzlf|W%Q_4i>ZTllLoc3wN$ zn@z0gT=2N50-3~O-kzFndt_JIK@uqY>_;?+yjRz-ueLeZ9 z_yZ#^re+2^s8`N@8iws;&90axykzZqMt0vV(^?a7z_*HSIhQicGqa!9;T7`O{ggFy zz=R&`Bi*Z5VpV#5m03Ta-^altZM(?lE!gh~@?gq$o-NyE)(u!W6Xy6@ILmVC!GTTD zj!j0)byOOz#&c*UrsEsvg9dz;>h(yvuOoZvtj!_(?Fd$95y}34MfR?ZR_sOuFo^tm zCnOPpm(dRc)_0L;I<GS3rHs(L(gNVd;<|{`5SntVWL|oHYs_|JbFMbk+sd zPBD6#I*~ujMcb)>hLM+ahE{PVe~qSQyRd^?A7YnRv5KUR6bqU{ zd$nMwD>lo;T&e<(XD(Dh1Rc)uNCL&jrO?H~+D$Zxq|*}bUj#+Z%4$^vzH(=uT6_Lr zzdyGb_SEpwBl2qh#^#(DO6Auc+q)<5EaD>XggfU-w${J5*{RQO*_q$N8gz)$sgwKP zK@wepCl)`S0`V-t?0b}R8{T9yV5ZS75%!CknH2D3^iaMM=o zp{-ys4>#=drE?d9vVZ@P=TXk@^K);3azEpL|LhA}FLyZNw!OQ@xlipX_wDBa9{;;0 z5$@T$Z~0Eqj$hi(4SPKcilJO1!f67kZy~jA+8ImuJlyUziDy{&U*!2d_rCRj7-Y@M zhc+6Y8ftz@>5=v|Gu+NeOLn!UJ;5>|3D_$U+kO{8;ddV0m3VPkGzoA=K;7ZZFd-2 zt2Oq6;1M%NVE_+bB%0hUy~O(JIcuN^OW#0a&ROr=w;8c(->GKOB>eX%eI&(BgU2IR zkx3;aT>dwD^E7z%f|vF@pV<*#1jQIHV-4!54)If6=FAg2{ubVb2_DF_jX{ymZbm!i4m@zx zo_l69qtDp94hhv4uFw~sBc+vDr{{Z*XFsx4p5}f@jB?q+2VFqM2`h|=amXQackQ_E zt+o61%|ostTYSytSr4ybhP#&W;8d-DYBn!5qm*fWWFzy+o@FQ0P0t>|Z+JvN662PH z(VkiBJj0{HxL&loXsrrwEn*dAOcHG|rl-MUme#A=nr8*+f0EWkbp?=51p)$wb#u~_!)$eVWDCH#YRa8nW^p1aua(#K2K z3~vWTGT#WQJfOJ#a`<($lO^4kcNW z*S`D0)fg z_6D}+KD<~N@2Y2pw(%}D?C8ffPd4e{5)ms|JRk+Gx`XuX(v~uo#~KX2dV9)!WC;(+ zv&o?s2cV1;5foLTxAJ5aB*>gR7N@M!yHT=xuAHtk7c*$qgU4SKiAbx4f54s}+9-FJPta;%-RM^ z%z-yYa2px$<02NN=d*SgVK?^HwNe*NJ2cDH;CaSn7+qsh2Xh}UUjHL)OAA6mts)93kg1k7EFcslRlQf3D5C}aj1e5CuVWV z(_NtFmdVa6*)bjXO4Z4H$r|#?AJyP76RXU$5;&lZHRy3rHJfWa{;!i)<8_0^!~<#$ zYDO!2zJcz~pr0G?kn4<))^IO+loVtc|0C99 zowZ)VeqDuOOu$F-9;IR9G~XSkuVV|l$EwPVOoCS=DYIS+__ODTLhTV}(GMQ?TPDiL z>$MEw^;RQa*n`JuVFj<6PMXFDPms_y`2a7%%(`#4%}SNmLiykW__7l1 zXxQwUGV`y-r_t4Ck%8R+|9TdxXJtzcOz@wsqumE#YRZ*$Sn~wpcy%4CiFp|WpwME z;QkRsX`MrpWzaBXW{j_;ChNM#`=#KO(xlgKgI0v;9vR}5)}Fvml|g+kh(+u%+Ighl zWf0ar@$EUgvvQ^$SsQkE<`g6Q1*4{TwB~;(N49ntS#-BeO5xw<=DFAKA}AscGb}57 z9h*a0Z*#%x9<{^I7y)su>EJcq+#|Bg)$<_M8hlL|&vq3rrjV>>-j|sTiy%?S;(7in zQQu{emn8n%U{NvF^R#px&6+YzCGXO^T<2}1a*26Yqy;~NYphsLEn)j_U=h zHb+XYGSn z*F}A-+5w!>JTlmQ!+*!@@X9H5P<;X1q{yZnq=3-k9&>92{ZU6g9)RoB=RJ<m4X&NKw6%plr-EEk*yQ zgXe+OgIDw#vg&i-gl$^18axkgnOR*1hg9&8EL(r%u)b2ks~WXAwt)7U(!XUS=pLNu zAb6c7d1AJM`-BqOT}JkG!K;#Wnw`oPI<)8QlIwOc`f9XxcjN3@;b}|M=8#Q#p85wB z)@_3oTnnC!)nOK|fFN@8lY2|fA^-}+3Mk?#Yu50`NJq_#i&Tp#MbC=oeRW{sE5WNf zmcR~P4`V_!p~u6N-$ZXU@ZoAMHSOA7w<^PYR8~Yac;BJASY>_zL}{8caDX$P7B?z2FhjDSMX=9+Q!a zxk3xD5gy?q>3)Go7R5t+0Gjsf1g}`Kh+l6J`JCWsErR-;Bg&$uO04)iu~I^ZA7Zw?P?EOEzQ1 ztV^M+C2Y^d@N3YKX2y4B)mBZ?D(>&M;MUI!&Fv!fzq6j`o8%SpRPE@Q&9m4!CzBBe5% zGX#?s(GK&-t|C`!BKw@*91@>jL=t|4tnw;iLv*aXQcK8+O7J|;F0!snzKL+y4Rpgl z2hVZ&qpeh`rky(%JlCWVJPO0@!6oa{6ewJo3)}RK*640zjEq^;)2S5QCff+*cPwi?cI#bnD|!0N9NSyPB{J|*G^lHj#yTiAM@K{Z6a zd%TLvkUDcY!;Bq*`8;RUs{}T{7=E>W@Y=lv;v9s37o(2ofN&?UK25k6_2izlNin>4 zZ0-+0pq^BS~2cQ3{iXJB0_+^q@Q=9MN25lQ!n3h2ogcIU`)~RkV!2edo9$$s+s+jZ< zdp&~D^2#6!Q6jfMIAiL&^l7z_YtH1|Zt&_$&+PeHNWl!xnM8!#g6rAAs5L0-Q7PPV9>quzF3_ru-yF>)r8hup-A@%6pE>HfSKmqGW*#vv7OP{y- zZ_mzh46_afSVfaLht$E|$ul}$y=@9IO9js%Xu+L%olseOCuqnmIL{o|#4CE{gV#5$ zz*M)G7kwmBpV__yTiT13$C#OXRztNNJgTDs4(wvR^&`WX<_>LS&acpZ3A$dk>2Kj9 z9%H3x)vqHX`oS}WmYExq;MJ~w6}%?&zOBMEwXJmLhv>^PyJ<9|?d;Kt8p#!WA3a(( zpv{vw54@7^1R3M8xWnLa_#PXZz+DXJ(QZg0A8=OX@hmG={^n0YhxOkH?rkr_6iX|m z$sy^0;+j13CcT!ANNE;4X5aHXGpw#=w4Mu~xC}O6E!tGA$d0$+a`UXzTIBRK>lSE3 z3+dg0=~QHVnPcmWg2$<~zzNwP>uLukAtBzvE70{rCwdOrSi^OCau7V1F$X%X2d`Y$ zMP`3!TB=D~HPd$S%a-A!9Rrr}fBC(;cu~FfK??co8Ks^bTf;l={XYyI{XfAzn6VC~ z!Rxa3h*i&HujH7!IWTjNn4ebU8~Wh0^TeK&u(H2g&IVscOD2gt12lscN+N5WLGR?T)Tf-~6)cvy z#sI0_g`;Q?8`mMWW^C^hR=LLk%}0);8$6G&9KUG>ubn*t9aWhZ=c9$tC%UqaoM~~+ zQt&93ZshCQ%%69WR-O~zAs%c1s!A9^uZ`7aHc7|HXSPlo>R|a+@Jjpdvyaa%an%=D zF9X^u25T{R{rFz+3imnA>4M-Ypg^@#Rn+Ee6}IeJZJ4DVY+wg;==J;i;ccX%dvm>3 zy5#O#Q8LYVx@A`7JlEYsdu7m(DRk^6IH!vaDuY|fAbXFzt>ee&STE-7s`E%xRm$oz zGpfYWCyY&r=zL#c^3_5c+UG6o5pKsRaj%5 z_3yF9L*n-&-M#YQ6pgZkAJHp=6oc=E|JF0KMR~tepkOqPv~(%djezU^}L? zeuAB@IJ8ytm29<5BuF#Ly<@z{ZJuSB=T}w#Ri3&Qd4PUoOVz*I!Sg`c(Y71~uWVO^ z@As+-9k6MWBkEXBvLFVG?pe(iMd*KLZF(L4U&Bh@hcVHA-*L|&9NKko<1M1B^3?JF z4nJ%@cy(h{cY0yg;dh3_PQfQf_<;Y`o=J7?)kej5NP->_;V~ax5m)ibuyztE(dx}o z<5JOQr}(&!@IpPI#+Cd$w}NV?XnsB+va*4vdO&>0vGwj}_`|Dq{r_%16=E6`J8(or zfj(7;%G9FkQNw9sqxdxPR0G3sRp$9I-V$lfFRjhDknb90&7gy#((7kyTH8QI>&{*rzES;VS+@VDD*8MN_$jIJ?EQ;qfQk^l8* z_0^+Q=h34rDrO{Xa~@p5o~(gBxh?{W?x)FCKAS2JC?7XRY(+(bM+yn*tULX@RZ5`dw3|~j=;H;@v^El%#yvBTs zzQ_d6ug^vNmFHf0o}~&t@Ob|s6|}u_y=Qd$I5wi+wGYSQIX#|*l}Fz-8RK^3F+5l2 z7twlZg5%V}4Uk?v^1*pHImcyP`qwi9#pN|4!+bGv4ALsAy-&aZ zb6C4x-9#}JAEQ}{tR3n1)#!`NB3rr~*Px%IRi1-Z=Xkmt7^zNgxxcCvysk=$R{IFL z=dvF?Njb(e!D~ARUPZ7?4{Ba|+(HsO6QmH=$2?c=2Ct;$z38=#6Z*#^10AOf!NzT7 zeLr~4WRI0t2%fd)R#pN2s0nJR()KZ$p&a=nk1SUY&R}6P!DF{KxK1s2%^meuFL;Jf z6_0q0c_8a&2Y#atvg_eV8!=xe!Si}oK_nFrRg?a#!hDoi%Q>F?$)|$v9nqoBvM~;#ALaj)_XW_BDqoM|m72k`47@_9$1Zd^Er; zwI8Zj55JDjCRS_$Udn)^JW3*=&xX-LzI|01_yj-7Ao#8Xofs=z!iU}t z&Qd4DA$ml617y-;HF*Y761>9TGQBfGcQmjUO2O;zR3jJc5eQ;^$4HSC_Uq|jM@(34 zT^J*;{I$VV%EVHN>Ds3yJwBU(veV4|5_KC~(v~BKG(>KB^~nr!v&2el5)af5o`Js{ zno)z77{Nt2(_HufTepGVXoe5S6zW=dxnLzY%Ve$d0W0ToOXx48?d*=J?fZjgXd4}uUEOx88#ea6{e7V_wXuQv#0wlUTm*1?il7e zXlsJ!>e{>TgZRK zKx)UYJ?7+1n}xebCDkUm5_#PNaQ2}cd&(W$pT2{)Lh;|%iR#$}Au48g2OI1bb@Gc~ zh!uF-F*4Gl@P@2=uh4X8{Xe8qigGNbuyv{#J;UnM{$av;&)7lXK2P$Hy?XmF8zbVq z_o+8gqxOg-(*f+DR}@$E8?TGB6TEtF1DjKPZkWvQIPfE8e*vsJ zrS`o19P)DS&{wPQ3U?xxtaYd?6t@fa!L;&~UIuTkAb~%#86#AxjE84fnRo1|auG?d zvtOkuyl;UUhg2Fm=9#>v$fY;lo-ERAo|vy%WUYjpZw1dztWvLM6M1(ZJhH*sSC(4Z z`qeE)k7MWu-wPo}br?yq4eT7R3R7o3ma*!uF&f9PQB`_wBY4%SoA`mXp7-H9WXtT> zEE*6mH$(>SQ!QNG0kj6S}wzl zd)3n+^@4UmIvFJ7gsM}O;FVsF>^>(Et?b%-tr06aM#l8G%L-%fctqZxee35c{j+XY zII#9r@K{!fbgqG*wKDHg2VFS=74WL>^HqlRD`T@2=!qKfy^@}{sb}P||2_EVV$=y< zS6OWDfwkddu^4we5rfEia2k zx9yrEq@uEfZV-)IC$goDZcv}^S--tUETQ)MaSLk+OE3X7-J;&f6;@b>n$}(&?KW#Z z6Fk>iw#=Tbxg45rD-@%@YXDbvC20Q-*N-#go9uM0E#*I6Ci~6n5>&v_T{N^tM|u2} z;MFzzanJKp#-@V&zY<;q-`{Q-Ona4?p*gclM4{yIK~U`15$K@=I!s}aob7lz1$$-T zyjHM@mx!LJGd^Xo!I1h*UF!56A<=7i(N&rE5KM6sIlLUaYCsbY*bIzbA$uy1H(wIx zQRL^xVBgEZW1o(Zk;m|e&hpEuI!50#V`QQ9<01W_XFUQbuEOgqk_*(Qrg0UmaUAv5 z9^8U>4WYz&T6Bo_;UsuHg-iG}m+X@*8&ySEU$X1;$VTtMMyN)hwA~?W%3XLs<@a2t zx4gb#foI>s!#Lrd2gt6gR7>yRZ4*0v!}{=j_^K?KQ)$N9QRxKkNi*{va;U)>RpQXr zZ3Z1#o2yvRht|d&@MAw(s5R;ml&Em!v0p2!Ia!#O*-v%HT08`Kw^=#YLB#h#o+IYn zB`RU1V(sz_&)6sHzs5SB@l-v07^(uCimg}F!!2yL0dh&K=o6UgDmuei(^Kou2gLVx zO)6?Xq-&rV#g{CEWiZXD{T6p|HSWUlI4FllSYNqLs`PgX*D#HKaj(^PjrDj+Mv%us z?^|zZ##WKk?VtAz1?IqSUVADX{u0;m1iNM#MnwO8#oU;X*OVt-Z2|x5O5}(;=%f@V zd>=o-W{hB!7V`Z(c3?0XShOBtvxApoNNk7i%iD`gP6NF7F37KmH>re_Sk+xj>$FAyzSB%#Y-UzR_?Xl!{@v5|lF%W8e9%GQC5w{|f<-AM*i%5}3 zpMV-pf>*0)AlFmueJbqh*!TbxxCM8(O22oR!IF*2G}}PZ9NU~dc<4a8@D0cLlAmYBpgZHjq16?j)UjK$Mp(W{)b^Fg>@y zSy}uD?l&sJ9(o1Nh3JKCzy<9Euf8f~;5wYF*2cT`yzXD$Mn8WuC5N~i7?YqEH zz7MBIX%#>~1#-1U!FQr5E7YkKmaM}8~0}HQtavA+09jGX_D`AQk_6pic zHh^@UnCuVXT`mXTcSg_fAMx&1sovQM9?w|@Z*I_vJUYQ64`hvuK?n!fC0RV>_26*~ z32VWt0BawSYgk5JaaOI_ja=&*8gDP=0%~Wn71pHCf%CpXn)d)sK(W8Do^tSJtH_yK zcJ57h-UcXr0JBq#{Av~7$1r&9gbgyMJg#yV9xOrQ-T-GOXq!)X-U1l6Poz%=ojSqC z*s){f(L15Pe+?V6fh<-fz3cW~I~u+plq1>@Q3hwwEA86iGQ@d{RKK*BYKJinSjR?w{dLxH?j5jZD`|N z?AY0>WZLes;v1}0S?_IDZ$HMOeZ{^19O_gMdq%FVDtK0c*M!fY5!a|Lt+jFs-^oL4 z;+y2itB&v^YuhOi23kkAZ9W}GFUw=N*A09*E6f|OG$lPOFZWZdu&Z{y=LH%r`|JM< z%0avrzQeNB%)Z98R`CpJKf~AI2YjbrBd2OGA-6)8x)BL>wxq!&tnrTwH+%$d)FyhW zkHsvT_9^RY5Ikq-F8Zwm3v>-HxV%KS@3+VTi5_s(A8xu1m}FUi`=5k-Y584CZQiO#WjvPAqIGj{T#-@_oDZD zPrJluA5#zS3mBZ2X!dQ^PZ~*-A`VqpMSBBYwYJ=$RXMo1OYD8MMLvI>Ip4N(zq70U zg?a#8JV>hFdw^|p3uGW@ZX*H8)LE{9_B{7M(*6P5 zq)Vf|X{=(5Zk4=nPi3B(3mN>4Phf)n9JKF9A<7HQu#&AWRg?7E4*PLd4?sCxdx9z$ zd5al;mz|9UXxMw8KIhmaV+N5?QO!r^n}hNtUzM)|%kOEl0-QvlYFvyyr8DS6c{P2eJ&uBz;XaiN)wQb521_z%ut(LQ*=Ho}v2K1+M3re`VIwa`33JdoUaC*>S&M-TBoUV5AE6eT%=IgWTa>86xC8wnLQ{QjFC_GON6X#yoQ;&0SV_ zjuay^4?fOQyGr%8F0wv!mj?Y%#5(^Fe~ym$Ct}IR!FLdDg&#rF6{;~b$TSxUyvjZD z=)WBOv_@Xw*YF_~FhU)_Sp}Qiy*Y zb3TLBufPLc3BDWf5jMh4wkEFPx9FIh(e-{~ZF*_{{R_{~wN@%_!?Qta(Np5pX!o&O z@1xhR+iI$qjOk)Slon`d#w=6>@$f zc+|HnN@=|B!O1n|^Nh^%GI8&++f;w^7(MkRb8W}&Bp<*7cFSx~8AH2vJw@s%7U_f- z=MjE_Aw5uFUJ3mx15G=JFM*6t|N5^~B1^$`D?;-GzFu?WN$`mNmi5OiyJG`H_!vv= zF6&M9{}WJpU_Fi5D`OvfN4bSJi5pwwxvtp#PRSox$ChX!;qHOcu2I`k*zyj(hnw_a zkI2w6QOL`|BO%?NKeDT-N?6C*{ugV(@9eG@!(U_ll+R5*mZ^y1b=`hMug%bSLz^AH zwWnFJv3U-H6SDo5Dpc2*;U#;vZw=*0D(nQ$AU&M>W{*CSPgWNH9roHg3cf?IS1WkUxjm|Jh$GqxvkUOBo&_mu{oCL%YsKI@ara?Hx_G^Y z!E0JLi&n$t>X17kx$U(is^RCMj2)H4F)4yLx?od}vlwD=XYdwv;l10~+Pcd^@T%-X zqQT_R{}k`QD)%XZ*JV2_1mCsR*`_RKuj1hqkCsMr=$?C6YzxTbbyn_i@Cp+pIKV4B zha$b#*;`|au`19j$|7H9wsnyHWq8^?4Co$A)D}ILj$Y<^^sSU4*P0F<=UK$JF#&yT zv0B#oGzIshdN;kOv1?d?1Dm^LYuWu6L%72Ttg&mWSlS#+=^C2y3L3WtZgYLLZZdof z(#fJ@cbM%fHm@_Vb$8)Py$13a#!po(cCk;(`1{8ABOZi&^lukoK@QN#>bVEOtE?~4 z2jYEac>a?ZQPB+^5$k(8WFmH};W6|2q4UUG*&bdWbsh`wm-O&FKJ0YxOh(0b<-*U{ z-EbA}%rcm!4WIlr>}m@B`r|OAmR$i^uGjg9e~Qecx2X@K8t8AsZwWiC+p}x_9Z-+q z04beE5?7D{s^NNs#a9m=iK$i}!}lFw>+c{%Hj&gBWKRWMdA28{duJ<1&{^>8v<_I# zGYIM+PtT0Xp%+)9SAPzyC%u>j-zMZOYE^8ak-RUnoYkNom+)YDzU?G`2Nj8zwZXGitVqZ=(Y0yhM=W+?3psxUc%!sAL?(; zSY}3)VE`*I>N(JSDR>TXir@2i9V^r>^?I$t=;N#56F;lX?RHWIobI{2MZ6MOzReQd z?6qIr`=a){N3{puScq3I1+N&A1G|@^tg15CyKs!2d$g)t(c zw8>GbBvgn`RwBcq7`z7T0-T%L_baHw)l{h=GiqlxFL^7 z_2`)iExyQgJACp!qnyCyWmqj9%jGe%J`)G5raq{{_iSBcW^D3YMRGkyV7D$F>^{iX zb6`f?XH29;8%@@P)$l4?o1pbInC?C}%2%TAFFBwMGuV_J>>EiLc{**ctZGu7WEI9unspN?S%zuxOc8O6m!hVSr|S~P#rKZW zvD4tSOT>A5<$BHMwV1WmL(gVRy4LN?C5~!SO=*`{mkm(KlolLf(+E-WVW$b!{ybd4GTyv0o>1*J-oX!}y~+BVHAari`22v#pLJyV z8spPJC$7SD_wmk%wY(CvU(!uDw>BR99;l&2^v8&+j^S9_F`B-?x-ACJtMSUB>qxap z^mr`BXZ6^6$paTTq&6j|;j*k%>H(FvX{?J+7jW^5<;{<=9luce4mS3q&AhUZrC_-JqK zAIwI4MNPw7)b)8x)zEM3rD~7Q&2IYMzSn-VU)vL?O6_-iD_iV=eR4#-!v8`&%&$!* zX=mQg$WD1>cG^?>{|mDlF0*6Y-(h{NV~?DN|6T?I>q&Na_7aSI2`xNh#UwDFGgfyd z##XyzT*XJyiGEXAKMVAr>XJRMmS5({S2>~%_bp~xHTsk_BaiJREaWaSc8l3FBA@4o zS#V*eju`XHbZcC_}=p(HfAaLI)ug09q1&`?M1mAUi7(6@5E6I5De9GFhPNZcOiTFcM z&Cn7yi=uY+Kxnc#e#c&LiW9kxO(VAEo1olC`5^8Guc-e#_-+X&*f4uhYwjRNC%jjM z!92f5Ak`9B_zK+Hg!r%_Ya)lG;d?&)627yDb+d$r>TdA;r+pXg$HDg@cnF(x!2J3u z{C$k5PuW?AHU~G6`W0g1DtO#hP0x=^ckdA6t9sC0Lvn!6x(gaPrtkKG$1}@zSO`hQ&R=X=k|;%@ZWXzUuh8|)xb+~5_4G_tjQGCXT)qWU$ai@kJ^v6ypI{v{(cpLR z%8M_Pf8-9e!Szhf!M9&C+lKhePVLFJ>78ltI(aTb#L|fCy#d1~oYco-v}n(#{Rc~+ zv4_-_&X_Dnn7Li{ZF_2SUku{!Ly799+WD;*d*NcJvRi%|4MfkC=VW(Hz(C^)~4*MaGF!c@is!jKg1$Yd2$VTraXHsp$Xi zhd;2=T{mjQ;o;cJ&Zhk)x(` zA8)1aY1ab7bjd5IA#oDe;tAtAL642`i20888$``Z&#VOB=WYsO8V1jAl&0@tS9`_1 z3dpYxYc|HOUXLun2wm4Pvizn6nm=|Gyc6kU?Z}Z zn%x?iE$-tnKqdMkhdth)UrWI&`q$~bLGYM$-+$UG3i$2@Q#5uzc>Sp%e3M*=0Fcdst)7{lvWmauy|(TX|Cqx4x`1b6tp?Y;|<*B}`ox!cGJ-=lgH-fMg!IcMBiBSIjI2&qV5CYkAyaf=ykcU8!h4)6K3KOua7A zq#asxR>`V{H2qcZy|`Lb^(zLi5mKR#i`at;wA1&4D01~mILm#@z#@9)REuZzo#3*x zvV*?!JY(PORx73hpXhN|)8PAX7U+>8?N2f8HO3+fWAk2|OKrGI>8f~VdkCf z=~H1Gv&`sH z^|6njaRH{!V+mTOt9?DpbImk4lXKyn=nd?$hTJc6 zmP_U<&od&c;jDUN0Y1rVf-9fpGEuXuX2+;El_lhP0KUJwP+=qdTg*huVmoZ1quR{q zZt!|nJ;qV-hTp;Ow}Zz7ZxN@oh965g3V((X>qlPDGmS=Ik}BE#Gh#|rD}Nd_zI^tI z#N5EU*#ZY85$Qgm#*C!=5E~>a%k!* z)%a(OL6y0)3raj@9ACwX?j!Cx1izNxL3hZQoyHlan8poi^Dn~2NSIAdI zI@#78R>e*nSFd%aETmfSS{O&ccLDs|j?r#E-(WYafUDQ>^VIl#lkABe@-oj#-U?nV zwQt82i5yTR_iHi6e*}-ROO)@7RW(40>_zOTOdziqB43p_97hvcp$EZh24s`31qtrJ8mTt7e4z*I^I4CxL^)~Ordu{x zi(<{?3w}w4n06t^2amQ{#D3ijo)xOrsy1x{>@|*(U<#_dM4r}hWLm1sn;z_7pV;!3 z;NS*aR}maDLN}I(Vr-FLSE8DJJ8H>Ivs>KKl9x{Y$2D>%E+H%LFpIoW)-nvo2L2); z!kfYO)7pWDlV@ESTe4{1wbePrE2WjR39DNp%BF*t#&_!I!u$4+YuejHT*!62s9B=T z625IRv)9qRIpl4P9x1ZMJOXx#4N^uv_V8Pr)irG(G1fvoGE()()GT9Hl!I3gbnDZr zH~4;jH8O0KyH-Gdl+Y#(zMG@x7eNIl!S~0@!CcPpIQqV0lUQ%ZvFBO+b$R{g@z==u znP=v9V3`Zt+4u0u!r4hqJtO|cV>aGFr`5r~zRP1Tcy8WV6Wnmk+*Y*&#N#OYOJG`I4{eeDE63eK7nm z;?)M$LLU2Q9!=VVz36kC?;k2{-jDoKAI{`m?&Dt2a`a+&mFtGhDXp^#6^gc^ucZMZ z9&)7b4Yx;hi!__+lHRu&r3l)a*4o!*>1!{QCw8`KMauHtvG=MN^A+sTbIxtB5A8ED z0q)vgRr$-Hr&idh$7{|#3tq1v3u3;?NM-B_Ta2w@0#`$0sfQOU59+Hjqn4P9(hWOkqZXbsx1>v8o;BKDqvt$sUMpq?pMO8D zkS6`?{MC$=RKU(WK?b#uAnB;(J-cg(d-UV+Ld2g0ub!Git~Z${;@^EIi(>Ffy%|{Z z1aC|&c;(~^jNk(HLLE$+V`MaPOQ8`xhq5JQB^)#ADR#Fhkdf;7o?WV{7O5yU;CgN& z`W_HjJd@+#)iFy%JjoBffbF-4jw&+W2k@TKeRq*R6Y@TP4kA??#4Pwu7d85R4C3?I zSBo;K3uaG&p}aoxFnGO}b@1mrh^B$`^qSIHEKfx&XNUl3kki_XxVRL1yBK3*WpB(y zTwH?lUIwoeBERC9>d1#t05RjiwWRP^7|@a0A5I#@-Mg za>AIFh=a`HHy8)sjfUP?2*zQ0il?d^Mbo>`2N zlLP#gzT?Yg@cp8j!S{Yw{Mt_;iE$odW~HiRJ9F_%vn_np7qEZyiF~1A>V?y?}OKRO~+V(uY>k~9HNoxM3Jb@|60uM zo8hhY{V*g~ek2~S0?Sd2)@&QzQ8tOot@rKo)!=&pei}T+JP*QL!fKXP^AYdUQCH;c zxKBV}{+T$AkHH%s$Jaadt-nj#`!w$qZT_*{^&Rp=KjH7kq04s#VrEaQMK7^WI^-6A zffjseE9)6njo1A=38lz-)Zuvt*g9X^)ihVMH}NV}`VspydkNW@*h(%FXFMe;CPxf!LgcKl z;x-vi`sM_g^cgxpN60VjIb?c@HfqTk#&Y)hU^e+C9(r*tlGhjD&d{qh zwK9v5ngH~q8ry2d1QYccDDkn z?3F5fW#+*mRjdQA5$^jcuZ1M`le5_gewG5)t3*~OA6XBtz0`-FAHs_aX{%=dFEf)G zuv^XxCA2n;HmRT;rr0Ch=zGa=l_G1#s}&Z(h;Dl%cqa0ZA=8>v-4L(A(GGE56(T=P4?YG#5HM`uB{lO!+<)+l8U7npPBczJ^`j3eCvX>WMA|uey3{ubW65c@J;Ga4N2T zgM8vm^uvM4txf8lbm-wl_7-^rcO@PF!0vd0#6Gq*-VS3b77x+-nhV-R@(?>qG2Y9J z^nqRF6*fZ&9DjvKSTO^)`2K|GkFjYM<=rfhzbTtWb#@d7p%@8|WSO!bpT_$G*d+Df z$gU$C@iNH!zlL|P$F4_xkh$)^ivM{`c6ZIBo+>5f@HfiFScW-kk*B9v?Ym(9#o&9f zwb(KJ)Y|Zs_3?y^jZ-AvH`rS8K|V)kJ+Xe2&+yAoX0(zx!({2t$X!=da~}?)g7i8C z^En##-6d3SM>(Rmk?B`h*==@c=u@v#^Cn9@{O50~HMNo7SE3(&m-?#f!LyJG#BHB4 z9$rJV3KF{u_m(BH=0~`heLMb+^}szwt_<$>on1BC?t{RUVelEzpwC&wEwUoZ;qtvhiuo7RG-!Ru@P#QxW17>p7TAz3u+IygufP)|Wi$JW1#aJe%g zG@7ieccCT|7UcKG|CN|(|vM}tMCs)n>iEmtVh8swYh&>{LTTA zNAK3~V7HJ(yP+K!w6luA>+r-~Sk^*(@3OEJ&gu!biK6j};~oR*yLGzFbyk<$z2j$B z=myV;^quUx!T0bTA#HVbk7Iq;K(CL{g^dLn!$DEgyj-oAm#LJ}DrtH`rBr$ei9mKNM(T?~NtAj8&I_x)q*<6s}FfLNxT8E!xQQrOX{vghOz~pq}b$J z#CTp~Eqe_R_ZS>-wvR`XC?9!AWYZj(2DohP5(}{x+<(3q@zRXF1JB~vx9De&VRY1@ z{kWGwbOT0b%#6#kD)M*&+r&2H@SP=~@lLGcK*I0c1U8*=_GjV(E{?i6h~>vMo;hO(Kcly*iP_WMSQ=mZtxvv zwW2TKca$G{8X2f5zCMrs&&Q|{&j_hAN9xqSY@^YoVSLYn4Wy#SL=>4#J^Vk};4$m& zFD|3OJ@c>@yaIL^4bX@&;7zg^eaGn%b4C4TkD z=|}I9d-e;+OZDSM@ST_j(FRc^kqPW)H+YrT1_Ky07=5@{kEVBj z`o-W8?fsZp=N>4rQg4wpwaOh!%sTbu66O+Q| zyoCwxvjbH^#-Vyqdn7ynWnH)bufrC z(5JSjJUU;8HgUgG`0fnM>LB>u&IRgOoR5Ak-)Z<~!FP}@F}s#+Oq1Zdi0StOnF zJfr5|7C!T1Y?qtt_xKD8@FA76RCQ@;@2=YC*RbTYQ^R#or()&z?VYj`F55Hj^S45U z#v~r8Dxue5uI}-_YSCV0-X7Y!o75_~%1XP+bu`0eOQ=n^$%}q!_c?Fpe__X~8ly6) zpR&@g*!S|vUxgvp>puq1&n<uLZB-xB!oJR2d!G`4fBzTLQ$5|m3bQ`(V z!yX-lPV_(4z)iP;N5%V&LlfeRlHgVQ`@wfbt20-!!81hDu#*e$l<)C+$A08h(`>l_ zlbMY?z4IEr?|XrLHQcwP@7JP4^t#w<(Nmp=A-iMiO_s;h)}z?@XY9+XJZ|Od%g;F@ zPIv}?f1R3>;?S0Y$E2Rx`c;f|lXGM>J+p70ky$pOs!c*h#|Ufks$C&N|E!zbRJQai zOo)vZ<8_PLbw|jHQ)}UIP>n~e24!}u_R)2`9wRK(Q*sKNJ3m1St6G(!0ItF`-ys&N z&)U?AT!l?hwW_a>Tsd+>9@=$}LC351z7In`!~&7cow1)aSkVsW?7{)aM|wg_u2Bt2 zt3#IWiOt;Swido5>PNnyPt1b+%&xG{8hIT)1)nNn;k8{&nH$IU$vyjThZ<}f*1o66 zbor(IDqkWU_w4AG_PfXLOW}K>EE|#EcK<+Pa>=Wc6@q8>CUIwlR zfYcJWt_D7_MdHzajL}+^;QJ93BctY4lg{$p;eCIC8uM%chV6a4Y(@C28gU(SRCaYv zZ;>3|g;)#5Jw4grIU@sNGwMj>Dv~dYKS&;+Jv&GFsq?|BL*|G`s}eJ|hOcjc|DzhK z7Sv(*^*r0~s5`;;BRvm(ukqXcR*L-J0NXi!@m(L=%%cg>P(ygD6!@cwX1PsXk7`V; zgVb)px!yKuIgfPTwGrL55&yv2yoDCp3%|1KZ?V_uwzWe4U$E!eh+wf7xRRV>S* z6E+zH1tcgz1SB(?93?7}a}+@YBr`;_gpHu6hze#@P>_RJRLmgeoJ9m97%+lI#e*Wg znx2i}gm?d1|KD}rdh73AGkZE$cUMgZlXll*%za6cXm^q% znwMpCkyp;f$mV%sR4^&7QN+E#u9EAd< zE(hqDGp`gd49S(w0FxRToh*mEX8}~J!R`pI6vStw9Wh8#0y99TkgkTeG&=bt5be6N z2iTZ3TMVBz;GZF70BJKP6fZ>cG@59vt&Y~8*kgfcw~{-Wt+Ih0!f*q&uhbx28go|0 zasJrN1!0&0x+#m9V>*GPNp^m14#bo}W7ArUy;-yh(K`t=w>$?Rxq?yr@v{x2y%9;2 zWk?5RfzHvWLQfUaKu*Khb^c?~O0=(0 zEDPzU7zthnNe~o*J{V*7xF;eW$&RL6k>;OS4QPU-;fZLp$);(?Uo$Wk>CM@D5ZN;< z?T{Yb3F+-akv7Hv@fCZC|1IE2h7R(PRm%s%4ptb zyvd9u6%aQzL9&=DDxnFg85`81df4E-h5i_OQ=u8s7FqFY$`$o>SN>WWMT}h+Wq`5w z*LtEEe`bC|0r|M1Z+3miMC4+Fpf$k;Z?mQN^8&s|C+3T>rvRw&SD3OZqKx?ZHD5Gl z)8p&I+|ejDkT1iqqapURRrcl^1B5&5h|~o6xuQ8w_J-*|r0rvOgRr+TxbjyH4esq= z-|U^Afk=LJMQzKj({x4r-JcI7g>+Hu9W(4&ZeK*N6%b!=g?}fsU(EuoO^d?V9R+6m zRX*&OFPeRK;Om5a5u8lkHGDmU16nDiiLv``RFSsD1+9zmMJq7v5HDdQ<9qn+gafmOqU|c@CaAz(AvjAGOv{PjXkXjaw}$vCbUyH6n!=>?oH_S7GrSr5KcI1bP%eu9AcI2@y>5Vv7m1<)H~Y~Vi_OANs!@Euk;e(o5+ zH5A=`Bm(xKm=?rgeMTT?6;O##Zpd{IdWMIHKn?@&EyB-70=>ofwe@QaN$_LK0bVEo zUj7_H;-`?xOse1Ol1XhS7^XaO=>B&(#GwaEs)<@(04Oq>o-~`ox6eP-m-6?t)i42o zHxz0ML%l_sA4V4O&kQsQU{)L$ApMLlnkQC3`>Z4ptzu`j8E8g)dk%bA6SbWtT8p88 zR&OzNDa0R3DD(Sb==afuCX($m(Rf1+Qf1u7@=r-)R_5y9281a4o%_na{H{!?}}h&RUG_vnO9kMrf9wy4Tq z(WA-#n#TWUR<==m=|~lo&;jioaX{434rvkX5H;1o*t;s(-TNl|_>7FLgLtnr%AGx< z+y-e(nK@i`Z6>>_klEiFj391A^luuvw>uJ@L%`6y1N@aqj0BJdvMkdUwJ1dwME4mw zvk>VevM>X5ih?)dzRbNh3;1U;ib0PYfKWK#S1jNlv+{KZgx`U+U?ylZV1m}fB%?KD z7Q>`Z0s;)aO}C4>?#OJ zsQ1lKW6ZfK&#-&sMj{gHz||1#zXa_RiRLy8_;)HX99AA_^T#o|44mB)It%Fl#-Y6( z4oGLQ5sk9-h@lt;VKB0exJKS0N0R3VGqQ}}ky^Mnc>sSvp2M$^s|e=C)YNai-+G07 zh13LF1!@KI1Sv9$6HTZSR(~>zXKn#q; z2kV3whIL{Xk&2$90L5nVAk-LBbNmoYP2z`9okFYO@&pN?zTwvRb9^`s31QFiaO@Sh zbi-4IYZ2=BDSQU*gv(&hvFA*iV6}u4I%k)et9w9RB4Th=Xs1`?Nc=rRw{bgiJZ^`b z#Z7P{ay+wohuBG|kf!8WvJTh6b#Xh~^ryEju1kpGD+v+eHX(wWVN1Zx4*C4}H|5)q z9h<>-|KSSKGp-H!n3Jt!0^W_Q@E>g`lQ#H_XWn=pm~LDZ4D(-z_Yovxa8;-Sw2zQ1 z$8||-EP%8o>#&2^Q8F7h!DbL?xIV@MH)M$SDwJ3`ix>O?5xk6^dNO|e2SJgC#%*c_bEp|SSe zga0^l>f3BEGq4hD3lWG*@NHYLLP$Xc*Tgk&E^dWKVh;c!CB8ipU^0Z3O~4g!=O1AR zKfHY~1m=PHU`0>|b^sATNQ9C+atA!QU~ZAK$i1X2SqlHLXA81WO$ZI@44ItKLzM+K34<7-gHpS|(^N@NI@Q)_w+sXXWQ&>19-q*lm(5RY`fzfG|#xW!;t6n+r*bOEjkfJqkN%~<$~g#Wkj7{Y__3GZew zihTn{GA_38*t59C_=Bz|6#OQgIb6G1$7Vv z7=M{`A#K38kS^F+pbfgf>m>mOJ7`r?ei=2O_ut2}34&j0D=4o%egT(;P*b67+7K%c zAZ1d9kqfw(^7B!|M-Ar4#3fyD3+z77zbt6WaNu@s@DBe4(ms@?DK-_Ey%16rVwpmk zOscAEX&9;kwaK=KDoK+`q&xJ4SooqzaZ-$wAe~7QWZb`}JRPubAC`;Fgr^bPgiXf! zu>q_XO3nPL@vT@8^oK(5`wjYUIrKj-z)xe$9J`6lhbI>sk8K6X)ewurRswIFfF0w9 z8H<_1|5WI+w=o-B5d3dr)sU_Vgkg*Y#B_snMge6GffU>@TX;J{>_&L3fdl)%GX>JI z1OL&OKG?$`gf^sVj|E_hA$&U6lOVnaz&0M9i;zkRq?ilO1o-xX#|^WDyc_`<52)AC zP@d6H9$l1L9He0b?lu6&Oh{oY*e_y!5H}3s`GNf+l+_w!1Z&9C8p0bx9Rat%DnNP& zgP2TQL-6y0e8U0G$(RPD&A{mcc}4)7VL%0&z^xq11UDZDmjdo~5W@>AfN)D8xABm+ zDRvoRcmeI9F)lzUishsFHU&tW!5)Ra&7s^LSTQP%CA6Fy#5M=tFi0Z;>WhIP1ah^8 zIP<|h6Wslv{6QGAchm>Pvjux0z+?-h84r2Q20u5Xq4fg)YJkHKT*rc&F_gv_VleH( z=nc7O2Z{=mmzjOFCn+oe#vSfxjmIQti6nr7G0c9g3c#!yY$xDD6?|8KOCq>5LLL>E z68zg>>T;Yw8c!2zf_SlWF@u$@4^-lhk(NPfcr!29B`-yxHxVOvh)mS*Zo*GF$Uu8 z2W)4gY;kyo!$V*=y*Kj!xN-PC>{}GgF5&S}sR@`cCWYZn6TDQx75m1>H~jbaut5F4 zhaL7ySezdk2SZGY&B(%rptsB~xiPup$Or>Ot1;KqmekvHGMz%F(lnh$r_&j9CY?oR z)6?kb^bC3?J&T@A&!OkiIdm?aN9WT#x`3WX7t%%ae0l+0OfRGt(TnL4dI?=hFQu2! z%jq(@oL)h%q*u|a={59PdL3OsuctTA8|g~Airz$TrmN{1dJA1k|3=r*Tj_1|c6tZB zlio$|ruWeG0GlhwUKkDy0TLMp7r+H^AzT>O0ZOC?6w!vTCTs`?!jW(yoQZM7c*2F4 zK)4caga=S(FT$JfAtn)#L=+KC#1gq6H&zjwiLJywqJcO_943wuEkrNz2k{xiJz-LW z6s3h}Nm`1Qre$bZdK9fjtJ9jaBkfF&r>D@-bPOF!Cw#9(4B87?GbTATj{nWcWWV*` zF_{pRn&}7?si*2RGb33~)g>b~Nl%q=g?B6@*ITnG-mtGMb8_^nP*~xk)*1Bwu~$4Wuv=NCPuiV-95+%NUCLrvy2w6Cam} z#IM$=l$*2p=Ch>&A~||1CY%qMKdvJ7mc!-e$0t|v#3oWaPAA19FIJKSP7u<@7$z_~ zX=cf}lN;VnW6B^fn@N^m0$dE>%;AbrB7$TfM^Ksw^yf-bLm7*(v}kZtW_&_wTo#?m zm7<0)jzZExez7rtp)p)#Y9!+#DlO}o5Y1rf)GSpeIwOtFh{{TU7+RDj<4;Pf{OlhS ztLmQ+mkOz>`ZzhL8bKi`WjP5W6N<~_8c~!P*CY(AreLM`Rx0b?0w3R>{0D!EhpYWu zQBeOR50}KiT@;2bICf_4ZX3?WXWNIFZgP8MEfBugyWK=E^h!!__3yaZp(&v%>M11+ zi#mW#Lb?7QH>AZN7}K z`XKmxF@DuMex@_eFUYqHZ;rV0Ri*ODnw5JKBVts$H*MdyW~feLebg6jN6huLs&`G) z_C!gTRr$`kAJRGI?&H3-^Sgsz&J~_nXyLzUq52iy36#k|bm{(m$?+d&-Pzmbs5Q+~ zp}s8R+Psm$e+W$S$-lR+>S?G_>1?Nl{HJb8C2_LJ&vSZidc?>_T-~(x-JI$x^AEKa zZrny+eD`6#+tW)9cyMXvkfC2hK(fN{%{+Vx)JOy+4Rxuc!4aoK1%&~{1q6ghl2T$E zhj4~-WYlT{<8AcDn7YNbIW6}tF6u9sB14U1yoYkeQa06Al*M3!i2YN84X0!ne*tL; zBV!{=Q%hYy5=&zvN`*;gG)JBqo+tCHKXUdFH7w*whS&ZNqq0UDJ?q|11u+3sINp>e zI>j(8DS>e{Ov|8SvZJ#y4FMEDT0mLA)<_0h z^(k|G%FF-)QDK8c#c_@of2xq=zVKi}7Eq1FxN*DK7>Vp+-+H3nL2bqw2rUfJXy14__cX(Ve zDlj=Kw=(Z@yJXva8_{KAI~(R{I;X}YJ|1?>!cl+LGHsK&#?SI*l^=+j7_nAsBgZ0H zLu98+ZD1Y#+cnp@)m97IDqM$D|1RWx@u*(5bdcN^`#q;~bXo*n(t2f2-g_+kc>Si_ zyhZ(~v+>g1i-vi-IHlXajI3XH-&FDJS>2iuPDchR&nFiv#@bFW=X~+l(iu@XEXq5u z^_4+|?fQ>JuPB~i8j!jWmduGpiTimV5>5V@y5%qUw~!AYPAvJ*{^9RO(+~*SHeqT) zbW~QXszY{GJe`q{HS;^6gSR(G>9lmL~d|$P4UtcWmiQJ9Sug(?1U9n|X^aAHK%@yu6 z(EZIpSN^~z_f%JpBw3*c*KeFCR!%R!yg%1{-!9?SOAA_(y-Q<)#LlA9+maRN$20j6dQIX{ee!n6#y4 zMZ`9(yvw)iH#{ZxN8hZMIoEt{p{8hPuF&gmL*C>KGxZp@rO|KV$1QD-7Ku%m-csmt zTk6o6uB~quCF%==Pd>9xXJWz16r}EKVEj&)10}}9l;kkU6j74j`@R50 z!rw0x?sjj`#nP@#;Zx$T+m3_j+Otm$FPw4E=cZb}$olQPRezX#)6rYCV%XCsO;?-B&UKp9wdWtar;Ih;Fr{}r z&7HYo`cvZ8yH~B3y_82pZ8{M)TCr#GZ&Q57#R+%X*(jI&K^4lKv$WrGXUN`B+D~h$ z5*DkKUCLVhyvoJtcmM6jC8>nmfg2jCDRk7$heEgSW?*^=Mbm73+qYOwIBy=6B6Qzh z;bLt|)QP5!f^CwIlGd$gnXBcyyV%XQdTsK#11fHcLlWxl+-uIc?wYo>VaJgSmuR`q zTUs`4DSG{zl=HgihWdnJ!L#FwX35)iomLukdv+f&TK}}e#U>?>bHls$ROI%nxw|e* zmF?V;J8j~1|C!4Q*WbR;ZkuWP-ezY&y`M|s@vYJ;ZY&wvwk9sZXz>^G!t3|43oGWI z2@5Vf(R5#;bn!ayYNh_ z*t;cf97V26OzRvSG(%0(tntF0#i?7Bo)osZ7*8p!KEKR3GF{nz*Xr2wYF&<_G!~B3 zpM2N6*r8Zwxa6HEoAUU{e%&oDYbx{X-^%7sA6xOrUtZBi$zsJi<*CNfV=U!n%s0E@ zbuzO4qpgd7!=tC|Vo|m_cb4m2F%KJS@5rrIkrF-;RMDh9$(LB4IP-?w&9>(9B|@_` z(w(;nCO*4$=HckIE3;2?d5V%0Pf-k{eG1U_KTNLwQMUhS$WWQTn;|=VL>3{r;y;f` z0FoazG42rRXJ1*$@JB=rSB<0kwK{alIO5BT(%aRiq6Bj86a^K}!(JW8RaL2vekc6w zBIW#3baAd3Wl|}VHw^Pc9gSH%%?xp-Vp&xq^AwpLo%wfNTJ=vHh{MCN)3T=B32zKv zoy|=@JD^jbd0=I4OPjH=mP_Q_qDxQRp7I@R43lb1EW)P6EU>CUAuhfKs(_o-eI)-3R^ z)jYB;JkWM$?2Z-2QjQCCGtSHFtP1bH8%O(s~lAxS3l-W|AS3c zJh@dAPp<5H^^zpc<;fL*TkbD|Q8^HayIp+!l_19kxr&dGLzkrofA(?dvA!KJDdceB);o?b2*IfQ$I7;8y(!_i)J@V)D0uoYU z_5HJ=QqolYV>6~DM8{V0hQ6VALXCV0Jk;C!f8XkM%dK0fP{OB0wlLdg7HhUCRQ8g! zVa6EC3^QXF-MZawNkXAeDH1}FC2K|YCE1cS$-WeY5Wn-8(XH*9jNajAl7XXP!|pX}C}9Gslf4I*EijZqQQVs1MjH9#+z zDf|-E4)<+ocTEkXu37NR*2vM>+})8Bb4)m=+r1(2ZseSnL(uq;b-GZl&*e{1r*F(Q zr?-+|_^OprP1fKB#YlEghWy*o-xMH&y=l7K6V{K2&gP%$w4`hcovsEnrwo29KO<8l zI-ij!)+P%ZYx|e}r5dh&U%vJ83A>#*K|kr-1fRi{yc@1_^eR=X@Pp!%TjJ8!PPd?=v{hKIGM%T^ut`J3nu8&M9!+V3xaZgWvYW zrV+NKO?`V$JU2+Fy*0glzPdJ3$lTkt_U)%sOeaZfN5h}n8AW|It!bZH2STc6ss!|f z=d)=AkvpDO`i<$>Iwlph$?S_dlaMITUNkBtygoE1$jfqmH0Jdpy8V|3S+##6r+#hn64Gee_~fty@zyNGi@V_G#~l+ z++gq%huq=O+lM9uxNaQ=D;Fw7+PZGU74-&5US`SkO&==?+hn$+^Lw|sobtM$C`?jM zNu%hatUU`yw%Je(Lm%uE*ZjrkKi2}Tsp;4(#a=m_NZW0+puEyq#7NyxWdBS0+uBbS z@@aU%its?e3MrG#rn3espVSxEI2-O;Qm-DX*ZceJp%*2u16n56?$Nuww=%cngO2pX z#Oi_biR6fBTZutt@eD+*d?#05lHT=7psdBryi;ICwRwW5J3Vx!C7%^ijQgTzOO?s>HDFuJ1ULS=O@Azj9PFc|vRcwtq4}uHf~x*p=aamC zWiL&y3H8z91A%@wpWYv@gGZtlLKHL8+RnCLt&S0UCWo)+e9!FPWGp4p-PEYEz&vkJ zel_Oq_K4maJ{NyWkkGAJ@HD^kscRxK!Oh^{^Z2o{SW!{0;4tquN}MnKcgmmd2_HYP zecYxgF~5=XS* z49rq0Gs7fn(^Uhje-G${y}GEiT-&el{!i`<=~~A2CA`s56vK?<_cWQ$eCYY>t!Qzl ztPk|q-XyHP?0wle)n?^n_2I*!Gj$aU3(+rsbrv7ZNEb6#H+g@*)LlR3WeuZo-f8%@ z%9p2-Iyc0#=kevG_U?j-fh{eAr(UJC94#+cqi}qE)`f|`Ww%CAbIuH~ZGBA7jBm>P zdul$nc;d=Qz$EoyW`LR-Wlx7oGbb-}*s0 zu~RSZYLl&JQ_Id*btyCG4Od%gNZ@POim58H{=*ka!h?icVWor^K|}3MyPzGVsgqwF}Hk&O!g)CLj|`dG)~=n?>@gdpI2+_Vn=qwXN7*f zm70a_HI69T+WNerqGGGazO{r3ryBF6lF7%iNi^q+7>k6VH3}<(}KH6Bi`6Q{BQp z@WQ9&A#!;_U;e)OBcJ5l)E?3*XZP;9K9iVuYX9Vu)=_^2)s9GK8yTlii^=}W)RcQm zJFBJbT9Q(2v4Wm5uI*jUEsn|C8?)ccJ?wRPC+4$-BcvZ}H9>g!64rTVbEmIaS7J@X ztgWk$wMbvvsU=5UkAaL=zWS=&7lj$?1chrpHAcAAUw0B4=^)sC?YldbK$>5rH*rd6 ztyQcbtI%`d5usU`&WL6e&nBPjnEIF`dx=wlU-d0M?2Sl=lR2EZ38u)*!(Am0Pcf-oZ>Lj9 z4(YWjz8)rlqW$g7dk-*+Za#U@sFLCzzs?}z;PA{Ug-MoEeoM`xDaY<@?!8~fS`J%E zr90T`he(zhm3yyBik$K<_p(xtkd_cSN4NRAeXILH=N%1{{kPl`k7W&%4p8oR-C=y3 zazF>|I|fQHEE85`am=R6w<6Kt0dctS`t76zmB?woJ!yfd#qcE8n3a2LBAzm~M;lur+3voErlg z?tR_RXe~j^v89*Wt6n3t%<%HAJ3R-hPxT_qKr& znv*H9?^W;{VH3--ebjee?#aOy`6-n zgz?TlVh8dr?kQ;P&h1CL2D+WDxVgH6L_ca~%I-fs7~1-~iR+dk8y8Qv+DaMcg4y$* z!&hY-nNPcv`gX2P`HePi3SS#x5+<*pE9zaebR)v;1gJzPrzq9XudjIBVw_u5)ARbHYTOYo>*xB>2?L zw0K-hue7w$3qEbi$vb(cNiE^PyDNoe43oh0-cYrtYxZBsPEH>VeEY$#(a}gc`pWIo z~ zPqFfNl!&|h$@NU3>CR_S69Tzs0PM~H>c zwV4;kZIrYWQk;gnOhyR(L$&%NBHat4{n>G@!Ad70g{b>v36&uiCAQJMpK1p zJC&X7E${Rd$Y<5&-)(ncV_Y^UY*=^bCeHVDUsXWrR=MaC=hpn<b_S`oV;cDrJR^Nd2r&!ekX5#RE2Au`?=nX zjjQUObCje60#Xau#$8pudcxO==K>GdF3ev%`&?Ze9f#6bAYavUIr#Tf?6rO@krFpD zaotfu{YZh*`)fv1iQ>=RZZ;3k>nbf*9*8|GzPj77Y2@@L~o#$qQm zVwAJ?_mrMn5dWAU=ojckSU)xtY4h4FjK1@gpx+yIM6s)z<4rrx>+r8~kB^lqZ}s14 zc1x6aBl$!g+Aq@bZu#2$J-_}Q6MN^=bX#(f7b~?c_Qodgmz#{hq!DW99*N!ME@ z)}=eoEqHXx-nu5^PB!@@TEqbTeqvH()V@zzP)qaBWdAkYD9FV^yy{}EqvDL`xKYq0WxR4~ z^L*I+{f!yBw2q}Ur5Da0-tC=rirw{KLwg$8ru)sS)L6mc&MCLji|KUNiFy-b-Iz`V z&P?sOAPalUIaL*|c!7eoua*bfDqzV3eC@5Fk@>6qqSXf<3ioJnmzhq;a8i;a+d~kA zY8IDFc(wUNHvJ8zonX6hR9*OXcE^FYudwB!u{-u?tt8J{bdxx@rRzsb?Az`NmxYNP zH5r(#^^vg41^*i!YCY&{tL^{p@Y3BU7;5qat@#+X`|QBXu&Vb_V!@Sp#YHh$WdRzK z%HgtU6j$UO%g#vvjfPMV@DO zLjQj(&@=JjaA~f(Oa~SZXTYY?*bF8e!U0Fd0*b~oIs=5@1HpXW#KXrTS--xCr%NxS;og+rc3>O*(B7PSfrMS|5UIAS$#f4$7!KAy; zK#+7+AKakuXlVYXn(}$ z$=KhV>2&&aF;w`fFF29Y&hBT070hv=D;_j=dwn)czmw^`n4BQT!lMg9v-o5=^p^Mk&>(Z-hE}XJrKks!q%1q;wXHM5q>`p1eym-sEx=r>Obm zqKaV#_0Q3h)dV)(eq~R`s*?}ZF6JE-6I^p4zC`-nXo&m7{+WT4kwB3nCpA7E+}XEc z;;GG%8coW6t;Uu-Jx(e+yR+rh#!X{A+cbn$x=UcbD(=(A6-WY1g`SAZZDcB!Z6eJEW2gzuNcZ7_QMf|?}KVr22 z7UU^%aL~xE7$cjl#b&u7iD(I-6u>@$CrpABuox5y4H0o@1rm6NLx4wUR0ie$gfyhE zk>kK~ft)iA%Y$uC<3MO6806%!xM2H{1m@?UA%#x+A!J@Ueao2T$N)d+c@^BuvPBZviPp!vZdY0q(^*wfe)CY=VU zpuj^7QXzwf8U&8bzs9jRzM7qby(0w_925qt1>jf|3Ikry+9(ou!ReqhcpQe$VfY*w z=8ci@$e0cq*jK@kF^D&`4$SB92!}xtao`0;6A=Xr8iS0%7%XoLP150UBt!`67$Ssm zXf%%_YVtTD5)y_;M1(Mjh(w0b;E!qY$22sF$e5-k5+Fv4%tLCE5hO5)n8ssxrm<+= z3*Zn47C@0PtTy5n3!}6V4v#`Y!s1DYcRYcFc*ha3h-m@|i_9ITt%X1cIy`lpwl?C3 zpregN#>iwufrug_#$XLHA|z^(c}t){M$`evo0yI^5;c*mjhM#6CnqmWg?!#G5b zgvTL5JQoeDcqz@xJS3wSOxizL@5XXN^m)(!E*eOEN6wTb1QRg4CmLiOM8ILOe6q~q zVZZ{yXYqIvL_i3iC4dS;K*%yn0AK1!1C5L=xhaPk90o7SZKXM1Y1-z!je&Gecuw7}(&`WdWWi zMkr4JP7nbUB_8DqU?T8>Rt5r>5#4391g zKp6)D9wh)Q5s&{yVFHfFBjb3m*BBCy2O9}^Kw*Hl{&s&O4GKST*&Nc~A=d-v+ik*!Yf(TW z#G?PGfOK`=E)5M2t|Ms8q-BunjYi=zSWIo?#*x-m!k{pC6cz=e@fa)?mO~MxP$(&Y zJHn#=ZxC?TP(47=hNO=$?Aa_1%Ymx|8G@FQ3z@PYLv1oJW6I!y*6cd~I?iHKA$h1j zD`+tNT7Sg({9JHThfP+Ds`ZEqs!u+=k1+wX1 zI8Z`Cr~k7q3?r?

`; + btn.disabled = true; + btn.style.minWidth = '60px'; + } else { + // 恢复原始内容 + if (btn.dataset.originalContent) { + btn.innerHTML = btn.dataset.originalContent; + } + btn.disabled = false; + btn.style.minWidth = ''; + } +} + /** * 处理"Word文档"标签点击 * 如果没有OCR数据,询问用户是否需要生成 @@ -561,7 +587,14 @@ async function handleOcrTabClick() { ); if (confirmed) { - await triggerReprocess(false); // 仅OCR,不翻译 + // 显示加载状态 + setTabLoadingState('tab-ocr', true); + try { + await triggerReprocess(false); // 仅OCR,不翻译 + } finally { + // 恢复按钮状态 + setTabLoadingState('tab-ocr', false); + } } } @@ -591,7 +624,396 @@ async function handleTranslationTabClick() { ); if (confirmed) { - await triggerReprocess(true); // OCR + 翻译 + // 显示加载状态 + setTabLoadingState('tab-translation', true); + try { + await triggerReprocess(true); // OCR + 翻译 + } finally { + // 恢复按钮状态 + setTabLoadingState('tab-translation', false); + } + } +} + +/** + * 显示 PDF 对照确认对话框 + * 询问用户是否进行 MinerU 结构化翻译 + */ +async function showPdfCompareConfirmDialog() { + // 检查是否有 MinerU 数据(contentListJson) + const hasMinerUData = window.data && window.data.metadata && window.data.metadata.contentListJson; + + if (!hasMinerUData) { + // 没有 MinerU 数据,询问是否重新使用 MinerU 处理 + const confirmed = await showConfirmDialog( + 'PDF 对照视图', + '当前文档未使用 MinerU 引擎处理,无法进行结构化翻译。\n\n是否重新使用 MinerU 引擎处理文档?\n\n处理完成后将自动进行翻译并显示 PDF 对照视图。', + '开始处理', + '取消' + ); + + if (confirmed) { + // 使用 MinerU 重新处理并翻译 + await triggerReprocessWithMinerU(); + } else { + // 用户取消,跳转回原始文件标签页 + if (typeof showTab === 'function') { + showTab('original-file'); + } + } + return; + } + + // 有 MinerU 数据,询问是否进行翻译 + const confirmed = await showConfirmDialog( + 'PDF 对照视图', + '当前文档尚未进行 MinerU 结构化翻译。是否现在开始翻译?\n\n翻译完成后将显示原文与译文的 PDF 对照视图。', + '开始翻译', + '取消' + ); + + if (confirmed) { + await executeMinerUStructuredTranslation(); + } else { + // 用户取消,跳转回原始文件标签页 + if (typeof showTab === 'function') { + showTab('original-file'); + } + } +} + +/** + * 使用 MinerU 引擎重新处理文档并翻译 + */ +async function triggerReprocessWithMinerU() { + const docId = window.docIdForLocalStorage; + const docName = window.data ? window.data.name : '未知文档'; + + if (!docId) { + showToast('无法获取文档ID,请刷新页面重试。', 'error'); + return; + } + + // 检查是否有原始 PDF 数据 + const pdfBase64 = window.data?.metadata?.originalPdfBase64; + if (!pdfBase64) { + showToast('当前记录没有保存原始PDF数据,无法重新处理。', 'error'); + return; + } + + // 显示加载状态 + setTabLoadingState('tab-pdf-compare', true); + + // 保存当前 OCR 配置 + const savedEngine = localStorage.getItem('ocrEngine'); + const savedTranslationMode = localStorage.getItem('mineruTranslationMode'); + const savedMineruMode = localStorage.getItem('mineruMode'); + + try { + showToast('正在使用 MinerU 处理文档...', 'info'); + + // 临时设置 OCR 配置为 MinerU + 结构化翻译模式 + localStorage.setItem('ocrEngine', 'mineru'); + localStorage.setItem('mineruTranslationMode', 'structured'); + localStorage.setItem('mineruMode', 'txt'); + + // 将 PDF 转换为 Blob + const pdfBytes = Uint8Array.from(atob(pdfBase64), c => c.charCodeAt(0)); + const pdfBlob = new Blob([pdfBytes], { type: 'application/pdf' }); + const pdfFile = new File([pdfBlob], docName || 'document.pdf', { type: 'application/pdf' }); + + // 获取翻译模型配置 - 使用后端代理,不需要前端选择模型 + const settings = typeof loadSettings === 'function' ? loadSettings() : {}; + + // 调用 OCR 处理 + if (typeof window.processSinglePdf !== 'function') { + showToast('处理模块未加载,请刷新页面重试。', 'error'); + return; + } + + // 使用后端代理进行翻译,不需要传递 API Key + const result = await window.processSinglePdf( + pdfFile, + null, // mistralKeyObject - 使用 MinerU 不需要 + null, // translationKeyObject - 使用后端代理不需要 + 'tongyi', // 使用通义模型,后端代理会处理 + null, // translationModelConfig + settings.maxTokensPerChunk || 2000, + settings.targetLanguage || 'Chinese', + () => Promise.resolve(), // acquireSlot + () => {}, // releaseSlot + settings.defaultSystemPrompt || '', + settings.defaultUserPromptTemplate || '', + settings.useCustomPrompts || false, + null, // batchContext + () => {} // onFileSuccess + ); + + if (result.error) { + throw new Error(result.error); + } + + console.log('[triggerReprocessWithMinerU] 处理结果:', result); + console.log('[triggerReprocessWithMinerU] metadata:', result.metadata); + console.log('[triggerReprocessWithMinerU] contentListJson:', result.metadata?.contentListJson); + + // 更新 window.data + if (result.ocr) window.data.ocr = result.ocr; + if (result.translation) window.data.translation = result.translation; + if (result.images) window.data.images = result.images; + if (result.ocrChunks) window.data.ocrChunks = result.ocrChunks; + if (result.translatedChunks) window.data.translatedChunks = result.translatedChunks; + if (result.metadata) { + window.data.metadata = window.data.metadata || {}; + Object.assign(window.data.metadata, result.metadata); + } + + // 保存到 IndexedDB + if (typeof saveResultToDB === 'function') { + await saveResultToDB(window.data); + } + + showToast('处理完成!', 'success'); + + // 刷新页面显示 + if (typeof renderDetail === 'function') { + renderDetail(); + } + + // 自动跳转到原始文件标签页 + if (typeof showTab === 'function') { + showTab('original-file'); + } + + } catch (error) { + console.error('[triggerReprocessWithMinerU] 处理失败:', error); + showToast(`处理失败: ${error.message}`, 'error'); + } finally { + // 恢复原始 OCR 配置 + if (savedEngine !== null) localStorage.setItem('ocrEngine', savedEngine); + else localStorage.removeItem('ocrEngine'); + if (savedTranslationMode !== null) localStorage.setItem('mineruTranslationMode', savedTranslationMode); + else localStorage.removeItem('mineruTranslationMode'); + if (savedMineruMode !== null) localStorage.setItem('mineruMode', savedMineruMode); + else localStorage.removeItem('mineruMode'); + + setTabLoadingState('tab-pdf-compare', false); + } +} + +/** + * 执行 MinerU 结构化翻译 + * 通过后端 local-proxy 代理调用 LLM API,API Key 由后端管理 + */ +async function executeMinerUStructuredTranslation() { + const logPrefix = '[MinerU结构化翻译]'; + const PROXY_BASE = 'http://localhost:3456'; + + // 获取翻译配置 + const settings = typeof loadSettings === 'function' ? loadSettings() : {}; + const modelName = "tongyi"; + + + // 显示进度容器 + const tabContent = document.getElementById('tabContent'); + tabContent.innerHTML = ` +
+
+
+

正在执行 MinerU 结构化翻译...

+
+
+
准备开始翻译...
+
+
+
+
+
+

进度: 0%

+
+
+ + `; + + const logEl = document.getElementById('structured-translation-log'); + const progressBar = document.getElementById('structured-translation-progress-bar'); + const statusEl = document.getElementById('structured-translation-status'); + + // 日志函数 + const addLog = (msg) => { + const entry = document.createElement('div'); + entry.className = 'log-entry'; + entry.textContent = `[${new Date().toLocaleTimeString()}] ${msg}`; + logEl.appendChild(entry); + logEl.scrollTop = logEl.scrollHeight; + console.log(`${logPrefix} ${msg}`); + }; + + // 进度回调 + const onProgress = (progress) => { + const pct = progress.percentage || 0; + progressBar.style.width = `${pct}%`; + statusEl.textContent = `进度: ${pct}% - ${progress.message || ''}`; + }; + + try { + addLog('初始化翻译器...'); + + // 检查 MinerUStructuredTranslation 是否可用 + if (typeof MinerUStructuredTranslation === 'undefined') { + throw new Error('MinerU 结构化翻译模块未加载'); + } + + const translator = new MinerUStructuredTranslation(); + addLog('翻译器初始化完成'); + + // 获取全局 data 对象 + const dataObj = window.data; + console.log('dataObj:', dataObj); + + if (!dataObj || !dataObj.metadata || !dataObj.metadata.contentListJson) { + console.log(!dataObj ,!dataObj.metadata , !dataObj.metadata.contentListJson); + + throw new Error('缺少必要的内容数据'); + } + + // 提取可翻译内容 + const contentListJson = dataObj.metadata.contentListJson; + addLog(`提取可翻译内容...`); + + const translatableContent = translator.extractTranslatableContent(contentListJson); + addLog(`提取了 ${translatableContent.length} 个片段`); + + // 分批 + const batches = translator.splitIntoBatches(translatableContent); + addLog(`分为 ${batches.length} 个批次`); + + // 获取目标语言 + const targetLang = settings.targetLanguage === 'custom' + ? (settings.customTargetLanguageName || 'Chinese') + : (settings.targetLanguage || 'Chinese'); + + // 翻译选项 - 通过后端代理,不需要 API Key + const translationOptions = { + useBackendProxy: true, + proxyBase: PROXY_BASE, + provider: modelName === 'custom' ? 'aliyun' : modelName // 默认使用 aliyun/通义 + }; + + // 执行翻译 + addLog(`开始翻译 (模型: ${modelName}, 目标语言: ${targetLang}, 通过后端代理)...`); + + const translatedContentList = await translator.translateBatches( + batches, + targetLang, + modelName, + null, // API Key 为 null,由后端代理处理 + { + ...translationOptions, + maxRetries: settings.structuredMaxRetries || 2, + retryDelay: settings.structuredRetryDelayMs || 800 + }, + onProgress, + () => Promise.resolve(), // acquireSlot + () => {} // releaseSlot + ); + + addLog('翻译完成,保存数据...'); + + // 保存到 metadata + if (!dataObj.metadata) dataObj.metadata = {}; + dataObj.metadata.translatedContentList = translatedContentList; + dataObj.metadata.supportsStructuredTranslation = true; + + // 收集失败项 + const failedItems = []; + translatedContentList.forEach((it, idx) => { + if (it && it.failed === true) { + failedItems.push({ + index: idx, + type: it.type, + page_idx: it.page_idx || 0, + text: translator.extractItemText ? translator.extractItemText(it) : (it.text || '') + }); + } + }); + dataObj.metadata.failedStructuredItems = failedItems; + dataObj.metadata.structuredFailedCount = failedItems.length; + + // 更新全局数据 + if (typeof data !== 'undefined') { + data.metadata = dataObj.metadata; + } + window.data = dataObj; + + // 保存到数据库 + if (typeof saveResultToDB === 'function') { + await saveResultToDB(dataObj); + addLog('数据已保存到数据库'); + } + + if (failedItems.length > 0) { + addLog(`注意: 有 ${failedItems.length} 个片段翻译失败`); + } + + addLog('正在加载 PDF 对照视图...'); + + // 短暂延迟后显示 PDF 对照视图 + setTimeout(() => { + if (typeof showTabImmediate === 'function') { + showTabImmediate('pdf-compare'); + } else if (typeof showTab === 'function') { + showTab('pdf-compare'); + } + }, 500); + + } catch (error) { + console.error(`${logPrefix} 翻译失败:`, error); + addLog(`错误: ${error.message}`); + + // 显示错误 + tabContent.innerHTML = ` +
+ +

翻译失败

+

${error.message}

+ +
+ `; + + if (typeof renderingTab !== 'undefined') renderingTab = null; + if (typeof console.timeEnd === 'function') console.timeEnd('[性能] showTab_总渲染'); } } diff --git a/js/history/history_detail_show_tab.js b/js/history/history_detail_show_tab.js index 1e2518d..21ec246 100644 --- a/js/history/history_detail_show_tab.js +++ b/js/history/history_detail_show_tab.js @@ -300,15 +300,14 @@ function showTabImmediate(tab) { if (DOM_CACHE.layout.meta) DOM_CACHE.layout.meta.style.display = 'none'; if (DOM_CACHE.layout.tabsContainer) DOM_CACHE.layout.tabsContainer.style.display = 'none'; - // 验证必要数据 - if (!data.metadata || !data.metadata.originalPdfBase64 || !data.metadata.contentListJson || !data.metadata.translatedContentList) { - const warn = `
` - + `无法进入"PDF对照":缺少必要的 MinerU 结构化翻译数据。` - + `
`; - document.getElementById('tabContent').innerHTML = warn; - if (typeof window.refreshTocList === 'function') window.refreshTocList(); - renderingTab = null; - console.timeEnd && console.timeEnd('[性能] showTab_总渲染'); + // 检查是否有必要的结构化翻译数据 + const hasStructuredData = data.metadata && data.metadata.originalPdfBase64 && data.metadata.contentListJson && data.metadata.translatedContentList; + + if (!hasStructuredData) { + // 缺少结构化翻译数据,弹出确认对话框询问用户 + (async () => { + await showPdfCompareConfirmDialog(); + })(); return; } diff --git a/js/process/main.js b/js/process/main.js index e553259..6703cd3 100644 --- a/js/process/main.js +++ b/js/process/main.js @@ -704,13 +704,23 @@ const fileType = fileToProcess.name.split('.').pop().toLowerCase(); // --- 翻译流程 (如果需要) --- if (selectedTranslationModelName !== 'none') { const translationKeyValue = translationKeyObject ? translationKeyObject.value : null; - if (!translationKeyValue) { + + // 检查是否使用后端代理模式(不需要前端 API Key) + const useBackendProxy = selectedTranslationModelName === 'tongyi' || selectedTranslationModelName === 'aliyun'; + + if (!translationKeyValue && !useBackendProxy) { if (typeof addProgressLog === "function") addProgressLog(`${logPrefix} 警告: 需要翻译但未提供有效的翻译 API Key。跳过翻译。`); currentTranslationContent = '[未翻译:缺少API Key]'; ocrChunks = [currentMarkdownContent]; translatedChunks = [currentTranslationContent]; } else { - if (typeof addProgressLog === "function") addProgressLog(`${logPrefix} 开始翻译 (${selectedTranslationModelName}, Key: ...${translationKeyValue.slice(-4)})`); + if (typeof addProgressLog === "function") { + if (useBackendProxy) { + addProgressLog(`${logPrefix} 开始翻译 (${selectedTranslationModelName}, 使用后端代理)`); + } else { + addProgressLog(`${logPrefix} 开始翻译 (${selectedTranslationModelName}, Key: ...${translationKeyValue.slice(-4)})`); + } + } // ===== MinerU 结构化翻译检测 ===== let shouldUseStructuredTranslation = false; @@ -776,6 +786,9 @@ const fileType = fileToProcess.name.split('.').pop().toLowerCase(); }); // 4. 执行批量翻译 + // 检查是否使用后端代理模式 + const useBackendProxy = !translationKeyValue && (selectedTranslationModelName === 'tongyi' || selectedTranslationModelName === 'aliyun'); + const translatedContentList = await structuredTranslator.translateBatches( batches, targetLanguageValue, @@ -783,6 +796,9 @@ const fileType = fileToProcess.name.split('.').pop().toLowerCase(); translationKeyValue, { ...translationOptions, + useBackendProxy, + provider: selectedTranslationModelName, + proxyBase: 'http://localhost:3456', // 允许从设置自定义重试,若无则用默认 maxRetries: (typeof loadSettings === 'function' ? (loadSettings().structuredMaxRetries || undefined) : undefined), retryDelay: (typeof loadSettings === 'function' ? (loadSettings().structuredRetryDelayMs || undefined) : undefined) @@ -1009,60 +1025,61 @@ const fileType = fileToProcess.name.split('.').pop().toLowerCase(); } const processedAt = new Date().toISOString(); - if (typeof saveResultToDB === "function") { - // 准备元数据 - const metadataToSave = {}; - // 如果是 MinerU 结构化翻译,保存额外的元数据 - if (ocrResult && ocrResult.metadata) { - // 保存 layoutJson 和 contentListJson - if (ocrResult.metadata.layoutJson) { - metadataToSave.layoutJson = ocrResult.metadata.layoutJson; - } - if (ocrResult.metadata.contentListJson) { - metadataToSave.contentListJson = ocrResult.metadata.contentListJson; - } - // 保存翻译后的结构化内容 - if (ocrResult.metadata.translatedContentList) { - metadataToSave.translatedContentList = ocrResult.metadata.translatedContentList; - } - // 保存原始 PDF(转为 base64) - if (ocrResult.metadata.originalPdf) { - try { - const pdfBlob = ocrResult.metadata.originalPdf; - const pdfArrayBuffer = await pdfBlob.arrayBuffer(); - metadataToSave.originalPdfBase64 = arrayBufferToBase64(pdfArrayBuffer); - if (typeof addProgressLog === "function") { - addProgressLog(`${logPrefix} 已保存原始 PDF (${Math.round(pdfBlob.size / 1024)} KB)`); - } - } catch (e) { - console.warn(`${logPrefix} 保存原始 PDF 失败:`, e); - } - } - // 标记支持结构化翻译 - metadataToSave.supportsStructuredTranslation = ocrResult.metadata.supportsStructuredTranslation; - // 持久化结构化失败项统计(如存在) - if (Array.isArray(ocrResult.metadata.failedStructuredItems)) { - metadataToSave.failedStructuredItems = ocrResult.metadata.failedStructuredItems; - } - if (typeof ocrResult.metadata.structuredFailedCount === 'number') { - metadataToSave.structuredFailedCount = ocrResult.metadata.structuredFailedCount; - } + // 准备元数据(在条件块外定义,以便返回值使用) + const metadataToSave = {}; + + // 如果是 MinerU 结构化翻译,保存额外的元数据 + if (ocrResult && ocrResult.metadata) { + // 保存 layoutJson 和 contentListJson + if (ocrResult.metadata.layoutJson) { + metadataToSave.layoutJson = ocrResult.metadata.layoutJson; } - - // 新增:对于所有 PDF 文件,如果还没有 originalPdfBase64,则从原始文件读取 - if (fileType === 'pdf' && !metadataToSave.originalPdfBase64) { + if (ocrResult.metadata.contentListJson) { + metadataToSave.contentListJson = ocrResult.metadata.contentListJson; + } + // 保存翻译后的结构化内容 + if (ocrResult.metadata.translatedContentList) { + metadataToSave.translatedContentList = ocrResult.metadata.translatedContentList; + } + // 保存原始 PDF(转为 base64) + if (ocrResult.metadata.originalPdf) { try { - const pdfArrayBuffer = await fileToProcess.arrayBuffer(); + const pdfBlob = ocrResult.metadata.originalPdf; + const pdfArrayBuffer = await pdfBlob.arrayBuffer(); metadataToSave.originalPdfBase64 = arrayBufferToBase64(pdfArrayBuffer); if (typeof addProgressLog === "function") { - addProgressLog(`${logPrefix} 已保存原始 PDF 用于查看 (${Math.round(fileToProcess.size / 1024)} KB)`); + addProgressLog(`${logPrefix} 已保存原始 PDF (${Math.round(pdfBlob.size / 1024)} KB)`); } } catch (e) { console.warn(`${logPrefix} 保存原始 PDF 失败:`, e); } } + // 标记支持结构化翻译 + metadataToSave.supportsStructuredTranslation = ocrResult.metadata.supportsStructuredTranslation; + // 持久化结构化失败项统计(如存在) + if (Array.isArray(ocrResult.metadata.failedStructuredItems)) { + metadataToSave.failedStructuredItems = ocrResult.metadata.failedStructuredItems; + } + if (typeof ocrResult.metadata.structuredFailedCount === 'number') { + metadataToSave.structuredFailedCount = ocrResult.metadata.structuredFailedCount; + } + } + // 新增:对于所有 PDF 文件,如果还没有 originalPdfBase64,则从原始文件读取 + if (fileType === 'pdf' && !metadataToSave.originalPdfBase64) { + try { + const pdfArrayBuffer = await fileToProcess.arrayBuffer(); + metadataToSave.originalPdfBase64 = arrayBufferToBase64(pdfArrayBuffer); + if (typeof addProgressLog === "function") { + addProgressLog(`${logPrefix} 已保存原始 PDF 用于查看 (${Math.round(fileToProcess.size / 1024)} KB)`); + } + } catch (e) { + console.warn(`${logPrefix} 保存原始 PDF 失败:`, e); + } + } + + if (typeof saveResultToDB === "function") { await saveResultToDB({ id: `${fileToProcess.name}_${fileToProcess.size}`, name: fileToProcess.name, @@ -1137,7 +1154,9 @@ const fileType = fileToProcess.name.split('.').pop().toLowerCase(); batchOutputLanguage: batchContext ? batchContext.outputLanguage : null, batchOriginalIndex: batchContext ? batchContext.originalIndex : null, batchAttempt: batchContext ? batchContext.attempt : null, - batchZip: batchContext ? batchContext.zipOutput : null + batchZip: batchContext ? batchContext.zipOutput : null, + // 返回 metadata,包含 contentListJson 等结构化翻译数据 + metadata: Object.keys(metadataToSave).length > 0 ? metadataToSave : null }; @@ -1186,3 +1205,9 @@ if (typeof processModule !== 'undefined') { } else { console.warn('main.js: processModule is undefined at the point of assignment.'); } + +// 也暴露到 window 上,以便在 history_detail.html 等页面使用 +if (typeof window !== 'undefined') { + window.processSinglePdf = processSinglePdf; + console.log('main.js: processSinglePdf exposed to window'); +} diff --git a/js/process/mineru-structured-translation.js b/js/process/mineru-structured-translation.js index 4eb7053..b5d9e41 100644 --- a/js/process/mineru-structured-translation.js +++ b/js/process/mineru-structured-translation.js @@ -701,7 +701,88 @@ ${jsonContent} * @returns {Promise} */ async callTranslationAPI(systemPrompt, userPrompt, model, apiKey, options = {}) { - // 复用 translation.js 的配置构建逻辑 + const settings = typeof loadSettings === 'function' ? loadSettings() : {}; + const temperature = (settings.customModelSettings && settings.customModelSettings.temperature) || 0.5; + const maxTokens = (settings.customModelSettings && settings.customModelSettings.max_tokens) || 8000; + + console.log('[MinerU Structured] callTranslationAPI 调用参数:', { + model, + hasApiKey: !!apiKey, + useBackendProxy: options.useBackendProxy, + options + }); + + // 后端代理模式 - API Key 由后端管理 + if (options.useBackendProxy) { + const proxyBase = options.proxyBase || 'http://localhost:3456'; + const provider = options.provider || 'aliyun'; + + // 后端代理端点映射 + const providerEndpoints = { + 'aliyun': `${proxyBase}/api/llm/aliyun/v1/chat/completions`, + 'tongyi': `${proxyBase}/api/llm/tongyi/v1/chat/completions`, + 'deepseek': `${proxyBase}/api/llm/deepseek/v1/chat/completions`, + 'openai': `${proxyBase}/api/llm/openai/v1/chat/completions`, + 'mistral': `${proxyBase}/api/llm/mistral/v1/chat/completions`, + 'zhipu': `${proxyBase}/api/llm/zhipu/v4/chat/completions`, + 'anthropic': `${proxyBase}/api/llm/anthropic/v1/messages`, + 'gemini': `${proxyBase}/api/llm/gemini/v1beta/models/gemini-pro:generateContent` + }; + + const endpoint = providerEndpoints[provider] || providerEndpoints['aliyun']; + + // 获取模型 ID + let modelId = 'qwen-turbo-latest'; + try { + const modelConfig = typeof loadModelConfig === 'function' ? loadModelConfig(provider) : null; + if (modelConfig && (modelConfig.preferredModelId || modelConfig.modelId)) { + modelId = modelConfig.preferredModelId || modelConfig.modelId; + } + } catch (e) { + console.warn('[MinerU Structured] 加载模型配置失败,使用默认模型:', e); + } + + const requestBody = { + model: modelId, + messages: [ + { role: "system", content: systemPrompt }, + { role: "user", content: userPrompt } + ], + temperature, + max_tokens: maxTokens + }; + + console.log('[MinerU Structured] 后端代理模式:', { endpoint, provider, modelId }); + + try { + const response = await fetch(endpoint, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(requestBody) + }); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`翻译 API 请求失败 (${response.status}): ${errorText}`); + } + + const data = await response.json(); + const result = data?.choices?.[0]?.message?.content; + + if (!result) { + throw new Error('翻译 API 返回空结果'); + } + + // 清理指令块 + return this._stripInstructionBlocks(result); + + } catch (error) { + console.error('[MinerU Structured] 后端代理请求失败:', error); + throw error; + } + } + + // 原有逻辑 - 前端直接调用(需要 API Key) if (typeof processModule === 'undefined' || typeof processModule.buildPredefinedApiConfig !== 'function' || typeof processModule.buildCustomApiConfig !== 'function') { @@ -712,14 +793,6 @@ ${jsonContent} throw new Error('callTranslationApi 函数不可用'); } - console.log('[MinerU Structured] callTranslationAPI 调用参数:', { - model, - hasApiKey: !!apiKey, - options, - hasModelConfig: !!(options && options.modelConfig), - modelConfig: options ? options.modelConfig : null - }); - // 构建 API 配置 let apiConfig; if (model === 'custom') { @@ -756,10 +829,6 @@ ${jsonContent} ); } else { // 预设模型 - 从 translation.js 获取配置 - const settings = typeof loadSettings === 'function' ? loadSettings() : {}; - const temperature = (settings.customModelSettings && settings.customModelSettings.temperature) || 0.5; - const maxTokens = (settings.customModelSettings && settings.customModelSettings.max_tokens) || 8000; - // 简化:仅支持常用模型 // 前端发出的请求源头 const predefinedConfigs = { @@ -811,17 +880,25 @@ ${jsonContent} let result = await callTranslationApi(apiConfig, requestBody); // 清理指令块(防止系统提示词泄露到翻译结果中) + return this._stripInstructionBlocks(result); + } + + /** + * 清理指令块 + * @param {string} result + * @returns {string} + */ + _stripInstructionBlocks(result) { if (typeof stripInstructionBlocks === 'function') { - result = stripInstructionBlocks(result); + return stripInstructionBlocks(result); } else if (typeof processModule !== 'undefined' && typeof processModule.stripInstructionBlocks === 'function') { - result = processModule.stripInstructionBlocks(result); + return processModule.stripInstructionBlocks(result); } else { // 回退:手动清理 if (typeof result === 'string') { - result = result.replace(/\s*\[\[PBX_INSTR_START\]\][\s\S]*?\[\[PBX_INSTR_END\]\]\s*/gi, '').trim(); + return result.replace(/\s*\[\[PBX_INSTR_START\]\][\s\S]*?\[\[PBX_INSTR_END\]\]\s*/gi, '').trim(); } } - return result; } diff --git a/test.html b/test.html index a733dc4..a320e55 100644 --- a/test.html +++ b/test.html @@ -596,7 +596,7 @@ class="btn-mineru-primary" onclick="mineruOpenHistory()" > - 📂 读取并打开历史界面 + 📂 读取并打开历史界面(仅跳转,不会OCR)我平常使用这个按钮测试这个功能