From 18f00d70d4c938e46a7a7dffb09c22500b3383b6 Mon Sep 17 00:00:00 2001 From: zhaojingkui <1553836110@qq.com> Date: Wed, 14 May 2025 15:12:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B6=88=E6=81=AF=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pPowerManger.zip | Bin 0 -> 105391 bytes src/pPowerManger/LowerCommManager.cpp | 12 ++- src/pPowerManger/PowerManger.cpp | 21 ++-- src/pPowerManger/UpperCommManager.cpp | 94 +++++++++++------- src/pPowerManger/UpperCommManager.h | 45 ++++----- src/pPowerManger/driver.cpp | 4 - src/pPowerManger/fsm/StandbyState.cpp | 7 +- src/pPowerManger/pmSysvariable.h | 5 +- src/pPowerManger/udpComm.cpp | 27 +++-- src/pPowerManger/udpComm.h | 4 +- src/pPowerManger/upmsg/uDevice_depth.h | 52 ++++++++++ .../{msg => upmsg}/uDevice_secdistState.h | 0 .../upmsg/uExternComm_setDeviceSwitch_cmd.h | 7 ++ .../upmsg/uExternComm_setOpCondition.h | 43 ++++++++ .../upmsg/uExternComm_setOpMode_cmd.h | 2 + .../upmsg/uExternComm_setPowerSystem_cmd.h | 2 + src/pPowerManger/upmsg/uPlan_planStop_cmd.h | 2 + src/pPowerManger/upmsg/uPlan_taskStart_cmd.h | 2 + .../{msg => upmsg}/uPower_currentState_st.h | 0 .../{msg => upmsg}/uPower_disSysState.h | 0 .../{msg => upmsg}/uPower_equInsState.h | 0 .../{msg => upmsg}/uPower_equState.h | 0 src/pPowerManger/upmsg/uPower_equState_cmd.h | 2 + .../{msg => upmsg}/uPower_fcsState.h | 0 .../{msg => upmsg}/uPower_liBatState.h | 0 .../{msg => upmsg}/uPower_pmState.h | 0 src/pPowerManger/upmsg/uPower_sysState_cmd.h | 2 + 27 files changed, 245 insertions(+), 88 deletions(-) create mode 100644 src/pPowerManger.zip create mode 100644 src/pPowerManger/upmsg/uDevice_depth.h rename src/pPowerManger/{msg => upmsg}/uDevice_secdistState.h (100%) create mode 100644 src/pPowerManger/upmsg/uExternComm_setDeviceSwitch_cmd.h create mode 100644 src/pPowerManger/upmsg/uExternComm_setOpCondition.h create mode 100644 src/pPowerManger/upmsg/uExternComm_setOpMode_cmd.h create mode 100644 src/pPowerManger/upmsg/uExternComm_setPowerSystem_cmd.h create mode 100644 src/pPowerManger/upmsg/uPlan_planStop_cmd.h create mode 100644 src/pPowerManger/upmsg/uPlan_taskStart_cmd.h rename src/pPowerManger/{msg => upmsg}/uPower_currentState_st.h (100%) rename src/pPowerManger/{msg => upmsg}/uPower_disSysState.h (100%) rename src/pPowerManger/{msg => upmsg}/uPower_equInsState.h (100%) rename src/pPowerManger/{msg => upmsg}/uPower_equState.h (100%) create mode 100644 src/pPowerManger/upmsg/uPower_equState_cmd.h rename src/pPowerManger/{msg => upmsg}/uPower_fcsState.h (100%) rename src/pPowerManger/{msg => upmsg}/uPower_liBatState.h (100%) rename src/pPowerManger/{msg => upmsg}/uPower_pmState.h (100%) create mode 100644 src/pPowerManger/upmsg/uPower_sysState_cmd.h diff --git a/src/pPowerManger.zip b/src/pPowerManger.zip new file mode 100644 index 0000000000000000000000000000000000000000..a15027bb5296c9d8c44f633691e3fc54a4ad7cb1 GIT binary patch literal 105391 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

&X05dxm+W?(o~E^gul4?jdX*;~*dlZAanw zub@EMWqf=s^fCs77jis{@;y1tU!ZYahP+56o+qh-yV5@i_8L>Sr?vp!dL78>6Zf}GqO{Y7^TLj^*yqCsnrNIIhvklEj2Xi)1IegGk9A{hJ~m)|^(qSfh!zc}eG z{t9VSqSV8w+tH>4p&`evDSlf;Wp>*yO`R%&OQWRRt`XTnh3YzoE|EN(3T1{4Lfs?r z-3d{F=Ujsn@?5kgm&WA#`_W?bt*GsEoTG*b6(``2Ah(-6Edkb2YXOiXCIq~kXfrcu zI9rgGy2pkXB#&Zne{z|s%~1;c)@~asy1r^Hkj=?yC*p54G!qH`J~bbA=sfypKKAH5 z3TZwD={y=~J{IXb6481Xq;*S6=~5w0k_LCXUc}LFGXS%U6c(gqxWhO}av#fx;yL6o;9so7M%`w9nOtl;P^48|9s&Y`68W!#6~Vd& z33HBrJ|WUz#Y#XuzyLnurn-<|Pt=7HTmjJt%Qr4@KrFxcz)+tslR^9SYa<__egWod zB0mrB8FKs+j9E}bln@X|*f$NTN@dOfH){$k56poqPpD0bwR+lJHeJ@h4p$@r_t61& zT|Pn-$fn;I^0^4bo9<&iyNBFU90LGr0L2=zm1hYU9q)BZHpCgx6UCj5zmS`!d=5~c z93gao3ZdRRw<}hd9Ec-6Ne%?W5GQs57BwT@rraSx+v;AV^YhnSk)BQj_8{{Ex*lG@4kc&V zP%0ImuUCJCuI=BOX+;H&sfAv>JV0$Q*clY#ow3o@5}T604Om=fD=~TzxP4Lkg+rr}>Q;BN zRIF?Hye5=RrvUg5b$Qz{bwfjBBftilis3F!&Yu@}d7-=0MB0Sso50J{eLyOF%AO|( zuk9fylUN^e9FFz9corJEYO<5l7bTmT<+D|K^p-|8kXAfRz>*!NsXQ3g7q@)L0 z5H|^-(+vcEF(XW@K@h!4&B?bBh|Uu*<`j@Fem4M{r4(F&6=iaUnYKzL2c}+z`Cf%P zNYoF9Y;}Ez&gbcY^D%q%c!`hUF+cZC*de=-B87IQs;s6#>em#>5?8DkH=T|*`+x0N372>Tah+vua7RP zuMa;fuMa0LXs4jKky31^msX^tO$r>w_*z?L_GE-t2Uo}7Enf38J<%eM$JiqL=62wC zQ7lV{MFtcpYV=ScJR(BnEQ+X-*0j*0z;B$}=pJHl&$NI3+pr2QkP=xVgU;@Tl6u@U zy{_wO#*Zs3G$N*zaBoas;f{v(rN|wqP#PKTI4#i~hen_Y@(+?SGf3amzqlv8UTV@c zLswb3-H;H=Uqk*bcL3ZpmM_4MnW@(f#}#~fAQ^sx@}j;&t!0_~%oRf`xb8t0oM`dF zMh;b7;*x0*ByLp#TFE}E*2m~jfj=G02a}8Ju{>FnepkaBm$ZNWQ?g`5#=uVmmiK&Y zt?zvSh956yE|mC?k-2uxXGA|R6x;$!sZ$Jvq!8#NnB(x^ff7sXRvB}wj)kNB!8pUz z+)KR%o4E!CO>BpxH)Tnlp$&7IIA4mPcC!s&22u;<+WZ(?xroGE21nDFDM*KnUSj2DIjS z)seD; zed9U>3sxp3@|J0yTPa_Yg>NvDv_e2z9mp?kSn85ASCJAs%ajmGSSrgj ze(^&4qO?v3x$NZKWM8>sK4%f|u$0j@LQ0KP{wrFh4V;EAg=Z^O2i){GpqBn(#kHA` zHU@diDcYr>pf=5@v5-M3K%)C6`XS>9z1S5%1(Q>f6b3pS&@dKc=x4q)V3uvk!a7#S z0UAKfJ)87VVx|%(ANpKJ1lQn}YjT`6vLq}3WVWQ@D0h*midFZ&`&xfa#We%IYfanO=8Hsas*Ab4+>K~-odyEb!M zc0cD#K9;^c-&ONlo~a^{s}yB^NA$!YxzW1(za6=qm6UcNKLbGZ0lrH=h;S;~DUw5E zn2%Ip(AI#DgDChNLJA06w$~&~NTI0>k1qEXP_n#n=WZDw9i(eJ$vnE<_vRy}ArKP? z8(^!XQ^`P`@{NaF0sAnEk(D|FsPI*jprxXF;dpB0CWAnL_;Uhgk;vdZRvdLJUm6LC zAJmFjMBs4#an4YHYKV^2o-aPM{7hD>+~-zDz38E ztBWhjme@o5E(@nG(&l2XJhPW&LiN0{kFG1Zkr{r@fneSN!z_|Qk@t~?1eRfn+jBxv z4PTkGZv&y;bqwy5RoTRdTFx(%C6)HoR(A$)oZtqR%uGE@VL{#PE zR#r(?!-BS5aIU9tXEdQ}bP+L`8-Gse5G&ATf$%shg@t_J(9`GS52MJ2CIc@Lxa>7a zWelEwV;GOr5Z>PN#?4>^Co02@q;r5%ds)j-F_!9cc~3xhG#$#@%hO+tI;RV4j?YIu zI5rIq32?HG_h^nAXXC#eC5?@7Wd+n#is*pZ+J--q|7n~Mc7R|`1cqh?XT2zQh9F&? z%%0Jw#Ve>SDXW#@#rMI6!!)FFR;&#z9ExfWz++s2>6GS#JX02s=dk!h&Ao zT6AKFNS3i&j8KP42w$e)+Z)E)2Hb=`wa5smQf6eyXgTsfr2{nuqDU`Smo?ld#xMX_ zbw@NJH%mM(Vp+l%jEC?`_DqimnxDoBaaxb5s_?T>*9Tj0%}}wfjxQ^?Y=D04;s?%E zW|?vd^znaAgF}oNF~RU<+s+~N4KO4Z37BC|!Tg)ggW{eF0UoiQnvGk(Z}wE&PnfW% zgPA#MnNEHX9^@kh)UlvLZ^X7(O)YsqgSCfRNf-hpwmQko>H{ULg$JR7hOZkceXPsv z2Pr7rvI;RrZ*lK;+`bg!*^e(vh<(?qHUV~bCjM7sk{7g{s)u~pE+W%P&I-3@Yq^8`fWR>60SLCKBN z&AM0-`P?un=rEayKpg#Uq+hvN+A>2!xkQ=Ck(%O0%lln&0>!}dpmygNKG#aWyb<#^ z*X&Dfu*`ZDAPOHMYR^V;@qqDR36ZNB->{!MaReG!btH*g@SE^e_-W*oEidy47K?lb z{&TanfLYNwY9!Ex>5*%}hDsmN$O2dz(M2-OEg^DjF3*J0<_9n*X)-joo^_v4=99|D zwiv%$RL3!cruc~Q9rsMgXKZi9O}9-^O9{0)u9A%NaeV0-q@mKnXPJ)6 zLOR&TgAzr39mOJW7EyWYA(~2vo(qCa)PM}a5V3Z)@|4wi`%T{D6ZPxNWuis0ZrE+_ zJ)5|#RkZT6?^`cF;abEu-#oJpg^yV208IvtTyyalo6|@Fr#;c+O$7lgtNw7P6Ok(Zqm3~Im%a~AJ{fccLM#H^eE&QgNZbY0 zF4XUAkl|h*-j`k>4YI2;M`D)C+z#HAXL6umNPR->SRzSF1U}ezAWrs}U9pt9OshsR zhIzFYOXsFSRH}0j(u1hB@f+2}WZRgr{D2iltwrtcWs;$tqYmAb)0>P>ELnlp{8b{a z*xvFP1Blb$l#6E=?-W}qcahudLL$Zw_<8oSzOJ7EE8MyuU|^sSi=ABdxX<0Rd^ zX`>14)z42iTdGxD0!Qq56cDTomXoy{ewIL{B5)cs=DzgLh#0sDM+zPX5!t*fEP0od zyorrRG&6V^)5fF1nK)*EdiLFjZ|q3#9Qf=S(!kM15=fb3T$@)x2{O4tJZ12qn-Sxf zD6Bh#_;MAq%K7ovmmf$ND0T=3e<$T(5&BHSbU$BG4kHMfFrHzeY>uc{*L=z<*I(e#$PrH;x@;lt%_j#0nX0Mnhpmfq_1*v0Yr?Uumhx@-oN-Z;3m-HZ7SK#pZNU&`qf zM%8qiyydrC^@y^H7}XC=On$<)(;_Y@vxD%#uYhSv?6ZzU&M~> zDM?mj$eYg*>zk}_wm*kU#9E~hC4B@#zL4Vf9T}tQ7)-1u@``Sqp%z##wTA;Wftbq9 z)M>zK`B$D*yp_{Vh@UAvCHPkZ4fg?o9b%C-uzqrtF(g|FQj7c#N;+qNYEYp0eMoFMS>+SOS`46{y+GCO|=QIFJW9ORj`RB(7wRgU0iOd zD!;cdb22V;@HSf|kdC-Tj@Qxv3D*03Z^M*!7(T((^4~T--JB|!`k0Lbkrtf(gs1x& zk@Vh&`bEJrGTqxfY$4d09`5}$&=DEL?ee{Mk{{sb+{Q_cR@gr3mp054z2z1NNNjZV zIj^iY0Le5FB(l)~rM)1p(1tsf22QtLJrTxu#AL2nT??nA{J^Y24jV}J>20A5!K(EZ zaEe;f&JxLgjG+X%{_&-XjRhzK=RUgD!8je1gAA5~Q*|ns7)h}}Q>~&R zH*NXH;hi$oX?Df2%|*JHJwcG%ReM}3bmL0(M&KfPx-SCH-t?&5_r@_*4`w7w>dGSbJPo? zc-z^mHQBpY)$T}I%M~OWFWhFgv%a-M$~m&iLMnE6l4e5b0g__3Q=5tVXTYTTw)Rx> z1xCe|1G$32c7UH8xm7>;*fHC&49pa?GddFfS_b2p6n^>O@XbEzp*Y z`UYZ7^*bEM#hf>~LW>Re@>QEBRky9Hl%$ZFFMABs?YfevR~kKiqWf(XhUJWSbK1ko zbKi2UD1oC@fQe+xK#sp8ck!cMyR7V{Wugk%Bs|qNvotG~FnEd-36-QuS zV#2T*{#ERYjFkIbM8iFFD%Y3V26sy!cB0o}lo&#T_Ds;_6bIhiTt{`c*vRTJe%I1Z zz4b={liqwy27s?#ljg2fYLqEDVI9*zWV3OfK1gh?4rdR<`GF}$fltDE${h17hDyf~ zjZs#%e19Bh6Lg+hw!T%MZWU3ZEsov3yZX5_p7#eyM)CS*V%8sv|KaN!gDmZqtjq4Q zZQJVVvTfV8ZQHhO+qP|2b(j5B-#ZiUd^aZMMC9Jj$sZ@;MC8i7^U2JW4(bk%O0bq& zFwC+c`R)R^?!ZsW1O`h{yhcEKNpUN4F&63eeyUCdv98AiWpc!jL>&N^yQ>CBYcv={}4&=QkYu50AZ2{_-z5Dx5P; zRYn}&JOvWlw2o!CpGgQD>!itMwGHq%R-PL^hr@|5ZwM$t7kl^Z-MRjgw{_z@eMVBb z2CIAEuFj0TK`}1TPaK@QYYCK<=BPoybYKM`jHsQWN8U&-f84$DkrtgmGJ_ zUmER-sx?&QGY{71xdrL+Wy`SOTQhAa@=W?}Cf1RIJb-7fj$u50@D|QlF|tUPHC0x) zd!7w{kHG6-FuW&}30kU{oRP3``HdKoNe~?f*)A0?pUneyHkC>%d7k8$Lr$%4?<78w z)cKi1x_|Bdw%#LVwPVuTV;Bu^c8xEt;l`5TQir-jDSaHjrzNmg+jx^pgxk zo_nWlMmLreHH{odrc29gB!Bm=qLq@~EJ=R_=z_>ZaDK==rz_l7GSMwyI~dTHQZpC4HjN&Oje{P%FiK)ce+t`A+M=DQ;ksxxziskeByk`f8e zFB)9kS9G&U4K7@8$6ikNjp)Goe@}K5pO70kst-JtUuW*ww__oH=R&tVqTOHj(UGb* zr4n~5NcB_=6cO7$fZ^1DeW!8@ZQO0cY+NVw&L(O$0eRwCe;-J&{JL|s&#-1Fi}&RkpG%n2>saPLovm(*Fqix>4r>)5O5 zs+0s@Wp30sCirw0Sg4#P=R%NiDcu^DoHKz^R#v&UFqZCUO4{6OzgGDQdBC?KotJb7 z?@^Qbg5k)+Ltf4l!+id#wh%OUyGD7bglbr&%O=$*~?Hd(*ijcjs{ywuk^lNk5sV&FdnjZa=tMtjxJ>;U{pYU)dE&E>|I&?GavpuHes*yK2{#7##lFukR6lRPpM?Q(V#|h5kk7}z^zKG7D~)Tph2qgO zl~e4duP(f5ywISq{7%R%K``H#;ED}~`GBaa=rj3F?ne@UUs9Ji*{u$xgesK(!D&tk zpw|>_gqb>|(G+AClL-=c4}$lb!B)99k>nWh z3WRMde$5!B*G_IN%7RVgP*Y2*@+JD|v2Sa()_ z9@$O)!`w>%$fXXc=F$-Ile&v&ENK5i?ur*kX*dZa!}04KY4AvEXVU@B+-YUZ196Dw zO@d=RGxb=khBayQ4ztm+`DgOae&4%K#~v3)=k&hjW?N!dp>xXoEde^Yo1}Pc|EI}a zidfm4iX<;IVB#byAl3zRRs~c%2Az_Svg1Fb$~r#<_oeRvP>A!}2yUV@SFKjd%GRq( zD_bY=#A!BsR@S~kFugl7rlHY1xzD=_T%`2?!qCW^+zYR;FiuUZQq*l~6u=u<4z|pW z5qGqB+4>c*8+{F}Qd^*U2vrbRNgC{Zjr{m_M`DgMFoj-KuHAN*Q|h3Bq}J|~hRhPsdKS6lbFg1w8}{o;N7s=U+Eg_9jr zVH_9FP$Vj=lBCCK&iACSC7lYNRakxQtrEy*46@ROi$$ss<}}d^=uvqgEPparA==C8 zbHA!10Kq*N_puBIVu2e+Aigj~EdGrebeJ3ATJpO!6|>k=-3hm+=*IHm*YGz>rIuhue zg0`8p7kL>mf=WjdsAN&BcUL?DEicLGqA(Q&HN{uGFR~qJD0#JPXb6>hjJd5$nN6pP zbwz^AZfQ*|=#px|frP*4qIZ6P^DD5N)-*G@SY#c;$Lo%?WZbB6Xc`eBCYg`@n#S)| zo!ZZ~6{dfi5n^OQ__zBSIcy5w>VyC}YSdzVN4eqQx&&xJWwXDg;?_kIBX0x+ZG1Rr za>$DTn#pi>P<#s~HM#O{L|L`sX?#Oux`DC=_*l745ZUA*Cf~??BVSYl$4*A!HIf8C z$5uvRweA@p${}*9c#;ehu|w`08j~C&%{t5al&QV?GBx4fMuE)Ltw}(=>J_>wPO!2$ zmQEcwFtTpkWO{xzeZpdXx3Z4gEW{ux$++pAabKqhXktBpp!nSuS6@VQ=90V^kOrF2 zSwkE;2U-=-@}^&{ph`<0PB)xY&L{hQn+C-hl?>c9p6&$NvvBVv@-K@jK7BK_F<;%e zJ|T35R+di}CEly0x@*v{BX+^x6U+7A_g+ePysixz(CS&6p|N_r-RERB^jsEc*c`Aw z-xPdYVOd&Pn?2^>LQZ5BocRk~f#gxbTAuGAzmC>XTV^YrJ008 zSA*^TX!N?7AHjZ-s4;asrxA6>&%OCEIy12cfUK1a0b|g4gf{&Adq~W63XZ1sD=NoO zXhe52w|9PoGJW>}pw^|}clK|Jg7$YHP+cD|T3IuV1O_MX56Qi{~% zIx)}+KvZu1FW|^Zmmvylw0=lIBIK=x(ttZI`ZH zhsXL+Amb4HLcC9ue)XXu>Ze;2h6n|N;k}wy;R=Rum15SnL6Uwh?MJjaA6u6n(vtej z?+&hol>@(gh3aEm_7;h}95@#1E9o!Plecn=cmjD&Sz0ih<8&(Q(+)JQT6Oe=0d`1) zI&c(3x@v;q!rcYva&dOmvyKN6XD23+d4_Vl=LxK#29Y@OmZ6k36;&59OVW4KUnwMB zviaS!V1^^jiCU;+)ESz9ObL8d17tP34T{csfOx?mbBQf%s!XH z$;!l2S(`(g?xrE#H!=7LWx&_}nD|-O(1Ja?PkSg7Gb}yM#*#E%qJ0CnVF}d zwzBGn$;Gnu%|i$vY$6&&CMw0rwO)piqL9D#Bwl&B@To?ow<>|Dd_S-^qtE2C34|B- ztSEXyehVEL_F4EV^?o>{0_PPNPDZ=v_GlLPWxh~B5_a8oyp6yq*JznM4D-mLBwIc)YBw!#O*afXvjz`2(UXPeMf`QoV$9%x3%`?q z@b>Mad}1!$i_V4Snap8SFKZAE-qq2h(5-OOU}sKB^@kFEln4u|-=qo^XjxN1qa4Dh zzj+b914{%Ssv;G5SPC;Oo-1F|5wHvv4YsR#6*94SB}#Eg?z%nof-rQQWJQvHqD(XO zK>a@&n&J83JYEesUlVnOKKA%ujhB(0gu}FcX%nR);f=&k=p^uqq6O>_0?YKS z(2t1BES`#a6;oE_{B5Ajn<{OqU)HRTUo~OqpE}rYIqDuV_iPh&4fMQi$x@)F$I;$y zt7n0gxDz@Pf;Sn8E#BV^H2v&XygQnfH9z!NHoF;?TQsmQHmVpq40>%$LEaHBCR{Fc zs!aOb>*n&^n6>Dj1w3zlk}A8lPXN1iC{0iImKNA(1{eW$x_j9H+_XI0uF&#Y>?=nw zuoll}2UHVFu0?V;r=)vHt_=aKdrlbXH3``@Zk7LW8YPKd7D*T|{rw#lnsVS6L7)lE zoz=Q->O`grHLOquU9pUrd%=)$ex$h5!MIEeTV5PS`Bx`q7lrRr^!7q%C+GH_uiNG%VvVt!9KDp7-y%y6jRE@0Fhp#tEV2Jp~=s%!zO z)dou?2Xt-)G7iC*d>p6e(gbW6fHC%QGUgaAVj>M%s{&oTyg#pRvbu8rpCf^+m?-P4nNInfhvd=gh#67jE*C zTWjk~qbgL+67XoUbW1X+;>|RY4M6REE0=>G;3x^8(iNIsL#ixmtOyBj@@?>s!zOY- zdo)Sy6y5qj1511ll2mHFY#8`3F+bk6(@eYq5wNVubquS|PXYx1!dXhDuj1~j9%L$` zZs*Ums^u|H_G_bGh8Eby7TCos>!iz87BE*Z^H-PT>yPy7LkFfOVDr;ag;`kQTx`kC z*7R4KrsxCJ4$kJ5p{|s=@3X`4$=QntQ2C|Qz^fXc#Jk%#NK%DWdrMi(H3k z^!g)lQv_+5)r@?HY4ZG$k-1ND%;Q4_isO|!Uv3SF&fSo5=XpH+o+S497x>@iM`;ZP znN)TFfWIw{|1>`$v}mdW{MY9R;(uv=RFIQ2b2Jj2#wcrJBWU8%QC_CV!38|kmexz(Y}HJR1Eppyy^h~<>ZF5f;fiA-+-{qJT{BxbCTgoErvd9ERh608tlDy3!L#XwQK%`)xW_ z3Vk1p8}EO@r!@0ttSvh#!DxDo&rkHGd20Ma>RDG1@l%c{;)dX^lrt&Y1Nk9BZ3Cu)T6Nex z+w);09L0E`D6)4W^n(2i5VIhkKcJ9c|4J^`hfS@?d8P>(Fs3OiEYpN-*_z#%VS>NI zXwP#(%w?HgzC^M|0N5Afz==?U{(Aj3$TrLIz7j>Fyr=bZ)#wLQ3WKbZal6$x!}mn% zC}6@hm#?%*nE=vEzpC8zbw9J0_qp|$fnO6L;2U%O+RyF`ugyrbJ}^5zuTL%v>z=4x zA8yZB+3$UG>({@xqrH*GJUFyJQK~HkHSXqw?@aGr<|=aL-u>Nq)OeKE9i zSKG^b#OSJR#fFR5UCj-@Q)*;JcSHkkB*jZ3Z3et#O?D#{Xtl6uVVMiTmE3qM7H3L< zwpm*$n*c@STBy`uLY`}r1Smd?kE*PIZij=elC>sJRw`fz>U0NBC8?Trtjn%&PT|hE zR=V|KoMx!&xo^Ow?v@1}Yh<9^j>a{RML1XH%3RFaW?`xc&p= z5Y~UjoLfQx0H6cl1K7&ixER?>=~PBDtYqSg3Gs>vdgYR zsPw9*WmDZR5EzW=%C}Nxeo$z(2jRxhtm-hiIfkbWN0Rt55Bu^7cSGWks2}sxQi+Uy z$YvAE;hXYvNT!@vESAaYnmDZH3Ta{EG^><$NBx4+42S1x!p_mH^AwF41XU&71t2#mn41IO*_jh@P4;U@ z1d*XetJTdwB;XX|=TEgh(apx=`N5$07O1);lQpT$=`jJpN9F~fMU?Rp64$?$76CDSD>Ukk3Rgq{YWPSoulIaoa63J+t;v_yW zFzzpxSHE-}4*;Ey1jJh>aE_*1>GjK|uCVwe){xudr@O^UcZ6iXT;X2BxwHrqL5|)e zO9Pvj>~?D5;aYZJbxfE1eA?PQd_sGgS|9rjYqmMY*lS3py9on=1Gwv!v4o=hz`KaB zdT8XXyA50c?b@iMaJVXFK84(MHEfnSg?1fsQv&Xj888!;${kADd_F2$1H~wv6Q9|I z4YPw6CspR43A$D}n!h-ghMm%iirB8q z#j@{+wyO9rGKM`2R`&*p6Vt%K{??v-8koPMpu$H;5N3qBkh1Ys#&p;45i>n(@nlQ?{=mlmAh;bT5hEX~vwS~Ztdu7dsJHuIw)}v4p%bie^K&p{QN!th-Lo4&)@F||A`+f2NSw~_5V9Q6PY@F%fEJ4XaGQv({D8X zYxxI`iDLi!94#0C0KxzEb58%lr;e?af}@_J(SP9*@|wt$@>~Ay|A9*h(I&OvuG(&J)ZVT2_sM$C3rgAr3f~g{L$u5tc~j# zTgE7fOh;|ZDYL5vZ00VLC?t!qFqJ^XPt;Ci({=O8yDBT5Lp3Symb9IKDjMT$Pz&lE#eBf&GAG#+n{RlR=dibS5U) zR(|c!(4KI-RkyvrJ2P~sf239!>n!IU-EZt4I0Czqn=Ciy4DjN^hfq&tV7qb6LC16O zKNj}HD&(0nTih!SN(v9PXB8+>RI;bll1L{VhbM?>?H`up*6&2U!WJTDo5X#DV#?k^ zMCt)tdbWaWZSFGuK(0Wa4z!C5H5o;pqP{Q8e~&CEr%O^Q98FWKy1qVgR|;qkqLMBp zqVQ<>lXwM5JHJpy-DPgAeTU@waq_nRQPR^>6Hn6m&Z#r`%d*QYMge5NAe8naY4D#zM5g~O|6%Y& z>ShX?qZpslHL`o<$gQ2dn!Wa|;*-qyB1BW-=|!W<#jCDrumOI9 z&kz$vWWla0sXrd~_aS_Y3o&?(=n6Ynn9dan7(R7Rm4C_L-OSbCI*MVjFzPC{ae2Ny zJ=ttybiagjw0N_zvpZUy9^cwv()Nj@0~*S(5LKNp@tRqhnN6v#tMr;<*bui{jm$?f z)SviSVOE{~GS{66Jzni?D`zfrT53*uw{ied9oU_Cry0O?R0M}vHTa>!cDRdOJGYeE z>r<7I6nS1cezY8{=`FZ2@7)5wu~_LDm7}j)u|Hki!4 z$c%)?*F9@DSI)Y$(7iBT51d4T7cvft8IE;T`YS?`s-2Aw;Rp#2SZY z`^-|2#c`G?C1SJ8cIm>1m)uhE#oy2IsV8Rg%-_#(fjlw`(hG&Am||eHzCS8!0ALGU zmk<&uCEiSM#P=+_T3`9QBj0ARsMCtLP=++NZXb768kwaAR9_v^NeAbde;AypVhJJX zo23WWIZ_MH1*)bO>rvxGC@>Qw7n`9=j36RM4bF2*feR!Qni5mwl$;rw$|FmWrHPCh zGU{@sn=R5J>?#gtd6EhgkK#up9v|xxD5ZY@m?WS;0t#drh0ej$QxWKj*237O^C^>q zz=$Oi@G*&Inhj>&{x%$jWfV5EhU|}!;X#(+35O(&owLS(@V1lvoUh?fO9h zjr;7y?p_fl;6_g#eUb%kr|m{M9DHQxU<$K)9ZndBcI>(O9Jl-NqYG>Z$I5auF9tt| ze6t8Rl#KjTzGz30$&4wZDow}!ybyNeF)i32jkC^*a3nK385M4;2<7H?G&Kb$aQT&O zi10GSf&)2gb4l03%@8p@)iFNfkMJ9no#43GCpSskoB=~5=d2BNu-m0pexvlYfqows zT@p=hPWS}&+YedU1%8OOvg4@$so zEJ&%jsYC|0$oS0hV@RnbC!*=P(sbMLaehTYg{}x1!_I#Ulu~vl#AeBdJK}KK!9-~s zgDA6`7sI9&+?v*<9PEQ=p>MxqPU1HWG!?Kq6Cggo1h7(tv!{{^V$Ke_G7Bo)!mIHm9)?q37yl{?h7$m--I+nN$ahF zKIIUUZI}wONvbYjr=tS66wO75M57NsA77=u@1_snTw2Mo9tB2!U&QXzS*=s?GM7(0 zlE_VJ2H)uqSh8oxA_9(eS=t)iJO%1;_yX7UzPuS+aR<_q;n>#aTvqm@@>ADP7nr^2 zp5ersHPWk>-6xvO`Nn*R$n~O_6M(iTw4FIkCiz;$s-}sHqkn5CzBV`?zhG=>06qnw z=r>~{B0}Lgz9||);|kv_0pV$BK(2z|EQT;|SOSEkb0A3^jde+5*KW^tpdfY9pt_(x zQ96M3oENDi@g|RX-vM&wh9ZrtzrRDBI&^m7u4dt~e+fA|T1nIH6>?^TJnl4F-4)eKa?*GD9)Qj!A1Ivrqz+Nu!YEQ znu{8YRKkTn$n>aC0xpR$`9~ zwCN@fC;+jejS^!++CTvL1pg4=$HD~Lan5i1fx1Y(QiektnK)cg9?sj%wh3KulwY%y2-2l#H1>yBr=gA~|{;o zM3gN=9`hrmmFP2mkkCyC+x52Q+0y-&H0nE@Vd;%!X+BaijV z*JbXwsVh9D|Tx@wSbkGpqYEjF!|Zs-t3o}-Rhr}k)Bi* z#*kD^x><>ekYjPLZ1P!&gDk@c%8Y#98lXMVx}Z9>i$WvKg0yyd=#eijYe1rP{_cm&9z`pn9{E`Ow!}fG>mLY}L1=V)v>|O%gz1;hW?csf;h6 zh6PvzH}81`T6(TCuDFxptn+V`HL9EU@)vC_&@#~)%PgIZ%x2S%M32punebm-w4U#9 z3Ep5h(4}i{$zUd3(Squ(DUz{Ox(bSHj(p%K*pIhpQR#7hVyZ&MeRfN$pVkeQuEiD>?7;C1Sof>Vy5A+|>stHCzAuylP{<^})0V%o?w zz1%_q0Q|j3{&U4_`XBLBuo3_O+5dXQ6f|-+GceL|FfuSSb8!5hmrUXBXv+Ls{_g*I z$<&mvK^a5YepC6Tx2-3`W!em>v&09&BE|K?c)?VSj9uz(x!jn&?p}bS1~EjT$PkrN zMxs!wjX%8)Eu9(HCq_x9wvTZSE#)wwZx6lPX z^XP(yErWM?eI*l9Ebk-(nL5`%GnzP|Cq)zn+VMe;|#yK8Hb#+76nJ0}~& z#UBuqYdQijDlKcqVz%WhXw)*&GCmhIDXD?b)IA%M-|1rG^~=4Q&A$ZvO@wVJ;19ca zc+~+RyBM9bg4t>Ym*>Xp9IJg}6pj^=$Oh?Lvc$mPemBHSi5X)204U*NsUHN3D?a}e zV5qDDAmL)9^ui_Kp8J|8SSO~MNkLJ8A)V91dtZGG9Ob_uQD&$`G3w!p#4 zRE6cPSnZ@MGPz-9n8cdTEoW9cJ=|X4K@+VXEtHl=0j}>Ie7xdZgVpQ_yGzf-t3$JAq@DQ(Z3; zj3rXmVzI(4#N-XXvbKE&-584;lCyIr3L;E7;O_S29Mwm)208w0Gl{Qsb#2*%jmZ5e zq{a=)*G4fXPws`^aNKMgqWA?sm`Js#{1d4W35TZs-oJsoNqC4b!9u`&ksErZ^`jMH zLKXJGj$LE)$@yeGL1R1~KSq$FdXPPHln8q?)`UHlU`7;QAWAjcLGh_dLAnCB9or}n z$A}+Bc=8dhSWss|NWJiqwC1GOt=A2mqXC{UUQ}b?_wTNOj{KVX)RuHf_H0Z&8Azdu+~||3JZ(e0q0%9iFxW3tMimo#|IOs5S{I+ zsK#|^I|I@i5uzPt%Ga<0jO zuo+Ktx6qr0(=xSe-<;`Pv5%Je&Iq7cWpxB0x*QIEJP ztJJ@y(UaIJtuzIswcDiLuta#R`tFmMTWJP#2B?59lGJfZH=ga(tnU4oO<&KYnd)=5 zld;4F%ga&#{Io3tuk0@!DKVX?FbRbQsK_y$s4xkH3cep)s4$6y4yee}9jVgsg%YU9 z*DsYD!;q~WWkK3dYT(2vng=M=~FIvSHjR zTOJ`xx?(&8!Y`}55*D^cPNW{EELe*Ym4VI+>Im*TtBbYF>IS2`s>H(x&KDXG)b>!&`NiSD($AmK ze{6?Yl@2$7Y9JWgtl`fbE!g3m?3*z-oWZx&$UixWM8t`EXnQyYj?0{dDz4u_6%J^7 zi;on}XRi?8NZcuK5+pr#Vx9qH<;+XTo8_nkqdeRxxJM|uUxbUdyeC@6iMP0ugZ>uN zrh!)sKZEsD#PXBTt|BN@)X!a!j1nz3NDofTCJJtk-a+UYbhcft8*R?jHm(PzyQwee z?k*3BJl7^G#F2hf`l+w@#6ecU&Qeojt|Sg4cf*x!0Gi?a7QJH9wZ2<;fIAOyS`i9* zD+efW(@9HSmdL2}Y`WudtctN#>S)TBV_ne*uw%1S&dDn1<=)H$-3hB9ZAP@$^}xwm zO(Swq)J&5DaJFj~%|?`X=&G6XL?l_~YO%B5_~a(nyp|C?a3Q%Gk__ak4RB8Ed$*+{ zky_)0wC`ohu~}-?0$0sb@?oSOzG6#}=LitGLQU(S86Bn>e%b~Q8$-yYH*C>xlqin4 z{Z(|Pqo)H$!fayh#@Za= zC6ifwnUm#8b)sF1E|=n(Nr7l!ii#mHkrd|saXz}GD7o&V{syaIs<)$hq{-KgiWTtC zy$NIZUMXY6#yd6aGJ*2S%J?Ei-UV}qN@<3SJPoEG6M0nlnm(2Q8pA#o0UEo@*dWd+bDA1Vcz{qQGe;J^<1#^tp4@H5U6xc$ zmzsbQ$tmz{3PT>HFgo`qWYP3DuP0gFqFNyEDRClaf-QPxpu7nZtZ{;DBiCpwGi2A1 zzcojm2K;znFiL7wl+i#ZlsM|tpFZ`f`G(A846CJv6LYI91O>2YoWy8%M%%+eV{Qe# z%XTeFX0se$Q)&G1(ivpc-HT{AN^G6a2!9_agC*bt+3ffRsz5C{cF?`@5Uo6B%*#q@ z=aK%_6x{U;P4@3UekBWEP_H#XtyEkfb<6-Tu2QxeccnhMqlYXSb|7y;npuFd3uUUp zF1*)zZfYVJv=;k(T2ep=gRK+SS{kfv)qUAcMBC@=cayGZ=ywIAli#`uumQ?gH1;-S z@dJ}qXk#x8^t?xFGGqIEdfhf$`XbEV-7Xn{3PeqG+D>C5_Yf9Tafv-;quimFqC|*P zCgDU)@s#lf`i`!u*PXgVT`|PdTXW5s7O{*(JVE_Hw^m{8YQ*Q`Xu;;|_GMs12G8fK zC#L7^eINwy*XKje*9+3&l8Ig48(X!%fE%E^%%N>)uq0r%*D145wN1BTKp zASJL_M|ix^8n@*;s1)v!9X&7EKp`aYn>8O-IC)-foT<(kC&Yq@B%_&wutkSISGgFP z-wb{ZOF5J}$0Qa-GTBj2`N|`H65Aj((hH;1@e(E*o=gPd9oXq6xq)@T?f|mUv>0|b zHN4o(gwx&{-oTYBb+7F8VKU+=gw%o0_mdv4&w~(|ulK2vo^Pwc`(n*d7j??oLDF|) zvSo%1Yc5pn|6!@P?`f1%&_2d4IhAq%HJ)}ZqltKVP0rG$HL#0~=XpJLg`eO+B0`Yh zU?lXt6bXDUM||H43GZJW4+hjp+#f^oOp)q@JX>5b>EM1hL$<%l<-bavgj_qEFv*C? zIt)p{!^|>?;6W!68nf^ftm0BUF-U~!BJXr?Ldc9)0?t!?@7R;JKWWG#7vhHU*fmrE zVs@R?izGw8+wGJ8DwY2#CH^Y!iNBS9;+Y37q($|UPo@PCiECV-;*DLm+C*Mvm`8CFj2laFGju>CV`iw&ErJvKaNrYTkHaC>Wch{Q*HAt&n8>)6mXo!*aH>sI=k$^eZK13qJ(AYEjm|4}Jnj>B~3h>hQ0 zf9|^tWh*dPmmiF&=)2O{ePaq18$l&6U16-{6)UzJ;m;0B)29NM4$9S^9j~Ms9q$~J zmmsN`8ywtAJkKs%m{nT;h1ZEpu%A8UVfsa#LNw+YX*NgcqQ`S*Ux0t}Z|;vdz?MG% z0RDz?{{(nZeE;MS9uWZmDE`*~@81bC11EcXBkO<1cRCJ^|CKnq*da3gZ~4yA-*wEY~vO z!i=CzBS;$fI}^}D5@HaxDAKC%2iqV}?IhX{Xwpj>zr@+FlO)|+0YCo+fsP(5sXhRS zn`xt>JHxKC!^aR1gbAdRjhV?*kp@!U6;LEG(en0z30F$bs4-ZGpHCV|I5 zqUcp?hIQxU7HRph&@jTsEhmeOAH>QOF(d&@h5s5#8T^W?ej%}}by&r` zyCH;8o(%WgEEPQODWtu6*s$g)F{06=%w{+L!nn!2>c0*b=!XJ7ze2I{%{{@fXm}6v z0=5nlI$sWR`qRO&;)9TU5;+Ytsx}v>hwnZ$t3tq1Cy$x$aD64rGsTZ3n!f|wK+-h= zBH>mJautKZO7b~cxS%=;P?R3yV(1oMU1@t!PK%RmIqh}a0MpAf%@1~@!dn#PvbDO-j$gaQ|f%jn&Y)nzJ); zU%noF0sYq#a&t=FRf#USz&Wz{F|R6)fK?9fZ6{U0FCa{^L<2ug5EyEA9>C>ArU1~y zi`E9_j*x?|Q^)p?XhNDj`3M_nh`y4TKp6p zz7Ty~&HmiDx&xNN&0vlr_3UIuLr-Is;BvU^wRg~gjvk+mud@`N&v&Y>Mz^<%t&gpl z3pcMhdU%+Z-zv1qncX}orQx3GiGU>qC*#Qm~6yuTi*6Dos)3IqV)uOIryLlOP@$3qo==Rg0i zEa&&@Ck40vFUzU0No4xp@*mzQDQU*yyKrvg=1m1ALjsYR;Mb|10dyFJVp*Y~K{&D+ z>6#d)GgHUpBxxXGoh}_80^iS2Q@ZWWFhZ#h8%g~yXcIDqv?;nPT<5f>?GvuM?a9ul zU9dViVD3g(@sJLq3fCECyfkAHowcUP@TL->Ks2OA0)T|?r~~3OOmM!qHOh2fRpoDf zKfU}2(m{;TH3;Ztk=`Wq#<#X`g|VaZ2SqRoIH<3(3%)_`FI%oqbynkk8~f2Y;N?YW z78zZSWEkMAhwy_5=_f1LnmMT|^>gU#N!!}e-r3br>0tEMSi{6zw*Kw9Sf>-A zL#^2hhVO&wxe(d-?J*eOPC4>|t_WXE;)a;j<13z*t9_SW6$lB437&=o@dYt6ApsK? zcPR&KJHtBQ2Yn@WUvH;tYo%Xq&+WgUJL#H-=*wq+%hm2~P7;8D<`fkt4EmA5lv(+6 zLT3vR;t>?7sK+JhM&EapUxa3sXitm;mNegw@P-Z*@aVOQ#r{~WlW^lEt%%h?9j$-@kwIRD zEL4F&wkC{KgJ112gIa6zwO^$w(jNnu5b?f$e1H82`8|||h{gHm$0^r)wFQx!GqgNZ z2M0^z-aPqz8}#}tAegC|_Qm6LWLR0=`Bp-X(HY1+x8P+dd_++3Sy@0X?ULtOd7|I| zjfe>&Qk1IfhEL_|(+u4J+Ku-|D~$W~>Atz^gSbZPEh!p`4UYUI0u9I%nB1(Kh(lj2 z2LUH58cw*H2q&r!BH=W-bJ(VxR*nF&T~7R&p?qIr77eC+2MRG4jgSnIm2yPr>+bNs zAP^Q`wG#WC=>Kcz|3HBIe-z0C;C&a({2zz3r5V58|Mv>E=(}d-zvVv=(4;11vq1m1 zutjjI2xm6@YPrAAT5^3hR|%_mATXcVj;n#WOg}_UN&widoSC373>xCff3VCSSTq3G zC)oIw&X#Ar*n;cGDGR5a*&FZI&A~_w4x2=)8Ad6^FS&}OuBr6)hAwU8b8)pb#f$KE z5}G<;%e-7c_VkU18$ct-^y zLFbA`1baoK8jD70mT=s-WJhWzbnrL%M8iiF)#M*h=6~$@&Rc&VUF=<{&00$Hz+%dX z_w}UQ`R6w@$@s|b~i^nsg?AX?sJ#U@0V}Xoc`ah$!;j>B-!^_H2 z!chv{?9X#uc;Lx&J?Vg(*nB;{`FKBd-A%}C3b1Mp?N=MOi?U)BB46~r-5cLtoa8OVlJ8u8%B-5*&Jp*!^RpK zC|-dlU4@c;On@i_-A4%=kZ*D7U45I|jWfajeUQy;g9fe$xc_IXG}SgdtzI6NXa6xmgfq4I!Cj;u2Tn#Y$_++I<17oV*uI+6}ow z)4bS2-dW=JVF;?XcJS|&slsz1(44uKA6)}ZyB@)(`FOZFZ4(Br&frNSQkDBLHxZ@* zDW6i6W|xeYvyDa>!&<%8O#Zf4>;jJA`pUcd%BYA9@%gDrt*J{vgO%Y(3yWK&e041! zWZkUAW5(*Ckp%$p#`DDmP$FAo8TJB72FNAla^Po|e7Qmdn-Q+4L28L*P~yk)f%vgP z4deFj8s9D`;Q0W^pLMw$_W*!p>I3Tum*kIjASwn!I! zOyk*C=weT0#mDK61FX3{o0EAokPns!R+YfCR%{3(kdkbAq1Zv%iohaWu zE@e$ORVi0^wRtstlj>U|E2~1R(Nl$64%kaUgeQqF4W8l-CV9)Lk|GmzkX3t1V|R>y z75Zj)gd&RWfCu^Oodp6sB|G5lORwP5lq)N1XBaQ$^%(5QSAy2{LvH$h_l%z==iD5sZBvSQ+=U+F#lkuKRX3>lOT>jS>s@N*xR z%}?5Zbt<)f>3HXCe9;z)t}>rI5seyCbkJaa#fpw6!6R=N0A{eeevd9r%<41zf1Oxx_(6Z4`6jmRc=ELPGks)qS}U!uvpj+^jd)|pSb#gyIy z5$v?>K%s;^s+9LAy8TwM>ojfS8qKGMvafqg*-BET7t<|faCAgr8exjj=?5Y|OAy2_N|sm{ccrA# zSk0SMj8jGO3!EDhW_8PaiB0cUzFLsHcwm5Zdqok(%TdOvD4UF06n}!3|5923Gjl7$ z;ghA;fRt4sLJLGplzDwHsoV&I(p!YMWWn6{Liy?R+V?#P%BCh@m{Z9k*ttz6ml|Gu z2PTJWB?Aeyqyy^k&`bnL5z#j{_D927B=n+*ia{_0)ahrbuwReUoVsKW>Gbm>s4@=har2Mo#iPm{Q+DRfMlsONsMqkW z32L|n2W}dS$VPmP0GkG&_WGgMv}J$jwMNi?*K2^#$oogupU#Pl?%FSU%|5bE`aM0e z(CJOE9ARc&h+YO5s**1RUw{#m=yiFipY9e=wA6>`W9;^aWB1IpE+CPBYIS0>RUxcGer^;FX6bFE8)RUE z+IkB!y*A&yj@8%4&=v6f$_rl9WACkLG$iaEWhjF6fm{lUQEH^yI$m2cGisZjcSuse zN24@l-GrHPaOu5<*5eFjPDa&!M?xNQF*)lI_iwJF1w?55BS3IAkdohN3=Gv~g8e~b z;OBpYZX4K|e-GUrb0abu2Q*;+3rT;lEL-r$>sZ%*W8?x~cXzWw8*sHk*w&m@_pjn` zl`BL>ckLI1ZB0{!nXY7DFl*G5LV4Vy)vg8WuaqzGzo0$BT&NrL$n1~==SYuI34`L_ z&V<7Yd}Jk>8l2V<(3W#6}au;jjT*EH`MqN z=|WcWQg~>@2mvV#856^0Bqfj0>QuMqLr|ZS9~ayz-F^_GBGTs}vj)?W@7p~iM_OgW zrT_e;EhNMK=!pKHiZjmB9CyC43C#H%u|Q_jmCK;4KE_9d`wjEc#k5z`azMU$fq z+S_N0l!i;Wu`qsQcJa_#)Xl51IcvPS{xZ^r)Z2WSHfxv|KF)}vG9*A%50;2g?|k;O zJLSr8YfgJ0PU{5~Z%ZVSXC!NF@eofpQW=hUv%lPMDIEqc`}5SEI3bj|6!dx$d}*;a z5HDx9Y11}TwiD6)e9*_h`qrwE=w6idjmtOKd^bJ{@dgI;n(DcZi-!$2>aae6;3m z5Kx``utQ(DpYsWZ-wF!KReqKBNyyW$#~}*7U8@DvQ5tfL!H;=rnUq#KP0!oln-Mp+ zM<$(;Jo^|A=6F|*pMT)x-o8>fG&L%S@0zNsR5L9rKJ&|53iL4(e@Oa@Oqj46wBWLd zGF}OjJrX@PkN6dNOV8UK-*dkxWeh&30FX~9hKAY?QR2z^&bg4K@Z$Z^EaxRSP!DaXdD}5MDoctf);?p1P3~f{84I4x!u&*Voh+O&S<@!@$I1 zMq?yOZA(H=yF9CN;kFp^MeNBlmq`r_CdgtIrl&k}E-P=Np}K^j$)NL4l!$38Towtl zd@!9S<>Lt)7Zp`Cz^FH?1B%_+&%9!A4E-)OY#oahQ8FEm`!;D};i*OtN-ru= z|I;jvME$f94=Y!$13kB&l+D!8^5Jt8{ zrJ6)7w}6Q5WD8bm)|(SNMiHGC-7$??wgVx~r-(9pZlNwJ4DpdQdXy%51`nj?I##rX zs+NYB2<$Uu4;l4oOr=?Jxf%F-Qcs?Wtt?57{zc!l6g!!iXbviBBv^Vb;)mGX<sb?$hB8A(f(}0COV>EgrqAatR@PUatbEAdt3`ZofJ{6v z4nw#K!=J(D2uV1{0i&@G+qkGMkY<*~tFcc3Hm1_vEP+LYb6aT_>a<$`FC`0w zQO1Lc0~bo@!~56kPQ>Uq5jk1LgCa}t=GPOsEuq#h~OhFC_fx@ zi+R)&*zh`Nf?^Z!lTzSMvcJ~8jsg6H0q_%H`Qe`1_dd#=W`a^pv`QkvmC9eF#$KUA zvBimC(XGsgmk1;*Z*Xb~gv{xkFlAnVJQ=vIfA9e@4Me7m7ET$OWsgV3I z({n=Ij;(>J*0hF`gU89QnS$ zH}ye9-4L;;=uaOJ70cM<;@l6& zB{i9>p)J>iBfv@b6;#k1p-qWXgUz$pT`FCsh=z`!=Qrc*vD6?TM>dl|&?ZgV8fQW{ zq|!GPB2E3%JSU>UDY&1r6DeghWc4DPxFdL6*(qe?9M(TxFG^CS5o&f6Gn;3IWDO4I zUW#HW*`o|~j^-B=$DUtdzQ$i(j|w>aG94B95DyKOI9+c11?SV=Tl8gO6ErM$*%axg zoUmq;od`tb#%St~2r~F9^q($|lBqmCC$prh%1cl*g2WY7Opri$VKkVSJOjb5Wdeq} zY*vU983~W`UcWnc2cP1$Lz+v*L{Qk?yJI1jMhD5ox&wk3O($Ze{S{6E3M%I~866$8 z$27G=Lw>NN1wX;bYZ=VXph1z7M2@}PUa5DD3`JzI2rs4x z0k5Y_^77;V8pT?YVB zguKA^0qYif%ih5Ocun@h;Q1|qCj8j|T`c|zw!wH&htL?@@$%z^Y3r~C=-@FFIywx3 z*H0~^7tfrx->@=6(S#Rp*Wq(Po?Q97L!Hz`z?JCEFxblpxXSEO)w|ILS!5PDzRWHx zd_k3}HYl91gK4_{?(75FzE9MJ)WX|W@_l(-4=b%&jrfH-dE>hcFQl}#rS=o0V(?t5 zt}#T~22RyqL$EGI_@W*RqV*YdU&@O(pOd*CI7TIx%gqGNFXu~rL^@drgA^Cd!K--B z$|g)i;+_m`6}`Mm$gG`xmdhjMF-3g+GUAKMYd^sY6wY8@T_*XD`Oes6Vje|veqoEa z*QC7W(H`Z2Hq^5Ggx9Zd`rDpjQEZHIrN$8R>RPr7?@Rb3U%eH(Xu}<;cm^AEMC2d| z{lO?FN9M3VI@)QrffzK(vTp)Og?nWBFwhEpW{wvkap44HvCWSQmTeE~fN6o>q=m!> zZGSb;!0ssT`c3*&JPcUcg@8A#6yd8+M;YK{C=w7%`5+1%>c+_M7iVtrVng`(z8}p$h4iozrNg;CVVO0n|vvr{t zYSNZaL++#GH@UE6drj)<8~AR_;vI5g_sApuQgbF}f`qrtMpp`z2}_rw@LA=Ohs!NH zUQ?u!u1Gw%-8Hb$p8Zi7oyx8-4Kt55hA-veLXosM6*duErqvjc)@e)I4mK!;2EEI+ zhznrOKP2lvhk(n;z@9pIwGzD~@rj8tmGpSApbH_(_Jjv0cqyT{{ zLxYK7$NXt(mb9~RRJw4K|7EUBwN>yG@r%agv(Cz#W=kI7pfe_^)^w~4R!PioQCWlWX0>mA z^gyEH1H>G@O8}a;jRGOLh1Z!o+hZtJw$=Pj4mBVQNql}Ap>t4XSf~5rn$An6`n$PT zJGGltIOks^Rz3;mXL^_jjAXG9FSiwT+8Apa#1ClhY+f^9Y=t#4OV%+oXbc(kBptGa+qH-*{W zTd~rm6wl{t^)GH%2{!q3=-t`qdutoV=c^yrHtxbiAs`cp=|*X|)AD-Cydn?^&BP1g zlX&F!NW&n+Z`v%%s29V+#2)K;ac^79=3r?pR6=OyH6#)5OuVHTHutn#i#zrF90^2B zfv;-yM%23mRBTqSrVr9Rt0%&(V~W?>Z`oTci!40yNsAL|mrqS2qq0vgiTPfU=}hWb zK*LUFu16{gv&?O_!V+jd3Bn2W-qQ8JUi@?VaK`W$*zpQj@aommDNIw65|-P7Tv+ z;r8&P(jcTS@HW|=H1tgm4{Oc^1c=oJP}ByvTOf{(5luf5{Ny&tvT!kYG39#QolLiB zFx|!ZioS+LbF154%K7lk#Uds40r~A&uwZMCiURTsU!~t?2#Omq`5TL3o4ta{)?Dyn z9u-~=H(?0sFO{=ov*FL9$(GQgi%9oI$_)26r=QbD6}KM4-8u+4pF7qnNgX+Z#CL!x zuuQ}@rf?)?KZh29KIIn1&o}udrz6&5-twiM7Ago~g-lT5>nyzr8{8AGP>!QTfa$1~E*&sn) z7~`kIo2RPx91bky^y7L-?G(!?JcdI4;KIhx!K~(a*Wpq|`evGU<-V@Hxn}(_(j(S` z3TG{@RazqewJ-t#cGR$#>?S_G&TJfkX0l_w@Cq=l4cHM59^QMa{vNb8z}EsXa0bg@ z7VE)MZkSQ6liYLG6G}W>s`;Curh4fyo`=?fU*N&uT0|x?6;F^B4wK2AJ@7?NU6#ElmmNbpSqLU0Uq&Pevm_4;9N*@~@k`fVIo4$R zSm18a-FDDy>Zc-t&517yvB>46%TK3?4B(rz(IaiM?En{-<-m#9=Z&6Ct=VSRV7mBa zyKSIG$5RiTcUMNz%8m*lzwSx4hT+Q^*TO&9NE{u;Qx$U?^pVlrjBcB@2Tacc5FT$$ zGS6PIMx3X4I3l6lSPKd`Iq>0d-FR4|12Tg<@7TD?BS&{ndg!*#mIFINWP-;BcE=np zck(JvM9pV*Es%8_omK_-+sQs`t{Rv|ehfFx&!GW#?O~7SG=Dg#Se09x-4m_7g3t+D{R? zGbK%pFW8;b1$;F8pf8vkS0bnMQ|eczl$HfwY$tE)32$>O29-U41ypV>RXxsnp|ZVR zKJ8Whu6+vqZA4)3d8tKO`$q<{6^uk$cUDokTS9~Z11{4XwQ15(*UE@2iq1JVD$AyV zua-&=YRBJ{m4&<6me}mk6P304;5|<9(SGlzZ1%?4H6TTPz>vkN^8+`UXJw+z61$y0 z70;JUr=={I(yuwJ>tPG;Cf`>O4hj?r9Ua6qKKOc4z5eBFqAa|WXPj=~Do6bY96EOM zW#5R5XNX7m3*La{0^1qs+TQ;6=Hu-ZJQZ`w;I)VA>kBpTA}{PL%uPk0%i?G_MdGht z?64RX)>nYg!Y=9uj@7+M#%IXRM?2BhoE57)6}_2?Z6%Ickw`t-h=q_FC^c#X8L~f5 zU0C+q={ucoBP-tQdYE$v$p_(Eeso3r@{mg9_65UhmW->hxz-xy;apD{)q`H5W6S9U z8J{eCZ#Bp8;~f&;URTcYx!#@ds~gVPQ-X^AxOZ&W6xy1uVkIAL4;ituJ~!T^rf4Oq zLE!JM&q}n9Pi#|OPQ<-$B;O^nA|}@N*T>!ZECE+qqC53T{qRle7lf^83AIm{GL(28 z3Ol^~=PfWI28)$7k87xDLETJGW6O@K5nUmMcd=8zEoNNB>_78PL-Sl3YDkz;WWM*o zIdDc%TYzrZ5x6??ZfdnG$=@ukDS5J}J;;FBH4bOUum)Mtjd6v8@jPRm!{Y!E^p&w} z^wqZN81v>@EeyV1o0;<*_&J8+!55^1RhIq@z<;#icB;j^%Jljv?1V+-%b-5ck`4M- zu+Zn%$ya9$H<7CDC!h{G2d9B1Eg71VhP{Q&m1#na3+F zn|E%haZ||4!k>Qo>8rT2M^FMiGl`ya7vO_iX#UD)qAOCd9`bNFBL@U1c)S^pJb=bZGC0F<9n`F2}(r3lq zaZd&4>661hg8(8sLTf7U5`kiEPD>o&6FRkSV9a#cvLH_}X_nRj|y z!v$?I@zLrzg7POcM5foMOQI;nP~rrvT=Eo#FR{F76A->C@?0t(UFFt@|dk_L_v?lPJ)Af z^2C!cw^?1zdWXu)Y(J*uB+tbike$9gQ>IgKOyzA^g9c#~h5Gj_Q{*_XmUMp+x%Z5bB4`w)ps z?j^I&O67>2(8`G)Dg$NkQIW?W33IN~|63eA!SKh}5}>@;HMW3ya~M+y$?5 z&g*#`X2Pc%vE>=E3XPG`244$c+A2arU{F+G`acSKZ8Z2gC&eE@2oeWQk|Uaq?O?l% za0Edi5~ocTI!HK+GGC}@6KV=krwxW84z%N%1~qN+73QpTX<`-QUh_Zk!oo;-5S zBAZs^YlCH5QB;VB59pfx>Y!)^MW2%CMYIV~{4Nk;RlL0lGE^+9j2%3czgaDbE^=8m zi$6_}9Z`3uK76gMYROE*a4pGwV-S3!)NX=D-~Og^GcC#dhP}9pYVIsydtfuo5@mPf z=30xQm=2E(&oD20aqID|9(5vANCJdwk=;$u?2ET;n_cSCyXJByHKGM8Dnw`L# zLroCiphA%0v1acAh0fQU7I*WtvHAItLN^aR=8Om&XnZ`(R2h6cbMP7lf{BclTAqHl zD8E##iy_C3F7?$lVo&7k^<~F7G{UV-_pQ&V_SdD;U7xxA4;v~zzEg5^81+7(l%K$D^A@hi2?nTBsq=;uq1UENX)#DN|SucqmfM&!Yh9B5M`GI7QK%NM{6)4nmDzai-+1t3?d6ZCRscl`VtSRLMEg9LbKNF(n*@R9Un?Z)Fkb?jM!jJ`A+NO>u-ml zZ2~Ywj?f?=z~%hMLjT!1=H?Wpd)Eb&<4B9zFRipe7x6>yhs0 z);1GuQ9Y{}8{lLxx7Mu1wVlqoo~rTK5^4}fbG_9FU$+o~z4yZ|C$CDk$}q7MSd_jP z99Ukxm~x6D4=ozAFGjQLWrQQHZ@Q82&M8zffAth#CL{J6>=)vvdU%yfoD>~mXouOE%tL}b`G$XS*MmU|>V|O*OqwdbZh{Kgpy%DoL z7rv|69#qI~gJ;BrZ+rCYwnpTdMfEmGlIBC^e(cEC#-8DtapM0~As_`7sr` ze6M&SMNW+9A&IsIvFdT?yRcO8_MZ)wuwyf@1~BescEv*GrtB|kn|RjQZ#Zy$Raa@M z!Ow8!ersbfyklTAc%HKD)2@Xm88`-{2vVS_!G!`kMI zO`9=iYFM+|7jb)ZL&N~SuQxnBNSCG+jL$%JVv$52X-STpCXLxQ>)F!$E@+T}s~FOg zA*0WW=q+`8MknR(J5O^{*{theM;@A52{xgK<;YPcSOY&1{zboBYoZL-e23^ctO836w{GHHD& zaEbNAS$Q;W>WyE%yjIbh2`3_1u2n1Dgc>qE9~-hOeHl8;tBVP|WEBf*?hElGI7A|3 zWAW$Doyc3tp_H8aq=*7tMqaK zaYuxMpS#Tdvr)&5ydD+aN}-j+l4&*{L>+I(T>S_r4EiVX(oYYw5H`8BZa`@F2IMA; zgbP({+8%VmVW3%;6DS&#zRk=CSl6l=lVKg}f2kzOcB+4*P#hDJr853};&Fwe(VpyaT1_OUoOMsBD-p6?eNG!c#I3%&A#8se`3xu{ zHw`4p@={G;OP{1uivO7fXc!k{aBeY8+dF!=uN>mlqRm{(y?R_-t%IYZ2d)eTrx4V; z&##Cez=pu5u+zKTWd`-l^HrvaT5Vj;Gus=a!{3=YW2GYJxo~tah9)DE)p`ns zH>B|?Ltcq;7mqT~_?B!&Y|7i_YfCnwzw=C_c2sVG!;qqi!02dNpuNdjNVEVO?;ld4cEt7vr5Mz^ zQBylrN+xge4;pqN@v1h1>^|)>;Vabw(+U~UojV8nl#evL)pj``&8rijmd{vy4(0zi zV$$#w#Du`pId}Hfq)!PPiBt;qFg9WzUc@H(Zzl)&kMPbVO8q1qv<9(J+H&K9w)GGR2nX%!@v2LW=svnx~kxHn6N zankt$zI^6mzRv`b3N`&*TpLx+E@)`H;IAd57VO~3Pg<(*6F|tWE5lk8pcWwT5Xz^g zQyh>2Yb>h-QJ5gvvli@3iv)+SwAfs7z?DDIR3K!laQL@WxkFgD(mcodYBww}ql+i{x|HLPktaxPpFBOU4l6xeDR)X%PiyR-p{K2-2vk6hY~0 ze{1*%h488vVLG9$9_bFt_-UttHck=Wvmr*#anlc)(SRIxyeQdCd<>yY@`@Nv(S>T4 za&a$=ays8Z0WP*Xx2V{$&mLAmym@QQ&{9!+k&TPJ*)a}HZk=^Xg)McaQ$~4=?D5uF z6G`QHSMhN?sFoRZjI7{!p8(HMP3Xa1XAOnG<-w}hK2_9U@>L7InDL5bRtHk8oj&W% zHX>L_GD-O7D4KHJ-URd0=z;X(oty2~Ej%TqqDXV`$++=TvAl2BSBA<06C#kmo_c!B z4mg!ixrVDe;+T>Vr@~%vTk23T5*=Tti#WW(alzj7|CphrT0s{+D^kUI^F8O}uqSRF zAYUuc>iJ<0F+%@vd<*~rmvDb)4~bbA{}o1m7h?qGLS%H;ezAxY2KyxjDWt@dWZ}B$ zWM~eg`XwY~Xl$qk$NR|1WfvDePCVc1@1usL6{8k&Z?Kpsr-Cql+3DD5u{GQLM`b471EeZ+QX?u2Q zUOx`Qi&KfVwO{SGT}?e~F-=aI=z{?t!Y$On3M8d|iB*B%S)q6U<0DIe1@^d`9+4kD zn>e65Uf+ztB!tI`9K-`dyfuTBtc*lgw^4lEn_n{LX;|V*c)iu#$~RvjP%8wF0$D3x znV?HvL-sRx+p#4fLdk!TWqJI-??hYrLzZK(>WYSFm3&R^qi$BMvgJOw5$8`@STdM? zp&yzUk2`#-B~CA9&C}S9UGwL#Uo?j{ zxUZd<3FnVTQkFrLy>2UG&KKA&8Zi?LB_Z78*bC)JUNUH2Yny&}>tc69|E9G;ZU~glft*Z~{9Q1#1SsM_u zrw?er{ueI)4^j_9OCv5JDGe#FUl=DdG2l8^>s?IE%Lu8|-djY@{Ip*1J!?fBadkI4 zFDvU)y3T59<}yJ7cHXi&K|U#k%w!2rm|^P5%3hEn$pKJ!&b2%vBef;v_?XR<41N_k zCl5ImMI{`lp{h#p0V;~3v0=r6Re2CFCT=TZ)ABbhH!(QwGPQJWBNdyUgZ*Vrk9aeh zmp1%x%Qg5)OEoRr#N`ZBO`=}7m;~9%78sVBHkGx8nCi$&7X@Gm@>v^4OBh&N=~viV zz_pLL+h&xgp1rZ$0H~lLj)Yc~$wRZjQo}>FbcYhBDdx-b*b=%=+pY~cI7J*C^PTg- zj@|NfIvx(@yO?w?g#8CMBWR%eh*~r`dVwNUDe#d1cy^39yqa^;aH! z{kpk^y1NLMM=*H$i{@h)R+VwE38308qcyG~iu6{5Bphtb=^81{431An^AX82T!4D>)ad`N+x; zCtQL6@%hGIYpKSEb^zW2x%h*>arZK;X8$go@V9wmr){C9Gh}f*9bNhL6_Q+% zw;yE-sv~`3kLK%&EwACZ8?(2}nS+ox($8CL&j*uiC7AUFl<6012izrVhy^HhqHB)U zUlexO&TLZl%Js;?DV=3b8hdWyIo4GcQYxG{VLypgghUx|9tksntWYTEU@>Mt7lm}e^~5^MXiTwDS;eAcsCOAsH_%K}312ew z@V0aOKP1_)_?%JTH)6RtN}POkQt*&ns1T=C*%bS*9Q zX)TGW>_+)8eVJ|A960_bH^x`YX3pf|@742cNV+Ecyf&*;cjyn}UNxbI+J+t8^l z&SgI4jGjLcdh*pyjReY!K4Z~grN;|Ejb=8lu zZMR;|Zm}%5a;2Y}Q9coQX>;48?bz+l!E2Yg+VgrAx1_E9WBhKd%8CWGN+vxv{5lDD zPx8_PN}T@m0aAIqd&oq&3WU>7@2LSC;ri9X0fG+{@gKs^d~ebC zkH&$5k)@6PZ;XQzfUyJ)Fc5(KFY+H2H7^b@4!U+vDWJeVzn-}a0@J+ZZ}wFzEJlXH`yE zn@X-B;}5TH&|Z1USmfs~?zbgI^Q2Ft-Gw@NsH=ShN0B}VJN2bSE;6%5^9~#m@9MaY zP;Op9Kx%~=gmsj!Jw9s1+Y38Wy3!_$5b4rIn!O!u8FFi@3!pH4G0P83X&x%1s1f2N zC?wU@fPrP##v>o5zi8fSsdKS&;WcYIgAVlGw{-ue;Z#4T8ruHDGDyA0WUv2Z8HgGi z8Yx)m>+4Bb>goTziq!$wTMuZ!{udViH_PDLDz?`xIRry1DkZf)AR|`&%Sz@BT*=IU z%ayZ-T#c>A3vmN61CMl{5`H#@`QG05qq9UjZ12X$N#-WzJJGX-KFo8^NxdH(8qgBq z+vvRcETf*#qQSkS|NhF53WH~Mv)6+BcHY`k;d^ z0gM75;eN~;se9+DCV*Lm2l7iv2;ib2U}JA=tN#-{mpq7!1OUgW!2bV3Pb*r=0cz>v z-w;#k---G8{m9Vh5Kbl!D^D(Y6?L^J9d~sHJNX#nBr}k@%ugxElmrm7Ue_`8kW{hN zRZgnuxmyb2vYV`t+zm`l|+Hd0Wgm!_OHS%Motpy!g3CK#QO zVkG2Xu&=GHlCI{~#e-%G{bffY8jk6MDCMns`Fn%HhX}mswRz@%0$BT*|6cpo+CGb^ z0ayrR)(+6G@DN6MVok`$&&Ye3+;7pR?#x>xcc^L%7DM88V zn>Z6sxu}RdN0btv$H?Fr+fG$fUlU4Sl@`u<1;F;3F>ZhP->cnhH880kCCM zjZVtQe_4zi-d|g3b7FOLcw`$`Ffrj-nZ3Jl;!nq+%&lIrw~>CcR^`Z*HVn>6^*>6? zqjhMhy28s<9`&j{)%lP4B@!9-w4N2^YoAj!hgPe(w$=9Enw}g|sB68MKD86$RJ4E9 z8q$ic-6>i$|2uI>k`y#z^S=<`xL_CQ;%sp8hYEc5PuYoVtSNP^$b5_{EWVHk_HD+R zAxEgY16U1Y=nqzp-&2CofN%eiVgfj0l`Qo1Z5)An;a_%0M1Y;qUHe0Rf76370}^61 zlrq#}G;p*uloBOxe^G@c|2lgq$A&tY$!DH+Fq89ikAI#=${P8NF65amUjbOqWS8;W zDXmA}Hw9Fn=7lRj-^2&2)lvJy^i%V9EB;wy9m}YQ^Bp>`6Ky>#EOcH3n?4@?awlPI z+zFtHNy*?C4uewO=cvVZg7q#FR8FZ6@*9aCZzOW>0hA(;kUvO_aBntg1HO3z@*AZn zDE^Z|3<41LuKgilfgTsD{R4n5yzg$2MWHIb8{lH}7~$I0%uGiU+C=486RQ96RnsCW zB=emkX1bRWynuljn)+*MN>-+En7XPoGRb92-sq^xpv5tT2@~rVgqp{OP{rMI-dGjRirSXKS5iQA)oy%lHl9UHFaM;f7;2%d6I5F;8EeYd&$i` z#PKA3V8g9OyKl7fN%}DjSZ|9;?e0djL*jMyO9tkAHuQ0oNHQ^cES>eyPXl!MWkQcM z`}`jde_y3uqD(NnET<%1TSHGEFQCY22gB=B^HcWEmrzTWG4h32jM1Exaj*pctoWDO zAYk)T=LGNw$PHNuP%t!bG{6TCkP?U=E*9WtL=b#n_wCu{19m@^+xk{22zX{K`unr% zyH~@2z!1yY-PbX@ ztLwxFsJC|4{sk#HH(QMw1Ok=@kRk&g9s~sArx6{<{DNe!XC+{14v3cc#-9!(3?n~4 zbw*(SFBlf)C2CfN=HhCA3Rs!!-)qJF;E%7uf55mCH_#bEqr3JmD0DTkYAnxgjN$+z zsQ_GxC-`Y30xy0+xhDl$VipFLe~W?(ETj>z)Oy zfc?LWhry>%?f7X#3?ecJh-A+9%AEJcWAF=vo{h1?z4?RRfb$Im*#8R%6I-d8Bwm=!cJ9HwVljd6r+tHXZ&8n39#%@5d$t$ipBE zXu$qo;A8>0u^1jkE}B7rfEWT4-_K*KP5y6i-^bPiNRoBe{spWUq*U#_Aw~!m089kw zSNV&~_yz1Q;rI^m-kiwjuKgQ?ZmgPfW`F@NCkRN#&ad)^2$0C1);lvxLwg(hzXgKG z>AR2v`~L!Rzc4N4PXbXf|9gnz> z_Wt4utiO4`vLLYj=G~Ly?TGyg$RAYWyh8!L?RQlQ?@+e+Y5}&xPfYpWY8HOCae#&h zuxjD`5^q1NY$*KSy#7yX7~YKr2nVbicfZ^RaJzf=tE5?Dv%egaxx z9g({y$6J}^caZ9CknT4scg`_vCo9i2P^7 z|2>V^eLP@7pZjTOe#Uzs`JeIr_w+t@c))S|F1gL!__q0Mq<+Es<{(l;1cCn7R5w3n zJTTeK{aZOdGpy}*ufH?Y{vh?u-GG3T9(dd5et7WDhztOq!%vd|IG|q<@AUt_-2J(a z2n;)Bxfg%~3_HGi-g-YV{teu?0tWQl4{!k-~s#n)5o7zJ|(B$U;)nA|LC~=J{<5!^Zq&5&&-o|{T#iQ`y0sr-G_Z22?rs4{07w+yDRo literal 0 HcmV?d00001 diff --git a/src/pPowerManger/LowerCommManager.cpp b/src/pPowerManger/LowerCommManager.cpp index 7231908..e88d54c 100644 --- a/src/pPowerManger/LowerCommManager.cpp +++ b/src/pPowerManger/LowerCommManager.cpp @@ -165,7 +165,9 @@ bool LowerCommManager::updatePoweSystemStates(){ m_pm->m_pmCurrentState.ccustate = m_CcuCurrentState.data; // m_db->insertCcuData(m_CcuCurrentState.data); //写入数据库 //DEBUG - coutMsg(m_CcuCurrentState); + //写入文件 + std::ofstream outFile("ccuState.txt", std::ios::app); + coutMsg(m_CcuCurrentState, outFile); msg_CcuStateFbMsg_Update_time = time; } if(!m_udpComm->m_qReceiveDisHighVolBusBuffer.empty()) @@ -420,11 +422,11 @@ void LowerCommManager::coutMsg(const msg_CcuStateFbMsg& p, std::ostream& os){ os << "仪表SOC (ins_soc): " << static_cast(p.data.ins_soc) << "%\n"; os << "动力SOC (dyn_soc): " << static_cast(p.data.dyn_soc) << "%\n"; - os << "仪表电池总能量 (ins_total_energy): " << p.data.ins_total_energy << " kWh\n"; - os << "动力电池总能量 (dyn_total_energy): " << p.data.dyn_total_energy << " kWh\n"; + os << "仪表电池总能量 (ins_total_energy): " << p.data.ins_total_energy * 0.1 << " kWh\n"; + os << "动力电池总能量 (dyn_total_energy): " << p.data.dyn_total_energy * 0.1 << " kWh\n"; - os << "仪表输入功率 (ins_power_input): " << p.data.ins_power_input << " kW\n"; - os << "动力输入功率 (dyn_power_input): " << p.data.dyn_power_input << " kW\n"; + os << "仪表输入功率 (ins_power_input): " << p.data.ins_power_input * 0.1 << " kW\n"; + os << "动力输入功率 (dyn_power_input): " << p.data.dyn_power_input * 0.1 << " kW\n"; os << "仪表充电状态 (ins_charge_status): 0x" << std::hex << static_cast(p.data.ins_charge_status) << "\n"; os << "动力充电状态 (dyn_charge_status): 0x" << static_cast(p.data.dyn_charge_status) << "\n"; diff --git a/src/pPowerManger/PowerManger.cpp b/src/pPowerManger/PowerManger.cpp index a01e260..191cfc0 100644 --- a/src/pPowerManger/PowerManger.cpp +++ b/src/pPowerManger/PowerManger.cpp @@ -47,6 +47,15 @@ PowerManger::PowerManger() //初始化控制指令 initControlCmd(); + //初始化UDP通信 + m_lowerCommManager = new LowerCommManager(this,IPORT,CCUPORT,CCUHOST); + m_lowerCommManager->initUdpComm(); + m_lowerCommManager->startListenThread(); + + //初始化上位机通信 + m_upperCommManager = new UpperCommManager(this); + // + //初始化数据库 // string dbPath = "/home/zjk/project/H100/H100PowerManger/data/power_data.db"; // m_db = new SQLiteDB(dbPath); @@ -129,6 +138,8 @@ bool PowerManger::Iterate() CycleTriggeredEvent cycleEvent; PowerManagerFsm::dispatch(cycleEvent); faultLevel = getFaultLevel(); + //打印信息大小 + cout << sizeof(m_CcuColCmd) << endl; if (m_ticker++ % 5 == 0) { m_CcuColCmd.heartbeat++; @@ -173,13 +184,7 @@ bool PowerManger::OnStartUp() } registerVariables(); - //初始化UDP通信 - m_lowerCommManager = new LowerCommManager(this,IPORT,CCUPORT,CCUHOST); - m_lowerCommManager->initUdpComm(); - m_lowerCommManager->startListenThread(); - //初始化上位机通信 - m_upperCommManager = new UpperCommManager(this); // 初始化状态机 PowerManagerFsm::init(this); @@ -195,9 +200,11 @@ bool PowerManger::OnStartUp() void PowerManger::registerVariables() { AppCastingMOOSApp::RegisterVariables(); + // Register(DB_TO_PM_SUBDISSTATE, 0); + Register(DB_TO_PM_MSCMD, 0); Register(DB_TO_PM_EQUIPMENTCMD, 0); - Register(DB_TO_PM_SUBDISSTATE, 0); + Register(m_upperCommManager->m_secdistStateMsg.key_fb,0); Register(DB_TO_PM_MISSION,0); Register(DB_TO_PM_DEEPTH,0); Register(DB_TO_PM_SETOPCONDITION,0); diff --git a/src/pPowerManger/UpperCommManager.cpp b/src/pPowerManger/UpperCommManager.cpp index a947e7a..a6062a6 100644 --- a/src/pPowerManger/UpperCommManager.cpp +++ b/src/pPowerManger/UpperCommManager.cpp @@ -3,7 +3,24 @@ #include "driver.h" #include "fsm/PowerManagerFsm.hpp" -UpperCommManager::UpperCommManager(PowerManger* pm) : m_pm(pm) {}; +UpperCommManager::UpperCommManager(PowerManger* pm) : m_pm(pm) { + // 初始化消息结构体 + // uPower_equInsStateMsg m_equInsStateMsg; + // uDevice_secdistStateMsg m_secdistStateMsg; + // uPower_equStateMsg m_equStateMsg; + // uPower_disSysStateMsg m_disSysStateMsg; + // uPower_currentStateMsg m_currentStateMsg; + // uPower_pmStateMsg m_pmStateMsg; + // uPower_fcsStateMsg m_fcsStateMsg; + // uPower_liBatStateMsg m_liBatStateMsg; + + // //上位机订阅消息 + // uDevice_depthMsg m_depthMsg; + // uExternComm_setOpConditionMsg m_setOpConditionMsg; + m_secdistStateMsg = uDevice_secdistStateMsg(); + m_setOpConditionMsg = uExternComm_setOpConditionMsg(); + +}; bool UpperCommManager::processUpperMsg(const string& key, const string& strJson) { if(key == DB_TO_PM_MSCMD) { @@ -39,8 +56,13 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson) //m_pm->m_subDisSysState = m_pm->m_deviceState; return true; } - else if(key == DB_TO_PM_DEEPTH) { - m_pm->m_depth = getDeepth(key, strJson); + // else if(key == DB_TO_PM_DEEPTH) { + // m_pm->m_depth = getDeepth(key, strJson); + // return true; + // } + else if(key == m_depthMsg.key) + { + m_pm->m_depth = m_depthMsg.getDepth(key, strJson); return true; } else if(key == DB_TO_PM_MISSION) { @@ -56,11 +78,15 @@ bool UpperCommManager::processUpperMsg(const string& key, const string& strJson) MasterCommandEvent event; PowerManagerFsm::dispatch(event); return true; - } else if(key == DB_TO_PM_SETOPMODE) { - m_pm->m_msCmd.modCMD = getSetOpMode(key, strJson); + // } else if(key == DB_TO_PM_SETOPMODE) { + // m_pm->m_msCmd.modCMD = getSetOpMode(key, strJson); + // MasterCommandEvent event; + // PowerManagerFsm::dispatch(event); + // return true; + } else if(key == m_setOpConditionMsg.key) { + m_pm->m_msCmd.workCMD = m_setOpConditionMsg.getSetOpCondition(key, strJson); MasterCommandEvent event; PowerManagerFsm::dispatch(event); - return true; } else if(key == DB_TO_PM_SETPMSYS) { m_pm->m_msCmd.powerCMD = getSetPMSys(key, strJson); MasterCommandEvent event; @@ -130,37 +156,37 @@ const DriverTable UpperCommManager::getSubDisState(const std::string& key, const } } -const int UpperCommManager::getDeepth(const std::string& key, const std::string& msg){ - int deepth; - Json::Value root; - Json::CharReaderBuilder builder; - JSONCPP_STRING errs; +// const int UpperCommManager::getDeepth(const std::string& key, const std::string& msg){ +// int deepth; +// Json::Value root; +// Json::CharReaderBuilder builder; +// JSONCPP_STRING errs; - // 解析JSON字符串 - std::istringstream stream(msg); - if (!Json::parseFromStream(builder, stream, &root, &errs)) { - std::cerr << "JSON解析失败: " << errs << std::endl; - LOG_F(WARNING, "JSON解析失败: %s", errs.c_str()); - return -1; - } +// // 解析JSON字符串 +// std::istringstream stream(msg); +// if (!Json::parseFromStream(builder, stream, &root, &errs)) { +// std::cerr << "JSON解析失败: " << errs << std::endl; +// LOG_F(WARNING, "JSON解析失败: %s", errs.c_str()); +// return -1; +// } - // 检查并读取深度数组 - if (root.isMember("value_array_int32") && root["value_array_int32"].isArray()) { - const Json::Value& array = root["value_array_int32"]; - if (array.size() >= 3) { - // 计算三个深度值的平均值 - deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3; - } else { - LOG_F(WARNING, "深度数组元素不足3个"); - return -1; - } - } else { - LOG_F(WARNING, "缺少或类型不匹配: value_array_int32"); - return -1; - } +// // 检查并读取深度数组 +// if (root.isMember("value_array_int32") && root["value_array_int32"].isArray()) { +// const Json::Value& array = root["value_array_int32"]; +// if (array.size() >= 3) { +// // 计算三个深度值的平均值 +// deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3; +// } else { +// LOG_F(WARNING, "深度数组元素不足3个"); +// return -1; +// } +// } else { +// LOG_F(WARNING, "缺少或类型不匹配: value_array_int32"); +// return -1; +// } - return deepth; -} +// return deepth; +// } MissionState UpperCommManager::getMission(const std::string& key, const std::string& msg) { MissionState mission; diff --git a/src/pPowerManger/UpperCommManager.h b/src/pPowerManger/UpperCommManager.h index 50cef95..84b5af5 100644 --- a/src/pPowerManger/UpperCommManager.h +++ b/src/pPowerManger/UpperCommManager.h @@ -8,29 +8,21 @@ #include #include #include -#include "msg/uPower_equInsState.h" -#include "msg/uDevice_secdistState.h" -#include "msg/uPower_equState.h" -#include "msg/uPower_disSysState.h" -#include "msg/uPower_currentState_st.h" -#include "msg/uPower_pmState.h" -#include "msg/uPower_fcsState.h" -#include "msg/uPower_liBatState.h" +#include "upmsg/uPower_equInsState.h" +#include "upmsg/uDevice_secdistState.h" +#include "upmsg/uPower_equState.h" +#include "upmsg/uPower_disSysState.h" +#include "upmsg/uPower_currentState_st.h" +#include "upmsg/uPower_pmState.h" +#include "upmsg/uPower_fcsState.h" +#include "upmsg/uPower_liBatState.h" +#include "upmsg/uDevice_depth.h" +#include "upmsg/uExternComm_setOpCondition.h" using namespace std; #define VAR_TO_STR(var) #var -//能源管理反馈的消息 -#define PM_TO_DB_STATE "uPower_pmState_fb" -#define PM_TO_DB_CURRENTSTATE "uPower_currentState_st" -#define PM_TO_DB_DISSTATE "uPower_disSysState_st" -#define PM_TO_DB_LIBATSTATE "uPower_liBatState_st" -#define PM_TO_DB_FCSSTATE "uPower_fcsState_st" - -#define PM_TO_DB_SUBDISCMD "uPower_secdistState_cmd" - //控制消息 #define DB_TO_PM_MSCMD "uPower_sysState_cmd" #define DB_TO_PM_EQUIPMENTCMD "uPower_equState_cmd" -#define DB_TO_PM_SUBDISSTATE "uDevice_secdistState_st" //决策消息 #define DB_TO_PM_DEEPTH "uDevice_depth_st" @@ -63,7 +55,7 @@ public: const MSControlCmd getMasterControlCmd(const std::string& key, const std::string& msg); const DriverTable getEquipmentCmd(const std::string& key, const std::string& msg); const DriverTable getSubDisState(const std::string& key, const std::string& msg); - const int getDeepth(const std::string& key, const std::string& msg); + // const int getDeepth(const std::string& key, const std::string& msg); MissionState getMission(const std::string& key, const std::string& msg); bool getTaskStop(const std::string& key, const std::string& msg); // 处理外部通信消息 @@ -76,10 +68,7 @@ public: // 其他公共函数 bool saveStringToJsonFile(const string &strJson, const string &filePath); -private: - PowerManger* m_pm; - MSControlCmd m_msCmd; - Driver m_driver; +public: //定义上位机消息 uPower_equInsStateMsg m_equInsStateMsg; uDevice_secdistStateMsg m_secdistStateMsg; @@ -90,7 +79,15 @@ private: uPower_fcsStateMsg m_fcsStateMsg; uPower_liBatStateMsg m_liBatStateMsg; - + //上位机订阅消息 + uDevice_depthMsg m_depthMsg; + uExternComm_setOpConditionMsg m_setOpConditionMsg; + +private: + PowerManger* m_pm; + MSControlCmd m_msCmd; + Driver m_driver; + bool parseControlCmdFromJson(MSControlCmd &cmd, const std::string &strJson); }; diff --git a/src/pPowerManger/driver.cpp b/src/pPowerManger/driver.cpp index cd0dd78..01a248e 100644 --- a/src/pPowerManger/driver.cpp +++ b/src/pPowerManger/driver.cpp @@ -800,13 +800,9 @@ vector Driver::loadDriverIdFromJson(const std::string &strJson) { {"launchControler", 37}, {"sideSonar", 35}, {"buoyage", 56} }; - // 检查每个字段,如果存在且值发生变化,则添加到返回向量中 for (const auto& [field, id] : fieldToId) { if (root.isMember(field)) { unsigned char newValue = root[field].asUInt(); - // unsigned char& currentValue = *((unsigned char*)&table + offsetof(DriverTable, depth1) + - // (fieldToId.at(field) - 18) * sizeof(unsigned char)); - DriverCommand cmd; cmd.id = id; cmd.cmd = newValue; diff --git a/src/pPowerManger/fsm/StandbyState.cpp b/src/pPowerManger/fsm/StandbyState.cpp index 4d4b98e..1003dc7 100644 --- a/src/pPowerManger/fsm/StandbyState.cpp +++ b/src/pPowerManger/fsm/StandbyState.cpp @@ -4,10 +4,15 @@ void StandbyState::entry() { PowerManagerFsm::entry(); pm->m_driver.getSTANDBYTable(&pm->m_subDisSysCmd); - pm->m_CcuColCmd.fcuCmd = FcuCommand::Stop; + // pm->m_CcuColCmd.fcuCmd = FcuCommand::Stop; // pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Stop; + // 启动流程 仪表电一直设置为启动 pm->m_CcuColCmd.powerBatCmd = BatteryCommand::Start; pm->workCondition = WorkCondition::STANDBY; + + // 依次启动仪表电设备 + + // LOG_F(INFO, "WorkCondition %d", pm->workCondition); } void StandbyState::react(StandbyEvent const &) { diff --git a/src/pPowerManger/pmSysvariable.h b/src/pPowerManger/pmSysvariable.h index ef04513..3dd63c9 100644 --- a/src/pPowerManger/pmSysvariable.h +++ b/src/pPowerManger/pmSysvariable.h @@ -52,6 +52,7 @@ typedef struct ccuState uint16_t ch3oh_concentration2; // 舱室甲醇气体浓度2,单位:0.01% LEL uint16_t reserved1[18]; // 保留字段,地址范围35~52,共18个uint16_t,协议预留 + uint8_t reserved2[1]; // 保留字段,地址范围54~55,共2个uint8_t,协议预留 uint8_t dyn_alarm_flag[6]; // 动力锂电池报警标志字数组,共6字节,按位表示各类报警 uint8_t ins_alarm_flag[6]; // 仪表锂电池报警标志字数组,共6字节,按位表示各类报警 @@ -91,7 +92,7 @@ typedef struct ccuState uint8_t ins_emergency_status; // 仪表电池紧急状态字,按位表示异常或告警状态 uint8_t dyn_emergency_status; // 动力电池紧急状态字,按位表示异常或告警状态 - uint8_t reserved2[2]; // 保留字节,协议预留 + uint8_t reserved3[2]; // 保留字节,协议预留 uint8_t ins_soc_threshold1; // 仪表电池1 SOC门限,范围:0~100 uint8_t ins_soc_threshold2; // 仪表电池2 SOC门限,范围:0~100 @@ -108,7 +109,7 @@ typedef struct ccuState uint32_t device_online_flag1; // 设备在线状态标志1,byte0:低压配电板在线标志位 byte1:复合管控主机在线标志位 byte2:复合管控备机在线标志位 uint32_t device_online_flag2; // 设备在线状态标志2,byte0:仪表锂电在线标志位 byte1:动力锂电在线标志位 byte2:燃电锂电在线标志位 byte3:高压配电板在线标志位 - uint32_t reserved3; // 保留字段,协议预留 + uint32_t reserved4; // 保留字段,协议预留 uint32_t heartbeat; // 主机心跳计数器或标志值 } ccuState; diff --git a/src/pPowerManger/udpComm.cpp b/src/pPowerManger/udpComm.cpp index 398de47..55e9998 100644 --- a/src/pPowerManger/udpComm.cpp +++ b/src/pPowerManger/udpComm.cpp @@ -51,7 +51,8 @@ bool udpComm::getMsgId(char *m,unsigned short &id) return true; } else - sError.push_back("Msg Header errar"); + // sError.push_back("Msg Header errar"); + // LOG_F(ERROR, "Msg Header errar start1: %d, start2: %d", h.start1, h.start2); return false; } bool udpComm::getMsgFromBuff(char *m, msg_CcuStateFbMsg &s) { @@ -144,7 +145,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) { if(m==NULL) { - sError.push_back("pushMsgToQueue faile,Msg is NULL"); + // sError.push_back("pushMsgToQueue faile,Msg is NULL"); + LOG_F(ERROR, "pushMsgToQueue faile,Msg is NULL m: %p", m); return false; } @@ -155,7 +157,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) memcpy(header,Buff,sizeof(m_header)); if(!getMsgId(header,id)) { - sError.push_back("pushMsgToQueue faile,Msg ID error"); + // sError.push_back("pushMsgToQueue faile,Msg ID error"); + // LOG_F(INFO, "pushMsgToQueue faile,Msg ID error header: %p", header); return false; } delete []header; @@ -174,7 +177,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,CcuState buffer is full"); + // sError.push_back("pushMsgToQueue faile,CcuState buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,CcuState buffer is full"); return false; } } @@ -196,7 +200,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,CcuSetParm buffer is full"); + // sError.push_back("pushMsgToQueue faile,CcuSetParm buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,CcuSetParm buffer is full"); return false; } } @@ -218,7 +223,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,DisSysHVBus buffer is full"); + // sError.push_back("pushMsgToQueue faile,DisSysHVBus buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,DisSysHVBus buffer is full"); return false; } } @@ -240,7 +246,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,DisSysHVABus buffer is full"); + // sError.push_back("pushMsgToQueue faile,DisSysHVABus buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,DisSysHVABus buffer is full"); return false; } } @@ -262,7 +269,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,DisSysHVBBus buffer is full"); + // sError.push_back("pushMsgToQueue faile,DisSysHVBBus buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,DisSysHVBBus buffer is full"); return false; } } @@ -284,7 +292,8 @@ bool udpComm::pushMsgToQueue(unsigned char *m) } else { - sError.push_back("pushMsgToQueue faile,DisSysLVBus buffer is full"); + // sError.push_back("pushMsgToQueue faile,DisSysLVBus buffer is full"); + LOG_F(INFO, "pushMsgToQueue faile,DisSysLVBus buffer is full"); return false; } } diff --git a/src/pPowerManger/udpComm.h b/src/pPowerManger/udpComm.h index eaa0eac..3be1a21 100644 --- a/src/pPowerManger/udpComm.h +++ b/src/pPowerManger/udpComm.h @@ -12,8 +12,8 @@ #include #include #include -#include // for std::pair - +#include +#include "loguru.hpp" using namespace std; #define QUENUE_SIZE 100 diff --git a/src/pPowerManger/upmsg/uDevice_depth.h b/src/pPowerManger/upmsg/uDevice_depth.h new file mode 100644 index 0000000..fc773f0 --- /dev/null +++ b/src/pPowerManger/upmsg/uDevice_depth.h @@ -0,0 +1,52 @@ +//决策消息 +#ifndef UDEVICE_DEPTH_ST_H +#define UDEVICE_DEPTH_ST_H +#include +#include "../loguru.hpp" +#define DB_TO_PM_DEEPTH "uDevice_depth_st" +class uDevice_depthMsg +{ +private: + +public: + std::string key = "uDevice_depth_st"; + uDevice_depthMsg(/* args */){}; + ~uDevice_depthMsg(){}; + int getDepth(const std::string& msgkey, const std::string& msg){ + if (msgkey != DB_TO_PM_DEEPTH) + { + LOG_F(WARNING, "消息类型错误 %s", msgkey.c_str()); + return 0; + } + int deepth; + Json::Value root; + Json::CharReaderBuilder builder; + JSONCPP_STRING errs; + + // 解析JSON字符串 + std::istringstream stream(msg); + if (!Json::parseFromStream(builder, stream, &root, &errs)) { + std::cerr << "JSON解析失败: " << errs << std::endl; + LOG_F(WARNING, "JSON解析失败: %s", errs.c_str()); + return -1; + } + // 检查并读取深度数组 + if (root.isMember("value_array_int32") && root["value_array_int32"].isArray()) { + const Json::Value& array = root["value_array_int32"]; + if (array.size() >= 3) { + // 计算三个深度值的平均值 + deepth = (array[0].asInt() + array[1].asInt() + array[2].asInt()) / 3; + } else { + LOG_F(WARNING, "深度数组元素不足3个"); + return -1; + } + } else { + LOG_F(WARNING, "缺少或类型不匹配: value_array_int32"); + return -1; + } + + return deepth; + } +}; + +#endif \ No newline at end of file diff --git a/src/pPowerManger/msg/uDevice_secdistState.h b/src/pPowerManger/upmsg/uDevice_secdistState.h similarity index 100% rename from src/pPowerManger/msg/uDevice_secdistState.h rename to src/pPowerManger/upmsg/uDevice_secdistState.h diff --git a/src/pPowerManger/upmsg/uExternComm_setDeviceSwitch_cmd.h b/src/pPowerManger/upmsg/uExternComm_setDeviceSwitch_cmd.h new file mode 100644 index 0000000..9a5748f --- /dev/null +++ b/src/pPowerManger/upmsg/uExternComm_setDeviceSwitch_cmd.h @@ -0,0 +1,7 @@ +#ifndef UEXTERNCOMM_SETDEVICESWITCH_CMD_H +#define UEXTERNCOMM_SETDEVICESWITCH_CMD_H +#include + + + +#endif \ No newline at end of file diff --git a/src/pPowerManger/upmsg/uExternComm_setOpCondition.h b/src/pPowerManger/upmsg/uExternComm_setOpCondition.h new file mode 100644 index 0000000..dfdb5ba --- /dev/null +++ b/src/pPowerManger/upmsg/uExternComm_setOpCondition.h @@ -0,0 +1,43 @@ +#ifndef UEXTERCOMM_SETOPCONDITION_CMD_H +#define UEXTERCOMM_SETOPCONDITION_CMD_H +#include +#include "../loguru.hpp" +#include "json/json.h" +//外部通信消息 +#define DB_TO_PM_SETOPCONDITION "uExternComm_setOpCondition_cmd" + +class uExternComm_setOpConditionMsg +{ +private: + /* data */ +public: + std::string key = "uExternComm_setOpCondition_cmd"; + uExternComm_setOpConditionMsg(/* args */){}; + ~uExternComm_setOpConditionMsg(){}; + + int getSetOpCondition(const std::string& key, const std::string& msg) + { + Json::Value root; + Json::CharReaderBuilder builder; + JSONCPP_STRING errs; + + // 解析JSON字符串 + std::istringstream stream(msg); + if (!Json::parseFromStream(builder, stream, &root, &errs)) { + LOG_F(WARNING, "JSON解析失败: %s", errs.c_str()); + return -1; + } + + // 检查并读取操作条件 + if (root.isMember("state_uint8") && root["state_uint8"].isUInt()) { + return root["state_uint8"].asUInt(); + LOG_F(INFO, "上位机指令:opCondition: %d", root["state_uint8"].asUInt()); + } else { + LOG_F(WARNING, "缺少或类型不匹配: opCondition"); + return -1; + } + } + +}; + +#endif \ No newline at end of file diff --git a/src/pPowerManger/upmsg/uExternComm_setOpMode_cmd.h b/src/pPowerManger/upmsg/uExternComm_setOpMode_cmd.h new file mode 100644 index 0000000..201fe5d --- /dev/null +++ b/src/pPowerManger/upmsg/uExternComm_setOpMode_cmd.h @@ -0,0 +1,2 @@ +//外部通信消息 +#define DB_TO_PM_SETOPMODE "uExternComm_setOpMode_cmd" diff --git a/src/pPowerManger/upmsg/uExternComm_setPowerSystem_cmd.h b/src/pPowerManger/upmsg/uExternComm_setPowerSystem_cmd.h new file mode 100644 index 0000000..9ca2f37 --- /dev/null +++ b/src/pPowerManger/upmsg/uExternComm_setPowerSystem_cmd.h @@ -0,0 +1,2 @@ +//外部通信消息 +#define DB_TO_PM_SETPMSYS "uExternComm_setPowerSystem_cmd" diff --git a/src/pPowerManger/upmsg/uPlan_planStop_cmd.h b/src/pPowerManger/upmsg/uPlan_planStop_cmd.h new file mode 100644 index 0000000..1c59edc --- /dev/null +++ b/src/pPowerManger/upmsg/uPlan_planStop_cmd.h @@ -0,0 +1,2 @@ +//决策消息 +#define DB_TO_PM_TASKSTOP "uPlan_planStop_cmd" diff --git a/src/pPowerManger/upmsg/uPlan_taskStart_cmd.h b/src/pPowerManger/upmsg/uPlan_taskStart_cmd.h new file mode 100644 index 0000000..5bbb366 --- /dev/null +++ b/src/pPowerManger/upmsg/uPlan_taskStart_cmd.h @@ -0,0 +1,2 @@ +//决策消息 +#define DB_TO_PM_MISSION "uPlan_taskStart_cmd" diff --git a/src/pPowerManger/msg/uPower_currentState_st.h b/src/pPowerManger/upmsg/uPower_currentState_st.h similarity index 100% rename from src/pPowerManger/msg/uPower_currentState_st.h rename to src/pPowerManger/upmsg/uPower_currentState_st.h diff --git a/src/pPowerManger/msg/uPower_disSysState.h b/src/pPowerManger/upmsg/uPower_disSysState.h similarity index 100% rename from src/pPowerManger/msg/uPower_disSysState.h rename to src/pPowerManger/upmsg/uPower_disSysState.h diff --git a/src/pPowerManger/msg/uPower_equInsState.h b/src/pPowerManger/upmsg/uPower_equInsState.h similarity index 100% rename from src/pPowerManger/msg/uPower_equInsState.h rename to src/pPowerManger/upmsg/uPower_equInsState.h diff --git a/src/pPowerManger/msg/uPower_equState.h b/src/pPowerManger/upmsg/uPower_equState.h similarity index 100% rename from src/pPowerManger/msg/uPower_equState.h rename to src/pPowerManger/upmsg/uPower_equState.h diff --git a/src/pPowerManger/upmsg/uPower_equState_cmd.h b/src/pPowerManger/upmsg/uPower_equState_cmd.h new file mode 100644 index 0000000..b10826a --- /dev/null +++ b/src/pPowerManger/upmsg/uPower_equState_cmd.h @@ -0,0 +1,2 @@ +//控制消息 +#define DB_TO_PM_EQUIPMENTCMD "uPower_equState_cmd" diff --git a/src/pPowerManger/msg/uPower_fcsState.h b/src/pPowerManger/upmsg/uPower_fcsState.h similarity index 100% rename from src/pPowerManger/msg/uPower_fcsState.h rename to src/pPowerManger/upmsg/uPower_fcsState.h diff --git a/src/pPowerManger/msg/uPower_liBatState.h b/src/pPowerManger/upmsg/uPower_liBatState.h similarity index 100% rename from src/pPowerManger/msg/uPower_liBatState.h rename to src/pPowerManger/upmsg/uPower_liBatState.h diff --git a/src/pPowerManger/msg/uPower_pmState.h b/src/pPowerManger/upmsg/uPower_pmState.h similarity index 100% rename from src/pPowerManger/msg/uPower_pmState.h rename to src/pPowerManger/upmsg/uPower_pmState.h diff --git a/src/pPowerManger/upmsg/uPower_sysState_cmd.h b/src/pPowerManger/upmsg/uPower_sysState_cmd.h new file mode 100644 index 0000000..3d86d5a --- /dev/null +++ b/src/pPowerManger/upmsg/uPower_sysState_cmd.h @@ -0,0 +1,2 @@ +//控制消息 +#define DB_TO_PM_MSCMD "uPower_sysState_cmd"