From 55a7e5e54f1bd4da043905a62c250137adf83b08 Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Tue, 18 May 2021 14:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=AE=A2=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 + .../controller/common/CommonController.java | 5 - .../controller/custom/CusWxController.java | 43 ---- .../custom/WechatAppletController.java | 2 +- .../libs/aliyun-java-sdk-core-3.3.1.jar | Bin 0 -> 107487 bytes .../libs/aliyun-java-sdk-dysmsapi-1.0.0.jar | Bin 0 -> 21092 bytes .../stdiet/custom/domain/SysRecipesPlan.java | 4 + .../java/com/stdiet/custom/domain/WxPush.java | 9 - .../com/stdiet/custom/domain/WxXmlData.java | 39 ---- .../domain/wechat/WxSubscribePostLog.java | 9 +- .../stdiet/custom/service/ISysWxService.java | 22 -- .../custom/service/IWechatAppletService.java | 4 +- .../impl/SysRecipesPlanServiceImpl.java | 44 ++-- .../custom/service/impl/SysWxServiceImpl.java | 65 ------ .../service/impl/WeChartAppletServiceImp.java | 93 +++++++-- .../com/stdiet/custom/utils/HttpPostUtil.java | 193 ------------------ .../com/stdiet/custom/utils/SmsUtils.java | 91 +++++++++ .../custom/utils/WechatMessageUtil.java | 63 ------ .../com/stdiet/custom/utils/WxTokenUtils.java | 166 --------------- .../mapper/custom/SysRecipesPlanMapper.xml | 6 +- .../custom/SysWxSubscribePostLogMapper.xml | 18 +- .../mapper/custom/SysWxUserInfoMapper.xml | 2 +- 22 files changed, 231 insertions(+), 658 deletions(-) delete mode 100644 stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java create mode 100644 stdiet-custom/libs/aliyun-java-sdk-core-3.3.1.jar create mode 100644 stdiet-custom/libs/aliyun-java-sdk-dysmsapi-1.0.0.jar delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/WxPush.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/WxXmlData.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxService.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpPostUtil.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/SmsUtils.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/WechatMessageUtil.java delete mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java diff --git a/pom.xml b/pom.xml index c96194afb..9d457b4a8 100644 --- a/pom.xml +++ b/pom.xml @@ -204,6 +204,17 @@ vod20170321 2.0.0 + + + com.aliyun + aliyun-java-sdk-core + 4.0.6 + + + com.aliyun + aliyun-java-sdk-dysmsapi + 1.1.0 + diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/common/CommonController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/common/CommonController.java index 961de15e5..928dc1510 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/common/CommonController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/common/CommonController.java @@ -7,11 +7,7 @@ import com.stdiet.common.core.redis.RedisCache; import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.file.FileUploadUtils; import com.stdiet.common.utils.file.FileUtils; -import com.stdiet.custom.domain.wechat.WxAccessToken; -import com.stdiet.custom.domain.wechat.WxFileUploadResult; -import com.stdiet.custom.utils.WxTokenUtils; import com.stdiet.framework.config.ServerConfig; -import org.aspectj.weaver.loadtime.Aj; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,7 +19,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLDecoder; -import java.util.concurrent.TimeUnit; /** * 通用请求处理 diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java deleted file mode 100644 index ca9a95318..000000000 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.stdiet.web.controller.custom; - -import com.stdiet.common.core.controller.BaseController; -import com.stdiet.common.core.domain.AjaxResult; -import com.stdiet.common.core.redis.RedisCache; -import com.stdiet.custom.service.ISysWxService; -import com.stdiet.custom.utils.WxTokenUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; - -@RestController -@RequestMapping("/wx") -public class CusWxController extends BaseController { - - @Autowired - public ISysWxService sysWxService; - - @Autowired - public RedisCache redisCache; - - @GetMapping("/checkSign") - public String wxCheckAuth(@RequestParam String signature, @RequestParam String timestamp, @RequestParam String nonce, @RequestParam String echostr) { - return sysWxService.wxCheckAuth(signature, timestamp, nonce, echostr); - } - - @PostMapping("/checkSign") - public String autoResponse(HttpServletRequest request) { - return sysWxService.autoResponse(request); - } - - @GetMapping("/accessToken") - public AjaxResult getAccessToken() { - return sysWxService.getAccessToken(); - } - - @GetMapping("/clearAccessToken") - public AjaxResult clearAccessToken() { - redisCache.deleteObject(WxTokenUtils.KEY_ACCESS_TOKEN); - return AjaxResult.success(); - } -} diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java index c04e5838e..00bf3fc8a 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java @@ -576,7 +576,7 @@ public class WechatAppletController extends BaseController { @GetMapping("/subscribe/post") public AjaxResult subscribePost(@RequestParam Long cusId, @RequestParam Long planId, @RequestParam String name, @RequestParam String startDate, @RequestParam String endDate, @RequestParam String remark) { - return AjaxResult.success(iWechatAppletService.postRecipesMessage(cusId, planId, name, startDate, endDate, remark)); + return AjaxResult.success(iWechatAppletService.postSubscribeMessage(cusId, planId, name, startDate, endDate, remark)); } diff --git a/stdiet-custom/libs/aliyun-java-sdk-core-3.3.1.jar b/stdiet-custom/libs/aliyun-java-sdk-core-3.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..3e339947f94422e7f391a826a4a915d636b9b0a0 GIT binary patch literal 107487 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

sTGy6O zcKA^@QexHzge~OK*NQ$r-h-NNQFY_-JVeop;q~T0O&v|5??(6 zWZ>rxr62L^OUdR|(5$+qtwY=mD)~%5^d9-A=kFXvSuEO9hd0~b_#y6YX+c6Q>B^x# zw4P5>+{vf97WH=;tLq*owOV4xu>B#TG^ z&dk#MALw8C+HS!BgZH?~$7O+W)Z{{h3?gLyjK7GH5e69vXgq!x-;A)|71z?z^n6N5R5k*^h=!A=RBV~F$t*pwY&ci+F4OQ) zr=EM}sTS4il-ZS*HYt5$6(FTG;$*8_neeB@VJA=$!k^Mw*=PifUb}af8%9@Ho(T0* zczE`PVUnht;r_TTq3D?xdyKvzj_(FT<3xafPo9dX0zWRa*)I@uSu)e2{I;Hre$2+h zca~Ln$@<0~1iHY=Nr9R{NLBp&g9uPF0>3W+U(a(1B@qN6c-Hg^4l}?D(l5kmdUBDJe2@2HB^xu!(@)a`vkz!8(GX>Q#4bb$|${Bf%QhC z!4*dd_fMT!CuHM|4!{fTOQfE$8tA3(!^Pw8L7X0qzvwi{-hm+FQf+VPZhkd0iN4U# z_zFAZ+}(}V4o>Of+Jc0w4v1q9ys`)Va&_<{<~Ysqy8BCF7C>r)!~c(Znt=fTF#kLC z{NDwG|M@0lN|LSpA_KzMoMmUV?WlpgO+DbDrR8h9EsunS1rk#hIkZcfs!zuy;7fUSoP7`U1=1DN$jwRKZL z%x!-uur|nOhJ_muoe_|-IQ}{2voMvGA8)Eovl|1QW|a6ry<|SgdKsN^gB~|7CTka< zSq$%K&{!7;l-~1?fF5*K%)kj^y0uHYu7M-%4Ty|dJWv*%g2YQ-FN?7<9mKo1pz`a* zc>kM7fnPn;Dc^||0uNxD@`!O67kiw-)lyL-ADF+Q)maf8 zwn$Q4uPXy>F^lZKW(um`+1#?61Px}r?RytX8$*2Mu?Kncg$sH&iN>u|j2TM2XB!@8w(-eiJG93OfhoM)q%*S{d1YoC01BzboRbx$Pn1Ef>|o ztO2ghwXtAd`PRCuu_D>3goA!U{jc0^6!F?4~ zGkcDjl>RXNt%&nG&ZeG)x0YsG;DEZq9a$f+FiV6xf*YS#P`~;U;DI$kSCl&yN3Nf> z*-jonnIQ(R&mbLF>I-ZoP3Iw+(G#w=Y@(~YwYjtP9k)8FYHH$~=Y)m?^~9^PIY{sP z>uKasEM5rDWFDf?0F3fT@Wx>F0V3WB%4rC~=v43qThK03@QNoqjB^>0AO+ z*VZImn?o-=!xzK6W_=JcF$W`V#V6>$x?3o7AGgUruC@UV0D$4&>9dllt-Z^CHx~X& zI-y0~_D|C}f*%{?`iz-iOkpkRZVE|&qIC_>h*rN;Oe6?mb1PjIX*F4wqq}g)ZH=$L zzrDY(JpWp*niOZ*=Nadx{Pp?Pwy7||+MXqU{1&(S%{24lbPlBd*XQOfK|td%S#;A(6Hjdf0t4Qdvq$cjE23koBEy6*>ipo+BN2;CghreY&f=Ab zc_KCu+kR<4VL&2)@Q;Yb0Bs-|KsOvXD#qzOP`BgOaLw-VLsC3?=e5LDo8<-a7C~Zt zHrJsE%a!O_D;zj8)uv>{$ak9&h3n`NRF}niX5i;%Zw?V}S7G;ejvq-CjBp8l%<^U{ zrmn)=`joO(E9Fd@B$7ndl~Rr}4KA&(A&BN$ZJaJE?p%c_GUN`H@YJa_nnzAqHJnud z2M!z^tq>R%86gU**rX>G*Wy>wTE?7PAM8VFM;Fp-e?4k&%kyM>x{#P`uQnRc~4> z!Y82eY{}-7x{i6k`mNJGqNH&Ld$y|7+|vMY>Kwm+A_Rq!uo9$1GUuGPHFukFbShm{ z-~$!q8J@GpQ1&DU9JY?dt1Bd)T2faA^22fCMTZGXH;i(IeZm?Rn^*(-b7LEh z(j`UjnPOE9Abtbs#?mfWHH{sbbswCK$jBL&vcDC>rIU)XH+ISftkBOJAt`O@e2h{k ze{pYWTQ|6qmiW4St}#XRJQrc;MUM2WWjmuhpKz93brzirAF6t7U1bZ9)~!@HuTY^> z3C!D7J71;TC(qW?A5Ny3hrUN~A@W?=o{JTql^#173xaer{x+Je)~Iybcy6n?8R8qS zmf{F-gZ!w^6Yjh(?ce{YrL~|?p_BYGBp7F-DxEyZcQ8Hd)tpjy)|2Mj)Y%o<5= z3|obA`D~8jg(YF;P!`ht4$ZXF%WbkTS+g$oc6bt>@Hh(}m`W8G!x-P7u`wjRfifPxq&v>u z_&d_xgZq{r_II=?eyp_UWcC)->n*FGEGnjhOy*BKhlOg&&|W5^)a3+aIGrm`;g-=g zA*PW=zYtFDK8IS*zH12i^G#V-pHL3uCKeT}bg_cQh3^4F?mlb}Br?JbJx!P}^Fy+fqrW_bK7Z8!D51ecWCni_!j$8RYSA$iw?#>J7 zJX{9lPN#g^w3n&PrjXv!vRiX&MU1miiwIVgRb?&FYglrpmL{JGwf936vT`PCX~IPL zmcJx!-dn1(s8JR$UX|)kc?zV#F!7bdfjN4DJ+)LY~1hTVfzNLPB@qxA;HCPBadkg=;mRD9G zBX0%t2l)vCXO^A-GHu~&f7vZqskTH6CQ5xsv^^{U6v#_G{2c@ysjb-)i!ZaUAt2Ct z~N=>IFs+&4*b7Xs!9*>|;qbj~;Oybz32U3~Ejm;P*Pl%tC z8oDK{LHw*-V%y?yML09x_s+V4!wXDKj_U-p=(iAd9F4qNWkl>g58WHf4&fY(ytk3G zk+skl>SiNugt$c$?>t)^t}MqZvYT7zX#@2S@3k4IKQg1-58{`rl@lnfheHUbI=sdh z6>ZbmWC+6PNU7)*gLE4Y`9E~M19zoix~*N6idn&mZC315Y*uXBwkoOEwryv{sI1tw zZJQ_k?Y+<0-Cy?@@A?C4yqNdA=e!;|h&ZVc3%$|G{E?6UOBMMqjDTY~o+!*G2cz@z zqwxQe;r~PR5H>c^ceZl++(Z8Z^6_6Xyh9DnO=-aSU2J)+Tw9wT`g=u9%vZR-7J=|7 z3$P4={G{+;Bt%dKIP}y0=mpxwuEy!j_S3C0@odg3z2>L9as9QCIK@Dn=WZ=^mipudxU!I^-%Y=%L}I0Z>b+)fds=N(O_oX(Sb+4&|4o3m#FSf^l*F#gb}KHd#2Mb7hiNh zC)dw>(^@h6c`UZ#H{>`F<_U$v?fh#m8!yu;h*rP$62#nT_Ym~z2cMZb>3DP-6QaQ= zrO=h_grA;dAPQ8mx>1ZZEkwWISriqTsFz9p#g-+D?uRmjMQD486QY~?`#2OUtlQcb z(PR~k7a0X_a?e>^3Hz>==gWa5XEY6~+!ifn8wrds+Wte=wsREWbsj|^CCp4h6{n?q z>8{8du5_x#lPcbH$^fp}Waphj4>*Y?W4b!b>B)PAn2H_cmuh>-tf#@n&U}NNL#+R6 zwyh@RN)C|2-Erk!UckT^Kb0;D%1ed0g=9+ILO;-)7}Ec0+Bbv7m!zPk7T|2!^iHYJ z@7Pe2$5AnEuVqesG4Ix;!@&%|ku)*bA%RW2(&~=vYc@eXK*5&27hyJ<&638ABuLlm zvZr!6kl7L3C~_mtTFU#?=_OL_U;J}PPH}7*Pp-FBG$^W9;pY^|Hqu<3Lk)Xc*hm}J ztr6t5Fpuq%urXXMt4Ke+wV?W*qml7|d|*$cZK~`L`S&0IsOnj0L~6FVVnr!UEuM}~ ziMqP98SS}JWm|q{=iRVYy2*aKb&ux9Q9pAl^He9QXCA1(JyEM|V@=+%rFAe11#$=H zcvuh;wP_Y!)^@`F3Py_j{CMd|&BWEu)0VdA1w~Yt9cA}f?3vQG?-6KhmZQa8m)`7w zYh}X#ciODo6Z{xgXcF#=AxlkGP)Q?kOMH4#Oju8PEYsd_BCwG?frcaN8aY!F34 zTUL41-JONc`z!wA$L#QJpVvkL&Id~1_#WEsdUg}x3`V7z_Ad{mq1CQVpZH@JUA7;=PEYFuW4+f%1}mJzoNQU=VQbh@XU*OmKY|&Z#iNAOyMxs+ zu*&zu^3GEV4nH6EFvX;OIjTAVr%FW)jnRoyO$|EM0R_h)XCt*Q#*x?eM`b6|OKM80 zi6Lu1`Yyz)Xab5Eo*`yzf=CK2Z)@(<%82kxM{-VxeKgDZK&`I>QG0=N@r$oLf@Tc% zipr$2awEwu!s^;02c*j|dR1U&1yd(|N@;i$^?HMsaM|a3Y&s{fZ*}gvI z#U)-$im6jSGFz3=pIA*CH(Cq&dMR##hP=a41nyj@whGXIxiC~+SRQR6$`yw=TN*ey zmE?jsjSyYS22a9eMzk}{IT<9p2xD+%5mQxHIZf4U4kKGg=U2dd0aC-Stzc%1pT zaVyyM{8BZK-xS)SOdg6`GK0okkRN(nSyl@?j1-gc&N3RnV1fU&OhD94^A{0RTn;(-8@?>kgYI7IWv9K9B%g;Y zB>2=Bjwme2-`b~m)H#nRMu>Sa>IWRc(Ow?!sS@g;PT?}YNkvoqBA01l!8dQ8ek`ah zD20yv>wAd{CYQt1Wm(THR1{@EPLVx@`?6F8f(L4D{?&MVVnaP)guQg=7gXr=tcPf2?sQj=k>j@6`xzA}!|P#3Pzg1B;okeSdC z-t}iTTCa6FcD~OE+CEakW8jFy7<&!o&pA!T*;c(N_F>wd6eB-s#o1~t!bPB*JR58A;_(nXFLuDgaDaw&s^m2)E|Psa*&IH z+(LBM1ynm@i`qhoH!^m@ptRheZXunu811pNrRg8H4NQM-*>*`@h@m}YoWC_vg_bPZNKQQva3Bk7AC$}45|S@{k7&AcjAK_Hl+ zm@ARQqkcKS2{QjFryTDBNfP7&m(3(WnV9WD^m4m7giEa>WXx#OXDx#635&6z?sRoV zdQ8h}_KOZ#$rwrBkB0_dSXn&lK)#Z&Xs=1|x2ya~SB8+c1aCK2ojb-kgOyFrw8+`* zsof3b{;v9b?!#AJU%COo#Hv7QnT+IhdQ3Rw?X^>h^)}RtEya`yHZ|&ghU9bRi&QY} z)l3rWz}$D8_n){=BJt_Ip$0c0mXzy;8SNrJ!_tB$#eY7g^&BvE;cAaf7`$Vm$H-qY z&R%-nxX&hSLEhJum62I)f@;Jq5P1dZAMuzTDbp@Jf6Q_^ZMiBY?ky+np(42Wx%pud84WFgbx>8QXZd!e$E)!IZk?_hmYs$5N*RfkMBqZzDyEz z^uhXuks(W&(Edcie+g5d*gUQ@th7h_S5Z>nB#@QQDAAst*Y zM#OEodqK%;w;KG0h*p~%!K!b$euMv|TVTz{A6&IL?95f8whL5^ zej41fsrL_Zu=bJH)Hu?Kw!aO3bUr(rej)V4KZ7Dt(&=V`>tcLy1|KP-*NeTS&l&Dn z!>C>Cv8}toR%sW-4m`isR3lR5G%*!r!O+8BGls}t#uQ|Etr)2BzgRNcKAqyDXrGAY z-nNoC00qfHxeq2#6MeVf3NG3v?d(Q)6qH4*WFo7%&ETh1x?og_PH&dy4!ZnXbjiu$ zYW_TSP*WGvsmSCL>eVT|Ouruxr;#j1_mGpnrExAiW%t{wkdSJ@i_hY5U34VG`WUy< zXaVKQY+PWXprT9COjqc;?m|ViJ#=%$iPpSxP~+|STz_M!DsoSLU~}|_a7c8#e?T-O zvY?S!6oX;Z_HoEU2+D01sH}n^YCzR;bR%EaC;KfK3s+|f%-TMr1&npm6)P~|+`AWg zHb;c!VEMDv$+{DtV6OApiNj;ON6S(Q;eF*+rx0D9r7hS~P{XAcMOTK#Lr5r`h zN4BP4_l~o^$(7csnm=dD7#y2N&Q);CbkHl}Yw68B;BG1PKRa zHd+ypQgzytvYL=uyOy*+<;n>2Wlv^`aFe+f+7H${AJLd^eYlxFDr7NKis8ygP_%GaH9I#RHj$Ueh5X;XUwF8NahhXfs`6 zVmCP2Iy1dsF8A*Y0YjoCJ!P2$Y+yDW$+M<-M36_!zER!0S|9`L$Hd#9!%bhi<}Ff}0{qZQGe-+ME8g zKx08YMmVjzObHw)C9~Lv$zV;Z<$P>ov;(1LigOhg-H_j8vH3!?PZBqJ+iGt^C2)pxj31MAo) zxvJuCbn1NLlq2eEFAfB+nj*(luF7V-j>{}v<4aqP)1`;zfWey>@|N7g9H$7`ym$NT z%547hD8d%sn)*dOL};+lnK^%qJmYbJopRh)^be5BPos zROq93RXN@&x-DB-FKwgX_Yl$TX4N3q{ov8TaGA>DP9NX4MypLF_K^xdOeq&7u3wJQ zX#BH%CY*oFFYer`Uz}7SQo0vVrxZ?Z0&STn^ngoZtSF&Ivy8kV`UIht(5h455;tPX zd4d(TXXY8+a(z8Cv_K8-=UMVzm9ac{pc2IEjZAsa&IdYxuS}QeW0iwFH{Id{89ELK zkO#|VE!KUNI#6!RRyi^W`1!k~j6JxIC%KPD#no3}x~R20C*Nni!@z1%4a)_9iuA!M zsJoZoTs~xsAeJ>3llAg1SVqAQ9rwx4YmF~Q;0j(rvQZn4|IRN&QOQ?qoH+BCc!@TMUj_s z3m-&mA8nLZfz=C-)60u`;BTpq!h0>7TA+%~(_ll)0~#OmFJ3Qh7w*z2h&vn+zTn1^ z+DV)Q#BJ&i6G|M!OJ_y|B<~uWP!_)m)gr09pHaWL3hBwpRFHI5AJ>X`E?rP6B=yoMNIXEfFbIa2pid!3Vl zRyh9#FA+5}+(qd66gl9>}{P7IJ}&Y$qT_huV1*=znrIht`lLQ zzI?&?*Y(RMLsi7V!S=uFS(S>~aUAFzP$xOf}*Bs3nQUm|*t2(<@z_K+$jgAN-HuO_@I?v`0;L58iY`Ph#@ z%@u=5!EVPN0qP{u^9L8$THt#mL8HL4<-dra-#Q$6;_T|zfR#OZ>^q_JE*7NBn1y=j zgYH}F)TXeb%|�MZicoPLW}kZF3TX3!Qx2!O$N|9!lrF$df=d_dF!lTwQPp>nApK z)0p-U6^DS*`$ZweSOLx{U6~VO2@dJaIw_l0bbyq{2d1BG>vrV9LZqtA+HGI$5l04T z>sLNFAZ#czjS6Z{%`JO?O#OWuJBjv@MD|;LyY~-S9#uOoak@zgjp1yz(9NJy^W{b zpJnLCemMC0t#0^D@%(}Cz`*#{LwJUbiwb1W#VKtY(-^WcV*c;8YKJRb*F!M z1~ueqE>q<6vfn6h03sjS(TW5s}JZqZ`pTd7|*y`UFCw z0EuI&jg$_?&&us5;ua`Bx z4+uSO-sn7>prBgHw3tXe9#~WgO$NUVNE%p#;s8!O0i6_ohCcL!Up9ZSl#FUvIq1wp zltGHuZ|>lxBq?Zj#rYvy8Sq^(Tgk-CMvuzi6T+7jYM-)qLgX@?vh}hZo}R_gO&;W~ zf4C$C8*5ei>&KFbNUmpy)9|2X{G7qOES54wGB$1_d03EQWeS#DwH#3fFf3`N`n&io zt~|7fS#P* zW_)N>Am0E@dZ1#m_o#Q0YKMwM*}1~YVv+KJZlAAmmgPp&o|yGmsbaeqVVHA(s`x&c z8Un=0qt5o?VZ%`Qoo-^qW6uAm=FFyGvLyfmmQIw-a``@ge|NL_OG7uE2G>z*ZjFyQ z2EeKOR|yvwjrXrZvw(Ci{9SJB4w;wVwfxg^FJpIBl+qNP$*}}K$VQ^_oGUE$1_;X2 z5{J?fev_hWYE76$>sp}sL7&lZB}(}7sTrZAw(GBu)8uv7dncFok;$ke_Z+*&|EVAZ zQAsd@mjR>%xP=yIYjfdPTf|lqCBx|L{-(!qaWV5{@pg?RBTRp{_$;{ODe`8VGnlUFA|+NFoIdHNjDZ(E&6`P{q#w57URzeF44Kkz;}WDE zNuDRd(@X8H7s6svbCUC`wi2%4FWNY+L*rZ?H6ppz;}2g!<5Rw=Zh@*(Iw1XyuCg64 zpYknMye`lMV4l|D)M$>tsXZ$E6uiw@s|SZ`z1JAQ_Q(zA;&SoO4ddd-jewx0*?YVo z3dy+at{>0Ii`1bpyvqiUU?(h!Z(EM*JtCazbMIKUqAV*4qgSNlG@2KWyWS==pnIvx z7Ii{QMWk}NWHbbf=XwvCa60Y(!*wp~kMVk4rKQ^^LHBLUQ9~yt(2d|j4Vg3J)U%7 zDVb=KY{<}$PBFz>XxedVIAkhE?c53sWzHsKk=YK3t!63;QEc_eWT`64mu?z3%TJ2e z1Shb;8Bgznkv9XD8v;$MNEkT|Eg6pDa|-R?q@i)w*wtB+g&(#jF#8mywn1i_9(?Py zn`_Mxr+50_Hb&RH7VF;z?TG>8V~8MonijOKu#L$i^AdUq7X9>M@YNtvv5unOZ6&lp z=lwrt6hSgS(i>p`?3nU!5Vs5CwQ3O0Ge5jYQQNRE#zz(K`6@R zyN^o)9ZOUt;nC~MN4#cYXb%@aahgq$3k(>bCBC)4y zY8gkeA4?~lfl)m-phKkgq*9_^MREIT-HB=bN4DI@OY|-pS8oyYe0!uC4`v8dv7M!z z7p#5i_Zt5nYMPkPDODy#7IZDzPQD?`#W0$IcFHh|oF>~SAap{gM+^&$ub$AJSkIZ5 ze|b-f>4G$%9+>dSV}=VMp>Sr?o1(sI!1Ntef`SxQxyA{@TIc z#U~=$&9rM_jlfJ*SAT{=%^pEpdSbuJ5cP@vxP$Px4BW`vi8aOn}772%6!QTKj@yb?O_L{#H zQ|GPJWwTwA2c5SVySa(5N|mzi)JO=f>MWY|Q`wbK@8nTmNqM1={d(f_? z>z4tdse23k3!T@WbMc)ZKmzr>E_n@4xi>S07LOCdH%@giGJlBB0x%}!3r=h?yT-7LZpC9HWh6v2w9 zj(SWp-hQGv<QuI-I>Xt%H%D$`E5;}Hv^S0SDNnOG+cXR>==0s<54!l{H#=b z&`_orIPc^k(B#ZDaCLHF>D5P7*UJ-YN!jtFkf_ah9WrVTO| zkL$P>Nf;98zg*tN5H}+m!wwVxe2Rg|18AHDhZ9Ws1VA`s@C-_A(Q^jv?)dYANfGSs zp*u+B4m@E;uj~rfw-|%KZK6IQnuG2%Gw{S}1t`&Z5%){%MCjyKYFIzpn}ZX3x*f88Iy3E(%O06ZINlOd!` zuk^yQoM=Dr6+LNU?Mc1iiBSn1;ILOAPcuLGcVU%oL$#EJI|u5O9@fIpJo03mASu6c z!%R|5rb1?VP8vhLLw!k2Ody|Kl%P2feUYUbvipc;xutQg zKm+8HNTM?jy^|c%qD71I6`(1Gvrw`|E5OalhUeTtcaoiU@8}sWZ(#+RNb7SDa?nzl zVX`kwyP1cjv`iER#J3Eyp^-UxFIG*7PaVZ}ax;rRY zPf(k$hUS?ZGvWi=*Kh0zh5H6zf!WQ3gNa1Rga3ssmjv!Y*lZ_szQ0Kbrwg#|me+Wt zy{oh_?N)8^irQ{%8Y-+AIx85u3L_)iNZv*?gxpG#PkvQ)Wvd~wLGt`BFRFoAU-|M+ z_P{^p(trP=QZ&;Sx7IggVrBd9`nj^NBDNT&5Bg;OE()DYyxEM|vKfD0xVf<9bc3Ff z*%wVY^Ga*xliF{|xUQpbg8{aQ@A;`FMQ?n%`5XB&u1McP*fZfl=WQ3A|4`~L=j(00 zAFpuT-aJxU)YlRfg*8#t04vffhCs1L@<4EWse`7vryqe}VX$lf9ti^)2*3)gOB^Mc zyzI6ogd9K#O$nF^(+2C=zEIFedeqs|>ix+o zEI8!Qz1a6u0TxzDRZx^z$pI7gjPbHYLo#8_S-HnRqVEkO7ytWtg>Z(>v+j8OV%vWv^ zP?TutMLl;6T9l9VL++>#!%tnw3>4iy>69FqK>;zG zxS~$N`;)9W5H#F5>{cDY76|PUae^*+v@xqLB~;fA`opO&0;U6?fI>JI#U8L0ur5?J zR9>0Quuc6d0gkMwEptOYYTC{CU%#i||LCxmJfeUEqaSesD5ex)9?eKWIM6%_^hGZk zrf?P~FCYia=f5dAIb$& z`Wo+gx*&4fgtEXf+*qyDMm%32{X?DBgKH2sfdd+;)}TAM|JJmpQ`~QA6XPd*(AY=0 z+_Xox%fn*}!y!lU50eDXfxmVy?Xbo#WDsoPBSa3&-v;Z9L&=*;cwhAa_ zi%63ngJ4anqX$H%xw}TJC-FxPX+@NhwbmdB8cLEwp5*%sWs&o0KgF%mG|OADJ;Fk1 zmw>HVgbz$z>3Qi}1P}II#B*(+VhvwUO!{n8@VMqe?HbRmI(|mI{AmtI^!|i z(IQT-WlNJd?vKI&S%$2rOhHZorY1~8xyvb01L`Zt(uKyRUq~~_a`t-{S)5cdVBqLA zAyWF;1K`_4vGg$oE?LlPWb^8yf%4&MdAj(V75bc{>i&X^j%Xib#^bTx!OP$xg_JKp zp5_H;zR+um!PVd65;MK;1kywLe7|H=%?aTucqep*mpKc{xaf2&Cpoj%JJhW}5Q{0lcI z@l&Gw!=ap^t7y;^2z!KpCT^y)#`q-dQP+uaP#?kzai=&%NdI6nS6mXDQrd!4po9TA3YizWTg@L z5#*!BwQm@rFEEf7)y8$s*n8GZ#jQixtZAG=v-qCdr!8OY?lQOCXg8tZDiWIPwti>1 z=QZLMNTlE9FIx@v5ow1Plv=+ohS1R%Ys*g3^{%`XdI=*m&I6@m5loc!Fapk^_C4z+ z&qd9_-&!Yb5(Kfae~yS0z{8$6WheJbVd)29Urcb14V>I*l*kfHNS671Lhvs0E*HRN zLDL?Syfvrs+;|Rpg?DjVEUeI?&l^t)9)m_U#r8sUUOKa!pf*nz&g!7WqQ93~S8VoGSxvZXBehpGU6r451*RLV2+HjIk?cZ` zu5+2>3@diCV?)p|U8?4f2kQBe=}yC7c(|V!B>kk6 z=|icFt}f2pEMn22h{W#{LP0)kbPoq&2OYCH@$6pcp%EvKO4{GCw=imH-h#rgbU($~ zkcKT2b}665(?Sd&zois5Q-#I$1DuOr?Ewp48spuhbG2;qUUO8X^BX5a^9uO{U;HUS z=p$aD8=4WtUAex=_gruE;%hLFgL`<8N94eCPJ#9zS;bS6P}CT6!(_5k+jgc!b!1Hk_)+$ z+3JL7K-?6A8S&IDb@__#zr-EU0@0{2KJEF`&u<>}zkLWK{*!5?F!m4P&U?{(|2zRW zvTnDKr~O~czVKg^4U`4+HT{edGIjd($j^wK(VKsv4ut^q2n{KsXNBkHo%;JPolB`t z+dHV;tg^VcoE+pCmOk?t5H^PtND3n<2qzJj(|9s_HP54s3$(^SVO%SRa5%gs$t&@6&QbUC7CcuwQQ9CLS0UhNYi58>d5m_6zYm?S+YGKIc=b=&dwpV46aHrrC*db%lW8mrnT$}A;o%7)zP;R+* z`!3p7s|~N3?5g@hPIn2vXAeoyx121a3UE$Pe42{xH~HH;l3X8Y4D3QPK*bLax5BP1 zglpvR67HW}L3yb6%mkP(U&=pEJ>&Vef3Jv;qKvVVzLCC@{(n<#{@43P)Y!?;?0+z2 zg{m)}ihFn;8AW>mc4p?VA-~@&wU&pUe1Ewpgg_$c`wpgWTf=ruX#8R+Ba@Gd^(dK zepbI8^d*1M3if@T{Nw6zRTT)m^VOa+Z(D#K|2h{^tnXQ$fc`?|3LkKBryr~5BfPqC z(D%~!CQslcGLBU8m=lKdG)WjD1#!jbwHQ9&?FL35e^s!#o1W-qLBtzY+&9BWz#9}D zUToUChsujPP){ve@>qb8eZ7TEG#OG1{x?pqT?mfC&e1m_2@(J>0jnvlBE^)|!{d`VXUIH5s1nQNI>vJmf`fBK0?5}23_b5l;#Qfplx!rM-z$61-q zZAcQ?0a|N#=SR55;nBS$QjsDAVjl3sUXrNLY6Z z&}Px^Or_a{UuMsoPZO4G3rc}R)~%w`c9AJZxOFHd)tQdwwECt@COwU((yNl`F6)s- zc`DS#d(xc}`)Czq(E0@wxEIHGFi41q@KM5sD**7~On_Fc9W6T6Awek8Df~mU6B2?; ze_!2hli2S1bB*s``$(vI?zdL|QJUhi(F?S8)ms+u}fQH!Q6H3My8 zm9`yp@77X!{bC`};j}?hl$MxS*8w3XLN4x}DkhE={27^ubVOwJ1m?BBOq3&F2PVR9 zjU4;fq1^eRKqFU}!d4T*%9x6YO*~eGd|*6VJUFkHT+b-1_=@@ptjfA|%g#Zosx<$G z7rvH<+uV-A36p-ErHuuk0g5;|S4(Q5EJDPvh?}lR&pgMx^Z1_2{JQid?Y$$Eg(ByWp<`bhpSo=LO zgbb2Pr?laE&PpnS@xS1|bPH@{o<#&A?w?AViCN|NZgvawj5N`h%+TQJl9osZNNMBp zXRzRM!Lp5K2g5xxh;`G7p&v`C855H5I;R0_wxUwDZwC1JN z^5+9=4udfz6)?U@PSjwrLkqpIz(Y5Z^c1LYj-qKXHnjrxDwU?4)bR3P*@6YJI|FTL z%*f+MG@wI67pRHhIYqg8TgSMQxTm<7Ssc-x5D_gx@_e}>ZrJMmotg246{s9X#htkf zpPb05V0dJ_Ax{C z%*6YjOa$C7nW5l-Qx*zh2^V>H0CVXCfLo@NcIQ6RL{zq-Vh>ZqHjO0JAQ@Wqj&UWE z5jWE^#rpe*)EV}>f0xB0&U@A7{79sjz{m%4G5GDrWXu2&L?(tNzWffpHX_X$U`7&y zRV-2hyX$J2tz12kG4qxcW8KG%g|SYZ8N|{!-bR&e`W_-P-WXo61mKKy9AjZenz5&D z0&4F%4cTHJ-G`A^5HcsL*Gkqxs$`!yDK=- zV_rJUm>3(b>^$<#ra)I9iFUBzrI<)Z?%`ayYe}srYX~a+#VrlukRpW4AMu+z!VE!p8Bw2K6ssYFHsc;&Egh9`j0nEq9 zaMx1KjXJ?wRM&a9ny{AVb(Bkb&@SY5^F5ZHfXUFA?JXVbRh}_02bMMGnQ1Q977W`?`%|N9gkJ6-1e*tSV&>1%`??wry zRm#E_-ltfCbx)rX;6c9Vg{`BZL7CuLaJ~0E+lu|lgZYp3L9q#xie5NNO?yd!5kC*Y z;N*GCv?QKxbOMQc1U2}}{3e9HKh7fkB8 zsK%+e<+pLXn$Kr+v=m_ddRggI6W?H?&~)Y45Plvwf@njE_@Xb~Qc0#7_=mczjv5g< z21Pt6BSM~^W9bsN>av=0Q_?R)j1Yx~6Y4_8gxbGv)aU07`!_KmtSHD76vRNc=tTHc z1*RNGRmNa|q<0)ox1NhKrQ*o2Qp5<8d@tmft5Om8VTj$HA5{e|xx+h{ij0A??u}z} z*>Bb{Qsu7S<#3ax_zP@Zzn!N(seOEX-}arbb;L$B;hJ5rpYKdHV4-Js_KItPan+&l z+cIDOqHLh01xuKx3ZF=DEeN)=Z>1^Nu<6Az3J)CK2k)y6Z}aARC1Xvcw-lm2v8NPi>Nh(nDtTSA#uA2Im#- zZ4}A}sbVr?2Jz{MH2)YTAhWKBri6KcEh(39O5KSVA;B4K(8hMKH(Z8sE_N1%&;i^@ zfst8s<*Gmb>;*KR7=0Wo5B!?(*ng+q>s|64I&2fUO;A#&#&$*%(gZb%H-|wN7Mzp4<4!eDwPp^)UU+Js1Y=dRJnA` zydii4;1vDjos@+O8XjtJ(^YkCupHKDY!VZs)*kVuuO7J{?;KI)Hg8E3a`VLqkupW7`W-cMVQHkSCl;4Fzb_QTLwU>nGGF=*L zO5WXR8?t$NL0uZXPwan+)S-qtACt3>YPNd{=JTqP@lp8*0 z;qeKL#GDwsbRY&UO^KUBf#?E#ObY%_P99bsW=^t6MxSwy{$X@FQzC9WH())#zYIy$ z4pb8AsCr)*ni)40(szPN8FZ!oE0y;N6#u8T2f%DWhvpnfl zo>K^#As8JSd(p<`uh!6msW9!)U{;KHj1ddm05o8Frt_<0%c+OoXfzimyWI9vIHx+I z)q;GY7VOSEU4OX$_!1m?{XVvG&+~F|{6d zp;o=?zMkm=tp&Xt-7(4hkDTYc9N$lf%ZKz~Wj?u2;J|rC#|oIFlu!by$9*oZ9%qN?-e>>|=PCn1`8R%$ zob)T2ZOS8-k8J1(s9+0&e7%>R^>w&c(@j%vz`E5BVb*$^$)|FQo!lpU1DU~W`{D5$ zP4r7eDBm`oUsdF7Sa+2&t0I6x&uyNN+tf4)@9->v6)3xM;k24l|KlPD_9QM8|J2yk z=9JCK&d1?BWAy6!a9Lc$u9tnbp!=t*1?~Kh^-BoG%X7M_Hzdzucg`;#ppP~|a$nu{ z>Zk*Lde-UB*GW)Wn%S#{e6+e>`=|Y&dT4HI;??o;HWrg*^1Y*YyX*-yY1&hjTw!9K zOTAK~oP2_dZ9r44B-T%}qh!&|PZKckyr-3&#M1t={{Ee~q>G4vC=$IHlx0d+_Ja>~ zOBvj%5Lb}sGtOhFg`nv}EDWokwOrw#&UIS#Ep;E71LAVnVY7h8Uel5A8S9Lw>c6NZyu8K^SN z*r={RL@>7EorM}>h%RC6tI2*F(#Lfv%?Eu7?a|3TomMu<1KDXHr-Fn=#VMagW35To zG9FPSv@3y-?xFS9w*(Y8*Ke2w=-;x*P3hl!0w&K`%SbSZO#$q}s|>kZy?V%(`!qo016VfMm+*SIf%k5Dt3sKs~-{qJcTxlfElrKw@C~e05{R z)L*K$@B_su1brIUHS@J03hykNqwPDpqPE;i>FrUGGS1!Xu-ZN(qg{6JXmjh)Kk^rQ zT={%AA=Qlj^z!yRe81M3nDWei=L;Tq%6G-B)`w5N1g9@VO&wpBM76Pb*kKiysOBS8@9fOx24h`RI3mt*1|Me#?cyT(W*J`0NGpQO z5wa)kL_rklFf|HQ&)>G*%K>#d{sEWrf6_ia2L$jXH)3AC|%wbrU>L=ocuo&bLO za4))MxR%)QlSr3NgqNQ;!AQnYgoy$4=fS7_sngr%Yl>kCu@obr6H-<=>Xtdv8l@}x z^kMXJndBf>M(?oWUp6yy^nlZ~Ii0I=HfhXC9NU96WsFnP!uH`5&#iD%vTqmxSDJXt zrt2q?2SLg6t%QGEfW$mD=f4@I@kKzrMF(BkuZm)BW{=i7b+9mglRe%gLT34>$~bFo zn&L6m0A3>^t8h8bn=iTlM@s3Xgd``d2}JhV z!NjY(ePUkCSOj!`>6#lc2|xoKi+ei{s5)MC;MqOaI;%fAUEQwC35M;8gW7r@m<=8) zkc#!2g4(=OqS9GTuk<0$k?VLVOtLZR=@T}?o14HNwxkRe%eUT9M*Ddgc{cn0=;&lLOYF!t&7lTwFcZXk;Cszw_}|$V{1K5G7m&(=O))DYdf_Co?77|@kF&pLmp-WE0tK*g@9C%p>E4e+w-C%NsNGm zN^=Xfwb?As@p@wHXbl=bGng_Cpd>QXhDlZ%BQo7Owett_oW4_^G!Y*%qXAB&l2Qd; zp2eN$3@jMLtc@IIAX>F}>WYF%tLkZ{aX|#{43i>S?N7av?ApBARuz&KFJif0!){VH zsh)H+>I)g-cUUT7zSCMdtfCEIx=aVhr8~f%=I*inJJET8{wO3Uj59}#CcaYaNY?S} z)G6Lh)@X-Qot+V6JcB1_qk|8$?zk5}##F6DzP1g>tH92Jl8~3iQ5B+siUDY*wZ9lJ z-J~2gc=^e#)zrDL!Zo&}RohZ!jTDfv>nRzs8ZD%9wd{-)oJUqZ)~Z9XwA;jXv%xRsIo35&rhI zYoyp!c%l(Dr+Bd{1{329o_Y2r3H8`l$4N~og7Gth*-Y__BnDN{!c0RYOPQJ!Yuu-j z=d}?^(L)wHY-e@`ZZlt8r)xZh_VpvjdYio?X0)uf@L*zVVXF|(#3xl|j%A!iz`g4O ze#E>PuJTUR<^0X!b$8yHPR&P$YZ_Gz@5}*+9Q}Z(?(!~rl`DDYLj*YKz<_cXU;LrL z%gA4XE~`R%GuAKQMjV!L0oDV$CC>Ed>?a)GB4LXnk30Lt9~69Rui&%4l_P||?XPfU z^*Nq?vTy%fSh(p7JkznAkbi_-ym(A+IqnbHyWu_ufFz-F5cly~Y_V&-i+1=C!_yT5q z!}hv*uSH(dae3cuw?5pt-v6kA-zno&>!(a!KbbIg{i!TZuB(f#5Y{?rhL7-xJ|n?H zXX1i)I#T+CXN)_>9{b1sxu5kc&Nb(=`gDetfFV;+_$i3@miYD!8X_fS5$$-(tUTi5k8+Q_ z>g^#r%@f~&a0N&1`BXRVKQV$bGP`Ox84-Gd<CrynW+Xi#;k9V- zAPf{!3>0;#n4XkMzpm~}%NKb9Nhr5bSoZmX3J0XCWppOY^AbxD3H+mPYb^6?U|I1e zVX}ThDb{m8B@OA3ps~L=L`&RxY2$YhTJ(ZYIkJN5+}_eGt-5iB-8ib|F%^yACyCkP2(wcpK-Wi!i2`zgcYt$WKceU#97g zJ#N{ZD&8Ti$7CQGA6%YDD6MHKJ3&7Ss)kg#0xWk6w3I9C@B}?Q5Lf~ILWTu2!#&BI z^o6bGOmGzYoH@eI>2m|7b3ImXLDhjmHi`9CE)(sX@nL05A5aJBL$_}o56`Fu;*Y$IS z8m4Z8AsdKNd*y&0a|Eg1M+@Qgn?|HYyXea_VwdSP&cK^{xBJB&!eyjNK1FHd85Fe1 znPwzUI!eU(MmmMI&1Zk{`zIu$!U$T*%TL9tr?&SzU|PkWr;0zAu!$${u`<5lmkMK{ z7?LX+;(sU)*CQ|ii}u(TfAEa>qP5$9$FMgi-5%BG4i~&OM&zAhM9Sk&r)r3eMB6PN z6+9KHgRK+Mye4q!WH3|8qucu|j(ZxvA*3gjJG^W);4y-Y^UetK<=ssTbOUL>z}Z9g zBq|POzDUO7U8MruauyBQP!r!|G_#h3HI529V9a9Gx&P+VpHWP72xgL1_KfSO=$FR< zm4fii2l7XK4LKyWDiB4X6(S2Hb?FtQV)TjL6BNDZtTInP4}A*62Yz5WR2-i@F5)dy zL}dc@L?Zp6$L6)~+iXm4FwD1;(i1lLK`AshQ^{IhD2z&8h|@3{S}mBCcA zqYvUi&5>BX?2R|Lripi9_nJAb*AR%V5!-F}NDXJ8K zZpA?}-wIU6pro_Hg|TeLUd9Eqf46YBb3AF zIOs*BMi5np_*ZvHFKOH23xYgQj+X0RRTKMl$lH8U?dlV|Q*J#q+4GM%B_%4gof++5 zxG|d`8WAN|Y=NMXvc#76do=WD8WN?B84#QhN6Qvp*%Fi z+?_F;+*0qGDGjd^yYVX)9!J|~ql08Tl%MNWIBQZOiE@|n}Di?4idj!q-z z%ax-}V?b$ZKNtPnmV{^<)jchp$;Y^~SlRo5wtL|nnY?8Lst(9tk7cl`)8~JvBi7Qq zxTEn4Qf$jgTn@cCGSm)3>~TR{OWKyKH&i%e_^6MoaLP`pHU#3Q!7Y=SD``Rw z+LYNe8j%A%C{D4Y;21;kic*TPJ(yV+`!b~cZp*_v5T{xPH^okEXMYpVB7-|X zk=(s~JH)ZLk7W%{s!hJDH5ZQPuBy-94zg3Y_5Y8Gg+D61|M;s?armlO2>!le`A35O z@6olbJf94x5TbAL01qFET+fj7h0%UcszHqdWhrO9{<7g_{c7^huAL7y82;2LUQ{;^N> za!hcPi64Uv#uuIj8h%hdxEl^tspb#UjH#s%}}Yubm1*+IyM3 zcR`xtR@WB%?vUQ^k=q;vI^ADova~|SMioD8&)55)#hOg#!lwPnrkSBAZi5OLq%i#9 z9x{X|KgvW|3&MnqHT{OhWbhV^L8x`uWSg+i-f*w@SL;MwqP=JpdvS5z667dG^q8~ z>%gvYEA~+sCsMx$hJjabkcYt+2$}|p)I)SH|AqkZaAL(#%C~lB5&E#IhGVQx&VrkL< zwcRkazA7OBs46HMs5PwdMuRBg1`^~0x`^9vq(3?7cvmgsu`{ikkHjKo33G^P48mb5 zg58(x>sxsaSX0k=B-mYwba$STG~d1KXbcQ+U|;T11E2Tqq!H$D?hJy zo_6yWnWL2EhA-*KB>tw1JPgPY=qB8<0s8fg2Dsp>a{;H+&xOV)(` zfwmXflSvj{+Ctw}hg!&3!Wvp9*5TtX-Ec8nDQFn}9cPwWXs|D^kL@oz#=$$StDMAQ zF&{cT(y?WnCDI@5BU8N&2ym_|;G#iLAd0V=^GWIB%8}dU-7@re0}#e-TS?D{=zqZS+@3!{#lE0ludjs9>+rC?Kk1Ds{tq&$&oD)_qBOZ1bDa4 zenDb)Z7t{}=#}0iVyVsSWB*o-a$ z=rnm{*Tku-NTpI$Hyk#9;j{3-B__0LN~j7wVFC~m96isvA>EF2GOTfA~DxWpZxRR*wCMz^6T?yO(M2v7Y5SgV`HjtZfHhQ48^!fzx^@_B~ zXmPykyV@zi2rJ9wpKkFlVDV38rlE2ctXQ|}t*)nw)kgR4zy5seD*);5WJXzQj2fs8 zVs``T^LjMMl%(}FHx$FNkGpXGa%!BxT8!e|CB z&!+55>vX);7?#+v8WxY=$(C)enp{Y3Xv-cF41M}t-vfArg4YWTBn299X*?zpCJu36 zE8tqCwyIReksj)uNjv%cOkkjovNr4-rjz!S&8aQ4`TJ`sPu*PXw7X`Qd~?Hvv^mx~ zH+GMh=_+2;#!pcUG{$vJTxXNxi}Of3-G6$0&(^EMY4eKBW=&0$;oSu`m&8rO#7yMT z9l3T_OIOu#g zju&~L^#*I`HBR5Xs9+^FFo*tv2M01acdhN(GvT7TqI$hZARQ9sfU1Y<7Ez9M`$~;G zY#(;tZ|H!Y7>iRnnQsE0@>^t?)rQE*q(S$XhkFe{*KF?rx?!izS}(eWXTDZQ2hk+S)Nt5;eq9J9}eG1Ux=nmn-R=QY)fc&K2k>5u#l_ND!dSYy5g zBuIA&&ZKtYLz38kAqfnr%%t^vUx+xzaWB3g#gjC0?&D5va;*W3#Pz4nUZH`eZ(fma zMu&cyE4me0S|j@?Uy$NG>5pR0Qn-zw@cY0LORq8qJdW~TQu(moLC2 zQPzkE8*XdL%aZL1eC_x|UlVeB2UGt%%SM?a6*RzyX~TV>X^S!uJzy~@&m|Fdk95Uv zR9XN*Kh+chuF{B-Oe<8JpdIv=&ulc=E@T%|qBh+o+qN<}93k#2%T83|2S{lBHX(z; zLCy3iG)VMA1n*0CB9*N0Ms1b#&+m2$RX$8wMbL{sc{Gr0JrHbVFa|UhSDgQ-cq%T3 z{Le;i)>z|(%-5Pz7ZeZ>_ut-eDLZEuLpx*Be^E#Nx2XTuzHYASDF8;eC?KC2SgDBiM^<%< zlp(Rid=RZj8umNj8kcWV-+y!d_gnt2_isDodZA1~-d&v0mQ-dXZFM_BPze1eLnK@Z z)E>Cv_S$r05{-b8{*j%?pfVy85fAhs!lMI#d{pNG<;ZMj5IDF#6(#e%WlK5C{9^kq zqwE1|Rq9Sy_f=+A@=o5mtcl$4VJSJfO;sTdv1@_Aq=TM?yk1-9l&&7~V`Xh*j6<{8 z*qv;8pea^Lm<}R)e=hvee8pVi?{Hj`HHy*cL!UdbRF|q37cQ=BT8gSn7p{jUE!p(w zR4cA*g>=kU<+S)k-GeX+kO8v*bZws+N*(X6>Q=B&%mz9UR1X?r^vn$ZB-IZUh!{}H+R8{ifkj@=c-}I`;FPQ7Fy18WbhlpEUxwds-JLGaZ z>P-shu z)ZJn$V5O=5G2dm}I~sxhQ5uP+UWQ8!2$Qco?FzM|whX)Z%y|!$Ni$deahh~c^(EOV zd;}OgrmW%&S5V0r21hGy>v6axoCKd{M5o>**+vQ}X z(H`%Ut*bdXh_F)}YqSN#abIqh)3g@LU5Scm45gm&#>? z#Z%hAk3!qtDVus{9%;&HKPTD{l~Mqf9@Cb-Jm`7?I*=WPW38fnO5|?vZG_EE34esv} z{UQ_?i-HLB=A1509G5fpZo+KTal3(}6+JMC@N_g;suV26dRZqqtfYa>51hYZR7yLU z-N(LMlkQjL#__i<>VLtg{MA3j#tF&yGa`!pX(9_t5$6L#c2S~TaSJ8ZAZi9E>~Iz@ zB}OLhi(W2jH~_(iI-rZzQyRJ1-)~R+dG_&!bcmNFM9V;Kzzg5_qOD{cV-Go;+|&Gt zQBlp+(ri~^)vw2|p&7|`tp zTRF~7PRZ%ZW#&NM~PoYt346uk9FtUqFmmQCf)N$Q}G)3Xnf$r}5P}i;8I_!?47xOMRBVaINfo^<$&o$Sy#3VIaaDhpM z9kAsAX3ct?*zuhs_@(pqYC4%&9 z^2B1U#nf>LYhP74*gWmer7P~x{JB3fkkrjWqyUDx4>{FTmh;%gZ-|K_a~C?@Ujo>= zX7AU37(T%qKylcI98AHA+qC-F+R(e395#o5>{c)bk|t4FLri^4!_Z(jY*TKULsem{ zLHctkeM;Ay<83QQ&1oE(J3YKENhv)&T^_pXgP1xGV%fA$lFs#_7w-H1 zEG^m-H4q(sa_7kk0*g8vBmke92`k%-!16-oR}BOwzBF5j<$Vy$j!~CSUA7hnN_Yf=*ZHc^m>FsOJ&Lw|S0o1N;t3Q-T7kL(vdld72lT5zU@!mJ4*s}9 z;+i+CI&+xt?Q(0vIG0Ib{Cm;$&)m|KQ}%A0MSsOt@b72alzich3^8#&TWT)^4dN}X zSDRC*mej`hCcWNRtgF~z&j`ur^vT9V5Bft!S`*Txb>BMw!;Nyg$nM{KCBjNyyD$Gk zuJfO6^nXu;|JD9d-BdBPrqts<$M)|0*PoA1 z)4zZ?;RWJ|CfxV%P>am}yz27%k8BEqongt1Y?8fDTTu==aK&-f4%A}~tLh|YJK@Sa z%L2w7ec~8OE~3KDvF!#NSmID?2OMGar9ahY8wGqB@~^WVMf|OvwLr}yqTkrY_X7{P zVQm6?Z$hu>O~@_LyE~)HJ}OI=06HYtHF__bHp`A}+}67BD#I^rIrzawh-?HkI`5}+ z;4z;PlDvWAIz<<~T~^A2j8UUvqFxsg1lKllA*)vqavcXu^MM^y<)-0uvsim?Rs{$3 z+L%WZx$Z+bv+Y%SjnyPNa|_pU)m?yMN5$EZc;vDQy-NH>>1T0^(Mdan^-0H6btS(D zC7<|3!v2==Nz*$-_WSkY@@B_JWfN?;4-)EAEoWxI>%h3(Cd*(B*}OoLe<}I*YwkHl z*BAqh;h&t9`@T}KMj3#5e;Zie?0eZ1X_V9`CV~7aHRo;y+r<9D=9$D`?WrK(lKbwy%sf~UX7A!Lm#t93vHz!R9&>05^;eJYxXt4v z{p!HE?nr|7c)N;n#+r!cT{4d|dG=n%xgv&(lAW8|X_rd0{n@C}-8vfNoVS#e$|MR~ zb~fpJ{?zgCBX)ZPHg;I?pTMn7JTEtAs3NRjtKXrU(3|(5N~R}l=XnxX=|*R94@|O8 z4~V+6NTjCyNQ*?-xl1J%?u?yf9z<)(=dF)QukqCFP`7iK#qJOW^Dc8z8;cV^ZX-WO zSn6eu(Ycu+k=BGm(oWEgk``Y;Zc|N`Sx&fY6=mE6B&ONnVXcC92LOF5;>3=+bn7RR zgUrD{Y)M;Zo-iSueqcz}kiO*`?ktyuaEF>!2VCr9?#dTtZ)x5U#p2&li|OGNCL8)h zIKHCF?;58#1iA2&)lh8|454#MnfJ)eQP28=BuC6j8DO!BLG7Qdd)AV~$O7I)%6(W7ibS$N594%{xfpdVwmmsAl| zR>$!U7dmGWFg@=O!rLRxa*)FBNj~(p#utPVkl=a|3p7xFw%wh;zA)ApovFVimi{rU zeDqWmJC%dQV=xSvo-KpG&?;}uDhEY&l`K-49q1=`4D1jT|81)XN>|>!TnKAhq8HD@Ud%e%$<+D#t&%3H|(HfQ@M!f^QeoX@ooQj*&fKMEk8W4C@z%OuCT;d zX&8XtsY*JerV|3*bYeW_+@W+jk@C|MbgmV5o`skMAJWxr9*q(6_K{tBxO^u;Al9lo z1ngkxC4uIK>y~&PU%dzE+fo`IAqU(vd3S<~v#>8SZR(#ERjgxHZ(f%S`_3O?gm`x~ zy+!aKNNat`u}Fr6bnPE!SO_UpaMmhwk0fKOjw!#D)zpm1K<7CXzU6l1rozFUL(mrw z^`u$CMmMwVF*;y8K~+$j(C87cTKtLIJ@U^o&G_7$w7XVZNh&NM9B$>_BK!s-kYc2N zs9Z z7IJoWwKWCU+nD~(8P#8_!S5O`>bS#5pAZQUVY^y|^9`($YMr#SID=|7&_veYlH%fo zjS(hfWOt0~JrS#!54eOr1kx8dQ-z$47b{b{IsBv&v<;pNQwW}q-k-%6D$}suJy+f| z(D;jdzAB6As=AAl>H5B}1VGz;WyCJfAoMbl2HlYnKcGJqJ{Ife*XW7Yp_GMDXuFAr zN0X7ep|hWG<#mwsNYF`Lz^u`^e$f!8k=pbt6X&JXgSwIA?Orw_=k@>Yd;+0hkUklb z@#!BYu9ZFsnjA&od?^f3zoEYVD98F*ixYiU8JH#&y>*7J+r`LvPfFHzB>#o(C^uj) z+DUIPJaaR8&^|jVBXUfhluWX3oDS#@-ZvJZ0`7|lND~@&(OGmUQ|UK;z%30RA9jU+ z%gw9}$SuxFl`9YHKKSaEVMVQRHp((J!v!2S1(;2mVHwp{LB!stjH~gv(>n^gy3m<0Y3NK0 zR>bX_u7X8o)bp~C82nb+T-Y=Q(P#oGD=Ac{nm;Qr^vndv;}oXYPpvM+*wqh68iY6Y zn)^Sc1cV9Eh%l~;yC%nau3DNYRL(=}KmK4{%mCQt`iBR@UFFDAzR{edWyzAkSg;q7 zWx{xct%h{W*H5e}`39yMmD_Y!1yFr!0#Jg$FNA3Hq={|jW@}s@-kyk~xNW12@SPvn zMC2OJ&bw0-k{wpAy<@Rqyq1Q_lw4X58&GRK;BMsZOlnaQdE+o?t@va7==cfPsb)gI z>A|zuFUwsPdsiE{2D8aEy~5PqK*Z0Ty^>xnN=-`-b>P(+ZCDJ}!0s;kfr|hmF@Qtt zr!dN(Xjlwd=~$Pi%Prji<2`2#-(HOjDV-a6@cO;!*Q}X*oC*o(fYl0m^PG1@X4P^d%aIxwN@jmC)0V&x&6gX!A!Rt9vla*~LoY#X$(ixv9+1~j&&4rc z%arf?49r{o;8^~H+a~21=nnp|iNyQY8`yt(w242d_VqpVhajI72PBwl_rn4#YJQ09 zYC8Ljw?$+Vr>Y6OBRM?B{l;0Xv>3cS9hWUucD`vrk-^ID!2)?)PB>Xw z&qZSvCDu?!7FSg-&FE4@ckpd>&fckTv;H0=x&NRf&md|&w(6b`&-FBEML+y(N~!mQ zS{?fC(y_9www>xRx z_K1a3!E(y*N_3YU%P%E0c8T~+DcTwNLxi7SWI4g<)TcvWr(w6Ko~*-fNz=SD_@V0#L!jsLWZdTI~*2|G(C}XARfy)zWmmc!HRuL=^63^-41JDCO zNtr4h{44>P|CxkG-s5mw2%Rd#ukT5MH9b`z&9MtSaip^-_pZQj_b^R^YD6X8YG3kq z`a&OY{`-VVky-|*HJrgjXM;h9m_t&3T$jU?JyJ4m@zo2au48vt&n)km*07+wLd>3X zFwZr`MJ`^sfz5wF$G?HJfRBFz5hXzAa*_=Ek+8~3C8R*_a(OvWYHeSXsdc-yZlNir z%uQTV@Y1-lWjfNG;iWG-u>6L*#uTb6Y0RM7RMb`*)JDH;Y>P2GyHC1@$5URK^hOWgY!16M+V8(FhAZQ7`7{3K?x zPtC4b)kbD`RBFB5AxIX{9u;v&5?YWXP0GtMpE%wWiml&n0*N{|uQQ!W=LkAiX>T+z zC<-)#^bN|-eli)fkfNQfMff=@gDoNh`4$gp8*Ma(P|1Z23hCiRkLbQ?B~h<;YNVF; zsy%emb0d2=@7xd7NtNTxh_(phmJfO0DX%Oo{wi`)bp1FaK8yFUJMai|RbqFkFtJEP z+gFpGduKLN8mG<<+Db!bHEi*lJHy`(ROVcBip z6kg(b^dr9&&U0f}`vo2T;1=$z`Q9h!?fgbxbh^5TXER%ZHa@T56fTQ%yFRGfDCUC5 zvWI2oPglf_=eK^0dISdIxOA$M+E=I)!F)uakeIqeoYNW^dXo$y`9lpe-z(?mR)Sy< zJrWN8n9~0wrwRLvlFa$)Lq>fifc$?Opq*Wu8U9~{2AKYr(kkhHeKPq+)K>k!1hctG z|7=c%{c*{(JTG_M=C~=M=G;jwha!d&R&w~MP*#YSX=cJ)9KoLwMC`E(`mDGorA667 z5&Gb83;gKu@*89TU3E&runiK|#3`e_@$3+?NSZ{FVUyRSeLIfBs>AgDNP4Vp zm{6_C9P&fsm(Hszg!Oc~U#CLW*czJ16=O9_*ls1mpwwJtV)u7g_5PP@$1TzE4C5V?p? zL)?N*%s=xHqrNo9-Jo*pQ#9va?M-bRoUfa%s$c1XPo78-=d-z@BCuNe=%y$-8VJ5F z1l$s98g}{TQ5;iuYksZy#wct|f3segA+O9np-@QBOqJ0YU)C9bTaYWmGQax3QE#q% zq}U|e5GfQT{}V_AvoI4M$Jlod!z9mZz_8K-7X|OO+pzfTAy(a_Lp@zqEs>lZKKZgT zE?Do>?|v}3f^bzY;ipPMg-e1B!w9G)zCSP(W&&(!tQmx9aZ!FeIBfCre>5u#=icSz zzs_9YYl2Ak|8?$;uBOf||J5@|O|w>>7eo!)79_Hjw1tk^(Y>96AS&2{14BZc`S$(t zhA#wdFQmi_#r#?Q%mYW@8T4H#&U_wzdztioHKRf4dvBEmR!cy&+?C zuQrHiV|#jcGww(MVB{y>&;ySI# zev4r~wpoThBD+r;(?({N*@E|kL0dOH-~D9&jdRq}A5w3gIhA(0ZiL6f(wiqIco=nf z`NgG85K=n`#{&BZi|=5Z_}d|W@ni(s8-*DkF}h_u=1f1bNqD2^aBhuT#f3MX*#-o0d@YYh0S#A>|w~q*0G~XD)3gS$w8e6ft>V zl~#9M7ARk7t&^CH^Pj%l~a60{S&0?cMe@WCg&ME6N}kk@BNs0-wGXk(8p znq{$&HRYB`Yb4G;f?_^_ee-Ak@Q-mR>_gwrd89Je86qw_2C7-nz}0NZWbsLE)to}(&WN-Zh6RL{nlGN!5BNo-`X&?~bx|D{=5Xu| z2fU2Pr3o2pk?bgz1d-1Tsh8kV_70jcX&CAuT;%W+4717>z>z&ShEfDf#w0EgVGmVG zeUdDxQl%8k$IjOxSxeERb;%N&1sG!oWcMp%LrIm%Qcumem4%k0EM--tH$$E|zq7;+ z$)aSG@DcG~v6zN2W_%H9i;N9Wi=(oL`PZznet;5PTY|ARJgX ziPXRC`_eOD&a5|rtuQ<9C5+)$*SoNvvUCXXsl%PMbJ zdlX|~;}o;EJWdGq^h+ufk4k5*{`)=>{&|K_7SX096(;!_(%kdonoL-#o>{8lkxqui z!Z76uIv3lwM~rE{-CU@;(MIExBM1Nubu3B$+te}lQ@$Cx^1aeY8G-~V(xUg8n95sK z8hL;Xh-@rGjj@Xs`S{4AX?Kusbw})c7AcG@aTqeWMcHzW1D5&-v(8|1N5CxNbI3?| zm|*AYjh)2}Y3*`w>xed4l=%@q39@W{VMcpppT=ZWZGqdF9rZ2T1}tzSgb=#0P^kkA zEGagaW>Ll=J7HxT^{uUJc)&mqVO1fadpUrJ@CTt}nvs*Opo+VykyrD%)+$Sl{RvD` zr*$!ljH`LS=hvFfcFNRV<`l+2Fn6*X$7?Z*{-%UO{5OKapz;VY*aW#*`H#@A5T4u> zFkt`J8`2g_wuS!{x+wlv@XOz)EUI?4hEC2FhBh|;Ze)E8*_7uM5kKXrY^ipQ(9n8m zB5c3Gfe^b_qtych+ZP;tnB?LSWl<&u1J(T#yL)0Lz9Jd$C+;vG6{xLY2^)g>lTG*L z2fO*x!E!!<0C3EXEhYOl#V}bo{D}LR>(f&qzc)Q3Tx0D zn_}98kcm{8{U+wn)nz-$ZZV^F2Q0BdTO;yp%|Kq)L5Xm2j~$|cn~d+WYtA*NRlEi- zKS!Z#*7IubM|W7ncl&b)TB&~&eRVwO!nS_TEO7t1a2%dQ@7GAWL0)CllhP26GraIW zD?@1~lmRDf?q!=^+6zP@tMmS!ZXh#NNAkYg|6z8sa>YgPN^s7MNapi zy|_MYIXgo~@{Y|3;m|P8c;0R_!fYcngriJtp;`|s;Lt&MwP6@rL#1s^u-|E;UJou* zW{of^KWb@ETRFs@OwsuxISb2GTa&%+xp-5K1G(4U=z;Tz(}6RUiMjXC@V(uo&3mmB zRu|)Y!7C56+M>40Y(hn;E9M$aEU^I&))agS5Sqiy(Y95+QcQz&sr%>YWm5N*1wzGJZ}*3hEGV# zXsSd;H6}Rp$u6_%Tt`L1+vxpyOxcBf1Uric$i;QMA}4|H4KRH(gawW)TSFvR3mrQp zKnN1x1HhMU%X{F^*j3vq`siS^(3`LpNM9{!lTHa=1Bimnt`qzZ^m_V#EGrlx z#St)S9CgP7`1>shJ}^-r7Jub#B7s5*;6-Lo5EntGh7+TXvIhgIx~6+B#7Rn!_>lIZ zU6=Weij7L6`5P&x@B|;G0Jo*r?es-&rEv2jZISwX8om+!l zJnwWPwDoYMPmq_^n45uv5Db7isB7hK@@t44wz>hczY!z6^4-bK`%I=9fVO&^F$*sO=k3G{SJE$_#47s{d_G- zQkw3U#r6K3qSHTTyZ;6fT9#-|3z?65{esA%o2`GYp^@N{xM6(Jhe)=UY?PFvzzH%{ zCA37P=?mQQ?{@3C)fo2jq3jp(%F=lm)vIw8_h2{I@}ni_BFx+ZYb|@5*`)!z$*7&m zk*Mv3jHq-|ldOKeI_4AK?NT*%wNo6)`DK*N3}nw!Dq?D2apxk#24hJh+$W)ABI`Ie zM=EmzeWZ5b`w-eN$fh9?{ha&cjI&dj0hF=|Cdonj2wfp==;V9I0}ItZV+q49CuLGI z)QH*UOqx04Pa+Q*Z?||D=ek1hwz83uOHBIj9exEwdT(`nV zGy#$qd(C3s1Pz3w9^nYYUem0cw!8F%$42RUkP7GWIfRBHbH!Na`uX!&$`FVT;P24* zr;7~{-yOb`Z~khdluPBXh+j53@s*EI{%yAY&)u8<;R8bf>vmrwG`{TYWL7DewG``K zDf=JFi^zL$A*djdNWl0(#J6o*)qvJG-It(|=^HpgB~=h;{KRKUgC!};1u!D*pDg>% zM>(3;)B5_|z-uka7j#zhiK1z>ONT6F55F zCFPS}n6&wZjY*1MzU;DR4K>_W{%(tgj`kIR5AnI8OCzyi z3t8+TJ7Rtv${UNjZM>58?S#Uq$UXlo$UBeVv}K`d#T7x7BDjzr@*4_4bPrmJG-a`9 z#~%Ugux1(Ox=Uj!3ufcQWjDO+_0Ij*+Z+A+Q%9zf>@)kNw0C#o0B+q{kdyn9A=Om% zj%ZcW^hef38jbI+u?+|*WtR4t#|AY7l>TC8wrsv}6Hmd>v{lTFu3Ece_nvaaV# z!Qvhb2#EAQt;)j1#eqTc>-Fze+`po#x~I=Sw4LnCJXw;{Q$rXp0-+3(FbA7aL<5oK za=~OkzBSDaA0)!cn(a-%M6|T1*)FQlH8-oC(<^GP1*P^zh*@hlulXwfT=898x^e@a zyYA%3oFEmsSr$0jdYj^V%5k1{Pve=!^S)pV7_<@s8h1>Gb$@eYze?QI!@5e|{RHp^ zK(bwY>j~e)egs48*#!1MMi@O)X7=G09O?r0fyhr?JT_@on7U*b?0@#5!tVvfV#bC~ zD}s+7W31j~f(w^s!i$Gw1l3PiG$hDNh^H`pE`stN3uhR8HznvM{yopnOH#^9)2|Nd z0Y44%V$JWPOSzq}n=Sm32D_cM%j4AgrLVc2y!d4L5DcW(6W!n?)sJBMsRSh8rm{uW zuW%5>Fg~Qf_AYyrAI;-exSRfMtI1SD#1ee5H=gW==!90K;yUK4kqwL1zIahx^SbmP zvafCQ5_Ow8skdBclq9X88yuVsvohaMDJRupqRB!;9UFk@WeRyy%|9mTSiER7P>lqC zohc=vRQrw2y8ZzKzH0K`fH{$U-G&BW4RB0k5vmKSQgTTzlaq<7ktC;OF{H|wZ8Llk zeIy=RORfO!KU-z8SWBNNDn^!Or&YhnjI?M-m#`c%%T_jgJOEh862vma>ajF0MIhYP z!bEviub6H?8wb4S*-o`L*o{ZnU9v*h<}-1kNh_n~{4`~x;Y_o+l!S%XL^Z(%wT&Kd zX>~xZDZ>5cuI=5sAw}T+BfGmIet2jbuZ65^tc-4N+B{dqPBwb_+Z5 zJKb7^Eq2u4skfJTP;@$v_QBnZKb7=dwToF-@T)S-o;Ww1llAX|xj%6181bnC*r--_ z>^!tArW#U665>B@ zTey!WOo!t;#xZHpm9IjY#WTUN8mTdkK!nB;Nk*B!sGX=9We~AaRT5;XYq0%>ovL=9 zzWM1D@o1ZCPH0$uoH9lI{2?N|O(5frAXaR)W~em{dm#`1y~xa47O{5h*U)H@%CL0P z_{{fx1dWj7g-VQ@& z3l-gST#i&#BApEn`)oyjXsX*C&Zc72ok}b7AGx=fwMgonXhcV6CRlr|X-_Ss5?u1m zml|h(JE=sivy@&|&7@vd4Xr#_;_9dbEOulO?^&6Yt17!z_kEH7DbKs0m1Hk|X`@Uk zvP9B-6q%h`wPf|XF?r6MTGduAFYw}J&z4oa5LW=}7GF`t2T?pk9CLIfR=ax zL%#fL-Pr7F-lNV|NmY0DdI3L2_lRMayr8z@mpzOz&gE+b?Cl46$}y*VbeP5qc2RK? z#>L@bxf41E>8oS1joD0#I_R-^x`MXxh#eek7IYn$#&M61Wu3xLbDDrD6taFhE+!s@ zfF_f5(MNn2^$S5pb4l$ePkC^Pj(Uw_Q-`s~O#bnV7y@)?r=k2nN}+-84WO-aUrXW9 zrHa8%hIjff=r!I}R;-X0CoZce%5sNRcftYKOiGQU#9CfAYzwn6Db~nZ$Jl zD0U~7jLftC$(}2|E#ah|!I8nh>|{=rF2#*3Kh94(e9s@I$V!o@1<`3FbKuR_myu%F zy?|rG3t5|1g{H4>58)=jXDtY>s({DX3W5RlMiZhiji|1zuAaZJ??K^?NV+XT?}-g< zq1-eaivrBiH-LDJo*wC7S#blYm%jjQ6sCdR#Ee$9JY{=yWIAap1}58P5*_PIbxL=l zRoU{T&h6U5P|pUlIV6tJr!RV-x$79|o*;Q-hZUyoNIi3_{_Gvii;M)NyyA z5#yxi^-aDkd8+9$<6Lrl^#@S;iXHVZYjxwLhC(I685B0F%?{o(FQKZ9X9ly_Sw*4w zj?x=EQT-L6G>NJm@6|ahn|T34uBsD5r?=wL!bMi9&}v?yx`n|@h9=C;@rpQ;OvDVJ zk`IGzz@Pg^zQjESQjHlkj_axm_YGif@I?8vAvR|`@|DM6=H&m-^^MV$L|eD9ZL{Na zY}>Z&j&0kvofCCz+qP||8wPMmKwfc7~? zPngZ^BFY7%rCBd9({p|mGsgkhWhW2RC(9FZvX(?ODGPHJ{>aE0B%7+q{77Y&ReWbe zWOn3e-8O<+@!wEsGzU>S~iAps^njwRx_ip1^F0{<_dXz zoxG&#p@0+fS)`}(RNW6;%*RWiA1Xdd5U_!{=ONfEpoRwN6K+-9*gxC1z*9U<&NNmNFUUj-Ps)<-wVaB^FA+;R*X(L^Iq!tJQ0lO@w`sFA(# zL+|s|Q~C~3t7e8j%nGwiz#dT_fLKM4i_~J~+kb;=W2ZX=zv2=#nkO&^Okj!sX(ga4 zw%ohmu`>*($fej}tLX$`Zsy*bUOHMOwj4dI zF~xpWmha5H*^axs>*RIA3T7be#84CG zB3mZTz)dIDHgF;CUAokJDnslASzK5_w`1Q+YxUi>G&=6NtDQ z1eS;}C<{klvGBZy;T<09dXQ_4Ti+lkcAWt}olu!*PR_NWzdJ@rQEyS$CyRL%pS z)R-G5_S?yr5zCBuf6=?ER#KYEES^GhE%aP;Z2|$&6sy#wpxf5x_NQZppDj_3vb5vu z%J)A#*yJXxH0&Oz6}`%A7Ac_G7H%$}Ejhv6OE)0(@!j zepeY0364>8?pH(-$Iht0IeFKR4Bdr9vW#>_BFBP*(_6n&+C$HY1#ZO=mAMDqWYA{#@KK_-^=k!|{avSkkRn>F!*Z<_|C-^Io^vFHCHfwhvD6T}7E8=d zX@Mc4Fx1kdpTS=cUYG~&A%35DY5)oXyS;|XG+fhmfE4jFlD6n+(s?EO(c<>mQ@Y4CW{75eEFBo?|XA3x`dN2RlO&iGrS| zl1QVKP>Qz|jVBQFR26({KOz(<0@j_(M9Uv29|Cd4VdWHfiejw%A3;L!ofyv}{j$2vwdYNzhZX*wPvBjgY>rq`H>9of z@B;+$Kc_VWTg(jTCqFO;)E#6iINv5LQ zag|;}pfp8V&CS9m!mV@U)qpRQRqute>Ib24V;9k_q^DG{<Q=`U%p(hq2bz8i zg_Fizbtf^Y8N#QSv#G}77qoZy0(5piBt*C5uC{kt?>k3E?=u6q+)YmQr1!9}Idqi( z~<_{wye`UAt&)q5v{efNC-d<$#<4JXvT5zftqgFe)~EmlWLu*{l@` z*-$+ha3v};eL#Bx6Fx=BI8L_SZ`W9Q)rx?wLQPG~7k7SdSiJ2!{+4?3pQ8KQW`%-U zK`{$nm}F+wVb(U|jpWZ1t`iJuX&Cf8y}Nsz+iuVeVgwNx7Rfy=QrW$2j~#&g?nznl z^#cp$IW@ng2m-xzDt3j^UyQP~&XmreUb@BQbb}z$e-ax>mpGXCH`eW`@A^%*lO%J z^Nw1(-!9>ybfH&s_h<+7e)BWD;OuikA{Vc^hDDj*A#aGt`ZqXTdZ^oX*YFH?OJ9ii zSu_`xhwU-j;_72(e2eO!w;34j#c-dUB`Dt~-iM|4m6wrX2&0bZ!h z@jHl7GOrgZ?gAFCpE5S_YL5ZUA^DhZgN?$-xe}hwBk1~Qg`qU5?kC=)KFZty= zZKojO3Tmyr1osEDkM^lgh0jx$$m2W>Ug@*o+ZT3O=?+m_HqW@u>E8yA51vPcP`udS zPrO*<@K6ufE^7*;1HWcH8K%t+o>i|OHj(ya*aErth~=EZ6`EGldwe}{jD+(nqYTEy zmk;r!dMMtY?AU8ye^IuDQhz-U%t48BeI$i{#TX_U89eHv2!p_F=CUy?3s>L8chmoS z|5)xGVJGqT6gU6f5#m2Q(#`QS!)8;T5`XZc6FN2;ruVx^>Zq8W>s zwXKJ%7EJuVU*{{BK;(5v{=spH8oh9G+C^iu8v)SHKWT?t7HW2C4RkI#{(eZaTZ=*CQw`e^IwAFrR9Vy4S ze)lc;ed=ktrN2{~t_)I~wSErcQ9HF&I<W*{;hBeJ(`qRocLEv&{_Ni1Bkory`|A#!h#qUXm1&vT_52 zocXV5GB0dP(J4-QSAiGCfM|MRQJQQs>nH=?H-W%UO0+?=sT5Rb!VWdtW2ad7Z8qxQ z+;fcVE`RLjy)ofQR(Lv%9jbX3v?w=4x)E==T8YFcqUDB3s!L0W%ecTxFWb+CkJ6v$ zPacKgz#Hi;_uz7nW!i<392%_Q^Ab zvRy9VKebddgX>U1aUH^YgHSKo{>Y<@;80iW zadq2rf-UD*0y((32G*1Uw?iE?_~_XCA1eF^BjxNzk=-=Oug((>mM7}N5A%;|#3dV( zzennyvG9bx^LGVd3ZU5V9OIADIrK}p)!5jCrg95jm6m`MjDG_?cvKT+?+oD?6X(G> z9719zLh-mCjVa3|&Yk!R_BzHW2CFH!cp%b|amuKMxQ2D-7>`uTL57UlS0PFA!d4>! zMnMwjcr8AIuA$y(#bq^J> zNiV^+$36I79AqcDcc<@%SC|1BA()>FL=+_lBCFgQ)i|yEh4%up#x)n>M)g~yhjyEk zusyMY_~rlyTz=L!Qq3rS!dao~!cbR_nAlhh3F7Y$G;l%#Hj+=!s~3+)++w9L>fzi2 z9mz|JIVmOa$|pD*`8k4guHwQtHwL zaJaI9X{M+40`X4>E0hcAm4|2OV!K~ zVbZMCT-8D!zS;MjH|WM_efne#N2*`8|9Z*6m@|2!A}!zd+LAE%k#^%&DmCUT1f77_ zg65@=Wm~4$ZrjUhB&pIVH_@oK&a(CO98lrM3`p;FLT{-97-5mJ zFbH!nRvRG+KN@h%sTDZHw^yYBN)OtWmm*r85oi}Es%g5+oA$7-o~(L)bxlh7togDh z*H+WdMaeG^l2*snart)+=hBWrLX3ELM;3(}qp=e+h|S^Oe~`%$bsOyBCB&gYM<>OA zH^J>uFktViGa#8H4aCFfBlCt0!h@#a*e0lUFv#2;tCTsBPM~Rr$7=|o9aGF8(a?H_ zdVBXJ6jFy1i{(h38`aP*r8|&gg{$)@1rIu{&|a~GbrcBX@Z8}2^bYh^UAK;Fw2&y< zCAbcovZI{PzvC{}m5s2tWBwtR04Jn6ZwqEf{T8%83Z0mudj?i9PBnNpRN(@NRkDFq zgv`|Fr*4Mu+WXy`@IUkZW1Q3ptM8Z%|NqCVos*^Ww;JES#H^CvKS*m{yYHAy*2l$V zP!v#LQy_=>TK_@RXHXAS+G=uFD_&7l{7Z5r@s{(0gy|mu*6+O_`k5DpnFM&_FgMrj zhWDm(MBJaOvz#>*_PKkKuLCtnLumO{j8;L6!DXysiHFN)zsrb)#uJv|4v!XRiaH zx?IWpf^y)I6l3=l3R`XB4aEd)^amS2t%05k>pSm3&Rjh7|tiHdLEqte})WJct~l5 zvDp=omN`Ertpl>*`qs6>ajCYgN=s8WpF5)fHdhB9T@R>VC-@aAj1&)+>c!B0co8nt?11`M&!>#_}Ee|ZSq>JM7A(8e4R9W655|A zrga0UV@oTvkU^0BN09T&%~k9~ij~I7R{Bn3v1PP^0+D|JR;~#5%$))jCaVv)btET-i2677e=;l^%G~-0o%o!=}`u?rb!e|mM=>-P_B!UM7MEV~qE&t>i|F!*F z1KRx`RHL1lN75K+ydk~`ba;FUP@qI0WflrNup}7rBEkSEcFyEr20PKZXk}B>vQ?An zFPkQqMs)OQ1foc3?doQ&YTZkt=XD=Dnj#`(5(~>^k=9x^-&+8C#W|4QBa|7l0!jI#1Q1+YovR_>1Q=V!Y5b{jZt9GxZqn0 zC`e&<+Grdef?-tmdKCSkmHrp5T&7!Rs2wQMNOK|gW|W=5mi`|z(6uMRFU^}CeZ5hJ zGAXD#(0e5e-BCAVAMX&pL}B^}MF{+8_oT%9826}#w^CT&!rdlsP8nZ9Vm)XYJ%Ik& zyDaL?$Q_v1oPZs5L%uJf!#KxtdB?9Arne}fmtRP~YpRnG zI-V}vxt3Mv9V5up609F?r!+UUDTFe+n$$Fkw4vV8*w6F6>t)=J^EVri()t3kjeqT3Z5pto}D z6zI~P*5Oexmlyfx&Kn+^_UFURTo9W6{cYyuY=iMRPb>nF-a%~mx%HY*G5?8yKK=w! zw2dj68Qy%sI4I@sCL#xyW*OFpb2i#L14j{5oI7BIzMr09b9=Nd8Wlno)ti%OSaj4m zjLOXUwCc+l`rWRJZKb6q=88@vQ*IRS_R^Zou}=-l&dE<6R06>nS08lr-czo&W~t=H zYgMAbMUciBrSf-LqDDADlTB-Ku!EP4>7F8;Xh5;%@E1{kp0%^00@c$5kdbbJHJ~ue znHWj1+WIDrgye9_WKa?46|*o8i&RKp>jO44eBnC0c07%4AWBZjKEYRzYT+S1DSw2)PS;5?77^9@EJF z1#qCY0^AA368AycXB3d9TNP%S>^riq4WhSB4yNE$Xt53{D9gH3Ws1qOEIC-USD2M^ zz2%2FWdZb-G5~@Sq%}-;dYv;WvVb)eW`~LbEg4qnDK#u@+bOa(kwl{mt5~jW6(@9f ztu>6B7}N5}BpDYFi^zzuD;$WnQGhI_f|b}iQMAmm@WP-!QG~PfJ9XNg&u8M6yfei; z$Vzho%^%^kbPHxRea~MWjNF^>ghiRqI_kly+QorQUJ$2?f{{p;^*@L98~UZ5q@iJ+ zY;sppE|S)p4I?PBpu?mwL>kQQxQr;jRfjSa3wg)*%`E@4ERcCk#cnuOn8+kIT+p5jm%;p^pBTrQ}f6%$AmoivfOzr3! z9tvQaF>kEyCE94V+}%oOYN3g_dE5IHkF2k}zYD_7PL-G&%AQln z-Hg9}#teCtP%pz-YQKmSz7&OZS#;c5V)7B|8gvYfK%{xmHNi)s`;aG7ijAfVj_86f zpT?MSS4Y`=&U4Pko{jD1wxA(D-Z0ZzaSsLrF(@esjo}Qm=_`P^m=0M~JAmS0mtN;I zgEWwB*vt)6){;J^*-l~v`Tj{m z*YNB3)2)Bba8tctK69K+rdew@yTiC?Oh(EZ*RZjBK($*O+GRlP2Zb)=E%YG-A`~bD zM@&qd0w3de4b*?}To}pyd{H)?#_y(pWI#^HjgXQaYc)yq$Q3QjOI`@9JU5y`{`ITR zda_?={@FqS2h3;{>{L+)mR^C~Nj|^3w>EAk zGQSQIN-`gUpoFcd;tk$xZ;hcoeJq7If?V!4I%uB1BGBIpu0xZ4D)iHIo^iB9C!u5N zMr=G07zc@*_l|NZkSDZFf` zP_X(hO6PAq-Vis8j!ObsE9UYX9fIp;FcezI`bp66e$j1#z#{>*Te){)e`jt1rcqCz zyEM?VTQDQi6P+(g^`i(i;C*!y;SCxJ7Xuv z1z4wi565>RdyB{bEQ0kl1=iu;t&URML@7}zhbr}M0MtGDLM_*9lock^?U=FbHSWyV z>_xSrUbE@sandPFsjigHGr7GADv^&TF^LNGE_-s10x8jSTIs+qrn2j>nCw)iV*rRU z0NnYG%v;Cs_6Coy{ov`-iAD6ZBvYwL;oFwP7otflKiZ?=2~bG|Z5u@$P1zQpo(MQ} zH@_hEx3>59hEnJ3WSjf*<1Pk04xbEK_1(-^xldKPThpLBM~2?vXrfN^*cjhs;&cEH zy}k%h>U>@ti~NnZDe^RMvsIJzdJqI3B0&i2^lo&tyno;th-xC?IcgPH^1W|3=$)Z` zX{Qy@SPK;30SUm#^l-)OhetHH6y~~q5n$Oh;$k{?<1ZL!sKCl13*gSs7c2mI%)`O4 zWzsE3U`rQeo-Sh5su*I6^n@wVmV4#8WemMslKEP>{c57cTw#>enZeB)lx-EHu~8I! zDx9}H&Y`Pr%yQ8K%obH*ukzhr5S6)ZL1stBIibx`<3s3gXmhAxW(9LhHoXKZOP+A( zp`*+_8S1nd`>Y>n5JQR-sOgS0T|lcmRI~=gg<4d_^p^>r4@xaHq7EPswevCg(#Lwp z+-KVvm&DU%~ zI;eKu(F8!}m9Y34d8eTG@37deA`8 zl$uW-Ve-A#=oX(2F|mtV59%|0;lw%caMhrn1)^6%rf-|y-ZTQ6DPf#m1ZG`{*d>Um zDy&I7pugB{$IY9ERx#vz+8Z`F`d1lTw@x-`?MatjyKl^r^L>1KcmWyP+0YwWTY9+I z8avTDnf#)+v^BG%bGNZ>sH+{FQlymrNj*I|)1b<<$gH3wF(o}MKQ<}dq6!1=u+XGX z-*Qk7?Rtk0M0r0cJ<)QY1O$Q`w>X%*NYXR7snP+nwV!Ogb(lT5*olJc^8?x>#V~@i zq{3A%!ZhMd%oD;Bf*}OSfezP)Mf=~X0oSbKAkg0kOX(Y75&iqWRI)StR@hN8{TFyu zt^U8^6;lR#h6gbNk^vC0fdAMJ#`1D3B=~^z-{6uU)LK51Jc$WolN=8a5z<#il}*h{ z)YKNb($&q47G%IpY8@7pThBx5%kw@v-))_LJsy}cB*}@NF2q}%(wt^qXWIU9K6jt! zdwoy=QB-QtFB{l#YT0LnZgf!&;WMqCm^SDyUng(t&U*`Fc9gV@M0q*njc(oafgZgO zA&fqTiG0x^5+wJ9ncl`jB6{5+d#jisNIfvZ6F%?8V*>M#9Ef+lfDt6^86rZMm?hVO#d)_9~`bj~^OFu-z@m~#?-)hqHg_-lZ%jJ9PmG%(j^4tu-z7(?P z-|tPlM26OS*1_o~{nW>-u#m;^~V(551a4&as4GR z5Xbr<(w8ME%8r|ATDlMO1)qk~5i^{Qd}Ddps5Iw30}~=CIdHyZ{cZS_q+}T~UZpY| zIgG=OBN>_OCg!ytnj)D2Q-)DfgIDeNI7xkOUmHDKv`ifW*tG~)uZF2f6&Xakm}_mL zT4))Nalz&`D$SP*j#*VBMNg??KCAaE8sst;=9pWt7%cqEaOc=+B{O6RThN}IU@}`T zRQ#DCCBkGVZRlB$_;nax_tMVXz|1di_Jv;q-dc4N@E{z$P&SX+fvzI7YdW)PP3Mw zlA4u0G<6e)Dx&T7JS8KIY;i=F$p%-HoGA)jhD6p@1=fP4%o3-$Rg`J9Ic5DJUR!2lCR}jKj6`l0u8C6JQicUB z2?3bcnSE+GK<4TBL4XOQyl{c3zr$i>8WEnp0m15p>QD6+DqE6JUSp^+%tl<4cOWtS zxjy(z8+Wa)ASt>MF_s9$V)5u0i5TyLktMb!VL)U4KrO z9qKM$N?3Xlk5^Xn_t?3Y#Id zQ3L4uAnJKKm{cBcXsJALzDf^nUczGi_R;bG3TYS)W1Uq2jl}sK@Z;z$-QmCljHa`Q1q^y%n+UvHdV4GuJj90VhdZ@J3bdHzN;2SOj>#CMZW&#$M zOjtv5UEG@3XjfA5Y%3~MBL7%rmI9nvb1;_R&Q+LQ&=nfcti+S7n-XF}xg~#z5yhFb zXa4LsDMxi?Ri9dL2!X3y@|OKMyCkGKaLVfBM}pqfKf0YjCsvi&n#Iy2p&m7~C0!@2 zE{z3_E|S$>RcGfe<_Nbwt02gDFvP%gY|_GuF3aLNvXEiIlu$o8y6(<_yk}LTb01?E z1)pPO?3KMD%+mijos_{|)y0d!>=lg#TW5MKNlUj_Pc@eT{meGvi3MBPLNBinY1Hr; zxN5Q^<{Qf%-T6kt+19-4s>kz|j8(b0P)p|ZE5V3w`FKx}L4#YZk7|`7O^u`F*PY1o zBzEn5{GxVd%N@M5d2x30kNs3CxBZH~tIDWNz5}(NZ9Siz9~&}38Od&+>hP!qWPJ^F z!Ze6SGM#baUCif;)FI~vcOBd}hJ|HEz)1@}>!bLnK9(;YP>w6lCq2Q3Chq-eB-y*F z-3Etas|1ME+$o;dFDN`LG>jr{EeSIBTLrTUm+<`4sHE}#aLBWE4IaoaS&Tk3UM{=~ zZ!0rC!P1AgT5FN>#FgX=9R;Ud-4n?MYXM~ncHP4YQ+x@uADMKID?j#X)U{oljBPA3 z@ciA?bxPn7Tq7s)2D>FudnK*)*-S#BrGTW~*Q;$O(f!>F5ym8m)jHh$UKR^N8wafZ zYa}(Mvzs#0lsx8DT+;TZmgz|Acm@Nn63IOQ_SZ*5L7CW;h+}eCB9mL`q;oCpQJBdJ zrES~;j#tqb7j+%A*Wp25w?ejEh!S~2|NZVM7BQDn&{u z*U`_5-dWtM;oX<_*b|Qgh8Ri=WB4dXc7{^NS1e<5N}p8u%c7R_81NCl2UGo*OL6#< zRL2c@kJO*l?9xsv-i-$E{wS@7nr6>0KnKdDTi3P1WbfWrzqdv+en@e`PQom~3xzBi zCI{yVoV^CwExf<;R+|d%UjLt<| zOLJ7^a;IM9#=Trya;)^F7IuCPSrEgd&krO|9I9#Gz#CzM#AlQqo5YA)Wq!z6p7V%o;EA+2^hEWr4jmYRT44!z5Chs~S95bQGmb<&Arx5+iPcs| zg*3Z3O<2D_2ux==BYKtu!{Q*wMd^v$qhDB z!hQ&IEyzCHbG5?w)vSpd_|0+6)!C5JP6V`59=};m`jkdM&vY%cv7SsT4x}Tzhd8>k z#WgjvFt|WI8K{Ly-U9h?uH<(%wYFeXh%T^;DSTe#OW ziIKBV?%yvU7+i|qYy-EX$Tsd#>PSvpL$0iSNz@MEbd@$|8{>Nb=>=CT&cuh>HLb+P zGQuDJg^gHRpr*ARLU9F`P^E<9YxWxtX@^6j%+z88;>OLXqV5pnu3U6FlL`5cAtEmL zYb?gAz_svf{rb$cGB1w1KBo?&d&2aE;HLd2Sm?%EsO-xVJEvgLO&F}Dhe6Tr7BX8x z#!C7K%lspaSiO^wdw`usFp!gXb9f`yB%0m*%WU9m2LHAV5W2rSU(1sE$hu>|GDSe# zXaK&z*Lnq^3UE*jcY1PDFQ*pX@Qg&aZ*b5^$Tv-&`Wi~AF|UGQFUd81uN&1 zS~OYca|^jy0{jdVSThP_C3+Z-UnlEIqE;W1gaAEx7}5ZhR_9-)L9igR24~!!HR8+p z_B)K!xAT6-r4`0)-zv5J*CkT3DQG_>Nch2zSFY ze_jOa_chE*On7 zqt%!D=-NPaV}y2V2DCeh+3f&$GYHe3P;ccY*)&!?N}zyIRv^AE6Nq1DM9hYAFAI|1_l65*z{CiZrgw%<}s|L5C3aL-kajopSA zMo7=II@s&<4>`;&y7*H2E7z=MOP!9bLPGH$!gCms8T77K`aQ{%bBQ_E_mjWX&5N~r z{Q)oYkiyd&IVU>ZuWvKfPnYC$m5rl4p1zO!OAqD_1Q?2$6#Be>uU2jX>GS+PpBmVA zj^{ch9@;(M*BYLBzW(MNkw<<1oD-3cErBYq=wyqY*6)l*ZoRTQ3J`YF-0k;{^mJ_c z_el6-LSAQgN>furR)fF$`26C^j{Wb^iQ4Ig-N5t13#v0h)6n4{TzkVcz~)Rq>Yfb~F|`H6|+f zVGatD$fl)HNQ8>rlI9Jr9uSl{&d4O^amg%L7#qf*7}CMA?x;Yt$lUwwaksmXIY;t(}qs zSQ%w%396V>g-<>q(Jh)OV3xTfOg?{#N7sRAs25yu5oMpFeq-uphtEFjo|gimP}N3U@ktABK^w28m!H)|HV9=2SV!aCTi}rVo_wJp zKxvE_Z>P-Ih9m5WGLe#H zY0=x;;i_N!!!wR-vp`3}@Sws1jacSrrX9fKwkF`VHp=6L$?A+m*2u*Xq9UpUkTM}e zPGNcvcXb2h|6+F<>zwKi6d|!uCt0icJvoT!yrr5DTlYbkWE?o0P*@Y_!I-89k>iV= z@*(uONhGglX~I;6X@()pyuANBG?MsqO(2fFNQ2R`N^2CHC{NW~&pZK?F&q?(E(DMx zIkXK;nDn`f6_F#gc<;%64O*JJAc1C(`+M4h12vTC5szug+eBpCB5djLVUtm;@QNU! z_2ckJbpI(7KfF;}>t?^Lks`^Jc*TgBAyL8^Z40YCXv~zsBP6C+eqf3EsnsKjr_IW5 z*Hw22nzfvZ%s@4pM)r>#2SGx)AE`oACh6O_Y8! zyqWz0y(&e=0Td!J@k zhe$QzHyBlqZP&L(zhBerng?z^#Aa=p0= z-~;C-$B&Z_UZ6;Ax*4*^@4+JfLtvFzKBNirDE2=ADpV(vZD(oyF$BL} zz$WzEp$Qzq_ormV*5~Yx?~Zd+xAT@9eUy4+$Xd^AcO$ZAuU+FEu-8H3F9)2WMO%}C z$Yt9>Z?RrWE~6LqMMWn&mQX6Sd@TIb4KHZKWqE?cdqht6BK9Wc*}@pW9UoEmYU zJ!!oZn6PCX{tJ=AXEeLC=fj%CVI4JPx}S!B7|O%?4AbN<40maX@^5hJ@Ps=3w>fz+ zA7de=*JlFB%fBiEF7TZ=;v3_=SqM64~^+AsmK2-VpNKgCqjF1QrGamE^Ce}j0X(Rcd(>X6x zr|zxH9hnfM=cLaj?nC5xHV0;CH|N+FE*{d^z)Bnvu&gluzTy%-FEYyqbfu~oc z4+|mZrVo3JKAE!Y;Nsjwzb;A=ZXd8W>d3A^(6bACldZxm+wMGE#r+%6oiJ>1*&`Dv4@8u=DbpB~mtGg5GMdO_o?F8X$Te-MB>$uV(#TIm&9c|V{s{Fj`y zscQ|oxUtJY?WwtcT(srM??toqwlqB6p(K2GEaOq1*uXn`r-gs3H}v2xYfdP>6XcYO zjT%EfVrYTf2t6iD)uS%@q;Zil{F=duI-D<&ZCV9}Irv&rZG+w{7qv@8XxlSi?a7-q zWIVTn=FmF|s1`dqiBr9P!;(a}jDf7Jg^Pxac*<|Sy0LK~G(0!;_|W4yHTx=71tC@b z=tRI{=b_Z#$X+#?RgL2UM$u_TE1yvLh)S_9LeNcJH25b!0ms4E*{jO1Q!DjyyXCly z7WCs7_o4Jz34T{n@%I=5d8uoYk&P|%(@joAO(XP})y_T^TsA>Xg1E}d&f-3m<44%O z!Hs3JQ3h{uPz@3te5WiJHrYIL1gX!a1n`S`p=CBHh{8@e9)EH=Xv&2#x*W%5jHv~# z7+R?Zy8W=p9{s`GcY%p=Ax$Sttf?*ADL%y4N}00hqW+!p+U5x;hGL#!kKZOzB)lpL zOp|18CmWQCV{jr{$QcOKnV;~2w`VC}o+`I(uhMYr!QsuP>iRH|tZNCasujo=$Mhc# zs5&eY?+uQV-8Iwa`#Y#abPRj&)H9^=U?nXFTr#G&0;g+c)E+9J8Ak9U^sH z-Np~eFM5OkJFaAIHkCWJVlFUUuu&RyWwB~Gqs0pUJ0uINvtI#Svl=4=3 z%W1q-`u1cev02!;reX!?DflkbYAP5CrRA4cFz6{R>Z6*6sSBlr_Oyl4dm3&b+wmHm zA{{98snTd8f$Zb=_+^{))-`eNPu z5YgWf1NT1zr$6^gJPMG^%rYN7L@m!4RhgXb-h~~b?4Et}H`dLCs^$yOS~6(ue( z?+K3~$qA!cGD2$&gr?dP)I>Ic5SIyRPLWK5eA_VqCakw=c8?mI=-8`Z$wkwFlm_M1+v=@4-nlKRy!r&gc!epGXM%-iR zdL2r4B6oYa6D^t4b*47G{`f#vI?lcBe*NY-I$|6*T>;4l-xtplQ=8vZBd#4&r0Tmv zQzF^w6d#Rr;l81p^%(-jB;Vt?Y$l0PACZCaS-MB{}Rki%uQ)Y-Xr0XS1=)Jw71{G*SU+-ax`s^f;V_Ld_2z5^g!e1HN z4l0g?^L&fe7d4TOhesoz&n%8O+f5ob_NrB?qosyW6An~VzvJ zxjU(m{b*ym`)g^`>i;JR)&lh}8Hn9I7gdxQfkE{L=E`j7w)N?f3`1LIPgjtZ8?!>W zWc6`tiNIW4!POEuqKxa~TZ*XR`_%5IuL^L;rsC4g=gL+a9dK)jr}DI$H{(O z7lha%8~`_O`-Qo(NG)^BXRPU4;5!kq=Ac#dQXNaGQ796ZqVrQR(WqLlnUZRj8Dbk( zo33YMX*_^@eQs%qwG(%tquu)+)$y(KaR}U>dYnml(UybNjxaC>mbI^g7|`E3}5Dm`ZoK=&d?OySyuGZC!PRmVhO5L1C& zG&tHSR~5$9F1~prE)2r@^A*lp2_&XzhU_C_3Hc2DqI;?M zSI4}%ry?92Q#%X9P(PWeh>Gqbi+OZB=amx+JE#-ob$l25skASsrD%vL9EyKa6h`HZ zm5xwz!v4Bjnc8*E)9Ab8rW(mj@3aC*@(D=v^T|)u(u3Zo?IB8+t#kjlXOaJsk@bqZ zKV*}e3%gZp<%_(JD;$!o#js&ywM1H}z1jw3Ji z2e6a1RJYV`FPc4t?mm_3G~92x27RC6srB7$eNm$vw^EfMiD{~bJZ#Y4M9yfIcy-Xr z0#X|U;>_bYS%24p@vQ1SR#Df6HGkhdjh?ScyU*!DsWbPjwI$Voul$T$%e&%x?22AR za>qm)O4wHQUzpM&(4hRO|IU zsZT}^ds8`_Fh1l{XL{mf0U*4lT+4A_AoyLZC{H2LM4t^^BCn0V9gf9S>&VeL z_I$j7TX-D+14PPUeePDDM)MvIPm|rCGt(eT?hK_;X0XUbRDtZm)vhsfXaL;--GUHZ zVPE2j2)K%}Z?NZLt3fY$=3qMQD7U@JOgV*^9UqTFnC%HxvXr-C+&(eS-#IK z9flMIY~j<(We$5FC$ftjPx!|+-zIBgl&!D@-u_7KQvN~b`z}k)to8s0)eNt5j|3uB zwj35Y2S)ssF8UeeL>#1TjXLSLy{d03I>()YCk>4Gmj0#`qf$ovsjc11+ zT9YErQC@BtnU#ft6a_H~>wS*e$QN;>D9zCF%8x4Xw!KfbZ|uRYdYbG+aD=6aqWv7&n6&sv7F zJ*W5Be{blye>e0JOa==!zZs@A-%UM&|C|eOakj8_qEolAR{6)`zYtIFUMOmqzGiN$ ziI=kCkWdoPNz63Pjh*8mf>JX0XuuYMoiIolz|}TnnFJagscl?RNaw{Wl+`OOEAQO} z0h)CEFvQU*nyAgXR^5Ng{QP@gJgRz5rY?_JvE}dS%}%&>Uwdx;)|lyfT@DvmcFCr#%`$FYY^Na^pT7@VM8mx##M8^a7sJ+_`c4Aa47A zWH^WpBKtDy6aGfnt8(YY>{9~Ng~Wp1GV@Zp=O8AT1y`Lgdr!qiyZ2z>y&NC|irl>? zV&x8)uy`-TxOh)SPws+$^n}q_02)HjnY~2>mTQz*O`a%j!MQ?E%l@`2C<*9LC$k_A zPlcuP8AcUJScDxVh;tWKs)9s#5BN;Z7Ibpz?X5 zf{sXA>CtLTrD;eBkYjLJWHA<45OJa5G~Ab8s@sWCr{YD*+RBNFQIro&7H$MFWY1t0 z4*W(fMRAAr0K2%#R-VbnV~ti|n%%AttVxqwm{FzhrA&-Liz+|WcP%i78>eAhhSw0i zk8fkx)4#vTmCQg^rA(zUXD{8Wga!{lolRBQ6sEGnN}n+ADkLI1{o!FQIgv?!55}ZN z&U8gnvcT-yC$8E4(PZBjCZk~g&>Rbex`j3itg~`xnN3fWiel^3tT?#J?5#8C0Y($G zxu-p|k;^)~!q1yp&r_9mkRjjjUB1yvQ`Gt||l^wx+Q2`DlP&7wUiJ3EE{wutL*} zvYXo<;8WR!p^r6CK{KRJpi6AvnGAr;d-Ech<3v?af5o`a!deesa>_y$OD z5R8OJO{UJp_lo}PjL7C0!PA|kjmBF175sQPd>CmG2PUnJ$^9dOLw67nqUQX8Qk$?$ z!jg8#=^K)J0RXEx2ax!ZpnPSdpP>nEnka0x!qDp)xsT9T6_8l|2xqQI)uHHi6_zhh^+d3){aqad40s{Cf+=WJS@6h4?fq)81Bh%n^@9ePEnMvoP2AHIvUHhHk^s;bIHc zf00c^BEQf_bnv=WwB3lct(h0VB1Po~)wRH1CYia;V5Pl7wDvo5>lnn!U|TSr-AGd& zM8nCEUaKyuDs3fRfAouyU=>YTs_A|pD4zL68mqv+qW?h97UYPQt5kpTDeOikfgUxD zo%=8*z$V!a5|s|5`B$V@X|>~*x$C7SM=dtmc5aqs!}_+F7SXy?q3g|K{6b#mbGOy} zTxEV#8nOb5NjfItLVxn5VHaKL`W*Z?lyxr~xQ?7>^!&U@xuKer-Kc|BSQjhtCD8Uh z;ZVJ*HvMoVMlT~sDCJCc#GZM1-z>AGo{4)B)w!(Ni|%`oJ?oSj_JPEGVYmlQCbH8Gv92Nc56rt;m;1x zSWkFf6I0wBBb3sS<2^34o~R0U;q+iuA=%obogXT`m(~67zCPPAtd~g{8`c(E>od)m zE?d3X-((U-*C(KvT4&FYVV&po|oZd7-Z$6$lq>qG=&knEeRz0rZap-t>cGdll_ z;$n3m$gIsGjCOjM#(6`y8^)Ck6W8H5>!Gq5vAvNOLp^bOr8*DT=Il@$G+=wp%hloL zY=~*FuDQs6MRUS|U|stn%LHOwLsj+hio38r4*c*#~shWYa7b`lj;SX+|q?xSbk5+lPknTlQXe_8ZE(Er_Q!6*==X4>@tP=Pi) zJG}Z}7D}B*Flp=WD~iDuiqWjB27^_uIxaMQKH)WlL3{mKj=D|_k-M<6JV>fAmIi`( z3aZdzq?BT%-NF=I&1EWd4_Rfq&LFo)?W+YShJ)Y0KQ#e=EwtPj?%TF z63jC(lGC3YDk;Cou@TyR8t6e!ZBt}=qdZ%cSb@{PXCYyP>BySIPjI0uhk%|a!6Jfo zIAWs<*lZ%$w%8-5g;!Ga1KT8oZE>#({I>l!1b5cdp} zURh|l0#rHpyBdb>3EF1sy*ZQ+4d9u8oT4h14{Vdu?!#IWz^Jk8jqx93r0tpFQ$}Gm znt7FR-uh(tBe#&nNxYok|&KmpXB{}-z2zmk!>fun(qiL;5LxQVs> z|KYi-L8)P{qJH8+M*lSGgVx7B2q9*^OvzpY#XeZF7HtN_019_Nc8de&j$uwwToQ z`}Lmc$8~@22jsvrQKSfmwu1dK0)jP|6tDKfVB`zA`%>u3n?m@@_|yB*Ef5~BdN{(~ zpyOQ{LhSo|L@dDJC!WeJ1BaisBrid0?(JTp@ApXL_}-!~cknDZpekVY)!~OLYR zkP%{8H>GlHkoj^+_y7s`OUaP*m*sCQU`Q7wHN-@heQkYTbF8izN;mm9fQB z7}FOU8&Vv5}6^zuGeik*UNS5rtQds|f@(n_1vxS8L2D-l10l{cauyg(Csw>+7)VzpUPSe`Lb~3d^lYOTLYl)g3f$4|z?B4k$d( zJ*E5a0RIT|x!HYMTD6t4nN=bE8>BB6F~aRT_Y38V)6+ZS`!Z6Nz1?D!;HGhcSy4J^r4}lof!vr$Ku2b)b*Kc^qI9foh5%pDSZQSB^yzJ z%G8H5A{yBn9TdYiiwu#>l)IGR+3pw-VqkGp>T34Q0PPWKw=iI}6#$YF^@+^-sZE&6 z_531~56R)$J8ZCCl{>DF91i6>h!2HfD|a7|sTwu4)n-;AgPF^>OSOx|EE4GNg6YI>1{T7Q8C5z=z)uW-) z>XfpCV4vtoLDmyhRZ*rRO5 zk6jP8h%2^~?5!E96Sr$;_T-!yeoQb$MXQ^E;KmR(aN~vpYjfphZW=9WY&P{{8 z7d)hefIjz%7)`Ux#64(Ew%*>(%nrw7uVcIAcQy1+TKRf~M_|lRcb|-ja=5#sE8(_P zmJz0tl!}SD3|!Gp5VpQWEaBkf#@A+r5IzOqR%!dCVHgiOCE5S-$)a)q{!82EL(6}JH8JB{mFMjNBTgpJagUE1kTvudevHe0 z0?Z?!^C+v6YoOr3L%Dj;$rcrL&&7QfEJ+1GsB=-qt%iGBTVM%hsdfVGO2c(M8Hn|2 z0UMGZ6+`LV6heDbm{<*(3c+^L$M9PqRGTaW5NXGHP9KGMops!Uun)IHjzQ8apR=Jv z+bmRErqUafp|Z3C-N~Ed7;yPEe(lRV{|cW|KYlHrvn`OSvlw#;D6&^;m~>1L*rDUh z3B+2P1_iAt6r^^m+G{zYAAK_sTt=$M@#7GLbA}44A$6zGsV370A&BK@U=+g@9g?{4 zjbbRXr$|zZBmg@|`!gZrfis>po#>I|nlRO0ZG3M5>xKqak%$GC=|6FofnVErh-&hu zMBR7MLs!^!ow*|)5uOfVqCy0*bey}COk4JE!s5=aQZxBM3%R_E!A1{XTUxu|eGa5F z6W^U+SMDJrT-v;~8%66~$@=;I6sn^#X!e#fhLEP zw#W(n)w%A=q2g5ud(=@-DVp(TgZr4Gwp7#1 ziMp4yD4UcWnt?u4OC6UkUcqCWE+vG$ZDEV=Gvwo}Fj_`ghf;ePQOg{LyG2X?c}gNd zS|g50sivtjzJ1Yhpd7aOJbVHa;$8kk;Kg@4Q&*x;iiU*NC&n+v89EsBtP(Q7*IDUZ zUF&`Ce; z5HUZ!tb{-F&xMgVEKA5Ra+L=pxQloV^_3M*9To(YaVvMwq$yw_NqRd~9lq*uGc_G2xa2_fq;dDg zJk;)z;F_(pR=|P9Jgq7*0?-pYWJH4f8LUVSp!Wl zD}qTxPc@u<*tC(tV&%5b>7kb!7Sgr#Y?$F)mF?xO-It1_RKz@AO#YlZNm&GS+UnqI zIaWY;oVCYd^(e(6Ej@@Gp(Lv*0V(;&uc^#@N_w?dJ|*K>)rk6eeCW7uvLGXXzHx;S zC~TWRr8Vbi+Op?|_z;Hh+vQQ(F6+@Wp8GtB=gnGx`ri+l_VFH#Yw9FtmVREzbG{QZ zSF8^~b4_a+w`*ID)|UrNw@RGsR;JjlA^tUy1Z_KYuWnJ_To(OP##M97wJ37l1aELa z`J1?y~BS04k1?N)DLgkr{?HM$$w z(1R_r7yM<%n&}vId_9x1P*v0cNm@-0rV?V-+?1C?cSFTh;r+L{QAP6o~9;|as$pP5`QOv zov3V2_C ziE{QILGPZNYM{#*$aV|c!S)&e#C@X=M{Y29gcD>}LRL<63+Q5QG%K)2I65{tdME=w z17C-fU}H#qUs28E92j$ka!=psfO&=5y8fy=K^tKVP=`1qW}%FapuNU@G>FjxGu|P4 z0Md0k#t3234Wbyd_a_qUF%RZt-Y}4pK>un>D@HKvI8NHas5t~D^tYWb3_JDTp@W@cR!m zR21#IAHk@oA_591xBBZi`VQ+lZs=f}Ys@SXi%k}bB{mBsq%05?nJpPb=7sq-o|{zN z2|H?@trnTO7Ea>6Utcw1z<(bLAF^L|x~z8IdkyGxJ-w5{Qj`WHUYGt9(KIa=i9*;o zB}BJySx~ZYl&woBnM0&r8f&KMOxgO*O*B8Vo70(Xq@h7Hn-$az7WriD+ARPj!dw1> z*r<3@&3$UMAz!OtYn1yH)=PaE`Be2_0bixu7AGcQhf7E7%4cMk~W)j1LFsazBj z2M!C7qO9m{N#}rMxnxDrDEOXn{@l5eit8hUB z0#r2${cYf9V&*6N1oHcl@WKh|vq9Xo(W8HbFj!F}Sj8AJFH?&6?9DUzNbRf@p<0v+ zEB5c0F!dPsoTHc6u{aK=iO;I=VAbo5AvaAF$<9Hmm!!-?LT{p~%~vT5f1-TO8$_OB+|UFA~l54D*SP1A$EX8@TezVIfC z5gn%UBGKjqqgPf}URjsywwl@vCRavmHZwEaF0I#_J6&dXT3r3q@XcLb9z)*XgWrkf z*Y?~AIqVNl|IF3jn@mzss=2GFR#VbA#fxmyp6BbL(-g!-zMaNJ4lLaiK#J%nOGe(c zEHBeW%o|wKAu*N76Ft4X-c`|eu78nz>Mk~vSI$D~kD`k!kZZPZC18XN7u*%0R>|Fr zC&PJMr3r->EyudNI3^FTuVMEr)vqsY# zog9~)B*(_HxVDw8fFi656IUEo4uHQ(62UEEv?oAP5;Awo+v2Y#W0?&svMQZTtfpD@ zO?ea@WU?Fz5Utu^(p)>^5F2sLT)l3g!{iYeC$aSsfse*fv-~OHWkz{`aVab-cf{H4 zX;E{wqH@j9d<}r)5G8k#s~BRb8NyI=B=H)s#m4Pyb`HwY^~zUsyCAcWEZ@9d39Rr8 zYLGoO8Z?^StB+J0CaqKygZ8W^Q%Mr4tYfOIZ?ZCnsxC&;3{~pLiBY844#;pT_#n2) zdoRzyEs1tUdm$?mP<15ZknhF4il{@3G>=OmG$}P0>Qkf`>@WzGvY*XoS_?HnLO?Je zi>RAzQ^NMl6-i!j4Ze)CjmZ~g8@F1Jgkux#i*$ZObu{0IJWRo<5JdO|%G34` zb8M9ZaoeTbG9Jh_v(p0jCDZY?QLeuh<8E1?ZP`PLabFJ!h6MYn4h_GdE!`s+;7?{; z3R@Zy{3j_ygfjnpa?mVDo(aZZ(dp{8#ZvD25K+-Bev(O$!_z(un!CMSP3n@IfkT05 z@swo{{a57`lUYW6o?5F1Ty{Wqv762t ztK!)s^^~&_2vNG4DC69@E~Uh>^z592hiv&Cj#>zxoYDsLWwF_~k4x$XBDZ&g&Qb)< zrVv#*+}@gOW?7)?9PdV~U+C!%xOst&bj~x|`$Z!Fmn-6IZUH_|;H^(e$C=0ZJnZ>$ z14Yqv9&dHPo5`r1Q0;qsjX+!a=@~w752QbL(9SARa=5M!!ZCyOdyWk128-)9%4*w@S(jWol;K9 z!Qu#ctaRe}onGQt>Rj&~N!R}J59dF`CB1oXi{uA42j(%N=vg)`Q6;Qgv^c5$lS4;+ z#q5RbrNo)z?CI1a!^TXBY2#6bj%nJYvFQVC>E+VAOwknjB}`0df~KTQk?GS@2FHvK zX|GejrUZ>)6owJ$NF#$u6#YV)2=OT#>HSTlVE$$!ed)x&8g4ij2ML((l9Cs3T5BumtbP;+;z0|%U z9~JHj9~l6bJM4Y7VY_g-@LjZCB44$S9DvWA#U17y#6H3>UN|3`AK|C+M>@di4t<|) zSTB4wq8H7N=u`D08{l<^u#Y#)7w(6ai~L3Ssq&Et=mNOi;qCJc`-Oj@>HYj7`c(5) z@Rsn_@D}MJjxk~8k@WajRO>u0wIkRf?lofTh5ql`pN3PeoP%$RcjfmM=zrLpP27!4 z?Ee9qbD~o+adb6t6#1_Y{7UM69wDjKm0&?IK4?hPU{?h;h8~P4I#guoJO35l zS4QeYM$`1+bPYnk{@g#6bUo)Fq`d#oI-h56M+6}(TDv~atUJwizg%9<>h1dda1UyR z=B7?^z>Y*ssyj>pYh~u%x~rR_HwjANzJ{?eF3`2(HPffVB;5#SOrhF5aiARGQ}y%n z-1@jp&wo^=w8&+sV&$@XB|tE$0XJB+EC;_hiC4|dUz2qO6KW<(c2B;(f!sdeVjyUi zMN+Vkg`4w*M7zpihOL%Ox(ww`5i5_7Cf^a;?^6sVy@d85e;m=%&(5cAl6BTCcI|-x z=OeO)G6MW&mlL)8yKlgqFhP|}zQG7WSv%aRjM3RXDSt*<9y0`UCYsK%crH|WY6P5! zd;QiHii%fh{$@^qFC_L0z&GVe9o$fw7Co7UJrlPx@1IGuYNp<^bdTKfumI^r=~c`j zn8Gx3Wb?&j`5a(3cU~x9wpds=DL;yubf%HNjZw2Oo#oV|3U!vxk4}$SwfzN-<~_W| z0IkP(oiy0k>Y|ugSmhzTXiG8654ZZ8I-{TZto@Wz#3LAc5c*q&R#cj+LJp1)!{Dpx zH~&{@NsDL^!SOS^CpJ^a2d|aU2Ys1>@+W7i#q_^p6aF!HQ2O!GqxOv_wEe~tlKto4 z!N2`mL>wLM9RHnA_+Nzm8XXGyXW#(9KxCaiqX20JVgLaXgT|rIXu_~uv2Om_c0!Gi z#D~H^35EYe>`MvZBk81an|&kpXFX=F{)O15a?c3~00W71FEfxHBm%*tmLR{tU?6{0 zSEarf8*eKhqB}sw0mD>dQN~cz%9#`yqgQhKa9w}iI;gSdH2Iw03(dcXlx;@?^_^qq zJyfA=b+;b^0WYk_0~nmP8^#K3BHjdl3C#7bA4k5)P8+8AEav`+zjE;iHK!1Q$*m|Wxz~25>H*U~8m*UoX!P&Ih@TX!i zG7wp_p>^^LPx$&CBi;iaJcVP@OU_urx$bPz+i-jd!f^#rlteQT)N|`hxLpo}Y)qrvWwagdEZT}4#X@1lHS5k1T z{A~VM$WU`gXV9?-=JlR$QfVMz64Ipj0>T^`8rf_d=c`y}2<911qrx=EX&Oo?}c?lQ1TD2n7-~#3H z@E%q)A1THl&Qx}eVrr4I@{j@1D?^MSqWC|M`F|TUriZ_)7#!69zmf@ATbS57|7Rsj zvQheG=Z}7|`CB*G{v`SXqHk1<#2VDJrYS6?Mc9O&M-tZjJdJfd)NH_ZZQCSk#`zca z@6V@dS5VW9bl=}Ik5tV(W^NCC9hm9T*E>$v9)NA9>u$fV_ffqc$G7ss7T!7edoW;n z72<~Bp^{jwfX*sIP^zvER0KVlRC)>W#7E25Iu-Fn8sS=Hd7108uh3-_bv0|(y-W%XddxLgTB-f2#!JM~x9=S{ z!vczIGg8iIptb3`vJcoZ&T#zwe;gckSd34v>=2z4m;P$V0_1hJB15(|yX`ZrB}uR7Wz3YJq`ai}?r0DtY2Ck-v$*;@d-%F9}cv zi^D2H3ZO}tjwR_9C2hl2)MgiRoA8~h>o13A6jc36Hac^tZfG55LhA~!+PDi24Tbu@Q#u*Jo9zwTZ5_7i?G`IHn@AVG-F7$I z@1QP0e)<{jH2eNBEvU6d5UzxjN}Lh8tzA$*Dum@# zEc$ZKPMd6)4l(SApjIcBaJL{&A(4ziCeEmkpj0$ddslv+O&mxn#VE2-B59jJ3?w0& zc<3BGYyXgLn{%CC&MhSR+Qpq%SzJFdC{UAJBpcC4oK7?B8GYhj7I`AcD3{R4jdIv% z64S_%bCb`pg)c>Wd&|)^Hyv%OOMEoU_@*t9()P;DMz`EHK0Ud$RdwgcR%`zt89loS z07jrWFl1{Tdl5unxuYDfUT9mMuH5b#8AQJu#?sr*SEWVMw&K|uxx%Vlbnnijb9pdP ztnZ)3-tHO~%6xT{;62EXe1)dd8_zT`7I(x+fRPd^{lUb1olvu#@M!+a;Q@`!Zn;hE z8A^Kd5PO-u#36S?jUm|<=1SX&_@Hy8sKo`tfz;N35~?_XK_&8Dw8UX=Ck#UFu@d9-s7r{HvVy|UTEtw7p(Gdof=aVkBk+G>@VBl9Sye`OU563bL{ zQz$2Bc`XYX{8J6WFp**lCC+$`cz}iG^TcFyjeG^$I*M%CW*_D9ve8Bv{@mNbfCctu zUcH^x^v(27T%{|ADANt+2E=s;g0Zda`VxCaq)0}Z2@S{wZ7c0$U=Xxr1nBD3L{x_L5jg8qaSaX029 z>0yTZh~cYf4{)u%6qKzbjynujS6hR2YirCwcP)ubqjGbkQ?}fn`wZ3X?exd>6vL-d zTlRvT>>A`PF?I7a`B(XGJMvAPJv5lH!krIiV{y7sCM@8)6^zF=H{qkMkpA<>G1%Ms zW>TeV)do_5eL}4I7~4+y^c)8zKrbUq)16d6J5r{KId?QR6$+PDYScY6Nxxd6HWnn8 zNh?BgNJN_&>ChCKsM!=s6XJK?R>Bll+c{Js8&8RzG87C>3N&e{PTMU^GN^?6c%Ty>j#fwK79dAVJS{TbAUww+&6XuzW?rB4WCxLU{ z+RY}P{>)|N>=42UB>u2MR1)n`+V`orKtMFMpSJOu!WTmbacb!`;%Nm*}#a{GjK9}5%j+~mkf*_Rix@m zJPs*#XRl0muC1+)I)}8E1|iB06OHRU(ac|^l{zKYPxj2{A6l5!mc>`uMFzKGNeG}y zkubfh8<-KR?m8-%`nb$MTN&Dv+si50xxo(S*a+#c>=fTEW9bz-B#ulj8;MahK3ka2 zkjW$`7KnOoLAt=VhgOf?;EIlL7d(u0sTkwd?j+X#zONy8x@F{W8&%ZlRrNV!#f=e3 z9FaX0)^Qy*=0=ejd&=|GamLm*lq+jp4P(pfX1HC7=Z}#pLssoBOzY&Xmaz~Be9j9V zS+(@e9!X8JGnD4yMf_rkXi9c_ASjVTs58jb;n`SXd8M^yvWC+}mnnLCGjvd2K%KX* zLcU7(MCf%P;MQ|Q)I55^agQuE{`pxNr?!JPCoCiqI@~BX%Uwwy=oFFwLw{?5cT2I z5pl>yS}MIWbNT$GH>=F0{jxb^6a2ufGVZ*3mPEXT>vsC#@d<1R0ME9~^VOzv>4~>n zc#ZUKoaua(;@ll*J@?LB+NK@HN!S|KGsVh1xu%tI8&|fIbS#|l0@!B9EKDkP$s}-* zv`1Q)q8ShR##OMn**g8`veN3YY%#gK3SCuN83N9?XKdJpRQI>eqe_Wzok^MAD!kLp z?j6ueZtj6#s($Ehi1c~Pm%W*bb$NsP8$0tdUyo?tgn4%*x;2vj@VDXNZvyvk&`EB{ zTxRXtYEd`xE-Inhg(re+ykjjEU*Qw6SB5cKBRQ+9));;#axDHn#M202E|9a6Ab!Ob zELNoObxyt+xzi6~yt!Aak0cg^BnHc}P%(3VpyDcw3aFuCOV*G5vKi!gSMUnbZ-z8t z%w!bP##@v)`vNKhCk?fKkR`M*5_COQph-#ezK?*T#t_PN2e~rWmQjypPO2Y&9$6CP z(7+7J_(0uR)pw1Ye512WV58S2&TpuH zv3Lbf0zZJ83gV2$7FJ;Ylp5d7HC*kp((CIe6Bn$lZek~@qYu1>j18kgX8K@6eUSE+ zJrG>4di>@Ms$F=c$D4m8;jMU>On67@EqJK>$e5{}{Bytc@bfRAh1d?C`&Xn^-C=eq z%!h(z@DdJ7oNI;uOwxt~Wro9#5EkgA@`(#H`$=Uz|1Z+TBt$=w@r`v69IZUR9~mq~ zB!v${!1ee8@$t4&ZTTos500V7?0oF`m*RA*-ba3jKSD=;1ubL0ztD%`LAc+VJ}W@J&0{=9P_|R?V+k(z2mpt-McwR@eYPGrKjlC z3+LTTHYt-1?IksOipmJ`M91+Jc`LNE4B?w&i?X=q2AO06F`9HY%@%mmu{>T=?PHkY zu{}<+yVmGnr@DDXB~0)jEihBHx69#|AO@->!`&r>*q=}y;KXEzSwWaN+qZm#b}J8bdYGf!Xn`phDX)hItVduc zu#Js7Ic}xQXsYT@8|>3BxrJ%ym`Wvb8xdAQk|7>aU|?2F|4>i^Jfi;jP8@$OuAW&jz{8lUQ49Tou~%)wQ;&mA zs=tvq!s-MTim%+;iBqbeg>$ZDyrZ@_8jOVzdY;8w;GEn58RQH^Ew99lyFqdxgpPc? z2d{7(HJ=Mb&BsbS1XB@v(rz+@PEhMebcQjn(QT1V&4#%90d6)7MQg)LIcL!n+=8S; z$5Ad$dn*jshp+8v8>zG#pga(bxuH0Xedk@sCU?opxq}0R2n(zcQbuw9Rj`kbM<`YY z_{k9%3e_Bgz69GDCrbin0m5MppFF2cS?s}_Gc(WyV~&+Aq*kcHc2Z<@s_AXgeNpvf zJKRR-jgF#StLi8wu_@2Re=VepLdXZbI1!bUkCim0kft%rOeH$?*ej&1Gl!o-Iwvh8uK>`$eJS>1<`= zx~yIu{*HgcV=fcpP{({-^;F=Mw|?hu*;2HMQW&PX>H7MATnf@i)@*aprzC5%O0dND zU{>|E44)C8LVRZs3R+dFZsqgnCcnaGbGF6U=F#VU8>ey0*Q2*mm&OQhX~kR1vbQQ! zd!{wpVW_x_mFryZlYp&i)U3d#eV;QrnoACa%_5YqUCk97z~Q^`W4KUaxM+T<0f&lL zS&IX^c;sp45Nt7GOQypWONY0UgYatz{LoYVam@&HyUnhMaPBsF59jzH0w-(h>`+Mh zrLM6lcaTHuM#G=nFm?uInLLX~X=Le~zV2wuGG5>o9MzYL;CB!!Uz~`w4RM+@f>f!q zK^Zd_WVi%jRryOrwmj>|?UkjsGnW(>w4=Bwye5wlQkS?6)C)23pn(2)B|O33=vvT= z?Q|97&8B~+Wx*SxshB-PhF(XlFUlrF7)d^;a@oO49#_um)K=tpy9L&5lW|Mtg+Dh^ z`I_ocWo#6Tqyt^-vae%xfp_X^=)Cikw*$|Hcd9!V_qRdi04KtN(4p#muKu*a#ICg$ zhD~gqD<`TSY##|0PsO|u7EjGQ@)Q|gUwOCt-kSo4ckYWvC4KKEgn+y17gkl$&s_A9NCx(}0{4%!5uv-WEoB}n#e>g~S( zx+DhC`SW@Hvi*c|pC)6tr-<@_FU<81 zcSoCf_aNEe`ZL~9@1vkYrz!oA7x~lL;ih@Gd)4$rH!?c`S(Cl)?P)@u-G7hMgj}0H zp$O=4?zd6m{iJQ4MrD*36n!)K!5&Zs6k0$g4G#+gPZXAu4+n2!>Jm?Z_}=Ybf6~Y! z_Yb3~8m^MK;seKduR;^ z^W*+J?+R=j)DIv{OWZ=GSVj9lJl{su1Wt)Lqvy(jEQ95zT0>niQR1*RkcIg(ddN2< z8Sn_qJ_p)v!$e=kf&sgHYRYxnTrsY0$=dP<^VZ80#3tFJzW zij~t%50pK)Vn{nf()fV~b{q#p-+D{mQH6}g{+nNU?Iod###7JJekJ&Nw(t%9Z#MgY z?@Oglr^@lAY)!$jpi?%P>2JiLbT47McJF>Gq(Mu#-Z=NlO=Z#PJ3g*S-L zEca=_OEMl2R#3*Y6}5riIC9ae6c$VGf@<$OefILHK`)sN}}2TJHxt{>6yxEIbq@cIIN=xnJMaMC?zQ)O2#c=Qyf7Z)~J5B^|zPkC8{_LJbN z9%{{|K#Qj1vvkRhE{IP8^PE!Yt~V$`~!Tp0AI-bD}~^JTYlV^Y~?A>20x$B(w)-~`OU$h9}wCH(k0-> z&M_P055A$Pn}zPn9~rv`U9mvJVz=mic|gBz5KTQJBTsE;OJ3HB*`Kkbm%uf}cOgzj z430e>Pvrd-g?SC$VCbbFDtI1K(<(vJYVvyvdPDrvLr+ia>RQmBIRF0sM5~so+}b5@ z0}VNcczhY_u0H=1xO1O7zRR0F5Xc-2WQ~Qe!9}1%K2dIG{^t_@;2&T0M*+&BCt?)Z z6<5l!{vL=O8b8w<#hQnReihC0dHM7f7sS>}kH-yTGrCd+XqL=tRkFMheC}M&o$8Go z)qC*`>~gWwFFx^*J>>g-RSh;(AY$!8t5(}4k+X-DS;`cGSGS$A*dr0cv38&~u9S?g zf-mHEUvRaBYFdRYi1j}nTJNYqr10q?#DgvF=q(q3`T zWnjWb#JMb|rhV=f4)I9jm?fKP?8*O}5b5H+?QnRYc<;pF{pg-CgUX!fvoxX7lujm( zAXj9yCf9mz+!0wi$D3mrI?Tjyg8LS(829(N{-*Wn()Ufx#EisjLjzrUMNU8m;^&s^ z7kC5LUZ5Qi<`;;KFGj{o((Yyy%#$Bss>kI!&7}1+p0FRsGpD0BEQYO18Q&mB<={uV z=#AAQOjezH{a40!pMprQWM10E8LK+C;JWez{mPWb*oGJI2#s?P(PSceKU6e;z zm?Hz5;>^|&52=gAzN#OM;%VkYB%>H_1W9rTCpkD`;`Lm?HhlBUtgFR8G5aJAH+`@`!X6WkY*vQ zu*`Ak`grlK{u#P$@~VglV&ml)}CKqdV6ksdJn!n{oW3x5O`t#5Eu8yGTB$-RoZ7W zuSz)uGTWsdk0MRj|xM|lCY zr@Kx(UZlK!Da1qojT>!4e>b`D|A9LswD2DF$a^t52*^T@g**~7d1FZb?0W3Mchp1K zj`g||{-HOJ+KusaAmJ^N(n~qLs_d;Z%!ab$nl7=ZS*$PM^ab{&%absdcsKStnIZ9R zCZ!shySqFsKd)z38Y|PWa8T4#9#7VubS*dHJiOX-B&nY3tX_1gDuC#{uzWr&hkn#? z+?=(61m`Nov=syWII3#7oL|OFv0i%#iA0GXm702$JB8L;pjDqWJ2-A0u$xq0baVN$hW&rexV!^S6o_vf$~x_0x$H^7^*z?9hNEGfNdXb<`$ z0iD#xhXG=Fx}lKPN`1SfIrC9ry&x67t*!ab95_69lsT=Drcq!ykLUs#E%xf>M1kmr zX68iHIkUZklZU$)H5HBnT5y7pA|0{@b0esR15fq@mQZ?7z|o>7y;*wrm?+Qox*`Q$ zH`pw_S(+8*;@E^gc`ETrSq^V$-Q}za5)TIxA`>IDpi)zZR8j?Ev=OmdO|2EHL85mp zcHQGCuH>4T@UT)9e~_M2JRrP(tO8I1y!#td?p&32Q2dI!2-_4&cV5GvI)00({LhR8 z!?M$gc#+)L8~|Es8_G!?Z^a9_T)T?RXeg@aP`}0Lm_4=DG^%Y4$3br9e5uTqRKm3) z!o`}jB7v+#t0SNyo2NS)J5ze5rS$Z) zDw%>B(10vkJH5e5#cl{5`jd^*pebNQZI3|k(p65xW{Op#e_@?HB=6XKCgIZHRKvF%KDFk3spkM)oDtjqHdsN_OAu|pR*PKxEwY6HD)puAnlOe;Tz?To#a=L&$070 z#Bg%?nYmlCk8~&$gBvF9Ubnnbjmu2i=25H@aJcxXH_re!2BDR>`K zceV9LXf@3uy7p8ghLlJo>^=GkKtI4bdTRihae&?AdPf)NlJHj9lAS38UaB%q`Rc0L%Kscr6r{V0jc-Py;r?( z(cklbM_A`97xS4ty{Gn08C;X1p=$91WtDg)g^OT>h9hfRGzoo{d=D)PzDpvF)u*Yi`P@V)bQO)9%@W7$WMYEy?S-@jPruGaZh@g`aZli-SK;b(J1}&roYwpH2 z9ZGQtb-p-m^K{WhVXjw}*>!4Qk@mz-+Xwvwxx+LRoujT4+RVb@MWUa>=-8U6Es{Ui7SUKRsLVn3U}sJWa#7J`gylRCg8mwO|8w2_%&J!nnyEw7)U!qV(vwP0@nO#O>$~7RPEgsYyMy#50f+KXT!R z22nInZ;wS;TiUWKcW=$Cy5l`BtE6*(GRjqdzP}pZclOX3Yad{~QEiNUl`SFCqJjq^dGw9h2 z1q8FNj~(Sb3$h`kt|}o=>ZOTSr7|?Uzt2~Sdr8kzzvivH9|8LkhaQ;1-A>2;3=y1( z7f0h+svla3UK>N4aGiJwc9069GooX(E;DNB$-QTYZF27C(NT|0-MnAD>C|=lFjBce zfYV5XiTzwZfNW)P`=JX?e5dRTfARw1Wu;hCkWa=}<65YD-_Uy%&R$S$Oax~r=3AC-oe8Og$!+fDkT_U#4L1x5uub#d=(HReE(y()a3)dPCCiLWwstI z=A%R@3`{|lFt8+(qY#MV4uv_>`^q z%R{EMk1b&Sy8)!>@6x8fLBLMD9LR^Ov<;H`GB!zCE5MvS)!V(y=}s`eY>ae@^m0C( zRbRHN>Is?sNh^WpUfY?q93ELfeVMBmn#Npj^!OWPS)>I8G~CPaH`@H{p=boj#~I#~ zN!2(XOvct>k?V+1t>3gd&TU3@Ijq{aIuqKzRhjh)UT>tw@efwb*9u#v5=!rHjZaJ#PKHEc|^{ZMG)$qx&!A)K*^gR_bt@8$5@%zt7zh3TQ zV0%C6#!B@~!Bm`}lg=$~q)qFa`zUJ1RyD=d*1PbJ9R5l7$Vq$o80sgbVtiJdUwPmm zMF9302#^k3>!Mi37O@!c93zEjs9-3y+JYYSeysb%lUBw%a1p^mminE#E`D zm2z|AX<24bP_Lp!+L9QWa$a@9$jc-pEe2;sk8pf4vYJm~#a+A1#kc&}m|~s#aspSz z&Je)B=x$#dv$xf?v@--;z0)dMTIkx^8S9#xgKPz?EbT$g_J5ztXZ_>&Jrq$1xrMl5 zDD#jX9|Iy3m!GBrc^EuxC_&t7C{uC;fW9n|eB{Yc{AEz%;cFO%$V`(b93BH! zJ@(&mMHQ*Azy@2 zTC*Ozr{)JNlESfJt9 zihCv*vkYbHeh)7tif772VB$prEK4r0K9`6ed@~>FQv6+vVA@Y$h%k&g<`GsBXIt*d z3F&mgvWmau6Z(=@&))iP`me5Q89QDgmz(5?XN)`KbYO;IPDB+051CqvoZqIYuDvj% z8m|mm>>ov=D-aMXurZOhR6>`G=@CC__n?@Vm-)mRQAUK}P?=yoA1>}3OI*7IRa<`H z86LV4>PP8O8KCMsC)*IRG?Z*wOxpk5Hb7OB&0#992Bbe7RUy4Q!UfeW-)fThamdRF zb#~19!90AT1a#^m=Y7iR;zhT^rzdKL$-Is>e!3(9FBau6N(Tjr+BAZ}qJpsx9g-K&&~6oO zoQOG}N)9PyO?ZmvRgSax<@`Zrc*N-f4GANnm(zs@*^}(RGb+$IvU}5@e0agaG}j(X z+avAwZ+AmzxqKd+jDthD2ZmL{yN4tXofw(s)O{a-3L=R(875-QRF|%;VTduIkHlt1w#l7Iu z$;?sWJaX^3&n^kXhN0q{4F3FbP5znwfU~-WxA@U6q2qIq#VGrqos-GJ+BviY9u}ts zD$n!P7wJ^%f^+#*zBP`I_8|M9s3fDqg~y_0n0kg)G4WO4D9g#juDED};bChCZzl1c z!|Z})gb2k{-SII2ibUnZ9-ii$w8-|rp#{dwWWhWHSnkw!FTm1t)Ix=y$_-=n57O^g zGR$@)z9-2m0zA5@Q*9dzh?G*tmrG8^!N^2GXn=d}%t)NW+`R1^1MU6I8F(P}6fm5H ze|sR3wzIpvn2uIHb$SGth3JT3Dq}Ky*p^DHBLLR>IN!uLR{}T0Yx17C_iOSj6HYwD zZ!ZgF4TT{ihnY0zSVWKQts*O>5{g70o8Pw>=C-KaHLE>7#JPgH$m%^dBo;3-m}2jI z@%2;PuH}5g?x&o!OSdBvu)4iLDD9c zqQiW8)aKUib^I#nIA9-{2e}Q#=R^ki3DPprNp47(-=2*-KaMM#?-ysm`zffs(ytar z^y1Ln!g`z~I*f>Yh0CYe=dfhR?BT+RjK;p2a%E+AE(wH!GCOODA-`dpv~I)<;ZTyr z?pB0|>>VYD2B~|riEKeky^@{7R(dX91THTxPm~V|bg&#*3wd1W`#8+_v!I3~R^(KL zVJD15-ShIWEhmt}Od6JL2ScQ4e_D6`XH3Is#+o#RB?D4g2XQnTH^7uYEjgpX)h_O{WMcTvi1+9mLC6bagsiMwYO4#zuTOplie)RT@ z;CW=Ako*i&tDZhmH)`&@99#j(so>C1PASqCT@|DX&oc)J^RvR>nwC53w>fpBa)lE* zVuII~Wke=Q@=a7MWUcuF=v{^NIf?#kKx0#=)`96JJr*A$)r<%g+;m3n=G=Z6Q%MUB!(JD!T>j%D};-2wx_em2CHq>^^hGaC3YVQ zOFL?x1WUThS*|0Nq!4Q)X}LBjjlY34Yx>Yhvye@9R?>7{rSWakR@Dx!RMhmsIE1vZ zvJ?46b)Hf#x`5&M@S%Xedbb#Sk5rn1Zt%L&9-%$O34ASxD{Fzl5Vdb9$eUdwxrXxlPMW)gfOIk6{#GRR%M*=eYCP94o1W02wmuW|Q4 zL`A*Y-6NlSfbOX?lCs~)6J#wYUepLrUn7Ham1gNZdA?IDp?0)$oF} zf2g#8R|aYwLSr`KsaDp;xvv5q6(Yg|9AurNzp ziw=&OvQcJRbIdZ__g$|xF6rsgtj+_wDsxT!25Zvgi;b_S5eAavwrQmw##6*L^i6}9 zXFmo@Z9k1>&_M#d-%lRJY~2izM#U{O;@l?Re8<`IP)7ni$g_9?5l%7gxV$8&T`h(} zgTy@@%M?L_Q>o`s8pB5{vame#e*4L!_@mQc?NNR|#kNU$=Ew`zExm%-r>h$^rd2iH z;jp*kP8SNp6wOudF-PhK#}3JEaLZ;nm3KexR0z1FLpAgJlFz8Mt?y^Ohpqq%cyDAR zR~&(1rhZF*Xi$ngB|>(D;A0fyyn87B-Y}ba%!h4vOR_YY%YvV&R$4i-C|v{#VP3AF zL(m_MxkF@MxRKjZU6gd_o;a`m#cB4EqYngFMA=gd27GImb;4hmZFy7Nx7%JVV8DA4($*oG0$K1haqY8=IRg zUUd>Mo1w~7+F&qMn=z7^afNE^-QyLNqjt12$0r)xYKCZ$=MIllT_sPo`mt_;}FZ2GVI3gTGflPT+Hf?&;2@m7{Hx+mg?X z7xopDs(z%p8a{I{IyR!RE2kXk(T`S$=8Jvs+^}Rv*S8_wwrm-Goa|gydvtK@evzAZ z<%!0;BVnJ-gUyX*;pv7X8GGaqh{G*9Zp`!tqBsWTNQ)@nHSX7PYopV}wOrz~$*+?b zA!f}9Btsm!5;3gQzn-R%m47mLs##c1C%Ia3z;=egb|%`8RQK?t^~?b0@`2^z(`6BT z$mg0fB=>cO5Xa~Tc0bq*1lmhd8%$)Jni;bR$*}b4>9^3nmt2<3^S}DyYRe)c0mHtZh`d`e*aQO7b#&Zf&kNcS{&@>YS!mI7KHh-r7Da8 z!dS0rD~&Z3k_F_cQPOgG%SdRA3*I0jf20YmZQ*^k$r3WKik3g{#g626RnzKV@C!J8(i7@#tEDG~%Fg^O%v9^zG7?^@?o{pF?I{x0e>9d{7 zV$$Xsc{pN!?&%ZU+{mbzO&^$&7azRP zDDm}u(YT8&tSQ@PWi2`N(WNWs|;vRmiw zT8BAi>CB$><~{1woJL`j!HZwU*#Gukqi+mBZBNFK7};6L83c-cWE`W;luxpEj=4p+ z+o0$uWPCL7Ycr*DzpYM%{!$wUV4a$1>)e z`YJOCP4dEfE~#6GfJ{SL8#&pVU%g6EW7IpZMNe zE}N8Untm0XPtd6UaO-Sxh3icyk2A8$fFO&MN<^b2G6DvxVmz{nc|lZW)>qeGN5a$Dizuw|Bx)w43g!bSzVSw_y%u*BJTiivG1a+-od=3mzKX zzCNy5@=Gj3$@?bILZuhTKRIHn&NPVtwCaR8tlpfggPB|1=#0ngD0C9B>*{+SxP9Zs z$z|^_3qE2xAAR2rjm&s**6sn(eE7F)q7+|U-?Tv2DUUj=7=S=^QQn7l|b?(XRp`>`nKw(br!#Ejwmv3>F=b zE@pfI$7KlZ%7|NZPypGsm<+X6dY=3uGdHDk@v<&rEa z!|)8Z!W0_1hCG9Sr)AxY2XlUdIw?!@tp;v-);Jhl38LUMdcN+o!t~=5moHHpo|!Dd zYL00%2>0>b_TBxuB;jbc@5ct!r5$s+>}txbvg>?!S=4U~R$m3b8y1XF-VtN&TT z*@AQpK(@4Ue|`MjGLxix#US{Q3q#Gui5roU&+i>Ay<8wC48%l5ZRU2xChKR=Wq8a{ zuJ?i(hWA4lirb?=5w1Xw&7%CGqRW%SCJ44xtd^cBoTuLH&(%im&c8+jI%VBqfOKOSzn5`DKcm8BBxM^EsbJd6RBsD^vcZKpH zXPr3L_%k8J;AO7|38}}K*fAp=FRj<}OG}#vH`lX;(W6u;V9(~C<7o?Tqb#lmBrAs{ zY%Q>7kF8mNr}<^8Vd+A|OTFa)1yzN!vQeGP#`NPiCphC4(E4zAfzGq6-2LtnnH^_fUr47%H^ zih?4gwxPr5%)!jCObe9nndI-zEaOBiGz=LmUThwEuG3yHGDwW73}=-z-@QR zZh-sPeeL})@8w18@xATVlynh-45G(Eu7ETug7UeGFUkfgVYXpqwy{l-e-2__O|Lewi4dU51p`g7w@csYH=yYAEI~Yt~bvX zZ%h(@!iXRM{@CyfROg|1GRdA`gFTybfBXQy>-e#`k#24{Bmd)ft(E#`MD@hUY}Bc* zYgNTRfjGzQ$$70@$ofxl*fr%XJNlAXxYZkD;}e>UF`)3`d#X<>;>(Mp5+&%rs2YwR z4BMT~!U^r8OCGEnxN}>QV81j?-ue!%o~>a;aM7|HZy$5~dbO~A^#m26woDmUO^kNc zZo_*6jk-9Fr|6sPM2#_R6xT?Vrja?hJ{obe{!A3ROKO)-dBB>fpE@|1IV(52d~cYu zQt1MR5LyKE1bJ1WdGmYR+B%zYR>r|cUO_Pw3<2%L$nUTX_6Dwa=~bOvS$jW()qV0! zdXMCm>;f9DIsnge9+6?0W+Mx3>7tshF;^AEH{ca(Wk&i)nz7X*xTPc{P8oMeSeoDm zE?}$C5NH=7_KtpOw~(F*gaP7tjdNUwJqPUUWXX^>%^l<5TEd$eh;%yHyT@KIXfKU< zQMPV{JtLCt+yegs%585Ia;bTyeXjLX@}SEa{_S9?+XH>4G^H z{Afh?`)80WbMJX|(J@rnpug!n>wFB|7_j@;89oIS^JJbQz^2&DsX(o7<71*^m>Co6 zARaph-G)ZCt>ez5g3kDd2YcCvd(>Xql1r8gxErf8Cw^W=Hq9Rp&m$BK7L-+3 zfMuxgLbKb~1Hd*T++NiQt{vBh7npHniBKsiaTAE=c%Jyj^{7|jZBSmxR~&3pI8Ih^ z@l6JxKu`5@BD9Nd-@WxTuk>U`iGa*B3^Q-L9JLb4g;BE=or#wfr#kyoMh4I0NB?Wmes5*!c_jqD(4Hf*0J(bxHc3(4`sx*%d2GijZ zoSblK7@5t>x;OgXEXLxPqb3BqDx2tP*^zGFTMLXeJN8l?ABUG~KGvItPcJa$EDv#x zuaZ5OhWPZEp;-QaMO5p6+jw`ly1v4PmuB@-@ADm)E;veIz2iup56CzMV5H9c;PI*L=q-=ikf|+}YINNbk-wud^KYi6^Y8_w_Piu@V@!G~9NDOhj5q&yRiwB`#Uws5o_N&a_%RdX+3X zfD=4=v)}c|u)*DKnS|g}5k7*_QU;yi3PNkRJP5`>4|6rH(x2LU#69@FwWlfK9JrY? zT?iwqJUw;2|2u+nv{GjCN7a4-(CT{Bo4$?^Gra-5iCdF#Ato0E&dykaiWNmfvg3p` z+*oGe2L`VfUr3^L;N^`G(M@8TX|_6gnN5=BJ@-|>9*v~u9y(vwWIZEGYM4;@AtF0S;vBX86T~69te|S?@|Nj15+^;bRHFB z(vlKmj|zr-Z0jv6Qlp|K4~FyXVzedr*!E;0j6n(mDFM@b*u|yXO3R4j?DXi{J)I|Y z=n*R7dbp2CS*Y7OiH-Dny}g(pxjdS=-{G}YxA}%Zi$a^8IMkc7`%O_@BiGjZw+!_w zl3@(-uK3kX?E{yKHmS%x+bg znYw5@Vwi!L$TTo$>@tz#VCop-h{sJ|VhkC?LLczv;edj$PVsl=uPfKuk$ zdq|2bp7XRW{Y>=&`lfEgnX=55h6o0R^91a_zHtAkP%%3z%YQ3JW2$h@QSH~>Ga|VU z*6<-$U~LslCN^N{O-l4Q$s`cZ^tlr;B=3D z?iD^u!Egh&P8$s4xV{+&{YGDr=W}}}#NJ{I7-f~%H@JuMF#*y`j^uL$Sq%|K;#)l3 zJS0;|5guw~b(!;X5gx+%$0Cl!3diCbFQaxMw_os5*vORK`{?xaC5VkmGgRc;OM~YP zC+1*A>C$B|9?l|-DUsW{w0QeVU$wZfpRqT-37}n~$J!@((n$41dw&tILM^`hD8fUr ztoYSOX|bvtVmGz?2fY=8U9QQ|!xKUyc3SQN6!TG9^ATF}-umb%)6B~Mk&`xh1-j8OSn1WhdHlG*$p71VRN+BW=@w`?u z($=)K`yUF?Lf-wl1Y3b-PU5rVDefHlQqFHf`Qf0$=Zt1X?^HhJ-3TxN(jP+;PcVzGfHP5}YcPeq4*mhGYiK#5BeV|5R@FnLtt!C80VI z`A&%UN~MUqhcYp!vO_?Z<^x6+M7yVJ>lhN{`#utD9EK8W0uk4lsM->8%= zXs0=SCbeO-euxRDy`Q!*yN?;Wp^mdt+4?M%dHgNxTS}sq+LlFb4H9@n-=Q?R7l(mH zIuHZOn2ddOifINIHAXr_EaVbT3`>~JA;W~OK+v_wjBg^$smERRxgq8|-R@WDHh4V| z*$9X@(yQ~rjhK6h1hI=gmBmnxS8%^V{F_wXPQ*5~T*Jd%h7vU~Gvc#{FU%LnA}$m< zF7NZQS|{1p$O&r%_lo$3#|YPQwvTEr#B!nMXYP4>X)jK2xt4Jn1^TNn8md%qp>MGW z$U-zVTQxX;{2+dkBYND3vG$A zRUErrtk-O49`VAH(He)W`l~S9IkXm#4^(lEe~l(|A+p=YhYN6_VJ5io-^<9Vj-VjfT#?v z5bRI+Aq`qNj)LhzLC~t7b;Yn34dLQ&xFFHE;3xbAte^M>wBw-LJ!q-Zez0wz1y-e1 z0t0&5Mip0xHEwO*tmMJH!|&TbJ%%^e^rqJRanFNh?M1w23tG=Li|}e?3gQhN-j9iF z=$Vgv@mn|S1{F62l&zadgvWBX4|}@6;~{@T9X!}tbkZ+5#}6TQ>ggIQxvXZwekRig z3%wg)19=J$BRdqvI(fuj$1`4pG3DS?vV`1Gm@`D#>#(&7y+N(Rp5pUf!xDGikaC~Y z)d{YqJjC6ESb1P|p5>rr^x|k3Cz6Fw%JQjZnMA~}`uo^N*hqsFEiL>rL&R>`I07jp zh!)a}htxSb>lIW2!3_7&D1*xj6XAHjI#iUsR;nE7L9DPPdN(UbNxNbyu;TJO!S74x zj~^l`CL9D!+aPrfC&f}>_}tT#?(-_bqr#am{jH)@E7MmD@`(dMYF?}04tNmz7&uvIyPR;Vn zG+~vJW`{0&*DEbnmAu#B3Ts=e*`yU|wzq*6*?Aq6_gL&6s{zL1Mw=rqId|{{&#a+#7D4M^MJ*4%T~ZZw5LNrX)C%roKftO- z7_>S3TJN^6)}cQ7+S#irXnqg=E5oM%UfE?E_m}1;sRv5}6ffV7nXJq6ZOfLk2bXV+ zofCkU9~zA`}8 zl{C|pBptz770Kz=o%F(XP5y8o$)HQqpmomRgVFj0@ShilhZidYe6B~xHFj~cE-z=< z#df$vcDMw0xFmMC_@D7g?{JCjxO>gIgv_3z)O-cmu2HTG(A%!T*{&6=3{0$7lXWNM zbS33-M#Vd2#UyMF7A-jpC5hZI*+UJPx-i)5}DVupcF-Y zVn)V63%mnzOqR8+-f>(yw0xW|7wQraI)bjiPA0S2zDh>d8B7U(>2Hhiwup;4H|V)v zJ{v;*(iM~f?Qlsf?AR{sSg-FUTFagr{}BxTkx{}KM#6wkC%dA2S92mj7z9Sd2MUoVphm z^T8xtEv7IO7w|wpS^hJrLvg8Bicc?d7dy6^WeZ=BZ9}#HxxRh9##J4^RBf$`g3UV! zhXTYS9{vkgNN0+B$yJ)h=6u#mPk0{qSwCCt zSsc1vshTgylwNHVr6SMHx-nnW4asqGFR+wnC6p42ao|ff$pq)_0O^Y?qf!r>b%AH& zBfKX)CBcVw@?!+4O18KK!-p6-8^ z%Vt{DFOLe-b!D|mi8%mO3Is8xuqSTN+;8AmZ7NJ1SbmfTiV~_@G2&OB@v+_@>#HR= zR*S7yuTX{$Vwnp{)%t#qsx(B^6>_b5NahlAjmi_V7h1*+w)YGsOm&^xbnasrx0)Xp zP3~(vO=;p8dQpoH3JyH^W5S8=Sm^UL0()ZNrYOYVPDUvBJfdPu*{dB3ji9aC zSW~3&t@>4GET{*2CW=4a;{eR`-I?BaF-#CGbUTJm5L=`{WB007R>cy5(?He3V}vEB z3P(@$p}C3zGDPF1cLTId_S0fCpI2ZGT!E4}&?GPGZ`(0WF&fVG#eLkWRW-z;d?TnF3uA5X z8&52s1s=1zO5Ofv&!1~{FfbRuNFi`I@H0FBzDWux@KK9O3Da8WI)W^J?v?-dkFo#z z$NE+lG`i*{E)IW+NBhTke@CY_)pgXRwlgrJ*0-_+{S*QgEU=bEoM1FwR1!FFqXZVF zEdTE?Yd}b63-bnL@vvDzWS%fjzxQNpliUwb(xXdN5c$=*C}jDOC$#E1M;=L6jm;$| z)d=wi7WzUag25rp$_~I1t`5FIbenE^cGQ~uZ9CyUvdxyO{h0FDQAzO&&u|5AT9NFQ zqcVeo2A>+aF#>+^dP1rWw1LmWpVOZm?0cJ3{N)iIhMAg5PmzSTI>m7EqF2Z^^ z+8z^VXe~thJg{O(l({_K^#rf!b<8brzboH2)rs;e$Y`*d0>(pQ|VCg=h z_erD6X*(@#(G%_J zA{Yx<&|YDxPB55`g1n7)Ojy{XzyidvSSKXtL5bvhfr86ED6hE0X?k^_kD5i>l24+@ zLp;5ua#9Q-qlZ{XY@zW36uVg~VLEbsJ_dky?{r(ziHOnl5{H}68N+$tO_rI9$uL&9 ztO-UoeyrGP#S~CC`=VMWYEa1pkLw1<1?Gcg@Y=<<(ZcGPU$ICxr7@me1_?FZG!unH zdHq1bnw5YJ_q}%uFi_=zF*}5Zb7wDJtHr-+KVFp`cECGSl~NIYrF*{;M;=ZmHJ&Os zL3Rv_3ICAvRiu*LI=P9?3I3{mniL=9W&{({6YS3j|D^6l~@^-_PU24mLj*8iy=Eo1ZtUe z>WqYg)pW)VQkk5o8NheJforyrPpRP33)_;CAk)`swA90RPU&hPxQB+uAJp!^I?l0R zz0iZc;-)MSn>XO^;-K7`MdI|S?>)K7P+v?mIump@YC8EeyL=Ix&!SuerK-@r1%cCE zT2OW%(&zSni z(L5{(UGndH9bo)AOH6gi3KlKZ>Rc?2-L0hRRKK_j2(ol?pE|@=i8kU&I}V%M!av~| zeyN;J%8?NBaeY?CVxanz4z=^*3Hv*5&)#*e?{&0zlOJD)dOn;8;>9QN%Hc{NCtS!t z!y8*_RQ*h{~QMzB8T8v6mQdT5iVNa4uynk8Fk+MetR*G7NjzNx&p^|~+Jwqwr2M|e? zj)9J8jY6E7VxVuZoOzsaoN+~rwuhE_Poh+EU~o*lue*?{e_4!*qFX{-g63Wjzo30N zN-v5-uzZT%7^J?dbt975Yy=2K&Ny{q^T$@hciE*tO|f)a80F zW8e>70Kb4$!Ji@1>v~`KXEaGZDN$h|c?B9t;a>zWFsEDd5-`~R6Rs0(2EGF`4KOSG z67@RGAAfWG2}}+DgzFf~!1wDIe@`y@c7KeD_9G_PbyOr^JNrgdTaeLTCZ7M4`b`Ai zZ3Ixch9>6M)7tMdfO10$``ZXz2Ycf`#z(&qKl9G`cJ_ZRiJLM^-ewrv+gsm|;dZq> zydeWDa42x2B!TJukI^x1L}$Gn9b{=>ZDnHlf8+tUy8chNu1)jXkbj&U{-Gj(hvfeP zB;5x5%Z&4%s`F-EMs8Dnz3TZBGHz4u0W{<9zdi|}_>l=QOfQbxgugEI+gSq^%t3#j%-m+>z$AsZ0nd_j@&CSC_XC&db$tWshBUVy2i!)D zJYaS2g8~B+0=g>G4-W8|>E#djqq%|l(d7gj?Ch;9Ok6<*LO<#ra8GIX!z<D~dw)k=&8wZfx zKhMH$7fA^i;>5ZJ&$-(JwlLf6FdZmIkGns}N4ng&3=DRlsl z$p1^B-_17)cY_@R+S=m%zi;dO5IoZ>j{G-8Nz!4kcPv~{SqviSy_P?#;PhB0}$lb9Akhv7N7Ipm!@khw?y5jjw0&*Y=EBl{) z=Z~dgSAZ)F2h0zR0QzRBUlzxL1 z{oADRAF-UDz;@z*!oI#H_V`CZ0H2v&FH~+}e_Z;!TfRySbMsN4#_WM1j_L+TTKyL2 zuNfYAWF>E6WT|WKU<(qkvaq)L?O>lG-bjYWDC8!$O5(?1HiDmiSBO( zw$4#c*=sKs*IB;FLpQpMCvU7PVxg zmz4j;cz^zZveGUDxV!0RAW7_j-%uN67S&ceyJiK64X2 zT|Hd^b1Mgff2DDE>C1Dor+)`Z{`|r1cK6)%F1Vbv{{L7&HJb@K9e}LJK;cvVkQw;Q z^a}R6i!Ay}R-nuMVfvd7$XHMXW^Z$>+af1;-vySl()}Mr<_QXDT?0h421Ew#HT(>j zUfiK~k^gEdzpFMZ75{p4n~>4x0}13c=P=*xrb?5@Z6pMB8o?rJ-*CS=YA z;9vk8|EHYSg=-yo7yO@2NPjmip{IOX92g=RfG3@RmG_?^(@P=tE}E#NoxQH5KIosJ z@n6#Zx#qI#8Jv0mx+YM*tUpt^miqYZUFrO$CI2~*B#NlL>#If(K=Irh>Cuz!N<;!= zq^s}puRPpcMx``1{a6694(Ke`OZOik(`zI7F6_U6{JQ#P4%XMBG%#}MnV6f{yYLz4 zS_9Xd?oNusUSfF|e1`Rwc*EI@Kr=Ai#J`ajpO z|7DO!B2dFYfc${Q@iSz4C70fn*!61mS88&gzm*%}zyHhNS^~x2&Yo$*=TcHYI?_Pb zxT(g+l>aYj{XxwZq5XI|4phSyfCd!Gp8-(Rs{R-BpLDe9*Ce0t0I|vb)1zf;|9AF( z->2MOD(tKj@L>aaUe> z7WJ>45)oj#+_G^-n<-rxIIR(2-WYpvfC=?wx! z-GJ4mAkOU-XUgJT#J}tLHzUIJ7MXgV!v`y%dVzTg3{Y-1C-poUhrErA#!$$2Kur2 zLi_XEUGhbMTGMBMfvE_f65Nmv>%qO7HSzZ@9Pr3S(cZ-TH@Z;e_7wFt(CpBFrPIw$ z%!qj>4p@}yT7ZC+`oG;5-!8=4{>*>K3F!CucT(^4Zho73+q3d7Dn0R?)c^WfzKy)? zdGHs~fch5lUt5ybYmoo=A-s*g?WXP*I)e81=)aye{=V1T_AmAeO2hDb=$+oiZp(Yy zRnadr56dm|-HwZH18*A*{RM;)zXb#qMt|x_*T)dI%{Tp`bt~SY{o3~Z_Z)n~nA2@p zZ`)+~MVA9Md2ftwcUWk-O}qV8`WFpW{}%1`%jw&w+fQMCq3l7oP(Sua{+;Q&XT;mj z7k@#~jBi12JTJJLcKfB@FB+T4-LzZp{%+^__Irn4Kp$Xnd80CJh-h&@F;B@QiiuL8aUx#r&E`0ntl)8NYh^sIpBhUDfk2H9||%= z?(BWV*WEu~*O96|b*!q6iaaC~0@(L<9xSQwKM%jX!9RT}N@|EQ$|^}QtNhjt4(#ly zo4T3&oyF7Feorrqf9<9ysw68Vsjk7KD0QYdG^ilY$Ta>;o{?^3XtY+1Ws3dtmMeqY z2#7(RQ49`tvp_2mi~bYE%chJdHFSA3b@xoV3Jd~7v;=lFOh5ENwX>&hxq+pHmIj3Gbe|CGXC#9p8eLt#NNi+ z!_my`FS=s=+ST0K&B4vY+2$``2>ukt!O7gh{x2Y@{ufA3HWpTH7EU(KzraEAr#ReQ zO&r}Uom~HFYUut0=zr(phiuTh;0tj&-4y@{J!MdAzfNfng7M_7bsq{i?)bcSG6g>a?QW%?31uQX7B zd^~&`;&7<>4r&P+;ZB9@hL(O`$6 zE*7;|<0y4q;7)y;z2P?~|8mi$bz(5Ml5Mez`Sz#-V91WEM4*;@iKE7t=OHZq<=M5M+xOy(0w|Q_vvY+hW$YI-3bStr1kuFecwmVI@Tz@5?uW(hx5Sv@)$it~v zr3d?L@oU{j$g1r<5BYM{cV!oq!1e%sBLdI}TDFGsZUYzcR*Qa%EP~mo zY_~=2guY+gJq3=IaH}$nX>LCV3mX{q%)a4{J@)~vD$~kWq|6>mVolLtw6lLhQGQuy zn+WiIZkZoLAYPQCh&^wYRuJs&(RVSVrg6Zc*^Md8GZO=i%9F8-7u;dTWTGJVU z9zg>sUR=M0MyJOg+U96%QOyrpoJUrfRBei41|yNRjHK&B!teqk;UgCgR_uK|4q!1Q z+JtZ0hQK21@=)aCTGY^sW_fIhdE81OS|aUB;sAIJsa5y}Rw?37;5VLBV;zW+`OgiJ zO-kW9Eklz!O0tUg0#hv~3yjTu-RRW$r$(w|{4hqWLhWGhv#I%mYdO>)v@`NK$6i9^ zo8Y`*Slu7+7n=>YeC1f3YKQ8@*<;p-5}BQ^PJstf^pl$HMh5ZL`>rF#XB4PIsllVC zk~IN{Huv5`qn?|SAcdTw3JY{e=9<&u8AgUB<^g+jK!YbhHL!VfSYE|b+~5pKP>Tb} zq$-HM5f749niSiVv=#@shgl575uONN!(4oUR)E&kq=2gR+AT?EMvrGwainfHgNj;u zq{sC_l9#yGRjJ$U0y^W~frp#66U#-2YD5lyL?Q7EkE-8B=Um}a8cufv&GsbLkOYpS z+?Dk?qLjBjcEeZvf9S^_OEda`u;v^b46NcwIcohMm!_MulcSpj#nVz%_i%Q0a&?!` zQ2uSDswp~6ilF%K7r1OR+tAke1wtXnMTN>2L_(Ip2BReBC38`t!2-FCxEgC_<7O)p z1EJC2A|Qod5r?JLhoI@FAnIFs_8kwma<32zxBJ76^+FFFx5Vh`x`6 zXqY%aL3Dho!t%~t`HI#Hf+<{yIl`aUk1xzUk32ZFE%H?TFpc@%JUn+|VV7Ow?2FoL ziYfOqSTdo_5E45)Z-L#jx!FtE>U6)am|c10d4_y=k}jv~&aoYyg%~c>pXK0h{KmfJ zjjaU?MMA!{}Bt#C#v?HEA!S?h(B$-=clmme(qP^&R&=lw@+`C&sJRXpGI!m5;sySK5@ zJ`Hc6=eQJx7EAVxO;)=70ke<3sz`(CwZ0+fYm`W%kNybh=XbW}Ec7gO$b7g9a>*48 zZ;cnIdL)~96LGhihO3OT*>plo8R^?P(Ioj{jd8JQCy{%;;GSCH5F>8htDWL8DTDY! zxj1~z*06CV$F;Ql#WMnCOcnFDJUg#n%(%6H(e=mU|!Y`NUO} zeK68?m-_i+V@+V^pnk=!9PSy;!1&PA`JILjRYj{uiATH@SAC>KjO6BgP?Mr}k9o#( zPK^4*j>L*VzR5$RAZuH5>}oeAPb*QY^Lq7_{F#_$D;3p(($d~a+db1`!rlXMLVDd6 z2o8xj`KcA5mYJ+6nYo^U){Zi6j};jVGL!eVjA&Ih@B+S?`_jR;Tn1MZ#JkE~jP32> zushGIN|_Dr1jdIoP-HX~X6Mopi0g^{N!V+?=T=DVHmimCgiRefUbo{MA=}o{BfBRL;;ipWeT9 z#^-FZh4T8$R0(y|;m`a^4f!iHS@sujz2&Yrl^yVxpLwmu^eAiz32zbNjBnu2)7;6= zH7i=-#L(*_yOG63^F)DrD!>kBpfw7`8zDDE5k5hnbS_CX2}q0vwBZcYK{1E+XHyi3 zCjy}ebXbW3lSyQ_pbGfNluzt&)C_@)!YWZY_V7Z};#hssc4Hh#ESGi`vs4*rCK?@+(s;cJ z=l5}eFGXf9#lZenBa_In2{Y0+&_0;5-$((~P% z+yO{QU9KO~dY!|?)_Ia6C7ve{D`V=-;<*%LE|e)`+0_P|F-5maRfKazF8>$kG40OW8NEaHd~3Y#Uf zD1X!s@g?hAF9=?jRG-AWZm}1@aEX0$DJfvQA&we5cUAqm51xSXt1Lt|0*b?M$uV6F zl}M#uk$^UWVvjY3ZA>Bl8;=Di`ezkI*%JX&?~PcOmo;unZLDuIXR0mXLAvPXek=CuaBOmIflt%xRKnmR?+Sx%kbsl*Y~hYbqk|>}N{Z z48~immQ`ckGF6w-4U6|o%r7AKW)wFwe%6!Zd;wipn(dA>%`~NakX%vsO)RP|J#42Z zNxq!E(6rRKC101C(=vFQ#%EG!EX#vq(FA#REJJTJbLkFZG&_+{0WUj{HC(VmW>|G< z^fIww6jV?yXtpJ^S6T1LLdj1&VqBB2Ks6Vn%8!wn6AkI8O?6O0Sfuy7A-ePeT4G@C zWI^V#m_Mn@s;T2ED?@6*P$0Iaaoh>VLXnBxR*~uA!Fb3~qiBs)V-Yt}&z?@G+htGm zo5v;pbW3n>iJZ<;%Ax?F7JgO>O$K^O-!vF6b%q`Elbd52zZwQz=?<@;zw0 zSWF3DsW9MozVcyuR27Aqm7tAmJVWrT(uDAU$77O9HSaI|G#tm$BgVV(ERJQ^TrG&6 z)C5r2xBQmGB>Avd+#!XfuQS51>Vx61DEQl|a{wX__OcyDO@7G_@L;Hr?>ac}jRigWWCI1aVkZOqdW}YJ_IbS$ zNyh}equN%BrtwTUAl1Befv}q$t0=eqiftmRvUsAWvhi8PX`6+n;NE!94C{H!>N#H< z5P8u6?_5Z=uYu%5n>5I$L`kdEAXunt8VFZ9B=4}r6L*}`*N9EM$1fN5UsC05^cCcw zS!MD)P~>e)uEiK_rSoEKPc>!i`?2>4uv=uMG176vO;E6BOQ!OobGe1sS#lxmIg@f< zTUrXTyP;YJ$Rbd8d&^k{V47^(&kZp$?YvAqvt!!f6xwO*^QHC8ADuj+c`J5@7^J7`K4eJu{gzCC!@$ZK))vew|n!DQoG;6EezAD$|$Wstxv1Q=NP zQxK{7f6!0Ad8tn^VLSiU_9^Z>V*~)wf z&tT)VpT#Jv=r`64`;Rx}oQU3T*e7>&fTvb)%$4W1fSKKDB<(R{HEsUlGCR8+EC=dx z9r$V~MX(M186IY}9dKinxNn|yvC?9_74=%A zsIyJb-Xq$^vo!Pm7%W1c+>=oV=-};&o^~B}{36wLP*;IByHB{XDK$9t_T>xlRYt|p zA;r;T%WuV(Y-~e#(X#&Gj%H}MiQxe`e2PRI&%}w z4=Q{^W2w;$*~e_^gj==XP~1zD$}x!AzM?!%pTL479S;oEK!Y)%fw$4K0Gao1f;Rgx zNHBw1@H8IIx=+~m>sxA?x@_l?dIDRZq=Et(!BpYK7M(G3cD#ic*Q3AcuDNyYgfYJq zg2bzbJ5-H!KgYWn>qZ`H^Rek01AH9jUQBZ~WX#^)uk+9-!qT34HzQPayg6W@dXq$AauVo9&2*6jj|K1xw z)TbP>e)88*5y8MD{?DuJH(x#ZH(y=O#vVzHZvFP2E~hB?H3HWAk{lYjxMOJ^yNvVT zCPebUxK)D86V8CI$X{b!m+Zvf5|zfNe;Zs`G4l%aZJ9m4jjdV*Ge#mxHSQc{FkeeX zQyW02X7qQWw{Mn04{>QcJE$#)bOx!nFv4A zeZL$@sg*i+-ekOUPEag|!^(c>s+|mXjsciuiEQ9<^hKvPBIGRIqD1MINNvtM|v->VCoYa#8eU^w*p4>D+ zXi4`?QkinyD6ET7JD&nydk9Vy@nZdzQyCWxTG|D+JB0_K_+jDV$`b9W+x=DhD@`ch z69nugU?M+GGWJ3j=#}fq60+?DyJ3FNOHn~&qpVR%-#57KtNMV+uaci9vL&eAk3HMV zK(}H!Zu6Wga(A))WB_@zrq+WD8NTeM$r$6c-kv9C-XY3k-XXO6fuy+m6`D8YMOO~^ zC8N$ONkn@ZG#U>t6R77N10kPIjT})Ruonetwi)LwMlJNYst&QK=^5rsMGrPN%m=it z1C;TYS(54OmEc<$-528@>mS!R0uB`JI4;EGJWyw-zg~vA>e8DH&q4OE z7f1|uu^^DnyNmXNIc*Ergp)&;euWMMVDdz!PxCKfv6J3ke>hFAUY%?MSXcV{JL1fE9?Tw4}qKl4Dg`Dq_Bv`xU zL&`8g@TS1U&xjVGiH=Z*6nFq}>(UOv*ieG>WuW$^MF%2CuoFamJb<^>wPWBE#6cLw zIG66g=;x;_;05F5ms<&Q|OR-Qj64tukh{zn{Xv7kT{LHF{i##bIILm z(GOs=xX*AClIi!fmr!tr2lSFJm=2Co&*k6pq7HiZjn+431;aPSxYjtjKpK?~ptLt! ztuTTfpnkuS5is8&%02n@Nl$*g@PE9LzuQJJ6L&M~Cp-B&pT00@RUKawqpuw?h+#2| z;_cTiJrxlLxUeyrdvFZsg@qZBAe9BR7Y1A}bQC=&4~nq*aEYf*Is&Dv?pQZMVuh}x zd9zwt%(=L|toW`(M($lknzC;NcbFdUZg-5p-IeKP{lntVxH|L%= zm+$qr{9tjw(n6o#d5{$ii*RuQR3z$uIdl*dO+6Gqw_$@e8h^zQF-lpIrRy~1KDy*w zRs>aX7xtjWJmY>_qH~g->|e(~>h`6!g8SQz;A}PJW_r5*IL8BM7hi z;Yi4O$!9CgGsyxeL!EHMs~l}2&TSwjF!GC@^hL5EvRV8{sZ*KD!Q8f1d4M%n$j1lF z!G=~%_>b3V{_qj61T`C!mM_k`(gX4P#_Vo=CQZ+rS=R_(REBQVtW8Dv4D;E{175t# zLTOrgAL%imN#Dl6sNdH7UPq5XYnN)j*@{5>%TeWZo<%cJM^TJ|QRAesTl!H}hjx>N@^)F>k}C zr>@k~thh$`Yogd0=?Uwt@;oYOHYb(x8{^=`7q;<3Ggse-71Se&ZXr7C*A|y5VvP5jk#e@PHoGNiEhtKzsrp2 zwB}GIG|Mfkp_$rPU^=n$+7l2-ixrP#psB!~qM?15GE!L>g~!qrP_PeOP+@EwHof^XIz14&Mzj{V{SFl%z^5DJGTWuED? zhCt}T*EV7l(Z*Z&`iB{fU%K&&wzumRAb6rv1P>YRO%&v71vu|FE8-}39HB$3Aktt025Z`21w?K|%I?V$;0SsF{gPF-lmpeZYRP-?o&5MS6L)E+RE*|a-jvqv8_ zGHr`gkaY7|b?UsxkbZP(6-^hsOMs$j06O_L2J?2A%8*Ic*$dL0a8uTBNLFbH(*WtU zRrF0{itSidQ>8Q00Euh>(PPFn3R_$c&FGbSC@X5wi%Wm5U1pr+0%XM6508+)S5v}s z{K`d7?tL>X7?{X^siuCo_P;qB-#3RuF!~-}=!s1_W1?tiw2r&VmujGlp`u6=oCnbz zlN!jUQuNplydnl!Wu9;eU4h@J#8^#^B?H;=hpt>NGHQ43&iGsSufN^)DT6@^XvFoJ z;~AvJTk56b+E{Atg333CX=!L0M}ZetEqK@umT4x&cB?!b?u*X!KK+*rA8Lkx3-v35 z!v(sGZZJJ-VmO$meA*1Nr^M{;=5G9T?L-Hcj=D^Nnr@y=mkV?CO&S&HfRAP`lcT%L zCsu2rx(1SUJ>0t*V(cnu&rhqJLtTvbp4-gdn2-v805W4m`b4yBadvTE%EioWujhP0 zP_owxyIoX#=&)yUgiy>V!yCwAjE8iOo73~3VH$VF9GIb2?~W)|JKE}JEy<$;It1{I5yz6|`FKO*sl16)2 z3&vvuvryLR)4WpRuXyXG^{VLK0fyKGh z&C@l}o{ici!|x7=P=C?N3TShDvGfh!EmK{0eTDQ=kItyOmTUCVZ)Ik(*zFys7yx-b zsx|5Hf`(NoFrDK*K3)b?PRUH_#I4iPRZp$MZhQ(2JS>(eP8v^7zk|7;rNJjz#HHwS zj(DfV{D}l$ZGqFf#Xg)JcZFj!(#sWV%wZp(Fb%IO$omaCV!L>ngkMpRJ*d<9Bb^2? z3vcL?GbL65IYN9abQ2!(1S)h|ah54Q3L{h#7GivKFhg%}bWaFHJ_-HQS;;dQFF030 zEDB6$Z!|<#a-#1Ka)S5{B0gd$HzA>V@`@G5yV3FX4dYE=i^l%t1#aONHz68L%QOf~J(KJ?!+)&JNg{l!!-s^fcnH`VaE zT=;0oDs;9@G#J4skv+*#8leq&iSlCOYU51(SPc{{dq*&^9vLScd?QymF~|?Nd>axP zdgZ%W)ut)W;1_Pt?Yeb8uY;p7+u|Xki+0L!c z)!s|>K$@-Or!+f5A9PNZZ_5sy(v4tT9)GgfijH;`@M$vB9*b3J??!ftF85l zK2YTP+xuyYG0CQJ)$dv91%?)}j;Yo;RpEpv9W zrgl}@HQiR(rm|&G)pBZ9X4)|Jv+`C;Z-Dx{X6Ox@WoJQCIbysOCH0mXvyD7Jp}|VE z*Fh_>Z=}ZfqN`|6(kwz*^2}5 z5dtrHx}$xS3QyAJr|OEHhjmR~$qm(7MSGb)Q=_rzl5`=*PSXvZ1}^uqqKiz~4{~bJ zHSgDSt3nycB4xg#Y}WQFp%@?s_aNa-p;$bekqjsCTcyY|^z3AdAjPYPyx#lo05 z=nnRq?zU#=7h57Uu;RQJ18XW1p?xpD?RT;tN7)H@i3#*j@-+(yt41qq$!V?8kk6N&XUVw)3-K-ECO2 z8+tpb&S?A-p{#N*3nf0G4 z?LRW>KvdK|zFkPo74ha|7TL)8L~vo?DBp&I-&e@1T!PV}+{FLJtn*<9lyJgGV_N0HK8_$KsymCr@(@i?JJ;Tf zO_IQuZp)B}ID}3w80j!ke+|D_YbR{pjq( zK|ze@%1QKO-r1A|d$>sS;9ME8C~%>5qoHx5U}dF5wMuqW@qtGun?4LObO@(BSesG; z-yafvxE5ZWhmxGb!q+D&)wSib%cS!aUTA9w6e zFNFi|;Ek~;F?BJ$G~U_01joY`wH1^OR^Vn{# z54QDMr3bPB5DD4fjTr_v1V<$0Tq5E%tX62PcJ8Z$zk!>%2D2#cI4%6wQAHCs%y*2LL!nkc8r`MUc^PK!J= zKCvb{Z`LbS>t7P{h#$pCUTN2Owe;%u)!im{%(h2L8(okt3p$j&R59vr2To6 zk*i5WfmgcQ2fFL6yLp~_VgtsVN) z`Ldk2m#zt&k|h^g>zlsHU>k3D+cy;segg~6H{Ls3q=|nyQyUUQh;ZO+T&kEw2!CMx znfS~eEfnB#la;e9AXW#_tmZDmP!UokX@pX zvbGB$D}zrS_FcC~qPCwb!acNG5nBG1otlhhXe()0MuK>mka;nZYuJP~yz3hhr}|f| zG-8$oz;w9l28`240<|;J7IWZ!Vw))NEmYGqgsVzuD_z)>B#4l9lasgLNZfOf$CH{t&1XhlqM7S=+9ZgD@eq@P7YDKH?kM;O6L^e3F*?ccqLb}JB%VFvwd&ka zX!v{=iXlWfGWz=L3@d}2Y^SDf&!21uTWy4UOY!*ZZGh;^Id$R#rD%Yp;$ySqq;yYF zl?>^vB*>`%Sndi6AU@^A-TaXFKqwlZ3>2<=MSxB^>zokWIN}b5EBDzu?xYWeh=-~_3y@A<=l}cq?60gjbID8ctz@;*91=*fn4uhG z4R7Q$v&OLdq#h5)$VN9lazBTrHKLDSvYVr|;}_5Lj~n52M8T#p8pU~00ZRJyLs zwgwJO$>uOU4P9d&@Z0qwA9jaUn2Gi68*gj8m_5xmuAdhTJ<>>Pt=bd%>om)qVS2X2 zQZ-MTwe3frYvDGZ-!W}*cltdx9G+l%c*Wi_4-1CNPp4b(wG=rG`eP`--ZmKPEH&6x zn($q?EZ2sr@?ur8Alr9QGWPK>U~OYRdCUDYZdGcYJ`9S^`yHKxh5V?#2_e1%J;T=)`w zWzO0D2zq$(F1KdrUi|2TrX!VEL(u|iz5fzNqmSF*S3}{Qz!TvIL4`5)_`*x7H;JuM zr)sBEUG?00x1F4@R8DUXNDh(oa4XVEtBi@eYDjCAO`Hj^LAGxokjz500IK=|lXvi? z$kmpD)!s-cdE1(0O8s9-_eN#vg(?8!xL?wqVM^g^#s!~GeMLe_K^JXaCkc}P()W`X zxB#KQ(0YK4lL5;kNcMO@YGk07Y%+Y$Ys3U&`Cgq%k<6lrvbg~3C4l?=BxyV#^e^)V zU=!FuV|J)Eg7!B4;$9i%d)? z*aMhk=goCCEpS6ktVCl55j@hm?C(|(TJ(BB;;n` z$AdcEu&91CoAq$Xq58@1$;jzMh~dXP;E4x!`&vVl&5;oNwLr=}Uv;5)NwuL(8G}7Y zog|#qL2raMt7%7CDRW8IxWtcx9lsoriPOX}u!N>m#P_nKPAWPKmmgSPP_44cpbzRw zI$|_dM0tqgdS1GRo3Lxw(a~|Ar(0nW)@!)YJ+JywX6H6JUw;sJ!y@Rr_vJv}N9p69 zjVGgBb9!bKk8a;Uddm!8TZ3_O+%XN)k>7WTg@eC~#5ddy;Il3qtpPIG2!&y*u;RGq zxAmUS8#Zc5Gv`KPJKv8waIiapx2$G$cOPFc+g}wp+g6Q#HR2OX%z{QQ3DmX*zNX?R9jG+dn)4yZm4O7@15pjY0m`ff!Jk) zKE~cqOY4nou#{@QW;ismlG%H+uWCBP|kVe&YErnhExYB5d2dVr|Ax7>Bb49%O{~&c^PRLmdVS4 z&;@$P3l_(aeEhA9=+)F<^z5=oJx&q( z#&)ijFdNrU!A~TPc*>_B9}7)&ZXT}-8g{IYOib7_9IP@{q|rKpwc{0Pr847p07k~o zMi(86JZA^XHHQl(iTgIFCt<5J|LHuN{%BHtBRZ-Z53`1 zK;e#1e83rj8cQDGN#t3`ij+0v;LBQZm0o;O7N=yC+>bJxrTJAW$~RZ^Dspq7O%+p2qLIFx2L*a$B1wM zU4TzScn@Z~i+rsg5^3Vj{Xl`Rx|$DQ+Qm`2@vi+=pa0V}`77-OaH$wD!%RH*$LLuf z=UbQ8g7^EXwq-HnQ?Z*~bFtqL{O@0_$JuZypc>`yY@ExhXW&veBg^`QV6^pNWW_(g z4t=H`x>?dMx?*R67dBKHkGP-#xSTZdqEJna~zD+T`@Ogis`{t2gG zAPMOj-7R6P>}6&4n@bQIi2DoYxkIwVxzq2pjfoKA;M`NxK=8C}r}6i-&CjzfPuq8Y zu4!IqKWUnW=LJJRq^$)+J=-QY*&O(SFZ?3uCV$zKn&jgfQdNCmz3WAm;3}_G_Pzhk(DnT|b34TA&-lzY zE{ff5h6)?r%!VQw-AEs5$+jCav8z8F=DkYA7J6>D{&^o_-H>BF{T03;$JtfX(#qyA zBkG5yk6oznsLUrs%xB@+5}+lfC>htcXt~ZUWTr`roTzjk_Q{T1%ddfe5p)(PbEqY= z5`1-!X(FqVZ?Nk~S@7hAEF4mr25G}ZDVT1uhBGu1Xq@piSSgB0!q~w?zKZoY+xfEO zgvp$oDbopBJV~_^$r-9$4Yd0+ktRi5_;DS%h#};0abLx>Slw79l@;k4-r3INnOYz% zt5xpX%-7ABE2;Eq^-dQCc#f6zH5l>koLM{-qz&X56xX1C=$fu*)>N}oGQGs zbhU{Qs}>}+(VMl=Q*2-eD{FNAO2lf(I>3#hau6pKPYwV0oz1y6>;*9FH%Gwh)fm!4Mg8{5B;!@=8+aF@l@OX8Krk7iiSG8b=w({vM zl3Vx?N*6q}sN#%v7we+Nw`qD^O?ldGwa15qR>n2P*5S8aua_mP1BRWSi@+bR3&J0t z$;m{Z981`~uk9Z3_aj*o7ceeS4lPocELmdQ@JKqvaz z45@^s&{-@n0VIK^!1NGz3CTXm0m2Pi$fBbO^-=XJcVb_ub!uOwn_M_68!iO&*p4t( z(aWyi>>erhqAWd9S$)-gPV1sOIAOT=O?q%I57JBdwaJ|^A87+a&&s?KQXie70O7_$`cPdcpyAr@k<2!B0UgQ_H;^!Dt zgCHV!A*kDaZ^EL65qM8ypk6<;@oOem5y26YxkLR)c;udr_>PCGTv^Vt@?2W{vKy11V5 ztep$#!jH8*d&v;nM-Q%)6g{R2@7xUaRf6(U8k&d|rHD3sP77L2G1OOcN)adc9H*S+ zGxj^qMwj+v|I6Lj&mu%YpJO$AV#S9U^hysyu??)nxs~!^1J2Pj{c*^h5WwG|EF!-? zK91O1eZ4P?YAO^u4+b-jM8*&!0L3@t1?m zE??2}F`wd<`zLLx^0zeU?+-!zsTS3EIx{GW@c>9Zs(BY&pF`pWy$Ib>2uRgghoqoN z&4ZtAQ~qGqV$R%HE8k7LS=(m39wPjS*g~MzA+ndVq!D??&+URgh1bopE#USJT7(e! zS*p%hwY4$)AdJ@gGBd@!7QQ3ekCkTPd$)K4cyvf%2HegY)JRRPg~PyAbWbFLHNSA zhEr!|z4t7ydlnm2o8-s<@k8&~4-6U0wvo!r=5F48R6&1Xg2uaET0UZPUsI_adriyj z@@y72xdt>%enN%HCbVn&Ucuf}z6%mva}Mb&?YZw!OGsrzy6KPw+f+%~oK|R*Mz@1Qr3rRiW{bABx4h!!hRz9yzv|S zf!U33x;ZK5$Qq2Sn}`T1x2$qbXj-n@D}od7!3BnxOmeRnf!q@eOgJ0b33$Z<(0ie1 zwjnhMW7IFxbS7z=2m?Cu>?69{gi5M9svW6G}0tqMZ@=a|)r5~+fOP(Lf=vOrg zqAM^V1lD~CT1+YENMg&8m{EOCPtSJ$$5YHF5kyMWnW{E7#-)eRsxC4!*yHCrqWhR@ zroQL2zEV*pzo6iZo#Zeu6s$IM|ug?V7zz|!RJ3j@FbTWSC5hU+~KIH zSoX6_ix-`Lf2;w2%uABh&^V{;DLZ~-yOwVTEsVj2?5`!KF1CVzeI_J5`=55=1UCOE zg2V&=6hUnN(fw=QjQ|?JWKw@w#giuU2Mo3D#2`HJ5R zHX91AQ!jOM>RaiIkZB`#FG_$K=O>NR<~kbyw^U{CaktqCvl@@z3ZirNqz;;wsIph* z!$qZq?uf~)P%9a@WZk!unx$&tHwY4)AEqpmuc?Go2p=1eiTAND#AF~#lf+xiJ!oniAd(kE(-trSqwiEaM+DUwU?%{ij&Ic7O!4c zBg;OqF=O>!dGFXJK5U979G_ws99(jVLNEx;5-d+I>D9ABwG5#>cAux4CqAIS&nY(bgcchbi z0DE+RcJkqh{2Usc_zwJmW+T%@7cX|>%Cdh8P~$?D1j2STsJkL70K^S*d=cx6ao;fA}Eu{f?twkf3T_)Wnkm4{*Ll6dD5cafKV zrx=TIUH43}g7w6FXZ=CcxLNg?H1C^^GYfLb9WEtc;)%UI(au!bBGx|%IZl1>`Z6pv zdGvbh5X#jEluwhm?t$}Fhsb#q+a;<)M%ovEoP>A^GnF6cGBR^*W@T`vZ_kZ@e!^s< zN&QX~um6k*kQw1-Gm=9Hs0g&lg4&m`Ie1;1)f{t5++9ICDL+cSO9v#0?w zADw;@z3${E(X)Mzi`8pJ?0bBvkM1Fv+$+l|NY#M(fn!7vTkTY6{F$WiH8Xh^OVvZl z;n{nq_5(tMaEiJILs5WkTDRfcv8ym8G&kL0tzTwzF8p;*&sfH85v~GleB468(eamY z_9T3JhY9_x69%)WH6@6lFvBH+XjKK6@LRdP-}p$aOCEF#aV0769Q)nmALShm(G30{CM>^+@i z;KpTS>ZnD6A-$&9#geYrI4Fw)ptBB7-dVj>{GbNS-QFH>e7SP=wjYmnL?(Aba=5X% zmVL6BSEQuZty6vJv#FFCDZTsS3j7TXVetlGvG;qGx>+G%Vdc@wij|d@tx;`!ya8|k zP9+*`ytCj}NqMjXY_XC-oS1%5gX@ZTh?;zsrr*?ZyiRFiYV{IB{bdV+5nbsA$6i?_ z($Ow#mkc4Q7N?F|46<)}OT`oxsq0&lWb*KKxn-1`x~MT}Ryd2ZW6uKm?iaZMkM4l0EU{dNM;7}WH>x5zl2TP- zL^e%oygZ6Jr9HsS`{dgeGxo_owlYf`-RZD7{p#h2??lBS#My+NnI z!0Rqz)jHBIEDJOPa%FV|#TB{AEPa@z@Uv9RAO)ADlC&{o8FGwiF{aE<2sUZ-9o2?h z6l><=W!>fFNaJi{=Qwn5(lkjv?2Bq)pYa?eCRU$vtwF`lEu2HR!V>x!Hzpf6S19=) zg&E;YSp<+go`ZD(A`0Jz3Ua(=MS}jc@~YAf-#R}2D+Jnz+2?32hPQpz=M53yZ}2UP zP~wqxpwGi91T3498D)GYywA{UvX2Tsz(TUKWui-Ak5L6#C$fS?()%94yAd^+oQYfD zz`TFXB@STO5}$g?qEm+-QN%|n)tW@uZajgB=u1ba zcC$U=>X<*>a$=WrxNHZ$ysj18RUn#DX2QIFXA1;^&nFI1&jqz@x#{;<&5FD`G4FRo z$CvGpyf_k3(|GE?mBA)0%jY(TT2!F0q)(J3>0AnY(yFT=`Rcg>F}2i`V9h|Ems!B? zg=P(-nm&6uj-5?4CL(xvB=;|8iyeyDl8eRiAWy zQaxTzFVX*A1v$GqIa|28+gP|!f~pZZSx~^n?%URL+{7mGtaB4`c-$w58@Y-l4ht!4 zNCK-q;~Tk|tjVMiDq%{~F^olvejP$jCtUDf_4N1Zo;-}HsD`B>NI+)Oai|NjLR$3k z=pw*UBsSs(kDM2_9%;Xi^-(2FT6)oxo-9!w{-mVAAuu5Syq3(-$4hE&b|5ESgSAxIZ2>nU$HOhZa@V9CHjemw*BlbYz03H#3{^4Ak#zslpUXET1%L1p;c zbpC2Uzix*ABm~d=XM}!QfS)>B^$&}D{h<8sd9GiF`|BpzPcFQkqQF0%)<5OqcWUQ9 z<>1%k@=p#rc>WFtf3!;e_woOlSNus`;^}10e?I>2)PJs;|8(rX=9GR??-l&J)c-QW z^z&!`>QIq~hWU 0 && StringUtils.isNotNull(sysRecipesPlan.getSendFlag()) && sysRecipesPlan.getSendFlag() == 1 && StringUtils.isNotNull(recipesPlan) && StringUtils.isNull(recipesPlan.getSendTime())) { - // 未发送过 - String name = "第" + recipesPlan.getStartNumDay() + "至" + recipesPlan.getEndNumDay() + "天"; - String startDate = recipesPlan.getStartDate().toString(); - String endDate = recipesPlan.getEndDate().toString(); - wechatAppletService.postRecipesMessage(sysRecipesPlan.getCusId(), sysRecipesPlan.getId(), name, startDate, endDate, recipesPlan.getRemark()); - } - return row; + + return sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); } /** diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java deleted file mode 100644 index d860fdb79..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.stdiet.custom.service.impl; - -import com.stdiet.common.core.domain.AjaxResult; -import com.stdiet.common.utils.StringUtils; -import com.stdiet.custom.domain.WxXmlData; -import com.stdiet.custom.service.ISysWxService; -import com.stdiet.custom.utils.WechatMessageUtil; -import com.stdiet.custom.utils.WxTokenUtils; -import com.thoughtworks.xstream.XStream; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; - -@Service -@Transactional -public class SysWxServiceImpl implements ISysWxService { - - @Override - public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr) { - return WxTokenUtils.checkSignature(signature, timestamp, nonce) ? echostr : null; - } - - @Override - public String autoResponse(HttpServletRequest request) { - try { - WxXmlData wxData = WxTokenUtils.resolveXmlData(request.getInputStream()); - - WxXmlData resultXmlData = new WxXmlData(); - resultXmlData.setToUserName(wxData.getFromUserName()); //收到的消息是谁发来的再发给谁 - resultXmlData.setFromUserName(wxData.getToUserName()); // - if (wxData.getMsgType().equals(WechatMessageUtil.MESSAGE_EVENT)) { - if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_SUBSCRIBE)) { - resultXmlData.setMsgType("text"); - resultXmlData.setCreateTime(System.currentTimeMillis()); - resultXmlData.setContent("欢迎来到胜唐体控,这是一条测试用的关注信息"); - } else if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_UNSUBSCRIBE)) { - - } - } else if (wxData.getMsgType().equals(WechatMessageUtil.MESSAGE_TEXT)) { - resultXmlData.setMsgType("text"); - resultXmlData.setCreateTime(System.currentTimeMillis()); - resultXmlData.setContent("点击该链接,获取博客解锁验证码"); - } else { - resultXmlData.setMsgType("text"); - resultXmlData.setCreateTime(System.currentTimeMillis()); - resultXmlData.setContent("公众号正在开发中。后期请多多关注!"); - } - XStream xstream = new XStream(); - xstream.processAnnotations(WxXmlData.class); - xstream.setClassLoader(WxXmlData.class.getClassLoader()); - return xstream.toXML(resultXmlData); //XStream的方法,直接将对象转换成 xml数据 - } catch (IOException e) { - return null; - } - } - - @Override - public AjaxResult getAccessToken() { - return AjaxResult.success(WxTokenUtils.fetchAccessToken()); - } - - -} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/WeChartAppletServiceImp.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/WeChartAppletServiceImp.java index 4a89be9b8..271b6f92c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/WeChartAppletServiceImp.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/WeChartAppletServiceImp.java @@ -1,26 +1,36 @@ package com.stdiet.custom.service.impl; import com.alibaba.fastjson.JSONObject; -import com.google.gson.JsonObject; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.stdiet.common.core.redis.RedisCache; import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysWxUserInfo; import com.stdiet.custom.domain.wechat.WxSubscribePostLog; +import com.stdiet.custom.service.ISysCustomerService; import com.stdiet.custom.service.ISysWxUserInfoService; import com.stdiet.custom.service.IWechatAppletService; import com.stdiet.custom.service.IWxSubscribePostLogService; +import com.stdiet.custom.utils.SmsUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; + @Service public class WeChartAppletServiceImp implements IWechatAppletService { + static final String WX_TEM_ID = "Ow0j0Jt4OJhjy6GruBstOMLTGjAVagM4hTZRLAaxqJo"; + + static final String SMS_TEM_ID = "SMS_216839183"; + static final String SMS_SIGN_NAME = "胜唐体控"; @Autowired private RedisCache redisCache; @@ -34,6 +44,9 @@ public class WeChartAppletServiceImp implements IWechatAppletService { @Autowired private IWxSubscribePostLogService wxSubscribePostLogService; + @Autowired + private ISysCustomerService sysCustomerService; + @Override public String getAccessToken(String appId) { String accessToken = redisCache.getCacheObject(appId); @@ -60,7 +73,7 @@ public class WeChartAppletServiceImp implements IWechatAppletService { } @Override - public String postRecipesMessage(Long cusId, Long planId, String name, String startDate, String endDate, String remark) { + public Integer postSubscribeMessage(Long cusId, Long planId, String name, String startDate, String endDate, String remark) { SysWxUserInfo sysWxUserInfo = sysWxUserInfoService.selectSysWxUserInfoByCusId(cusId); if (StringUtils.isNull(sysWxUserInfo)) { return null; @@ -68,42 +81,80 @@ public class WeChartAppletServiceImp implements IWechatAppletService { String accessToken = getAccessToken(sysWxUserInfo.getAppid()); if (StringUtils.isNull(accessToken)) { - return ""; + return -1; } - String tmpId = "EWeha9m0ggpnhMANDLHtl2ezLfPWKY_9PsJubbG_6eA"; String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken; - JsonObject param = new JsonObject(); - param.addProperty("access_token", accessToken); - param.addProperty("touser", sysWxUserInfo.getOpenid()); - param.addProperty("template_id", tmpId); - param.addProperty("page", "pages/recipes/index"); + JSONObject param = new JSONObject(); + param.put("access_token", accessToken); + param.put("touser", sysWxUserInfo.getOpenid()); + param.put("template_id", WX_TEM_ID); + param.put("page", "pages/recipes/index"); - JsonObject dataParam = new JsonObject(); - dataParam.addProperty("phrase1", name); - dataParam.addProperty("date3", startDate); - dataParam.addProperty("thing6", endDate); -// dataParam.addProperty("thing6", remark); - param.add("data", dataParam); + JSONObject dataParam = new JSONObject(); + dataParam.put("thing1", JSONObject.parse("{\"value\":\"" + name + "\"}")); + dataParam.put("time2", JSONObject.parse("{\"value\":\"" + startDate + "\"}")); + dataParam.put("time3", JSONObject.parse("{\"value\":\"" + endDate + "\"}")); + String mRemark = StringUtils.isNull(remark) ? "" : remark; + dataParam.put("thing4", JSONObject.parse("{\"value\":\"" + mRemark + "\"}")); - ResponseEntity entity = restTemplate.postForEntity(url, param, String.class); + param.put("data", dataParam); + + restTemplate.getMessageConverters() + .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8)); + ResponseEntity entity = restTemplate.postForEntity(url, param.toJSONString(), String.class); JSONObject resultObj = JSONObject.parseObject(entity.getBody()); WxSubscribePostLog postLog = new WxSubscribePostLog(); postLog.setAppid(sysWxUserInfo.getAppid()); postLog.setOpenid(sysWxUserInfo.getOpenid()); - postLog.setErrcode(resultObj.getInteger("errcode")); - postLog.setErrmsg(resultObj.getString("errmsg")); + int errCode = resultObj.getInteger("errcode"); + postLog.setType(0); + postLog.setResult(resultObj); postLog.setSendTime(DateUtils.getNowDate()); postLog.setPlanId(planId); + // + dataParam.put("tmpId", WX_TEM_ID); postLog.setData(dataParam); wxSubscribePostLogService.insertWxSubscribePostLog(postLog); - return resultObj.toJSONString(); -// Integer errcode = resultObj.getInteger("errcode"); - + return errCode; } + + @Override + public Integer postSms(Long cusId, Long planId, String plan) { + try { + SysCustomer customer = sysCustomerService.selectSysCustomerById(cusId); + SendSmsResponse response = SmsUtils.sendSms(customer.getPhone(), plan, SMS_TEM_ID, SMS_SIGN_NAME); + + WxSubscribePostLog postLog = new WxSubscribePostLog(); + postLog.setPhone(customer.getPhone()); + postLog.setPlanId(planId); + JSONObject resultObj = new JSONObject(); + resultObj.put("requestId", response.getRequestId()); + resultObj.put("bizId", response.getBizId()); + resultObj.put("code", response.getCode()); + resultObj.put("message", response.getMessage()); + postLog.setResult(resultObj); + JSONObject dataParam = new JSONObject(); + dataParam.put("phone", customer.getPhone()); + dataParam.put("plan", plan); + dataParam.put("tmpCode", SMS_TEM_ID); + dataParam.put("signName", SMS_SIGN_NAME); + postLog.setData(dataParam); + postLog.setSendTime(DateUtils.getNowDate()); + postLog.setType(1); + wxSubscribePostLogService.insertWxSubscribePostLog(postLog); + + return response.getCode().equals("OK") ? 0 : -1; + } catch (Exception e) { + System.out.println(e); + } + return -1; + } + + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpPostUtil.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpPostUtil.java deleted file mode 100644 index 5a7e9f087..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpPostUtil.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.stdiet.custom.utils; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLEncoder; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Set; - -/** - * [url=home.php?mod=space&uid=49329]@author[/url] Sunlight - */ -public class HttpPostUtil { - private URL url; - private HttpURLConnection conn; - private String boundary = "--------httppost123"; - private HashMap textParams = new HashMap(); - private HashMap fileparams = new HashMap(); - private DataOutputStream outputStream; - - public HttpPostUtil(String url) throws Exception { - this.url = new URL(url); - } - - /** - * 重新设置要请求的服务器地址,即上传文件的地址。 - * - * @param url - * @throws Exception - */ - public void setUrl(String url) throws Exception { - this.url = new URL(url); - } - - /** - * 增加一个普通字符串数据到form表单数据中 - * - * @param name - * @param value - */ - public void addParameter(String name, String value) { - textParams.put(name, value); - } - - /** - * 增加一个文件到form表单数据中 - * - * @param name - * @param value - */ - public void addParameter(String name, File value) { - fileparams.put(name, value); - } - - /** - * 清空所有已添加的form表单数据 - */ - public void clearAllParameters() { - textParams.clear(); - fileparams.clear(); - } - - /** - * 发送数据到服务器,返回一个字节包含服务器的返回结果的数组 - * - * @return - * @throws Exception - */ - public String send() throws Exception { - initConnection(); - conn.connect(); - outputStream = new DataOutputStream(conn.getOutputStream()); - writeFileParams(); - writeStringParams(); - paramsEnd(); - int code = conn.getResponseCode(); - if (code == 200) { - InputStream in = conn.getInputStream(); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] buf = new byte[1024 * 8]; - int len; - while ((len = in.read(buf)) != -1) { - out.write(buf, 0, len); - } - conn.disconnect(); - String s = new String(out.toByteArray(), "utf-8"); - return s; - } - return null; - } - - /** - * 文件上传的connection的一些必须设置 - * - * @throws Exception - */ - private void initConnection() throws Exception { - conn = (HttpURLConnection) this.url.openConnection(); - conn.setDoOutput(true); - conn.setUseCaches(false); - conn.setConnectTimeout(10000); // 连接超时为10秒 - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); - } - - /** - * 普通字符串数据 - * - * @throws Exception - */ - private void writeStringParams() throws Exception { - Set keySet = textParams.keySet(); - for (Iterator it = keySet.iterator(); it.hasNext(); ) { - String name = it.next(); - String value = textParams.get(name); - outputStream.writeBytes("--" + boundary + "\r\n"); - outputStream.writeBytes("Content-Disposition: form-data; name=" + name + "\r\n"); - outputStream.writeBytes("\r\n"); - outputStream.writeBytes(encode(value) + "\r\n"); - } - } - - /** - * 文件数据 - * - * @throws Exception - */ - private void writeFileParams() throws Exception { - Set keySet = fileparams.keySet(); - for (Iterator it = keySet.iterator(); it.hasNext(); ) { - String name = it.next(); - File value = fileparams.get(name); - outputStream.writeBytes("--" + boundary + "\r\n"); - outputStream.writeBytes("Content-Disposition: form-data; name=" + name + "; filename=" + encode(value.getName()) + "\r\n"); - outputStream.writeBytes("Content-Type: " + getContentType(value) + "\r\n"); - outputStream.writeBytes("\r\n"); - outputStream.write(getBytes(value)); - outputStream.writeBytes("\r\n"); - } - } - - /** - * 获取文件的上传类型,图片格式为image/png,image/jpeg等。非图片为application /octet-stream - * - * @param f - * @return - * @throws Exception - */ - private String getContentType(File f) throws Exception { - return "application/octet-stream"; - } - - /** - * 把文件转换成字节数组 - * - * @param f - * @return - * @throws Exception - */ - private byte[] getBytes(File f) throws Exception { - FileInputStream in = new FileInputStream(f); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] b = new byte[1024]; - int n; - while ((n = in.read(b)) != -1) { - out.write(b, 0, n); - } - in.close(); - return out.toByteArray(); - } - - /** - * 添加结尾数据 - * - * @throws Exception - */ - private void paramsEnd() throws Exception { - outputStream.writeBytes("--" + boundary + "--" + "\r\n"); - outputStream.writeBytes("\r\n"); - } - - /** - * 对包含中文的字符串进行转码,此为UTF-8。服务器那边要进行一次解码 - * - * @param value - * @return - * @throws Exception - */ - private String encode(String value) throws Exception { - return URLEncoder.encode(value, "UTF-8"); - } -} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/SmsUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/SmsUtils.java new file mode 100644 index 000000000..176842e27 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/SmsUtils.java @@ -0,0 +1,91 @@ +package com.stdiet.custom.utils; + +import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.stdiet.common.config.AliyunOSSConfig; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class SmsUtils { + //产品名称:云通信短信API产品,开发者无需替换 + static final String product = "Dysmsapi"; + //产品域名,开发者无需替换 + static final String domain = "dysmsapi.aliyuncs.com"; + + public static SendSmsResponse sendSms(String phone, String plan, String tmpCode, String signName) throws ClientException { + + //可自助调整超时时间 + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + + //初始化acsClient,暂不支持region化 + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", AliyunOSSConfig.AccessKeyID, AliyunOSSConfig.AccessKeySecret); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); + IAcsClient acsClient = new DefaultAcsClient(profile); + + //组装请求对象-具体描述见控制台-文档部分内容 + SendSmsRequest request = new SendSmsRequest(); + //必填:待发送手机号 + request.setPhoneNumbers(phone); + //必填:短信签名-可在短信控制台中找到 + request.setSignName(signName); + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode(tmpCode); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + JSONObject paramObj = new JSONObject(); + paramObj.put("plan", plan); + request.setTemplateParam(paramObj.toJSONString()); + + //选填-上行短信扩展码(无特殊需求用户请忽略此字段) + //request.setSmsUpExtendCode("90997"); + + //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 + request.setOutId("yourOutId"); + + //hint 此处可能会抛出异常,注意catch + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + + return sendSmsResponse; + } + + + public static QuerySendDetailsResponse querySendDetails(String bizId) throws ClientException { + + //可自助调整超时时间 + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + + //初始化acsClient,暂不支持region化 + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", AliyunOSSConfig.AccessKeyID, AliyunOSSConfig.AccessKeySecret); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); + IAcsClient acsClient = new DefaultAcsClient(profile); + + //组装请求对象 + QuerySendDetailsRequest request = new QuerySendDetailsRequest(); + //必填-号码 + request.setPhoneNumber("15000000000"); + //可选-流水号 + request.setBizId(bizId); + //必填-发送日期 支持30天内记录查询,格式yyyyMMdd + SimpleDateFormat ft = new SimpleDateFormat("yyyyMMdd"); + request.setSendDate(ft.format(new Date())); + //必填-页大小 + request.setPageSize(10L); + //必填-当前页码从1开始计数 + request.setCurrentPage(1L); + + //hint 此处可能会抛出异常,注意catch + QuerySendDetailsResponse querySendDetailsResponse = acsClient.getAcsResponse(request); + + return querySendDetailsResponse; + } +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WechatMessageUtil.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WechatMessageUtil.java deleted file mode 100644 index 2b7195c10..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WechatMessageUtil.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.stdiet.custom.utils; - -public class WechatMessageUtil { - // 各种消息类型,除了扫带二维码事件 - /** - * 文本消息 - */ - public static final String MESSAGE_TEXT = "text"; - /** - * 图片消息 - */ - public static final String MESSAtGE_IMAGE = "image"; - /** - * 图文消息 - */ - public static final String MESSAGE_NEWS = "news"; - /** - * 语音消息 - */ - public static final String MESSAGE_VOICE = "voice"; - /** - * 视频消息 - */ - public static final String MESSAGE_VIDEO = "video"; - /** - * 小视频消息 - */ - public static final String MESSAGE_SHORTVIDEO = "shortvideo"; - /** - * 地理位置消息 - */ - public static final String MESSAGE_LOCATION = "location"; - /** - * 链接消息 - */ - public static final String MESSAGE_LINK = "link"; - /** - * 事件推送消息 - */ - public static final String MESSAGE_EVENT = "event"; - /** - * 事件推送消息中,事件类型,subscribe(订阅) - */ - public static final String MESSAGE_EVENT_SUBSCRIBE = "subscribe"; - /** - * 事件推送消息中,事件类型,unsubscribe(取消订阅) - */ - public static final String MESSAGE_EVENT_UNSUBSCRIBE = "unsubscribe"; - /** - * 事件推送消息中,上报地理位置事件 - */ - public static final String MESSAGE_EVENT_LOCATION_UP = "LOCATION"; - /** - * 事件推送消息中,自定义菜单事件,点击菜单拉取消息时的事件推送 - */ - public static final String MESSAGE_EVENT_CLICK = "CLICK"; - /** - * 事件推送消息中,自定义菜单事件,点击菜单跳转链接时的事件推送 - */ - public static final String MESSAGE_EVENT_VIEW = "VIEW"; - - -} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java deleted file mode 100644 index 5a42a8bab..000000000 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.stdiet.custom.utils; - -import com.alibaba.fastjson.JSONObject; -import com.stdiet.common.utils.StringUtils; -import com.stdiet.common.utils.http.HttpUtils; -import com.stdiet.custom.domain.WxXmlData; -import com.stdiet.custom.domain.wechat.WxAccessToken; -import com.stdiet.custom.domain.wechat.WxFileUploadResult; -import com.thoughtworks.xstream.XStream; -import org.apache.commons.io.IOUtils; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -public class WxTokenUtils { - - public static final String KEY_ACCESS_TOKEN = "wx:access_token"; - public static final String KEY_ACCESS_TOKEN_WATHER = "wx:access_token_watcher"; - - // 与接口配置信息中的Token要一致 - private static String token = "shengtangdiet"; - // 胜唐体控 - private static String appId = "wx4a9c1fc9dba53202"; - private static String appSecret = "fff029ade5d3575df755f4cf9e52f8da"; - // 胜唐体控李晓 -// private static String appId = "wxaf10fe560ea043a0"; -// private static String appSecret = "afb47e477337df23b7562c3c1f965826"; - private static String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token"; - private static String uploadMaterialUrl = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=image"; - - - public static WxAccessToken fetchAccessToken() { - try { - String resStr = HttpUtils.sendGet(tokenUrl, "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret); - if (StringUtils.isEmpty(resStr)) { - return null; - } - JSONObject obj = JSONObject.parseObject(resStr); - - WxAccessToken token = JSONObject.toJavaObject(obj, WxAccessToken.class); - return token; - } catch (Exception e) { - return null; - } - } - - /** - * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 - * - * @return String url的响应信息返回值 - * @throws IOException - */ - public static WxFileUploadResult uploadImage(String filePath, String fileName, String accessToken) throws Exception { - String[] cmds = {"curl", uploadMaterialUrl.replaceAll("ACCESS_TOKEN", accessToken), "-F" - , "media=@" + filePath + ";filename=" + fileName};//必须分开写,不能有空格 - - ProcessBuilder process = new ProcessBuilder(cmds); - Process p = process.start(); - BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); - StringBuilder builder = new StringBuilder(); - String line = null; - while ((line = reader.readLine()) != null) { - builder.append(line); - builder.append(System.getProperty("line.separator")); - } - JSONObject obj = JSONObject.parseObject(builder.toString()); - return JSONObject.toJavaObject(obj, WxFileUploadResult.class); - - } - - /** - * 验证签名 - * - * @param signature - * @param timestamp - * @param nonce - * @return - */ - public static boolean checkSignature(String signature, String timestamp, String nonce) { - String[] arr = new String[]{token, timestamp, nonce}; - // 将token、timestamp、nonce三个参数进行字典序排序 - // Arrays.sort(arr); - sort(arr); - StringBuilder content = new StringBuilder(); - for (int i = 0; i < arr.length; i++) { - content.append(arr[i]); - } - MessageDigest md = null; - String tmpStr = null; - - try { - md = MessageDigest.getInstance("SHA-1"); - // 将三个参数字符串拼接成一个字符串进行sha1加密 - byte[] digest = md.digest(content.toString().getBytes()); - tmpStr = byteToStr(digest); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - content = null; - // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 - return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false; - } - - /** - * 将字节数组转换为十六进制字符串 - * - * @param byteArray - * @return - */ - private static String byteToStr(byte[] byteArray) { - String strDigest = ""; - for (int i = 0; i < byteArray.length; i++) { - strDigest += byteToHexStr(byteArray[i]); - } - return strDigest; - } - - /** - * 将字节转换为十六进制字符串 - * - * @param mByte - * @return - */ - private static String byteToHexStr(byte mByte) { - char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; - char[] tempArr = new char[2]; - tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; - tempArr[1] = Digit[mByte & 0X0F]; - String s = new String(tempArr); - return s; - } - - public static void sort(String a[]) { - for (int i = 0; i < a.length - 1; i++) { - for (int j = i + 1; j < a.length; j++) { - if (a[j].compareTo(a[i]) < 0) { - String temp = a[i]; - a[i] = a[j]; - a[j] = temp; - } - } - } - } - - public static WxXmlData resolveXmlData(InputStream in) { - WxXmlData wxXmlData = null; - try { - String xmlData = IOUtils.toString(in, StandardCharsets.UTF_8.name()); - XStream xstream = new XStream(); - //这个必须要加 不然无法转换成WxXmlData对象 - xstream.setClassLoader(WxXmlData.class.getClassLoader()); - xstream.processAnnotations(WxXmlData.class); - xstream.alias("xml", WxXmlData.class); - wxXmlData = (WxXmlData) xstream.fromXML(xmlData); -// log.info("【wxXmlData: {}】 ", wxXmlData); - } catch (Exception e) { -// log.error("【error】{}", e.getMessage()); - } - return wxXmlData; - } -} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index ca90aa620..17f4845c1 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -23,6 +23,8 @@ + + @@ -38,7 +40,7 @@ - select id, order_id, cus_id, out_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, pause_date, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan + select id, order_id, cus_id, out_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, pause_date, create_time, create_by, update_time, update_by, del_flag, review_status, sub_send, sms_send from sys_recipes_plan diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml index 946ed2c3c..f5d31376b 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserInfoMapper.xml @@ -46,7 +46,7 @@ order by wxuser.update_time desc - where cus_id = #{cusId}