From c80309678307352b38d659c6bd36a7548f97a793 Mon Sep 17 00:00:00 2001 From: liwen Date: Mon, 15 Jan 2024 11:30:24 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E6=BC=94=E7=BB=83=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=BC=94=E7=BB=83=E8=AE=B0=E5=BD=95=E8=A1=A8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzims/safeproduct/vo/RehearsalDetailVO.java | 55 +++++++++++++++++++++ .../controller/RehearsalController.java | 9 ++-- .../safeproduct/mapper/RehearsalRecordMapper.java | 7 +++ .../safeproduct/mapper/RehearsalRecordMapper.xml | 11 +++++ .../service/IRehearsalRecordService.java | 13 ++++- .../service/impl/RehearsalRecordServiceImpl.java | 34 ++++++++----- .../main/resources/template/演练记录表.docx | Bin 0 -> 11783 bytes 7 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java create mode 100644 hzims-service/safeproduct/src/main/resources/template/演练记录表.docx diff --git a/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java new file mode 100644 index 0000000..bb7bd8e --- /dev/null +++ b/hzims-service-api/safeproduct-api/src/main/java/com/hnac/hzims/safeproduct/vo/RehearsalDetailVO.java @@ -0,0 +1,55 @@ +package com.hnac.hzims.safeproduct.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author liwen + * @date 2024-01-15 + */ +@Data +@ApiModel(value = "演练记录表VO类") +public class RehearsalDetailVO { + + @ApiModelProperty("编码") + private String code; + + @ApiModelProperty("参演人员") + private String peopleName; + + @ApiModelProperty("演练实际开始时间") + private Date actualStartTime; + + @ApiModelProperty("演练实际结束时间") + private Date actualEndTime; + + @ApiModelProperty("演练记录") + private String record; + + @ApiModelProperty("演练评价") + private String comment; + + @ApiModelProperty("演练图片") + private String imgPath; + + @ApiModelProperty("演练附件") + private String filePath; + + @ApiModelProperty("单位") + private String unit; + + @ApiModelProperty("演练地点") + private String location; + + @ApiModelProperty("总指挥") + private String commander; + + @ApiModelProperty("演练方式") + private String rehearsalMethod; + + @ApiModelProperty("演练科目") + private String subject; +} diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java index 38e48e4..60c96c9 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/controller/RehearsalController.java @@ -7,6 +7,7 @@ import com.hnac.hzims.safeproduct.entity.RehearsalPlanEntity; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; import com.hnac.hzims.safeproduct.service.IRehearsalPlanService; import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; +import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; import com.hnac.hzims.safeproduct.vo.RehearsalMonthVO; import com.hnac.hzims.safeproduct.vo.RehearsalYearVO; import io.swagger.annotations.Api; @@ -105,8 +106,8 @@ public class RehearsalController extends BladeController { @GetMapping("/rehearsalRecordDetail") @ApiOperation(value = "演练记录详情") @ApiOperationSupport(order = 9) - public R rehearsalRecordDetail(@RequestParam Long id) { - return R.data(rehearsalRecordService.getById(id)); + public R rehearsalRecordDetail(@RequestParam Long id) { + return R.data(rehearsalRecordService.getRecordDetailVOById(id)); } @GetMapping("/rehearsalRecordPage") @@ -152,7 +153,7 @@ public class RehearsalController extends BladeController { @GetMapping("/exportRecordDetailData") @ApiOperation(value = "演练记录表导出") @ApiOperationSupport(order = 14) - public void exportRecordDetailData(@RequestParam Long id) { - rehearsalRecordService.exportRecordDetailData(id); + public void exportRecordDetailData(@RequestParam Long id, HttpServletResponse response) { + rehearsalRecordService.exportRecordDetailData(id, response); } } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java index 1c77f92..9cbd708 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.java @@ -2,6 +2,7 @@ package com.hnac.hzims.safeproduct.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; +import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; import org.apache.ibatis.annotations.Mapper; /** @@ -13,4 +14,10 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface RehearsalRecordMapper extends BaseMapper { + /** + * 查询演练记录表详情 + * @param id 演练记录id + * @return 演练记录表VO类 + */ + RehearsalDetailVO getRecordDetailVOById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml index 123fddd..4eb9ff8 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/mapper/RehearsalRecordMapper.xml @@ -2,4 +2,15 @@ + \ No newline at end of file diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java index f1092da..8f5d5e2 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/IRehearsalRecordService.java @@ -2,6 +2,9 @@ package com.hnac.hzims.safeproduct.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hnac.hzims.safeproduct.entity.RehearsalRecordEntity; +import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; + +import javax.servlet.http.HttpServletResponse; /** * 演练记录服务类 @@ -35,6 +38,14 @@ public interface IRehearsalRecordService extends IService /** * 演练记录表导出 * @param id 演练记录id + * @param response 响应类 + */ + void exportRecordDetailData(Long id, HttpServletResponse response); + + /** + * 查询演练记录表详情 + * @param id 演练记录id + * @return 演练记录表VO类 */ - void exportRecordDetailData(Long id); + RehearsalDetailVO getRecordDetailVOById(Long id); } diff --git a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java index e37f4b5..f6ece0d 100644 --- a/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java +++ b/hzims-service/safeproduct/src/main/java/com/hnac/hzims/safeproduct/service/impl/RehearsalRecordServiceImpl.java @@ -13,17 +13,13 @@ import com.hnac.hzims.safeproduct.mapper.RehearsalPlanMapper; import com.hnac.hzims.safeproduct.mapper.RehearsalRecordMapper; import com.hnac.hzims.safeproduct.service.IRehearsalRecordService; import com.hnac.hzims.safeproduct.utils.BaseUtil; -import com.hnac.hzims.ticket.constants.WorkTicketConstants; -import com.hnac.hzims.ticket.workTicket.entity.WorkTicketInfoEntity; +import com.hnac.hzims.safeproduct.vo.RehearsalDetailVO; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.springblade.core.log.exception.ServiceException; -import org.springblade.core.tool.utils.StringUtil; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; import javax.annotation.Resource; -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -40,6 +36,9 @@ public class RehearsalRecordServiceImpl extends ServiceImpl { - throw new ServiceException("未找到模板文件,预览失败!"); - }); + public void exportRecordDetailData(Long id, HttpServletResponse response) { + RehearsalDetailVO rehearsalDetailVO = this.getRecordDetailVOById(id); + Map params = BaseUtil.obj2Map(rehearsalDetailVO); + String templateFile = "template/演练记录表" + SafeProductConstant.DOCX_SUFFIX; + String wordPath = savePath + "/演练记录表" + SafeProductConstant.DOCX_SUFFIX; + String pdfPath = savePath + "/演练记录表" + SafeProductConstant.PDF_SUFFIX; + BaseUtil.exportDocument(templateFile, params, wordPath, pdfPath, response); + } + + /** + * 查询演练记录表详情 + */ + @Override + public RehearsalDetailVO getRecordDetailVOById(Long id) { + return baseMapper.getRecordDetailVOById(id); } } diff --git a/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx b/hzims-service/safeproduct/src/main/resources/template/演练记录表.docx new file mode 100644 index 0000000000000000000000000000000000000000..07a0f0e7b4fe1146ada1f53dc1c5c22423f1a80d GIT binary patch literal 11783 zcmb7q1yo&0v+g0dySr;}hY%bN?(Xic!QI{665L%A2=1QX?k>UY!OWdIGkO2L>%Cs< zoYSj!eY?7=_pVdb^~p(sg24dZT8PXB|J(0h4f?fXWNRqrU~A{dAonVU_BsIdhuAQy zTbmXL0AT+P06_Yun7*AIy_>aFR@|sf03%Z1Y0^DHD9>DMPGKCe1kkZ`K|FQ`OWg#d zOi!~BmE2ZWu{2P}V=*nMKgVU@V5(sSyMA4P%p1*M6|~D}P$cX2!2p-eb6kx^VnG5V z%m;k4YN{Wyc3Q!&5ifF=BoO%6r_mrhPz}LtA=rdrqX=A<~usxKdT zj@Q-ePn8EZ^L~O5CB^h%bwZ&wd)yO4b=y}_fxk$@g4pZSexW+Ck#uh-9>1dNGqON8 zKY~IEMK2gU=parhb=`?f2baQD6zt7ZTK8H!YXzI~XbhLa=h);%@YCFvU3&2`GuX6l zY1#!GqCJ~m`?@AoFfIG*J~uw2$cui96sn2v{H{ZBvOgpmGUX5NWf0qz9&Y!yuzK@o zKSu7zN5(AfIiq~+FcRSP8S~#aQh_)$!+>;49xZh9v(K!6#-T)3wLm!f+|qH~k0t3k zquH>}@$a43l;BsFeccK7*PTHA=S~>fIvBrgMO1u^OgAG^uq)XL@kRC=kcx;FNY0;C z94L$&I$B#*A#x<#Xud$HXK1u}b&tnsj^nSV$NTc_+rx32RjaabHHe|{7e_QPFz{S= z^3OWkd-_bU4Dx#T)BZ_G!Fb1=`R4YY;?L7BhB~uKEEr|{;dz0YLx*@3S!L9H$yEYO zxb7j>8@0^gT)OG#mDoP|w4KnzyJ~)h{#?PDdTNNmGo;{zu~%i(JicpK5^}j&z4mCE zwpE}7M>&|>##>5L#}+Szd?%^zZw2s{G-)9Xr&;9_T$ntcu|AI4p0*VQD>V7^f}p3Z zY4Z%hGeVM_0X~_zDiKT{X7s|LLj%VIQ9{m*1W>qJaszoyZ}$#Pn>sM^w$=3SK{$JvxCA;~Nf=~Tl^yeQ;K3+@~l2MORfSl*% zUegfI*ZUpW4A_*4Jf7N=DD%2aZk{2G^RgtA>uv)O446Aqs6P|<@fV9Wbu4^2+piIn zgo>E7q#MYONz#0=rF zfuTuEVu=%Yz25EoMnI@x?5YjvJA^Jb3lpSbjn-LP!V|p4EZmIorwN{NZ;$6O|jdt3z-_ zWm7*%L*-ODKO0|zyqWetdm`{x)4JL^82#pjA{m7&RbLS@W&i-(wzTTUo@cQP4WyGw00WIrUj7zq{7mW-`wjR^ ziU|Ntql95FxYyN+K<@%>?4f)C=jTN!oEOr{`p`dE(iH&zs$|V=-S- zw&|eN$x!*OblrDee(lHj+%|KMUi=I-B><4ko8w768D|$2B>*w#+(&A)(=NciYKf!Q z;qjFg0Y_$jk}N|TW!7qqh>%_U9PCNwlX+D5M}Z!!sC7|~RLY1^a4 zWV{RqGEwZBo`tDSzX_XMhhy8Iaa=iN#UVaq!O`C6!|7MG0&}N>m+9>;@!8-K%HOfU zXUoTb0M6L13$r}*Ldr+!ru0$Go7tz*DBg7CAko+lN%2LX2WiCBbNh+J5TZ{zi~b{} z`U6L%@!hTzf5po~mCxhu>dVYGgj(s?!J-({ZrvyA8PW<%W1j{Ub0`_8*|bq6{uGgT z*{1+QaXB+0-N)mht=X9>dR_`i|%RQ!B6_6;XG)Lpf90g`Rls*kI-C#mOrXCtisi4JsF~r6;39)SQIb(Bte`w+k&;NBRgC!byN&&y2Uxzm7zxK@0)jC@%Os zg=|L(XbM?}>OAh^dS~Y`5Di!&7 z+_*mOX|*_pD>Y3yBh3-LV5`Ty5%Nnd5_WN78(~p9+Nt6db!3rDn8#?U7^zX{`$~wE z+)E3)m_9`A0Lck2wq|x_s$eK-HyX>7h9c%q(6YuJ8JtFq4C^IUy5AM&zXsYiJ!zQQ z4@4dY43PSJkGPXv1%#c?>QQ8)Ks>cwa~r}LQaTM&yPalJUw>9>{q-xs_x#X@qFeRU z&uB(jC;=WfsxT`+TUeoGd(60XXE-Q7zl|nn6*}c50>qDaY9j;|Gf$ zAlsSY27Mce25V*qFMy42{w?z1`{qJtw2FcsFR=7pcKpdt^@-HPZko?oiD-AeUHa_!!JhH?1Z0n2zbN}Ra>U?NG~(&x-DLSq@=C$CC`hobk}2Zjlp;v-Bc?9H z{l;L?L9=j;lzM=o7Gy&F=A=UWHY7vhZ10Iub81S?Fv$hE5pkWEZ*ZKLS6@H zDCNZ#J#by$OCh+s?r9=yD6$t*ED>=!*d_)ymS?i)R^YkS+i{(0-8lA)&TZZXa}#haA+d9K{;DpH*lR_Edxx`HbFba$DpG*9?tVXACp7!Luse=91m~J zJYbB1@n6ooU>tcwU65k*bL@*?C1|ldt)67R#@Iq&%-wgJ9G%Xtt{EQMHu}2+nwb*@ z#GtjH{*0c0ox?p@pFZqKYP)h8CvxYsH@1^z%7v~Zt2~Dc4IF+v-9pV42Cv2ke~(VD zt45Mw0;;ZcQcXvp23gyjSzB2ybo@iiAjHACqCqIE5o0+|ShMU@F2BOqjcW48C*D{y z9(@9d4TT_$6^S5%q3x;QbW1Q~Zu>zYY1UwbD-2sJ%FgXV>GQtYX1sdp6*Y_$*VZ1~ z;UHvNI#t{AK9pApI{ANeL{Y9#ZRx@!(JitxUppz1xE7U#ZiZo67jmdoryddK zRiWtW#>_6Pp$&(L*NclA7cwbshAoU6QQHUaSJd)XHloP?*%8n8ejVuw0^d-` z-is@_6(5pbOuZtW|GW|9DY2;7UPDI@X&ugy+`FAcf8OVy|2oN8&Gs7Mj#uHCe{|x6 zpL%d5{a@$*HaF=v$N)Jao4jKC>y=*I7O27^H$!zTgatHPx`<&O?bkVde^p%8^ty;o z5gf_I|LBm0-G^}`gORSN(WkJ_q`yJpBnd3?3*BC?L~uAn>C66q8V*{ty+(`Px|pru z)z%~_yfebm=j_5~I1f9x`&X8Wqj!ka1k@oPG8I2o=oA&CP<1`*UoGAYV~%AIdNWmh z{<;0jTjF+psS z;S11a9&qT`ssZCg&8ud68A|dl`C21%r$zjrqDz$$YP>pjMGSr|Hj5S7MSDDK$vf|! zX`Wn)q4=`su=^;Zn+`fVV`^b~-D1^XPG7&`W;7krg_4Q2H`*-M+8uHo7*vR;kJ#Yi zatNEm?s?zXY^90ms>;FPVc%BvNpFnNOr>F|+ZLlmgR*?Kh-Ku$-AD-hnQK?xX;^A) ziy7RTbD*0yt0@iXD`N!yxroiT5p&-gnmL6P6HYV8G#cF1OXMxdR_ddje%;A(36C9 zwu-AR(h3-<({xhxNeBW-6~A`bbP4_ejAMpkAl+D>C$LAIt)pH_*`%1tqT0QaduUA?wB`@JDb&Ac zN+g}Ic~kI~#nPtv{+J^g^K8wOtKpc&ZD*-xxI#{D-Sl!Tr&c<3UM>mKs&l<3bXs&h zPwoq+S~UUd6hLbsKwl8&qX<4aPBL~^+PSAfRz`xn(;GyA9K7BmXr#vlINcX+QzH*j^ksdMz$n~h+RU?KolVHQg`*d7Sa;pf9yA-h zuYM>Y#BKpVQ8ZvRhH@Zjq##hGt%0-(DGt(w=0g*#l_P5*1ZoL^t(PVgDTyDHHdFHw z4%YCyHY?e2R<<-$3F~PazxMCsK=yRxEbTev?No40Dnac*-Y%eS$9D5XekA=UDAp3Y zO!8;To{jhDcA!p4X(gS7)u0WgA{XH8X{Hv;DZ-mC^4;i@JA#TN^ysmpLS3DPWfP1o zt>l{Osf1faBqDfPd+vUrN~s3mAe37_4Yx4qFyxS;*RE$Q%*TviKx$z`ZW0tvmtQiC z%GS;z4KKn-!|Vil{Al@&8sRcXq=a4Vh^MO5$ipq?h}SttZs`C>jlW#oyyzOaq>M^r&||V z0(F06JX@Vtr&Tf3-Q7N%*zhin{;WH(x~WfNU|()KH#r+OnDtTDo!q`zpC}B=MtofF z&F1dEKJzUr746(N`{n90bNn!*b|Qwys-nJ@*Rggodzbc6UAVqkY&!HzO@1nUo)$@H zO~0HyMQP>{%kI33n385Aecr|+cqgz1+9o!AU4;noSO>RzD$STBUnOc;LeNXRcl6%b zc6jAoZl!(Q?uuqu_YseF+aWwe(gzwl__OrN2+q<5Fdaikx^{{aog}t7^C87x2;Gl1 z1~$ODB7u5B(nX_Uj9$h$p9ykgz&WxUBUF=`K?fGL|@eD?^OkK;_7A z_{xHNvwg|IR6630lCbVI{6Wkv_zfkpa&Zt4f2tpf$k?9T3osmrW0yYvOJWWCm&bB4 zGqyJVExlfDz`1~d007#s008uV3;rR_^p<2FtB=N@a-e-vJ$PYE=Q$$VGE|Qf$%rwA zZL1~$>6sklWHI@$IpE?lSmAH@MMBwpRw(Y%VV*?)Y=e?6<+0X0dko?!E6#rC-7J}4L4{pl$tQ2B zaCVclw?CbWrA#DC*$0Ehj`w0%1eGKvR7Alu`RkL7)j^M~FQ%Tu0o}F-MMox~_eS?b z*}`#fu}R#qwx~cGToE4DueD5L{5P~<*ckKMt5`S4^*oj2b9$wms1T!(t%GuTOejG; zb%Q}f1iy!Rilx8PTb~{XIROnb9CEm074k>F@ z&0GG$`N9X!Ux3_fZe{Oe!)}@7;@7~xGg;8qq+W5t?I!sWgr4DAcAQmwu*Np9S5>i= zaplsqv%xm7c1U{*D^F?h6YmMf=qw7|vr6Z1#sfhoKtbZ70Nn{q8Mot;A3d?5=uP{X zNmXsz^!qhfwCcRi$>|0o4*TR9!6!^#VRg~NNq`spV-#+YqWp^p`9=f4YT0NEjNrA70L9FN?bN15Aq$y}7(@&wh1{i^h>Qgk1C_ zf4Y0Z^!fPAdV9F<%0TF~-4BcV@*tb@bbXlOO{6sOJrh&+<<*A;gDK!Bwohkp~7 z6B6Os(64MmyN}z7Kwg}xFKM8>dXbITH=^t5>BBIWdg+wUgLgB1%ffqe9IlYtGTt83 z(7&WN6z738hC9R}EyB=aHE=T=E`c@uZEb;^_8*8y$G~uh*XW@aLfwRziG)I=Ve>x3 z3+R~effBFESRvRzT8nz=xSrQU1eWs87(N0NDI--Ul=4T49DJEAAUz2OXH1QJ`o!2P zDankuyAr`Wuwd5{TDrP)Y4?BT`rS@@^P8qcY{lc2!^(+xm$1LmjGs zdM)qIVGoX5t(pWk{cO%t{(5^|(|_XHV0>z~QIXd1MYIEcn=4m_2OP_}n)$uTP?}OlJ2RI$?IXxT= zvDZ+~Hnmm!_W~NjiIX*yXo)mov~(0?sZ`%O{brS-8)rk zggD;vY$WIRDttG$DazUDg4U8Nh6?I}lGa$qk}*6>l_ruAJXS=KUPCY>YZ*MuI5Ykp zbVL%DUT#T~HcL#3a_Jjij&75Vm)0|(rMTU}eDVz~N~k)0=VxZO@#r(6v*P*8DDF0f z+x`VoOurkMwTT94IP6Y?8JiVM{eICoknyvkH!6rSt^AifPCQf))0a)U9 zv)_muI@8*Pj22`k!A@|;_S8aU6pV^t70XMGrpU4&hBfSF55upWds(9U(cXdl47U5& zT!1H!`h8m;jsY{gUuf2(LDkWxY-rHfr?(tEn^wbAzE_CT|NVmv%}LaIdVJlj{FU;V zVI?Jc(VcB)1^v~<5-49s8YLGBA}nKQtmbG>^D%XIyGsQm%hcj86NPzoCrJ$^bJZ?h zyqe8VtwaF2`yU7s8{}Tkys(r&;D~)Y%Z3 z%AXsRgA@31v1H{VVF{H$IrutJzMT;(EDs$9wDsXuXzY7Z>WR5i>qQLWO(*tV@@o{n z7uBBLL3oF`bk#bFM7uw85q|`tWB8+={fvJp*Vuj8v*O2e{KK?dEU5(bM4Mnk(nF=9B8 z6g|WizASmnAUw@qpt!3i#RNs1a9w2JB0mL^ahZ}U^J*%Gc4ZEfsIepCY?6jQwCBt< zfzz+n(0oW$C`u#JM|?t z74tNm{{E%W%U%A92m4sywziRKBsnQ9;i|uwelNf?P{D%$NyJ(r|EKEGr*X(D9;#11 z$YjuR$*82+B;$JH!7d@j33FhvA=812dfyDt<}W*iC}xsS1Fe>F&4+(L1<^}uE;OZA z%qVNx=*^z1njd2HegmrV4nuOSJh45{ERb6NNI&6cr^AVwg=jps6dwR3EZb@p>!uL{ zUD+d;7%x{c(g^rwJurRGh$4u_1 z%$+`nQ3+At>%%DXfltupTD_KrzGKama|ZFpd{rix+a;4)+QWQ`6cxoW3Pt}13w!ca zQv#N;QUV8bLlGt(7lt_%mQQB>qtjt+Y}yFYfb9 z$r3yTef%kPOr;-fz#c!&san&DKSEz~s5v&HD31qkCSZ1*d>^%Fzw&AhUf25Qd2>0r zNXYlq&He28y#M3##%+&049<5AawJ&M3`9Ocrzmw`hQW`-y1w%HF1p6&mhFN8og@=8 z%%NszQoX{D7Blvs4c0h0Lq*`Vc_1X<<-NXAjcg!B7xUPF`N=j)NJQNvmMjEL-LvI3 zoI#qt;xf`GBQH!6sjJx|D3xAoqncrJ9?&0{y3xL)L>R`CGzV~_<#C+V00;7b!*R8|i0GX-pZGXQ}sO$>g8IktBzTi z6QkW?VL=Z&)G*aYo6wOaG{$LXk*r$WVsW6|{R-apMHr*=<<2HiE!rO)rM|#Fm2RTH zXYN7}V(Vaj_}rwr$g+@4?fO$=(*;)={B(W>^SOHdr{wosF1NGW?gz+#bIV+T?v4{v z%kgM^D0DShQ$3|)M~jwv?Fb4o!`dB{_8S=oY&f*ZL53ER1XPOPR)QlWoB+=l8)0cv zipVj_3>K99><-@hXJ)1b0B-jFi1u!FAX&@ejT*p#I%E$ z`sw7}2b`0}SlqS(5%H0wueB<5UX8Z9vZDli?p|jn`tQU;l~OC>RKtc*7jPjIK^M_$%c4W|78^Ie%H#pJM0}K zf`r~jVuFR4V8#P^*NcJyb%g1HWEJ~{5*W*(Hka0zEhp8&ALsl7gT08ONeJ5@8Dc(s z+@J1A{1Up=r%+)~^x~eviW`|YN%H&@;gH35b&j0;U5?q=_kj=$tWs^(_XIyDTZIo% zDkQ;Tv(4^`geYt7&eumX0>r+J#nDezrhlLBm3QSPpvaD@BE{%pQ=_S$!g14>e2P8q-Z=n-ca1s?lmt+l?jXIk@nq=n#)tQ$-; ztD6p;!`7}GVpAEHH!Z8s4O_y~i6#_U2$tM{a`Q-&H%=hGPG@*cql#Vw+hXGCkTY-d zqgpzz`$CbLn#pRjHRM28vOxUtd-0D0oEtz>b&ZeW^zb_vT2`7fVAm-Znf3F6e4nW! zr+NhsmAls!jM{@>lNvpqeEuC>d_ui(AO!^g-oXI?D1W7h} z8PWPq|9ZZtFLw5KfQ>ytz_Oa!e$EjgSuBj%!yobtvy(KkN0f%GhPg4=f0EdR3A zXs8~YExn%MtMj=VbM>^pO2b?sRZa)S<*%WU#)NAjq+u29bql$~6UnLy!vTrGr6(gT zoSg6OXGNBAf%4{vKVX+P-NPxAm9IT@cTtDJ_>#!c&o;$rWN2j=?n41u!97t)2Ef{BH*1|%-)$m`{) zZ1TpJ3wPvY7eG`WvhcL17Pj=L^^g*RHMB0$u5)J;QcP%tME;&gcd|g~7LbeTvM~%~ z9?B;7qeP^qt^*;Sxf#K7sPuJ_YpBd9Qdh!Fslu1Xua)eaAqrZUz0lM`+~ zR4T#(H(;4=LdO6qfsAGHJzVZu2NsDM8eYgc>A+-So(=hAO@^k2CAnWWC20-s%|U?E zt`1DT{xnUfGB!SasO5zDqy%vfM{dXfMksZ>ovJ>VHJa0Cy~{^Dicn2{q!sQDLSF#E ze8L-_9qY(LPxu6|*wz|a2lP^N=SM4BZ!b3wpIi6dMWhtNKA?5uYW_fYbynjW-Yy+s z#BRZ@d&4CLO4!3od0|+Od6u(!Bh1_qs9FdmD6+)i#phAR*1Q2!C#If6ixCB&9V7q% zNVEVJv1i0`3wxVrnaI%r&cpJQ_#D@FSP$VGG^^Y>1QDY~YYiWO^^sH9k8AgKNq%?R zW-!(n#_$*?=;@%J+TX!O=5|rEzAxvIaWznh%P)7aff9su0GFm~KCkff_Ovfsudr%8 zH{7_4*5}_BL0FDm=ER#{TVCL;sHo_tN)AxKcCTu&tMob6K_#FoT0fr_me9L3G^&;1 zEH${}MNmP&`qmVtyC+Ph{BOrXuZKPWT?b>U-)UbUBqW4Suh-UJ=`L?aM}NxDze!fa zFH3+jAqAa+uM&@VaV*l1Oj+3q?`4U5`4Xos!!JL^N;PsVfhpwboO~o7@K``yZ1f}Vv9M^1GkQfo{x4f zZ8IxT{bq|%l{lUui=8Y)YiMRL^ivG}ptAPrz^`f0^thrq9B^~XN`WJp8ms3;p8ASe zC&FJ{al2vY4&_v1soVzORm9lle2``Sa1QAv&U~Y%DH39l5ZGT3!Z4VUGEo-ek2vJ? z-RZ{fw3#65c?r!tAC-8Wj4pylcv1Q|#hk8kgzsayn%%PzM=|5^yhe85|7YgPe;=^@ zCvy&pKnT2$=M;pNe7<&C==1{TcVc zcbCd1)eu(_cX&}2Y@tD}Rgykf_WSCM(3Hy!i~ChnS|1jik_a?RK*TZDC(zT;!(~(| z16++mLw-;el%s>ijAPtS!xv$}OmQeF{16a3zslKKKqw_eq_93u_wuS^qDN(!64#ZdKJVBSYY7#rh^);IGvQ+jMDX<-);*N|`Aq&@ zT=5(PdK3mwDT~_D9BaWC_ml~Hh(EyxEwEM8E%LpBWMd!E%jV1q|3RTh|B&G&FA*zK~ovX?KW>VE$wSepLzr?&Qj zb3z}RCI8muu~m(<%h2sfFk}aFIX-Bu*ENGpUetbUZO3%*s+=UqJ2b%myeY5y0ssLJy?#ei{l_i(^9KK! z+4bgW{%mhF(tGm1e9G@ifA>6Zm_L;gQ2d4Y<30J`l)VvJ|7>r{-r7Itt^Z!+?*!L3 z;Xn0J{uB0Jbl2Z!`#UM~Z*_sRb5#NL2^TFUz0!2ipo{eGw4kBt7l z6A