From d80d7262efc8851031a9adeb6c7fb4d893183e73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E6=B4=8B=E4=B8=89=E6=B4=8B?= <1258009915@qq.com> Date: Fri, 12 Apr 2024 06:13:58 +0000 Subject: [PATCH] update README --- README.md | 40 ++++-- assets/README_zh.md | 149 ++++++++++++----------- assets/det_rec.png | Bin 0 -> 940945 bytes assets/image/README_zh/1712901497354.png | Bin 0 -> 495745 bytes 4 files changed, 107 insertions(+), 82 deletions(-) create mode 100644 assets/det_rec.png create mode 100644 assets/image/README_zh/1712901497354.png diff --git a/README.md b/README.md index ce6c208..cb686d1 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ TexTeller was trained with ~~550K~~7.5M image-formula pairs (dataset available [ * 📮[2024-03-25] TexTeller 2.0 released! The training data for TexTeller 2.0 has been increased to 7.5M (about **15 times more** than TexTeller 1.0 and also improved in data quality). The trained TexTeller 2.0 demonstrated **superior performance** in the test set, especially in recognizing rare symbols, complex multi-line formulas, and matrices. > [There](./assets/test.pdf) are more test images here and a horizontal comparison of recognition models from different companies. -* 📮[2024-04-11] Added whole image inference capability, just need to additionally install the onnxruntime library to get the new feature! We manually annotated formulas in 3,415 Chinese textbook images and used 8,272 formula images from the IBEM English paper detection dataset. We trained a formula object detection model based on the RT-DETR-R50 architecture and exported the trained model to the ONNX format. This allows inputting an image and recognizing all formulas in the image in one go. +* 📮[2024-04-12] Trained a **formula detection model**, thereby enhancing the capability to detect and recognize formulas in entire documents (whole-image inference)! ## 🔑 Prerequisites @@ -82,21 +82,39 @@ Enter `http://localhost:8501` in a browser to view the web demo. > [!NOTE] > If you are Windows user, please run the `start_web.bat` file instead. -## Inference on Whole Images -### Download Weights -The ONNX model trained on the 8,272 IBEM dataset (https://zenodo.org/records/4757865) of English papers: -https://huggingface.co/TonyLee1256/texteller_det/resolve/main/rtdetr_r50vd_6x_coco_trained_on_IBEM_en_papers.onnx?download=true +## 🧠 Full Image Inference -The ONNX model trained on 2,560 Chinese textbook images (100+ layouts): -https://huggingface.co/TonyLee1256/texteller_det/blob/main/rtdetr_r50vd_6x_coco_trained_on_cn_textbook.onnx +TexTeller also supports **formula detection and recognition** on full images, allowing for the detection of formulas throughout the image, followed by batch recognition of the formulas. + +### Download Weights + +English documentation formula detection [[link](https://huggingface.co/TonyLee1256/texteller_det/resolve/main/rtdetr_r50vd_6x_coco_trained_on_IBEM_en_papers.onnx?download=true)]: Trained on 8272 images from the [IBEM dataset](https://zenodo.org/records/4757865). + +Chinese documentation formula detection [[link](https://huggingface.co/TonyLee1256/texteller_det/blob/main/rtdetr_r50vd_6x_coco_trained_on_cn_textbook.onnx)]: Trained on 2560 Chinese textbook images (100+ layouts). ### Formula Detection -Run infer_det.py in the TexTeller/src directory. -This will detect all formulas in the input image, draw the detection results on the entire image and save it, and crop and save each detected formula as a separate image. + +Run the following command in the `TexTeller/src` directory: + +```bash +python infer_det.py +``` + +Detects all formulas in the full image, and the results are saved in `TexTeller/src/subimages`. + +
+
+gyOgJbtG@)1%vpI z{`R2be2pH3w{Gs94;g8ijAeOmXVyq}TRkM5ozoN{;@C9XwA?vK{&LJ7<-x;qeH*z( zMy{R2f^wX1St%V(2cZvw3QRj*w6x`l^I8Z04HT^nWv>lMZAdRk%S9|00lCzh<17r2 z;H~pu*}V_{Y;iniIa}-IMD-9~AfeH2XY3BwRkCMP@=3ycuJh)0XjsZ={BP;T-}~<{ zly{)86vR&ZtoQn(4J_{Onr2iByd9r+8+Ty8p7H3=xW|TzbL7EEj2SlaNgoYQpmp_3 zgV}R{|2;-P<&t6Dp6p!zBuIOrqX__S6FHFY 9)ag>f4~>js-OfuZ6!+ zAcuxs)7Kl{hwd>N`_vlycBRRC1u$1v-c7~=oVbvQ{6UyjSAW;%8pfeAQ;346PftMl z(BONTyCvk8)Zbs8r-TDVuyEoOUY9b)wSP|FGCy29)5g*3$q_-NE=J5JJ@%zn4@J%- z%H=$3R4%TE7m7Mhx^c*Cp3{wKyIzlyy6*^lG=~3vWeD7K7 *`%fC)$CcVUvF}jw&>cV(hzO3sZv&Q`75Po@yXzCy#K0=B5BBO65#o^x0@3wO_XU zIh*m!ba nEt464 z7fu^~b>3}D>z6>} UO&tdO^elJ9NucMZC?j>5!p$@ohmALR&! zz _#(3mfTVmX@MyC>{+T^pQ1&~QkEa&tq3`|$ zKRBU8f5C6LD}d*(Spt~c$d6QM0Y$F@77KxGDYF-o*m#0z#)iwc^jMHCypxz+8<%pd zBVI2aG6c!NlnQMnO)v$sD2Ty1pAh{Q)wkcrXDTcf$9Zgu&13^U!iG8n=Q);R)u=3p zK^-Af!pcXHxlf){tPibQ=>?wpOIhCW-Gdit@X#2$j){)NY|Bn(8Gcf$;(l9X3@v8d z?fiR7E7HWI;DpmmUi?%UR& k4io9PD6WdbIQ4Zh!btA-5GMZbLz*k#fYA*1%} zpmsqI+HyWM#;bg0<6-;Oz|`)=AO-Ap&a8Io#`eiWe5J_rkPes3+?H|Lz%x0kbdS#N z@l+PMyb?yQLcylBZK{S4c-lWmwsFverZCXqK$JsIdC+yV@y;03ER@>l?WQT4K&M$~ zOxjv~76=iv1|T=X7aU>3D%&%CyFbD`r~vJ00Y*K8;^FKaR7uT-x$H`wJ)*EcD!a>Q z;clZVKGnU(c%^_uQtgf=>7#z>t`Cggv9i@-r=TulB4-X?7gfirI48YW#;ST4;nCqi zNecEkS3jLr3zI>x2!LJGk1u+JY7 )xn@6tS%WEOO=vcEK9-0Jwym$0%| z3FTMNy#fT*VR(OVsM{7-M{vgTv)C7cL_a|-IQ`YZ$I}a7zj!Tm6ldVoKtZh6&V|e= zNaWO$$St0$`hYx1z>LAGmXEY~@EGqGUfV?Vn7h3;r~0U>{g3>+rd9 dUXQ@ )cdX+Q&6!ZFvE8bwQsFJX!?jriscM8cFgdEsU=+u0$bF23U-qJ zppSJEG8y(Z+@sEt80xivKt#Z)kNW-(8zRrS!j=hAq-K}7=iJLJr+-DhpA;jssxTgq zK0f4?^n}sgKR1M^CaKh^6%}WycP>_GBMss>Ad}3IvijX#`KZl3bgb@Ulpx=smQY5% zWbnFPlgjs{XUW}+8_gONrXWJALc2C@{ULb^lfEGRlM)wYA7?;+%ON6Iv`n~j%zvCI zv)aMX?a3?)mvNoaF#T?dP=BQ+TLAp5X2D(4Kg}?;4Uf%Sj=YhEOqwu zcm=Fo$7{P@N+=f8Btu=g@r-_1Nfe G_P_5I1R{6HzA=(I46l?>T5Q388wGw7!6kB^8B_e11m@uWED z?d-89|TZkSk4~j ;JbgsEgNsNdTuD9hO7@J$5re7dQjO&Zll?yOK^zo`J0ee8Jyn*wjQUsnrQAEm`} z&2t>9DYgM5(=^gZlouRUN0OG^+O+4FRptGcM2_1^;jTBfd2MI*o7#t-VBbFzBLaZ@ zMxAo!tDS+qx-aBMW=yOT8|j`rtyx>(&j2W1r$t$Wb1(*GJEd}TO5JZB;KOn?yIx#m zDYEP>G^W7H$irWbxJ#l~CJTXLoi($|20w1A@8$s1V+^VbD+cE`CvGm@l~LFdi>?}~ z-Y B-cy|l%*o}!tMY ixNvlt}Z$o1Oc2) lzYx2p;YZ*=J=Q>m2K?5Y82l8CGXn8D#it5N z>Lygcc6&Ny4u8~M;HVUX1v;W1&d&fW_u6igE#y~Xr9U;|Zu<{DHQy 8tGo;8RLc-{AKqgHMyE3)z0R-AZ^GJ^=r!DVPV6M+Rcchz>s
wQ5pI|eu zQ9=dqI7H{<^XL~*nQYLLm)Q15o6;$h!xQSEy(+R*h#&yu;M$^ORod>*yer`Iaj?~7 zQ!IK)h17MeJPg;hunQg|Tyoz&8#yR~tCdhp6zb6zSK~+eWd3X$e7mufR8}YFJj?as ze4Q}abGLv#5byd>N={H?CTx6F0Mf^E6GzgZmLQYlH}!U+p&<0LLidIexuai=%6Al1 zQzoW(x(>DqRt6i=s>L#jd`j -%$YrnhqWIL*f3k2m`m;^Lx3r)ZTS(zg4So`0~ zH#3UixZ*=g(jM(Ccu_%dxPhU6w15wp#oUDd{uw|Z{Mr>N-_-LP2n_}P+5ZSld2fW; zaSoCcMzC|YKT|Spz2OH>BXwC1j%J>-5UeW@wG!8Mq<1Z}zSyY?GQfvTE6}ybvx@O% z8u2`lX-AXY;9}rxiR+h#allO*+lRP&GK%u-R9*{3qD*YkK*jX4Ah`0h{DcEAco7tw z_lCpz8@g($!sVeoO!k7ci`I_kijKFC$o$jY!J5F2ZWO}b$7pFJ!JS X z;YtCp2Z%y~3^!p4ZU5}N9c_o-2(U|?{#?gpcR;Mzyv`VOtGnF#`Xa&bck@9jJLgwc z3$9bZ9a*4!ia+2gG3u(LT+vu}Rix0_``jvS&oyJm^3(p2z0=gA$kH=o!PKp)8L3!z zMnd|NzQ5apcgp!8oK9kvB3T%sPF%b2SMOX;kDo#}vtr4C!MBps!)zg(Y4yW8kK1LL zO_k$!gm0Zn-SV}aKBLHF)uhrM$H mk z9V}3kBR58MY+smbNpuEmvQfFRSDnvRT)4IQV6_E(VFn ql511G-PO=okk!+y zOoKx@k3w2|U+Rf_?uryH S;TZP(^&o@>|vFo?8^MB2nB=n;Q5wG((-KuV@ zm}qoZ`Ib#x4tyYdAR#dWwkhEeE$gYhCB#%|g5>`&d(G>42p`ByD(yn$%|ba-wpr&q z`-WG+a&^?2!1D@8lXK7eMM{xZw96daNCJ}u1$9iNm#t}L&7ZHlPx)kaV^)vo+d~wL zHg=;%*82#wpQll#8?7o9UK;852mZJXGSw&CAJK73a)#VY=ek1Mw)P3*`4{1uXq^)% z5#~~A9`w$G|BB-8&gviZ@k{UAU$murzSQQAzPV?x-C2;0z=%cjW^^lljsf6o$IA;p zc%*Ch-jWg49%e1Olf_olCa&JGXn`-???zH N8iBfF`)M#5!tHni5FiC4j0oWTJHe_e#M5Im3MVt3h-k8W1M?c3kcJ6%&n2? z-n^VM)5*vza>>hFANtc+zq(Sd4YwD_SUY^dhTLAYo#|7SLGJw9IkhJl_J3$Puc#)v zuZ@EshzKb7(n6K0G${sY35ZgpsVGINhAIS*CM7gc5a}JH1VKThhK}?W2+~4Lk=~mS z2#~}8AODMQt+|+sxtcX|&OZBjp5Oj6ipPDyqiYejWu3Hv9dF%re%4-Za+UsTetjPE zVovxS9$z}l;Con79|kRtlkoK^dUzfk$p|MVp`0SW1?H7Z86=?`ecXl#ll5OqJ#p4% ztQ%4Jq+7NTFT_KlE9J-dG?I~mXF1Rz3C`7h_fM5$3{{UbLw+6C#(U ky;MZ0pm>pDq8Ta5ci&BnTDLJWYxx1M9cWOBea=ewRnn~rJ}q+2 zNOi7)*?8Hyq_3MxM%BWHKWbpyg`(s0fGvyr&VamwC*;|y@rU)Js7$_L 0{3};7LhN;M0+>dCi?YSprX_xRm1%2l$P{MFPV=Yb!f$A8ARa4XGgP zHDS}v8MJcMy?Mt}0UCS&Q{j4kf=lIL=jVPi+VhWY5Sf &JiN|L>xQ}dinODyba)i>)DI~aE85fjTy^o#@cstqi$ zDJFS^%Ui7}PncDiWsZQVk~=P4_D>=>r`X*&6wc6Z9yAsR$^9ro#}pTY+qR@#x~1wh z5iO9PbVWb~%KA~ZmGz|YGENBL!ud_+i6Qqo^1)XY_7fqVJix%97>~?DE52koK8_bT zPyK1M8op*K9LrzP3~^bK&0^{npWNw8HW2rIskB`tH7kT>gC_N6o_aPdM%_;R!1S%w z4Hau&y;VKkqry@XLph>6g+O9h42`#YA7{ARJM;INcfW}ka*hPvQg0qITkJuE_w-Ll zC0!%WN&h*GNwBY~xco{#T@^T!&ma8qLO>rM1k+2zn$dE~W}D?O6}ngjY&$=(YX|_I z83avc-$dVuxJ}TXztqsjr~V6>`UhFL!Z%M*$ybj508;zzwu>^m)jdaiXmWQCWgSCr zO^cx&vlvCyXQ0biihwlIPTgXS!AycYGKFcSTw~DjxETSHeCs=mODV%iejJ6DS;J6? z0~T +s6er)U3<4nW{fblW4rK zntUfZUzz6oj>TJ)F|BVA9`vG8vocrIkAR#-r6Edb6*FYZ5J!%O3fZ>%Mw2P8nR8O? zyf2x6G!`BEU%NAxEh+GC(vHQKu<)lgpsYH6{swu~G6q^HVZQy&tS#}UMqC5#&NNgG zgE{|g8T_bU97UG8DHsfF-g-q-CjGh|;np?XL$^DS1;VQQ%a~kfNg!|K5$YER4_gQy z^M9?q$tiJJ)h4MP7f9p0A}mxu(b>Nw=+u9y0K%5Ow3o4*_3^7PT^Ahxk8M|GYqLSN z4y_dBuKH8EghgzZaNWH1)oaK#NdxC&O)E=vf&maT!iDyD8`BPaJ;K7Zt{$2)8u*wE zp5Wpr;S9?Q{yjiVGDJEuZ!yMy^gxKr&)8|`|7VbzEZzA4gJ)UmK|Z`s`VxuiD+$_2 zQ%C0ZMF+*WsTU0=ik)+s*Fz(wigQ{E6jX~F$-rPkt$sMQSS42@j%C%MyW?yOi8(gA zsoM80AbgZZcL@OupF 0MCaD{G7|m#NiGa%4GfAU&M$ zLtTyN714&K%Ud7*%cc?Te{i#|uipJzrBR4KE%FIa3(xS?ANihT)T{7m=yXt#x6dMp zZ~rccRwcWvD9;*NX< -z5dtYgp|9J|*C-+%+$q-uUch%CR{u@MO@bao=;o>!M> zdwJfv*vw3GDMQrP>?l31LslhAk&PB!i`^fwS8Un(aGm 1Yqb5F 4Zn;Z)o%QCMAHEQ+GroGWmQ0l1x_}u*tg<@YzU8 z_Xpf|gSg15%fk}=ALh7?ml{C~Z*qhJYHsA<$&(#20h6mu=CxW6Je2s19*U{0JeAGT z;|;#^(XOW0gaY?B?jWg5lq!R#^PtB|heTp;X~7ScFa=o>%bdgQ&6OUiWSBy!3hx+D zVWXDv- 8xV|+mV)I&{nn%Z&c8V~ zXyg6PHea3weK1J;H+RymXz3cML`DlUyS$R!Ph}|(1|@%G3N?!ZJ1mWAw6V{>ygp_w zIF>&DNjCuJTk~(PRBIPgz><=(P5eBQp1a9PWP(fh0A3tT%oz{H#&g;ehRrt|ZY;_O zP-v8RM}1$}kziT*m3`GfYpc3mKs@Dk&^Fdd1Pd^A;}5POlXT8SvA5foj68#y7`BMt z5k`zA*x+Xm85C$KdaN?nXWE?wfp1yOQyzgrY0aBOa@{*Tk{nD<=kLGd0-1h_4a3D% zlN~@`6+ylVoJZQrr7RI`aeC;gvzv57`kW3jl_=(1ey`whOzIkJkd9q7C-WF_Cs*J7 zMArs3gq>TdW}3>f+P3;s5qlrfV=Ym&|D3 3wiE z;u>ORPlF}}p43K?_IF|1zyNL{HO>adXL*QQ?I3qWMh#|3wky1z`+W?d^Dkd@bje9L ziZCk`umsZt4QQ;gZd5bp@At7%Qj?)mZaMRVqeRb6=eibG^(=imKb&u(C&WVig?XFm zOdG1_d{udH;HvM|HY3u3K#AAlpKh`1$soO#0DjB;u2epx0*AWB$1fzB%KK_7(U zqSTlZsrn3cIEMvB)HlB867UM+KqC1 2%f1=j5Xyb z3|r)%jkjC%Mdi@4g465n( PNS~gS<_C{k*ziDKXY|W$;uxbVd`;05WoXBD}dkfiD5CkGVp3H z{;GMa*8Aj-uRLw8Pir0z=k_I!7;lR6X_+Woo1wW>_ByUiyA??vtr*V0;(UEWCdu&g zh=!4TASQWaQS4K`K%uF31xG5=g ^?gE~xBdsu-1~X6vmmxRUweN?ARlw> zmR(MGQ9!`WlMmM=N*UrKwwMe7qFC{>k W?%H~e&itD9@>Q{i8I{8QjJG6K<7F+gxpCqZ42WXj6PB70?3) faicC-F$Y0XD{xgXS>b+%~X&cy9-7aalcXd*-TKq(bYeWcW#jU$$?v+oM#wP2g3 zw@Pe)Z>*0Qm;^WvIR{tnHjCP+7D-*d+UoT(ONvV^Xj$L8bKUTZdw>UKB0%OVLQ?W} z!}41B|FZyGM4qtY8Sb=WKUtTZRhl>dl(Gm0h~;5!S>4l0`nUtk=#>f=5G33jUwRhj zMl0MIt4N#EsMj1S{pH{Wq5oc6ABb5YHXRAH^k~AA$P|w~&j%5jCRIW c?Y)}r-r!86Ii@BpNWnb_l3eF5rWe*!wFeJg%I4}GvK;h=(QAO^4PmsfT#;E zc<|DU*e*0l(f|k$V5j#CtG}VA9MtWTu~L(x{L-CwtSdl8nVKrc(+In1?Af*J_{sTr zIe1@8+O1qzS*;fgR$`^|L&hJ!Hh!xY*#Egq+AGgp4C^qEi4lVV`U1*9QVf#IVN0w7 zp7q0W7v=v~98%Ug&=|1f&bD6$j??ngBfMB;WmbfAExmm3SK70BzZ#u!E-8TzEy@Fn zo43bQJ;Yd< 3rre6`0{^Ik3>MVXoH%3_*>U!Rq{(NvVjE_JPm=2rB}09&RvTc?X&n(D zJb#5PY&q6rPWEneE&yW1x`wm(58PJotX<3}){Ooh7JaZK{RZ~ P*yhKpK5~un}C(o#m8Uf;&OEzNk zj3Au*aP5kUe~FCKfDLI;l_cR!u2`Y2$h_Rm;`89nRbg728WGj4;DuMLF`>Zsrj?V( zr@Q;r-1kZ_LTEEJggHFOV3bZaB-CT0*Bomy-$*tpe(e_$app=BEi)WORA42lS=Gxs z_T08K(+H~mE%&>=Fxn1bMJ=0O*@1#$1&>}G;cge@fKr^p-CLK2KZ}H=Xc ;4n?m +F1F=lylr_ghTg2h;}Z%&vcG8{Mc&bNfrp$W{kJT_t~wi_i04%3V%s)Pa =^3$dT^eGHBb+a*!lOpOxke%}G3}7?zD3FlB4#D*2dVL=PPk6=|AeV6q05 zoP(4i=yWwbdR%N)t_+^E zkRppX1Kh>YZ(s-Jrx%WWCqbfEc0SNRVfu19#r>0Kjqhy8eQNBVODzaGjEL$Y;ZXqa z!4_K+5}MP)F5dahlRJm^^<(=ke6gb1K8LC*>9hPwK});)Qg_*hN>FhmT{$pe2H`{U zb&Kp3HRza9{!>M1v~=l7v(-9ARF8+PJa^*DUcnAZ{hMnq5Nz8p)D6jP|9ANw@8- ~lx{N-+~kPRb=3aXJ=uI3DvnJj0XrSLZ#@m4gC-B((}%xK^Xd#1^*P}CRc5q@$5 zMp&PA(cjET7TF>ZKS&cgDA%avt#~|KS8Mgl;9 d^;&=)=@KYS#w>X2 zuzvnXP(60>o(JkJPLdPyo^sax=|sRO;H6-|AxFgo>nR&f>F)GzsjY3_Xmf9=nS*8Q z#%Jxt4Urk*+dSEsL|9ooEut{K7N|$EYEHsT z*6vRXI2*5|+>j=b z*s$LR^$rfF*^dXdT&$`wFFd#t=b{Ks+BqYsoqb>dm#@EpG{e-srWX>xV;ZsC0Od8z zME5hhFCD~WBbLLK4|oZF)blWx?XH5JKicaXOR4 mqJcvu51q&J3NI;d;2Z7S@Q`-W6VGmEUIhben36U zBOX;D%2K>hNI<;S5zH3k$f0AMJi1_%3H*$^t37cm4PF2#rvoz87*T&iphKUS+|kxW z#)daD gNI_`iOh*B8 XAx-E z#^THoyVrx3pyUfsa=~LJ#?2%BF8K@>CoOW$Xuz-tF?ezSiXXbiy116(OG}#Q`Bg+t z=Kn0$$9P;GHsE|VGeX5#f3o#1ng@IZN?z1Y9ZrkM;G>Us BMV~=a9d_q8c19iKxX`xX%Iov6tP5$Px!R%#e)QtBVh *c*LQ52g&h^Cz&|f_kHOOTM~KeNTwhI{@#2!iYYf~!M!Y eHDwt!l{N0DRm`TR8Q7~7n0Fe8kD2% NN6@iK5;H!Ln?fr>{}c;`F9_& z#iw8|vGYgJ%o~?$eII3Zz**^~w$VRnxs*^4g1e|}GX@0kLi!!dJ?mr2og4Pggp0hx z?SiUJy+;QPsAzHgqyB90Rr&y2xkAjimC#bp^8D6t$phH4aKx)I(NE(4i1B2j->IJ_ z9tvw8yaPq$ltYs_F}LTHKuwVx_>Z4Mn&K8Z8HY#+`I3Qme}QYIQ-o`}j$3;m50? zmluJ0y^)%Qif0-Nbz)Xi<|{^K97* RkN9Zv+ =lnYApqdTaM2{#WQ0N3ikk?f+mpZ?TfP>Rr$#k8zsj z^{IcP79y)F6}pcXLOgvDe1Hhkm%{n(#iWz0)d$2^CiZ~(h8Eag9}@+g{`CJLRU8zS zKzFD7_Fm@f49H<|Q8Kyd`HwQ_`wMjxXi{F>!i32Q3EC983LpX$s?unFY72e}oV$yN z7=OTO!+c3zg9lS|S;@{bRlAvvXsHz&Q$Lbb!`-iocMlKU-Bu$sh`wUCJriv#tV9oR zrhgCX*c4N7jTFsWn64C5c0atA!8uF$uxn6Ww|!*~qXN>1-<{~3I@_4sgFYw}V_23F zyb(zo#0sskgjk;mhh6EV&I#Sld{S~DM=1lG=VT3xj}Z|b^5Vj2&$kUg-CRSX1te&t zhrmdJ@9*QhJ|j=dv69RGsXD|cTL*O$03dWd$whb}j%{{X!uE(kU*1>)7tRXQYfT^L z`>L)stxU QWD_d?rqt?=HmUoZuUzQXKpNWDW@k!LExjB6L1XkJ1W)cE@ zn(aZ{ZTv~hX}*Oe<}hB{I<$gq>^^Z0-86Dk8dh5p X^6a27>^k@AiZa+O>k)Iz@JOA>o zzcC&3JuU-m)nr};UI9_*z^l;fmXRy9Wj6SoVu(+X|0-MCQAYleT%dF~bkeGPEtt|v z$K8=VVReiO-Lak*C@YgbZM`@CGIqWyRP1 m&bXqI((L1Rkqq-kR)?ZzkX20=gvP=@*5%N1 zKb;*KGSW8xDBloPpnQr?Gt0N$xY^Uo^7izxPz#YECO(Ct6-+Rj>-)QdZhFB51|;_l zx&LUt*ZAjqYkcn7uQlD1g6IL|KVCih)EW=BL!aT;6f9Ot=K$sBUd?d8vwM1C6nJyM z+!~-L;BC<&3J$~^HFP^F>pkms*edm7`ZH+ZwXOdVRSgvX3e*$D@I0`(+T;wYVkgVc zety K6$>*{wP5V$&=?M>lrXR)Qyc(Sl9OT97+p4jY%CWmx#rhGhK mZc zRKa$)`Jquw9vxq5m`qXZzm??4?_nr`T!(L-08y`6qa*iG6`5&GR=LtAe|?H_8yen+ zne5YRK@Ic8CU8rExQlL_eav;i$DC9Gjd-#D9~pc4Ywc!sA2a!#ilj)9<`+q+s%>@} zrWny7hU5bzO)xj(`(y|1g3FA==Ob(AFBYApY?mK%z=3Xf{e=Pe1p{*~Aq*hukXTuK z6jQ){o?;oBC*Fl~FyMIa@JIO^dHqM_9vm9A#S!l5FNGe_{kiQ^1hlS;t#Vu5j=Eup zty9+9coSC~t(-BCd|KG$Pjq89^!-wL|(lSHt#5~gdYG9;wnp18bR2(fXzmamw!6xaANb)P4B_` zR^PUzfV7;Bq)%)@_@kG_4tH&_BhAWsj}OL{0q(2HEQV3xLtEo$%Xuyzb3RyimHM1a z8ul)>Y#G8y;JgP-av9AKdky^6y(b-57cs&%(8KxqCF M`j@{KC_N%+d))u5EIgF-rVh3zfigtrOSb-n=lm05k zpL=(o(7=3`M%n%ezg@oR09HU_Igl&)SC-jSgP-Vl=qj~}E$CXT-XMd>Z{}b3H2sXz zfWFax9joT@^W8)IgHJG6aqrdqP+3OT9`hU=kLTRoq=CLvS(|sZzsD}iR1TF;m ax2>{u-W(F9aW$68-#ctS{gH4jgsy*_aU?C%zv!k|6`9Yjw4o&^41ZU{l(MFa@TZCj(oz??R zXyL~y^#VqYr9#YNfm_o^$b6!>psv&`;X{#O`J2{K#;r?^GSkC8oH1^#AEQ}$fihIk z!Ub^3*oByeVTi$e&WG&Id%3S|aEwJsg;_2$VTYzpuZ!3@ydy-j1oa?`#r}{MvTeP2 zYc>u!3x@0WH|ebD+D#Zv(A8t>YTiSd^VPIe5)aqD^c>1uMYR&ZwU*|WpZHFtrwECB zUcg_VHh&oSmN0_(ZMSM!(5|ca3wbqg8y^#}!luH%lRh7liYkcN28q>F7q5R@q}!%c z-Rp@&cJtUNnFnY1yyPe>5vW72L!%sQmYHqWbt=>1>n)Fb!+5{tP(X5NcHgZU-b6m6 z8ZbaNw{|ZF2w+YcNP}#l0NPa+v>oAihH@=&+O_WwOp=%Kbf;cwTi3 zBkdHddHo!hlqapBes``;U&43jKLO(thM0!>_2}d4asTdBmiy~xS_QXX=%BRS3Eow2 zcuDkn1DxYVQS|amkE3`xN(6Ctb#xBsZBI}88^5SNE4c`dzk{2EZHcOH4T&@9XVS{* z%P?&*R<%0K(tm}jqa2c _%m{bk!B5Q+qifsuaruG^bz09 )lBV8HRogL+XJ B^?T(c*nZe}0sBX 3$tpK8^P=TRu@uCe{^#{&WwQ3Rz&-{K zpsRl&aBdkuFj?KSxK2PuAuf&i6jYU$z+r9vDfdizpl14{X@5exG W9$iCUO7DcC|BH1Yz+KygfH!HL znRh=dyGA0u3!=KJg1k+f9Ty8X&%9|$&O}Vw#SjJHrn}-MC`**JcfD4(+~>&66?fXj zqd*Q1!uz(zwpM?B{B|M{Dts QnPwP-#RwFE_1Z3u5kKxH@3F8D*C9 zhTY}5(djEf$zCuf$vA-5b54k`a&O*9f{4}+ozYZV(04<<29+4MxMabh0rw+;@FV_K z7ZtVr8p3Ys`hgtm=$+?V?uo%Sdtc=0wZ@%TUZP$d&RgC0R;&wGh2{lch9?%}$Smj| zc>aMVm8*U^C)F}a4u9?ARLN(N^px%8GGXL f@CW+qXVcAxNT4r5I~;EME;E gjeH%?b8&2@X{F%_>Zw*1 z=xqhXE5N&LjwEzLUdLJ7%$7r6^k<0w=41(z?SA2xRbYpX2;O`VHJ)J3eag=ohc$`U zSIE6GrwAn5@}&?Tmici|u!^!Q@pfC8XMUZ0K}cv~ga63u;^v8*@HIY#aG)9aUS3*B z@WHnBa@$)afB>1p2)HeCXSvwhXu$NZ(_hh?x0)pd)LGTXa90z~rUFKAeCpsT53-Tu z3Zrd61KTJL8EoMc&pGR*#A6g1@3Z#)fXA<(F?cm& oSp##m+-O~1vt|wAa4x|uj-c@Rzg>= z23S7H9@13!wPr}NNTYxM{sZPDeS4yP>tvk|tosBW`N1tU`fzK76Ean?dq>Tma{#}u z&jqc`qY)SGDxsts(_+G}5jg_u5TBs$WV5f0g>uilHiP5!TovOg4BI(Z>$TLfaop_0 zLnh~=kqz3|Wp* ;jhHvtl&|2RpakrJB)1gw$$6# z9I0WcPrZx2j$Ssq&zTggIq!MndFEeKQ@`DBtGgJOr5(D=DD{hd6kEszOu(JH7f;_E z3i@rSEM6N!cqqt>cDJ>vqZobWyop= G1Z+KRN;2rdY)O2h$WQ1v-fhrkF>(;7|D!haI)q|518< zw2EbUau-z|Z;3LHp9kzfYjtW~@&ojXu`*yyK!I+CK?G$Zdd3tC^yDx+Z}K#Z#uv&6 z8rvOFjBa`UY5ZZ74;-IC`9s}mfH4ii#U4`<0Oyt!S4D&IUyQpU$4 zZ!4Dp zr?pxLaZhL+IRH!c>6EAmoo_n!35$xTFO^$15^}##5{m>%N6E63Cy1#^*(+`~UEs@R zITUDGnMc=N6zsPFJo|Gf*Ri$-ZCXk=2&jMR9O-b`C;i)?I6s_@L_hp)ZRoTW>F>sF zm9wHyMZV!qG#4_xzmutvm&z3i=n%MnuhMK*nn?1AWxUUsn4j{|?z}+aZ1bHDCwQTS z#yG~6Eh5dC(dQefw8HvIxi?NPb-Oww$mm;a*yE+6J%NphTO~$0JGAEP9@dr)X};?m zubpxv$kyHj-JG`$wthct?SeYRos{RfJrCIZ6W^UzRE|1a=t(`|t4W-R4#){>IDGIU z)i(0-rOq6g$2;3OYoPY=)-1V6#v?V$w&aI$pf tl;f< z=#IBk5y~W|7!S)}pS5A+W D(&%;9a;s6`SyvY#m~!0dt(a2%-|6St-4* zZ*zP5gE6|o@d8Sz@(1TD*fA98(kQM2*O)OP2bB5@BXOU=$kJi+!ytRm^F7l>;IqEx zXWZv5z($_LimtI_ljFOy)Mm!O;;=VDvOSOFY=&u1D %e(4kvHd-YFFpoO#^#L8^AiJ0M6T3 zeTT?=P5e =1Z_ii(@lf*+~#TDK}n@1^bh?xLg=_3zCXs!&UTxV85 zX`|9RwHi2YkQyO2x&n$Y<9O$;xqEZ(vqcL<`Hf;dM>Yp|uD+By4e)+Ii?vtCLMPD& z|CAlbF2HEDmBelt39w5vELmUD>KdD1jfDf>U@BvBDlXh?lEO(hgZm6GLA&K?uNJ@} zPw$t{C=!&gx0eMesZ~lYr?ycs7S*?J59zp%m_a9R?rinAi(vFt_7CP`MD1y L7wT~NP3Yb;NkymQep*9axvy+Hvc#K&DeUK`zUduL@YZVt`co@uj2&3jZa zJ+JB1jnk&2rd#{>9R))%S8N&@7s8ia6NU|;m&@O;{92eoiVkr76TrS7BZ0xl&oK}8 z{pa6xAe$vbUHa|1d#a3(DMk>(l=o5b-#|TwMFB|dn8;(;u&I5=LZ}C3HUOB+b4dC^ zzv;-n|GYCQW2SafPl71=04o$`2{jr$n)3^A?>X04Y!n`> Ne>cDXHqOFOu+#eIX;d0w7u(sTNZ|<^b`z$#;rwTF?c0 z5QXQ+rf{IeWHp@I`OhJ0fByy>?s>}nFGTDInXv+8@@aTp``SC?6>F0)Y06*k%$A|h zlk6N!Elvc^9xO9Jk_zedY`9k`R-@4=#6dO#`|i 4vGvqLIt%lRL8nZ>d< zVtm#z4=$S&KwD!YR}B7=s$hqYLgn%UeLmQzKfJ*x8tPsehW$E!KSeXfbZy-wN&8O? z&4 e^ &o3S{8eqVb^rbfUTX&ZXqm>gH zZAp(qos+HF4P;Ms!)k28PLF&{$J+wSd*@+7Iui!to}d&`u-k}wdigfiFDHaDaC-GG zKTLQ&8P1#N-qYZH)jzcZSeaKZtY)#<#Kkt$GB=>2Oqrw;YX2x67~<_VXN9j-K8@F4 ze*8A-yyjk59eVLA7yL4+dj#sy1(AUETFUoYM^ Hs z2+YC3F2HP)xsR1qfEwze3q@2`Ir&<0X4voSRSaj*#-UwcO#`(t_gST;F+w{uscm8x z!=o`)oOJ&c!VSh1+^4VlNe+40raXG+_Ft>cSm8>Uk$6uZ4m(*vW#e8t|2O$}=T?|N zT0mQDzZS#c`WuKsjqt^gk}TuFNdN~`;%p6us2+A~cMtuWdgtux-liyUu}Ap}e)Tpr z%7lk&2NI8B!+-npd$m2ZGjVRI= KdCBqe 4LMZ!6yyPl$CX^P}(%@co(pUhsS{AnFftAsZS+gXbQ?XI)VKX7@tzSL*P0H-IV4(EH=S z_h=ydJk)m!7>9_btz#*{MP0%NKwbkph1{1*kC-a{H+kWIPqY7pib~-(;-HeC%`U+% z$MO3YQ7r$9IvaYe9c8ZeGtNY>;l{-^xh~J%0&Q(?kEizmm~1vAs~hK{nR0**f(hV2 z7UwTDl7c1`4f0*1ieFrM9HVbom#~Utc|a8Im#Pha>OmD#H{vu~lbPD&xf^e+tR0a? zf(9SGo7vZ)$yca$u0cl5q5&NJK!!P;V*(2$Y6iod?VZ@`0HF23g e@7tf7$kjjd_-&f z2k60*zXgeqYt+Cvq4xNQruYT5e};Cc!a=B1nHe8{vC%66ru_uh!IhG{P;S)vilTVB zt1fg>WlKuw=<=UrjFAnhVy_>-G2x7&t6OGs+0#<-iUPCaq4cRx!y&vLaLs}{!l_6k zIDsV&s@?`atIYG>-KT-P&T5#p6LA^!2EDdEbUtM=2mIPELnJHj=@u&E_ZcA}q9#6Z zt6UosmghW~5FeMh`CX59IW_SQUB&@S1I0t!5awf^*b zfZ6ksBooKwT?vlNll z!@9(#*8M6nnche(?t=#)b%5v-uri~(>^BvYV+@mmf9iMePlmfK)3<|enCM)G*Cakd zPsYTLtwJ1%YYC=y)1H6p`B4+VOXTu?FqnB1E6+a5 QXr@LdQoo@NO(<+>Hz|)orfHKnqJosMp%jBi6E~2K36FEdh7yV zn}WCa%4QvMzOh)lqrgt&G1&kClbwbD9f9)rJ4MW@v^@Mo `)bQ-(qqI(bFH% z?!=|(Bp)I=>yulZikYzfT}kc99{t7O@CZ`hsBp3*{6*yU#Ti#&pH^Ob$KJFisfTa$ z?^-}-KJ|l1b&GuByMtd0e^Hn0t~pC74b8f2ml3QSO;3_LhcQ1{a&G=6NvY}R8uBsc zZi=kQ0!5km2- 7%W_spqZ)xfeHdO( z=~*`>?-=oVA(4wfpmT9p0b9zWj?d{3T7`abEFYxS8xXTs2S1xsUVA|P(mo#Me${+P zVFdXef_%RGB@VX$=7dhLzHUc6ez!}5PmIsFEvJ^0=!s@yQ(5p6asCW!CJe8+i*f<< z_lOdpNM+U6@vsl@OQ&brBJ*SKs0{h{3+K~*pKlZoHSxiJ tFmRF7Ejw@{hR+JmXOaSJl(GEamkS+I^K%RZgMWQ7mmD zVVVG(i_2aXhij(JVl6A}TN5QJd=es;7v#K_Mr~IVK%@jJPa*+Gj59%s1#P1I6Ve4# zun)>JOtXHY+|ItjwdZ-OsA9ahtl&8Qb_GtjkNektC#s&hX;l?1b~7A_QOXWQf%{$t z{?O*r%8_=zI|s@Q3@2p&rRsqS1q4qAb>jo6`vW?-PmL5zRxz{S@*boMJR{K8P6>w{ zyam0oPBrLAU=%%vx3$pJt~87@SikaGx+~!poz26KyX)LzADx|@{Z<)!_x?~=*0Nz% zHrhWc8xh)8(_u?qJ2q@|#_eY39;*9&Phs6m{prD<{_`i^m3DjO7w1_3R?#>fd_D@j zQ~(#jjtg$ZU!JKaZp;HC@T1P|Jz3{x0D@YFYU9fJBini2FeLZ;2*k{LG{}}8u+#bb z9Q#R&3xj0)ch?b5?z@+BSkWF)>J!NPAXtqLKBCCjaQ-*sWVX@G$;7H|;yyZ&f+5eJ zYjhXMBxqSI=q50o&yTDkrLOT+xs$-|9CmGqM emxYUrjw7G8Y>riF?AES+=|<4?$2o__Fj^NaDSFhIpG*3v zllBz+ee#z1gcwY9qCgIRR1)l$s7v7au$XiDhY23bns|F5IH-h~fk RK1+f|Ku&mqhVq#pM{2oaNsQ&w>n zT1I!+VndfwLs#F)K0qNvUa*>4;q*ZveRjb8!U3cQuIKCrb0y9}dLR42djD3c{6h&9 zdcmN`worMq0qkVY{dU5m=E)4mJ PBax@ P$!zqzJW- z-yY4N#65z20yV_V$6fXVTIfpHsy@Me6IfG;zLTf{^ZjOmNm|cAJjx7tsFQuJ5ZVjk zOHUofD6EZl*pTc4+xN9Q7UcsC#UDCTof2iZrg3q~emfJ1c0Y4%+q-Y=CZ+UoJ^p8! zamb Gk68^P zJ{oBc3YyXtU!^|V%X*s8uvG7ui(u}+m;@8HwLw2)ZC#NpJCQ}+uoX-k9QG;X$YC4~ zOMnyif1lSX^}nP({`ZYYkP2BKiSAKRjSC};2PF5~>l}b%@*C^;(~4Ya@am!_n+mL< zE_E*MQG2O2G74A?nJ{r6p~7y@uG9)z-VP2JXHY*o#1?X?$ddp58bN3$jIJbw0KZYx zU@Ph01?1Fx)k*+tKno-zbnJ{IV-ls2<`d<8zK!_p34IP?$MY~k{-u_%C4yKyHno2x zHykPk!jPAC*rg}5ByRPy{Ub!jc>_+5kN%Uk&+uMXfQa2x>B<6#ioeBQO-aZ;_W~}_ z@$IHY2*Ss8cQ8bj_FTFtDT&CsRBP&brfLpwTk!O;E>fNRG(o_BKP6Iz2exS*I?k_f zJe7(T_`qd1(!XV2EFJO%!T|0_4yp;jG{QrljIwGBDmd+b9C%~3vc&ig_IAj%D&R6Y zBFyS$$WD!JqLD4!Ij&30FG1tqP69NkWR%koDL>#G`dx+u4XC^5(A)0X+ws_8dUUH! z?d$809Su`sW!iZp2Hy+MLhJz10d?j-6EvvE97rS^G7+L3i0gvO3!bM5gAhg_(55zM zLvC4H1H9XRl130)zF_WM_MsASi5ldEzR{$Hu4x9hUkbL9$;+mc -mf7@N_~a zL#Vf_2pntpm^G1Qabm_{( oTHLR6H8CXWB1f;Eg^W? J8~IjgDjF36^wfgx2d_!=DD?-y8K(AJvl5*A3zpQ9G@Q0%Osb>CdI%R z71MG78wP6FVeapc?9+|E3^)_t#88?1iSC@U;-2EY*NW=nle+H)cM=_WCKeMr&?pHq z@juJfqJ*7gZ8Z8F>lqKeShDqiCoEt<2d;XyIQ;RKLYhyHWQ%mz^^=2nQd&c*c~lzV zBmXLz--u-2sqA- -rXNPwvie1>w9y;HNm`<$?t+`@%`8T5jU$4d9lz~ zqhI?Um0_C`b&MS_Vv6?4B-X?Z9kJx>tLyA8E|#d Ej9no%K zq9Die;)|TIG=)8|^cRU8Uuw=}m)<8q-6C;d2lS?d{Un#)W>;c1;>xIFsUV(15jBmj z>#|52DnEJ2bPIVZe_^j&-$>}V_~tPK1PHwSt##t*e^y9VfwP38l?ie3^=4u!jLM5o zg*kYak0 TI3 HI2d9}k7!S Qv$Z7ck0&4ZB?L9; z^>fsTon+`*`n%{?swrkbUbb%_;{Vw2{L9erUwEVP<-5Z!c4?$6H@*%VN~ur|LYWXh zj 3v=Z86((# zRpr;_!vJ^J#2QRgj( 47BkkB8x{|yX!n5hIZ z=!b1R%Rp!*D)cf4?k29bd8fk>d1Q#bWp#Rua&dJJJhXVuq85I(+^+!M6bxZWAXw$8 zYaDdlK6>^oS2px^Y;MTv)^e?U#WlN~kMPQY1%0qoqHQZKLjl%+iF$NEkZYKXkGN?V zxB4gBNbR+G8w}>03I+9!qN6BvM)~TYuCS||1j{cq8_zfaw*g1-R0=PfH8%McbXD!M z$uq~5dH|=xE`Ac*@2q`0F=3yP 2^v zt^0>ec3!AZWKsy|7U*}Gfz{4L{J0LNOwi9a>bQt+@u?jD3Hg0A`2Xno@_4Aiw*L}I z3Q;7>D6%AkvYVl-S))kS49Omiea12>$uby1wz4L|ShJ1YSYoVU?E8|j(=dkL@x0Ib zzR&aPdH*_}IiGXp-1l{F*Yf>dm%;AN!?FjpcdO!13f>gUWqE`)>VU-igj;)LA>dUk z4(%W64DYb|{F5JKIjrvrQDH=E-m7Ylyh}jm@cNRjaS(K+?B@n(*}%8U#i}+w52L;> zMQ2}_9OlQ4hS;?#??E9%n-Ff#fsxhzXbG}Lhh5bTUQlH>>`odSHuXh#=pt#ntoxos z%HhlPXUnK^-{w}{9d6C{3 JM10I3HZSGdwgpvSm`<$P zP;)iLZb+_VI`VCO!PM?xzB_j~v-^>jRhCD4!LqwH{R}nUPOWAHrq#xHN87zp@q>0T zUWKsCaIjp|09J$|iW&|Uk#9{03U{N?#@Ue*$$v^8AP6e)2TqtYU(e-s|BWvoj6fl{ z7{evMw~TU~MiZF0ee7X`oOo_q7@t^K7N{)(k-AkHrZ5AMb-uqcLI?8ORGzrSx)}&3 zFreG0XGynig2s1dt_NGkW4Tm+f8v?$IhRfe?EE6r`g|TaxEE7$^fR4jNOGm}>A=%i zW#*}L$mg@SYjT@9jaKHG#L^HFyh1s=<%a4;DY^!B9Q$(_@x(_K`@i11ym398WgpEG z1&0ST+pm9x9HdKnbTmN@t{$^?S_e42K5GwaDdarmgb6aB4I^<+8nBI$)GKXwH}TY= zi?fIO+e8o70rbsU>?BfxVND#2^X})_gSai+-uEdc_Vi^!DN}S? 0`rG1`7=vbdbVm9r#p9?aS+u+^Dq-?6o zo?kGKQ=4S%tWqL>2}bn|XX$YZ*%@9-jm1gNL(`fk3#P2NcHTm;xi~HGWex-XFKt3v z7FGAshtB%hJBco2SW;e^`n9^{h}v%L@a&5d<%xEsXwTb`xx-=FI}e>-3GhN }wq zwY6Blac7LZbG^*M;fKnbV*ctDT%(w`u5&t&X1l}axEme~x8Y$58Qr3=qGWgHaD+!k zIJ->Swlc?Zd4uIQQP24jJ+=;v0LXGPymTq2YKh$=+k6FWjDLq{X2bU7a!!Xve4pk7 z+Y^KfMF_$=9K#&q?-^Ixhhy2LHy?}(;@MOR71&w$CoC7v#(K$lznNh6VZl1RE2J+6 zN%ZpSvH7irCwwgdS Ze=fl#iL{?=zPsNbG&1Tkuh=VYTYdD1PSFD%RV1F z%j?P;F9FY}C4B)Ow0f#ARxW8yqWp95ScMPR;5~-@q;i|^W`9^ww4CkM7gF?N#q -U&JVl!Lmk5TG8 zr}MhL1?Kay??zm_)+t=~`^MC%E|9hES?*|iSIio|B2jR&?+(7&m+pyZpu3e)>*?Uw z#3)II+6}wS`_+;}KFDk+A8p;0yA~RAG)Rkg3#xh+FBh|(N(nnQR-^BhjNPU_A9VjS zlOS+OIdxiERwvRssQ9-pN@*Q~ VRtddy9Gc|8CcPE5Az{ z_f>~@TpTLJ=MT7jsBz>8v!ppWzH)a(!=anXnSDSHhE14;p98wjYUZ+vpocZAQ3a_W z@I+uB|Em7F%`<@>hTghyy#w>62zD|%gq>{<2N~N?ZT(?@VzhPIO-UiqvPwDktCi+E zH{AK55%xbqIr-=4b3Z0t8Ma=;Z&rn0^r&ROq&Y^%3Jc#l5uKIYeX9_isB?4F-}qHO zrU(won#f@m<`Ro-8z#G{t@o?^sl#b(ZriMqX77c*Fl$@H5BhscdP;nZMdK3;Q$s67 zOIeOyJ|J+z@ABg46rA>Oo?;fIt8a9~;{R6wQ?K3x4ptSk->*FD)+KJ?^}|KEQdASm z_Dc^Kj>}Z?m#E~OkT#eu*`V_?tig%`dK?DQsa9;e14jiBfppQ@FR#+`%dakOCWdoC zn-lJ{i>){b8A2kzTVT+XaObPrpQ867oz0BO(f2CHME-X|G>KCc+%rS}IC8&e9Z(aA z`W ^~nC=n|0@oj*eW?ApY*^o&Bx?Dh~mXcCgE3Z`-oA!@?y-fACzK)lw zvis_2>Tj{38-hd6r`?Djw_2(;9zO$m`nG=hN)VTna!kF>gVz#2H9e9!*?$i#&iQ)N zd_5#wr9P}&@k^?~MByAHEF_FFS4u_%;?*4`-VJ25IfpND }KW!5T~G}}OH zg^B u>74YZpE>-TUasJal9BUS~pxp7(J|(YJC|;JXDu^$bZor*Yoyu@w;w zW>f_6z_>#6Qh|8Fuh9?rtnB1~!~QN(bhg6m+wX^(og8*Y&A35<4ln+`?ot!KGJLs) zw^dHp>}FY;G5LQ#3dr#swHZ)f=-Q-u`UMe-B;q;0tc-uG#x7u9=|(vj@picUW03## zB|s1-V{n;jG+0R|%8AkUrs;`r{_EbqU#h98?kN{*!Jzlj|M9o~T A+5u@3ztrlW@_)6(iSgt+ic4`$|JM_%%;yHE+eLdL2H*ed*Z*y$aZ~@g zr#$1gxc{pXCi(Jk;Q(^9iCSxnj)Y}iF+SSI2k3go<}NOt)ZW$ff$KgLbbj_oKe353 z2&2c2$KFK dOp5-~Lzpm` zpNcv<$8aDD<+n}h#i~yBStd GV`e*$QVzKrTi<-7Mss8JX3=}a zT#3tR25c6}F`+RV+2Cctp(}&<=O5~2B3m(WaHJV|S(1T&V_eWKB5nA^@AZIVGAuTO zGb_mu7q1W3*?-EGx|<0#%|IW%#QF2n0Q?-ROCh4lOX}fhFwKP>lRE@$?Y^{5xb}GW zJFor!e|T5Foy+$@QUeuy9)vZRBBKY^m+tOS%O7ggN4xLE;!t%IqN^~P7kN|o^nF 282-;PE(b+FVsy{XH3{rj8^m6dpu4#aN8VN4I?V!r*Q zkjpvo>1;5uFo5Ey7a<0H!D&e6Yhv!y>8ltND#9WjZM<+b?C4TRFMi`#KC4KnC>k&B z4B6LLQnvc
7odKdO2}|ru-83!rIk$8s6Vw-QurO42w7Y|Y z9J$FYh@(cxqAV=S#}OMcPzTPTS?>>BB+k11) #UtIq z!QF%C5e>7xwI;`FHOL381{ 0|Ed+ZGdg+Xc`!u_kwMI`q%GCd9Sjy`|F%3n=vNhW zkLLc$_fm7C@>A`t$*a_TsM1begwQc%Js`k$n%;8Q7^q;X4*7Jn4LN>Y)q1Z$oQwEU z-E{hQ;>Dxsu&%4qA#_PV!Qta27M6~I7CT&h aqE3D2O~9vb lIv;nEz&2zcJ9qWgons zMcQqjd0|Ug^X*SVtI8~CEOQUT7)+_D-wU!_Xixefk!b7wJ7pcdxRbo7VCM@|)|MMT zi8*^tBL0AXc{Z!4NMq+hEa@!v8-L*gj<%O+#Jn4J_A2TSzV&Cg@0f4J#IHgHp$v7N zHmf3!su$9S1$gl9;?4pH1h4Fqa(n%L6WgiFK;w>fPRfB-&2p{Fa4pK pvqdP9()FN zOr8wz{cSoaSNS{jk33((HCw61KYf*)rx7fx==c{i( kYGj`EH@p6vkJKDpqDi zJfckte8>-J3J&jpoq&lml+$UpAklx49DDgB^*Rh_fW6$B8)}sDIPJ5v^Dy`1(z&y( z_Am!&Q!=q)5;oFl;pt20Pn8 ClqO{rT!1C?iE%2)K|KnW){mB~8cCKjM z4dtip>fOYVEo`y*fwBg%I4uaczd-gEtPOC-EmtIS!<^=r6-Ghv$FpJMs+I$)-1wJb z61?w7M099!vF&BkhVzW<{`@?sTGi2vi$23MCTg(A!)3o3p?IA140G)Y_;??$wgqll3Z12E N$!L$}v|0`4xff zK |R-+PDN#xvl09e$Zz_4>0era6x%<>L1TmA4J~*hh*E&9 zPDdiCISi8O>F92((x26bX~gU3!?JHe=)g THSV*s)C6U^1!aVAaxeDs;;o%FAt${KZchyw1r&sn~hNv9#-Qtjd zxr-k=2J=d?%tqt-uN-c)mfux58}KTWTcIPXqtuuwOzdE}+%?S1+gkXjg>k-@ebjqN z1$O<2kZ#H@OP+pmoU4a$kORhLQb2<`o?pY7qYzGL;D$I0dIN6Vy^i1jQma>ufr8ZK z S;Txl)a9^xBmK0W%cMN`qT=-S1d}I|V#DKyAPP|b&+vt6 z1k^JPv1j6Q7^;vWxHmt$4FVEYA2Gxa8+6z01jlk(Lw8b~$+;YE5!?!MN94NWYN&UJ z{Md8Vcgen{kN(oFIKfO$x2Z#U8u_O-mYUuIEA5Et@o6WEcY+C5gFy{J^~&FLKgZSI zsH!je$aB3xlj 8se9ic_F# z6pg3{so2bRM@D~Q1Se>IRybwLUfyDV>0vG6a^3R#)Xat}0JBD5xCF$twMtluWUzPo z%5o|@U=^hzHbR}zt2)8TL7FS0cXf)^NjV^~S7UM*CD^Yd$3(L5Rn!ul$(@g&X sPOmfR3M5s4Y|_vSC+yjGUs}K+zLva3c`awV69T6aCY<25dj#TG`R!hBf@>% ziOuaVjEI+2q!ux-;=GXFGE4A8ClYc{#hZ5+&hmVdJ (sc fY~Nv z4K=wo4vX;{|7|f;_YgSSYF?bw-z^l4nF>{m<(bpe^X-Eb`i(pK0!M_5`SL^K73KJO z68w1*icV?di~1BVYG(4}pzL03Nw9fz*vN83t=OQ%MWNe^&DhwS2TI3NV2v!PMYPE) z8$Iz-8qg-K2fd-Xu=H+P#?z^QGrY!zIvRQJpjMg}eTg*8#Md!f!59|hzO^HWYkH@U z(h)ty6j4r`ZGpyIPc!x$N)@9bhoAA>)C`t4O*`7j$=L=@UGz~2(xzhE^S9g}CTslA z4(G?cwEcwbNHC02DpD2ac*c()U2wiv51XEW@LQ`~Ja5sPWiAL-uPC<4fdl~C#g5dL ziBHjWyEHEB>_spfWpQxd>80>-g&mTwe3rh}$q$9nvuaX?d<8<)e1)8a61Y>x(Z05V zRay3S2f;2swt_D>=^r9B?_}Z^+`!OQ%<~Hk%ChDLWb#_IYuatZvX&)5fHxiGBDaZ& zcXNQu_P8a-AJ62lsq&Ls=?;ngVu0r=5&E#w7u@no%VI0$s375ZKkayVy {O$jSd2#nKz6M2JHGWH&@^fvsIct1C1jQK=d1UQTD`T_so1HNPRk>A*ODon zJ2vTa+IDh=b;9ssbV@!s>pL<#np7_^Pj@4Wt^i0B_-9u$oBH9#m!Xu6SzwbGXOmkx zTGk67OxkX=>-oFOHPGqyoY726sja6Gy<>jR7r)jZ5 rCjQE4ehUSO`4my?(RL*sQBV=bb(HYF4?nkj)EAE(5V*R!-Q>+Q z_dCbxlD3X#4NxPRND;fr_W69 vA=c8g z+-X_(lNE9pyeNwwL3{yCEbI9^-5R3ztK08#-J_#=n!NwhZf&;j+ZFUF!UBR9zTN&D z8k&r8AI!5ToBeuWVly7>yo05iN3Nrj=lBq1aiJ>BA>s5WI6J;0|L$j;y!-IE+>!?L zx=-^$Pd-nm?p{Oy4uhMw>afHfT#&Nd6jWbr3a)EweqY`+=H~Qs>mpE??pe4q!f8A7 z1@zPU dI#H?9Pky*B0R9|51TTQk3+n+|qHH#xTQ&9PSyEOe z7|_o;c59&nGCcq?Y@}2j^vUdAuT}+gMCSVMu|RiDAEEUV-KBe0VcNDw`bWdXDn`Ph zS@xJW|A~Qttw>{7{}6Oia%!x5cD~1G+@79tr(Mf5Sh6zxFH>z;h5Ff45x;|S=NPzJ zt^%LZP3*k!n%-gIL{;BTn%K#%9IqsLh>(`5o-y622()uK-B^R;_WLRFKGF1!d_{H9 zYkKfv4urD&n%-i;tByRL;;O@NH=DH?FLEbsl&=d8Gy}I4324dK?Ze{uS|@*Cy9Cz( z`*mvF?swPkU!jFG&f6z5t-E?1OYX*dw@NPTHFj0fJbO(axIhb3aerMcuUHW$C|Orh zb}Em&7wJ`#(OK@r`O`Tjo!mq9XCF|ty5U3B6CN%>CKW@-RF_VMq#eFVN!s|%ib0y~ z2i#jxm5QkYm>^AhnMKy8_|?+tF0P!mGAmD)&h16OV%mF6Kefo3&?T~wyx%+VpcnH} zSWr%WtoNgc=|Y}4(cv}y-D-RhkXL!VkR^@OynUiLcjw@zhWH`A@}nxvW5~L-2T5a} zOsBvBhqIt{52BV5R{+JHvuK3>iCiI8zg6t=g(>UsQuQQX#GTmk(2z= bEw6dQED0R#%~S z2k$JAgNhHAM-uZOCFP~ @@ZSuJ zq>w=QJjZnE=loX+5JX3O4tO`$uSfl<)u$;f{kPN{$jH6<1nyTV7Ac>n0AG_zT7t%% zZ1}y0ff=d(d)mKx#D+hQehg$tqi8=n_hF;Fx<;{{GgubQ?7ZyHIKU?0O>l@1RR^Co zqxw{C@OdZ^rm1wLHlyya4I8^ojE=ry;+tX0beMoscmeLR*OjazI=l9VbHD#|f%#2Y zHL3RY(@}e2#f81$o-vF2qi6hVsicEM>vWzr+vV!`@M|!8C*46tYbG62CXb1y?N_v8 z_+)CQFS^P&%IB9|B-R}ty(Z5Y-;-B3n-Aik07cmbM6B=1J{urB7tGPpnmoE3)!P zeQ<*?i&%%w&(e5myz?OLI#pMxVcLo#`XQC0O5t7tQ-)zwS3r`|K46O2h)J6usr#w^ zEStB*FsuUj`3em7de=4#1PZ#uu#OS5X15jW{Gdb1OHlXyOo%88T|c(*q= z{9=`a8et`T4fiFH=L c~CWtN0U4#`%Al^^ok(D;32!*M*W#;?Stzw-(IhY_gYDONLdPFjBE)P zcegj);+NN1Eq`*o7N1f5-63)GRwVe#SFuYJDI3mDcN~Q?58mkV^S&-{6njnt%MUfY zF-Lp@V-ra#PT#_a7EdAn?m7j2z51bK)y2X`Cq*4%#Q#G+nMd@r1=WYWC9OIwu~#wb zbk`brqgY|3Y*+WJY)xOPaD)8T9QwtEF`#4Wn@+=eOnnx81fS6`urZah1c} o!Nal-W8>=OGm#S6( NxO_XmC@+$RBi Ni3%P781ECmaY1JKfnDh zA@HDSSHdgu4+DFz@|4)$V}cN7uORX_zbj7kcjl*xUuS}}J&Sl-S367VxW3+tA|~=o z=RINFu~TR%mog2?(zUGrrs&^~Bi$79X^#_kk+9#v-Qs7FGa3$O35V;Mih4KDdz#y$ z22|cX0p} >9W=WKusk7+WJsfK zv|u$E $khek7r&O(qPL>TtZ&(i2=$ z4CHNsA8)3VSN-N(q^DC1%K3mgm@c_S{Z052+Cvrid&`a({5J*`8B>PT3mS?Py0a{I zP1&C_pGvIRO1)U_G$C)@5>`GHO3cK}BN&W|Kli?iquTKv00Q-+)S45sJP8-(H>vU@ zn18BC37Kt0(yo^(H8>>mw68ELd#^1lZsuS5J=`n6ZEP>rV@CJ2EU)%WY2mXro3nm* z+P+;@mPZg?(1QtC6n fz%0v<8ma+%*oM+1}Orsnc!!Y%m 04 zNZKugExKY^0Lbrx9Ed~|Izi?}hq9|UO_E+mgv#T5jdGi%Dz)#2<0`g>V-}u1a=Fn* z*3^FIeH%9mm1Q%zh%6P8;KwC{wDTJ-Vo `H~@ z-`;-?)QMeYHq7hwdi%W&)xf5;g;gAm<2FLiN( W-)#J a#@LUuYOXa zhxP03Z4EPwM^2JD@T3mh@ZC$%gSv1xGhT&rE?ec=Q3?9J_+GoMpxV7qVk8^H&<@Ta zIYAeLah{>def?7wk}wBUK*N~$*j~BR;ZUUAjA7$)+H`AHn|OE~eSPQC02C+F0hQx7 zVS-39Y(Gs_kB|ucChF{FF`eXg?a&&6miB4pmoo%$HAs{jPNd|f{bkI^Xfr+iLmfKR zTrEP#Q8ebpOy|nyQ7JUMSo?H-#y#FtiRUwWFe{poioT)!mtcd6H#H-jwxlvr{ncE{ zx5TCQwfQ{axiP0uktFN4YUH^Wby~V8xzoav`J}d48akI5b%WC>7h8<&HF{J&65)gQ zlj2nEsBVzk7b%>?*I&0k1_Rc 9!x{=MYP`US}&T(UBGc#BiJe8dqVDZ% 8s!5JOmKo@7Eb+y>I+HkK&|-CA^u*dm{c``|vKewp1Bjy->mW zK?PI>$Kj89XL1k9Jok=B)3D 5@wsv%Rq%y_)%wUXP5(E zi9DG5ZMS0b6=sBw^({1rjwbA*9lPfI&w$nI8!=v^BtwjPal0)ix!^xotllTFyBiy< zUr8Ty*2-V^lh4=WDNUgRr%!m34~sGsPRH;l*T?B~#*AO1yWIAf`X%PNpw_8d3BDTi zznBmC>f2IYY5iddZ01f4vpk$pJk?je)bZiGa~Js*36G87G^c7`(yqKbtqJyhT`^wG zq~ zj(4$rLB{5XtbFHn5xHlC^ir^Q-9G!nX+sD3akAZRz7RW_`-H@!%k{oHi+lpInrX2g zT 59aZH%pNSH^J^OTou`U0lyL!NJDJ&a pYw1bX(uVJ>}PM@@al|ds3hKk0f2ptPaN`{;=&U9Jc(!oX7iH zdaVU=mq&v4Rx18-o-zpkW8h_W?p >7=`{A7acN=_4 zmtXbYOqlnhQif-Q%P(WOW8&SuK|a$=-`N63^%hbe_-NYmYYgj*%P7aNdGzIi@&`Uk z2RRU~9n*YS(fOG8`F=yAam;{8D3zlG@{hu;bjTy*lii(+oyyRd;klCf0qE_~8&yjY zV*4EzYkf-JTI9(nv^L{g)PKy-oAX0U@y!=3(6?rxqKD#<+fP5l(K^v%w{5Q|_|S$v zxt9oJ@+XDb-9wtUmd>8FwY><6c4IWgeUB*QFWNFNhD%9B58j#RnwIJQ5n7PXQwbzX ztC+EDz2M_K3{dMB#TgLe9a;z+UbU(B4Xp%SqX3KTm&LL_R6^(lv(M%h-1M(032f|S z y1YrG z0K_V_ydX=jy6->e+FZz!vzdA4Tyb%xxfRpa52TW4P>?)^?wR`^NDWm;O-bYUVHq`* zH}g^-FDWMgKBxT3rA%YZQy{RNSBjs>K#ewq>b~XIS9T_^(r=qm!MxI04x{PmK63-i z*nH}}O~$jZ&*EvHB~TgXkcO-&R4$#AX{0v6Y_B+;h=PWTDP63)!olyYeJ68#B6Owz zi!WP1mrlnwD%Z!;(b>*^NX&nuA6Y8Aj-4_k_~;YIK=vIS3HcM6WXZ(q-r7@ave5R- zPyToPm%3zl)2>|LzgfyFN0UolEzyhT5U@!%HmzwJgi0o=v|YU%n^dzc%HB{L%1Ci) zIhF5BHxm&zJRs`tV8=auKCK;`N53}=MePSl^ kYR&<_dPOuk;MqhkaepF`PXuv8H{6kCF;ihg>IC#L$QWzEYE1 z6d3KRt}t_nY!m2~>Rx;>!S)e8|1$YhM}~GMKW6Dp?^JY3&7Tla7CHC^-RzF^?ONkj z6}k>yYw&mqU4ccf|IP#MQETIBZGGP{I+L3=gCEqL+?`%(y=tqBbPa 0 z6Ew$EY|5Bw%)YgXP5H-SVXL+`$SJT_6O9BFi)9y66#ebZ^QknJYk~BiYm$4hI8AB+ z?n?lefzj7K$5(5P=B^1A|M66BCs^@?mFk<%kL9(mdRM-fsBD0own2WP21Ao#N3_f5 zBx|VjPD=-rh8|liB`E1Jc`DIY(U2!XsL0e?TOHJcCij}a`H1I>=hS8H*9AMzgn-c( zjB?H~Z?l_}m)-Q5p5FLr2QC@K6yt2(w9_}_%M~Lvyht>;YXzf!Zu0DM-+Wa8 ? e1o4^%AYZ1dpe 3qCMP7n=3M+?Gx?1t54~l3HEqilZNb87l)C>gwy^(Y zSi1sLKOpg|!9v2I#olhvb|`M8##k*N!^$<^gk7bZIts%ejpl4<7RUT)SXXdA3d-?p zN;x(PkE&RqE@;h$j()@%yY}I3aeGJ4L%}T<4bdEtq4~Pv4Dg_ke9ddlm~YLPJLT6| zVo6(T*`x{f-~VwE@fP)nb_}VA^du9wrgLd*4C$}suoh{HkP- Ry>u&S=(a(*fk$f-{y|&LhVI z$RzCKgtR!ZaxvA=FB9s3D$;gtsUM&k&!v$Zuah$A(J7s>cksej*NIFeJ*!vbnio`G zmYaD%Uz4+Uu0ut@LAh^$swULQkI%}%GB|N5BL{Jb-&)IX Ky_IQcBCm#GGz##HInb2%FxhS3X ztZ2jy{M!UCS5`>U7HLZ*%s#HAi0H3j%R-U42+tpX65V=`v)zuXOKDPcea_{faT6Ae zt*1GhnRCcCw?~X8j4ZXC C*z)zPuSqF59 z=Awp4r3nN!$LtL5-LK}-vPqtfD7SIsajxP+sj|-q2NZ5+^Cu(6*r>`wP!n7mQda+i z+*DXDk^b8YUP_0Gq_Nbe@6IV-dG5dh<_g~X@#GKYyZ#bRCF#@>(JQ$$6qBpNzvn;1 zxWmpEDMlH?rb?R6-!fi?8pzfd@$O1F2L?fZ= 90aiGxTi$)lMK1N`B>icXxC2Zf3T((G)`jWCHd>wb)bQ#oByuFlszjFw$e z_%gI>xX <3*u@INjDOT&jOLBa1dqKz}MxLDaNc2Fh5T*36)KHKz3Lg+_?-+o_WAc_PaN zBzEKc*Qis^9fP>I8;~MF2@(=WX>if?JFNM9`m-VKLG%;UH@2wwidSOMkN7oM1JO@f zxvfpDej53GdC6EGJ3IPuJ)@w-^IW*Lm4=RcX%NOFH3*m@Er|S`>X%a(5lavJ zPK`}O0H~>*oOO>`#(>ckRIcLvU*t^1$bJEXw!GN~t!ZxAW33FM?CY)PewOvxL`kX9 zT2zr-8+9gyS$cl6ITtt3rCBK!8}Qx4r%^9%MyxuhfK0uoH5e_qaCc_&ut-G t< (SJkYXai*%43^8{A$0K0Uh~RWKG{b(7i% zjB1BZTTx=pUuZ#fv0BULb06fQZ&0GA`uz_di{VkKW}8Cl7_?`rKjBh!216Au=vckZ zT3&A0Bp+q&At=`$(4hT!oZEC+*pguU#CM7_$-o^RqU=|vWBH_q8=x@)G3mnaC*{@; z93W5WSC^kl!+Bjdn$z~C;y|Gw??!dDx((Z~@ulk}+CyKB!PwS!67FAyAL)6mW?IN? z&C;*8p=+=aDA@Fq7mYkb^exHOERs_@nz1F7vZSTxzk6`1H>^>h&;lshsQ)f@ninnp zg|n{slBuoJr@PILhO9@!VO$>k>PzQ58xm7Vkd>tlf*z^F(*7^NjMHr@$5ftaHDu&w zI+$&5<#mG?AaTl7tEnq(d`y~mE+Js~Y8hN|%x!{pVLCo?&ezMA;%^BED>WvG_(w%E z7W&$xT`Y!WDR`DI06-UTkI>6>b@?cT)Zq#-kgWY`$2Lt1tv!_(HnOH8LwJ5}Gt1eV z6=71!#qK#ca^K!=4~jcdhLeuPmge*}!a=Z1#a