P@w2iF)eWPD+#cA=uL%EJv$xz_VL4FTpU}}0}G?Y`pz7E
z^lSm8lE2M5~)uQXqW-O(G6p0iCuduOkO`^On(wuRn!@D+~j;n
z9PfDbSyrTFvr^Zu&3@Z2Y384J4blCi_zg%JnBVSs0d6b`*W?*-)^rFEwpMGHzZ;I*
zNa^=I0IZ*V(qCBcK}7-s5^P5J22R64_2}+iKEPAFJuXbUg$n`De_)wst2(2XVD^#xt$zb2Wsaz(L1%t{t$kGejhNMLS;Afn;hki)B!AG|u|!^r#5Djy
zVhlU#-HmCJiIOs0bd_ARC?0CQpN
zhTI0gMr~k;nq?Py8C2KDc_Hij((1sklKfv-V_I^WVt*`@99&50#E$aR>3!mnI3xxh
zIE_utNgD=8{*(`nvI4IY-jQ4hTaro1rJJ!Wk_E7pA3Dg`6ec*3{eEWzPfXFJyF
znM(>MCx21hG6K?45*ms@(Art{CE0BfFNnx;z3lQ(b8!_*WmzgQdT)h^@dfk(h*IPZ9BF|-;nVuhf!K@y*t}ntCHJt1NsKyXIYc3~bdg
z_(qb7^))=6!7vF`GUH3apytDb&Q4TC3r*56+V4=d_0INMc4`t}Dj*@2K6s(MfKE)6
z27f}f!6P1zcR?|IAAEqY|8bcSCY=yB5Y#KAC-_hhIoPZ(W>Tauv496MTrDU}Pe%b5
zv_;7-%tV8oK^yu&i_!v+9H5bqiwZ!F)^5TKva9>u_8(Gbscwe?jpDP`MZNzu=Hj^USNcz6_37CjxMbA^Ob;JF}p
z?qV`yPwC6ukX#cug1USG52Q!YUNUz@Fvpx{3-pr{c*CTH;lw&bg3foC=~n~hy4hiJ
z7b^zLyKG#{L-&MtPp3dvE%>6%+y4b!|A-h{Ds->Q8(CFBLOlo`8>brQYu=}f|-n{
zlL(t9aE|V*%=i(IG11~Mo6w*WPs^L*e?T3sVH1N0k0)}AF!`UVXs)a&
zVp`4m*hFPz1LJL=F+chJGKsrwUw`rcyyx+eLBiq%wX=7+gms(YQRPWY$g4stvkZ)3
z21Aq&350FIAs^p0V(FMNIh^wBzsX#N+E44nPDJldtSC;wBW51C%cfsD~ag2{L?#-#a|ZT_8GScxnDG@og%r$
zk;Lo}FLjp=V;QsPp;Ym~!GD0$EBSVcv_V>zAx$|fk|CGu|C`rV;$H`sHYL(GYCH}p
zU*45HI;stb+8j=!!&y@Fc}`Sx0vT%QCuR$Afl}i!zjDR&?%fnl>Uh9lN5H9@YeW)hIt2hZ
zEiEAWEdOY8A(;3$P2Uu#Q5)xj`Wgaf8KyfXVIkpznU}7&mRV`g7a8_|gShcMwU$PO|>1L^Um@{&~LgC`=SdI&9&8#rgcN
z*{&@Vi7OzK@*-eoE|baD)?@$5Kdl5NUPokNfj&&Vz^EQzkCm5~3*RlP$dYvPRp;Vj
zGU^;&Zmd_dDE|TZP|MlT<&1{=Mc4bbAQb2hNOy|Dt>5_N=zr3crWFz3A$qvkBP2*Z
z0FN&xvh3RQpH%hP@!T5h!!b>i-~#YF{WD7mpl`LHYOl#_pH%(rjAGxS%nHZ;lw(01
z(&Dmc=tj$aTGd~jQoU6M5G|E~X1j=>z2*pAW3jQ@8ijEeqe2@#
z8lLl_uiri@yMNDE;!UUvoXyw14(r#8IjA!s$ag#xE#lc52M8mbyeoPnOWPkj84Y6~B)EQeyW*Vb
zWhiMo8J_qfDpXwdZ}O#R{oFjp#{RdJwBwZt2bH6$KFSwLulj4q&&a#CNqY{vZ8Yu<
zn|ruf;(y!EBx~+vIv?#1sDXPGJKTM^I_IX#*4JQ*+WZ?D<~CTW+=t#Cn&+8%u2%*8
zB(J3ac|lk>#Np8zd(|qT{fqeoCL*blo83hwnqX+n80IUKDZ?mmndv!u=+9NtR7b{;
z0OjP~Rb=u4D-i(}+hX%FaQJwjJza>eJkQ~NNbAPk(2ZL!?{
zDgix11QS;$Tzxy`zdb}5elA-!2f68x=p-umP66-E-vg>Eez;uTp8KdRLkWvLs3IN6
z2i{yK&!cR|1Mdw!;;mS_-|Y|y`
zP#$p_?rs_+zjr)cBLT{U^)rqyPHpLVp)4-Lh~`*Li16&}0d%J8VN7jhVDS$flbXVa
z4*!GH%|rl9e@T3DX1$kUVwE8E2SG??M}_#C9@cVj=-_t%)L7u-TyxxhrO?k*{eND(
zI%&OSJmr1EbZ}K8xgXGGhu*wLYc%2#Wm$^mL!6un_W3p70#eS>|++a6~%j{+|%U
zJlob!C-UFe`EoU$PR&^kkz3(c9q8pg^S}EkBZf8Tsmoo^_UA#X<`_CS
z7ZqLYOs5CxXIOt~CkLWSclx*35`P_14m}=a^c-+@UdYBC4)~UY1
z<@XdcWu40l^RWp7>J!qhApV5H{_hPJ4KOf5d@EO6YX1<~vX6B@5G8@=FtAOWw9>q0
zl!5^*LMi<6#6I%FvGQ$|9gF)MbcC`U&?i>6Uk}zgpl<)>)rCE)%WH3WXMaY%3x7b3
zZ-DrE4dDasP@AF}DOQ!##ilTkOZ;08EpGDT;3PxS_vy&xc~w|jRDEO%F6O!T_lK%u
zePvSk3kEfKa0=|coSAEFF=~WE$(Qi4(Ty0ad8Pux3l%l)hj2?Y4-V?gDZh(O^zNdL
z?c0R39hmzNtBSvduW`Cl?x7X_tn}>zzeSz5KDGDZCNm`_F`mX$fA7A+M@kOy9
z{hot4Qwgw#Vmt!^+S^_Dj%qFy{RTX4{+fqXP|zu>Lh3YM!+c)VxpElW^C3e4dcuGr
zzbd=WQvS~>;*2suk|`FpPFGEDLA-zHL1R9-tCw8yPv2_ytdK2C^nVnGckVZWlNI_d
z5nER&6^$qS86w205ZC)Wn^4V-`ZVP$ph~kj>!aoOM5OP&rX~wBk9ALu=4x7kb%ht%
zxDpaA;4r3!>x=vM^mz88;$oV>2Fa$}F#=&J@VxBmrRqDgOte2nr_1VOW}4La%8#=;
z8}9~S^$b4pNG_b2Hh-LW7MsKwjQ3a2f8NHPm9*UB=_kF6t;b|5v;)!B-sM=qAC7cP
zpWe4s>8V7wf_OFM`F?pQCF&mka4TsO`>#o^wAI-B8Y%8sq
zNthKVdGA9n*(~G`+G4zd$|M)e+ppq))*$Gt3}QN!YAf*chks#^HL*r;uTA_3l9qbc
zDHsLEn>WLjq8R?K!K$zs%&rvfgGP|J{td45Z!oP3q-olZmgTknvsFR!etLgHN77G
zYJwuk;HnUuMEJLJ;L*Ls$I@qqAOo&&h)|0T}8XD#=nCS1U}IYoAX*Wctxw
z66ev=o+~EzDL2ZVkvCoQ4h$z(=?(o7c|_GR6!`y(C4UA}C0u#&fLP3HsZbwBrAO^u
zykv$vDxg%;A8amZ@thEs*`dZ;`Vx1EXkp|ipzVYH7{;0lv%S>J(k9*KFE_EOF;t1p
zAr$SP@2oGRfuK+CgJOI&Sd1HbNio_>Adl~Vj=8JkXJs`&^}yJCb1E7IbD_~{;2$2k
zgSIJSuYcU}xwJ_5TO3D!ifHltoHjvI1QL=$L
z0@USNRoJ7I*OUBro+|WQPJxZ^5k1&%ZiH#D8M020aC!A5E9bDITMsi%f&>9kcda@$2S1Z0XNJ=Sf}J
z%=mJ%p0^#bapTSim)e>L4&@NV4hRK}Kxgb=Oyed3GmC8PY-;kM-6@M(cG^=w+DujXl1xTH5nG8J~f3X|4t8N>M
zzZGF|-hLgTo5H+eq_z>*@cCr%m;?1<%eZGB95rfU2)ZwLlXCh2uPLd*Pb#Ku9eaF(
zrpFLg`F4`_gU6;q7O03hkLnOCOnKTwx8aVDtUMFt_osB!Sgm>Kzt5oAA=W(5AiLPD14~*F
zG*QOA6ccu)oH?IFj!{(3Oj#cHK2DAg2^=_z{*65PUOMvY9OZa2mX60x4Q9yZq*&xs1`Qk5@wEIW;D&60afcBT1efv
zxkwN|hXC5KBrH%}^rwz_I&@o*qy2+{^?VXt9Y2n+xRuyGUYVpG`-A&F_gTHeVJCwy
zFoCkBci|0^gBhA;(X9Xxf`67I4nekMQTK2XI;@hYMob{6(bC3kg%RdI2i!%{E6K=j
zEZ>POu^cA$GqrhD%ph}qEhqlOlq_VEun@)=DZa-=aJEp-uBZrisibLVPC5^pj?>l#
zh4gHxUP{vVwxgu7DeXh`6=9G5Uz7@I1)m6mlZ`~(eTF!ingf@EtbcxcivY1oAE)8#
zSB-`VfLH78`}4wW1Z;nJU1tNJXke&p>d-Q$H8r@)BD%)>R~
z-FGL!^yd9W7cjf;IDeVK`Q9`u#KvtEvIN4!i=PT8M2WOdz0zP*o?Nu>WKid!S1R+O
ztO|6+rPm|xqlAhUjsXwLE_m<5VN8ZKL#?c2r8weD@0b?^z3kqY8%Apw#o!x*dg1I<
z5G_a$1~>^qUfj?P@b#OZ%e|if?oV(kukD^_y!S!(^q*Xu?0<~Ipl{OpO~N^hrb9PQ
z%9*isf2o`LxI1%M2jaa9ZY<)Pk&o;;Rm~3mS-mHuLS7=g;Whu3+3E!i9BE?)oS?&|
zv`Dx{I=u7hdoXXp+Q)ipic#}wr9o)x)qJd@)GWT9S%h0UTx1t?aq1gu4Yo
zCIeGaPTH2#R8QAzrT-J%gGmtY6}PB`_SaIY&SL<9zYk>rna;$;qGY_UC{UH$4uCH;
zuG5D>Sp1BnK3>WCL9fqekBd+Qum~~wj*u7V9A3QeDu2nH4*wCwDfxxt*{USR_5)~;
z#157cOURT2z+cVYW~7&*vmdwI(k$g+Cd%ly_HE?szqRJmhgt+5Au<^4Z>PwkwGpnz
zE_S>HU%0y4P=FF4FUS=+B$wqAV^5f;m6xHRg`Gs
z+&b{Vr-z1%$d@6lh?q#*@HmY6NJoL0-(3W1-||^pXq2XmbIj?w)fhFgU8L#>3hcjz+
zwW2YT<34IH?oM>s{!kUe?jgP>bR>oPdkUw*T=ZF3NVd2ds|(kT;YdZD6L9KYL-+|~
zlPWpk{{9S~W<1Mqr$G~v@`OA&A*Lh#woluA;T;A)S{_8&pmxlDQROkHfkCRI68PA$
z;D4}ZX{f`624F2B;{Vo6+S*QBj@K;Jv-p5$R)WYg>G<+Qo)*8W7mXVOwhWgg@Z5VM
zL+FPiFfeN9^;3H>RV0(uwVzQH)+>8F6eT`p;rFK|kBh!4<5C#ZHZ44cT(i>Dzm=u`
z)^(Lp=Jl9GWFHB%fh#@fFJivKciA{%tbbWkd@aY)8O{!;mi8xsn?|o4g@$LkR<+^g
zF5cf0RTCGzyxE9@N|aXn)b~4osHPt~i#0f){wlYxT{zDN$YKU?jl?CZpJ$NK7s|!FUVnT$
zRJ2A)gV@j6taA`69_I#S4xgkAYwh{;^ma|U+86L@8knb9w^G^w(^H{@1{{FYFKH`E
zCC~h7T{l6_B8UeBW_xS=S>RqP@j4R98@~sOm?_T*+-M1>RAb%;^pnMMAU0ki$H5K@
zskTvVkB2kv~(}STo*)4IYDSx^?&d%%ZQ%0
zWCp^~xudFgQo+lHP
zV^>-YjB!eiD`4_^WWnQ_fE(DG(Sv&h*0|;ToP2#7%Ak$Ff|P+Fk4dVxZz41YM#+|F@Nw~I1Q
z@^{*!rjx0)Vq01JZ>IT&`R|3
zY4RmXO45;hbqdL6^)y2D(0}S&a0Y{TpBI>t*x&2_rY&)$8Z;=;bA%~pAw{HN4-1E?
zA`QZ-<=iU?$Er9lz-(sD;Jrj1BuG}y3t6t$s#%S|Bhvu_=6?|%XVUT50&MF%4aKV9
zy7V>ELq{SrqSVE5J;ckOmrJ^<0$_%zFkh2(@e8Sq-6a$z?c!V;YsX{)O84CfH$sN0
z8L}e$0aww0W}G_#e_+RZAqT(ZMxR(zG#dGwVw*e*KxP%`dalk1MhPxSypnBHNyRO+
zs$TVo071A|TYuN3gCPv=Sf5ygv_Tm}@$@gz3p$OlMVkK-J|WdJepIZhuByXQpKDSQ
z3`h?H9egHSQ}xzsGJP-Tr&X@013QX4Kl(!JKd;ju9|i=CKo&4jNXN{TVbm@-oN
zf!1_Y7dVC24=ovVt=p{zF5s{n=2emS~lL_Kf%8e
z=gL{xRvcQkbEiE%(N+>BID9Fn{fH+`Jjqx(ksH$^3%B{{_wYk7`WXhCTNlv3J3)@2
zu&)9h86!L$#zKw{lf^8aXerLDl%-*?vz$A5galdADQrj^?D1>?B7=JRnnH|K)lr#{Lc!ixhf)@LlOc#V@sHUHWgfpsbMb%6pdc;?b#~`M%lNcEm
zx37C6g4uX&su%`CPa2X$eW+$ORH5n~3j;P?<%~DRLGOT+q;f+H9e7Y$BUO^b+|y{B
zY`NSzISIXYAHz5J-Fp=)9bkLZ6|pdhV_p3JwqV+M014!l1IRf?xV=^LR7#pW*2}u8
zwh76}*|xssCeSblcUdL>39$}hAnZx)#6FKk}j3fc?6e?@{YrZ538e`=rPe9rxMr0DjMZT_2cAuMTqpD)?=
zQ{+RKiFwP6pRsl8yP`1DzYhwIoA$^uog6DHQ@3Du5L}xOXu{3{Gal_7%QyJn*LkVB
zXD8TOUvbLAc~`&Dc8*)djoT&sz5cc=m%3`&ZA1`SJwj3#s^u&jAD57gDB4ygs>D3^
ze?B5{>Vct7KD1qGGda{R!KE%&TG*{UqR>~ZnY9H-g>V>QmQXZWDoEVx81X!^1$Ho2
zReb2GOuTI24}Oq8HUO1I-D8d`Di?t?WO;v_GqP*l&rE1Yce()p+s+%TI8d!tm6>l?
zY2UTgby;g*$ux+Un`c>VGI2BP^3U15fAAs^K|q>3GhL)ZSzVAqcJq^YZH37|maR
zAdhD?fk84{-r)W&UOw%AUSOn{twtyw0sl1&cUSir{MGy%VYK`JnJ>i{cl-HowNnol
zaKoOJRWmB7MQ?SX4_dat@@!Z-Lb
zf(??vyQGIUr1r+>PS2`&>=Hox!NA~meWhp*#5Jied<5CrBjT{$Gea%o-*{VLbIM`k
zdHDqZG;1=E>2fc-vk1q-38AR-f0br05bE|V?q^Wms)h&9I;K<$l{Ov;_(7qH!xW4=
zI?x{)h!y!MWkRwQRVy(PM(`!`9BKJ0{BN?UJAH=sj7QJ=i{d
z#hur;m
zPs|Agv1mnSw-AAqxY=F)HFW2O(#(-H5^Pf!)F{a^1J@uGA^*LSd)6mE`OLvk6pTU8
zXc;WVqAgQ9s0FGC)3G_?)83$@-0+k{A1{JEfzANBWdh3-
z?r#-tv)#5uDZhegZ45XHDj38&kpdaea5=Z|Tjt*=fZ-bcdga`+6qRdnq
zB{hky$g5*xp#(cm+~W}YpHA&p)AqcsarObQIl0Fy!7;jge_d6CD$XFZtD-xZ%1_?~
zzS<0NC*;2s0b8xV98WcT{-onyFi)F8dK71T#@N!Fy`oQq##?x>7VvqMB`mR++)4E^
z$io${-4EcSf**J&x6z9t&T*;lZpTy$V?xX=qxnz?)NTIxBOzw!dl(
znyErnYwYP&-(c!&T+a%0ss+E
z#9sg|eE8k}+PgY&>N(ff!w?v_;7f2VS}|6tSdgDO=xvQ0_FU0JpesDEVu}2Dq%&1i
zH^Omhztyadk75VMDw7)aLR##TJa_cB=V<-VipKeD^~=G5`1@93*e%`FE@U#*h`i{W
ze}!4@B&W$f45)@}x+%`Z=DG1Udxa*KtSPA=(7tuDjPnO8U2Vxdx8tSMb^mMc>-Ymm
zuH>1TH1wIc2q^lIjpcDvsIvG$#+00Qe7g%jd^c6Ei_2VYJQvR~HBl&~uW(ihII4v+
z|A7%`T1VB)Q%r)
zyj>UA7#<>`(P8z@VI!&RUIRU~{kI|~=RR=viZB0bTAm@~`ssU<-05B>Ho0b1C&S@{
z0#Gz?W$h9Sfp9vH_Ic6i9F)v?MvDrZF0Eyg;(d`hu?D{TafvH}`GAG@y
z59U1va=mQF^8)bwx;ealx1Yh
z+vnYCki3;guVkAS=x8trvxFMLe~pxWaW$cRJq*gv@5HjdJZ^LotYSn`VtgYTpA^$$PVD#H-MRtJ&O
zq&bkWL{G3XvqEOU?HIOm6@BsV#i6^O?XE!4(r!S8x=q<2qCm)Z!h=eSe~d*qcrD^H
zj-O&4SBc-TDBN5*Mgi;!LoiwP5>uS~DnA@%Hg^*i#@+ewbJsBot*^o1QW<9yovsJN
z-9+Ql&Cor-ZWCp_cFd~hME3Jbf3_uLhnBSjd
z^>_|!nmDiJFO|-ZM~hCt&c~DkOOZYi6{YESZY-G1)GbSVVuJ;sn;&Qi^O`a*DSF&a)ALDghuUaX
z4;nH=hwgqW-AEJNe=*N^I`y8R&DkNgJ*gQ-ojgYW*ID)opda`*YX(lb#hrxjJZB$m
z7?6gK_m&AENK4gw{_hwUNy_r$|END}W2W;T9$AnEw_1kKj*VqND13pej>82UwZwi>
z-5VJ*>e5L9W(gTJ&+O656PjxOyjBGx$EHP@Y$hYl#V#3N
zBOS!B+pjOLk!A)fV5lNJA|@}1XkQnuJ|GD2wG@}z7e`~`g8%1?vUZgt4ID8&BT@0<
zq92z*K#i%Uf6+)jp-Xy|vTZWg=fY-t5XMe1(n;fMb#;2-k;E0t9_d9M7y_Xsnpq?}
zwqexaCk_k`*9P7>l=5Nr`Q)yQZR(>0uelPt7zdgQ3%7oo5^f3;XrA~oL|P#3$g*fJzE_lTq^
zHglT|A7Mx~C64O8W=WQ-kbl|mZSU|L#*z#ER3=AxI40zUZLK?=DR2|`Yg!_vu}R8c
z>IAS?Pi;e?66k(RV{!#o&hVVCSe%U5vL2b*1zhwi><^d}7%qfwZYNMs+VwNU1^Bcm
z4U;Y0f9g|~*`-8Mf~57a+*|+g2#||y(v?rE(nI8Jeu{&man1=3E5xzoY?M(Qzu|H~
zRHhsGQNYA|ck8~HXo;L;96>*4#gBS-22^d5Y?o_GmaIS8$)mrn)lxPxVXymVmxcr@
zpoz3ZaPMHgKp~!N)^o;06@aRCGb2xgy;}hmfAS+S6|Q$p3u}O;x*tob`FD?*!B@?#9@D!h5Vf4beb~HZ-1*hyXk#VO+9FB#s&f
zSM`iADDT6{v_3ygJHvFLw3*hI7XTp@V>kp3D8X+ex>{}Lcy?7qcR$Px!>AC~!EC?*
ze+6)`vE}^zMAEgldKb}HlGHn-mn^D#mD*pqhiK0{%Qs_|h5COWx-rJke$qs?^j%(v~R+1NpUN-0ELzEdW=SI6QYT<#Yod;eF?)Z
z4)6NXT%|5kx?kKeJtY5g0z@Q{JqXYaf0XK0r};J**FnxqC7Fu&i~f&FZNfr{zi=*S
zkhmCPTb@Z;)I#X56T#=lZLvXRS_uHJw^+o(J0;WlvrDC1e%8r<-heW}G53iY{z4!Jf0PTr
z@ruT2qHmeM14Z%Oew-A~nF8=%i7(cTf^~3~d+v%}O8AfN*jHcy=L+(hEgtq>$f+V_
zI?{oiihfF#NFJ)JA=AM@G31Oc*y8wh!W9U2HH3W)`SA98r}@*E0)r>f-^_cB&EFd6
z_3j?46=%a89{Pcrj-p5duh8p(7X3R3z7@~NZ8KV(D
zHq#=@6$B?1u6F<})W`sCzs30>{~u=X#QN*F_?Grthf_o~tzKVg9m>>N~5BxaY)Gk!!4e;fCKximgk
zZu{QFztzVL3cQgxv2ret{2??4&CszSXOmBOmw5rA5MA%V9g(gr7fWC!QE1(zqsuOe
zj13Us4GUCUZTG|txC7AR(uiUjB@hA)%SY`2a3)mm{M9j@lnOZO+94WUmCUINaKm4m
zlVmMCfR0LjfA@&O)Hw}6HCK!4fPbsV@Mkr&iKUs-RxDZWZJ))yg;TRP-lpBkW~)96$5qZ9M3RAhj(*iF&;A&uW`_iS?N&rpVtHXvhA
zkrI7ew4+iY>|hak$TlIOD~Po51i9X*XRHSATZQ&IA<7zs`lv
zcNJ`6R+0;^vpO74GuO6$YstQGnx~ED@AHzjLOv^#+dUYD<}w}SMBOSBZGJVgnHhL|
z#sFMyZ@xZHl)R~>hz)vTw{n^tw_7Mb?O$X?iCDTOa3ZY~KcZD372s+>_AuBxzQUJR
zH|e8Z-(6LtV`X=e0Dp#JLEg*5pZ+*y1Om5P@m%g>n=u+$UJ73j%5^r+Xys(GZhujCo-SdVy28wYGS#D$
z1Hn=URc$!uIs~tk5hqKCN!3E{8PWeC{ttDHxMSH}vc6V~KMfkfW*W;jh!d{>R1%78
z%R69ova_U?-b42ix6vB`hJ)*sHnqgrG!KGbfE>R*?Xbw13C6mx*47+j@w=kEYRsNxPU|q24h5l!rK)?Th}RZrpBK|J7&mlkwCmO7zGL5zOI+1sEe#=K
zm>J`&kT5uIAF%sWJV7tIRE06+)8>fIN7$S$jvj
zw_@=t$~hHNVF>AUKi!}NlBof1yU#Mx|LDqHW?mmzM5gm);ompbcoB(El73n%_c0T-
zCCq2KIZXQ;=}t$110J!{u!JTYmbtN*K-q+$AbB;9sIK{eVUBqFmwu|1ZO67&FHpiP-BrA!0kj
zJAXj8FX%gA$+TQoO`P#~!Hd1&;C2IP1yE&od{;sGTOfN;IB|Ay_`wd()LE<_6FBL6dBQI=J^LgR-oSHhR2xwsDZlrEQ0f5-W(_|QyAbX|P>hWO7x
zA;7!AujBh~e`3tNw0poflp(|;&|+5c-hVdu8mYyo6mREUj`K`P
zz*Lf*XwAa#&5);=$&~09uVknFihsiJ6BMo|mBQZJV8KGE|H1^UkT}F8b_H?bBgltY
z@!%7SNePL~F7T?TT$NMakeRs0LISK3bXeWECup~Cs=w79bq(Z&q)iX7q(O8#p(=Cr
z`-%f>y#0G}dLgZo)|-7xS7(~>Kf@~Oc8uPMZ_c92JyimvphCE)I9@(dn18_mT=1{^
zGqj3*uHj-wGJM{iLc}<*z!30LcHj0nD>iK)l>L<~m1R=1CQuyF0^9X?Ng(2hSs~m}
z%W}h}{3@f%SxmE)HMzF~g>~s`NW2VwB%lzWIIv7;mwfCC_fpCX>i3sJ&4tBJUBr!lixp}Oin>sX~Q8U|W<|yeL!x?9n
zxOPU~`$i1>qXYZT;D-`o0%5+l)2>f*+tTgs2=j0+mG$252nOy`j>O8{SDyT>-fQa=9+~T7#)0w%q|L(<^YCw0o44qJ}V==ZSp0Sk0G2
z^UL6Qbk&gzIx@3YVz^mpUYO(m5N~&|W7u`o-6n>XVX6`oOnTM(I=JK4iV_BednOYz
zkqAK{Cc-D0^oOHx2!9B`@h$d}tqy-;AsJb6K#j0WwjQlF96#y_GfRy}*>J3kZm{Ia
z#&W}^p<-r%Tifb3IvCkMolCd9g#V!FWX6^rJ`?B~Rgag6obuJSTsoq;-+N7XQQq{f
zNvBODj9WJ*jS*Oe@Jf+=tp11Wr%Q&XPH~;Y=~8
zBc@ibP3;MZv6jZ4ldh@&8Kc_Q94y%8cY6ucadA3<*h>4o7#M(v!XDG<9(2`6c2lcJ
z6paINvwOvdYxhC()}?<|iXXzH84alp^8cv6JgPBT%zyQe_A>cG&7j+auZLfLmDjN^
zxOkM-#tSzVhRgo-jE{I}9S(w!#G==CU=}^>I4}CA6CUP`NB10i|LaAs#^l5&?VK
z^`0P=G)Fs78L$zr@p-5KEnm{(d{mbYqaFNqG!5G|+)f3hRXtvA`-ueoL&RBx&|MJ6
zQi0k1Pk+ufuo5WnBsXWe4Y+
z?WL0a-7t)xZ~kY}=p5-zJ7sFA=m#exeu#iS5r2LmgFc@V=*@%J7lCd|cZBZ(JFHfD
zP`M3?pE4?2>Ddr_q7SwPW+rSa5gZ>e>92Ek6()u%xb5J@H;&k`L$_VSvp44%5nc
zax8PcP@rj`{Ev*o3OY+^oenm}&$z#ijQ?xdW+^i4T2|v(#X1DYWe9H#q_60H@yRk}qK_
z)hz_Z{8jV&-Q9jkuiSIS*x+ij{(lILhUQ4%v1`?$236No95FcLBQoL=7`C0&
z;lUFV=NF16jAKm&9zP`dKt6m5j2AI(bxMdM-9WcrxEu|acVm8_pZTV|ZT~*9mSDVW
zKqA5_ESEk%@*H`XrS{|bqu_N1{*lVCoKZY3w9W{Eum2H)TiDP;s8W}e1b=)>7d?P`
zv*D=GTGKlB!QikSwVg~Op!`zU4aR~Odv^Ih($gH~Zh}2vyS8fy8GMDh6rgrq6m=Rb
zA^)alibWdimu
z%N=FbIQBTfH}kdBRQU7gK7U?Akv;qKC9G*$I1Lx_8XN40I&5$mUzgBguGzLQ-{mPB
zf_IcvPGwknZtzSIA8t?bb7n8CZq5@b{iH?TE>Av9Zg7xf0Us#kW-D!eQy*y_D}Y+)
zBmyMK_`VOH{U0+$+z44Y&*?uZ>ktlf^I}YFt7J!}c^*7yA`NjzFn{ztlM1@>43{h7
zM+`0W3N#c^K~J|dVr4*2FAmtQhrR4nI18zXVE6OvN{dXna>ed`6Co*dC5EK&f5XUR
zp1auO-jmK$Pm3MhGgos_E`$)q3R3rm&%-3?nZT^Bd-AcGQ%=+j(H6spzjI!QK+S$9
zS8J34Xcb1#>&&UB0)GPhvh5sxKViP&r&sVj%Qnw%KPe+YklN5ZsLmi;StPj;_q&bu
zc7FhgA`EOba|8S#OaaQi;1_46sNKD>-E~8x>dPB$J%|q#3{k_YdoO=EF%FBQZ=OV~6AvEos4uG)5`GOkc0Dn&{F7rnRCdnLMKz`(b
zKm8v2wSe^YT$WX-MIN)(A
zvC-VkzBBux3}IKDXacc-dv<`O$_;GZm8O-0sxbtKFtUGL;hPv}#q38+;<)5RH&~J0
zhqig-PqVy;D`OhI&VwzLQbLPU$aSnC(GC_kT1u{b*MH~}Azs+W+ls?$pkRPJ6LO~E
zWZva$aoigbGx6|T07gsC_+F6<1_G2lRx
z808)$XmU}+23vIrc5Nfh!g)`lRf}A_x%V9jdZE=~Mr#w6j-9}`PMA7GVpN_$1B!Fq
z>o`8-DSs3}C|b|enj7`>JA7rNNdrcwW8~fq`L$x3h0AmjUh00LQLhY&B@n#W19%{7C;1i`>b@~c=Ja;e$LiawCa!1>7jSebJ
z=tZZY?X*^{NQH^%My6^`!Vs=;CK73iNpO-Ax_|muJz6w8WWiQ;@0$aX59n#IsWQ4V
znN_Z-uV**@zWh0|9LeIgUXiA|i)h3dSDDalzS6L@$F!7GV&L&&^<$`6$E?uoaO#TV
zt!V-ZfsoWc;-yLjA>5vS)V%E>oNr;C@_Ux3LUIgxOq0M*^eIIQ?G{Zu#QFz%wd-K@
z_5j#HS
zVA!=YoYxm&wn#D
z)02NGM{6-Gv|@mNvdK(h79dLH>sqQ5F5f0gM^_MxTT_cL&A>}2RX&5IF<0%zIT?{K
zeFt!MT>OzaV#>ct)&2b>(dA(M9zm8*XD3(4;eqm7Att^B&H3UFeRVS5bb4%^FY%O=
z#r21Z2vg`9lC4v(Cr^cbirhoLaf~P8Z06hj_GaWUr)P3$F=6*=c!0=#(rWM7*
zpyQmGG55omodQTSO9DexnD!vs%&&fi6udRuF#<=M{)(@Zj>B5^)=>-B97O=3qh#kwJAWR*t8%bSzPNZZs)1wZN#*0D2Qh0O
zbG{r_#45)fRS6+onP67Mi7;M&x?b20)XbP{+-q(v)aD*jtTnH!hDHC~U-$r5#gvrJ
z#1f``9O>laN1F^kBXo4IKY#q3FJcf9GD~jbcm8j1RD19TbQr2lDc5i^H@dQC`enoM
zY_on7(#yhGrc&)NaCo$mfoa4*3n@MIR^i|^+AvLrgOW3~1`vpJ>vJK#WQ|YBFD2nG
zE_%t1im($Zq!dvwc~V|-k^bPF&j9&d0yuOFDF6=6Q1+C_^&MuFxPOGA_|;~?nqc|8
z0zT0PPu5L5V%2A{7lB1XjB8n0jk_Hr34>!wuDXegzK^JlwkvV_o|?-=jyQFqiIFvn
zy45`@rMHTx4}d$@KnDzbCfHHg##6DjEg}2X;cIiY7HYO`8vybwyEOiWn&$M>*;&S?mCtI
z(8Vvq+v`HH2LUOGU+xJ2QgzlhA#F^GLD@&}i}qVx4_P$X>VKEIn*;qCFCRaPHS#wC
zvqw6H?t8$liA22|;a~?r`}i%hj>u@Kw$<|Xh|YEd2YC8Ntr5}(a;|<3Ux+_K+N}b#
zVW6RLOic$`|J%rAfM~r2xRmQ&!F2lp?U^(`lAMWUlPBqH)>tv(7iqIxVT21WdnK(V
zJD%h?G6`P3`F}&;N+#;FJ^dzHAd4YN|Mt?HfCX}xafzHMWvkOxqLA(WL
z<~p6#xH$o3&G<^oZ77wVGutD?t~4lnU{{(kEH9l7I~#2AT%)+g)EZ+-^NdXuRCc$6
zWBqxX&bA}{)8R4sCoc*=w>+=nIX@+S{c^{ko{om}K!_by6F=`?P%;?PeOd%m#@y04
ztnm$L6o0WnLD%OZleoAhaTh9TGpYX?_t^;r=L8ay%y;<2=?3fsm~Wd`{XlS^4tfKh
zK>=v}hP>8L#~)z3;6dhO_UbH3`0A-Y3jhr%@K)Yj-=nT?^A}XqF%PU*Y`?&c3bSZ|
zUSN#lE_AKq&A1wWv)g0Jr}r}&XS_GAQ{VTYjDHU%TF`^1$$>Q`DV5Um=ryO=+cb6VWqX`y=`2u!+e11MTitk65Wmap-=_Qr;HOGaRD(D%
z5EJ)s^S%ZuS#dxn-Fhz9nMg?{&VK9o+OeOIpx{fsdoj1N{U&HrU*qK+J(>W@O4!Zt
z+keWdH-u*&h^@&XM;AJBIBss$>TdRDba7hA(DGEC%010hKve+puk+6MBGzOT#LQaQ
zq1ya?A6f=bxw2)CeK7K(L9g*x&2YSqh$5=2JDsh?>*zO?U&6q+v$@T3aLEh^1k+
zjvVs!n((hYP9fw8m|HRB;ZktT!Xy`tsegG_@NdVAqwMU|cjd10k=iB{Yje2?tsou#
zAF#8)(|PSZ6~X1tJ1Gp0kh|1>(87+=y@w;9Xd0*VL+|BbCdu~mC{_U_V*aBI9Lz=Z5I8eaU|pDv1Ny$@=YKRp6khsL%VT!H>f4`1ai;A0+If!?M^hh7dzTF%
zUrWozg(}3>*Z^(<5tnmO?K#T4#Vf%E`||2RGAnbC+WPQvs3m1K>r^uEniHSzTXWOw
z?sh(4M4{p3_Ek*fw)`a5V%vfH8cQ8;^o&64Jkd>xdHoG;oE1E5JQmc@pnvdgl@PE-
zs-U{)^{6B6f)qX~vh6n_<~AKL(JrNDm_Ib|2ULY$kAc;}^%QzA&iwov>Xpph^Ehmx
zA6##~;dx|E%xG#ik0{Ren=}C~dWUmqEv9tgA_~c!4-I)-Mc(pK3{S)Dq2#e&4sl%#
z?weGvJO%^B*Pu44;yx7)LVso{I!8=}gC6egh?u@X)k~I4dwZUz*bF94L0Fridp7oJ
zIpS?rO}(cg?n{8qNcpwlJJ=Zj$qx#GLC?=b_5-CHe+XPplgL{YDCcrP
zj)Un^qoA*|4PI(LY}{}yIzz)V1UtWNJ-Eot#GrRKAHZHH8%JD{c#;b`clm+1!TT*Vd5fRU#Sy_|ol`isQCa}7|K(^WhI
zwy4BR;Kr!DqmHVmu75!)rB$&GZ;PKsXatpw0QbFn`AmF3TV(HTL`{MbC5H!@8I#sT
z=%SwwTmMNW^nczj|1Hoj$D-3bSu0*Pal$om<0@UN0*Ix$nv>J6LMhbya)#N
z_Qghcp~p~7O`lGl`Sb~WD?9qp?vK~Z=~#$sEw10WmY>_nl7D6VG=r9_HcT!o#fqJV
zT~9C4TkjPqfQV50V3E(-$=!K4R>KWM!?lMiDJQc(v>WlN4Cl@3=*vN
zgn5k1uQ~P3`+xql>#t{KlC0>IfpX5mE8k){n!Hou-BB@_RN2h(Wfw-w&{KWmihe{3ogD9^L)4nnxIo!FA-Tw6Aoa~}8^55QV
z@%tehIb08&9K9N&PevU9RS;ck{@Jv?x_<(jnK$x`fPa37Wh}27%%H;7(;%WqzG}+1
z!A7@peEnnmt?|35G*B*T+ysALCq=LmR&1;u|FGv+hjB`GOvTE2kQdxUj;Hh|{fv)|
z>jUeNTK3ouLRaWOnpPCx(6l2kl{dfNcVx7%K1;c_g#!I?;a%V0{v38j!P
z0^CR2BvM$iMf;8V#Ondfo+Rs2lU(>Nh(%t)lUNP@WM;E{N|9Brhrq8Bq4tW#SMTD9
zqJPjkD_0Wtw?!Hw*JNz)ef$$mQb9jr(M`x_&b}3KO6hJ(4qj8eTkG7<&^GVC4+a}9
z`rv{hw8c9eI*__Wf7*$!x;~8I)`*&v*0DSZKz!W&gd+{xTjTu5q;
zC$`_G-JKBK)!+OW=rY8lg{N|p|HL0muFE+^X4g5Kd>kz`i+gBFg#6xT@F{F-woiz^3^fs_A7WqqfPJfwF
zot;{$paApj2JM@9w}k_C8k-C=lZeaA|0dBVp5Fo8aIxj$zaSF5=dH?d{|Y;~6Z$T*
zFOxOG-q%q#
zQER_VL<0Ip7IYArK5&Xj5G3a(gZXW&p^dlaQ@zn){DDS!Ls5ssZP
zsnqp~{HbB?)z~xqnioSeG5?IlY{?`!0aGJGt}Q7tC3MYj8*BK!I|J0jkng-A56x~h
zeo_C0y{)(Etk65cJ1c(e0VP>91@4CXXKhOE#Z`dr=_jrv@Bd?P@3F`M1N&PqeEAPG
zJ5Y;$Y{4{k*Hk_)L+G&wr|ywk|)l{lMCfD@tL{P63bHXk>Lx#A!xM{@$g){ZQX0
zZp7?2n_E7rPCyR=6k(-NyzFM=^~FFcSB@N%=v=F1?Sp3`cT`POiGm#L`vU_)jP3O^
z&@Ws`Iarh8X${=wGfq|mKz(dM)w?DFJ3
zVZOqkz=*jsFYZS*QIA^9H@v;m>PVZ9xXhyS`0b(NK7SiL1(tnjkKy1=`F3(0;XUg@
zT1n;vy1Zk%BpJg_<2rJ9!L!Rd2r
zz7~z2b66Pf!uvADaTSNsa%|Ry`m)`sc1gpSn`hPs_j^@Wuo9OE4vKoF&o`xk2SSds
za!xs_#>S}1ppUglEW(Monxze^fc
znSZa)>nGHT5_rpOH@5=jnrmijB?z<&`3=O>rH`>dwD#u&xP*1d;jM6h-ncW;V=+S}
z^N=ticE4&2(`*C-4$C?#?=kX}|2QaJyi?@$%;P)d{b~iEZ06(bN@{@Tflw0#lHI6;
zMxZJn(oFAR;krI3fPui|ST~^ndLj7Z<~vV}CWu-RsU|{RL(rhhWRPAbswQbHW$y5EtGawt9gh
z?dh}7`u2+s5}xK-lrQuoM!DYFeczOiqa#EumWZY-*!^#FRci%+=X=yd1m-Kt1Fyk?
zn-XST2yTQ|MR`QI<63k2Dd(FvkCHEwmllLKS{Stt1rnEW05r-)K;5Twg@2$MKKcTg
z{k47tIyZSVfXl+tVtY3Ht2lRrws#M(qcoIff6NbMR%1*MP+kNnE|=T#3?+!JCGPfK
zp>-PQTK_VE-;u(ce%LKz8hwMDg^LLZiSEud50JX1KC>+U3=L$)AIQ&@4XkK#;^gR|
zT|5Ml>n)Ep!AjgEPa%h?$bVB*?1rn{`yd|ap)2&B?Tq0hMC>?C7LUEk=-63f>xWM*
z^Q?t+rE0)^?qfA3I|mp;mYH8a;i^X>6cURpOX|o7wrQ2ph&!M8xBi#$xGr1hzNVw#aMh3q
z>0dy7yw!|Ovt6~!NPpj%G+(47mg*hd1+dc2C}O-hU^!O(<7$#=X9i%H!P&6RMOowW
zyKGad&Wbgjk7{N!>S+qWT`4IQJA(yJe$c|>mnB-))2H`zl6r&7$^T+xoPWd_cb_34
zjbxLWcNaB7PtC@=Q;)+#k}=
zNG_~0B{4TSK*7dI81FFG%1RE|G;BzAP!w<9dgs7@SCQY1#S?ESqQWWgOrW&8mC$r(
zDy6wD$U2-{et+-;U?buzR8XN=HNx!4#?(D(j#r}cp3_R~Mndn8R~p81ws2m{j6@>#
zK|D5YGv@XFr-b5wj8Dj?aJjczv1e=6pH
zRHKUO7}q#Dk29SlhNIRe*L6Kpd+%t+B(@bVA|UAFTz_(;yJ}8k8%5Taq+bW^g6)7y
z(pP7}eFZqreI_JcPo%)#SO9==BFpF>mCej_@pTR>xhBWAi=Bw`o!=!gWep!h_9>5y
z&xjfq;_Q&h>zy>#kliP!rxhYk>)hhjV?T<3t}2HP!mH==!byU$OSVdJLA<(}QGUVO
zP}UuFU4KvYUgazO&of93v%lLf=Lw#VAV)H-fr?L5lJPd+_Wka72IjJC;#{Gv%a?Dt
z&fSti6}Tnj5aPdOO7x~A>amZ!pIJhm2_;gPWoiSDEt!``iqyDDhqcpns2nj?qQbX2
zG@Fe@lg7&T4scY8=!AqZbA$u^Wy2gJ+T28)Hh;V(x}6Zpgdnd(LYF@O41_dC!Ol&(
z?BV9#8h?f&AChgCciy)~^YIuPXI1$%BKU-2&ObddNY*%*Wtx2PY2aiqUXgl3+QEPFZ!`kSgGa9}aVgWc20~4Xtv&Ql
z#(%05Xr0=Iz*C6ciyfyH3(9TxJv|6L3H})aB3V5K-h99%$UnudNb65CRJ(X77I@~X
zW#Ix!2Irjr-~g-%@^+DGNR&9`=E1|1{bT)jApY#`#TzWq9k|`Z9j9YOT!rTa8Re{0
z?%w6u>>~*DwC2z;$-$%H3f*a}HM!a}+JB|*XDHG-r;L|A+dEcHVsgld(R)9T$>e5j
zjFjmpK5-|zB9emzeOQHDh_3{gDw|MM8YqtoqyK0b~Q4OD~^vl%Nn9D;HHM6@STgCtig*+GmMvbFEivHkGc
z1aU~(ylmZ_?ZS|Yx4kM%z4%Bl1U~F)%$Dj&J}BhW+%h69ZyQaDhV&(6ak*P!$p=MY
z#zkI6XjgVw82sLB97J@x4Rn9(iGNj_WD4{hg(hsIO1i}o?}6XD%f(Ndrd8*V3zlm6
zSsuaVqMxWyBhX!Fs7YQ9?_ys#MJE?0A3)LV9movxSekwTCS1#c&u4dQ9_PENUYuc<
zJwOyEndlsJ3ep`dFmBAH_F(o2Wsv(=LJ-6Td}cuvTjD8?yj>Jd1ugyaMSta_wA*iK
zAQHI<{G~K}!?T|FKhcaS-XZsHO_z7R>zOFRH++o{F%cOfJ>RH)j}74j@!yY|2kP9Uw$&F^CY
z;lJozP6!e>ucy5AMRYy(h7ejgW~M0JUT7<=w0Y1m*5#`})rZoGCFWWy=@4T4P3gy1
zDkSs{jgc*T#dZC3>^D%%MX;j#mDVKQ5*b=o0O{r2RZ#|cXhR{1Lw~9!YMz~2Wct`K
zqiWxaKm#p1?D7GFq;&;(3iE|RI3LYZM7&M46BvMa
zJ>@TF&nQx#Oz%(!T7G=AHk~L#EDZo_j~7Dqv|k|yJex{CN7yBMQLCKC3qI@JNK1zG
zH!=A0057BkYkYN~3V&$kP7xPXGH<~B2xV?L3iL{Y)cFn(G3;%LXImVyDZE2;Sq*zb
z!3d%4=wU>rt0xYXiK%8+F3>4SvZxcF6$1l30`(PIcI2ob4`et*Px(B7-ceCy-R57Lw!
zZkj(11SvXMfoLBtIl<1=TtdSb|#jO`SdwC)InhKFyJslfvJ0vYH|1m8B3=1pwEAm#hkd5mq-rwtAPUtM}EF=uwF
zgx|$o-egm$w11mUZKoa);Ke&u9`vs)tPY6PiOw+3T4lXjkrHQ$VyGG&1y?{*XXN|&
z7Tk_%;jiVXXJJFN^G&|_nO%S^kN%nXqz&I?hni-!rs)Ahl=RVT&Po!75W;0
zGvS}C(FZ%ey!kQq^!+FRZBo-L6C9VDyTPP`lpGHo5Pu5Et%bLdL|4^2mN@b(*JAOq2C!LRHt(1A{JPWus_
z{Hja{uF-yrS%%O!pmVY`K9umDFe~e0|2#uGhtK|e_Z=YLIE|m~{CseqzXI{Q7I@*n
zy}~B7Lw}<$UKS&&^iycf36}rrIc!LI)m*+{^V!`03Bm&9grI}*b=)X`hJ
z+{eC5eU@dpVuF^_^HvYnk^$&Klll&~)1XBM>iA0Y%aXq=0D14$fldiXqA7k{4(aUc
zkqL;qE|;Tsqd&bWbN4V?0UmsZZi>dLi&BW~?^dr$slQrdw|bA3kY?pV=DYBoB{CXN
zG=G#2KIJg|Jpk=&vG8U2NQ`oZL$I*R9u-vaF(Bz7_x4QH_-q<%0gS8O_U3H_*VDhF
zHZViKn)hEF+IjQ4ncKtQqZ^7qz%sI35C>{|ag~R^S?J$$E}?T#zu!LrX!@$IvAG0d-0*>7JDg=znTI
zsF>kTZfYD26aP`f9~oePMtwSOwpd&uGY<}&UCJjk{zdvFR9&cf^i2Qwk&%cJ+SnY<
zffXuHxP)ra(pH3DWT{v(se5N4t^lM`Hjv0KT+R?o|x5@jzhtmE|OV{_Qla(`UI;N2nE
z&(M(%I*5!^ORn35mDryH34
z-B8^ROHuNfXqHk_x?JpErG@2eh_Z}P5wD+NcP4&-cTU`v4M(j*J(Ar;`)J`%?
zus?w(b2%l3K_)mUqQjM;8h@E}>P=X#A1!K;Hhx@;hV!XG?(e*Zc-Jnn&1)W#Mgx>C
zyv@#=+*?LBU2de(hzaCnoQ8j_BPNJU6rVOLq=myeZcRJlBWp}1*xe+Q
zb`#IOHIeEv+*JhsY{Gx1AVH5&Oh)AVLa^MU;euei)f-kJO~&}PlJMQfQF@d@0wfnA)d?qa?1Be+
zX-zyUMD*+{CIQ204u8M&*E-l{{6_kfS{@%ys0D_`Pga?o(QSQGWZ4`6+E+f*$h8C)M+8Bw=T|obfw+(O
z3tD@^Z13SWo7dc-gm7H}95+m#ei(>XOtX?nb(->Pm;T(!M1Kd#b{!?7(*Q~D4Jh5H
zFGaSQ8qT|jwB3y=zTcFDHK172}dQo#mjF8a_c@N5~k_VwSofvQnPBj9Z;%P72|2@QORQN2Gyf!+^N;;rH7qjD0}2Vir{(J0rxK-
zU^aRNPLAWqSO_py$@#j!wYG2@)01l&tRakoHyVUCM7!DPMo*ly+R{)4IvQ~aqXRDZ
z^+H`|O@ArhK6Wfk_QIRV+aW)JFTjtp7?8mx@Pv?
z7yEC}Rm8H})NA_Let@)>gfVb0TIa#p@5%#(8bn*Yszc^rZ!43Sie0w-;Phq)d!SV5
zhp;I;)!p|VN18^EG(e|)Qc-M2$P-H?0EfUsFMmT`Mz$WF2JrXoB#vm9Ougg(K#co2
zwOUSl(?MU^=BkXm5MWf9c4o-eJj?i)icdiADx~UrRq*>iMOCbTCnL`_ifkFVxZ9n(b9jYY(nh2ogq=UK~tlr9#3ahNG<)DbJgVE*PT0Ua0>
z{q&@tiuw;-fNM0q#HM=W)7prJsE)Wf!
zFYkC=k6TVeCYjjU^fwADQ%wFT#{DM=SE`+2u9y8O%ZH4R0RD{V2>k+GVxP`rg>X^0
z2S(a5N0GKJOM4bdB_)D^=$%VmSk_QdzZ>LSLSfsy2o}ysv%GtDPGHQ6B-kj;*eccU
zK?rdzFy(06fvi{92s2#Q+380@8kqwIii$2&1It-wT|1id1s4Qcg4j^Y06d-3cB3_c
zaRLEOL(}ISD?@70`fj1E8D%Ukw13+6gYx;bOwryDjjLIu#VzxL$mr>;iICymG7-uc
z!syIBZ>o3jKnEYg^YHC`j>j!D1?jC>*JA2w_qGWNA@UnrV#TEbH%KGF(@==CcMe#_
zOC+|gg>}h*;ter5&xvE0C>48JGG@twta(CzqNG*#-Il`RGsp2|M*57cbbk_uIeXfw
zdh${Jji%uY5u#o}CNw5CpaFHOt4Nd+oQW*hEa!?`L<4|mY_78f-XeQ-;~h3aCz-b?
zW%qCk>%2||2E3bR|I%2su
zrBGp2O@u~o*nG)+t5J}MzkeXQ22@kf>OLYa?)JeQkRB6a^=~d=fTl_mmKG$Hh^$
z+QN^oi1ryP*qJifQf2@uJs*)Bq?9_&MvMwQGw-S*J8Gp&z%CmB}HD72r
z%5LvHKl`17PSa&>n{E9q_ubeK&RBH4G09<5iaq>>g|h!tR(JQgBMPK}Tl^EL
z0t5l9FMha3_0M1Dj8;5q7_7Ib3J=oAdyBC22xzs!gJG7&ycO*Fu1iEFm)q?M*41Ix
z=os1g#}3>U-UMi`gMV(R(K7MU3sSZd{L$PdZ-5x!*aEtNH|>WERA99;Q9Nkecg-gk
zD@Dyyp~N~(lojTt4?qQx`?;)eY_r(!qIv-0QFtyLf$l0MxbBWcSSOZNg*hAgioYHG
z`|9_U74<@8bxHA-I@1oKT)3>>dFT|_1(a^Bm3p}1hL=HYcxiS&!$d4p=l;uJ634KnYa_c6W
z)H-uZhQMChz8BYJrVL6aoBL^a&A`C}VS2@lnwh^kATar{GPrxXQVnJTLiOJJ!!k+P
z#$@vSVnb(dbh!Y&fQt=y0cf|^c!bwJ4Pg=Ami?<2_kaI*>X8{2vBblqC0q?%M5@bX
zAQkC)4BK?i|07$wU{8&f!I8oHox!YB6Yk&>A*8&Q3U+EyT#KQktIllln8n-F-2R~dt&sw9+j$Y^;vbcx7f$lFHqP}Ab@`k;fl^fTt}`jdu(^Z?a))hV
zVC5XL6MuOQux_C4N}{XSXuT(?+JNHQah18J)^A#!5q6>9r|JMu<;A20MAqD*MAhqB
zr=XiaG2F))vYF%>a?;lZw?!%(FS!6XYQDgYDLwHHX}XW9X`hcIAS+pTp3va(>mWEC
z@Dk*|P2XAYic*Hn^rna(!}o4$B4lwd>74c#!(jE~WS&c(&gSoHVJ&RW2WpRlE)bCxZ^uo(tw(RPtmLO&BHg
zRq9jEt3LJgmpm$;O2J4LEDpG6TmynIrZ538e`c#V7o+3#qL{Zv0lEI*Kp0;>rhhe!
zT&`vOiyVDsr9>tUIVv~7tiuZoaJ3g&l7MqE^a-8gDGYIZuyshN%b&~#qfoF2u
zIFfF5Vaq@Q2oemL+Po6fVlUJz`Izqb8g=FTB!UR@S|*ZY&*&`*r=B-e5`)APNDYF!
zTxGUV1ok?b`_CA3EnWuILR#kZ(vj%#eUg371ti%O4MU*PSNg|lY(rxG(u0_vf5x%z
zZSC;r-V)4J{d%**7A!bR6~?0tgWv{^)u)r#wO3Rvf^?!xgQhL)KXF$UE`dopVFQ)^
z+FnjrtZ!W7V5~~rTAo1dqoAjQ9Z32dv$T=q>w@&xNrQKe`)ab@A2b0E{`FzBxSP^rnQ>l&C=jF;~>5tf6V1_
z;twV8$xfMv>P-cX;*O(tb!$7hqV6H*J~L6U0B*6@0<{m07jI5l!wE7#a5QLj55%jx
zIM-SOB)C`!E5M)A@jc=X)F}36n*uW=cY3Vb60FFfg82=wQqxi!$q76ze-bp9?Jqrp
zxqW2B7gcF=3QcV7N4_HgX-!TI!BzKC3SR-@~K%e{w##^SV6%xHCX+7UjZFm#iQ}D_a{@{W5JADSr0V
z1^bWGS5vVX!zsr|C*BfmhjklzGLlnLy8-vt7qRaCuBUf2+k8hF(+44pxKA
zo=ASBE=r_L>OQBEFFU*b+v&J{3+Fg@HUHJ&kdzj9zuf2t^_bonh~rwHRv^4A7>rM@
zvU#%2lcirLUybBymZSp4dm>r7M{m+1t&LnVY?0v-EMm66C2~?oqi8i=(K>l13cPH&
zKRk}&1h>6)g*z}Ce=u%_xWR0vq)7d-dZo>}*V9b?
z;D0&%uL1ZY-7+|K6>cx_3z)`x4f7BfxASHGDI4}5Uq-CPe~i852x0kE8)=CXGTlke
zo(tcrGrzkg90t5j4ZO@u*;NT+1PZALOyyJwF4fe`P<_^DfGbQ!Fi`IufeuBd@}u^>
zPIfK#tcGINMHLuZ{zt9p_Mdu|f8Ya&A-$=+7H7ZnlR6~zls0dMGt7G&8cS74?4UDF
zfD+pbZ($!(f4|C7O)x8unWf(z>QqHXsOP(jb$vD4$?GTMSwq3GVSH&1t;CgbhgBpm
zY^`B;>Ia-$#9>Y&;QjOT3Qo|B#&RI<_`S0vX8XJ{Vh5d_j>yZ
zcY1i!O9Fbnr3$ZuLfL%D3}RdoUp5%lFC`J$Hs9-$e_Km20+yIKWR@7z2rx>@`2%~N
zE=RL1>ZJMwZ%I7qwisWaUwPfHGV4b=LLA)I#7&a3O)0?ExcmuY+k1wG?g{;id5J>~
zn$>2vxo%!w)x9}^d}OhNGX(A}E0r10D?
zwDzl5f6#CLp!KqIx_V9d7vDJ@Bg|dRN}BL&467cK2;*v+#UMfSyq~k0!OP@jlzaePa?#G#BKZ^xv@+P$KHkk
z+jI0I6vBO2qXw9Jn$A}1?dRw_pNF;%V!<_Jf1f5K$;pi*Tv~b0$`Lp15x`o91RYPh
zUneD%`fd2jBH78T=V~${#R+u2___Iqdk|>ME3=x@8!miuFiMzRlC0Qra2up~me#;P
z=*CgG_CIGKs$9{aE~$)6#f)K&*E~I9=vDW=SWaw-%^`)u8MvRaCk>J2Ro9~YeeIZ`
ze`{hJ>`0)7p$cyi5yw+|qD8QrWHD3IRLv6Ahq^2}m9Y|>Gc^4jji&z+(i03Np2kAyEIOEV#+rSo{Y>
z9t9(fO}ssilD3tLA0X&po(0%4*|6Hee>3DP$3UUoi$B=sAI*#wvH3)&kca9&p}3#u
zzmQB^Y4s+jiPcE3Ri&BBGd_5m`EHB{Us(elU99H~YdWpZtsFtz?O>}dfAiJ7SekX^!SEzsQf3f&%
z9j>0{SOCG|GQR^i)9jo$A33E}E&=e$Kv|H4aigA-RfY-PtvswF3fdxNIe6Vup{lys
zC1Ap`f)3V3fwv9N=aA*oC?s;n?ZfY8EBa2qO5jbkO?s2n4LZ;B$ujl_4FXf)<;PW4
zH!nIMM?YMPGhxkXPR8E->yqtCN;DkjP!VpZR
z9Hm#`-yMeI$HM|&5HU54U($pTH{chlfwNJzEGk-=wSg$x%3lI7cO}`h=FqW1v9=lu
zK+-~{eEF6c4@Bje$knajZER^8%jK6o2hbhgZX9~{9VO&PDLg=28t3uvfBJ6m$ot#_
zz6T6Y4x`Z%_)(n4|Aa3Or+5|;g33CIQk=3JVEjnDoglYSkp*|@qRF#u&tZ~&bciW)Y(~;-ys({3@h4^~
z$^6n;YTN(4GC|3Y2M=0>f3_>96ogsCDApsh&3D^WuolQju3V)?U^IL|($Kq@ek)#*
zxY8c)3}Cj*KhgBa>7JMvAI>2&kv6Y?{n$YALrZ0k>?BM6g_dg%Q!bkyEs|8tp#ahMH=;c;5IsVxA!zqr3-k6^>^rEqzS}8V+7M;VsaN$bMx>X<=qIQ8z%Y-^xuQ
z=&H#-ngO%b1oL6X*)@sKOQppnrqWN3te_Qgb(|`xYsQx{?R|?8?Fy~a17TOB>?}eC=B6}vl)&5eZ3%OMr
z2TeKFofC5Xf&*(V{-w1s-m|~qF9q<3^@!V5JH(X`C|KnEvD`$@WzB80ej0vzZ9@pBf7sVPV#IdUakvp0-
z~~
ziYwA1SDH@?f8*nXuNM2aC4{iRV=6I}eiK}e65{y075gwz?_I&ZY~YDXLOTZjxl%{w
z*j~L5GJ=XNEDdz~^QD#spA@$N<)2tXDV%&~WuaQyZaZEoM1+sfaTWh*Kl>3h=3BpM
zWIx4FiGL`A&!ApK67MqQ(`gj$0QH(eVrTi4Qd$M@e^zvOrsS5edrd)}Be`2Tdej+_
zynat&4sCEC2DeT6c@Dn-n&V57d~r&(wn7ZlZe{y700r_UfaJEb+KA@aoZ2Cx
zM_f>>e|J*9qIG%shp>c7nm7BdeAEB+YnBaU?!t2s6?}N3y5ZLh!Ai%a4MB0uS0IRW
zi%31>K?7=}Rt#`AC$sROjKriqGUj21TPVMlQ5!J?agARXMZFLP8c{vc>2WvKt0`mJ
zcH`-I3dBspJtsXYAF2Ay{|r0>f#8`6JCBm%f8v|3uY8|RJ6O;P%MbgAXrxBVeXuUm
zR}@d@r@AYpXsxTPGy5vHYoN5JS=;fZ4){k)LkVlj*!9WkOMBgruDopoG1)R62lJsz
zUIhXW{P;E|KNdpOAZLRJwbE0FMHrI3YPmO8l?97VIKwfV>r?qNVxW75U=Wz|%y@6z
ze^hUE_Fqtzvg3TcK_$AAonfj}vl&1AfY4SI7952IOJ
z(vO`;@P7D#A(=(a`h)``jdhNSExpaU>SsfBI_hq>Twt&HPemOoORRK*HoB^Mh}Yf9
z62oqu=2PvjZ4r!irFB^Q!xa$@$j24#fBd)TOFyiyFjgqg8<3prW2;=d>O(BP^&q@Z
zWL)o_re)8+n_{Q{;)JuY>~vBht1uMlqSJCA@uWBoT-(Wa=@un2BE~b8?!~)AT5Ke#
zHxDp^F*iNy9@18rQzfquQR6uza0B~pzs36?h~?BAR{X;32@|020!Y0t%{p{ke;HME
zkOcWbQ1WY?{{Y6uRuYF)oR9UtF)OEqVTHt=D_ImM`6~S-v_j48cW9lzu%Tc2rm>#+
zmcGb#KS!Gd<@W8^M$uOfT)<
z_veWG?BTNVvCHo%$O6V$gTif@(d1?JK
zbCu(l*TvbXI-^K*o{A)c5?wht`|azdx2fLTEgBscvvzM`Lop4v0+)7Nf3G<~Geo~U
zqUsQs2-$$V@!108%ayRUPUGj^N|FJp5LNGlZ7ZMG<_N4m%&=IUFwn=J^S9pp&)uA#
zIE`gjqnC9F1C)FMih!*W_0ImA#9*w&A7PaAmEHw@@BekN)l(j}$wiETIpA0sROR{>
zUf9F#%yIRxSd*rRlP&&*2XejwP=B@717%AoUaabZ4+uC9QDh%V(`l>w4L2c1O$QTX
z+FD2)g3Bu(?UJ$;S>D|9Xmo#BySuIaVfLTTd4qZbc66O41i*V;nYL+VN9s35Hpud|
zKIK;(>3X~PEC~eWL8z9lJ}ZNLIGb3)4Si9Bvwy?wK7c~JK4uLyzCT8``hS9uBPMMI
zr@usXkM6(c*(39~${j&Rw=>h7OMEpmvYNH0?AtHC#~ornf=(E;`U4vIVUTGAR^3D>vJSn@{GS*nV`}+2M^s0DmN0D$l#r^=F99-=k+ao^7l}HhWK@p5@omnS!6EEW&;X
zi{X&Jf%`d)NZS%aU7~q+vUWd@Yb;j$*V8AgqK6XKBw3jIGLc01EKU(}Mibac8Mg*?g0L+x(BAtUWh{-=d>uSd;v)A^zx
z0a%HYhagc2mg*nN+QP6BZSpotYj0OaKY|a)0A;7=8b?L>~cK4iZa4Gl&
z-j^aq5C07AtjLstZ+|5)fgrqSqPwP<$!T?=W{4B^EL*VI0VeB#40|{Q1n^?Aky0I#!|<;#6{U<`B5HAWN)o7oCAL
z-F%wRw-VY3Nr@8bBppwROPTi*V&Av+%K#jRI@GKqWtfA4j(>E(-qMDCDsc9g|K7_M
z`+cR${W!3w@)1nERa}WMpkou2Vcp@aKn`yCDAI2lz_fLiAhf3gi(CL8mmqed$<~Z-
zcrjd#?~s37Rlc(8`f`^0;?(2F9WUiUhtlKrwO4GlnvL8!>B-QT%ZfXjTi2?oZ@w8V
zCM&@({url3M1S?wK!^K#c`H>aTJ9xa92HCp0kNfg3f7L+tc9il-ZrEois%1C#ty&U
z9$vnC$Cr|T6D0UM&(-iEEhIUGZX?T=>Z2up!X|a$p3-DeP}iQJbs+DpUR%Ba)OoA~
zN(P=9xizrAjni$xEH&(nvyDYL<>Gjd&Zj|xld>x{E`R-9e8p-CWwYt_XXd77S9IdN
ztfC;eBMDgd6%rVZtl8n3uo*i2&qB_}
zqXw>(mw)^u_2R6+^+^aow2a7EqQ^rS02zB066D@DSRH%aAYs*%Z8uQ0^AN@n2&+Ig
zwpux*nz|R2KmGwQw>On#o`M6yY=iiE8`;>;-GB2A&kv{WNLCb=&VYYGZ&f6SCcG1)
z+u?MQ8@JG!Vz|=FR)FpZM@XESQoWd#BXZlj1^6|dUyk6N1tw%Q0XMa>=U%$>9tv|8
z14oKFMPlpK9f@oXyBjZI)=gdS-l#q=HtBA
zUVq#P$#&14&xK)AmF6;FB+i=#c0AsQdWb~m8pteO?dd++6-Y>`6M;gcmzWsCVj_Dl
z7NDz!o^qg{)YXwb_NRV12_X{RbXtHmJS=WBiQaXXG#00njW4kE+d8(ahgR?czbgikRzg6P=pd}Nf~%|Xy8n>s_I@lZGob!h*}SY{4UR)syw8d$f38p5K*T>!+&;5
zj(Jk_?u)TScTV&0EmlTY5=kCYsIXzW^N9%iG3(UI*Gvl^^X7ntx0(0$Hy1RiX4T)R
zV+6&)8WqZz43P>|*pJ=z2I^w~^zOMAgm%pr?%5{bSKM20)MYLthH13Nz;RSASCJZ)X3j|=V>*p_TP3#ke?y#a=4bB#GWkVMMkwK9&KBL=krBS(aoce
zkKdh8I?I<^2OUOwf1aa!#E5K}847GYSQmoNuZ_OjMv?JmbqpzaJuXkfVt;|B_ro@(
z=bq)PR~)?A{pu*SgF&?4$g)H6d;i%KLhta-2PLL#Mf4q)+_4}d)^Q64Kzy07s0&U&
zJkD=N86*&|;6tb=>k1Gw9{c)&3lOa~h-#ACQCqX49a^Qk)mcn`x7VH47j)_|k0O`w
zFhTJbw>I!|-zIU=>Bs
z&^sz^%*zWJ-XQ*Iv#Sgshm{cf*kuk7I@^+T%slRK&cPp5^0f!M)Y&YRUkH(zU)($^
z-0D$<+m%w!_CPl>q$rlt<~A0dBat^t7NK_7nG*I`I%o@!rsoc7+<$A(xbXQccOI<)
z_*Ti2wq|BQs*|JbD+vp}_xYchNX-pluBy7#P~u;uE}```^uL9U(B(V`Kwy2|YB3F<
zsS@vnj%2`K6k+p4{MRnYXshLIQHnQI^&0e>WScFW$TkxA@CqaeDpz8z$MUC9?2ig1
zoihoA=r{M
z;$M$^^>*y)#l5T#O6k&CX`dJ2(sn}ayX)46@w8~aKUKo(Z0O$91Pza>6S5vTzxc#D?d=`cp$xpIGTI!pM;jgK@94V1M<6mOt9_Ao_P=p5kn8
zM~PH)EsgbusyY*hkqY?0-($$H0~o0ZJ^QQ>={i$eax#1AUKfkOrgH9-WYQtx>K<|A
z!3^ZIiZw9wWjX^5nTHJbKrgy^EI&Hf#v?B??RXS`?`9La_;475hk55eOj)(a;-$C$
z;{YAG&aWD81b_RszVj^=l}>rP-I$!NEx#aE>=f3;Rvrvqha^6YW4%^{6WH@?(>)l(a5Dy>(myAz?gn|@M~4jsAcGNOBLeoQ68E551|}LIio*PNj`PXfLgzK
zeYIoSa9B9sS)tt+2M4PfrTxk;{u9|_Oywim(PHT0;(t3O|5c)4_wMTGBOfrZqMS@m
zzquCR1`>eTD&A55AC(>^(ZHL-tik|NlGD_Ap3mt%8X3$@Sd#A8j$e;*HTsfrM#)T0
z;q&~y*g)A0Bred1sd=lX-!j)Osk;C4KY@N3Vd$
zp@hKUUV#$Q@gOxIYMN)L%=DP(@GoNz0d)#6$1G&O8}g`)qOwWsE%CHY_CRd3NAQdj
zc}AzC6J^`cUvmaCK+kGUwZUzdc0N#R(_@2Hs!j>>-Qnp9u
zLMes)q!GpLVc7J#^z;@z&bWq2!U^nu(F@XPoJ#;8$fWLB4puUzSb|-^(#-SPx1>u~
zK1stCAKzYavO^)Iwb&rGrg>vdLD`yv2+KmlbTa(Rt{)~5Oj8RbmUiWeVbi{P=ix4-38s+Nk
z)_J>}68{+IUnfWh3Jy!D^S>wm4h9OFr7JZ-=?h>N5=H(W+$Mq;+8vmWOLdcU@v@={
z@&bVQb1SOvn$M44iZ#!7jCXcy(g7vO2!C2HK8uQzSVl-yd%aNlQY-N;H;qWLw!T{@
zUBvXM<9LM9!3ici`?=c~y^X331R6$JrX=xKDeZl5PODbt*|?hsGJ=<#=6
zXSwp#dNp1fwv)sq{8-;WaOW2cj>KY5W|60QnabWa7683v_Q!)E!E-*s79Mp(3xAn7
zXV?{eBaLo4DyS(FGkdj^pocD+~+dO@`GjfIn
z3$=!ZU8l)RBeIL%bt@Cj9niWMKl|stu#|B$5PI$vQd!eh6EVUVjR(H4@D8
zGe*Y-$s{@;xNMR}h~2!0ah~=@=Ae+E-#h6Uh0g*)F>&ifTdKEJKAReqkAe$0HtaMC
ztE{>2tT64&iqz;02eRtG4^=(z6a#IWKK>XoNkTU4+J4#=HtS*eYFLvmO^U@wq@r%P
zgen7VqL!{ji5mGd=;-RA7Jo`}N_p!W$s!cTKsJG^r7BW54`X;V@?>A4$Y38s%WRst
z)><>6MQ8#8e(j*!NT`;nTj2&Qev0zyFB@-zjc%TzV8$%IJ7b`NVT(nCzAgp-vfZCh
z^n9lg1c~TpRg=J^eo_1flA@U7Z+l-{s|l-0gc+1Sr)iK+2bSw+8h<<{>(!9B9(V+h
zE&~7g;zhs;7Kf{N?L5|CTy5@>j!(2(Sr1pyv+>f!@pW`qNVxL@q9$2i1b$l|%wf9m
zjh&r(nf_(WUjT-52T{`KFCxkaMm87R6x+Gk*o~e0ud0q1Y(kkws-xV05+kftzzEmw
zWA)m33byuSXcql!+ka;aw9-ch;3|w0gW>^Iq!If^hbmb@WLLWf0xO&A+chPB7>!=-HdTo>g+ZL|Q3>PEu_o!{o$Ct6F(1OGyLHEW2D^;~G&Blk;L?KPQ15im!GvXMdZ$z&1AUXLdtUHf$9j
zl$BDZYwdSCf9Uz*=7JOi?LR!O?Tje0K?_~S+zB)n%ZmhEpDpVN3;
zvI*_W`?NehhVIso(Gi_**jS%%p1)7XEacjbIc%HsEl6NsA5KT<4=`6id)lK1k3a^F
zJKiyu4}Y8tDL|~u=%W9!?9*n{iQMH}Vk1>i^+U_
public async void StartGrading(object param)
{
- #if DEBUG
- DoStartGrading(param);
- #else
+
LoadingDialog loading = new LoadingDialog();
try
{
@@ -137,7 +136,7 @@ public class DiamondSelectVM : BaseViewModel
}
// 模拟耗时操作
//System.Threading.Thread.Sleep(50); // 休眠50毫秒
- await Task.Delay(400);
+ await Task.Delay(710);
loading.setValue(i);
progress = i;
}
@@ -154,38 +153,53 @@ public class DiamondSelectVM : BaseViewModel
parameter.PavType = value.Split(" ")[2];
}
+ // 初始化SOC客户端服务,传入SOC端的地址和认证Token
+ _socClientService = new SOCClientService();
// 启动soc
- // socResolt = await DoSoc();
- // if (socResolt.Status == "P001" || socResolt.Images.Count == 0)
- // {
- // // /*// 使用 Dispatcher 将 UI 操作调度到主线程
- // // Application.Current.Dispatcher.Invoke(() =>
- // // {
- // // MsgDialog msgDialog = new MsgDialog();
- // // msgDialog.ShowDialog();
- // // });
- // // loading.Dispatcher.Invoke(() => loading.Close());
- // // return;*/
- // MessageBox.Show("未找到切工仪", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- // loading.Dispatcher.Invoke(() => loading.Close());
- // return;
- // }
+ socResolt = await _socClientService.ProcessImageCollectionAsync();
+ switch (socResolt.Status)
+ {
+ case StatusCodes.DeviceNotFound:
+ ShowErrorMessage(MultilingualHelper.getString("DeviceNotFound"), loading);
+ return;
+ case StatusCodes.InProgress:
+ ShowErrorMessage(MultilingualHelper.getString("InProgress"), loading);
+ return;
+ case StatusCodes.CacheCleared:
+ ShowErrorMessage(MultilingualHelper.getString("CacheCleared"), loading);
+ return;
+ case StatusCodes.CannotSendCommand:
+ ShowErrorMessage(MultilingualHelper.getString("CannotSendCommand"), loading);
+ return;
+ case StatusCodes.MicrocontrollerTimeout:
+ ShowErrorMessage(MultilingualHelper.getString("MicrocontrollerTimeout"), loading);
+ return;
+ case StatusCodes.MicrocontrollerError:
+ ShowErrorMessage(MultilingualHelper.getString("MicrocontrollerError"), loading);
+ return;
+ case StatusCodes.CameraNotConnected:
+ ShowErrorMessage(MultilingualHelper.getString("CameraNotConnected"), loading);
+ return;
+ }
+ _algorithmServer = new AlgorithmServer();
+ //图片集合
+ string image_files = JsonConvert.SerializeObject(socResolt.Images, Formatting.Indented);
+ //string image_files =$"[ \"image_0.bmp\", \"image_1.bmp\", \"image_2.bmp\", \"image_3.bmp\", \"image_4.bmp\", \"image_5.bmp\", \"image_6.bmp\", \"image_7.bmp\", \"image_8.bmp\", \"image_9.bmp\", \"image_10.bmp\", \"image_11.bmp\", \"image_12.bmp\", \"image_13.bmp\", \"image_14.bmp\", \"image_15.bmp\", \"image_16.bmp\", \"image_17.bmp\", \"image_18.bmp\", \"image_19.bmp\", \"image_20.bmp\", \"image_21.bmp\", \"image_22.bmp\", \"image_23.bmp\", \"image_24.bmp\", \"image_25.bmp\", \"image_26.bmp\", \"image_27.bmp\", \"image_28.bmp\", \"image_29.bmp\", \"image_30.bmp\", \"image_31.bmp\", \"image_32.bmp\", \"image_33.bmp\", \"image_34.bmp\", \"image_35.bmp\", \"image_36.bmp\", \"image_37.bmp\", \"image_38.bmp\", \"image_39.bmp\", \"image_40.bmp\", \"image_41.bmp\", \"image_42.bmp\", \"image_43.bmp\", \"image_44.bmp\", \"image_45.bmp\", \"image_46.bmp\", \"image_47.bmp\", \"image_48.bmp\", \"image_49.bmp\" ]" ;
+
// 启动算法
- parameter = await DoAlgorithm(socResolt, parameter.Shape, parameter.CrownType);
- MessageBox.Show(parameter.error_msg);
+ parameter = _algorithmServer.CallParseJsonAndReturnActions(parameter.Shape, parameter.CrownType, image_files);
+ //机器号
+ parameter.DeviceId = socResolt.DeviceId;
switch (parameter.status)
{
- case "P002":
- MessageBox.Show("P002:调用算法失败", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- loading.Dispatcher.Invoke(() => loading.Close());
+ case StatusCodes.AlgorithmFailed:
+ ShowErrorMessage(MultilingualHelper.getString("AlgorithmFailed"), loading);
return;
- case "P003":
- MessageBox.Show("P003:图片文件读取失败", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- loading.Dispatcher.Invoke(() => loading.Close());
+ case StatusCodes.ImageFileReadFailure:
+ ShowErrorMessage(MultilingualHelper.getString("ImageFileReadFailure"), loading);
return;
- case "P004":
- MessageBox.Show("P004:JSON解析失败", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- loading.Dispatcher.Invoke(() => loading.Close());
+ case StatusCodes.JsonParseFailure:
+ ShowErrorMessage(MultilingualHelper.getString("JsonParseFailure"), loading);
return;
}
parameter.Standard = "IGI 2024";
@@ -222,9 +236,21 @@ public class DiamondSelectVM : BaseViewModel
finally {
}
- #endif
}
+
+ // 将 UI 操作调度到主线程并显示错误信息
+ void ShowErrorMessage(string errorMessage, LoadingDialog loading)
+ {
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ MsgDialog msgDialog = new MsgDialog();
+ msgDialog.ErrorMessage = errorMessage;
+ msgDialog.ShowDialog();
+ });
+ loading.Dispatcher.Invoke(() => loading.Close());
+ }
+
///
/// 开始检测(对soc和算法开始通讯)
///
@@ -310,67 +336,6 @@ public class DiamondSelectVM : BaseViewModel
WindowManager.openContent.Add(vm);
}
-
- ///
- /// 启动切工仪接口。
- ///
- /// 图片的字节数组
- private async Task DoSoc()
- {
- // 光照度
- string sql = new CutterConfigEntity
- {
- ItemName = null,
- Key = null,
- Value = null
- }.GenerateSelectSQL(new List { "Value" }, new Dictionary { { "Key", "light_level" } });
- SqliteParameter[] sqliteParameters = [new("@Key", "light_level")];
- DataTable table = DataBaseHelper.ExecuteQuery(sql,sqliteParameters);
- object lightLevelValue = table.Rows[0][0];
- if (!int.TryParse(lightLevelValue.ToString(), out int lightLevel))
- {
- throw new InvalidOperationException("Light level value is not a valid integer.");
- }
- // 初始化SOC客户端服务,传入SOC端的地址和认证Token
- _socClientService = new SOCClientService();
- // SOC接口
- string savePath = @"d:\\diamond_images";
- SocResultEntity resultEntity = await _socClientService.ProcessImageCollectionAsync(lightLevel, savePath);
- return resultEntity;
- }
-
- ///
- /// 启动算法接口。
- ///
- /// 切工仪接口返回值
- ///
- ///
- /// 定级参数,3D模型参数
- private Task DoAlgorithm(SocResultEntity socResolt, String shape, String crownType)
- {
- _algorithmServer = new AlgorithmServer();
- //钻石形状:shape
- //钻石子形状
- string shape_mode = crownType;
- //图片根目录
- string image_file_base_path = "D:\\diamond_images";
- //图片集合
- //string image_files = JsonConvert.SerializeObject(socResolt.Images, Formatting.Indented);
- string image_files =$"[ \"image_0.bmp\", \"image_1.bmp\", \"image_2.bmp\", \"image_3.bmp\", \"image_4.bmp\", \"image_5.bmp\", \"image_6.bmp\", \"image_7.bmp\", \"image_8.bmp\", \"image_9.bmp\", \"image_10.bmp\", \"image_11.bmp\", \"image_12.bmp\", \"image_13.bmp\", \"image_14.bmp\", \"image_15.bmp\", \"image_16.bmp\", \"image_17.bmp\", \"image_18.bmp\", \"image_19.bmp\", \"image_20.bmp\", \"image_21.bmp\", \"image_22.bmp\", \"image_23.bmp\", \"image_24.bmp\", \"image_25.bmp\", \"image_26.bmp\", \"image_27.bmp\", \"image_28.bmp\", \"image_29.bmp\", \"image_30.bmp\", \"image_31.bmp\", \"image_32.bmp\", \"image_33.bmp\", \"image_34.bmp\", \"image_35.bmp\", \"image_36.bmp\", \"image_37.bmp\", \"image_38.bmp\", \"image_39.bmp\", \"image_40.bmp\", \"image_41.bmp\", \"image_42.bmp\", \"image_43.bmp\", \"image_44.bmp\", \"image_45.bmp\", \"image_46.bmp\", \"image_47.bmp\", \"image_48.bmp\", \"image_49.bmp\" ]" ;
- //半圆
- Boolean half_circle = false;
-
- //算法配置参数
- string sql = $"SELECT JSON FROM ALGORITHM_CONFIG ORDER BY JSON_ORDER ASC";
- DataTable table = DataBaseHelper.ExecuteQuery(sql);
- object lightLevelValue = table.Rows[0][0];
- string algo_config = lightLevelValue.ToString() ?? throw new InvalidOperationException();
-
- AlgorithmResultEntity algoResult = _algorithmServer.CallParseJsonAndReturnActions(shape, shape_mode, image_file_base_path, image_files, algo_config,half_circle);
-
- return Task.FromResult(algoResult);
- }
-
}
public class ButtonInfo
{
diff --git a/Views/Dialog/MsgDialog.xaml b/Views/Dialog/MsgDialog.xaml
index b49866a..5d6883b 100644
--- a/Views/Dialog/MsgDialog.xaml
+++ b/Views/Dialog/MsgDialog.xaml
@@ -21,7 +21,7 @@
-
@@ -33,13 +33,13 @@
BorderBrush="Transparent" Click="Skip_Click" />
+ Fill="Azure"
+ Stroke="Black"
+ StrokeThickness="1"
+ HorizontalAlignment="Left"
+ VerticalAlignment="Top"
+ Margin="335,7,0,0"
+ Width="30" />
-
+
\ No newline at end of file
diff --git a/Views/Dialog/MsgDialog.xaml.cs b/Views/Dialog/MsgDialog.xaml.cs
index a46d98b..d3d117a 100644
--- a/Views/Dialog/MsgDialog.xaml.cs
+++ b/Views/Dialog/MsgDialog.xaml.cs
@@ -1,4 +1,5 @@
-using System.Windows;
+using System.ComponentModel;
+using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
@@ -7,13 +8,29 @@ namespace SparkClient.Views.Dialog
///
/// MsgDialog.xaml 的交互逻辑
///
- public partial class MsgDialog : Window
+ public partial class MsgDialog : Window, INotifyPropertyChanged
{
+ private string _errorMessage;
+
+ public string ErrorMessage
+ {
+ get { return _errorMessage; }
+ set
+ {
+ if (_errorMessage != value)
+ {
+ _errorMessage = value;
+ OnPropertyChanged(nameof(ErrorMessage));
+ }
+ }
+ }
+
public MsgDialog()
{
InitializeComponent();
this.Loaded += (s, e) => ApplyCornerRadiusClip();
this.SizeChanged += (s, e) => ApplyCornerRadiusClip();
+ this.DataContext = this; // 设置 DataContext 以便绑定
}
///
@@ -58,5 +75,12 @@ namespace SparkClient.Views.Dialog
this.DragMove();
}
}
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ protected virtual void OnPropertyChanged(string propertyName)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
}
-}
\ No newline at end of file
+}