From 822832f1794fbe4e41994684234c972c36f47877 Mon Sep 17 00:00:00 2001 From: Jamie Mac Date: Fri, 10 May 2024 08:50:12 +0100 Subject: [PATCH] Updates to DelphinID --- .classpath | 2 +- pom.xml | 2 +- .../delphinID/DelphinIDTest.java | 8 +- .../delphinID/DelphinIDWorker.java | 13 +- .../delphinID/Whistles2Image.java | 4 +- .../DelphinIDTest.java | 201 +++++++++++++++--- .../DelphinID/whistle_image_example.mat | Bin 19612 -> 38377 bytes 7 files changed, 195 insertions(+), 35 deletions(-) diff --git a/.classpath b/.classpath index c623317c..576b210a 100644 --- a/.classpath +++ b/.classpath @@ -6,7 +6,7 @@ - + diff --git a/pom.xml b/pom.xml index ca91aa43..00c3451e 100644 --- a/pom.xml +++ b/pom.xml @@ -310,7 +310,7 @@ io.github.macster110 jdl4pam - 0.0.98 + 0.0.99 diff --git a/src/rawDeepLearningClassifier/dlClassification/delphinID/DelphinIDTest.java b/src/rawDeepLearningClassifier/dlClassification/delphinID/DelphinIDTest.java index c2450f91..64d51211 100644 --- a/src/rawDeepLearningClassifier/dlClassification/delphinID/DelphinIDTest.java +++ b/src/rawDeepLearningClassifier/dlClassification/delphinID/DelphinIDTest.java @@ -228,7 +228,7 @@ public class DelphinIDTest { String whistleContourPath = "D:/Dropbox/PAMGuard_dev/Deep_Learning/delphinID/testencounter415/whistle_contours.mat"; //the path to the model - String modelPath = "D:/Dropbox/PAMGuard_dev/Deep_Learning/delphinID/testencounter415/whistle_4s_encounter415.zip"; + String modelPath = "D:/Dropbox/PAMGuard_dev/Deep_Learning/delphinID/testencounter415/whistle_model_2/whistle_4s_415.zip"; //the path to the model String matImageSave = "C:/Users/Jamie Macaulay/MATLAB Drive/MATLAB/PAMGUARD/deep_learning/delphinID/whistleimages.mat"; @@ -240,7 +240,7 @@ public class DelphinIDTest { ArrayList whistleContours = getWhistleContoursMAT(whistleContourPath); //segment the whistle detections - ArrayList segments = segmentWhsitleData(whistleContours, dataStartMillis, + ArrayList segments = segmentWhsitleData(whistleContours, (long) (dataStartMillis+(9.565*1000.)), segLen, segHop); for (int i=0; i points = whistContours2Points(whistleGroup); //does not work becaue it has to be on the AWT thread. - BufferedImage canvas = makeScatterImage(points, size, new double[]{0, whistleGroup.getSegmentDuration()/1000.}, freqLimits, 5.); + BufferedImage canvas = makeScatterImage(points, size, new double[]{0, whistleGroup.getSegmentDuration()/1000.}, freqLimits, 10.); double[][] imaged = new double[(int) size[0]][(int) size[1]]; diff --git a/src/test/rawDeepLearningClassifier/DelphinIDTest.java b/src/test/rawDeepLearningClassifier/DelphinIDTest.java index 158e5fc6..f0a9cbc4 100644 --- a/src/test/rawDeepLearningClassifier/DelphinIDTest.java +++ b/src/test/rawDeepLearningClassifier/DelphinIDTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.awt.image.BufferedImage; import java.awt.image.Raster; +import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; @@ -14,8 +15,15 @@ import org.jamdev.jdl4pam.transforms.FreqTransform; import org.jamdev.jdl4pam.transforms.DLTransform.DLTransformType; import org.jamdev.jdl4pam.utils.DLMatFile; import org.jamdev.jdl4pam.utils.DLUtils; +import org.jamdev.jpamutils.JamArr; +import org.jamdev.jpamutils.interpolation.Bicubic; +import org.jamdev.jpamutils.interpolation.Bilinear; +import org.jamdev.jpamutils.interpolation.NearestNeighbor; +import org.jamdev.jpamutils.spectrogram.SpecTransform; import org.junit.jupiter.api.Test; +import ai.djl.MalformedModelException; +import rawDeepLearningClassifier.dlClassification.archiveModel.SimpleArchiveModel; import rawDeepLearningClassifier.dlClassification.delphinID.Whistles2Image; import us.hebi.matlab.mat.format.Mat5; import us.hebi.matlab.mat.types.MatFile; @@ -24,6 +32,55 @@ import us.hebi.matlab.mat.types.Matrix; public class DelphinIDTest { + private static double[][] whistleScatter2Image(double[][] whistleValues) { + + //now perform the image transform in Java + double[] freqLimits = new double[] {2000., 20000.}; + double[] size = new double[] {680., 480.}; + + ArrayList whistleImageArr = new ArrayList(); + whistleImageArr.add(whistleValues); + + BufferedImage canvas = Whistles2Image.makeScatterImage(whistleImageArr, size, new double[]{50, 50. + 4.}, freqLimits, 6.); + + double[][] imaged = new double[(int) size[0]][(int) size[1]]; + + float[] color = new float[3]; + Raster raster = canvas.getData(); + for (int i=0; i modelTransforms = new ArrayList(); + modelTransforms.add(new FreqTransform(DLTransformType.SPECFLIP)); +// modelTransforms.add(new FreqTransform(DLTransformType.SPECNORMALISE_MINIMAX)); + modelTransforms.add(new FreqTransform(DLTransformType.SPECRESIZE, new Number[] {Integer.valueOf(60), Integer.valueOf(80), SpecTransform.RESIZE_BICUBIC})); + modelTransforms.add(new FreqTransform(DLTransformType.GAUSSIAN_FILTER, new Number[] {Double.valueOf(0.5)})); + + + SpecTransform specTransform = new SpecTransform(); + specTransform.setSpecData(imaged); + specTransform.setSampleRate((float) (freqLimits[1]*2)); + + + //set the spec transform + ((FreqTransform) modelTransforms.get(0)).setSpecTransfrom(specTransform); + + //process all the transforms. + DLTransform transform = modelTransforms.get(0); + for (int i =0; i whistleImageArr = new ArrayList(); whistleImageArr.add(whistleValues); - BufferedImage canvas = Whistles2Image.makeScatterImage(whistleImageArr, size, new double[]{48, 48. + 4.}, freqLimits, 5.); + BufferedImage canvas = Whistles2Image.makeScatterImage(whistleImageArr, size, new double[]{50, 50. + 4.}, freqLimits, 10.); double[][] imaged = new double[(int) size[0]][(int) size[1]]; @@ -67,33 +124,53 @@ public class DelphinIDTest { Raster raster = canvas.getData(); for (int i=0; i transforms = new ArrayList(); - transforms.add(new FreqTransform(DLTransformType.SPECRESIZE, new Number[] {Integer.valueOf(64), Integer.valueOf(48)})); + //create the model transforms + ArrayList modelTransforms = new ArrayList(); + modelTransforms.add(new FreqTransform(DLTransformType.SPECFLIP)); +// modelTransforms.add(new FreqTransform(DLTransformType.SPECNORMALISE_MINIMAX)); + modelTransforms.add(new FreqTransform(DLTransformType.SPECRESIZE, new Number[] {Integer.valueOf(60), Integer.valueOf(80), SpecTransform.RESIZE_BICUBIC})); + modelTransforms.add(new FreqTransform(DLTransformType.GAUSSIAN_FILTER, new Number[] {Double.valueOf(0.5)})); + -// -// //set the spec transform -// ((FreqTransform) transforms.get(0)).setSpecTransfrom(whistles2Image.getSpecTransfrom()); + SpecTransform specTransform = new SpecTransform(); + specTransform.setSpecData(imaged); + specTransform.setSampleRate((float) (freqLimits[1]*2)); + + + //set the spec transform + ((FreqTransform) modelTransforms.get(0)).setSpecTransfrom(specTransform); + + //process all the transforms. + DLTransform transform = modelTransforms.get(0); + for (int i =0; i>6SbfM zT)UYEWR0(^jK`j4b@i^Sb)~4~iM%EkA@6EC^uY-SD6=6Cw*&1#Ekdu~0EZOwA&+ zYU%cO&k_u8uilm{=Jerf3<;n3%P+K&?dSFF37mxK%^BJ;_oW;L>n%VGhfq?FlWi8# zdreBe7hgh1r~1~c7dLJLJO^kTd!{_te(cp&eeU6rotA|FkmY>lLWDsr!@pkpdO!LXJSZ7jQT1 zy@2=n+mU?PPy?2~D4njrqc7__z-iLyNS0~L#)R?xqWbYc^Y9#jlx#V=ijrf2GES$@ zJc$GJW`{c_NMz} zVT=iWe=5yX2+Jz87|TlY*eXNH(#`X7LX*-FCvEu3#eqD^k~wEZyWWOye8&UXXXIRU4VK)(#o8Y>*v$X-2jTOP5-mbLb^SE9@T#L#(3Foi&~VL2 zMaV>%D_VpCrBU#svG#P{R9+DO2>YF2mA_&L%OdcvG^HXp^-Hz4uNBbr43rS8JK8^m zUj5#jLbop$V=fBz_&Agoae?LR51KwrnQg7s$wYtMrC;WqlqM&rQyUOQql`GIKIUlI zX~`s81J;xKy*Uy%<{9bTIyZzddb?leBwe=%*6p$kOv;Ph?w(@>1Hf&kO|uYZhs940 zX*sn0$i&1Q$nG9*G#nPshN^Qnry?hvM=%!s6-LDBsl$hUq19fqTbZbsz5|WTU$@TmUmY|8DPED(Rp0{-~(lp6A4gjl}_>H9dvY|!X9Zy z6BEOc8rhb7d0vV=5~OI+X@L+j6ZKcCECHe`W^=HRvM*hbhFDc-xchFbVvt2?ybi|s}L>~rmzgryZ*)v4g4DL!FVyZnGqh}XUDXG&nwsZHd+qwxq zQqa9Idk{Vvb2*Z)7^dWivRb%&aVLw-YLqJapd|b7-|tL4icT0s?OUP*fk-aIGPmk^ z6(!91F~@VRuT$$k=1gLn@m|`^f6(h({?)y|yOgDw7P&VB9pe8f-e8!A0dIef2K}!i z<1XJGoj2p@u&?W*HvB*8;1%Qv9;Dmp2;j1fa8Th6&lVb4A@H+U*}fV}Qx#1qG@|gc zxY@p;OG7P4FVF7+%Ye+TW5W*G$7V+QT*!3r-!Sa>uWxUU2L1pcd?_F8(j2x>v@R42 z06*$HMsUo8y%f8q9Oz;y< z)bqRB=YUp-4~wG0Uh)>@YsOVeRvKEoDclkUs%-2RA)}kZ?xP$6sqf*Z^RsdMT|D9vfOVO{m<`3XrB2>E3iZv@oY*>jE&jJP2NPVn$mqQtgh7|agF>lIXQQ52k= zotZp4)M{|rdYHR!Ld9uT-C$vOt!uKoetk|_O&g!$gq=XmXc(LU_}Rp4-&cp5eRG!-M6xO>qa0>L z9LLAU99Asw459EZl%Gi#Hl<|c1jZH>75xy`eXk=4 z>T4BkxxGQ4_6|3j&qNfl-A#8~2DTs2y`&)|!l?#M z0=A}Od~__VbV*TBR-}1%JP3BbMp=yiLWowFsY?UyhvoXZ+9~e3Z&g!Lrv5~LpUX5| z229;NnQ>N0K^8eJN`LK&RY?W*_wPyNjHDu8ZcQ>$d64Ozm4aFI>l_A-RL^pczmIZo zw9TUwx!M-g{?wVvE#kX1%Sh!#rh`qNd^@Y7Q}dl`Xr`O|Oic=3c9Cl4}s*g`3Fx zH?Lyd)=$5)VpN$(Kc8q{*W>?xFLPq$QDVOQAG|HowxeiRaZWM zy|ByYwyn4X4YCNJF`@x$ReW4@f@YLbxHr$R9U+_=0thb=kcB_pfINL+nnA*eoQH0f z_|9L>Jn^s?c0X2G%=ysOJeZo!-LyN~<(AmuPdJQ~|BztExR`>u<;2!PI>Ib_w(ri8 zcmbde(A1O?dv;I?yC1JC=H)OWMye(tS4e$JWbrE;hRF9swj!e@F0b=O^x?){hk2Ul zIIW|LC%_1vl0dRLpgk)BQ`$N;Z8OQ^1yYI`mQ-&1iTben-<8EshAj|xhWB>4$yb`*l||A*ygjdvTr>3fk^jO$TD)%#k1o{=O_2yc z!D3j_%SfTn7=0=(DzZtjEdH6dQ2#;Vt||z2zgJld>jJ#j0k9wjhIowaH&<4uN&0bD zgvX|oXT?^9*OmrEc7LT3%q{l1@fzySNkEu|LW9tu9T1>^;Z3IBba#{*C%4ODtd!8wv<%H@jG`ug36_V_1;{4#&@DZcg^If|?pLGKu=c={)MswU4My zG(Wq;Q>b&Oe@1);i}>8yXDskRy_^r^4#G!8;kLNRo%pFa#yZn zA#{6w53iP>a=E@Nas?R~ez#$*VB5u0XEKC)UuU({6M7y1Zm};oABm2J>n{5l9D6%C z^e~9F4h`c)?^y$8jCiqVEKkmJgML|p^0F@0u!<9u_+9EVONC-C$|1E)Q_AiWM8K9^x&#XIjsuf{Y zJll6RV?m2Z523G*UaLy<1_B*CsJlZEQRMs%TU)XA5%<({7mQKmA^kkAeGE5WCyI%Q zkv=>5%hsHjpaqT+ev{2)%!``L96vN>e)gQ$G5;)@d*=7(k(H2y!Zl*zV^pV4y*{mEAjWI*$Y~urXDo0b=OK6lOPn418&56k)54k9 zymL&|^y6EIEZ#=IFaY{?HPY_RAjaRytGL(z>(n_n8?R=4+_+w1a2{qZifc=w>!Bpq zyW_p`Jafx{Qm;G|9)veLMr>@shG*s(B+x&QTkIpoVxwM|8T0e=YrD~aaiPj1b&pE> zJ*Jjs94k;-(#97b1)e#yd${|` zu=`2MVzy9X6C^rkyC%l3)m!C}q0b4`9ub?*vDooZcuqe=@0Ee;xgmZn^~|<*jUJgr z5Y%1!>5lc~F1)gM8xE7?=i>vpAxV`Xf`gJwCE`aF+xveMSN^}>+W$|M{S(l-IaMSA zG0)IvN49w3t6q~6bE_MWui(a};+ zQBi%EKl2FxJ-IrGzVllQ5Rf^SN)G1N~f<=rRzS(yR-!3JP+Q9F}~-qJO6R zoVXEPfR`8@9qoXxp2+l8m`ZE8;TpDk1&8BXdcq;m(aDH@3u&Evt7pJ*zBT2&fu-)pDbbP;+&tRrlvXT3Lj~HcEu^!yo%8PdI}Fm62pzdv=+#($N7rQDeL1+ z2f#>I$Lb8HfLo=L$2(tm>c<>xucwXA{$xeoqk{EIY5JaKxXH~x@V{1$D)hx;e>^`% zlXStZEE+m4@zHS!3DGKS3Kr=?ZtD|%E^~Alq;*Y2(w+U|&7bG| zU}?#q9w7nh5qzh@3d0-$Xt8U)Zd!`cIyw>>z;5oQ>$_{HSA%j@+(YnCIt0q;^W^$^ z-uM9kO$AOSqxls>2j z9-m4=)RsL=VVLP!xG*f$+`-*7=kNg$-1u`*ktVkjxBB|nSkydCCe~jWMOj(v8ud{0 z;6~0vT(ps|;^ozdkAkVG`Dps_=f^XEZtj4Vr%hD~>FcGr%mB_@o~!M@z7_0j-)U&n z75YiWrVKqfhgpc>)L?yT@dPak^5}Z}txS}7;zvXEZ_me|YB)ugfqiiTl6~_fsxh;O z$#d-utPskeKR}+A=6*31E!tog_UD$M7PKmV>F3q$ zC6pe{QvAbEw+@)g_j4Jb%iy^a+WBpBW0Z=@* zzQ^w{xJZtSWhVNWGGeGZfJP2iOY2P5hvEKTUAobbf1yHi+)sdtDspI=mi<)-^DjfZ z0f|NJeFOo5gUa(FE@lE*{~>zedgfRhU@Fe9r7~&15B78Er^^tin>EUyLkl&g=La+T zAk1>#OUEvuwg!d{L5?v&pY%S0DexCHTx2@MLy#(KQn`EV!t;w!I4hH$z7XOeg8T48 z$CnxXdj^A+Vue|T{yjaitKRzSUs2{TSnKl;;J_YM$r)mgca1V$K^fyc{bAMX5`(Ks z5ufSwbLpkacz&UoNrO!ED|SSf^Zo>`XApGrJbx=A?fij<27X_Ra2tc=<#=&Q=+&)yGRuq$^S};?PAe_lAe{7b&Y!% z9a;xW;!XCEV2XIjGdAx4FZfx)Y+vbTuUfMr@qN&$-bg=J5KAM6G7TqW)^O>=vKIlA zPf3h?E{!JIYDZdCt_vu)cY#kDHXm!3?IJvlZ*1G1MKTQYCM3qN0 zu)0k>JCE0w%(_C(PAM;3Vg$Wvo7D;M+d^TY52X>@-(ZPQ>;y4&s5V~a7XOBzAtR9 zlDzogepa<^`ZMtT=q!2RWYLcDqKt3OX7<2YJqHao#Xeg^z`MPzIp6C;$mdoyOnl-( zqoN3QtSHBo;eCA~_Z2Uo6gjUGa_9KNU0%mIPByQhXGP$I&(W zbJVjqI71BLY5VH>Q)tG9E3v=eZbuw5^xe*$1MbU>2HuGFnGzyB)YOn2v)|h zl$3qjOg6%jMjfrwd(qj~k2rnGV@EgtJx*5Cc}%=5&P%3bCia@>iS3fa6SC_=+Q)&M z`ZtgtdgrJ3!3L$#6lU*u!n5kP7*zh6^hS11m%TJwE?05Ei={68@bOJ35h0ScRx}eE zofX@ntNic!8>B(L9N;E2nQ-Mi2ul0%>L&5;fqZh`vQsRN8xDHkyYF90a-|%tnmO;f z+h}%$4n3|-Zeedc|M!+9}6Erx`{dkB8HsbNrU3puk?`;Yl? zA(y)9-_gS+vCae;RCwH|Chdjzc^eGzrc&y-x|TqST^6yC+nFQpFspLeHN<2LTJB#B z_GfX^wyuJUv$mE$i$Cz`h#j2}@AX$~0;AIET<9ob(A^XoEkm+$Y6zjIZSJo#Ms zve5znmk%Jqu0F)cH0p0J!atDQ z^v(ygx!E^=5KI8%RlQ|9%hD0O@=oA^V$m=xD$my!3CNnnjAoWem_B@8znK=&u?BL*8BUdY)>y5 zT`lFz%mBO$eV5L_?+!q~Tv=7QQbkO+!v-m-y}}R(`Rw;niF;#9Z(lU z)9t0Y%TxMdqt@PqPG17CvEuUyk#IZ<#n(i05`BG{1k4UKn(M2G2qz>8`OtaZ0X#n! zu;$d{D9u+)=kMSdd%GMt#AQdjWWe$9ZHyC=coR#Ia_wSR+9<`>&kL;IFt!mXq2((1 zF@y7eKj`@X(Utq{?DvR$Klxz}?~?)j`b-4&S=dt2{S*wF!_yQDS_d0uz%u?%$>EQF zn8L`X(xnk{Nw8Jm*P|2|5B#`>UGJFa8n>VJbcT>*(Qrxr56?>LST<5*X zTmA@*ac7-vaO%@SF&duwpSIP2z{TT&&j$L|a1;D@tdt+}pJ@BAuoa9lPWO>E0E=A$ zxiJ< z3x8u?lA+IuRp}L-EMNja244s3zA?`pd`+h{(z@w`sujGBPrQ5(e->5NFo;qZv?5HL zdEC(v1AHrcf0Zo#`lkV1PCeb{q-4_s#jmfsTsk+VJu5MHaZ#cwe;+hM-s@u76+O$L z-N?S_UreFzd;1$%skrR2-2*b1NNIhBRVnaJr?jqWr_pQH?i-`E`*EWj^v0WO_dFj; zpQid)-Y7$7-dkWouGdKj*vPeq#3a68z`g`!=P9Ogw*Mo2{sO5#d=ZK0YM{^dG${~m z0V1li%SiG53OgTBkl{6_w?kfTW>D}UgI4rdxVLUo^G&SBJb|a>`HhZ#0%luCV@?6| z3>4{{r10Am^TdvJtZ3(xoeqW~ZG7vUZku+cd%vh$OUe^H5y%#5@>(?KG`KbZEWQD zQW93ASflVZ2VE5|K}NZ4w!k6E8F6*ZXqFZEM+UZZe(*=Yu!M5eD3-u>S4whMM^kWS za?QwlkF6a2Dpgd+%9ZIBkXK0p*LtfPU=zls0k}5@cbI(kpk3X3AE=csvN*f0CeGAq)+xp;q#i7yWe2&~EG)QNojc-?RGGRSPE8%zPod2?&hNr6 zr(+|%;O!=n&I@JlB`;$cv|YGvXs1>`JYpeD@=jY!^YXyuZW0QsC~o{?%{PtT;PI~w zvu0OFkCNqA>=eWK{fW$vq{|)qH1)Z%@+TS?rxzWB7E##P9h6^#zp}w&{TU35#sMW*Pvi1`67KOUd2|dlXr#8*c<4TU6!kN zk=9Yv(D6f{Ev1)cRuqhh!axQhR+c(RiD=A2o?gU8PtgrHjifV{)&Jo0F zDD1AbWaqD`6hcJ9*2<=C)u+v1@)BJ<+dXqh*Ddhx3Z}lt7rGr+t?79eBeEM-7MLDJ zzQ991&oR6prb~!up!{U#uTa8@*T^-EbBe{OmtJZjWcr74f|<97l+_y?NRv;O=6fMy zPMV|*A+kaSv0?@Z&V<&k>nq2ypl_}tUp28(Gl3{i6;&`@i{3uQ!83gEt`InKn8J6Tr?TkO!{~@q~AuO%UMa_hRYucR8num#3AmsO6o8-07Rr ztSBo2@)cTDF|Q^`sPjw0j9r7)*xIcSFG4aG|A=k)jT>`B4Pa((J5L^+yl!tKEMM{GjV?5e5xPF~+N(#0iQd}FNoym%tL zacaKUgTTn(=Xca?k3f37&fKuC<6fFpkU-3O;~yWj&*lpR3_FDimsq5FFRrN7X9}Mx zfqu+pk(jGj^UD1&`L^{znUD8xz?D7mZ!WpjZ1J>ZEh?mmjKxCX{%pt}p6gcYRFKK_ zmG{ZzuPb3`ZDkNhG6iSk3$5G27IRPM>T9@Wd&rewt$XWZhGOcyER6B1-$(rZDw#hQ z+N%%eGmBlfQKc_2xV}+@B;mvsa&$`pVyNrNMiq^YJ$|^tNIAr@q=7a%Q91h$4@ie9 zy&oX~>fA;7y=(Cf-%j!}nC_xjo|^}HQFeJQpj*A77c6#ipiGMH1yiBS8Ln=(A_-1ePg)Ub+mcoK7Fv0uLAwM|f z54*0wy}59QPj>LrnXP!oX2I!+ZrvggBfHp&vblsVg~0S=HAle{hH;RF&*D@%*u&Ku zzjk;ZGZgM*$$$>Ek;8DTR9({61=gD^yMo zvv@v4L|vx6YoVt5P8DI}t#vSbT#gKvGCQU6_n%AH@BBSd$F&xN95Lv)P>F?Fd(!*( zH%a*_c@g_@{2t`6!z!GCC<@$oNl28T!7Z%Tn;WLEL#Z%C(2V`t{;TbdaR5u1ls=Y%yn}=KZU*7HllOd#iCD+KUQ6Eo_FP_F=;Hf{)UYr8m#sI&@Oc473OGvoGQ!?ey7~W zo50Onq)L3vB?;;NdLTM73RJzn)dXY;x)l3C589y`4`o4aAw^v~{IgC56c!ZG_A7E9 zEv2X~i3HS$=vlsU0Q%WK<4MSOti9BlALAqD-Ot^+;qhtdcExvfCHd38ln3oUq~RK8 zCDR_};tjyV&T~(N>@AI>KUzZv9(O{6%#=)F$#$j+k8P1EEPsRi;<|}r*la+3C#mr3 z+ceG&hGyd%D@xBng|9|7A}YXNPij?Aa3$DK_p+A0>v@EOi&cYGCb}X+uK#GJ9Oc+-;x>P>sp1DBFE%EK+s_-cV^mZeh zfaL>mR7{)By}d38)FMBN=rR;k9r2f_G!j38Be}f47ts7|zDm>*qY?(K^`tJ&lrwF^ zg{dU*-v;1hm%#nCwqC2klAS%ZmP*bpU~Y-8CPYpO%i3r^cqg~#N)(Ae|8-N=_0(e& zH>TW4T%nPIPfmFUl6lYfpyqp(?j6dWE`vohOEpuP{1Kw)eO^4WXISYPu^+$IS)QZ* z*`EE?J6b0adP!A}+&hFvrf7NY`M7d@Mi99}4AXb{Rl6*v@;46JBSjH5z&Gn)JS)tq ziZX8Om{CNcZ{(cXW7=A9D-d2Xral&3^j)`EIiVYr&dPY%snCym)(H99epSU0PDT5g zx|2Fr!pu>Z@`4R#?}#*X=99a0G_J0(9!mLaN&Kur?n~y_WwE(iA&~dRn&*Kq|4Y|{ zg?*2Ao)c*~t;COK7TOwU+<>qXOp|v>D#`qLkd8>*y_$!J|6vz!2 zD25SH%yd`^v&*b^*so5CGias(y|hD}d$xfxMUnn_)O%CNgx zYfEzKm3B|OUX(j_=j=3gAkzst(&D4g;>SOS-tJkAYryk};q()j1#4#mZqg^yCbr$^NBIqS+ zGo{L~Kaihu_`g$PlKSeAtSZmF?x;xI{SbCgF7^jagqf>jYp+|`G`qlSPz*^H(#Tc2 z)cdeNP@d`sZvSddxJ@R5ij4HUSh^*9QpN%;0pcIL$^Wl%bTK7NXytH{RM>Kf%-YG4 z{*u$d>BIDNTc)oC#wibM6>obtQ))ur+;3L8$+*r{z}5-)sNun0O@vgW__mTh?80OJ8mw_4Vq&S76v(DkXpi^lXyZzaP;dpEDLgcX_H}<7cYLPCJ z5oqcq069q}@jG$eVHli)<~0*-t!W39P*T}opQZkV3C9SHzOAAXL8~PfqQ;#*@a+du z5~pT91^pNxF6XP<4 z;L+4esYwN8X&ZOixTbomMM-u0SBt>-=1k;8`Tcm@!exEP9qXfTy51YU-_2{{RqrOw zIaut<;#C^d-TG9EzT?7l&iXi0WY*c>s?ln`-`NbFx>Go4Da^rl0h!tASIz0{0l9!r z3S5rVp#)W6UVnY^AIgL1*bdB`euGgg8ADi3a5Pa8Fjj>D^C)hJ6ge-JA;}nauD!$n zXU#`V?MlD$*5(x^o0MuSb{-uK>*)}D9ptgWt>dQI?LRTp^3P=FMy=Itiz@L9gs)tG z-2vz4toNNOLE<;GqEBt0z!o#Y3|xjF13o&y@lN~m;li1-{}BE02|-GgJ8K3FS)9H1 zI^LYe?j~i7=hK6jFX|Jk->F*1NNO4GX@QeEEpcjYv?8mRxRqfhCSbmLrc3e{O7sI~&?wQHQ}~3|HJHsW*we zhHmlUfHEb<^XO}g%Bh+JRPbHtd@h;_dbt6N)lL(C{0h09>&*`G;u_BTAmp9DIT5M zC*iY04fnxahT%Ma6Mu~NU4L7L2}U+Jm3Ua<=EKWT#Q52saC!+qjwjS#kIA3(BDK5I zkyEa`7a}QEtalwAohvwWVQ4nn*ld~Xuy&3xI2L}aJlJHly8#2TtB_cGc?D9`FD+_j z02NJ*?ZklYWhr^{_MZ+yE#=dzz#|~D(s!r2Sa6meTCI30b&nDEbYy@)%-T@o8(^(G z2chDQTl~;Xq`mBjIue$TOKTWQ0qKZL%qO*iZJwRF{42X7lCY>V5eubyRrTzLRp7UY?0M{n^+te@m`0cv@&Sz+|&$~b|`+JGp`7sTx| zLHZ+C+VDt6h9MTX*xBPhLeMbl$?6j^NfI}_l7BVy2(R}b!AwoS+=M9L>Kg19kGU`x z7roX{J;5ln+Sqs2*DWlR+i`pZH_F$|K)q#Rc-P^qu3`~6?LgmtRz>Y(6287maYeA2j_bjbI!vgzEjJ5Uqc6$&c3oe4}RVF zHa&td;qtV9#Xa8(qtzdJkh+H%eAlY)5=L?Tszr2Yo$S$6%Apzx6$u27NWy7br3K~a z_bCTa7td4!ys`rWfUF=N{>`A@YXocT6|V$yVe=b_GCSl)1rVKe)lk#cdP`$aoI2G% z|HVW2V6yD$_DMT{7c;H-t~&Frx}_=y)$YQ@Vd&M)8XNj&q{VetKEW5FiccMdj>#v? zz$0Neqz;)c@0S@4mb1%{BQwdJB&cR2sE(rFIYHK8B+UTQH6u1%CtR&o9EqQ^{x&c? zDp|+vATm+cq^y*EQ4%ktY()VVT%03d%jl+iTw~>CKGB>Jn6UGujHMnJ@z^lP`mGsU zMBt>3seM)fZ{Ll7rRM-{Q$W(9baRQb`+Qn}y>>|obE?~LQNVXC z_f&g+;c?dfKUx|PEvyXY+!WkTqVbJxP@rMGHwD4DPoJw&$23U3^ZFX5E zYP0fjMQ>J4AMvuV>8AH5razX4P*t17+M1{`?n4r)J#^0Q0gEjrkV=w)mt>cVY90(8I76d3U!5!AdtCCdAX1A`71iCFDy(6Vts zmn9K@yx{9?9=%CQTC?y%w`w116PPID%;M@mAenu(=drr%gMUt5Miy2Xim^80<@Qq< zirtln<}6ZrU$MriKUBhVzjg`1!hs`xC&n&4&XGxtGXgjLsT3sA?v~ec`C3#x^BCF6 z2^;As@g0{&^eoQvTy;1U8D$CR69nFoWN5C>-*P$? zaKKN9z>kw&O|X1FS@|pM73=AisI^oCILA z_L8&zi-XhIm$WZ_e<~muu6`EF1xz~xO6vUuM8DNv$`wS&>u{B26l^txzV&PhgU9}) z{8s3-EP*oZhCq;b9OveNiTu8?+WrR>k{`ROlJVV{{Ip|dH#!n)<=D8|sQIxTES~AM z{dtr;lil1O3Rgxwzj5NQ;#`gUdz5~bF_uU*(YbtQ7y8VeM459_#F!CkdUvh=lMSu# znd@z~Xw=`rm+apA^UQJQ_x_xNz1f0ywTF|z!UtL0`CD)2k1hx7Sy;;^TI-E2RSPrc zEep%b&a?Y#4hf*TX3~QLz}&+5e0qB2&>UFymn4Z{dRBOjEXkCyRcZ{B9+jo}nMeLPub)eSnc-K4#tdc4kmFrc zvWv{ANHW;xTyucq;XveDim1waQ%4*|@9=+B#|trvs4M~Yq8egX)TuD4WwX=&rp5~v{%Xizu;b0{4eyP_{|f7Rr(;cawN z2olZ zv8Ajb1{Cg@4#_H$iUS?>bl8&yi;}IgoQ?J6rQgaoUT#i`0J&Yy73~%WfUYiWd)6Lr zd0lR3R@kHed}XM<@hJP3pRVvJOst|a(Gk{eJi&V2`bGNoP1Dk?0?u&ehYiS*3vTy( z(O+YE+yMhSE`Y&0ukB)|;XlAqgn3Tz)wsk+3|neOPD`*hW0jmM?M>&g+6*RsQJCC$ z?2WtHhXJ&>7-0_BU(=v#tVf zZbdzMFcdvXg$9NHbqgAD5`0}2hKYOkRc>n&Pj*o9t+Bpwbg<-&o>+bcHg;y2fb3=N zux-}Mp6mO*P|KVu0Ukj0V$(&hq^5DV?3oXU>vcgcr6-t65gA z6CL_hF0{7uZfm3aRUlRHipNvb|I4#gMOi<&!Ezm46k^8%S?MLIcK&vM_()XrNgm}$ z{tuB8U{ai99U3^{XogT}SyF`5`J!XKv!stC2fZ-JK9og)v|c97r5p=v&h_6j!No3> z+r3QpzKK7`+^_n_1ut6Di>$r+*8f#KJ-* z$iDZCT^nG;7F-vr9qjQ*0nomMEKkO4R#^Aq5+gao2s)+Nmw&SIqZ^$U+Fdg3f(gzE zx8mQ)0YptIF|3X@CmQ=buKyyXnLIFrSM%2Noj31&?Bsm{-By2}&@RV%c#a5jJ0@~$ zMS#Vqk}oMDcjk-LZ}LVwvu*V~GKN78k{mO72lN3Y%i1uw-D*zst`rLh)|t!ZXyfDLN)}85UjP(k zFF1Htk*BdzOj@A(jZi4gRK#xH2;x^eAXFc4Id1>a77R(=> zL2T!hs|Bqa1d8VsuJw16A0&6*sdFfMfp%&J$|jAWSgZ|$jrF2XDcy7$9}dnK4I2&+ zqLGs%okgLlf+<^%A9B$XtNI1FVcD_~%WH_K^%l;@s?^#x7A#%h?l{rZ9fWJ2o5ia! zqnm%QuL|^kWR4dD;=oyk)qoH%sFB7#3xJEC~K=IZ1f(%u~?lR2wznuQ4n*b1?UFdUN=iyq$Wrrd znq_{`1eUKWEV3AN0P~$TRd7soo9{*7&EU-{cHJiN)1FeJy{$FvluR2M!QwyxV~!g1 zzvaTcHW5T~G)(MdZg@+d%`7S~na{{^g0i z5bdAqP@4c4-3AX>*SpY}arex=#jW!9I}q~9b?Dsqy|O^_s7la;6l%L-7f`Z`6Y=dY zRV>le7e)Qgux)I*x@6_*5xkrmd}kW97d+;VKWdNDJw#_+i`O<;vdPY|)_XNcjc=^Y z?MnRwtyTuNZvz^C`4n;#2)2?vreCg?M}^h&vI?bH-g}&z&)o_-H&*!v9sG=AY-y|= zzs6ko^o}}tFO?~E6pVy+P{ky2Z?LaHs=ygj5 zbsx1}Pe#BW3iBMgURb0f!ynlWA8S$g1&Dphfmq>`KwwFrM*6jt5e8ry;O94oq_#7X z6q3o&BzpNB0O;-gRP^%IedfCt!E73RF@>UEuS*++ezIAYL5D?T29ttEEa{9i$;g&k z8$r9K4S#Osa}9d?4c1++K+BEDKc5c?;;;GR^x^V?MVCra3zq%dA7k=uvl%mcvW~SH zV|);uwaBf%J>K!8{h|3ce_vzz)k8hiw^8dn$P(lV3GYqb>n1-?W z=Nco+cWusy0oIr{&k{1>MA1VcGW{_v>B2v~ULohi!DJqA zn}okt*vp^Qvo+?Q`a(=orGAKNQ$%V9qnxK5tadev8k21sc#HqCjaX>8J*p+~ z?DBk7MvAUYHpOfme-+AE(>3+$Y~zmqxR~#x@p18q%?ymB zJa&#P-M$}M8A=3Zs-*vy%&1|^h(FkCX+k-{0L=@?2BTTQ_Uo_H`p>bB-fHLeCYn`Ru~)+X6I0fIa<_c!(WSA{1_dCPsIVBWsdv3bbnUA*#iA~QirSb63x-YJw38WW@cl}95~9^ z@x7_Vx!dbKTT$L+1@5jY@>B3Xi@1GHT;lXqHv#>d&+PT(IuqQ6=kauV`kntvow>bj ztmE0&r(o|s#>W8|D!)%zbss^fqWtDplm{7q2!$XRH--j9N#SHm)n_Y5w>zlHGhL;& zTZ}1qwf33w_sP&V&_6=Kis9_1oU4PZG{$ikIqrEq=31o;C3*N2pmyf6%xqXJ-2Eo&W*7E&orlvR3DQCw;n!X+F;}T)1ROZ{OU78F6R+V zwLl{ZtJsETob_#jD}NRZSI^6j8Y9G6-S|-bihZ%;$j}=&d*bQ~q5LIv7Cd0cQ-!~6 z)qDPk(|`oe=E1F}ijrNWO^@CEZ{7HR>&EX<{y#nVPY?dnga7sq{I`GLzx@OM?H~Am z&;Eh`f8qWRJ32rN8i6&#;IEKKhWuKhLr$H45xI1(gH83igjvqS44HwL0s7G6mX8Iz z6k3MR>|U2BdUIT?`EE|%43WCWsynDeW7g|wMZ^l;dxO#M#WHbVr6xCqro3!d%{i_2 zBu%xlpvr5q2NJyTn9dmfmnH%zN|Yf)92ZGYl%vylkW)~2yHK$A%i{>-0AQ4(kP-=L z;^tq*S<+BK<5?WTgXW%1J`EV?b_CI)N@8@6K*c#7%D&vc<%GxmQl-|#N+!B$({O(F z-TAl7c%9%PLE_37ypW-$rzbp{*M z#nK4Ut0#1hK5qlT_2YX-oHaMeKrQaczYgR@}y}NYULD$42}_o!i`BL zNdUn{z$O|n&^Vq!D^sq2gx+k6l=$>u=nohzrv92cF=oztk)zr(HH)Waizcy@3b>hN zb@f+;jGrjWfRjuWg7JTv=DT`I_q~;Uqm1+Wh^akP-*x%jWeqvN^ryAMlF~fDHcNVy zXzzo4#`G|O9E=QCH#t2(KyA$vw8%*J907p1$$NQX@cmj=I%xMKg!UrT$@lY*^p{94 za=Yn!EfBJ)Rw~!4b|VY7e{-!)l8|D58XwNwMkccCB;g%KGDwqx;e4(vMz)aXjM0DF zpB1UmI?-6l556@B{Xg1!%cv;7FKpPLOF&AIZb3Tb2S}qxOLs|kx1=-(A`Oz#4MR7g zG%C%^2qNJCLk~UAjSN2T*Z0%A-nIUpX3d&eXP^7TK4)M1y7o;+#^kPwWnMrZDHsi? z2NHCQ@9Q?G6NtU%I)wmLoUdgDm0D*KZ7p`P`=Ad&dIQvDkeQu`_c+IYH$^=R-nfVNx<F-4J>naicV-1 zRGTy1Z&3i761Lh4g|-*%Tnet1hTa}h)f0H2SL$=J>-W!|=G5sdug`4y_j8_MWt_SJ8%% z^7rpMh0yAB-IuyC07bq&EeKhR+~&dCxE*?pVw{3LG>W!TZM^YR%wVV%QLs)Q{b8ysJnz511R?~)R(XSWAW>|ov7X5YsgI{5LS1la~x!Z4$ zZO-v|>ftL^#RY3o7YrzOcLfUr30qTu6yFjS(%somZoTx!K;FbqX1G1>WeF}3RTmk(Iw8et zb&F7)^^y`V+Hsdv!{&RE<3aoSBce1T+uk{iZ&?0z2{B|lkg){&j^i@$d5oX(*Ty8y zJ5vpdIW$a;XVD$>Umq*f+)>uWwi+1}VQ+IIuUL((9z;~;8Ye)IvF6i#uBPbCmUq{f z&ccoBdMlB}H~3WB5*6+)q&A}YHB{JQ%euNLF{mcv3s@f?WT&Dtxdj;&Yj64V%T2z5 zXzLF-C;>W;CsdJ;P<2QiF!<#G{Pb|Y7%Q;iWEu$|PD4nKYpe?(!S|^G1aJ7$d?r3&LW-@f-t`Y*3OpAd6R;zW`fP7K-f z%{jcSa^=?dQk!%l6p!Ll-_xb@X4P2rn@5-*g-K7#CyRaT@f9`?u74_FiTK?vYQ+Pe z2E#oo23-Tg+{jFc`3!2bE3~H{K`Gg#)r`*kuFnXzqH}0OaLTXM`P15`D)-s@)_Q&W zh$suT^rb=LT4&qa)a})n9PV1s3wArzOX!y^*f5u!)|u$vuD};ji0^3GZ5M#n*n%w! z;r#7I)WjJYH`;rF$`fO|gOM-QTJdRVqfVT~%|B}Z{-N1@HH{bmBeYjEU6 zNP5aVD_J2m@jPKn%j%+Wfm*7dg6-SXTm}@(_zmIS_&&bbsE|s1{&RYeRf%Siu?|xy zyy9Ns_;V^J>Og*$w*9IgWzRKJq~EsJ@CW{9WA87s0xGzvpX*yRh>16RA0B`AcMn}6 zP~h*?ECR^(rX(bF%0TKQ{wtNm zN@0mJ%!|g@$x>mrPsQw_G@6{n-77_^<{JJ( zgfM4{z+kB(gAe@VLX~!e>jaBx{nikdi*sfo%lGUO1la>Gj8V@Ckb5u#*!#ZEzHlC+ zU#!P6?RM^&b{wl5?~-WD2rc)ExN8?q*);G3*JaSt+pkgmr9ZoThK}rs(P-bbgP`ua zDzALCF;T$1Zb&dijrQ=x*<-g{`NieDYRC&o_Z}a`%sY<2$bR6kerJ5SDfVmX@i;!o{l7VqnV3e|4^R36<`WPOA^7IG2)Jm0;iD}ZkZD{mmH5DkMWu6>ZqGQ9 zw&*e)hE(bhTlo?$qIVocf=z8+gE+<_iB#VV>OWfqU*EPmsVbvvy}+kGo-tf4M@(N-%Xw!dY`&+*r5J|fnB4o zt!#_wA%10}EyUmn*Xf)jRByw3=g0n75%TU8fr6f1Yhmuk&_T0)>bR)Z_XRR92e7_> zhu{85Of(~j z@i&dE8n4dY@)4AYcv5@x;PGbU!#3u?F4T@2a$hj9I`Eq&1IIT?1uF$^|0K>F5IwGs zf!T)+f^k$W=`uF=AYeKp*(lV&4+ZU^WXGZelD7%vmfFzOSlf^CP7oheSu4IS2u4mH z#_N$V;yC6rNcG;aU>16ao*n6y0f@4SGiht8a0qt?Os%sukDC58REG0Hp7}T()Haq0 z#2c2aRHp0+{_&_(uz?>O{v8k^fM*kXH2wPo6Y4ZADeF{JIHNs{3%%?TaViNDQY&y& z`X$2Gm@#cY>hvkZ>-_XOKS~q?M$vNTYLx*w%D}Gpon$i^|M&ZZ1k2s}gt?(jFCPbk zo-vpdU}GmwVqloL-ww~~Wk`e1Lh_=bu%+MTAonsI=NGqDd~+H@S&){=OxCqb%i0m# zHPmXBAYn7Fl6oHHxzPQvI8}4$H9E?|wNK5Rb!5#Jx$B4uhb06p$}iSEy4;>Y+fQ%o z9Tau*JAR|Icq#T8;fPp8I795^t=7hMVlnhTLC-kPsc-zphwpAj;oEVCA3A5m3-0Tw z>?~-lcy1ZP`_kvyoWo_Y{9)+i_Vozl<;{8qgd4#9L^LENoY+tjO>}AV=N-o-#@1+) z?p*w^{@XIDgyF&=i_$O2Lo^AYAfIN?+0cEd%_7uWe~!bigb6r@U}**~PGmxn-=TqC zN9Ja8=-!CUl4IpRHuRR&Jr%IV2D9hPtRcT!daGk)@WRwKwBMnes$K81az?Wq46*EV zg1R(aF;^&Lm)Lr`pZROigV1|IDx~;81iOuy6gbSqnbyoPA83)5+`4!JD_JXwuQ8b0 z*<`tx{u00XX+&J(TDPmx+pO1*9yVt)SJ}^bEu4=@mRq`yBB=G6*PuvLqLM<{u%M-_ zR7c**!=R{EG!Wb)2Ksu2ct1XqOJ$HkBuYWF(23$ou@m%~5XvqE-Dkw2R&3GlepSaZ zd&@rbnKh3$u^uK4N&W`Tn-QfK+>InI@hAPU4@B5xU_Q5BCR&7$`4!P zimTS$H;?o<^Fvp+%fN!Z2Z1zK{{sF8sT79f(=?=dD zgjDDEpf@+JYvz#?HgR0837b_+*ie`f9x16clch5i!c^LonG zo29WmTTZ(C)y#0$Wgiun26W+%_s;v5m3o$@;QT9^T|e~XhQ9HS(;3M zY^+M3RjZeb^I4SHef;G$tUaZPs25txfZ`#?HHop64G_AV(^>hrs}H8=RcFcdS(j$$ zm;7FJa%eRO4SdB)B@g6}Yxl0@S&_$3<+}AUjyTQ)sIS(-mT^$?QZY@?&i7XK2C%RP zIB&1x3U@m;gri0YkPbcroQs%LH@%K^{9bO)Fk7)gJdrvD%)LdDu!naA%T%sOqrw8a zea4^rCExEblK@geB4j^o;Iw29BLyPOQf(}-P1TV(R(bepHSX)R)6!s3GISMpSG64$1-9I3>-k`r$})mBt?&NhCe1gV?4j?$Pkr;r=+>=%-k@Jq#8xU zk_RpZqsU_9>Gq55(8y&@iZ7BLZ-VwV9u`!wE?^ zLo{t%XvvW#jcKhKGY~U;yUz=3Tx|2`X_HLy`mPk|h+9kca>GwO&tx!#-}@<$Lmz zs6jz$qTyLc;a$A<&(eN!zkS++T%Dt8A@cfk2Uul6=4*naj;dR$sYR4DGn-zhvXOy2 zhsess!s#cri&YS+xxc*6VqcVl1g7umWpQ&-&(y6>esv3p*GY%I#uh1j@b zn^G%VCVAq(9SF|1QzXKE$OEJ|xGhekHQQ|+_MDVr|av#!yp?76Y$U#~iR0*xmtJ>5rk zWR`q}V+UNR+yM8SDvC09brJxQzaZS73f>%rW`f_kGiXiLnQzU6y_KXhz02P-N%G;@ zHX7zS&KOT_tJ#VYoA2W#6`VStkj;=G@ohsCvePcDHq6; zOCj4|FX>zWa6P}OAHO#tUP4NX1&23VX$ki_?iRthBMD?QL_(}rLX3J}K}ZicS0R#W z&h6ppPdR_0XWhPgUx`_5F`o7?&C&Vm;LnS%=N)A3d0Y}?hV_QK{ue*9?fPgCUc&LBrzY!+yU&;Lu>91dXr@4)`SI{9zZ4w zM1{(1zq$HqJ)WhHo&#VdvbAkyl-)jF68fSJv9^eKccY1$sl|VG#We#($mmElc#(+K zMtypRh0Dr)C*KmyM<}0uvZEI%WE?PL9t$J9rY;@3-FHZ#_fjIZ16$p#{4mr?_O$_g zhLZL6vuHRZyG(2cQQB<5kob+Ob>#Z3ui<`#yNM`qW+gr_Q-G!#?Gfqu$Qu?B>5mU^ z{u>GY$cA^TNthN3Pw7GMqVzl=u{%24F2}&<_j6#T{!*LFV80(tJx!T39F}dE>2?tC z98h`7IrD`|z(u>GToifZh`*QmmB3#dE-I%lG$0U{4xX;{p)=*{AJf}xw#&wl(lY1d z#{bqRAhQO7oX~G>Y*tK7d8#^L^3pxjCEN^Zk6B`KEO5T!<;ib9A)!8$*+Y(M=kB2e zd#L^0?8aN(EqX>}03#T<-fAAL+IpAYD~G5HaQ(2hc5rXg!))wG&M?wCHoA6nGH$s# zrAgU{(?$=j)00pr(s@9?WTw$>ZS!5nYP z_5$5|U>`$oP0De%XMr{`v7xmr1kIWDYX_bOX-U!!a`k@lOWt3~B)VR*SI2E5L-i}( zM&8Db@KcDMw39xpdx4c&zs-4EaxMAO2kjD=;lm(Q((Llne!7QdhK?ooy*3Zyt)(1L z8MrHVA2DXA<=6a+D#a>?xmI)iq-Mx@ymB|_ipqHIaWj0QIFgcpT*nPtaF5in_p$}Y z^7o7PezcCVU*uoRJ@qh?#+DUf<$SiECW32e$%6~vzIMg0$>7`gcfL~v1CVNNMLoOi zW|*_hd>)uLT%nfDwIYEx)4%bH+?N{aJ^MEt`X(J_B{iWJ2z%%NWQ`7W``+u?^n58_ zsB4j3(Es^s4s2{}JYW_~KFd8<06jaz(*I(8}T9eR-GRB*jxRIIYwl`S{@WT6KL1?NOd zHXKNmD})#7J)Cwu5XJCZT|qci`*&{(szZOBwO;tOlp+npb-gy{B(LkufWn^P z_f-^S3Gm;STnv}GJ7Z!}i0eXY`&8ALRp(Rz2W>alROCw@J#_NyPWB6_EaVC%IfQa? zZV3o+!dQ?$IL9X9v7CgztJ*LhS^Jo{f;z)OX|YagUBK>V^i(e# ze1Z=96|bZkSa-)_c6k%Qcr)HX`X_(X5&DqpQtUU4nn6Sp@AAMRjiw37f@^yW=~%V~J+sk1dDg!|(~MIxgBA&#V#D ztv3YHYvmVb9;*yT=9%^WqO^XVUx}smyWEA=utKHh8N`j)j0*UVRFe%D`I|~D2hQAA z-@I@L_rJ`f;lnhFsP{_;g3y{#TZLMj>A6NfXg`KsULuH^(DQ*fq>@OOIqf5~o*wD% zYOhq&3%Lo(h9oXd8|XJ{zibule~6yO$`@ zl5`cBf9N5y-DLo;R=)ZRRT`SS?0%Ss?eWE9b$8O%7eZa0;Z@S9>%0~BaEn)G5?HA+ zpXw>~avol^^ofgDtWy~?>_@ESxRiWeHQz>-|7-Db>x1IwyhI_c+5D()j~6S$_eF)N3TkE0huJUU7|2oCRfLvJ5iryBOA*n?nM!K5TV%w6gsrlboYJ~ z%qTYH(P%A8Nm_fkW>~YXEIa13KfV&cmwc5^+UWjUt_LXC6SVj_*~jf-GhKV7t~i`u z%q+^0NAmWb$bFOW?HUE4v^@INb-aCd@fxq_g_xdE(}5` z;nNJU6X@quZW~A294U*+$~nnr=}$D|1kE2i%Co?u#xpPA?acvQ%J`3{)5rwb9-bn# zfwDW5sJh=X0JeQqV@Nkd=Qy%jGjevtp8ls)MFsFiY!kFlT`3O#rTY#^kL8jc5Du8| zS~HeVusf{exH!_0ZJ4JT)6f`ug?6{osb0g;XSN@VxK*h5{}jjJfj>4ol+BK0 z@_sH|cH4?33=cbxhyvcXM^SM1<#!+_kEh`t^8D!$^BT=*kVu(%FulRd7x=reuVV0v zOVhr7fE}6G$dd@-4g+qCyRkL{rvViqKR-O{ee21Z0 zKijyG&2#}78vp}t4@r??o9}!+F1o(FYIndBn@JT5|EZ;*hc20FrjASSTDVZ{2=gP=)hH9$I; zT`GQ{Sr`=YrJj7VhVw}0?it6+PUs$Wtzi5d@Ul>vn$<2htCM+Onc$9sFLJ_`lS6RL z8yD{B^V#eGTA@-nd&}l1V-w1l^5-V%ugtvtoCx0%ZlZUq)lJa#E?jVt?RSVOe<}la%7Fz zQwO`4M+;{4uN7)U9$VUlxPE;ou^pFa)&=3G^acB59bR~q+l*2pacl7&JoK;&WflGT z_JVHwQq3e4)OC}o7#g40G6Au`#q_In<-20c?SFf@lv>9nT7-VOIC}xg1qXZ*t=6hw z>qYMi989!a19jzIBd&XH?Wl-L)K=>1^_^{);m47!c%tLH1~F}s$C24{q2W$SdCj*- zMXL!FND2yHltuavrt9m>;<#RpR;Q<%wE|a+dw1BJyiY*{-mjqw^wK?2y5M^0u`K1jve|P`?8!FZo-Rn?j2?bcyPY6GG^u8GP#K`$j4E4 zkiVchP*3qL@w?+@>`>VpMHj_C1s*gQc(U|7x{>S4=4u=Ry^&ecqKR0~?}x5+oxAQS zTm9#QFa5MPa`v~>p6L|Ry%<2w%@${>|BbM*j2}y2Se-_&oqja%L}MsxY{6y1Y_Tv(N*6f)#Ic+&evXg65n?w6eB^oO*B!o5yLoc!5jy{^&IO>nwh zN}JqWuOI!I8Lip8+Cjpu;h(oZ4vVxN{@*wi%wXH7D<200st1>#u1h!!@d1cyfzn51 zwv@Y}M7u!&|8T(&Kw=6E2XS8Qgg{M58=+TG3V$cFM;=dLM;9 zog{tb*HFf)O}zue+w`2@Dk9*b;7Z^_B#;JIuc z9KMIW$W*S)4{@-prYJy4*bfyYn5UPmIwaPQV+4u2 z{px_zpwM@k(Ycl5f8hiFVN~HTRG=#qe#i8ETcja}svC+5YbMJM z)nAqGA|i64Mon}rP`(9Ec2WY3DManR$9QklC;6lVu^1Q`XkV7FevDErbjxJ$ax`YM z%VlLmPFH#zfam$j>|+Hp2?XbU`Hh2+Dt`;QkRmSHw&wOP^sS^vsyC02SGwE18O|Fc z*l)N2h$Yq}FMFL;sEmNtEU%Ga9qlz5m89$Q$3)-JmpWD%5|`(p6f;a1L6z|LS__3g zR(FhOrsrvoChDLG*O+9Q*oVx? zQ%dZ11XY8lDLkfgx1oYyfXBa^nLi;Ii9gJ1CS?Lx5- z3NYG?x;JzW%i>FhdQ<1s(;!DWR9?+7IO@_k2<9vzTFnEI=YfB%RJU6xw&&=({g@+B z5CrK=|&Hb8aBpR^lMR%>i$Gjn$6Y1$Yj-#~BYt4%fAL+$liMtp#5 zaoetXicb%;@)ud(6}m~owBbLyDk2m_kg6jUuIXa8>T>vMD90P1t}Ae3J{Rb zpK74ImljaoOQN=lpDS-P`&)l za#RJlu-wkw3oh+cHN{sfr|EcdB5}R;BmF)&P7fRoffd7Ho!ihYPI2{6-oZ;Ci*ki@ zcu8EF{3k09iSCDUHdx^cnvmjTXV>5oqfydESg?|Y;7}F$4_Z9T&;I+U`ZQ|0HPtlc4=ig7*I-37Wadt>Ak{c(00YH&h<< z-ve$9-oRbfJ8SBLjr}W4l0lj;%yeHxEI9?+~R~9}<@PH;&m{a`3rITQ1EnCek3PLgr}r#*2)#zl(O> zdU@aIVNZpt$-~~&Z*G&J{#fI!5@@Eczzy9z%+)z!t{75Ia$x>2kLT|ixp=|9U(**t zH|t?7?qQ0byiJ*>O6UEj-(vYq7|_Zz%yuplxMj@k$YV)3a%^1sVo23%HM&xc%IS%WT#y>QKb4Og#GRsoq=Ij#h2u$38(>g zjF^u(@hSuViUa7FgpOgzZwqfMwb zsS86Zqu|YYilwRG_GPofPPC;X62W#7x@mj&bYH7ZYXbKcU*lktz|Wq=ep&29@$qXZ z+NEB_eeYd+#Xr~YK?S~r0(mTVY2pY&Fo`uDUueb9ZI$c>zSe*~Kn{ca6uzHR!O zimY9&gKyMxUx?11bW~deD|?mEm8}FZisg^P6DpwrZ^2?w*@<~zgJT!t3yto6tBWM& zo8vea=`|G}DEY54)d4GWq}EXbzCa|G7GmD&+ocLW!LobmcAF3E5LgQFDnVrb3Ham- z4L2z(xpWLGE&k|Lju6A5I@ZbDl;v*Ym@9`MY&tgOg~y=2UR}NtZ%mrzwrQoz_q!zz zsh@EVdx(Wi%y4)sbdZ-Iqz;WrATfl#J53z}Sj7S5DJ5RTrI7xH^<}+zksjMMy z7Xv4$6xz8Bxu~#TQue#k@AkTPxHD6j85t_HyEEKqEfdR zjnW+T4`~&6&}o!-G1H36>->_uH)NN?Mdly*I}vjQ0PP7mXZ}89+WnT$kNbTJlG{H_ z$!LT@cs`=>2jjZ~R0uopsTEG5MIaBD=ScADqe!}R;}Mz>VV}1q9~XY26=yo}7;}@u ziPP$ws1$j-(j5IdIp7rj_HG?2ua3$SU}Rrfcx5vNzw@^FyJCb-iP907J>Lo z+?GMMCB7=O>BclAUaPu%a&O;_R4<{$G~-p>(}qVe9twvPQp=Yh-ZAdmk$gRWL7#5? z(kn2InOoM#D%RJkb)P-`nX7aMACr)RTPVNK4?i3mM_}AmF#dfcu0~AbYTW!sx|?ruD|ChW>6Nkt5*DK4{KVI1oO1|m<(^dayxskXh^|*#l`Jz|E^Jj~M)Ye6q@dVjj9#GI8{KoCj z4p&9g{71v&o)i|GEQOTLt3Dw*F^DDP4IA??-6<`g!*eG-O_tu!zyAV0SBE`T8zieT zT({AGDHckj9Ut6b3DuTCB9O725rZ^rTZjmxV_OhxJSRp>!msnF-GOTM6sroal2TD$ zrK$6Ae!!*L_rR`7g!6ph&ZoD$!25G)!oT~dK9XAS`cT8sz!mV$^7~Qs_v4pXeC4e9S&ig8NJWOp8EtQO>EE|@RRj!-QQ~ol`<}#pkcvlXT}p}cIQ-} z@)5+MlU?7^YI$1U5byxf)r9O@3(KZy;_Q1M9%K*J^Ysj$t}V*8T59kxqTVuSXt+?N zcF29zza#!Q0jZh$elYs<(|-{NP46Jx4>Q^+TPzFm!R$#fJ^$r>$|cOe=|C__IK*QR zhxIf`jSHdgos;DWX|BVV@ZMA7nASX7=OFZ54xeCt56Q6nj_~-Xez11lr2~O;!7jRP J)m_l8{vWSFzApd( literal 19612 zcmeHvbyQT{yFaOv2!e{_5Q-=*h$1bGq)L}`^U@s>f=YvQh?Gc4OO7ZZ-9s~ibd3x# z!Z6J59KiQ}@9(es=UsPk*0^-doU`|{KhNjMy^qS0&z?w1K?J#ZA=p&C00MiPhA_vNIs%W#6BW*~scKuJmK!i* z|E3CSa70%y-Qf|k7ts3aP)I1--M6h|Y2R?#*-=Pp<@xeIMH2y+YNxY8A<(ArNzCMku-A7Su5>J6JIp6CiG}OqS1=ar=B+yZUcKOLJfD~~7WFG(cAply zkHtdE?CiW>J$2u?EOm&*Vv!WJ(+vS3d(lDayd z4D^K))Xg?L&Fohs6%qJO#><(cmIv3Nv>|Mv@v2Ij+JH^%$9@ztq2w#9U z!c77Eh1AneyI`l+edea(m#QwstYXpjB3$&6VHYN@+UK`WWp&@rOjP}vch#L8{6&;o zQeJ7}6-?*0SW=-%xkQ%j(9TiyCpdc{+Rx&mFRf)0!q&zw;SEK&c=YNg%rWm}MCjHD2v}ziIspyVa1_)yest@g`h{h5Dq-v1gV#X^c!?2T{zcb@Qdd7hk31AQ})-e#fF7%n#S+s>m2iDzK8rd9<4d|rSg8vXLsDrgRQ!r#%P3hXB{-z<~}~I^5+%Q@r4u6`xGwWK*(@fgug?H z$ngo-Vm{%-P4xQ;u}s|*D<8E>9ISN1gs~~aoqam5i<~IS)EMXG<$bbe`M6bM>@px> zq#pkz%y(Y0(77ZjDW6Wfhn9g)2CmizakSHH5TrkKWUOX23+b}gT-m(teK;UVdsB3+ zxTR4ywdByH?E31A0xXr2uiNh^g`l9W>!W;M>JHV*1hdw&C77WIhbzhB32a9)5o zZG4w-aES0fKl~1*W8?e*vCg_>$zEeW_4k9`Bs{=m1yyXXJHZB0lMZuL$be|I8XxUnnysc)d(rdj&aa`C3Ya- z`#Gxn`nUg%JVb`2)cXS1Q$=d^jmAE$HZOwl@r;V?J2oMp$ML7F)_xJ(ld;CjFG)z? zgwCZ&W(#&jT3jHp%Q3|lCFKp8ey8}F=-_y%$OtVZ&%pQlDXdPkM%gCPFDcdJ9UYU) z%F~^7^l9U^Q(SMMrUTntWbWYQCk}jv@H!QAyagDXT4oTAcP&xzfJ=kYBpZ)JE$|~w zN>T&~FAK_{&lzcX&?A*b2ew}QhfFV*7=9YOJ38x-@69vvb0@bH^%RT$w=Fx*6yc*c z4Nnyw5v@Tl+9>!7HUA<$1*8E0gj#xVQ<8T?BVR!8cW_NkaWV;Qvfj%?2!gQv!na$f zTVcfP1nZg-(x+D|+tO_I5S{o`wdTlxUUx&pC&$07buTaPcBfbLiI;@Thz$xOngJ)Gw zZx(|66eBOkSUp3mKY-r6S1zm{70-q}Ya93RT?&+-kRGfI#LF!f5D3JHk>U-!NF5l` zZ7BKpGBrY|EY(c0v-CEow@xhvT}w`v8acQwlY0qQKHsCQnKA6?3&qNn^9?b=E)OQ6e(7!^@>8!?PAV zf=kKX@fg!?)$QWy4p#!E4DiDLmnmvAAOupj2|}q{AGO;Ebn&$VDHkxW71>C#9~!w# z>cJBfeN+HRk4ElKA|E6yO-m2A3G4cU1A$T^>z-H59{U&gX(6%O3}^lIK1onsoR;B0 z+}w15^uPpR3F%AJ#JQ+t1)|Ok%Vs*h27dXI=MUcK2_nZWElZ#KxE3BR!%rajSH5h@ zKwfI;mXW}(8j6ZJRJTLPV_JrB5@I@0H^}fUvUGe7HEd=c#8*wN43ApdqaySL8@XyAUDR zDFYl&?9BO-<=%q&jMsDfX+I;(nZ{AO|Kb)5S}PrH-h1-|Ixf=?`}d~!7k=O{Q{f0J z=_`9&@rHU;On-4#%nMMln=eoDuZxC>_$w-9l=-bcI@PVhEQ-N?uU|;|Y4zKsqc_dH zh?@#=3-|uoFsN|A%xu2mXxzEP4#^{@dC`F*55W+#u1crIxFl6JALKo2aApCXDIgz= z?fBSO@2HMyI#Ed++my;+N>W|TeJpgDeWNK2yL+~Eb3!AD!Qp|I)fy_aL;tAb3gTR$ zb+BY*W<&5eVkkYdP8J`>W>o(Co{yVI{c~2-+R;%OIP8Jr^)oVpzKTMorRbZQ(!|h) zRChW4)mtf@dU%PuDl>w9fy67TRp#1e<1OP*VjMkgh) zqnpM)O#*!mzt$u3*M<|R{cnNIMfez|6=T|~=!b^xrJrmzIu3{))}tzCNrx%{zp>3R zqv{*Bz1Xq-b7w?-KICPUg6$j;Y8JWZ|B5b+s+{qvv~=+htf6Y#VzZHB%*pUD<3wnq8kEC~=K6@! z=R|@1UxuqFz|oqBwjWVqeLJ=mQx6Czw~d0tDnhF#)sF|l zy29}R;sj4;5#lb9p3b;IKd-?s@kz9{+I!Yd%t!TfggC?=RxXYWTI#cCWcaU=B-AJZ z=Y)c^zutBfNaH1;y1mNvl?ch5J)pow0*Cw7>ANiEJ)3j^?dUFSFty04M_E9Brw)6l z0&vR+a~D|bg3FXux1UyOsrca*zg!l)JHY$j;Q6 zj{ukiDhpg=kB#YW?9s%rc|EG^5Qu%T&hv2jcvH-SyS!3giH-`di5Xo~K-#C?^i(1ym0vRE`OBz0B0U@1j2Z zelw;c9Ekss>f>}v-skc-?W2Gl$|pa&jHL$d6Tj{$(Gk-OC_<2s1ZiN0xMJf5l|J7m> za2A3>;zWq3IAu5L3<)(}m~h~Om*O5V)VSqw?;FQ_Lu^asDNQ1(bb`afJyUGo_Ey0X zb*cLNGrd)h@*nf`&KZj8SaBcBf(Bk5KkNYK1AhXA(Vpe|lkaxZEgI|ZFtSmuWQ%N~ z#4eoXPk?^{s2{d16m+{vwr;TJD^5fZAse;#HDiK0C6(E0Olk$QE`LmlGioo&{)P>vclOo6{Rm5+tG_s_CoU{YS7PKbbzzt1rfs2xy|8zk09oh5W7=xmuF zyhPA9AJ8lJWobyXuP&jxL9r(8J1TCkGK1}pq_gJKMPOOwHBL!pK9PMTC}3!5PB+@8 zNKv_En9qku?^?a31T|mma6|T0X`Xt=rrjUuZKBp zHL)LhR<$o2cnVc+4c(uF)b0I)y$ndwYQ(K-uZw^_FC1O>NcTa!2A=vdS}`z$2ml{C z9`l5X>bW6(>5J2LGuoPHoGzZl7l43gIg)y=IdydVt7b>V74A=1B33FMzOtK~g<^}A0heVrn(>|0QDb`8^z)$M0Atrf7G50m96@n3AC{R3jX{rT|7xpKC% zu7j)iA-V|wpAtK|oHEk*%Z1V>(`6NL@WocWRMQ)gG>OlD8Sn#3sEdCy>u-P=sFzXj zO919K{!%`dG)J0Plp)(Pkc|qbK0cir$szUSCtwN=eQ|H&9}iq3UO^g*=2g@y^OU&9 z=LlM6f%S@0S@fXdmbjB@mne_F9AY+&zd36fB?%~Ix9b>8T(J2lrjHM8k9LkGQA%lM zjd~hcRgxq{NkjFe%S@-}Oz@EhNl?hXh?d}7371RBaU!#7&9RaTeSJ;48+U~2i^Z*t zYcv%!q`b{zzS+2Vy-fe8Zr-}PzHQ+!W3FW_H=&J=RxS=ME^*lP1||$w8b&0QXT7~uJ}X0Xu=w)wqiRLMcPa}14m*|`Q= zZ$f?B@&CLaXlshZfR$pz;)HjxOFx>PdaJ+?sK8lF?7pX0q5{IbR)iQuqsI+7vyRY| z+dgOh3|0gt;<9snfjFJFJp^iSF6Ka-e$3y%Nyd?P)M$Gukt(p9tg7Zj)#DgpO9{B} zf@_nU%A0F9$0mb=M}y#?j{a0TqGGUH@UZ4b_iIN574qGZuyZ^`Lv6Ewk8SnbZ4eyY z_{FGL#rJ0hxZ7jvELif9d;`=rCmM8Hdrf`G%CP05mAS~9mw_3$TqX>cDMVj(k=fA_ zzYgN$MhG&6a3w15JSv!JWA>jLsP7t?tX=C5ZFc1BD^APR+Z;bQHZ9r^K@}cpfe`dI zqurBiWGcI*;2_DiwGNwpp;V{D>Jv17quWj32KBl&bs|i- zLv{u9(O6eraJ)8YbFZYb4(6#`_3#i}a(Fhqw>5H$6(zc#5iqtnR3De=Vf`s`5Fral zdsM$Aim*0%o;PCHz`1{V`vQh1!qH>3TO$Rx-_VWU@VWi~ zaQwL<1eC#l0KY%?DNCu)RbC1lwlL$JIjz#$Dww|8iW2QwZVM|*Zqovj)4__A|)lB9Zab%WE=a+KF8sy;`Pt`Nlqj}yv- z(D;@ekfgDWMzb^<5CX%z%&WGs-&4P9JJ>!M2hT{`S#TLdU4lP_gC6yd8)9qh8*N`k zTNFqMD6PBN*kOA&!_|GwwFZ}XY(V&*M8L6}oO%3fDG-DAIgNw**){Lk-Kg7qNH<$D z-EbKsXM+dgpHWAA!y1Xnb1SGsKPZTtr=V1Iu)Boxvdy5b+fV2)uw|>TQE-@4h5A>2 z(&?7+A%ud4Ft6UIje$SBqf~wWk5~UvZM6k_6cHwN@{=KVhWOYT_UdCe5QClG0vLd@ z06zZPX&rp~_6xwrlMztf`F2}^Z6%yQ=J2xw4erEGTZ*9hT>Mq+5=TT zU$Nn*YWKLpYCk8t>WO8HkR0s!1sM0%FccH8^$@_E5;}_LFe!DbxKo`&R?@^tQj+Lg z$dHLr!R+@vS!}hL_pL*PfUwz$ZPg_D+=*>2=+;>`dupvb0-pfo^+%GQ2}u0yGz)ql zLBA;L5-KhEh~Xx)Ojlq~IShA%IAXeGB0NUQOA8<<>vKlzn#K@gT+oBs(u&V(yoU|W z2*9AjX+{e@=siXS{0dS=8&Nxs?f`pQt)c)Y`Moo4Pti8-PW95S(u3M#qcM2pj8z7; zCQnDOdu*Ote>0dFnmof8P9my~*BRUyi#HIFrHI{i2BUv%90=QhjRRqOh~7ME>1v!O zM8-#wd8z}S?IB>`oZ-eVe!T&*#7*8&MEd@9Fz@{`=rqtg4^Ld+DT!Nte0R~|>R^+u z-);aiFj?m4=UUkQcrP+e2fBh{?ERheyI>K^t=U-$@@mFlioN_vv93l@Z0V@j#*@~R zGerU|!;^3oO`)Fq1c+D3%+%Q=MKN!Cpo+^KpdR!4*#3>GcLBw%4PzBPm8c;XmU+a%SuK1TwE*{LVzREjWZ`{*WA}lC zd?T)H$wi7N<9(q@!b{A|Qb0BrYVy)fFoi-Rm{7Wvm~^iu{?j#=0-LF#cJfcv;~bBQ zRF9AEeLC`0$E=}1bpl6n@2K>>6zea+K=lR@-&5Ra#eEzgfBT6G6UNV-wE?gP3Q#bxgp+{6VfBcZ}0IqH6A9 zP}x{~5E){o4|BaFYu#&cxm{7!y9=$hcmMd)H1x$?(g>bYI#!~@&x zni$c8W95YWwp4GRJl8UHZC=>B`Jx{Q{UtRekbx5pTD^ZSqnJB~x9~oQNCM|QPO{mn z)FPsu&HH7&275A%pjV_Us(gKI^FyI_8ms7KN9BNv03IyAbG)uJDTekj+@Y})4csTFUT9grWoAXj zfra|YCyErvrIR+b0zfkU)Ja?XH1lCE_}0{;DzhxscR6G3*x-!iW>6K0>oQYtp`IFI z(PMus7$jQZy0%5T{R3?8+@t+3R{05{=nJb*gYhuGFF{eG&_oMUG#Pk9CH56%B26Ld;e|#NmHD@?mU` zisGA|`vV88{a5Qi0`NI7d2HT!J?cO67~XrYBrfuK_x5{1jfF{?ndY?}@}~P;2f1!M z7?B##)(eskY7+Uaz*JE$)Ri9uEbYQL20|E`j`?dWE-Y6#yK_smzlT%xxQ8qMCgPo{fQ zZqLMl0{XCdw*eH>$;hUUzK>&2xPNmQ8z5YUw#hQBZD600L+70Ywaq$ij=|Y8-Zotd z2J+z-nt`_%7#C%`Nn-Ho&8X$^GxE&vwQ*#_x7dd3!YRbnXKkCm_0~O_=(CRe5}qQc zXwnN(G(3%Vzkl5Su%vJ=VH%0_w+_}XS^bTE7&cvkG<|zORg!d=W$7tQZs^;vTz_! zGinVGx>6JRJgWA&#qF(Emh7j5 zl$EvB7%S> zR+6G<^tb*EGT`Q;rqfx+&j=A6XmuOx*An`##i$2aY24Jf{r(my8>_TO9EU`BS4B9$ zh%RL3XlI|bkyChp-3vc6PwUF6>zmBVC3|stwZ{1{pL=7~qnQoM{Oip;|YJ5_pmOnM+vc)ixoHjFha{Z{FwmJM6&#$I*99k8;^hi^HPU7MM;b+ zMgloN=n)vwSKV&mTRq>6F%$feP0Z!?{B`ZMu1g8_@B!v=s&(g zLHc(#`Or{!+5Vr?+7Yar!P*fB#sd}!bW}Ajx#`SsE`;;rLi8%Gf2OA1_1|%=U+Plg zKt)Q&u{kcQP0p+9{?gH%)JJK-!3OJb@LoV^fLqzI6VP8=FJBhpOPu9XtCp z$9<y>)exD)$Cj8mxaO+KA{XGBMWzAK{fR#pBu?4KxSn!$ee4j)$ zpKa+Z_;lDsGwW?Zje4sQU_;oRXvrSL%UIEZtbt1HBty z-#Wmw%%aAo-~JiOcN6+wgJvE3pQYD*;Ok2iGLlL}_hU3_suJ?6$0anR{%LWAu=F&L zbwllJJw$8lz=kUDIg0ghm+9>LI8nZ3i9PA<#vva4UE!rb2(V+976elt*JyVlT{0%X zCw^D{IX0xR%&Sc>z>l&iF_=xk!StbzAXCozTw~en$(TUrw!wP$7@LL~1yqFq&RYVB zHn5?1vO9tx;P^uDa2bz59ulKwpiI=+Xz|AWz6s3bM4(Q~5_6cduAex{AAP!GC9-^G zZD)8#K)8S27D~-orJigEjDlR)@}|4IfLWp(%2jC{ejc=dps&m!o6ya-vv!&J56qW0 z>;jtox&eMQA%JDW&$bWG-=aBxYY1fLISO#l6#H0Ubxc)|8_32?O4Gri=UPfVm6O$Ts>)}n*Pz;%!#giSrR zYR@=nxka}&*M5pzr!~LVd`5@uwX(BLakmpRB(b%=q*AL`Nj^umov%H)G>%PXc;_e+ zj)-=#FmOlqrDGbGH+*K{XtYTGj;MO(a>*NHBT3JjOpT~V8|ccTI~`?H8|ap%Veecr z1xDBFSp`TGQt?`cL+R^*kMomZS8SLUxV_)c5nGHBx5TwoQxcR%vmQC^t$b!m_Oy|% z-gBdHws~??_|zc8`}HuAhhGkQq(4;SO$3dak7uWdt5IKc-lM$F{h+oYS!d_ZA|EDG zI@u}Uz(M^IMc;Ad;Sr?;$|7w)S2Xmqkg}$%=Ywpmo%kNqhr0}VhXO&IWBHU)mO3#y z|CBq-SG5!MC*!{uYJxK~wjLFAuP*BJv+QOZlZxYhi)v}qpbEKw#OVn=qS;JkIr3*K zwS2cs>8&~UF2$&$^M(`y9~z9`70}<^euJ>nUIZ_zLrZl&Q~Ih6TOJD_5J+u zmLQe9-?rS9*=unKj@QM%>p$mYg6Pj}wpUAg%H8i1Q7`)TMW>_~MH6zfJdH;`vV7K* z(z|<*c5ZxVWJS@w*kkEP%4lCg`XeVPRS>o(yCdq}gvr*28X~U6V0YM~r8xPDRwt{whI5!F<@)GwN90Uf+uNhiQFlsLk6_QOCno#)^l|zs(zA zfez*H==B`+Mnnyy)_Nsy(Cnw~Wd`!bB|U08s-xohQ@@vK)x@rgaMVU95LIk;KXJ&9 zB%Q6A#SmR~Mrp3Rc{G5Osa@p^!d)kR{omLjpd&-96ogESAptiDR5S%`RD2{OI} zHA|H5hla>|UEVLBMY9~;vfr)Q>k~Ojrjhu_^#RS=d|#osr5z;rfi+`f_(70I-dyq!IevS*cdEqNYwJXxtdU`9yuw3k3q9+vm*qv3 zSz`FpO{3mj3Xos3=C}3}XUVvmzbz1I{J^nt{uy42ZoV~?3{R(YvV$P{N6?eu3&TX7 z^`w4T6t3^6EMgN(g(cly$Ey;XO_TFsul3#|68@px&(>R+0z-2SiKHnDYo+A6vGFZi^{BVOA}HP5)mL}ioPmEofa9+=_M%octXO>jWrrhe+1irEfqPd3yL(>k4pnJTHl>RXmXL@o2 zHR1+Cdk=}2ri!4`T}vzMp>~ko%1bb`Ebtv|laV$eO@1fBy5=BnuX(~7ZqnpfKIs1M8fr1@du-l6;^uCdf2^x%xho#mU!@(^qt|S zp)sjdaf4zwJeTarvsY`k{cg&58@%DC$RjhqzJ_VPi@8p^i%scLyO-xtJB0FU_SP+r0={!PVu{*R6`yKjNSDoJ%yFR?4kaTa%#L8xZX4>!& zO*gnW8@b|))Et}CCyLFd7J(`(yDdp3RK^KQH|IUjP6A