From 0fe9c39bb3fd4eade03032b428f6d14ac9f9371b Mon Sep 17 00:00:00 2001 From: Owen <595466820@qq.com> Date: Tue, 17 Dec 2024 15:10:34 +0800 Subject: [PATCH] Feat: Code gen V3 ok --- .../codegen-HaoKaProduct (3).zip | Bin 0 -> 26732 bytes .../codegen-OnSaleProduct (2).zip | Bin 0 -> 20823 bytes .../codegen-ProductChannel (1).zip | Bin 0 -> 16127 bytes .../V3_productAll/codegen-ProductLimit.zip | Bin 0 -> 26331 bytes .../codegen-ProductLimitArea (1).zip | Bin 0 -> 17486 bytes .../codegen-ProductLimitCard (1).zip | Bin 0 -> 16657 bytes .../V3_productAll/codegen-ProductType (1).zip | Bin 0 -> 15952 bytes .../V3_productAll/codegen-SuperiorApi.zip | Bin 0 -> 31853 bytes .../codegen-SuperiorApiDevConfig.zip | Bin 0 -> 18197 bytes .../codegen-SuperiorApiSkuConfig.zip | Bin 0 -> 18597 bytes .../codegen-SuperiorProductConfig.zip | Bin 0 -> 18378 bytes .../haoka/enums/ErrorCodeConstants.java | 2 + .../OnSaleProductController.java | 95 ++++++++++++ .../vo/OnSaleProductPageReqVO.java | 34 ++++ .../onsaleproduct/vo/OnSaleProductRespVO.java | 118 ++++++++++++++ .../vo/OnSaleProductSaveReqVO.java | 89 +++++++++++ .../superiorapi/SuperiorApiController.java | 12 +- .../SuperiorApiSkuConfigController.java | 2 +- .../vo/SuperiorProductConfigPageReqVO.java | 6 +- .../vo/SuperiorProductConfigRespVO.java | 6 +- .../vo/SuperiorProductConfigSaveReqVO.java | 6 +- .../onsaleproduct/OnSaleProductDO.java | 129 ++++++++++++++++ .../SuperiorProductConfigDO.java | 6 + .../onsaleproduct/OnSaleProductMapper.java | 30 ++++ .../SuperiorProductConfigMapper.java | 7 +- .../onsaleproduct/OnSaleProductService.java | 55 +++++++ .../OnSaleProductServiceImpl.java | 74 +++++++++ .../superiorapi/SuperiorApiService.java | 3 +- .../superiorapi/SuperiorApiServiceImpl.java | 7 + .../SuperiorApiSkuConfigService.java | 3 +- .../SuperiorApiSkuConfigServiceImpl.java | 11 +- .../onsaleproduct/OnSaleProductMapper.xml | 12 ++ .../OnSaleProductServiceImplTest.java | 146 ++++++++++++++++++ ...3.0.10__create_superior_product_config.sql | 17 +- .../migration/V3.0.14__create_sku_product.sql | 36 +++++ .../V3.0.15__insert_onsale_product_menu.sql | 31 ++++ 36 files changed, 917 insertions(+), 20 deletions(-) create mode 100644 code_gen_history/V3_productAll/codegen-HaoKaProduct (3).zip create mode 100644 code_gen_history/V3_productAll/codegen-OnSaleProduct (2).zip create mode 100644 code_gen_history/V3_productAll/codegen-ProductChannel (1).zip create mode 100644 code_gen_history/V3_productAll/codegen-ProductLimit.zip create mode 100644 code_gen_history/V3_productAll/codegen-ProductLimitArea (1).zip create mode 100644 code_gen_history/V3_productAll/codegen-ProductLimitCard (1).zip create mode 100644 code_gen_history/V3_productAll/codegen-ProductType (1).zip create mode 100644 code_gen_history/V3_productAll/codegen-SuperiorApi.zip create mode 100644 code_gen_history/V3_productAll/codegen-SuperiorApiDevConfig.zip create mode 100644 code_gen_history/V3_productAll/codegen-SuperiorApiSkuConfig.zip create mode 100644 code_gen_history/V3_productAll/codegen-SuperiorProductConfig.zip create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/OnSaleProductController.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductPageReqVO.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductRespVO.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductSaveReqVO.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/onsaleproduct/OnSaleProductDO.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/onsaleproduct/OnSaleProductMapper.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductService.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImpl.java create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/onsaleproduct/OnSaleProductMapper.xml create mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/test/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImplTest.java create mode 100644 yudao-server/src/main/resources/db/migration/V3.0.14__create_sku_product.sql create mode 100644 yudao-server/src/main/resources/db/migration/V3.0.15__insert_onsale_product_menu.sql diff --git a/code_gen_history/V3_productAll/codegen-HaoKaProduct (3).zip b/code_gen_history/V3_productAll/codegen-HaoKaProduct (3).zip new file mode 100644 index 0000000000000000000000000000000000000000..c066ea934c1a1534f86e262e138c0b05ed3e7333 GIT binary patch literal 26732 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 F`X8WE^=beB literal 0 HcmV?d00001 diff --git a/code_gen_history/V3_productAll/codegen-OnSaleProduct (2).zip b/code_gen_history/V3_productAll/codegen-OnSaleProduct (2).zip new file mode 100644 index 0000000000000000000000000000000000000000..9c44b6e311af40279ed523524bfd80938e30034d GIT binary patch literal 20823 zcmd431CTA>h(fB;yoh|>W0cU$70*FRm14eV%b?2KKkO=!&x?5qsv z|Mx?*h87<5PL4+OHU<{9^p*y$2J}X@^cHqTcE%=-|2&`mpF`09a|k0lTW3c*YwJIs z8W`LBxyH`c$-vsg-to`(7&+6s+R@9|D*ZVi|IY*R24*ITCJw4{bbpNrDJAVSp3kRN)X)Q@AERJ_&d=Xinl3$ z?F(mhulH2CfGj$>jec;d`+3W0rW@OTH;9Y4r-<+kgF!@Z2#^33V<>ALOdq){c7ft> zOOy~Hzleg>9*r{d5PM@_>SF3bnu16<#2y8Et;mg8jb3XG2rDx#mM=v75pL-mt?@CA z$Q(+s01#Qzo=P17i1rgke z7&#e$c_rnzuTGL;ZJ&UNux|}OM->0XWTVaUlHfy&0p|rlJxHLnqT8b5G+DJFdBcNO ztD@R{STa9lvSt-ZcUdh*Z&)!Dehoe%xGT`v9?326&1v&~pWYKM`5wP&4}4>wp%BNK(6EsgrIMP*#- zK^P^pmGYFfBk1Hv`*W{8ik&@qcHqiTqDd!a<>0h^V4cqDj{#TMM1L~1LPGj%G{au( z2bl8Gt93;LM6;{Q{;h*{v6!yP#zkul@NuRIu5f-v3%U(D&~(bZ@zIw1;`Ms`rTJN39^OyQ>>A%F@yu}`;32Xm4d0xv-j1$w+8Bs zyTD!1#L52Ou)eIWBe$uF(Id9cr`}$mDw0zPx0{7&FIEBA?2z!r!Fe3;;`LHYo)iLz!z&z;;iY=2x9wpN_jq1?qIy`nE2>cWbx!wzk8#qi_ zK)nPqt1oN|HGFGo!}vhEZf0vq7dc&4Qxvzj;H-5K7dnVn#(B}GO}FzY;8TP)$Qy}K zINP!&>ZTpR0V-40HO378c39_^w|}k8{ZW8R+KH5sU={{e8sR{7{}`#hAAtS~w*9c7 z1nQFLQilc63QN zKK@^(u;KeMZVFy|o$=~k1Rfd$ZuJG@baZ$9%ayrahZ_$dKVtK0`fteJw2$AA)nP2^ zsJHYj74sB*!-_RYzGADba&_N1##FPrvsq!!g;~#UBZJ=#duITVXL+6PI_*x_`ZS^Q zXZPaHOq22q>CpwfQQ@-gA{uW~6fX8E1=e;_8FPNqX+Q05K1~%kUAxSEfb@BJWXK9< z-QBS%KmUTd$x6ak7qiPcy8L}erRSwGO?!W5oELhd_HjVo0Q1d`sWL4u_B4R~J`a6< zs^RkGK*~4B+zW~cDf;$MPk}T&R3W}UhbV~4QA}D|r@5Zd@O%Yo(K?ug-E1)->|az) zPyWor(%n73wBF5_oy6>A+rriDt*8qjy;-vZ^>iXiT2dhl->9aO6J)8qz114=Tzwb9 zoau&kOivWOpe`FP3-w4R=nTN>f^>-btTfX|wv3)nQMyAWvh;x2pj!+w2y+Ff%H84HjHI3>;k;>lx% z3Xj{9wDP5awN7t&2qYO{+=h)fW2z2CN#AopN24`@^y{I`$-#E`zeZ8U7jGMZ}(902tkuh0l*c85M0m_#bzL`nB3U-8iWQwuC zcXDd(wQ-e6_A9nea`|qF&#aCWH<5f_M>%w2W^&@m*o8@L{gp?&5_hCD%~Y9WwH^mc zMBg9E?pjXe1U>L!!@$dfGFh-@z{gX4w6IVaCc8`U4{F^~Y(j6xGt}jf)*xIfJszNU zwN9)${S$orb6yZPc6YJ2h9_aXSH+`g^bq|V6Q7zTm%cCA&X|INjbgQ>)Qih zqnT(6D7W+ld+lPO>&{oKQ(=&q@Hc9gWQ~gvn6>~l?z_3g5{!1xRMz{nI!31O|7|b* z#j61_B0vk+?*Rf+yq*Qf){d(I2d8~DID0m>g3%&KeWYVDW@r17jH%F0kJg$D9ieU$ zX1Tas9a$`4_fzYm?J1*k_n~4oiRNudfKAOd2DY2Xg1FDXzRz(4as?&Y&xYE_RQBpi z)AyN^g0TJYIPFg4R42X{12jE8{~jvQc`EKJKB_tELaSmOxzW<~;Q%}R;&kjMs5e}Q zh+t>_D!s1P`?S3LX`f*m2o5E_B6F?2H%GsNZ|e8xYw=|24ws|P5!I0zuHX#jSj*rR z=hI#bx`&cZYxntg*Slaj8iVoOV4n$+OQfACiHb7X$J^8TQf?fVrMlOC(MsadBFYKJ zpkgB=m?Ux2`W^S=*BjlqufRzq-LvAAs>qeCUv$aYM(=T!GJoj4u}*6P;gGZ~rDJm(?6MBzE-$!#sP zSW}brVLu9b0+zn$2>F*U9Il_v0U3R{n5lk z*QL)G0m2Ihnm1*Rmb&Vn?91Xwc;mDzKpokkJ4+p{Z?%KdX*lDhON=O+ST2XS5f~-o z=--IVt@p}H*FT$8<=+o*=XDaoNitiW&qaOrT27Akq-&h+KoZ^!-fLP{JS@D+W2F|u z%pU}$Xi7u13K}r2n?7urV}dTvmm>J}z99cHJi4u=$8Ep>05s5lXL#cOUva;GiF1Vh zM_BZaK&M-6)((dirAKVyTmQ1SQ)U0Au#`?%B15GdrK6HeI85qjDlI%Qz23@`O+y}D zTavyh*^fvWPFXNOX$(-gT=|1lTJjq@=W-i&_R6@i6HpXu-00o=`t?0$cP#)Ul%#+{ zobdn>gh6IQF$CP2jGbA4g$6k5Lj~IibAV?`jIn?m-I0nkO>EYmE&=d$d)_tY{ zN%0iXT*-tvVmkO+#O*;(8dydNrJ8WlAH!;yLW#hR;zeX%r??gFWWXC)VVk6k(AoZG zo#!4F9P8@y1c}nm43Iz-C};^#H7r-+9XV&-bn9k0o+I^KL<%4v&bz}|6tjf`8NyK4 zapoJZxP}9B%Cc5-Xv!NUa*uxOv0!r&782?eDyV}yQxOUxChR3x*H*L>2RZ@F)BE+Z z5O1oTE;#axSexoxs6*gCBnSZd;W-cx6{JL+@TA5PXjYgrcj_+JqiI3CuKmEU?Bo-C zKz1ttTK_Y)1B6LMJ(yetw8%2sW(oBXH zTBN`%Bwsy%*a(D9XWj#6<}d8gJtx{TDT^Drvz|$*f?1Ys-Yh%lWnNk^PU9H>W`nd` zmaLK13MiD7@}qd*FYD(1@cld#_&QYhdO@Kr{0P;%vy=Vucy;=EL~jP03O1f&51DMm zeP%j+kAna#uGH14XRNw$Ugyxe@@#DxENE>bXy{&pKtnE;r)&Vi@wP1xx~YPdtbPw7 zS_j2YZYCO<)hYq~ZO^yFuh_>}zus>ESXoIU5q5zoco#Z*$EO=}x7XK2rCnPs;Jrg$ zA!IU;#6+P+gSskK)^^pUYXM{bru~w6*-e`xS~)gNL)&urX!ChWsmdDu?I&^5X2Qcf9JJD}5by z#;7c^a!e*CQ`?MJ)|NC=rN_(fxP9L|ecqvlo$>?NLcq4{6?uA?x7ghFF3jA!`GV><*#j8UJ9zz# zp-BZmzpbi(ts?y^aRs^5?QM9_2F-|*sVapn`pXcGlReL6cX9&C(U1!;(tjT*Fm_K<_B;@k-v1-#=7mF5KFi8% zHz&v2MKLqZ$EXW!R-HG~L^gZ;`THLs^!J(CP1qm)#`3rPE%g7I88tSrrZ+ZlHn20a zH2I?t{i|N|FGf`OpDIyzik2L<7>eI+{0lsB4iX+3WvobYTbp8)ytL6<)JSJw_wB_D z6Sq`kfjFC+IAjq=T3eD}rhcW(MIPEdM&d`>#qj%(-dH{QLQxg$r4Y@!=W)Ys7N;7v zy6gdoKm%R5v?@Zs z4D>K2+WrMayYJ9+Pj@V-6#27aiF`|8ECZ$zM4B;kc8)ed7tDjxF2GAc+zW+kzh6!y`%8OT-8V8l^kBL|mg1aYv+YQxGsWWuA0^VSy-^ z?SS3Q*0}e>;!agp%S>H^otm7Nc1NQ#x0BUvw{(pY{gv%)hgRy-b4&n&>*0yeZL>%G ztj7o)9VfKh0o6IAF27&5%SplIoMqIl_32n(nL7aR^KB*wF+IWoT17vL9njEmnjm#> z8kC`W04$PV?}|8K070!9^rzbeB7JM-g+CKH-HO<>mxPzVrQA~rpujIi{E5L3DZF>0y?0-Cz z+y}E({Z^n|=fzJ!zudrAGn_&>R3n!ybljVvbq=8r)=v&0M2ophq&-rr~SR z%{;uYY%!3(9Od+bvwXs!gc3a~dUVwva_Wx~RSbOoAa-KEy53&!K?)HZ!8Ha6XY^zC zeU`1}z=rt63E6^^rzxyi-qm|Ed(+8ngOjcTIw1(m)n7>_T|@p1Qcc6WvTctwMwfFq z)b?v__WLu~sRQyCAn4+!6Cc9GZzzcGlQ|A`t|mGawe9VLSw&LyO32WoKG)%Oj+^J$ z?!`N^d12Pkbi@=8CsIDWj-?mAvvsJZ7}d(FD~}tzzxX69Y8j03A43TJw|p|>|EeLh z`RU|f{dYD{#=zd*#PJ^_GCOhFc99=p^g8|y&NHge(!&n1LXtk-4un1hN)v9rz^kclz#B%qZs_3i(i5fUpzo7{3bC zQk;c?WB}!F6oI^;Dyn0oCMtPF+pLL8i`KEuliw_?((h9Hn1q&sMEXN`PSX}X#2dmzh8hJ z-JV(3G1nbo`bDFVGKIlepRE-_A!K!eG`=JE zWeh>nBmQE``P`b^>fkH>{&xV>4is(}1sCkkRiEdY??0M0ID~*~|MDRq000>1-^Do= z|7W;#G;y+XaWpb<`jg@L3t9gO?77=mtHkfxA_<_3TxUMumU#9uvvxCrZ4}8PBiES| zmZzRyg&;lWUJxC@mDw=T7JymgspK_FS|dx#D?*PAwlQ<-KB8v18iNuQ}qJ?^MY3J9?2PZ%39D$o^*lP$@R7M9yfG383g$Fr23T%2IBz-lchQ%_ek0Ix>Fq7Azb zmEOJHJNaez1yI~&`fgSJpw&sp*6Dg4?B;62#M`$c);?Rvj_1bmT%K{J=He~66hiRG zf&lhV7t!EBVY>bq|-Tk?5WryQ&5LXczC?y)6Z^ zal5gNMXP`j=q#<0)J-PGWiLeBgSB$6g=51LF`c{Go3cXfvP?|c+4Bfxi8w5arPljt z%2f$Z(CqCtM^2vl@HSA2|E@EB4oAz3$*zyQcRQTxg$#e+c9){O^9s+K^~XV5xz=v* zTI9aw-WS_5TfbawOzl{+d0Hh{=b76shZfq*FEEWK85BYapnU&C;NLnv>ir9UA|jSK zXMgY)^e4~qALm%Y|IhIEpGYY>nK-&y7@7PXGL`;$iiC~5^*>BwvC6h2wg5&q{2}hK zBdp0CK>0A16QMe?bka_+gIiSQ)Jzp~V`aYkFOmGFVponoo*h-mQb!3E>rqmD?(k5VnN6+z@xiT_`22*7qtb9TFq?!uY%$k`fcr=S!jy^P z8BqhMG--p20wP6pL?wtoifhgGsMv}93B<{MIbv=JCc+CEkMWUt#4SWWJU^;9($^Kz)5<@HR>H>|zG8?LmsvKJ8vU}1CtLY}?&NeG%b;S`iIBsEG z$W6gZD>iZdkqTt@81pKu=oYnhPXkyHv`ph6Vq-0ga*0sA18*pIH!(4nd6+=?3cYOm zDtb0ZN}ch1g}6$iNOk?32QH{eYMA1}#SmQi+7+r)M@VG=*9Yv^dxzKSYIeTx!a#m* zj?Q1dA3jd(_(&i!g<`ghakPKSOf}8fYQRW+esY^NRP8J&M z9ZS>Z(~qHMD0gQnPFfc;N*)d80$<-yXzZ(VWtpz)!%vC`MaFj~(mJPG0F1JgG&8`^ zw%oid9zCb-#6DNBCPtrv&NQ&QN)raB5Jjq-AmQPDVRdtN_t3=OJ^Cm}C_cE+NQ^P? zDNl@$Z;z-0BWJO*nQJb-_&%eEttF79Mk zV7#^{OuITMM9`@jNG`Gp-=TZ(k)QOV^7vG_nviz+yZ-3NUh`w>FJZm@0{&|rf9B(1 zBmU9LRv`aw9tZz7n8*K|!-=z2$O3<)dH)Z1rz%eAFTb$EJq7W)x%cxKmTY6!9jrUrtScZmKe+aopi#;SLUBCv(w`+NwaZom@bcITp%CWgK}FH322KDQ z0MYzVV4`_c6_vO=%A$oyvY^M%DlH|5HF^>L&b5GBS5B##bV~}Ew#(D1&)n3OSLQdb zMoYk>$L}?%0Po_Rw(jt+3`xhT#tDYGgNYBPK;|E!z zVo#$*r+lesgqH-rNOO+$wKrp1xPGo2T_?Ib`{0(gLpBqs@xfny4SRK_d;j2Ho|H=3 zW82Ug7tkOIpLZ|2U zm(c$Bvi9)lNNCk&DDCO#b4$f)b1MuaaXlE36|LVJ-|&0_{|lPUM?Z*8|F{^9zoj_Q z|7B=8n>acDXR22IYc59l=^=%u=r+?FVc&z~HA)ZL-TQqe>4?-oRV5mY1t1=sSo z5Yx-Ek*Zar3q}bn!gy$jjUW-Z|zLH*XEk#>t~< z@pT=Ota_H<{?Zx-{{9Z4V-)06Wg@d(=2~%Sv}~i_AqC03O!mpz zMWP}!3KPO$i+%Lv`#uy=5hr_|Y5KGm6EHRUfd+_HSSD$d%E+_GiJBq81B;qKa8d29 zB$f#ChWiX`5;ZKKbnm()#KIJbWg{>Z6+eXAE6f$HhB&F7Ot^y*>Y=_dN{TUoqzd_e zRs+Z-?kLgi!kRuda8|Yia)-KPW7rS?&yZ+V11)l8=kJq1KvA?Rul&^AILu*|psT+b zV03e33*reS)QG?$TlOALqCy-k4_d}CErO6U$d!&Ezip#ak5X)ocLCsvWldKtHB9Rd zVB12PuE^LgGmtj|IgSDtgt3~s0HM$b-W$?Dj)-&cjR`>>S|*LjH9!Yh!Z3Oa^XqB4 zzgl(R82ywSl&}@V>(8rcBK=h|*!!+c3j6T*_>{-%Y$C4G1QoF)*Kd`Xr|N>YjJI2t znsPaOK9lSATWhje&G**jYJ7+EI8#`+v89&A8wzNm&rtbDW+zbO@20VMFcZC@7~@~}k< z9)3vYsgS$>jDm=$_9ihH;1I-KlZ6BlqYU9-q2SkUA3%fMc2n+l!?m7MN^79Mxv@K3 z#_9$7Pm=b&o$J}SUn|oj5A1|LdvYPysMphI%u^~%Gp^o`&o@`C;8z3H4wR|I2JsU6 zm67rbmas|??&3C~G#pjgexF14Q(r`Q1~fq4NQI?G)p|F$-fV8a9k+birbj+4&&~`; zoy@0v?gcmAHnp^*4`|cjKmNcAPgUF#3&z6lfgx$W9dt@tGWY!X990st?tKbdDU56>Bmk#{lS@CV?-N|;s~#W zDHI*qdv3=FuUTW)z5Z>s`11wrHW6`Scb!LFr>wVa0v-d}^ZRPMdfVNGugz@N$MI&c z5y9{N-Q)9U(RhK6oMxY?*G;rdma?gERl}(90L>D6_u`tz)#s<~?%Q$??gaT=Yp;Yg zLNu!!=X9Zg*A9rbsUkQuDz(d$6Qj!-H^IG>rq_hmsT=zxk)qR;4cOT{0U~{GryV?6 zDiLBb5MSB(vEd|2L5QvFZ2?;L6VhczCx-l#Or!DUEgU#T`34jf zJhBTS!i;yrn}H2zkHBw zZ^G~KKmLaT{qN|J-+$T%8Q5F=mntVsY+Y=e=tUeI?Hq;vR9F7V7&T4DgV{)`Nk%57=k z-DSSC_7>f8IGFNVMR;z!_{Dt{8^&i5VXz6$ZDMoJ%4E4XXPF-VVvA!F7nUby-YjXdcF z5nf5UL&H8Q#;R;NRdJo*&_Yy|XUxfrTP!Ll4BLkDC*@oXs)&Hj9MtM0zYayJpWY*+ zvom-{e-Z`2S6c|M$)3Q)T8|yE8d%Zq+lW|(UoOBxsi!TZrM9yKQcQKzLuN#yLUgI^ z=@=w8vB?jI>IxjhQ0ylW>`+)^9TH93#nrmL&&b|LBi*gHg{Tr>NP3)@Sx4`|>Dnuj zf;IctsAcXL8vYVYxlP7-nThA|CI={OIb%pbSU>kwpEq@W+jnl%w z(-Q8ohFuH7>`%W3o-WUR9@pt$TZdY^MDt!e`97$hW4C3^$TuUc-sq;XslG`0UVCpr ziU?4nK&wrRO210wag-)Mvasr8=W+qw#0q^Xg%`VnWpejuaNbnhGZ1pU_}_q=8ofBb_KO0d5}3)H`%#hmFcuv9Dm zBM|8UzvKJiC;>gqqhxpeWSQzpHyL~1bwvLL=$ z*beekc~b`j%zL;X-L=898vI@)^8>pMj@r8{F=Wxn+rDG2DzRnv;oYsqi?~D~ z!$O*icqxf;9fP`V*qOnw!*2w8+>2oWqi)Ea^dKvVy8uBO&Z5YAfoLiKfOyc@Pg$$n z>=m2XJ_|M9f%%t*;jZN5zC0c2Zy*_>kW?!2czK#4uc?qU3q=&;skWw7FjNxppKSgu`h#QyNQ^WBpVl>Tw=x)Lr`MFU&AnBhi~ z`p@d-k-KIX*FUP;+TVsn-2cNRxmeKtqv)R2)y0JQAI`_s!oHMH-Tp>O;1Pkr!VHiK5`l>rS3e;X3K^|)=7U<54FnoEV_<#cXH4P{Cc z!GshVc|1x4f;#?&STbcTBm&3}=A8P^a9@MjZnu$~db2FZ>J3$ubI!j?@ISZjyEysl zEGdBcKRewBo%iZ$5Ub*Q(*yb;_}?fpMXnx$H{j*69?h1kLEUb#CQLt7s*I&N%J1ld zghlGA45=z}CZD{mv*cbM0xG1`DNA@;>p2-o(gG}5SEaS@&|(6L474pT6Iex7>={L* zvDwQb?BSYXCXvcflzMk}mlm#>UqnqzIB?A9ODgPAvNF+?#u!`*)0jYzV>pd}C(tGc zP%dvxx=m&nB%(p)*ISD2aipGouFM?o+}K!I7Dpx}_; z;S3|U!~>r>dy34FfPSZ2+HOwteVPC0yms>h)+bJ~Gl+)|n8zhLc|xt5Y3Ehb^7sW@ z3`zCH;Jh|-NeD^#i3;4-wV!9en_r9`Mn>ON2hhjvDR zdWZLhPzodc-c8K48g2)%+J};>{lO}Mql9Hwj#(v;TZAUPW~VdRfLg+ zYg0!h4;)i){wPYh{e0^Oqm978r;BpX6`FNb2<+($6mSG%C{2#)2_hhg#zHX% z*0NkudY$*PTft(4x>XVeGaDl^&;5lEGXX(T0o8FdfRmBsi&%JKzEjsbEul+B2t zhZ*RT@xhk8t@(ahEffbWm?69@y^r|&5Zi=0c}k3fif zS}hP>>O)Dey@H{KkV?u%I-Fxu`C~s;qqdaBxL&d1EGi;>M_( zvkeVNP$m9pmp;VUlm*?SG6eKnk0O#L)!Kpz)x4C7D3?A+*hgP>>)l?}Pe|0~X;=GWt@OsP3wlJKe<@pJ<86%#XL)NrX1u zYUW9{rWFK0kb#|VmV@ozY+#6}j^BBjI|Amj+T}g3a$WqDKoUk`NavNa+fqu5`y|pJ z8WJSdmem~&qd&P|9q@>y$x*Fy<|GOp4(O(qQt*cR!Crd{q+!Tm!rp$nJsypZ9Cp9` z4#WsI>Y&*l3`jVwB7jtkdA~C>dee;hp_Q0lz~7F`7_2CPhAhzLINR=1SgC#*Zs66w zAX{YXec<&yrx8{O-dALGBs51vn($=ZbNk?-mdgm@fC6Oc*Dl+jJrktL-s?h7yAaad zsg1e67Sa(Wqamki?A`yEdT#BLw1V{ zNp)k8!2>og@mltcxp%uG_x=PvItRk}bgb=Sm4D!>tZ}br{Jy6D4ycC02?EH~z=l;a zBp0MWoM$5svCvInpRD-)E}gJGij0DH`abBG_gvlEjmV{XIMjN7AoO6*izg?<;A(Gv`Idgoz z(R;FMx8thx>zwAbRRlPcm`A9NZweuj_o%(H4boi+Og8P66tl5#ifiQMs5zbJB z1ajGK!@spqk5+=No~XjrT?mbMo!(uRjyR8AX8fB<5`SvYx>)^Z2KS=>c7D=A|FjeQ zw0Jeo7dL;Wek=|O-oRcQ;d2P3FAt_X1%_kJt3949z>gg8)*%<5iPqygTZ$bk(pJ%!;y@rra@;&GkFrt~&ys*ydjyzo7k!-R z#m%0n{jI;Xw3gL&S=s#>?XQ4s>~nY*b2+`qy0*JN2eP$ppBvillrL?JvbOwAL0og$ z5qPXa36RV!nbFHU@7t*JdUU@dN6@^kA0hHfBY_%N;aZ1MIF}4ESS?!<-JKR>ZB)jA zxV*u{A0mLzJbm3C;Kpl1yF&&re;&SFf>m{;re*su>#o z=>QV|VkL--cuMy~43_FP`q7M!aZ0Pi#YoNpj1xJY2d|>s*G7;Sb2IKAf?yNIrN5Wq z(MIu`Kt@H`Fh=nO%gOJCh@J{Q8mhMt4g7_((wO19_Ffw3Wq=KR` z?L0kKP}j`@d?1Icz%3L!kFO>-e-zZ zn*atossQReE~o#g^E)I1n)>J8#ShvUGag+pOg^6Mk(UAZT zDKrh*+NTCeu~bW^fTHrNJDZzq0ag&~^id(ASwqg$itFCWUcH4v81DSr@Q17VR0!Xejcr6@oUILb(l~N>d=RqvS<6^oLf>UoMSq?QX%@&h zD^#(I#3>-t1=Op!gted5+Ja|v6?l7S^7xP&onHF5{r+|#_r#Rug(pQte8|Xi4~dSX z9H}nJ+*@6p=h~o5UAwF&gJpNsPAH#Gm68YWaL{X&W&I_M7hyVqcz)w)X9MbtP9t@! zo26p<2)-Cy-rYE%oyZy=eTfP}(^^NO#$G{`6IjyB%9cX@aO7xoV)J-o(A=Ptxl=to z%|VK6^u#uJ&?{MF_K=chSQaob$2$~LKx3)c$c1IsXEeYqo`I4^z{6ZiB+D;SnTqmG`BzxG^p@Gf%EvOHnP+N8!${Yc*_gHt}csuMD|6i z!4lNI9|r|;rX(1r3Cip(&!e%dH^mR#*dO*AA;m6&N;YH^_4}KjiOtNab2gg<5!59N z|FW0A__0Fx5pq(@3gY~|cjcK33;F!<(|3(SOqedV*U+7pQc{f&sBl**^3lN%m#gE} zwSlowpLiL>7Gx4?5PnQLzwam!2<}W|@9Eu|k#_R@ZC{DcHaR{&!SE@dF3?heWbC9~ zWT}+zw_VGFOlZ?!83ju1WST_8N+BZXlFI_oM526R z_ZKgiQ}f+a+6Eh2F1Ue{r0&w5W{8PwSD#8vy5j}W4*<}1c66AG89tgDs` zvP^WwQ|b!$CC)aVygch~naLZGM!glUO;(g8i-6Ua=_9kV)<5Ogf^p`z0Z~7Hxqd!0 zdAyu!n0!)cA64Q{jNBnUKpWZ~H8bj!Aekjc^Yu5?*QxXP2pr?hvii`h>dF9VJaFOo z9X=I0X)o_&oodDQ$>F^q;$*@ZSM{v;?f@-j3@sr3-m!{PrkLEr7*~$D6wKfknrKOk z?<=&m&k)_@D}k{hq`tB;5Z`!*LC=EuVH50<*@Zm}!AZ}UZxW=(96+=J%Wb^faSJwj zCd0zW!qE3exe-)lsq6cX3xuS8@yD93pb`cwNrHZ?M0D@Fi|FOHj3)Xm zvs3||gFIe&?4>slrVi=zU`AUM?8i1O1^4!nCJS2#94$MDN4HEkScibQ^66ei!niGg zApptw>me~<-`F#=iv_;=_zu|6+in9%sO$+W2u3V=Lsp)A0%I^L#YXI?>ugVLmk-Ey zD7fNTx${F!=Ee;3e(r5K0^>^_cQzFWB+4f}JU8j2u2zaUjbRBdABZg{0&cR@bUr z_ciNkH!GD;=I8m<6b5NC??1)_wKQTN&_x}W3#cl#EP)1!%#B{`DFiP4!ZWo}r$<6dIBy@@VnEnDmoDWNlR zu9G5QHECZ%Y*|f~@49HzfAB|TTmqM@?fk>>)+gUz+O(iBhQ$X206;DA-w`g3zadvMLhR?+!u<%IVihQ(kfu_WJ1Jdeiu^F~U5WSV*KYOP9r*4oSrSw6^E zu&+b{ijqzi;)od3y1ZIuX&<3(GIxFbk@pte!z|TrHBCMKuH}yBWQX~A%hTqNW(0Kq zkUVq^$b@4uAA7f$MU+{TEw~icbXS}#AzT@1Ji3BrdFvoTJ6i}|Gy#$c*AbQqVpcyo z577fY(>RHFdwwVo@qr_qe{2pM(Zvxth*&(Kr_iU7fm}HYc#)AmNzb2RCSJf8+IFrg zVr&zWNvY>c?fAtwVu<7)I2FTBG~7a(C(ES0cOtkzob`uE|XT z$I~zt|4hd0_DZ>41=wqYwhw+)sxfn|yZT}nDZ}zuno$DAq88Vq&$^SAFGz6e<%E)k z7cMH&012o28^*)t-Y+xqX+DidtD~o{tmi8UbO9A{B}sR3UMl+;sL3qWNJj_4wAvij z)B!T20%|3nCh3qzXE?L`Qsk&~5T#^7ilhD|{gXMKw{;uacW6}K^1Luk>p5pS>`FAv z1H9}p_V3`|Wc?#_Q|%JNBF`_gPHD0rY*UqauHL(udh!rtWRTzf;ceT{u+PRaS7?2e z@(6{73t5=wmg%hu57b&vH*uI)uXvgDikEM@mzKO^wXNs9)Nw-5p+TE#U9%2kM&{Y- z{Qi?WzqIAmRn`4}ra%-t`%P?gX#e~PnN2`exNab853~HH(zBU_4L(0*r8M`+ZNR>7 z)S?FGsz$eYi)gWi<)kn3hp$+R5d~~|9ZlPLVr#8BUiCu@TetHnZiHT&9Hpz-f*kpR zn^>WCKp0(pHY0ntiAmicY9iM-TN~>uc1?@6Z9I9K4jb-Nc4)7|yJGoNrbtgcb>IvZ zo<%MKnt{d0URc9ufni0^g-*0Kuh#Tl9uAuKH&rmWBOAqpG)7-yR^(^e8`#5jM4e61 zvOLHnA@pY>!<9nt4U7!Wzhfb7dqv^E1v2Mk3|T{!V&M8=5(29xahV8Q-ELA$M3~x@ zTQ{~Y-`B+dJTq;bf(}m&y_KQ>8EXyUWr^tth};zVwc+p8xn3?0%7URT;4!&a?`Lqu zb>^L{Idw(NS^;&bOj;x9B4?$0Ce*4ty3pICTw1$OcG@gy;=t|Ry;-eHPS!4aX6BAp zd{)XJ=sodM!){{0!5Z{h)@n%kmpQDbRJ3V#uk=$`MQ@6aV4)(gaPn2NMC15B*J1hL zlCh=#DbI`iV*=!*0D({d{%7x=f8XZhua)%wy8Z8Md;Xty^7&sM;NLe1_^TVs|J<(s zc=uXr;?K^TaFXc{{Uu@ePt6-2O% zrJXi{7qat47J3FNk74BvvXc;IG9bDOOUA}#*|#B}`+4IB(2gGp(ad|;(*Zgo0INqk zzBY4EL}a$(T=>zoM2FVe21-NBE*K_xUK&8hREV5eReuypnAaqUIjvseSZXe#XTY3i zNmzMW2ac^)E3|56y67LfR*4*0B`D~&%q@%o<6hd#@~xw*2y`KL_*O3eMbGDKIjxE) zkdv6ts-r6TLUjV*sW9_(v#_yNe4UPSVGJQ@l-dA=1 z{hK;fT^zc5RkM2Q+R|e0Kv97pAt8YlN}^PNezAzRV`qDP9m~(=miqPpgU`k~mS#HC z|L3nh>zcSw+uG<+o9mcZP@C#F=uqofP@7olS?U|u{QmdUzh8p-_egb!lonvM5b_YE>Y6nYd>E93ejCCw53;@zPMh3D5){0V8KQ9|Dt09KNgX)g)gy1V> z(&c=RiwY}3Imb}LXKyl*+A!h zdJn^-$M+6O`n@&V@n$1BNLNG{^aA!S#E;qcq3j^r(7Ec+YhcH~2(jc!UOS8ny=~4m^BlSL^1T&*$3A#J%3ZuJh-k zBfLyO2-4okjs0UBv*31h%weXse25-?XfKcYcHBJjLYepCjl7#;`mzmI;>NlStQZvw z{SEdoPdG_C%TvvX+OTGl83OrYsc2LFJbKLRBpGVaf__q4I@IZSg6mxDt4Vh@3T|$4 zuxs$+)M7e~uuc+60EQ2Wok z-2w>;RhJx#oS=Os_#x#>icg*mZtUp|4cA!NQX7H-eS+|3xe>r%bfwzkp=I-)SuOZF z{cBT==Yn**+9}&^GhbhC4K;miylA0Jc&fL9aE}d;=rAMbBqoGD;0rgbRnKLIM$4ch zV=PT|N2Ok?wik$h8-wYMI@QL7SUjhqDe#)B5vp7$&?b|G#Ho=2PvsgnX5#qpb+hae zHV`sdsYO*EgD>Ta!IpVofWrcuc4|70)}R-P8b5oHVjh!RB_&Z&|?lQCmU9z=3cJj{iAI)Wrs$_Zs6kJdZtrlLr6pVP`Fet5>}l`yb+iiV@`D4>7CNdm@>G|_r>L({!u5VsvIyR> za1nJ88mNLQ!s>u4AgtNacvFF7KXvVpubq98q(e3R-21@g`CdHH*V=i~kmhUg;79ZH zDI@UL+835P#Dh^jn&m`_b)}Tco7kxz zAe>*naADO10_ZvhAY6M3pAYtrZ`ZURtdl%B-5KtkS)R|s>$gkgAHFs)nv0S5lTPGo65_FMbP59b zJAW4T|K6YdIp*^H@96wn&}~G?N?zg}gq6y-X zs8QbDsxMptU>qRej^3Rj;+{Y?r-G8sYMco~C!fmdET}p1oFpiom7NmR95lh8X(ME@ zG+e_Oi%D||B+42Pvl?LEmGf>bmcook&J;v#gkmFF&*4nz#?V1_BNi5qO#0FzWQTVa7#t}QLn9zRfc&KCu5H5&A1vLI-Y!5a<}Y+4 zXU#?g?QZsc;dD{vP>MNWMogfnCCTYSJhDx8nux!ePeozLDF0pk7N@@QhiH7S88$o} z!MrUQT>+3_M-gcU_t1SBR5Sy)lr-q8L)r9;-3cIQ5n|yaGL@dH+8S*|*~#FdZ|3=T z=Wc=D<^3lY@Il>k7r)$);f0%*McHg}p!XvJ89~4XK^76@az+x%i(nTgOE8Z<9`^-+ zG$V&k0Q_FdVP63=(`px)ZR~OjP?Ayo47XpXvF1i`_LbH z^(aNbs0{y5I?B^$_+1iOFB54jTTOw2g2X4jW6xl`g`vThv$5&x^s}%TDiZmml^qLf zOX)}c^D={z*%!aQ1z=qHB=k*`SVrm3yMjkh(88?j^eo0|3dw!6NE#AiXB$^*nU>HC zRZfzR<%)Azw2i?48Kgj2(=3XBD6@}#>a`J-GjwU3A5WMH^u-=hve}cMt8mC61zzWk~_j{8^Yg$}S%s!L^F5ED8-g+jN!9f!m*k$D0v_wn7!J=1#3R z>@Xoscmk4XCgT-d$Vt~ZGrzqz?_Zl|D6~4s#Se8aCYVJ(7AD-YV4BIJm;bWx=>#BT zOV<>#G52uYcan~y#bmJ#SOYYDvka^$Y9YkTXs!4G60TdqC|l8&;o&w~e!m7k_Xt;5!yuqZ6j0rxc>x70sfs8Aw#aWE(lkSfyO zxlo^fn+w&~0Z{Af*y&j6ni{;-EB{@${Mmu>|6Z-c%dWp=f`}dn+n&moGrKzP+~Ig* z(I zn_83acMUs}E!lZf^TrVEt3MZ2CH0uE6N0dPyJYExBTNBR^XtwHrg6laU5EveO_v~v zfm*)sn+byHN0mq$qatL}Pt?|0b|Wt`58Q~!^26b;{p9o-&F$|iL5RDI%;~U1GTCt1 zR7qp4k==!IdJU8K&_WvAeG0Rf_8L|kb?oBkoRcJz!I&sg7z-6AxHTyOi*N3rjKC5u(iQ*G>fMkmX% z?DJ9Q1r9htj_;fwG{qw&D>K}oIIpR1Z+yoebzb%EPGMI~_<$MiAKap!w;qSTUoSc> zz-4p<%4eIlTebALtJ(LG3nME-o~q* z*ruie`kR86%;y~Ch^zdpz0{S0Ae$W2r3fRrAR)atB-gBDGji17fDeK#1YfEhCRO%t zPYCz%P{WWg6IkGvG^j);^xDwPhW$B~566IVrOcH zJNbz4boeP5%lRkH-naKtetg}yCu2kK(;GRsmh4lsLmRW{AHtw7=s~ zwQVNHhVdut1Vc7UQkBUBaKXrfvh}ODSeW#FS_p`D(0kUsH-{nG7mFe(%H;m!(aYX! z7k=Jrhj9CcHCUsZ6(iQpqRoJUjA9~|vUioGI_j_QezHxNWCOeNEf^1_EZ zEv??+k5cG)E5P-i3j}8H;p(946obuuphQi9oiQB^`%61~YT;+BEDU!?m^*EE-Ms5R z^FdJ0)a9xeN;iQef@P)DF=o7B_4o#%W}&uKrqlZ$m|aVnGw zWemt_M{y9-R471W&PDnje(2N){DCWMBztwEc%I6o9-X|iE1b$CVPFGDsq=EAObL(s z(Dl@cJA!(DwpohnvNUF1Lsf^4^HIW!bk7s|GyA9ShibC!dt7%`eJX90_nx!2!h17# zV~LyBMF%)XG)A_~E8$!!uMWG`3vUQOMlp1?necYGVwwf9Cm z&%Z5#{QhUe`zLyjwgxs1CVB?{fRb{*e=A~c1^CU=l`Clc?B=*5Y;%olF%4`(^oW{c zS4pQ%6!bRItfrHsj*J0}3>)F50)2dnijF& zh;+?w9ml;4w%Y3GH696AJ7|dl`ggVq_OLx!y|97W3%q5%SzlKe?P1L;a#|>NZ12-d z7Q@88I-x+Prq(r&M*BNropBS;_KQ21!_L3cH;G#peBVRt6C_I#&4A@^rc4t^8e1c* z!7u(1h^Q)+2Nh?!E9T>;s0_jREgHhXilqU8iD(jU|0JgtA=ca&dfpi-I?7lv7gv%Gun}CD^%{u=r8<=y{*HsHGO@sYWV* zF4D)AY>&{quEb?+`(F6wuimW#4YX31P?k9lutVn=5$2wE9ew9+iaAB33}fUPLtG>{ za{b6v-&nQ`;^hqGyNXa>p01j8v!lknLGD~1nmwIp+-|kcOC3F|AbH`kUZ0)rj`i=h z8WVSnsPKgvFd>X0GmCn<4nlR#zAlsP+QJZsmJ2%KXV#{F-W((nhNL-FN$LbFf)*7( zHdMtVq=TNix_G;w=L};#$f=nqnj%eSSx&rQDgHg%@<^S$B5IbF zq1Z)3)ZC3aSXOrYrR@;!eLq1&ez!>o0#mg*QypXr*Q#h@GPo5$&w;{s8$jWTH`d8{ z;^{i=`AWP7sntdPGL%7{H-QX@K9`^N&CT?kCzacM^LLF)D!C%(TCNPh{klrQII}Gw z?cgL%-!xxgQ~Nxtq@%;w<~(QEJRdJ&3P5B$E!Quq5F9tsu554%^uRSjjbLk{Ua zLGSJX+e2b?yF>!48(;*_p}Wttn?G_|B0I=H6!Ng^Uy z?diivu1X9X7?-<(UR5m%&{k98whhc;v%m8$O&*5$xKClG&9uKF{1!g!J10@!5|s_8 zzY8B;|Jk?rw>LOHR^sgq#{8`p#?s)LaaRZfL!h-&=@gE(g}e%FIA znI1bNUx&+URx&{Wkfm#mT9=@0Mrn0ZPg-04c)@?6P5KcrXvk!OjF%xKlo=DpP!8;E zl1s9sRB5ir?naOOBZj+N^}^SjT%9m(!vz9xP&Syep_wCkJQNqZ6IJAitpT@(8Dg9~ zdyWFwG==YL@ocDj3>GLhK0gn9+W^f{LH*m{4#8k`=Wh$dKFTqXna5;$KFS* z^;N8&a>3^0V#C1h>ZW69=e0ebXN<|SUpO@NH6ZMPn$&3BlJ9z2EjfLdi2B8fv*YfL z`E)S@%-y*QZv@A=X`g6NQ*C8PS+rzi@5S;bB}=uglXu<%iy7G8Q8MUXrlg&Lt=&H} z)cU6bi~QRKf1~D!vYHf*5UPjJCRf;Ho#1KARAPw*1&H8h zGAz?G!QF$3VUWp2jt?dnQ>H7>^&UzP?U51huQo>3lZ_54!Z}yeEuKr5L(k8W^Cd9d z?xhuz!+bh~_PtP6>Z#M+OcULnVS6wL9yEPSYRNXfuY^^{mz%-Fu#KaO=3%Z9#&+~X z73@v5Iw4esNudkqukNY}VhpDnK`jaP?a50Zh}LdoRVs~bz7n3n&*|-<0>s!^V2an(R)n^;?#I@oDJgrOAu#5Brp7HY90KZfiX*66GB z8PtX_1(36(8(?7_i0H;TJoMuOPgLwzBX+W>Tvb_#F6UknKlx&APDJKuh>N!LypS-b z5JwzP8Z!bRaj}>n6KJSY>`ShblL5^(BQA|PB}=v=h}nQBS106>g&qtnqUMRUXVL*H zFa{uhD%{vhATGix&KgaX2}%VCdG>QSviB?GoGZm0hqzN$M3Fk6fhq3o zya&_5SEt6*uhAUn+cRrCXe1!Vu|KrcyWcF^n4Ep}s2!uf+Zi8Qf!UkvXunxmbeCOO z3*Dklhf>kni@;FN5&@fZ90gJe2V9ixw%v*=D>M4SlkyFS*hxfJ#tV&Sd~^@6zkfRD zrU3Stu~x)(rrrbp_R_yA*^(YOx0LR6m2!Wr3)U3Gfnf*|U! zsH;L&T^uGWiaRWdx>P>}L)juP3RSi(8D_3DARu&a-(8$0Cj^aQH~^OgvbSl=5>0;9 zCgE5~e}C}uBPKt(cGnRhuSgIJL?^4q8_2GBJBes zs<2p5UKmJ`ab4Jd`^o(&zQ!ZDOo>KYixnm%UL~HLdgX~Fqo#CL47Up-Uc~5r9C&^c z06x`H_xkYTB;)EF@`3}Em4lsgIgNrNb8k7SIo4A$A=FW8(G1}@zq}SN0~{!A-BFY} zga7IUOQ)Xcs@oK9mA0f6c`{y!ms7<0Hg!6-e~fxu^s#eE%)5xt)BHHFTf*QL)8a=% z>(e&cDIHFerQ`zRl+`$y@H-sD#Jbk9dCZkv!SuTJw^)!YNkM7qC3kn3 z$%qBC`oej~hgbb-6R@5t(*yGAcmzOa4w0d@`Lx>FW3uwip;hF(47URP*AWOYMIVFL z0@p9y`vZfqpXZfE4%g}N0&7uwG)=-d+_ygx>-#xKUhlzI4&1e((KNH71&+uDC=d*I zZoRlmlY)KGBiD)zlJRzzaliZM{avz2Q|+74E7;HYK^g659P$=BAkh9Ue*E((jgFPc zza)w9xwVUfp=Mrit67*cv!a7P6#OQeu)S zQ&Tf#Q({X}qmwezi&B-Niq8SP-wJID-_?^fp`-0!yuB@Xtb2QCiA1~cs1)q$O^<^S z^^rI!8RnW7W%;kq86UDZ#vRAqW@sP)&!PTenGFq`>+~lkuQx()wpwM&w{B-Gq-@w3 z$I4)i!2CDQ8G?|TJ5%#YRsQe%Nm~=R(pMnsUKb<4sBuUsw39;fk`iG~1^vD7Jrkw( zqMVEngt)krGM%_yqnzd;$G=BugQ@wq&Di)kGSGz0$Vl_n-V8>p6`C2br`Pg|Os8PH zH7_6_mE4uL;NC*N#@pu~H#1<~LjTY9*4u~b?K2xAB{jp1*>@)K@P1cOd{>B6!DW79r%7(RYk%M0J8&QTX4SQuVF`oYb%l2yV1A%RNw zV3UO56#E&y``#_50_udCNpvB#mqRWY^kJG}lM2Y8y2%I7Ss*?k$1I$PU=Zy{voF%% zocs~*K^yjlfRx+|KtFsFXGXNEwos#Ud<3T&{>t>oIc@7UZeU>82M+Hm7qj+SMy8JF zzdYTm1_r0Uns@p_T7yljhH%j6fL%_K-Z)rGECP;vJ|}S*ZRAg)I8w9G zQWbNbSF^Fo*jKyRbfRh{!^%nV*~*;csuo8b4NOKFl{^q?*s^5sNk`~Bm8RYa#5-k zI9jK0bi!|U59Qpp{JfZLw%*0a$uoP{It9_1SKXu80&y1WKm@Itt(-)jPPbFYZLLai zz)r7`{+{jKdE`e9A-^A^{hCjwLM=X~dQ3s>kP% z5sw;J5l2U-Rgs5wok!$jf%gIPN`o?c_b*mf%Tn;FgB}=6sZ>xq^%Ld~@|px2pQ6py z&|#^T2k#HI7U5~IYu)&_s<38F(jw=d-8gdmWCEj8q_#{v-ucG12fmC>uVs^=Qs!xc zDko1P84J*eVNS#t>fz)?cT5L0sim`AqalONBx>`bdf^S)5*IlSYkn1^tj#&1i4@nj z=0V#n$;!!*ounmWGX6wY9Z)J~x#CqO1H~lVqmb+9a&tHZZrgXccx@a-gMCHktA2{& zH-4CZNku(vx}qsaCQlj4ysbUT&7>G+(`U&fJ5`BZ8P%!AJ?JN@BGLGq+b-rlv~O&6 zqft||&oq=322OO>lz(=Y%nVqZg6%E&22%2k|G_*qhX%?&M(3Oa|8}BPIHJ+n3EZ)~ z@MLSHj4a6KDWm^+&U0_FkmxRj5A7hxvcNb#EYpYi5#*;2h=fM$&3gO468&xaobi9B z|Mn)If770QcCa^~|IJZ5m>4+P{+B}SzXv-e7WxKGRBwNhuXG}XDunrJvH414!L^e9 z)`pntv-l$VkugO$zusgTlasR5md1L$g$+hlH%FwrPIN|=xFff?+C;T3I0SmZGeG0J z+^at)eXT2-ZKIbUpP&1#bMoG8n0P+)IT=WbH0S zTZ`TL_mdAx>2?>;Q`b+ZY%aqH8W;XiJ4rG#Gj@*RXKa{hlQu0I4@?dzOSiP}g+e0} zcDXkyL28R#NE1KMEYM_oY=Z(*vElSq3RrhBmD35C(v3~=@J!XP2Cy#04nWgTjwQ^W zuebDHp8B{b2HV93XPd+Or5I8DJSJw?r+Zb^l!H*HgG_jMjb+bnvc`xFsJN%Tp>*hN zRTZ0as;s%uXR15N>#CyH;KCmE;ZmYNNNpW_DdM9{DuJ4=eg8yEze+H)vBsQ_cUPq3 zgOe@jEyx$3XA~8)xI8#?WVg{f_pKK914U2N2d!9(C_vT`aJA%?l~NJWXXwguOk5k%oU~~MOd;LP~0^xRL*YX8cuO*&6Vf6 ziQ=zB!YoT^==t9QrMoU-LXaiudee$%8Q z#-M>z-o}a~;;(fk+!@Q&0`@RfS5E3jr zzqL%=^uEHEb6|-zE(r{dPwuLzju80$X1XHza${kQ2Py=tk0`<>(@{2;0;xke-?2F~ ztz4dDBCx`E-(mPD^E_&!=<;}Lt6A+Nj>T5FF)!aj7Y)q%yi{uG;^MfzgZ0twS?lBC zx-|MKQ*N57P2`51Gnk~I=aS30`jVT_i1lW29BLEROd&}g$?I%~T?0IpH%r89dXP-V zc`N4oP2{Cf=a?tyxH;{KhP9bKT8=T*_%DFt73^$k65ILMStT4#s;5R53JpyW4;4V! zYir!gP01>a5I+%oD0kHlG&L6rwTVe>rWEL{l?op^H$n6|$q;Ropm${IbNVJdCE-ng zge5U=&9FM{SAxsf58jQ3x~13gICIW=cH$?E_79vi`SKa_>*osJ6H4)}I1yG9bh=J>68TNY z;rCGAQ>6QJmznzP=CB0PE+&ct(|RPcBeDosBp(&iG4{@_B)_(YLj*FnKV8jLis|Nv z6$wjWMJ3W4Smao(^-I#>mog3pI5`0Ha-9a_k_Ik$nxyy2gdiP`i-x*lP75*RT}%^u z6H@e9Sk_S%7#Fe_5trH8FFx=eOTlgTo?^m>KGw&T(&|w4Htm!KT{L~{&{f7L7CN>t zldZXMF%TtapV!ioe08b1&^ECp$LS(`tYK0JGy#_@63~7uMw?QqFz3`t*t>Bcr`YWj zt+aVflD8mA3Q00C{H z{#{nZ`!7b{Kg%ivEp5zyhT?R^KiXyu2xf9se3_p@iHlPdOJ+VP;Or0&b-OqM1dq#I zz47(Q8N!i~agCvf{6l!-NKEpurHMfzvOW7+8#3=;IBJb78$>=`gSn2SEvKD5!e`hN zTbR^{6$%MKCbtafkCw&646BEW`e1*kyz=GVC9#vsR|T|p;VOc=VnSxirxqnOM3C|V zRHH#H?jjWZ7L-HitR58>w6qR!JFXl*+?!pGmA>;M|Zy>U}U3VCtdv^6ym(NaOQW$YSi=<)d+rz}Ul<8&AFuiRrK5nis ziJ}PUi&GJ?YO5Jrp(aqpKlK6ouEI2J;L3wf9M3|>oqscK(o#E*@1aLQ8M??RpM~(& z2ni`;p&|FQj|CM%2#6I&dn{Jqx9G|~GaQlu7&iB0R~P}a<4VkLK+>$znI}@lSenaS zquyR&Ez%U-B=`0~h%;A2V;3(JNcK<&Eb8`REvChXqO%6)e$4&YTTP41Q*$k6)wZmr zO1j!U@8Rwnh9)E=uc`yyZrD7+khVg&F^~|npcR0iL{!f{Ug(8)HtIiwe1ZEgyIm+q zB^4sDX_Azh`=51If7B@QEjO zS8VL}10<EeAYc?2I&sbVo)g~4d8H)mr&=(OmJ zyCEiM8LhSNj(w*+1Oeh>zf11E?>sijkA{}J*usf z^wX}@ChmtdcIeG!W<7~7!VO5B(y-H%_Mx{%*fgUQgGtC|3WwAMv&qNpO>A~ z0zdV2;q0T;B~&{Z;$A1kmgb{pJgq|!orika4Qx6~prYsLs>+ZJSdfo6FWy+UI&WLm z*C-3lBJ4OAn|8-e_y@dAml_6qs_rg=aG{-m#z%oi4s1R=EozJ^)ZCOqtFgJeNTerV zy64}tZ574Ta5Ham4CuE;#Xs(1(EW`M{n>K*eZ%I@^^2Wt`Lu{wH#aK8xhwwq#%f*D zwq_B`VV9iiVY41xx$mHOnz(WP59t+XLP#_o1pBTX!)yE|Z>>JNdvrBrF#8^+sEv|sEI9$3 ziV-StUr~S6PvWH#f&F2HH%pD_C#%ATUib7T)?@~Q?A3H&Nim(Yyv~=1>h%F}8!3ad z$X^1C3B0F1CK5*<(NRy9J`6Pna0s?%;@zfiB|=u7sczjq1gp<7CEzenJrvF(slzOP zNqCIJ$+C%wD>;rf!(b@jh{R;G-Eg*`mIEh{>$kiWg zjGrMjM#Unf@~xn~`Awk%41x;u$C}o!n=wDv5B_Zb=Z4mQa%oFi?9bSLU8?xGyYq(? zzDYv<)7XF6Sm*sGyzvPCPQ3r5bn~xpf0bkXRQvs5?~wmT zaQ|iP-(L|4{~|5Dm2n^OwIO{#AM4^#|OyBVNq^DB}Ms+F$2f zKh+R_*ev$HiuT{9jri*`{&mFT^#|m)BQ%147WKbxBKKFczYZCGj-CFn3Bo@Oq5gW} zuU+h)Gl)OziRkwef1gPF^}Ju}@1H&HKWv8NzaP)P*zx}BEq+Z;e-`q8m@L)5c8fpz v|Nk!Q|9Zb)^Pitd?;n;x|BvtYk5gc2F|fCh4-gRI+YkSnY%Tw{=k&h-ns_G2 literal 0 HcmV?d00001 diff --git a/code_gen_history/V3_productAll/codegen-ProductLimit.zip b/code_gen_history/V3_productAll/codegen-ProductLimit.zip new file mode 100644 index 0000000000000000000000000000000000000000..24cc7adf3f40fbf2f018e353f46b30099c47968a GIT binary patch literal 26331 zcmd42bC4}vx9(ZCZSAsc+qP}nHg?(eE?4ccZQJ%P+f`lf`<-*+>*#ylxc5eMpI#BU zA|o@`Tz};68RMB_%qcGg41xjx0RaK9Tpp(Z@Nb{!?{g0qV*@)H8#`kcYZDrC13N1N zy8q`T8bb?DIwwaXIvWEETRKYvR|7gDTRICnBRgXg$A3Lf_pc%7{xyV=ovpK@owfD% zT?1pA@88%ve*c4!Go7m)o&3K}r7dhMoaGJ7OcYHVROM*@8Z=v3PYPQA!4Lf%E=sO$ z#^oh7Gro#*MXARk4MoRz?WsA^?y1xXXjBEKYWjXJmW@Ih|Pi^JCJ_{q%F7H38&j##{O#h8-`ViKxc;;8xscuhu$X4A%NPHt`?<><@VSZbIzZ~K(jN9wEvQlI1!4*2b{^CL4FJb zB2fW-eSjWt_@2bDUt>z|6^&!XIQb?C$!uL(!f+f$j*4zRPtYtqnyl{3K9O`<5e>6h z;C^P09s-HYhH)uEo1Q=!K#mc&a^9-5S_fb7O30uTE>!TOcCwrfJ=TIrsn^|*7b#0Z z+G6(Eod_pOF50U8j}s9mb}X@Bd>k6A8-!T93M9tBV(aO1->eSv!mFY!>axjAE4A{h z&B8C0gDA3#Ws!6)>&qnU2cdK=yHxlY7>%27s+lZS=E|NV2>F_kNbnTwq9OJcDZ*mD zJa0{gX+rG)=u5;e$E?9%z5emQpUwI&ptU_Nv(9deq%!L$zHBI`S)n5t1Pk)B^PhQQ zU4%tBRMIXw4P8rz>#!OV&6Fy74Y_%q>8cMxIs)N+5?s}QR$Xg}gRwD%dR3|Izpo|G zSYw~4ek&()tw#NN!l;LkKWG&$R3$Aj2ImOyGcflae;P$F+4F<=X_brpP`KZjNUA4< z0A%Z|>F~pwf{IW1;OXOWx-_*=R$gF%E=n1^RKE(p!!lowJ8>(R>`p62Q|5DI%)7N! z#fFbcJGLBb!DOM?ZyT6WI{vf<=Bj=&2)4C#ow^g6S*mrn;u@AH{L(ChvCU=weRKm` zqlTp!etrF|G`#RwO|}P+5aOxksU4YCoU1txk6XAcqddpv;h9Zd3LHXoAfdhp2ms&= z6aYZ}zf@Pmf4jOAO`PoiLt2ZfdU8q(I6iuPZsw05U{(bK=!ON1(&94|c{N36RfUdr zUKbanQ4GBUCrH`YH}K)WBp7DQKhp_%VXwzGE~gXqdbipEjo8_uGip=Y8%mF}womD7 zY=TP_k^m+M4%4uOdxR(WaWpr=(?Mhjd1DBUq@ipxJkc=GOlHtLv7|7LgLndR02-}n ziSuwc-Q=0e4Q`m?et;7VwFoCT9`Q$Ep!7O$i%>JSG!Gr92Fvv$zx`;I$LUQgGQA@} zS2$S-{Cy%5K-X+{{)v}Ze4c9XZ;*<$y@$1bXw?=Hm3IQD2(u;8i2SW9h zDtSUE*`s_8)E=p2Fw4`m`;oFR0sF8RwYdRsDBQ?O3SBV~mB z-__c{e=2s==gD!fyIg&Yt=SjgM__(i&-a7M!NX+XUgNwOcIns*FL@AqYN=q6Z&Enu zfMOg{L;YfK2dSV;EI)t}t6vXk2D6Fkb~tTh)*rDO+V-TTt1O%Fa(nYSd;w4X{59va z_>eV*wlH_TO^+>R8tuGf!AydPwYHEpbCsZT^pSG~t5}lh#n{&>fspC^?iu8>vp_+Q z2p1BdrCHU{d1XuUi;T|Cnx?D;xAzIYsRT{~f6y4+tc*TA-+mPFT1nHdE@0xZrrR^}2BQBc^U7Fq> z>N4Ksr@BsQ%o2TU?##ihSqu>*YQ^}HdQ68i1xfVISgEJ&7LJy`#&}%)uV-M_@AH7v zbAi3=Dsp-{bN>=MA(V$aD=+|n9@IaH{l7nzDjB%`TPkf#wv$6HvK#g#vu2*L-UO!oJ{5-g>TxpT9go_n4g255EQ-+8=Pq zz!2GJq6_N$$k_v_Kji6guxxjqPFI$w4PS9~IKvm%q#pW|G~5aAQ0)<07Jqxc)V?$k zpu2V~CbW0&cb1R1S*30S$=G?o58UX0uLDUB6MaZBm7n($&Zp-K17nFa!LD5(lgBJZ zo?^6Ii2?lKAQ2sJ{&dl+ruixI1Gq;~bfE7wxIhhAvqHb43TnSl$!%z_a2C-2INm_f zPxs(FVoIclQ;$hY(I+xa5iiTK@iRH!ST>q;HP#NSt|z1cUEGmwRzKeuUWga zt-kqnbg6olTb><&+($&oCu(6kAIN)!zk5QNoV%pZ-KP^~v@WrJNCdN-h;)$0h`ViHwXJw6>UH1jFu#1Q= za)laJ+C(PHK*g7IxaE2`y#FH-Zjphs)^d>FB$NM6;GXg&&olU8F0mE0Su=UNo>A>q zm2%ST<+7Z#$$HBBodTReK$vvJ&OP^`i)O4Cwx(t47#00hZhpB={zIb*Yt+2q*u$0u z>ZOBnc{x+g@nNk*+kKPVChNpv0Bu=T7mv+J%hv$X~c6zfW9>g z3>t(L!BU3PTg8DQ8~MdKzSsj#+D7`Tv>6J29$C>AB3j5Y)7arqfgJM*k&)CmvZD_e z_qWtk-D3^vL@imwJ8uw8h1C&3Q;JBhfyy4*yChLyBs{volH(jdER{BoCJO*jkP?vT z;)tRQtW1U~^E!5wB2tTC67OIGf1JLQ2>|eDQPglTbH~uAi0ka(s@4Ge$5qi26o|55 z78_9KOA_h9S#wrxgR?E6)E1-u5$6_>xW;@((*YNZID`QPiV|Pe&jnE=*Z?=n!V;GR z=!Px92PeMwR%ODggg0ZnCuRA`p^8mRvyKZ};MuNyD#%o1f-&Rb#9G_s31ds&{_e@; z5CQ*1Y!R{Os=)F!?cpLfrA#}!N?dxNh%1YH`FJJo(~={^#50-6LDK`$@XH(EcYY?h zTSKQy!wdbEHxA#bfQWPLw{-W}$fnu$W0u4C>~POJr%-!dK4Cl5_u% zyC@m6PJ$yRE(0ndWdqC{VnkFKJIg^BTXvZo zi~&JslRh{LX-Y-Ie0=&E#eufmAE|6Wp2S8|$b6tUVoj8e19R?ui%L$Z^Q9waR5;sJ z7Ukxzf=isvgE1Ru>_n9uS`VUaj32Z{X**{0dfuz)FXc*|tc=*mT%{QDHecKyp~g$l zHp(Jpi<*q)Z}K>mwjho*&p5+`(qg=ryZEzxjCxB)HtlyI;`a7FdkU75i7i5l3iouc zTg^4_IsZJ0jd9E$H(UlCgmoYy%=G+*GD$5Pxuhsn8mHC*E$+iR;xwI1+K;OaTRuW# zsp1ziwxx-~=ZpMxcRtpDA>y39Af$)wd;J-PuXmmZWa&}g%+BgVk3y?Dgjh?TBt8nu zk&k(hNV0n>&hv1FGgoW;hiCRfRDlz@viVo^&(s<2;KF13f?;fUxu(x9&j?PledCt5 z4(_{12qZcx_CH`WvjWmk>k$UG^$NKwgJZ2(IoWu&cez!4*?K=mKlE~=bQ^0ra>@}; zO@a>+LQTw2#k+G2uVXN7U>Z z-%aaN*S17+Aw*AvR&Kv)=32|!i!t+W9v=D?wAwLYdY;rIUeBbqWu??;c^P<0TQRh_ zS9Wyaj8*D3Q7NsZWj?f!2mTolXEKQ01QP4^#lGU@^ zCnSzufc0gEW@u-8jJ6l#2l!XepHwZ7=J}pT4Wa#0(D(m;E$AB?SkoCBI2+g*TAF+p zDE_lh@$VsD_+RCTL1i5|WC0W(vRyuDcObkb$eIBVa~X3GsQjx*XE$miGqbTv>N$i& z)tEeWEuewe1xm|ceH7^h{+H|F+IpMZcj&DPO;Ak~J?BJMv!g8@r%RrvEtsWwc9FO# z7D{IW1gUXOFtiK`m@q^euqfswn28;-I`J)nwgpBs3>S`-&BaZT$>>^Q!#?TAh9$n| zy92PC{)`_KR$NI7#A|6Y3{mfAV1|5p}E>@&i(%p3tE^M-(3`>ZT?u>2am{KD1Ii~6_6#XuR*RGB~XHIv4 zSmxp)v1VMK4-+I*)>?P0h?Sq{Ol#)V1S8<>Hjqgcu;la z83JG4rs?Inyvb!=>GO-uwn8mAal_`}u}O`>OU`x19SuPK;^QNCYa0%~eD7zwn*38v zAeB7`E`3M!6ldCM{|3h3qcq0vHE66l3o;>UXHbc8LSKFd1{xau`C0Zoc`(Z!OF7%^weN%Rw!m6=q_`J9DepMiwLzh z_dLq+S@AP=6l$P=0@2!Wb!RwAxERPB!3B(Wo-|5S%gpv;04)RoD1_n3Jsx;q54Gav z%UQKJWz=RBhvH8QrDV6oJMHn~RJ+6UcDHD>P>e$hlvshRBq2<)1VQ>hk3P6+MXtB< zHZV!xb}jT;EJ$8~pE8D70-Fv-D@4!mFdvfNUu3}@#J!#m*PUy=G4TB7wx zT(eZi3z;&FUu6#7Pt+Ao?h3RLP?{hm*X%jn02a;9sp3g){E8ti&6+A<94agRrgqe5 zbRpod*3g&WT!;F!WfQs>_h(s89vW5F9*5|ix*la$@FQUH^bQ8bVfFO0oB*ts)+~5- zjV>4Iye#6PqA^DuT@Sc_i5KL|DHZ;Eax@M0PvQ;!?-Z|qqlv+P2sl|u=DWU#(FJ~s z4ACFEyPN2kzN?PShN4A2u#bWgYZ2C5>>2F44aTN7oHSDCO^L$f#)9?= zU|+i>A;#rFj2$#uxC>bbhnz-3rDAZv)aa2~fnqiR7LegFJPZ!f0JBmAxk3Z|c}`|*xM;0fi(_IdS5Il%71JTxj0-uM%^ zIYt5lH4%jwBwHrtbU1Qgot_L-3Jq1IK&lZA&EPr|BVYl(T1=O?{_i(LTR?{XI}yl{ z(L)%|vQH<32y|AGoG=h|6r&ns%=Fcik&!6kx9!180&VX^e%6kO@MeU7zd2f4yVlW5 zGhppk)01(B=j1s(cfB7}kPEDAij^YRQtg>!fwK6$4IvTeE5t52oB+VXlXR`l8-F4t3u58gr^VW|F`lHGH^8hPx&ZnS$*d}U-$z) z7$3_!`T(LXko;B%*cb^CANcxuBhJb5DOcALEMfC<^NJxfO*&MHy&$l`Au^h>50=TJ z+XKC8>!na}%ifSpo>aT3tUI6K9}S}AFbe2S62+4!)!3Qh=i=)Sp=uG8h}Ot}HKcQz zM#@HV0ttVVxzS=Bh7%=!5aLQL*%Pt+tc-^Zj5#u-{MFiTFQ7=|C|r+v{Rzxp97IEe zYbzC$-6q2P#ADzst*vHxUBuQL+Y8K>bu0^-(EEnje+&e20t=b2uGeKbcEhnib8J&|vW^Z>89IR&k(7!2jwwW^-d zRZXedr2}9V(XIl01i+M<9(J|I{ipMN$qElV`{Q$6Y%_6wxA$ge^mwO#_T@DZ7F z)F!_sCYo#`(YU4nTPi72D0CcHWr1`>d2VtwJV&_+h7>dd>U}f`yNEKvw%9l#Pe@!g zbzCA9p{pFz@}mMVQ5$}F_)bI;OfJaSG3|u0u`tr%#mF7Xwtu4#=&34Vv(h|hflGLk ze))>tuo$CkQ+jvhmU~^`CVsE%ou=K};=`rJ9e&7NwW&%TgLYVf18o_b_X<{*t`_w!!6zxZD$8zPte<{$JQ`S<&OHGSB4I5}AVPi>!!fxW$nSQv}(~I^XM8NDs+CfGZ^7*+QU>S>Q5{o9al7647 zH!T*Sf=6(sUXj7aVgOPO< z;|2V2WS2O;q83J6d-{r1tQYnKfYak1UHJtI4qw70e1r~KkbUk$oOE6Fh-7M=D+prk zuWbC9*LY)K+EAGO*e%Ia*vX;@MrTiQAM{+7o;&DTs8AIL*4p~%;KkAT<>>Hs^XKyH zDKl4%I8m~*KAb1~qeuPrZT|S}^l(Qy2AxR7giORTwFf)!}&E$zZYj-%&K&S`)&%e*x=SR zNoxdApJ)W(T8}8C_*lCza-5P(*m`f%Et22$X$Lp2!elwe5t)Q6Qf92E^QG!I&9i4u zw`2`xbf1lV&io?Ci!oe;J{FL%K?#R~DNAp;K(l z?;5edvIV%@d;wTo0EG6!#ZV53%xc=uD?nwC5S*63SkfC{qvZxL{yDQGskfE?$RN2C1o!|kun$Fg_ep6)`+U4Mg*hRV6|lT*Pb);lL9>q_rJAE(n|9z_RcO$YK@bF{ws(l?>A%E-?rY^t(qZau~ zZu)W<{fpG^vU=!HpTxqNTcExp(~_bA_P~=|qT^m25EK{m_gGXb{nFX=3#D%|nh1BK zCq}n!LnAzNe2yZe7H>o3Bx9q;Op2yu{Y8|3Pp!6P`0zgY!PJxk&0?{t+8YWQxwpnh zmuftIx3`!y`4R=_Ys+Tju~HQt8T?=umF6daA|vwt2M}RkYd4oGx^J$>E1Ob|f+&{-MFNh=v^tR}r{vMkY~E>p zy*co~gBnB-O{=pLnNM3?lkz`nWb<2Bsu><}uwKXh4WAGHzwoK~3!jhW5{fpAhFF-NJM3g?{Ma&T zyT`wIozqMXe(K7Z9Q}n)uI|CF;&OTdw=m*p~^2H@W`_K3~C&f8*1V z@!6UaZ8qPnhMrpQx8JU3w!A$p0!j_&G=p|z&?7tH``&>qXIo;{+&z4#Ph(-tBlvFw zaW`uKg8D!kC!<4qSTE__D`X|n{!Ngd-Zw!~|4Gm$V~fa4j;6)G2-36+5BrNCTKlSn z;-%#`loWDr^|3C6_*`DUe-Y%_{!NfhRSxOXUj&`GtUbnm6Lj~F1R4IHg&#)~Cp#BM zBNM0ZH6VYb#ed3}?l#sc@!PgY0w_aQnfJIQUfuO9oeW@WMe@kV^2*|W4##XyhCayJ z#an?bwWOmOz%24q@){+rk)`Dop-1{#n7DKwP_rEJLYO9BOneDyl0DygTZLDBkR1#isiSoBAls!9Z?>##f!fC9-SL@!&< zE#VsGC?ueU`w7NKr0f+EmhhnXSL}7(wkqWvl20|XkvLH1ih3etEYp7Hb2eou2MNvv zXNas96ljaa)0nGEimL5~T6f0f6P?YBaL~D!ms;?i_F?G#$jEQ)zy-_61!e|@B_aMsQDz2zGM+gR;^7fy_3i z&@pz*?>Oo!{rOjj*VRp)%qvg#4OX`HzGrGer=Hh|Q@nF`p&aboW!?oIg)&8;v)n0- zuTqY(cC4sBUuAwar~4~AW6&d*nQz68T4sy0{~z29^1VXda__@*iy9bztM;wDSUK9! z2hc+N`toO+u%xnRIbYnoo55UfWZ1i3j^R{SD?#wbS%YsGA8Iz}&C@IPT`0Dpu%;D4 zK9i>P&6mV76d773_7+MF57LrMxE6v4gMN4*#FtmMdVfKO{21(D~+5?99=DpO#Y`hD*fx8gpIxR-!5)ZT}uvI48`{+$yb<%_7BcqJ|w~@f+|u) zqP@aCLj9NeXs&Lo_4TsygTUqd4HB9Q$|_20APcHxiX<|23LwHCOuE2w?;%s?AGX*V z;yRFZyiCWLPF;7C>2)&1HTh^@zX4Tu?m7=O>J%?0$Qh}LOFJ{;F)eN?RTZ!WGRv@VBK*fW5+ZuZXPJ2; zQFK^l7zhKqah5tOWeAC{>*3RK0K6v^)N8i2YQ@>$FNruMC_*!e0D?u9 zTOb>NMx?33Kj3xmcQdhW(;7CJ+1_LdP?^D)#Jq~gg}}jXvhBr`gv>s2Dv9XbgfVSx zFV)1v#w=6qfjGh8b-}aE;aPKW)phY>Kf&n)^2O-!xOqN^N+s*YkBGQDkT9-C73@7d zewt#%cZGM8dt@8zQEy~C^}1=UjZmg4=`4y6XED|wkj>(2ug=8U(Xdb-=5Fes*g;05 z-I+F?S?!4JAZvV~B&a~uKN>BS3l}GXObd2=4USxh_m_+q0<~&jC@$X%k|E_RBYxdM z;?v;WS&;LW$D1i`JgT{3;E{?(i}R?28U7KEG*G~L1=noH@*Z*NC36k)Ze|VR-2Fbb z`pUsb;$=#NkEhgfO88?>Cz3F>#QURm_{X_*Yo6t`P=drwyyl21k?`@$Qsf$Q?%#Z}aP(vxn;$EHUt_TMm7#+9LHFwp#Uzh76o)~Flx(sYw*d>=O zjE<;H0c8(s@~82E%tY$!XYXqL+ti(1_LULKEge4Od3t-6kW{1rs7A^2>E*}b$B{`s zBai>koMjHR(FuA&@iAZHR6o@6=$|=Q`l@m2%zRoWM?6ppBX|wdSs@L$$Q;E(KVn)? zD|QmvX1B7jVv+&Egh&V1$7#F|WleQDoaWjbFF5|Tf>jh@gOVjalw-RMoIo@$s5vi> z&}4`ytke-CqFV@+)PSVK?!g}k8gYDSX#k;B7Lal`wWyMp{@0R3lbhDsdTF+_Q%iOW znNj#G8Bt95%g32_H^yvZE(cLWjZsP&6EY;F3`eH(LL&kIyV)<6j44*9`UBDwHrJf_ zm>sYvzo0Q%OZE?evPL}oONa0Faj)QxH~5@$xH;B6?Qf3;UvA7=c@I&-T^(4ej&Xnj zhmz^ko0X|n19X#w*{E|<_DF7Lq}U`zi}T1gW(_%+dE-VzF?Ja9nZ$MDA>5C#2)MzQ z>`p|&WTO$Uc$q^m^m=rT@EDy%{B%vxc7W|Wr9jzWmJZ9s#q^| z({esftiMjP+cxEzvo5;1YOb>J{hnyIL9<}Y-eMEYGLMJ9HCW_n}+mj zG}fLj=o5D>8`7Z>ll2MtdEA4PdpJ>+s^Z&Y>JKXP5d_A_2vfvJqeUd#tK;YSjZ_!T)|_)#8wFx zK_j@c{Gnp0qCyTU9}rAHotHd^;!C>EUhxUEuU3o972FVQyxQh;#c`bDvEuKDtBM%s z0*RbX9xl0F0u)h%IH(-o04jki2`fxP{bMwbh_YUhH+9-zk{~Gnt0B*ru~ITbky<@0 zNnkXPQk9@zICgsKC?R5sTtS5a8Wr{ovCKIBMF8bjWSGEj1)&1wz+WI&DwPIJ9j-C@ zZsdW>Q10-GCZs#0Ay}T$<~kT97Jd3b3*pL$Rxbc7(#bT+ngNDmdYgv%ank`n827xl zoku6NgBME2HfHv|P+FWu(6q2!VI}g6R@b` z0B10>GUSr`*`oGx+?oWU{1-7mJCBHbS29uINJ9}O{fThKb#T(`*XBMna)X^4nHTkoP`3`(O8A8$^s``-;gmCBR5I6=$I1+(oKROd!Fvzb2ccAyUS4=0Bp z9!TtfxeBOmpCr;V?Z6gZOZ_}KZzsse_I^RCQi=(D~qK67p;r(_i%rU zh|D3(a8rnd-9;!W(JallEVSb|fEzj~$1&o+b` zD=}SaM(>m_$DMx(4|2XUNJlY&G%cw}KVKDUY8b7)DqjDR77zIno9teHMisNCy`#-!+P zM?@NRrqrTyY%N-*8%s~l83mi1QcA>`iM__2jN!VPASRud(NDl64ZC7WUx6%g6Ag@D zMlH@Vbdx15H(&kZ4mPhho@i&VEWzGdON_d1IcLw9eY<$fR2RL08sz-8#n30 z)5F7K9(2D8tuL#R+ zUA~U%&UUx<*J~iXldB8N`*d28U&*MrTB_yErH1G(mxP}zkia!65J(XiiJmLOd2-5ZHmi|> z)KZcTLGsssuEeGmsiqPurmCVYUuB&LjZt#KGFYBO@F;RLzwXFJ?&nN^#xhW-@Pq+g z3C7D349+~u19;dwnw-i!%?e-4ldy{8MmbR7B5#T+8`Q}mPo4$(7%n#_*M=nT5Fekp zWmnn#6Z(!tnt8pQpVwp7mVVxuX5ZZpPG62WJ#95Py`{Imw7i;AZJDilL%0k;@Wt(5 z;3|5WLv|!a_YRMBaxRkl*F)SudYO7zFa-XDkX?u}P>oV4_#mx|}Jn=JTGy<5ql(lfgS z7ga2L0(X!5E4+a}=YzH-jX-O`b7e)8y2!Yt99;VlW`ooKE5x?E4EcpbCs)x&YF zY;t+mDtfsF#KKa&eO+$<()B&v=sMN*a)0he76^EI6TNuZclYxXO$$%e!xyrZ9jQbn zRqaf5cvzgYgL}Mc@8+(u`TC=cycZsL$qI)aGvth}ll5DCYbKS{pq3ZdNs5aDW0(^W zd#L2kFs;OibVT&-VAFU;d<(aLbQIQm(zH!Wx}|m5hlNI7QeOmHN72dX&ucPAU)<q((PWqwfaYj&Ku{t?*+D$(u%Hc8m^xv} z;2-v7TIQN384xACE4Bg=MZ(+&=O!X*1mTdW-Yuri7uTMg!}z)p(o94_MSUI%vj=uPrH5}cRgWc zGtWz$C#-%?pX}WBJw;3ElFwzOC``cV@ln=ivD}}|7}|t@)^`}ywfvY%B=No%hhhdj z$%?;=ePj$>AyXI0pNtlJ$WEQzFLgivt}1p-0AtX9m!p-j{wc@#|1ak_1AB}At&Kn? zwk|eKbRv$9c8)^dn}xm?PdYgp*g8Au9YsVPM*ccVj5+Ac`a8SLFRMY^xZS9^x79pY zEO$J4nRcpof1HLkk#V)@P3e3u?i(McVA8A9`|=jppC{>*<7(o$Sjm&u$Vf=5$;`}E z%t$QHj8DtW{*|d7S9WbZ*jMUQ3fxHEf`)pC&T(8?#Cd#-no4|>j6%h|-SRg2voRJs zBgaPfrn30!BL^>!XWDJrdx0L@`XeetDz~YLcbn=p&+AyQ&;U*-$+Sn_)!8@ai|A4(RdNf>JD~4c z3OK|VV{#n)cWuSs`}nVGE70FB@2?it_d)x8EGGPIr9+=m-r?$<;;oZQY6&1BB25iO z8$iLEQcPlhiFg}ui%!zQ{c1s2fEp{dfucxNtP9u36K59Tmgd=aAEcs>NK}j?atR49 z#?<(F88+*>(@NmC>y*gp0{8V=v)tT5OPa&UBMgLWGY0Kw#U(fC)S(~!5wZr z{zS8k2w3eYeWMecUj5@lf0A)<}!PaVoZSaWV&G?Udo4H~! zl^SOkVa^wj9^P^9=JS(wJC?lstLN>%!NG|&P3R<^eAb{mWN9dhtqzq+_E7UC%1mft zr4x@!KY^ZyBXVd2ULTFlz;$hQ@WKHhITKAAX?F5)hC z**Sp)aQks;=p)>nkEwiKOmK8}(#hQG6T`&{RGS_QaB?82?1SA5h;H_N+?tvEJ_tMZf z%Z;CBKACP$oN%HX*O-}+4IVhM@`8TV!PeK)4Q3|dZ^M=9kq!1bFmQ$$;Kd7HktyIQ z`J@udMQj<->3ee0{^a%kx`zUp6y_<`NGK(o{Ija74X-2#G8lMon6a6PnAWx3ouRFL zgp)J46KQX&vUkFzvwA z1PdP@#Vujh=ZY@9z|83i5DK3XvC#w7_GIhCajFEH6VJRsa!Sj0f)^>Jc1K z*`T2MjHNrGl>>M#zQoH0lI<;HGLAT{8g2Jc;Bh)SQY;n}(s<(cMEtX-=*l zffLHmdB=+2ZlQ~s!$u*ITCM!JXi0^zDyEu&K5FHmm7zz%%$Y-WF%)n}z(=3;*cUF4 zelHe*J<=`3KOQ2xPEB^&e2W-UOfzcI|*t27QZak)~Z3+pP^sOY@fXO9`sH!(>K>wJ3H@IAqLn++AjNQBJEb~*w9lPHY<5~y;Tp`qCc4c&E( zU#~e&gYziMd&G-9`nDTA1@=3fIc000E6|pfiVQ5keu6q=C5$b6X;ZoHDm4IXf`bq- z1rTCpaqrzW?rxt7>u+VBi%fQ>;C82%pLZ;FCi7nG=mjb+HzMkD-Kq9MfgDKF$tCp-*LFwz|HI73arq9~QOnV6vuWQb|*YqLPIL zZR$gvZ%cr(R#b%)w2%!Rm2^0WF8FF&CnEkp^SBE}h{2)7PYC$Pg1;ihe{B9zSzle> zZdrA=AI|inIOx|HoTWWM&Bo!uCPEGy4>6YKJMLQ_4@u^@dSkg-yc;^3-lxcu-Z3~F znx$RTzwBMMjC^}~&0{VZcf>= zUtMvaNlXcqE02_LW=zyHY3r}at_uRR!9MbWs`z^1_!0r$ zO6KGO-o=9*3XY+jt0T#HLSeQ0)Uq>M*YjOf_r)VB0pcQjj@)`Rp5f1Fc6s1*g&UBr zMVc=@%oxm%OSq?aPsPWZf`==J9Gaf2&!Gqz5Sw?#| zAqS5&Z0l*=%lKa1`PnZ!k4k_;qDpMF+7urC9?uro>1Wop{3O#&XG9Fq%+DdYeibn#h`E)^c0Qf+x04vTc%I z!}%!}sw${tvi$2NcQ$-({Y_c!JgKl!v(8RHfhIxd&&PxUyH4$3BK0LQf7oC#?2MM% z8#gi27K~<4Zii$TwptAs*II9mQlHdvLtrx-KH<^`8@Bq|GIv0};&uk8gahn0Nv?O1 z#G3nEVZ3EE=RK^TxJ-aQ1^ge8HsM5#!je~~D^e7y(kwpG@&zC%LU{r0%PNP$7FCyt z>u{V6D6KDwGK@YlXklEfgNigS7f>O&tWVGdUV@EPcl9N2vhss*3)1-+<({Xe!OA4= z)2jlFWSW^(kc|13POVDfT0VsU=jUL}!KK@edfEp>qIWO)=5EPt!KGfYUvvVIM6S^Y zBs{Q7h!DA-+BlLaYJN45?iwtFj6Pn)DED9J!fb+UOZF=15U)6ckI#k{&n}uXUy>#? zU$2^rAE6}0+lEoS>_x!HLOQu7GsL>V2_tLk{+V^h_G;8TsEL~bh!=iyFQ7Y=AJ z_G1Zx+p_)*n@l{*1TY%DSTKUNUGAarrQ}=*c3$$7z#K3NI#%|qU&j;%3;`KfYKyuH`=K6jjn=)><;C9-PGv{~nW)OBK`vEK;Qa+cthn3Ddx}GNZx#?zd2s z0y7!$v_yY^Iy0@H{m_z^Vc@nN$_7P~uJNfB%p4ozeBh5(Ae&1{A0&Znd%vnP)pOnI(oyi>}<$&zKcL5TR<$L%E==?`&qFUAxt_8QTgUGFBuNZJW_vR}xRbW;4j5ur!$@x}N=!Vb9 z<2aQ!FRw=YulXzhkG@8^;rtHHrQA+Vv|QMy((V>KSrc%|>xE4Dtn~mR$Uphj_SP#f zptL;{S=q%Nlki#5ubzE$p1*e5Qz6+CR1$wwGH3*XmBK(<)0;F%L?swyl^034Fj3eD zp(a?~obhsC=}a-Uae@(L`~WiTy*dP(;O0|51Cl=y`Jo)!=?eVu+pt9dtX9mN8`xd< zEjH)UjvG-iJrmjz0z+{FQ%Pi}eIa%w6jWl!&l3PN!&F%|3$q$v+>rHTJOL|B)j5H? z4b+|>Qq|SS%lbpM*8qRCqKGlUW*>-p;T$@4?P* z_4$mmlmUoHun_VH+Pz^5kA6!`3<#l~qZix`s__Q#Aze`$q_rniUcda<#oF99C4giA z-3g;zT9Z3v9}+E6$WgdI?_E%|fk|KXozDrV+@^Ds@Op3V0nAP+KA}Co2VrbU^cpl@Y}t9`bol z0d!joe=nGcg|#?5H_MRgBYaOQX#3*=WEA&toTl=glZHzFdiOt0N&XIFi(h_!*|f+S z!7O1&0DuURf13XB|8Lr~f8W?5YUgP4w_{V=ltb1)@ngI3YgzX(Kbup1vJfKo&BsOp zRf`xM!eDZ?-3>jRIQPyAj_WB`00BW40DbRKaoB`Nb5Wq&;hRryl6!~ty4*-Vop3Hu zUJ}!Ta=LtJJKlGjvYEFRKx2n(#^?5z*8<-KDT8mc6h^jZ9n#9>x&ILgrUV)>94OQ& zt~>|rEQKIk7dIv)8Q?=$wByYx3VH0ndxW561DmwfYoUF?KMPv926V6YB)sD(aHrB| z^|87V-ye2pbvdgq8ONRz?jwB(^Hv+Xj!QdShZ0c1=(4I_)?zsEGkM#GF-IDMN$D{8 z0V4rbVrodZdS`1Ck*uK7s_~6$tCU6;WOsbmS7N6wAx341SJ~AxCX=q8+SpRoq(hhG zaq+tLl=m3K5<3M~PSm zu2lrsAhsn{TnK)z0m%`Ii0DuM8l(gg=T5!WQaEvW#LuZj9yL#29yiL(RhQTI8!EE4 z_USCnEtf;V>6fYM+(d@%t|dV3frVml4uRobBQ6v~mq)G*4=67<*;eT<%|&1OfI0T{>pRYEP?q~=cI1ocO<`n_JD2y zs<*r4vPqecypR~z>L+j~dw`aF~ zu+JeadCFt;8W!3$nojbIUS9q)hgvGuO-U0GE8RyJi6Z-_^M5AGZXYdSW{W{@E5$o< z<}1$^U<;iB`sa5jwN3&JOD{m-8y}tK08)QXD*>5^BW@u}_bm?&Iy6UcEd;oHu$V83 z=mz11>h*KHST5U}m)~7fuAIDe5L>9<=rpS>GfM~$I|7Zus+WN#F63g&g&Lnl7WGgF z?O@9(!?D_Kbze56rmDr)wdtputYKkZ(_E29-Dc$pqGHb9jcl~&)D+R|`w<$iAOrGx zli66x68;WVuI#l&VQ)*aqLcxr7)dC|-;KLj3fy=J6_wYGha&f-F0>MsXL5cV;F;^n zNRo((wXa+MF+ECbRLo#hT315aP@AsJnV9G=F;Gxq+V?yc#0j^2u(X7ify1jc-wT{B z6ox=$r@DBwe>hhPYYg0zKhX=!J%xYSN~lRkCRI22t4Nhu5e-Hxcu~$~Ij`Tzwbxkt6aq9{IEGt}N>j5G{`RFU4bJK& z7M+hS%avUQJnOHvRu?DBWQTKGnoo$~qkHMH=fE79pK4#~G~HN1s54fz;BAvv*;bLA zdp)vnmVmG9Armhy`!C4yRpZ=+^mn=;D74lg{S7V<+mX)kCP{YrC@C_0G}li%PIn;}(#D0VyahEhHRd0cwvOL~;Pv=%cHhYac#sR11=M6FOGuINdoK`ZMC z3McOr+cdNVckTpZY9OjoxCoAwLr;{<+%;)os;B#sa39EPLe)LCHsU&WnwG@R?&#`PLZM2qMoCWsO> zYILJc^fE-Eg%Bm8m&hQ>s8JIwwjN!`gcuvqduJGegeZeZv_$#F-e)fp-#L5joVEAK z?VtCbabN3MvtG}0KiBm$Zb2>DD)MXbMGkHf+(h{mx;vB9U#RwB5}fE^Q4?KUB4b9C z@hRM}X%lOj`vF7yc9i$Dd~>|Uo+*l#(PfVrFcKLx!kvg@hu`MHix%Db&wc80TrK8L z5NnIm3O*~1YxTkTzLC zZXoRZ5Tp6g7nv{n*5;rOK{(xwt!6kWR`K+!wi>lALAWH_m7QXR2gWw>4-C<r`e@Ev!c8veAMd&d!)0r{^1Yjb6;4p0V3#VkZ-6QcImASm&mZayST;!LxUV#JO0+}B>5}4 zg5isWwApIiTOc4WDIp7&UOok$qGV_+8Ig$MmLTj=2N{$}s8Vf$Mr3kBOGCma$MTzs z%X|faDyTbPZmOrN$Qm0h^q5`R$1r^SFGY^X)z3%8OsQL z{IQIl=1=|H!$ZqxNgAMOQ|vr4n!{Yu;v8}-yJ&@f@IGUtD@d|Ez%(QFwl;liyp@S+ z6Kyq9=BgUSBz7iv9^W1i_4K|`G9-+XZV=q9->Lh6<`LX8s1?JFA# zY~9LnVCfJ|J`ye^Y&v?p(u#iE*y-8WG_tTT+GR5(xN4H^X=m1M5o}MN9A#bruUU8B zV7}!(ZoNtwu`AXrK?BNX#CMPnDc7rUg3Ya;e|%$d)9sh}{63xZz@t@TSHDg4eNMgn z-n3MP3#n;7>-(=ib$EWwy;qKatLLt)fV!T58A2Om>Rg>&Ufi$lUmA{&xjzd@#6359o{BM(SfcUgYe59}>1EH<=uYL*~7MiR`;w{YhdYz&gYx zM2*UK{Vy8tJNbQ?=$)G$eX?-Cy4|oVVZ58`{osn%hPTz{F*~U-AK&F%NZ_i_mXCbH zu3%@PK{Mw86Lk;t!!xGYuPXOFJ)KwNkr8s598bvUg}r7K$d!v)Kib4gNr#Zbbvho) zJ|I2Z*a5R-FAe~{*ytfAP45K+%R8?Q|xT|6WEz zaHl|JAVqb?2Ur56JE zWBG&D9@VH1S`zF#+ucQ)FBZJCKdN00kLL9#jB1~J_DZCE)`Bwe?rkL@L?g#b*;#yU zJlaK9qcEB1B?vr);f*1IbjYZYXB;)l;#@6>!P`q;?wogPQ?RS{nt@AXm2M^NMtMlz zUz{W>B+}mB%+C3cnl)^aSlPSBH}}#my4;hypiR4{!8i74Yz&YC@}AD3u8$O$R;W+8 z6^mj74{=GhByur^lYg6kBz{kZ41t(5t{wgAs0TT73s<>|i}!5feKeAU{bsc~6F^HK z;*Erq&od?URFI?+kZA59SXxn%@Yce9>R^jZtM46dw<<^4$mn&0`y?UOBUXq*c43J=J;A);o7h@q)Wz%E+{2i6)V0o?SHAr)hAiON?mI=f^SMIl8~y$kuZa^J-c}Is&Kg%|8ZqZ?g0otCK5Tgt>65U;35_ zT?>s9T!Po=fmx=C)z?ieI7<(MoMpkKH5>?yBCFoTaxw9*=h|ty-Tb1>BWq#7J_GGW zztB$h7e+pfiIxg36BS)Sye z?FTZWx$T#)R!SDcK}OE?3Y4)WBaDU2}Fa(1!w!G~&1s;BO z;ilo>Jj|TSFh}&l!#d1bh#FN9Z6@})Mj`MX>7BfIpQ~fK4Zp0A^`<*7wTwOY_hXcv za25?XQ)Bc5;jvTms9H`ygS0P&nabZMPrAp3k~qd~rjar%xlcwOni`FED`@f`8}*Os z6MXVXiW1700GSMqo8)m#F=gMzyTQC9d{tURI%guOOg3872e`ka*;W~ok@ zWk3UAz5xAPCP!WqP*($&L z>kkVjQ=Vwq7xk%XdhErUM3kz0JGj^2T3x#{2Ngr3eUmTdp2ike?lX`Jd z-3eKH)mP5-Xc3u_!}A&>XZWZ)O3*|!AdEk{caH2|5?AC;`)l|gMIM5?(!fv>v;2^cc~W6?{mlHLs9@5a){!W_4^?z+5>hAo67As z{X$D|8;kK5LBU%)9P7Il7olL_Yq}SdquX`9GY$IHkTnH3WIg<=#zqFzH&H#GPcx^g zz0hf0ZvC(_uBlBT?_4+vn#jq}Fi0Zp(E|ygV9Cf8bS=+D-_@XZxly1#69M7|sE`!v)F;|ZKe@fE3`X_tWWB1ALfZ6Xa9o_HuB${E^EDWKT zypdctGoa9SCWnWG8Uz-+1QA}Pw3+kpK&4YSsXbv-b||k=0)WV>!xHY~h~g&bzUyN`Po|hOEl+&!77$b{WKbRRuaKW?h>L0yKn?BhnGuf*`$dA`D zsbz(G4p;_+NF=V%_ofPr>>K8jMmCh%P$_`{1Gakv0->zeg%zv?3l#A~H4oJ|6xm$5 zTnYX33vB>6i){D0(OPT55>$MOThPn)bPj!4IZ_B&0|pIA&kRPQXznmd(z1``YE|6! zq77CJ5EphQu!Z*ajN<0QNn=vYpbLJtAZ&6pdo_{M(^$i(lzw!%c^NXEnAjpWGWrT-LYtG#Uu<-zetz)6VEB?K z4&Tk&k;=)ret@Jno=0gd?zsP^yp{nVyb5Qa?R?>6yQeT$x=WCU8$ zMaCyNx~v_@!#g{sy_ce1#ZIM=x7{5?x!W%$+lr3)S)w-vo0F_=yyW@CZ+O zdr%0ZEpW5GXN&Iy`3;@DDKj<3_%LyjpJ5B+vUjAzgW3+S)vcI(X}*H?10F$rx|rV2 z3`;Hl?pWsLFI=9(IF^MmQ(>?ME*=fe3D_AMN_$MB{J#D_)A{FNo=+>sCTt!zrxj!4IKEe$kI4`H zGvAB9u)bIbn$wE0i3`V=kdw;C49NaD#eWGJa#}2Q!v8qOe^MUIKS%8GcL6Kae_Akh zp!|EmRjfZp@F@(zX~EcGE@Nn!tJt-E+KbGeQy{M;KVBeoy zKl%NbrxwK@Yk|FQ`D46xx*PVK?|7PbQWF|K*6lCc(420Lecb-OdFGA3r8)Ls@pN2epS3eMIAg#4Bb)yNoDo*xo$jvc zd9zOKs(obd|Esf?{cC+oK^hza4Fm=T24ucGUK8XOiGMx!bTu)wr?s^=akVj}wJ@}| zHl+VQKcY3V^rClmGN!jRw6vqQGITSfH@2g^frG?>e^?8f8;m2GB5{0nU6kZr33UTJng}PMk4qT|&0yg`wl6U4-P%$qnFJV>%TN zJ<%Y=+xZaDLT!6j($cfjvmH$Xh8Ym|xSH?AMmI8LEx-|Dj>+hCcfD|N-U?Z7?7?IN zpA~}c6x6h##lnBKVh;_G93%6?g)3SVncT2qzA0+`GBS599LLvO}E2gurN%o9kt7}&r~^$sWq_4r&&qA zez-}9H&wR+vl5*PV}!cN2aus(JKSd2d!ImUDQ=@al$u6ssv<9&b~9nuTS z(RH~YAzC0VdK5=nm@2CGU5x=!wRasTfyG#gc&4ILv30$a01vX&XDh~wKA4UC4;LR6 z8#K@g&-i=9q@d2Yr=BGlQ`<$62*Kt1>e|}4Z%+rgw!LudGigl8u5oQz>m_kSDV#+M z4|f>vS!2|$WAeyMH#wv%@V%X7^WbF)b92Y#^kstMzT+9E3hG7rKA&38-s7E|KAz^t z74nK)L)?7`3tri_0zAAccn7!&PU`M%VVr&Jr-(=Rf|b90eSCUYY)DElS~xgbVk_}E z=fEFCK^hvy3TA&*91H}+8v^9@{Xa5-nEx+~K*`kE;lC`P>Enjns|5_4WnSZx1HgiV zjY!EuM2gc`1S|F?XgRa-Q|cPHkH0qxe840%Vi2?~Ko%jvLIufcXwn@%4QUq#}q+NJY`+s!F$0 zS~Rcau*g;-mK1p+?7oK(RUgF7!Ix%P?ISphO=Ab$d;!L-AB*`I;5>3>W#GaTXAWDt zqM-T~Rjc7Bn*~NZos>l}zVb{9ISHGSoJ8;*ViM3Qqu`$er(pLdwGE49mD0foP$BLd zwJQQ)pux>Ozk-)sg=O6h@coJyhz`eM`<*U*yp8n!i&NL}jQOGm&Oc@?<-3;)fQ91s=IksYxl4IaAxSaZEa1*WWb5SY= zBJ~`C9@(a-S4j&ZEA&(!(+8v8h~6QN6ss{$`KUItyiZp`4sfT9@9Imu6#e-#zLqqU zc0SbAwP|c<&rsL+pH>~OEgKd)X)Libm#4M>=iPO^=QRBByku!SX7BFdboL5^Z;yfB z{C1A*06+Fz2-!)PA+n-5mwicSyI7l{E4algHlD}aqTq9uPU@I3k)6G=@VbWj3iW@Q zT6xrEO6{wu1ws9lsr~;EZ%-AQQr|e8JbqFeuib#0ZH}&?b)0 zaJ6Uw&~S<)zX@d!fmbuIDBYF;v4ynO5!@pbFVN~o;Js&dLPg1|L%(#W1z!e}6@X)7 z9L@VMM<`@XK5S&j$ewGw3ZW&E9;HKC?09z4>b>Fmu7kqYDXOR!@${&~o5h8j`$2nU zXKnq^a|7V*%k?ym%ljad@u)T$LqW8aB%B*{2<7v1h zH1H8UqEX_DQ+}-#a@c zp%Fhp>nbO#aS(WnSZ$d<26up3k>4KnQ!MzNHM8A%1?#WTkw_sBfxdUlKCo_o!2hYL zgOrm|C!io8f`1tmV*lSqh2Qfc;s2dO{gD^})FqmSu<0uY#3jiOgHX zN=XMGj4od!u8r#GO={A~Ou1;+ruj{tO>I`1bjDYPCyolTO`$t^Kvz;71<*_OP_UWf zSa~CfB=8Mz%Ro`Ssc0w*7RoNkaPmyYXlOz8iS-bM>ZDe}bwE21NQloN?BMhE< zu#$?(n`q8M+?ug{orGhGhDKIsvW4peJTB_0E*b7U#rlpS1Sm}BNMJ;O7L!(LT?mz= z5O2fLTkf2-MWrt-?q#1YsK_oT&b9YIh9mZL$zdu{w1bsVBm&QozL2^SVT1P2q*;PQ z7!V=i32kjw!ZaK0XdHCYSfX!PWQl0DO^-6#3jNw6Oe zcd6GMHPiNSGnn+_oqjGq4h*Y6F%+PF3@|uyJJJWX#YG}bHhyao#U0rG@+4&ONQdNL zGZv0-?I;F*Dh5M@wGFb()W(%X~%fj znlMWGrZo!cX-cN{eUxe+GbMvYS=RYR9tg!0{+7|7s*1{>+ewls%koIg&# z*#GH#pwE)nOMn@f!_M-p=%J^2R4JMxr4q-$BnD z%G2}lP*(OGB@){dVkb?b2QIuB9&tF~FEN)+$q9Tu4mX##FOq{>fEKCgx(u9#%9dDd z=Mxo^LdEn7-D*L|$gN8oqm_84xQ0W%YY*1`qrkQww2KedkZ&Ir7LM4BPbo`zjl4bg zbSc}eNBT!RvJY-8BTAkuTb#|E8^yfvLR<+Cu%-1g3@S?MR%Ft_pngw{F~ zOEGJ|@d6y$IU;i=WEb5FJ-de9lFc;c6t9akISFnCD+o^1Wc&ELTprf4wed;I9LSgL z%g#5bJUsb>{&c9UyyeNsug-J^`LAMs$bZbCni$&9n;5zn+8bG!zV0ypd#CxkI~Doc z{xVrvRvK3js}uV29h7`VFVttL?mo0PB?F18z28q+V$-uV&CQwwA&k4UZ6Rr^h_$?G zl`I-l69=082V{)op5T4iS2UyxHou&9>R*k1p17)x%Z8&v-F1kD6K@sKn)}k8Ul{V1@K7TdK#1Bt|g}sQuPjL zV^OAiJ?9}2Vgg~*N;Qt>3VJ`&|Z2HE*F=oEzN6ocCLK0 zJt9m5nKVY337Q;EE=A&|NA&JwV!Y+j8YnzWP_E2HT7=P{TjOt&$wV>42Nakhxwr?b z_N_mrE*kFoRIyQfq?1-^%>_3PyR3gJ8;~v;*X!+t*R+w-%zj+bwzlNGYL(^c{ta`2 zFEbAM!1{RK0^nP_;pZQ8stO9?+WEP)^7+ZQ_cNy@E8EzNE@fzR5HS{?J0|$3N>s;; z#+W>4S79CoH3VP6A;L5hp`p5{;v|Y4GfO%GCAjXF4D|P!YRW;>Upcix>d=hA1^H{S zUE_OSpAcOE1!jE`m=lwy2!U0PZYVM2loTaV5c&{SHN>#l4>Kkv;>dct-TOqk?$P|L zO;eGzNWlOLjP?%g{reWs+Lz{Alh0mb-x+us{NaLK-^!&}D?!cI9!nLdNLdEq9AH&D0 z9bagev$ji$Z6-{Eu9FG7nDTX5^>z1QZlJp$VcMyiqI0g^xyqoW{!Rik<*a$F1! z9NR`HAaXi@QV{_`hhuONks@1&K6XO7u@Ol(P!{ufRHeT>nz`}F#mCjkf544T(H2A~ zNf&@$j*>xsGZ~8nK{Yw!Qc398J^p0aq*Nu5t#Pn~G=a=SkIoXcPir)hUlQp`vZ-cm zO;{%kpB?`MS)3j?qC5SDP%SCMf}K=Fv~zn-kqu0 zi)6C!1R?UlH8?NHf1)Vmc@ddy1vk&t_Y1^*fWSU$9^-s?66^cj`?Jg(?VW5@Di1{q z%V#tPJN4VT4GR_O%5J~WF1l*7X!)ytAn@d2B=c-TBZtZ>HHu{P@e9|@aqr;D(%i)T zK_-2};bM(i?EEz8G1X8yOO6gAXI%$>20S(ZXd*HUhwt0CmNfWXmnI>UtTfyZZqbZT z3i!Tka-Xt%&GjH*N8NURTQAP0Su56OUxv}EY{@u`ywW6S*lFP#?z$Ifj5Z*)@Z*OK zs?sGsj>9B>6#DW*>qx+75z5>7Z-}EVG$KevpA0qNu;J#N>Jv%Y=^r#b_*TAK_WO4TUSASh8wfM6hd>7u-5vl1R> zd~7u9e&2mOi@veGxNI}jW+^H^yiMC70lc0LC$ZpDuMU-GT-R6?&BR0~MgbzpP)r}r zB*e@|+IWeofm3miL6V}q9Jp8`;a({cG+8l0o_LyW(U5rphkz9qysPm_1*f8;bp35` zN)yR(dbYBB_zauOAj)t~#qg-^WupQeF_br@*h*r_TO|fOsClHN3L{Gssuo%_^jr+c zm5idwSsf`f5VZH__ncpd8^2t2k0ahv$xEl2ctfB0x!2s-he6*R!>G5rc<;sz=ru7v zq2RxpxdDyfkrM^wdkT=IReBQ4IA~opzSO_p_9y4GN?7M+vY7Fku>Rafu~4*bYI1wP z_pDO1W`AcK+|2FqNgQ4^EN@NOOq!G$XP_(v5CLj!~Zzv4yaeq#PCR zE99N#ND5LemrJli!pMMJ@o_@IR|F#Ti;JNdC8sg-1 ziLJ@Lx>}!_Ih~M3`U*0>r+K@idb@(iJ_(;A+`PIEw#wr-&CPS9({-qa*A5+OV@4-X zrusrpFBeoJC1c|db80G4zYQaKU@~6Bf=`%E2ZP|#E>K(X6n~u%`{j@8(6}pY=*q0 z8S$cnc=w^Xc`OpaMmcv}>s`FvN&mxos`0@w?!nr@A)$vfh118I2(l`j5A+}T6?_h^ zy$^tMUt{k{lgG@oDvYq7%T)O$dO8yqC)i`=xJo$st?YXupY=yoSXuzi1iIJjepuQW z^kdYt1&0f0>((_rpaL$Vg&I`6ZZcC@wwgQB+*xm3)yNH&fWs`5ytjaot1UWcUa?Q}?6 zL|+WhauwG)tfDN`yAPSC`epMEqh{HeHzWcF0il5VE29qjpEl~h8T7|7s}+IQoCm6_ zmp~bR9&uAi=a3O;M&K0nWI)rqSdpDNS;6Z(zyF%#J%o}Jg4}f2dIp{nnB8)xjC%71 zam55z9m*Ek{lppnvMPujB3D)`ANnEjPLy5vn|QCULPJO728f3k>In{i9Tb zv&8|#ar{~{W!|vBZZBrWk=5zJ{rntSX|_XtF&??}lx9+#P74Dhr(*I1dM$56i=PdI zKbhn!)AK^!%i=FUM1qJjo5f{{61QE%Wf5Two*f_yXYT}79lI3(!T4Y zy*qmW&3oK!vEKb~WghR+`pn;IcJAbL4P-kck!l&-BrF`KAdJycUU8QaI2DfmJo zDKyAtGfJrFQTzLFpTP-RSjmVLkQ#sCEAiYx2wbs@fdSNqKF$MaGZn1RW5RB$_+gry zUanp+HPvB;q%tZQq~MHpi6Ap%^{1gMPmyxeZj&BDHi>*D$d9}!Lol{Rkt(KKs%WPL zDoJxCRy|!8Ew7N2wz<3N>aTa)J(y zNvE~m&dwdupbrrF3YaMyhR2CYeQxvGeFKj`!!>^oasw6yG9;xScR-Y6ErOL#tOl2s z!1M^`#Ke*F^(li9`?Y>D4Z;$r8aZDgl=d8eW*BKT|He>bp^OiLO;{z=kct@r94*&V z!01arqH)&5l!H$fSKkHk_W%KcFcn_nywq8;11G#)jvCUeyMZ0JH%rMZq>C1JO@l*4 z>p3~6bhE+ZK&H4O7^;Gu?W%h05gUo7@E)ZEN6x|3&`zxt~ovc6s4I z%L2lHW~b)?GpK;L+$8U&Ic(gq z1Ki?{mhqw5E1Bgzzf8YoMepfar8hbXJ0f@ zWo9L%sfw~EO3X<#aOL>95V>591O<&OjX}^<@B@$w)nJ6;t&HWyl0_x`LtL#g zxbepr&~6!*)AMs^L`1)i^~Kd@y_$6(|7Jx@9Rs?2=7LX-#cP8zNQ zl5Aizg9pY(>4V+Ng9NM`_Bta7-3if2=fjUQ*;cXoTq0VsmP!+-7XLn z8D5?#P?r>H9yBEiqXBL$6%?QI^&my@QOd`oZP?DxX7)FL3z;`@{)_I--H0kQcO268 zw16ToX5*b)*j6lUB0WhC6S;B*FgzitRS(Ox&&C`2ZpjkwQ$R!-HDdE+3?A5g#Ml<6 z9?m-URfIO3zj^_CPD1C`A+60RXc94BwwQ^h?l6eJ2?Xp2h-95CdDeuLNZYM?;nF$@@P~~aHX`_9ubp3Q3{B&^Gm^pkhTwd&f9CEX(xVgXWN+3x z?OJNI?-KHH54&-9Lp-Ht&&fH!&D;a{-&8Nq18VKoYODD;?zS93zC8N^F1{=Jfbfyf z$Yi~XU2&1895Sx_x-T{SsodVDq04>Zc~8>#SpC?F@atD?ZTU;HDNZ3xmR51W(x=v*Lz(2D z8uGR8=Cajp*RIgTp1C-&-=spu0M7gi5x3X~Td{G7?KW4KJ?aLd)*1M+ii~Cg6s$I> zh%3Q$_UQv*_z$N;-#feYTi-NW?TG?z(3h@^cjCCTH2PHw@1d`)dc5+&V-cnb+d5pl za9s&cgRX0B33Qh8=VT5fh}rbc|(xlMo1C+AP#O_Z$|=zEx)2cL?# z4i3;$N%xb{sChP8ABJL^;&3x^Z1pZGi(j5{2=aI*+$Vfy8K7;RqC=%~o16JIm`^NU zZp7a@>sPMa`kb{>aO32B*MM{f6}frJ5rf&@n_f__4FwOS=t$wuUcGBHUzoYS(r>;2 z15z7c#T4bF!k@~71`ztEDjdXnypz|Ti1!#IR3G%I|r}1$pcKwsJIZt+jkmO7T<{wlPF+l@Z)YpWB|BTfEj20( zMtGITMs&oPQ4YNexDUrgDuklCL`;csmCP^c%p3ROi30ur$@v^`U`dbjWtP@wRj^AP zOM*M}cf#5Y`KU7Icm^X=wv=Fq#4DG+Bd#I=)C41UbUidRB!>oLO#Lz^M;?+8DGA@+ zEZpdX+cGoGJ8tGmS{~K$xCb6!zz?4kz(K8r=-o1VVkC;CHfjwOHr1<4hkxrN`o#6Pk$v=(2@M<##c#n0t(%-xzItHh?P zdT9_htG+0Iwkf=d;3-E-)qh;fT=1xxhc=s-;`wQ)0o5Pm(b#&zoXpnuoA{YLVCdyU z_gN1_G4y?jCZ0?Pl#18= z(;q5h!SqvOs+8reR~XQ`a3AprI*UR*mjD#(YGLUoMa^I%LzF2RV|d&R$uU5+!(}BU zH%b=Sv81bl_o-%aHawMg*sIGs^~BP_ z(yc;OPPyz6G+{|Blq}g)am`E-#fo+!X$E@HDL(G)C(X+TKv3i4Hss+wV1y^gzNc}|>< zln8A729&X})f?aSeP47m7133v>^r}lUikV4rX}p2&9NuMm~gn(Y|$(NlXHJM{D#L| z#QxWZpYgg!{>T1;^?y5jS4-MIc$TzouBOa?xOO*7Q+Mb8Vq^YyOU%;F#MFcC^(S*0 zC-!KA*e|htFAPh5t=zkS21%s^^n(lo37WtY5Giyb_$v2<@5m4HYnr%&Q4mU&SzvJQ z-_pUBfhJF@RgHy1Pz=buV4p4Bmc0n&rZ1%~rE=pY(nl&7r8Ov%YiR4s9?v0y{P7h%iQmZbAPR&XKJ3 zgT_Oblswy>x{EKt3tJW~QMe3(j$(FY_;kMEa6M){xMONKI?@r+v-7wq*>eq0F8@%C zjdP7x2b;~1JR4gpf=6GJ4wDbr;D;Z%}0ylRpbLj7Ap;bIE_B7>#8#pOJ0SeT;rDVY@SnY>fSBE!h zVCi-ld7oo-INvz`&>=lb5pMZs?z%MA~-A%X54ib zaKb0vSL4qPQpoAII~^4sF^@$KHDJo=db(SETTNF^Qm4~vXJEY76CPTbA=K&7aTaV5 z($R^%*n@lA5QXfls0mGZ<3}y}0-W~WJ3ib~a|epr16N1~!r~0GbcpwG7zC@m`dXu& zz>R4&hmPux&z%n&t9&3{$_^$fc6JV*Zdq66g9ty#rt*Y=V_mwM)7ihzYnPwX`605h zP-x!LULoIsxZu>j$at0EO@HRvrCBjKE3-N!99@nkx2{IV?SUK<{NiN`@fOkgQND^X z#N_^hy{Tm*kiTg_rYnf&SsAV#DRe1bX+h993^L(sOYl?@DijU!oxXN=4u(J-)|HeK z%8L4u4D>A{(dK$6pj$4l%uwqDyoA3}jqAwQ%iP}liI8G1z?-iQDC8b|o{(kb#In$f zu!9fGkZ9BD#KWBRwExg!eoehFnd^ma#nU|!%^_;kXPFkF zuZ|PRs;q5-))bMXuUP#!H5xXB+u^vykycjkG}y>AH!BZwZq67aPD(9tZ!U@q962J% zEHO`#m!$BEi^+-?pCj6KIYapTUK+VRGU@ZV*xk8z456xkya-o$>2tjZj zTS&bDO2gMJge5#;E!H@5Ek_1y|!|oRmP^H4)lxg9U8|L$hbzT0TVk zw$rNdvh;S-9$FuW{*5$gq|01{+W(OES?&k6u~sfgES zyhggoH0^sQh~W&(p+U{S7|*iXX0VBHXPcmi{`t*F$Q`QoE7QiO-t{iEmzF10_bb!u zLGh}!mumNyM`5nP-4Z`Iq3&so$HVDJe|te=M%%Be&J&zjTg(gwC5jL_bk}(SOV@>< z6;k7SCrZn{9Il>bjeefw_W2KcSEt!P6K?wE#T5s^iyzXInhNqR#fjV8F2RYAI{Idu z^ihh!B*H_O)EsvN`$2Hkh53`nUov$>3+Q}P$UQaSq>aik`b^?0MEKu+ zpr*?~$Qw)VtBCNAxQ!o*)hSM8}&XvLl zVXSby#{dvGnmZY}C$fByg>5#hV^b&$SEXur%6f8+_felT-K0QmV1jA9mBL5uk|g_Z zu3Z&~{E z=*L%)i1+PTc0+DxZW^v!oy3hZ@99ct--*gx1>V7VB^1A799b_4*?9`U4n^BoYhQc1 z-2n_9KO8d}BVl8)_mIEQ$I8G5`&gB5^86V6bjD_yF~x5SY52Z+_8xy}yibvb>$p*m zS!cx!zxk>FX&xu>ELryE^8p#&>B%gw* zYf%NS$OA2U|0*>R`4>}@-`P51 z_D;4xGnFPaZF^Mlzg0Dx5v^zX;C;(0Ignsf5-frUh02kHGS}*`O#vNi(n4sO#Kp)E zC=$3Rgo3Lg??uZ|Ro){dP4e&PuE^iRXDux~aABxi_upi3ws0PBZ(Ia~RlsYg#~xbGH% z1J&X+_ya#Nxsz2d-OXsGAMg4 zbq$}w#cFi0`1zTB2<&NeNoq(CMioAvC4&H7; zPV7Hg3s=C(0>2U5_{cieBUYe~+H7h`#YOa9B!kAWgcsD=6{?ccWb9BtzFn}qfU!5f zKt=}ntArd=x52R|J}1zXp5|(vS|Dga0XA8*AEK7)c0Rttm-^U5KqB$emqk>B$V^aW zrU*MCRBaFf(IOwybTsOsa_g{AvyOl~#865BRu#5Js%?3gW>GZdJp66rdBaoB;&W#oI?km*F;Yt=rBDWO0L#dbLar*AfnkpU?kQD_aEJ;Zq{Q2L5 z#&H*!>~Uum$CEiBFHs$ruZolD-e_o%HFF@e;s6a2+KtfC(Uc=ZmOP_3q~$--FokNy z>N2;pz-#fZ^yLxI_73=hdVs_Zz4nN^W;;P;EgPS$&VBP_sL*W!mP3qi1Exoo#DUl2 zYU7xmrocNXJ!RHj)2@6*AHsMj@DsX9j*bQFasakjb4IKx1KJq2st~8tCs7k2o~CK& zQVupXJ^6UI)PZ+@~Yql;$9AUmR{KLR87c1ywtR3B8E@EC@Zn<~BD!Nmr7Unj65@5#B2{C@par4- z)XzeB1>qv465u-Q$^{=s;RF8z@?BGaq`dwNE2_izvZApHbmh5Yu;gkJ{%x+R2QQLv zgCqO;NNpEEWFJQc5L37vX%!J1n%O;)-BuE;?;;g@W^N&q8~!UM*wu!m-(sv$6%Fex zK}SnU_KJM=UdP8Zww%TmI|$GMTfA;cA$Z@xhJ$SOXc|U)jL%dLX{K}exgm+Fi;gd> znP;mlT@VJGrB!t$KeEObY3KB(AcoUbnkTzKX z$hX`BxAxzL_nUKOAWc-O>WODKhWCrUB>Kwm<-oasdHJPgD&3Ww>){*U1EYa5%i2Sg zvoBpNPQaU9w3+;f(NLsoFcb39gU8x#!_u?WB7a$?QpEQV-;FFrWj?>7>v-m~2EEY< z#@h5}k|D&f?7B^lr@LI!cM*OR|!Sok#<7d_K zZ{vl3zoB(;Zc38>N$MOpgMYwZ&y8VhM)} z5=ARgv;?Mjlr2t9)9(}wwH$r`XOwj_hC6XI%kf;_c!&!_#zcYeOpVtN5WM6u8yXp*HZC1M%Be>6o=UBCbk3H%0bJfnc@9)(SW5#$k6jtBe%u;5V!EAWyW^SJ=? z2F5|GXjXzWkfw96f=K5$Q-*Auh%iR`P5!H@(5dBZ%!jM(awObaLS-Do8VeHYHcTr* zB1HD6Yy&6s!KeL=305Zv6J0op$zLU-QOd2{(CiuCVUUn2U>%dJXazkoAHQigWI}$U z@ODb^Hpi-_-&R7T7R>alvr*3k;2g*}L3DB|y4?Bs%{&&4^gwN$jZ;n}&!OJU20L@S zcq^jpvv{KxFl*ZfJLeEoDxbGq4KugIa;%}|MLIDuDq%MK$kG>$XZwO@m+famT-B_}>!Qotz4OY~8#ob#mCRwcIL+L={NYW-Nv zH$K=8U+rATn{|^16Fg%e@wPbgY`@?!f>?GeI{1VCtd3k@3!WdpR!7qRXwQOzp@IB4 z-}>v&-_LoYznA}WwDo^>+EqdN@6rD{NA+_s@lSz#tpxqgqyJ@0@ptII&ei<=AMfy5 z!Tg_x{`X^FzoY+^#Qt;k=TE_f{eO=B_hk6DNub}c|H>f#Nwfb`Y!Loa*#9-s{qKl> zC6xYTHvcIVuR{d?8D05__@CxE{|@+965>yu>z^Wr_HP0HH(0N~WBQdt^^^Yir;K3y zTbTX>WXRt!|4OX+$?p17@^Jo#G5^uN{2lMFjn|)apFf2k|6j%XpCteMj{DbsW5A!F zU(Y5;{#o4rxhC=NXn$>W{p^AMDe+`~*Ae~w!e84YKRaQ6N-xE)eX-xK`?ZGgvx)Mj ze0l%hf6u?zQu%#}U(?;6#gIQm`!&b?n~VGBmiRpy{C8>O_Z5H5ihicie@YU^KVI=4 ZC)EnlkgtIo1O(~zrS%#F*SUVa`(I(EtMmW> literal 0 HcmV?d00001 diff --git a/code_gen_history/V3_productAll/codegen-ProductLimitCard (1).zip b/code_gen_history/V3_productAll/codegen-ProductLimitCard (1).zip new file mode 100644 index 0000000000000000000000000000000000000000..e35caff6e3f640d558fe42aba36449e6243438b2 GIT binary patch literal 16657 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 VymYfbK#*S^nlKK}4DIM_>^`_yo6wmX+F2Pg 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 _hbL&4!L%GY~W6Xg@O~v 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 literal 0 HcmV?d00001 diff --git a/code_gen_history/V3_productAll/codegen-SuperiorApi.zip b/code_gen_history/V3_productAll/codegen-SuperiorApi.zip new file mode 100644 index 0000000000000000000000000000000000000000..201b85a2ca29662cf1921b7a52565d7d017843b2 GIT binary patch literal 31853 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 literal 0 HcmV?d00001 diff --git a/code_gen_history/V3_productAll/codegen-SuperiorApiSkuConfig.zip b/code_gen_history/V3_productAll/codegen-SuperiorApiSkuConfig.zip new file mode 100644 index 0000000000000000000000000000000000000000..28086b31f1f4649fe0f8f67dd109b5ef710f02d8 GIT binary patch literal 18597 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 literal 0 HcmV?d00001 diff --git a/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java b/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java index 2a994a7610..4f49847714 100644 --- a/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java +++ b/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java @@ -26,4 +26,6 @@ public interface ErrorCodeConstants { ErrorCode HAO_KA_PRODUCT_NOT_EXISTS = new ErrorCode(1_801_001_005, "产品/渠道不存在"); + + ErrorCode ON_SALE_PRODUCT_NOT_EXISTS = new ErrorCode(1_801_001_021, "在售产品不存在"); } diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/OnSaleProductController.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/OnSaleProductController.java new file mode 100644 index 0000000000..3607a85772 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/OnSaleProductController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.*; +import cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct.OnSaleProductDO; +import cn.iocoder.yudao.module.haoka.service.onsaleproduct.OnSaleProductService; + +@Tag(name = "管理后台 - 在售产品") +@RestController +@RequestMapping("/haoka/on-sale-product") +@Validated +public class OnSaleProductController { + + @Resource + private OnSaleProductService onSaleProductService; + + @PostMapping("/create") + @Operation(summary = "创建在售产品") + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:create')") + public CommonResult createOnSaleProduct(@Valid @RequestBody OnSaleProductSaveReqVO createReqVO) { + return success(onSaleProductService.createOnSaleProduct(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新在售产品") + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:update')") + public CommonResult updateOnSaleProduct(@Valid @RequestBody OnSaleProductSaveReqVO updateReqVO) { + onSaleProductService.updateOnSaleProduct(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除在售产品") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:delete')") + public CommonResult deleteOnSaleProduct(@RequestParam("id") Long id) { + onSaleProductService.deleteOnSaleProduct(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得在售产品") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:query')") + public CommonResult getOnSaleProduct(@RequestParam("id") Long id) { + OnSaleProductDO onSaleProduct = onSaleProductService.getOnSaleProduct(id); + return success(BeanUtils.toBean(onSaleProduct, OnSaleProductRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得在售产品分页") + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:query')") + public CommonResult> getOnSaleProductPage(@Valid OnSaleProductPageReqVO pageReqVO) { + PageResult pageResult = onSaleProductService.getOnSaleProductPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OnSaleProductRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出在售产品 Excel") + @PreAuthorize("@ss.hasPermission('haoka:on-sale-product:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportOnSaleProductExcel(@Valid OnSaleProductPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = onSaleProductService.getOnSaleProductPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "在售产品.xls", "数据", OnSaleProductRespVO.class, + BeanUtils.toBean(list, OnSaleProductRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductPageReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductPageReqVO.java new file mode 100644 index 0000000000..e84619f428 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 在售产品分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OnSaleProductPageReqVO extends PageParam { + + @Schema(description = "产品", example = "17875") + private Long parentProductId; + + @Schema(description = "商品名称") + private String name; + + @Schema(description = "商家编码") + private String sku; + + @Schema(description = "上架") + private Boolean onSale; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductRespVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductRespVO.java new file mode 100644 index 0000000000..c313f6a500 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductRespVO.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 在售产品 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OnSaleProductRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10064") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "17875") + @ExcelProperty("产品") + private Long parentProductId; + + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("商品名称") + private String name; + + @Schema(description = "商家编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("商家编码") + private String sku; + + @Schema(description = "商品注意点") + @ExcelProperty("商品注意点") + private String precautions; + + @Schema(description = "卖点,使用逗号隔开") + @ExcelProperty("卖点,使用逗号隔开") + private String sellingPoints; + + @Schema(description = "承接佣金规则") + @ExcelProperty("承接佣金规则") + private String acceptanceRules; + + @Schema(description = "结算要求") + @ExcelProperty("结算要求") + private String settlementRequirement; + + @Schema(description = "佣金结算规则(内部)") + @ExcelProperty("佣金结算规则(内部)") + private String settlementRulesInner; + + @Schema(description = "销售页上传照片", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "销售页上传照片", converter = DictConvert.class) + @DictFormat("infra_boolean_string") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Boolean needSaleUploadImage; + + @Schema(description = "产品主图") + @ExcelProperty("产品主图") + private String mainImg; + + @Schema(description = "商品分享图") + @ExcelProperty("商品分享图") + private String shareImg; + + @Schema(description = "商品详情") + @ExcelProperty("商品详情") + private String detail; + + @Schema(description = "其他备注") + @ExcelProperty("其他备注") + private String otherNote; + + @Schema(description = "月租") + @ExcelProperty("月租") + private String monthlyRent; + + @Schema(description = "语言通话") + @ExcelProperty("语言通话") + private String voiceCall; + + @Schema(description = "通用流量") + @ExcelProperty("通用流量") + private String universalTraffic; + + @Schema(description = "定向流量") + @ExcelProperty("定向流量") + private String targetedTraffic; + + @Schema(description = "归属地") + @ExcelProperty("归属地") + private String belongArea; + + @Schema(description = "套餐详情") + @ExcelProperty("套餐详情") + private String packageDetails; + + @Schema(description = "套餐优惠期") + @ExcelProperty("套餐优惠期") + private Integer packageDiscountPeriod; + + @Schema(description = "优惠期起始时间:当月,次月,三月") + @ExcelProperty("优惠期起始时间:当月,次月,三月") + private Integer packageDiscountPeriodStart; + + @Schema(description = "上架", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("上架") + private Boolean onSale; + + @Schema(description = "是否顶置") + @ExcelProperty("是否顶置") + private Boolean isTop; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductSaveReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductSaveReqVO.java new file mode 100644 index 0000000000..9fc9646ee0 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/onsaleproduct/vo/OnSaleProductSaveReqVO.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 在售产品新增/修改 Request VO") +@Data +public class OnSaleProductSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10064") + private Long id; + + @Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "17875") + @NotNull(message = "产品不能为空") + private Long parentProductId; + + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "商品名称不能为空") + private String name; + + @Schema(description = "商家编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "商家编码不能为空") + private String sku; + + @Schema(description = "商品注意点") + private String precautions; + + @Schema(description = "卖点,使用逗号隔开") + private String sellingPoints; + + @Schema(description = "承接佣金规则") + private String acceptanceRules; + + @Schema(description = "结算要求") + private String settlementRequirement; + + @Schema(description = "佣金结算规则(内部)") + private String settlementRulesInner; + + @Schema(description = "销售页上传照片", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "销售页上传照片不能为空") + private Boolean needSaleUploadImage; + + @Schema(description = "产品主图") + private String mainImg; + + @Schema(description = "商品分享图") + private String shareImg; + + @Schema(description = "商品详情") + private String detail; + + @Schema(description = "其他备注") + private String otherNote; + + @Schema(description = "月租") + private String monthlyRent; + + @Schema(description = "语言通话") + private String voiceCall; + + @Schema(description = "通用流量") + private String universalTraffic; + + @Schema(description = "定向流量") + private String targetedTraffic; + + @Schema(description = "归属地") + private String belongArea; + + @Schema(description = "套餐详情") + private String packageDetails; + + @Schema(description = "套餐优惠期") + private Integer packageDiscountPeriod; + + @Schema(description = "优惠期起始时间:当月,次月,三月") + private Integer packageDiscountPeriodStart; + + @Schema(description = "上架", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "上架不能为空") + private Boolean onSale; + + @Schema(description = "是否顶置") + private Boolean isTop; + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiController.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiController.java index 694b8264de..b37d80244b 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiController.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiController.java @@ -181,6 +181,16 @@ public class SuperiorApiController { return success(superiorApiService.getSuperiorApiSkuConfig(id)); } + + @GetMapping("/superior-api-sku-config/getAll") + @Operation(summary = "获得上游API接口SKU要求配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('haoka:superior-api-sku-config:query')") + public CommonResult> getAllSuperiorApiSkuConfig(@RequestParam("superiorApiId") Long superiorApiId) { + List superiorApiSkuConfig = superiorApiService.getAllSuperiorApiSkuConfig(superiorApiId); + return success(BeanUtils.toBean(superiorApiSkuConfig, SuperiorApiSkuConfigRespVO.class)); + } + // ==================== 子表(产品对接上游配置) ==================== @GetMapping("/superior-product-config/page") @@ -224,4 +234,4 @@ public class SuperiorApiController { return success(superiorApiService.getSuperiorProductConfig(id)); } -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiSkuConfigController.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiSkuConfigController.java index 8b165a4c01..4cedfccacd 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiSkuConfigController.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorapi/SuperiorApiSkuConfigController.java @@ -92,4 +92,4 @@ public class SuperiorApiSkuConfigController { BeanUtils.toBean(list, SuperiorApiSkuConfigRespVO.class)); } -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigPageReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigPageReqVO.java index bb2a8a6147..2b787ab99a 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigPageReqVO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigPageReqVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.haoka.controller.admin.superiorproductconfig.vo; +import com.alibaba.excel.annotation.ExcelProperty; import lombok.*; import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; @@ -18,6 +19,9 @@ public class SuperiorProductConfigPageReqVO extends PageParam { @Schema(description = "上游接口ID", example = "31755") private Long haokaSuperiorApiId; + @Schema(description = "对应上游编码", example = "31755") + private String superiorCode; + @Schema(description = "产品ID", example = "320") private Long haokaProductId; @@ -34,4 +38,4 @@ public class SuperiorProductConfigPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigRespVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigRespVO.java index 50648768f1..68f74b0298 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigRespVO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigRespVO.java @@ -22,6 +22,10 @@ public class SuperiorProductConfigRespVO { @ExcelProperty("上游接口ID") private Long haokaSuperiorApiId; + @Schema(description = "对应上游编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "31755") + @ExcelProperty("对应上游编码") + private String superiorCode; + @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "320") @ExcelProperty("产品ID") private Long haokaProductId; @@ -43,4 +47,4 @@ public class SuperiorProductConfigRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigSaveReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigSaveReqVO.java index ac830ac0f1..3501ad1bd3 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigSaveReqVO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/superiorproductconfig/vo/SuperiorProductConfigSaveReqVO.java @@ -16,6 +16,10 @@ public class SuperiorProductConfigSaveReqVO { @NotNull(message = "上游接口ID不能为空") private Long haokaSuperiorApiId; + @Schema(description = "对应上游编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "31755") + @NotNull(message = "上游编码不能为空") + private String superiorCode; + @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "320") @NotNull(message = "产品ID不能为空") private Long haokaProductId; @@ -31,4 +35,4 @@ public class SuperiorProductConfigSaveReqVO { @Schema(description = "说明") private String remarks; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/onsaleproduct/OnSaleProductDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/onsaleproduct/OnSaleProductDO.java new file mode 100644 index 0000000000..b9e8ab8bbc --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/onsaleproduct/OnSaleProductDO.java @@ -0,0 +1,129 @@ +package cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 在售产品 DO + * + * @author 芋道源码 + */ +@TableName("haoka_on_sale_product") +@KeySequence("haoka_on_sale_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OnSaleProductDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 产品 + */ + private Long parentProductId; + /** + * 商品名称 + */ + private String name; + /** + * 商家编码 + */ + private String sku; + /** + * 商品注意点 + */ + private String precautions; + /** + * 卖点,使用逗号隔开 + */ + private String sellingPoints; + /** + * 承接佣金规则 + */ + private String acceptanceRules; + /** + * 结算要求 + */ + private String settlementRequirement; + /** + * 佣金结算规则(内部) + */ + private String settlementRulesInner; + /** + * 销售页上传照片 + * + * 枚举 {@link TODO infra_boolean_string 对应的类} + */ + private Boolean needSaleUploadImage; + /** + * 产品主图 + */ + private String mainImg; + /** + * 商品分享图 + */ + private String shareImg; + /** + * 商品详情 + */ + private String detail; + /** + * 其他备注 + */ + private String otherNote; + /** + * 月租 + */ + private String monthlyRent; + /** + * 语言通话 + */ + private String voiceCall; + /** + * 通用流量 + */ + private String universalTraffic; + /** + * 定向流量 + */ + private String targetedTraffic; + /** + * 归属地 + */ + private String belongArea; + /** + * 套餐详情 + */ + private String packageDetails; + /** + * 套餐优惠期 + */ + private Integer packageDiscountPeriod; + /** + * 优惠期起始时间:当月,次月,三月 + */ + private Integer packageDiscountPeriodStart; + /** + * 上架 + */ + private Boolean onSale; + /** + * 是否顶置 + */ + private Boolean isTop; + /** + * 部门ID + */ + private Long deptId; + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/superiorproductconfig/SuperiorProductConfigDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/superiorproductconfig/SuperiorProductConfigDO.java index eeff6adf7a..71181051f2 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/superiorproductconfig/SuperiorProductConfigDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/superiorproductconfig/SuperiorProductConfigDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.haoka.dal.dataobject.superiorproductconfig; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; import java.time.LocalDateTime; @@ -31,6 +32,11 @@ public class SuperiorProductConfigDO extends BaseDO { * 上游接口ID */ private Long haokaSuperiorApiId; + /** + * 对应上游编码 + */ + private String superiorCode; + /** * 产品ID */ diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/onsaleproduct/OnSaleProductMapper.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/onsaleproduct/OnSaleProductMapper.java new file mode 100644 index 0000000000..d9777a3b3e --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/onsaleproduct/OnSaleProductMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.haoka.dal.mysql.onsaleproduct; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct.OnSaleProductDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.*; + +/** + * 在售产品 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface OnSaleProductMapper extends BaseMapperX { + + default PageResult selectPage(OnSaleProductPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OnSaleProductDO::getParentProductId, reqVO.getParentProductId()) + .likeIfPresent(OnSaleProductDO::getName, reqVO.getName()) + .likeIfPresent(OnSaleProductDO::getSku, reqVO.getSku()) + .eqIfPresent(OnSaleProductDO::getOnSale, reqVO.getOnSale()) + .betweenIfPresent(OnSaleProductDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(OnSaleProductDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/superiorproductconfig/SuperiorProductConfigMapper.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/superiorproductconfig/SuperiorProductConfigMapper.java index 5cb7354430..b44c13867d 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/superiorproductconfig/SuperiorProductConfigMapper.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/superiorproductconfig/SuperiorProductConfigMapper.java @@ -1,7 +1,5 @@ package cn.iocoder.yudao.module.haoka.dal.mysql.superiorproductconfig; -import java.util.*; - import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -22,6 +20,7 @@ public interface SuperiorProductConfigMapper extends BaseMapperX() .eqIfPresent(SuperiorProductConfigDO::getHaokaSuperiorApiId, reqVO.getHaokaSuperiorApiId()) .eqIfPresent(SuperiorProductConfigDO::getHaokaProductId, reqVO.getHaokaProductId()) + .likeIfPresent(SuperiorProductConfigDO::getSuperiorCode, reqVO.getSuperiorCode()) .eqIfPresent(SuperiorProductConfigDO::getIsConfined, reqVO.getIsConfined()) .eqIfPresent(SuperiorProductConfigDO::getConfig, reqVO.getConfig()) .eqIfPresent(SuperiorProductConfigDO::getRemarks, reqVO.getRemarks()) @@ -46,7 +45,7 @@ public interface SuperiorProductConfigMapper extends BaseMapperX getOnSaleProductPage(OnSaleProductPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImpl.java new file mode 100644 index 0000000000..55b5248bfe --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.haoka.service.onsaleproduct; + +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.*; +import cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct.OnSaleProductDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.haoka.dal.mysql.onsaleproduct.OnSaleProductMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.haoka.enums.ErrorCodeConstants.*; + +/** + * 在售产品 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class OnSaleProductServiceImpl implements OnSaleProductService { + + @Resource + private OnSaleProductMapper onSaleProductMapper; + + @Override + public Long createOnSaleProduct(OnSaleProductSaveReqVO createReqVO) { + // 插入 + OnSaleProductDO onSaleProduct = BeanUtils.toBean(createReqVO, OnSaleProductDO.class); + onSaleProductMapper.insert(onSaleProduct); + // 返回 + return onSaleProduct.getId(); + } + + @Override + public void updateOnSaleProduct(OnSaleProductSaveReqVO updateReqVO) { + // 校验存在 + validateOnSaleProductExists(updateReqVO.getId()); + // 更新 + OnSaleProductDO updateObj = BeanUtils.toBean(updateReqVO, OnSaleProductDO.class); + onSaleProductMapper.updateById(updateObj); + } + + @Override + public void deleteOnSaleProduct(Long id) { + // 校验存在 + validateOnSaleProductExists(id); + // 删除 + onSaleProductMapper.deleteById(id); + } + + private void validateOnSaleProductExists(Long id) { + if (onSaleProductMapper.selectById(id) == null) { + throw exception(ON_SALE_PRODUCT_NOT_EXISTS); + } + } + + @Override + public OnSaleProductDO getOnSaleProduct(Long id) { + return onSaleProductMapper.selectById(id); + } + + @Override + public PageResult getOnSaleProductPage(OnSaleProductPageReqVO pageReqVO) { + return onSaleProductMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiService.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiService.java index bdbcc58bf6..b1c29c9bb0 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiService.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiService.java @@ -178,4 +178,5 @@ public interface SuperiorApiService { */ SuperiorProductConfigDO getSuperiorProductConfig(Long id); -} \ No newline at end of file + List getAllSuperiorApiSkuConfig(Long superiorApiId); +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiServiceImpl.java index 79de894d3e..662c80eae2 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiServiceImpl.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.haoka.service.superiorapi; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -214,6 +215,12 @@ public class SuperiorApiServiceImpl implements SuperiorApiService { return superiorProductConfigMapper.selectById(id); } + @Override + public List getAllSuperiorApiSkuConfig(Long superiorApiId) { + return superiorApiSkuConfigMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(SuperiorApiSkuConfigDO::getHaokaSuperiorApiId, superiorApiId)); + } + private void validateSuperiorProductConfigExists(Long id) { if (superiorProductConfigMapper.selectById(id) == null) { throw exception(SUPERIOR_PRODUCT_CONFIG_NOT_EXISTS); diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigService.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigService.java index c5254a8454..311cd3b33a 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigService.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigService.java @@ -52,4 +52,5 @@ public interface SuperiorApiSkuConfigService { */ PageResult getSuperiorApiSkuConfigPage(SuperiorApiSkuConfigPageReqVO pageReqVO); -} \ No newline at end of file + List getAllSuperiorApiSkuConfig(Long superiorApiId); +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigServiceImpl.java index 077e72f440..9fbeb56c7c 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigServiceImpl.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/superiorapi/SuperiorApiSkuConfigServiceImpl.java @@ -1,11 +1,14 @@ package cn.iocoder.yudao.module.haoka.service.superiorapi; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; + import cn.iocoder.yudao.module.haoka.controller.admin.superiorapi.vo.*; import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorapi.SuperiorApiSkuConfigDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -71,4 +74,10 @@ public class SuperiorApiSkuConfigServiceImpl implements SuperiorApiSkuConfigServ return superiorApiSkuConfigMapper.selectPage(pageReqVO); } -} \ No newline at end of file + @Override + public List getAllSuperiorApiSkuConfig(Long superiorApiId) { + return superiorApiSkuConfigMapper.selectList(new LambdaQueryWrapperX() + .eqIfPresent(SuperiorApiSkuConfigDO::getHaokaSuperiorApiId, superiorApiId)); + } + +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/onsaleproduct/OnSaleProductMapper.xml b/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/onsaleproduct/OnSaleProductMapper.xml new file mode 100644 index 0000000000..f6f3355a76 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/onsaleproduct/OnSaleProductMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/test/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImplTest.java b/yudao-module-haoka/yudao-module-haoka-biz/src/test/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImplTest.java new file mode 100644 index 0000000000..e50e8fad11 --- /dev/null +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/test/java/cn/iocoder/yudao/module/haoka/service/onsaleproduct/OnSaleProductServiceImplTest.java @@ -0,0 +1,146 @@ +package cn.iocoder.yudao.module.haoka.service.onsaleproduct; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import jakarta.annotation.Resource; + +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; + +import cn.iocoder.yudao.module.haoka.controller.admin.onsaleproduct.vo.*; +import cn.iocoder.yudao.module.haoka.dal.dataobject.onsaleproduct.OnSaleProductDO; +import cn.iocoder.yudao.module.haoka.dal.mysql.onsaleproduct.OnSaleProductMapper; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.iocoder.yudao.module.haoka.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link OnSaleProductServiceImpl} 的单元测试类 + * + * @author 芋道源码 + */ +@Import(OnSaleProductServiceImpl.class) +public class OnSaleProductServiceImplTest extends BaseDbUnitTest { + + @Resource + private OnSaleProductServiceImpl onSaleProductService; + + @Resource + private OnSaleProductMapper onSaleProductMapper; + + @Test + public void testCreateOnSaleProduct_success() { + // 准备参数 + OnSaleProductSaveReqVO createReqVO = randomPojo(OnSaleProductSaveReqVO.class).setId(null); + + // 调用 + Long onSaleProductId = onSaleProductService.createOnSaleProduct(createReqVO); + // 断言 + assertNotNull(onSaleProductId); + // 校验记录的属性是否正确 + OnSaleProductDO onSaleProduct = onSaleProductMapper.selectById(onSaleProductId); + assertPojoEquals(createReqVO, onSaleProduct, "id"); + } + + @Test + public void testUpdateOnSaleProduct_success() { + // mock 数据 + OnSaleProductDO dbOnSaleProduct = randomPojo(OnSaleProductDO.class); + onSaleProductMapper.insert(dbOnSaleProduct);// @Sql: 先插入出一条存在的数据 + // 准备参数 + OnSaleProductSaveReqVO updateReqVO = randomPojo(OnSaleProductSaveReqVO.class, o -> { + o.setId(dbOnSaleProduct.getId()); // 设置更新的 ID + }); + + // 调用 + onSaleProductService.updateOnSaleProduct(updateReqVO); + // 校验是否更新正确 + OnSaleProductDO onSaleProduct = onSaleProductMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, onSaleProduct); + } + + @Test + public void testUpdateOnSaleProduct_notExists() { + // 准备参数 + OnSaleProductSaveReqVO updateReqVO = randomPojo(OnSaleProductSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> onSaleProductService.updateOnSaleProduct(updateReqVO), ON_SALE_PRODUCT_NOT_EXISTS); + } + + @Test + public void testDeleteOnSaleProduct_success() { + // mock 数据 + OnSaleProductDO dbOnSaleProduct = randomPojo(OnSaleProductDO.class); + onSaleProductMapper.insert(dbOnSaleProduct);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbOnSaleProduct.getId(); + + // 调用 + onSaleProductService.deleteOnSaleProduct(id); + // 校验数据不存在了 + assertNull(onSaleProductMapper.selectById(id)); + } + + @Test + public void testDeleteOnSaleProduct_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> onSaleProductService.deleteOnSaleProduct(id), ON_SALE_PRODUCT_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetOnSaleProductPage() { + // mock 数据 + OnSaleProductDO dbOnSaleProduct = randomPojo(OnSaleProductDO.class, o -> { // 等会查询到 + o.setParentProductId(null); + o.setName(null); + o.setSku(null); + o.setOnSale(null); + o.setCreateTime(null); + }); + onSaleProductMapper.insert(dbOnSaleProduct); + // 测试 parentProductId 不匹配 + onSaleProductMapper.insert(cloneIgnoreId(dbOnSaleProduct, o -> o.setParentProductId(null))); + // 测试 name 不匹配 + onSaleProductMapper.insert(cloneIgnoreId(dbOnSaleProduct, o -> o.setName(null))); + // 测试 sku 不匹配 + onSaleProductMapper.insert(cloneIgnoreId(dbOnSaleProduct, o -> o.setSku(null))); + // 测试 onSale 不匹配 + onSaleProductMapper.insert(cloneIgnoreId(dbOnSaleProduct, o -> o.setOnSale(null))); + // 测试 createTime 不匹配 + onSaleProductMapper.insert(cloneIgnoreId(dbOnSaleProduct, o -> o.setCreateTime(null))); + // 准备参数 + OnSaleProductPageReqVO reqVO = new OnSaleProductPageReqVO(); + reqVO.setParentProductId(null); + reqVO.setName(null); + reqVO.setSku(null); + reqVO.setOnSale(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = onSaleProductService.getOnSaleProductPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbOnSaleProduct, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/yudao-server/src/main/resources/db/migration/V3.0.10__create_superior_product_config.sql b/yudao-server/src/main/resources/db/migration/V3.0.10__create_superior_product_config.sql index 3bfe04115f..96d3597962 100644 --- a/yudao-server/src/main/resources/db/migration/V3.0.10__create_superior_product_config.sql +++ b/yudao-server/src/main/resources/db/migration/V3.0.10__create_superior_product_config.sql @@ -3,18 +3,19 @@ CREATE TABLE `haoka_superior_product_config` ( `id` bigint(20) NOT NULL PRIMARY KEY COMMENT 'ID', `haoka_superior_api_id` bigint(20) NOT NULL COMMENT '上游接口ID', + `superior_code` varchar(512) NOT NULL COMMENT '对应上游编码', `haoka_product_id` bigint(20) NOT NULL COMMENT '产品ID', - `is_confined` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否已配置', - `config` text NOT NULL COMMENT '值', - `remarks` text COMMENT '说明', + `is_confined` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否已配置', + `config` text NOT NULL COMMENT '值', + `remarks` text COMMENT '说明', `dept_id` bigint(20) COMMENT '部门ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '租户编号', UNIQUE (haoka_superior_api_id, haoka_product_id) ) COMMENT = '产品对接上游配置'; diff --git a/yudao-server/src/main/resources/db/migration/V3.0.14__create_sku_product.sql b/yudao-server/src/main/resources/db/migration/V3.0.14__create_sku_product.sql new file mode 100644 index 0000000000..aa614cf049 --- /dev/null +++ b/yudao-server/src/main/resources/db/migration/V3.0.14__create_sku_product.sql @@ -0,0 +1,36 @@ +DROP TABLE IF EXISTS `haoka_on_sale_product`; +CREATE TABLE `haoka_on_sale_product` +( + `id` bigint(20) NOT NULL PRIMARY KEY COMMENT 'ID', + `parent_product_id` bigint(20) NOT NULL COMMENT '产品', + `name` varchar(512) NOT NULL COMMENT '商品名称', + `sku` varchar(512) NOT NULL COMMENT '商家编码', + `precautions` varchar(1024) COMMENT '商品注意点', + `selling_points` varchar(1024) COMMENT '卖点,使用逗号隔开', + `acceptance_rules` varchar(512) COMMENT '承接佣金规则', + `settlement_requirement` varchar(512) COMMENT '结算要求', + `settlement_rules_inner` varchar(512) COMMENT '佣金结算规则(内部)', + `need_sale_upload_image` bit(1) NOT NULL DEFAULT b'0' COMMENT '销售页上传照片', + `main_img` varchar(2048) COMMENT '产品主图', + `share_img` varchar(2048) COMMENT '商品分享图', + `detail` longtext COMMENT '商品详情', + `other_note` longtext COMMENT '其他备注', + `monthly_rent` varchar(512) COMMENT '月租', + `voice_call` varchar(512) COMMENT '语言通话', + `universal_traffic` varchar(512) COMMENT '通用流量', + `targeted_traffic` varchar(512) COMMENT '定向流量', + `belong_area` text COMMENT '归属地', + `package_details` longtext COMMENT '套餐详情', + `package_discount_period` int(11) COMMENT '套餐优惠期', + `package_discount_period_start` int(11) COMMENT '优惠期起始时间:当月,次月,三月', + `on_sale` bit(1) NOT NULL DEFAULT b'1' COMMENT '上架', + `is_top` bit(1) DEFAULT b'0' COMMENT '是否顶置', + `dept_id` bigint(20) COMMENT '部门ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '租户编号', + UNIQUE (tenant_id, sku) +) COMMENT = '在售产品'; diff --git a/yudao-server/src/main/resources/db/migration/V3.0.15__insert_onsale_product_menu.sql b/yudao-server/src/main/resources/db/migration/V3.0.15__insert_onsale_product_menu.sql new file mode 100644 index 0000000000..80fb289801 --- /dev/null +++ b/yudao-server/src/main/resources/db/migration/V3.0.15__insert_onsale_product_menu.sql @@ -0,0 +1,31 @@ +-- 菜单 SQL +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status, component_name) +VALUES ('在售产品管理', '', 2, 0, 2912, + 'on-sale-product', '', 'haoka/onsaleproduct/index', 0, 'OnSaleProduct'); + +-- 按钮父菜单ID +-- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('在售产品查询', 'haoka:on-sale-product:query', 3, 1, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('在售产品创建', 'haoka:on-sale-product:create', 3, 2, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('在售产品更新', 'haoka:on-sale-product:update', 3, 3, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('在售产品删除', 'haoka:on-sale-product:delete', 3, 4, @parentId, + '', '', '', 0); +INSERT INTO system_menu(name, permission, type, sort, parent_id, + path, icon, component, status) +VALUES ('在售产品导出', 'haoka:on-sale-product:export', 3, 5, @parentId, + '', '', '', 0);