From 00f0be902d7848be8868ffff23c342c137800bfb Mon Sep 17 00:00:00 2001 From: Tristan Krause Date: Fri, 5 Apr 2019 10:38:59 +0200 Subject: [PATCH] Monitor geht --- driver/cli | Bin 84440 -> 102216 bytes driver/cli.cpp | 14 ++++-- driver/drv/b15f.cpp | 66 ++++++++++++-------------- driver/drv/timeoutexception.h | 6 +-- driver/ui/view_monitor.cpp | 87 ++++++++++++++++++++++++++++++++-- driver/ui/view_monitor.h | 7 +++ 6 files changed, 135 insertions(+), 45 deletions(-) diff --git a/driver/cli b/driver/cli index ee76f2f6f89617efe5bcb251f61648bbdcda4bfa..8b7669f754a25d6ca2e366c07f209085f8463f38 100755 GIT binary patch literal 102216 zcmcG14?t8^_Wz)uXxhV4W2>#H#ul2JH-Mkpy;VvLJz>5_1nY}mj3>c}+xF{`AK`)*IiC(9ze^CE8|QP3pWR7|;5;=%>k&=GA7ii(OW@6`Iz)iBLqp}&tVi}(Z+oh&w>?$XGp~gP|K`=~AN$6CQ;p}**E~Gqk9lQT z{uF-hF5~_3g91G2dWTWayqfiXiF)Mocz=?Nf>R87vE-6w$i=)$DcEcmRaf17@wkhs z%Py#{s%dPxplSTY7hF8TC#;+? z)|KGB`2N?vs&;Ct%#VT3h=D&b2LDfk!M^Bb$B@shG5EYFM!)WjfzOQ5&eRxu z{vQ1FrO&^Pp`Ra|(09KE#Nekoh8)g^^Y2SOuf!;y9i#os82Gbd*yFV^%0Co?ZgPzB z-7(sKH-?OVvNhRG5AS{p@*NuXy?fo{9GDC54&TG%NsHDp(aMZ4#eR9+ZcQ{ z#E|pdG1_?`h8(;x{QMm;+DX8q)R!LWG5GYyXvZFd|1;ok`?9aSG5qkT812kJzxryY zI>vZ?977JT#3+Ay3_U4~!Ov+i+F21pK4mf5nHd9rdJO$s7o+`WWAMK>hCkF}@IN~S zKa*qV$>TBFzcB`%&&0qN$7uhrG4$kw7<^s?ztoqWJRgH@WehpnW7zdWG3Y)ML!NKM z@RLu((9cmZ%vjQ7RQV=>0-_c8p^1!%_}Ed;>t;a^|v?~gH#m!Z5J|Du0xiowsJ82w!r zLvBkU|Fdi(ZQY~J5+s@oLTTWK`03|Le6xX{3b_%#-M|+bct7M%eD*J7`D6oMg!zT| zHiyL94SX-I!)&M8>}e7YbrnDNK+jn|C90jz47$?|e6vx$8hXX@-A4N+KaU#iq#6A( z%fDpsxzfPfjdoU|{j+T++M4G`1iCMNx*#9&nQicy6esapfoJ)`uOvK9UTnqChraN? zhaVum)hM51l(%8sSX0_q-%#Gb#bSo7*g3VJxU9Us{FbT)cX|EPg52ubn)0c$Zmur3 z6&K$!r?#fJ!9A2xoJ`g z$HT|C+Pd-@ik+iT?1VV40b)*V8PuL*H@2?PoiE3PCH`~A1oIKYM_Dyg^*Mr96}dA? zIj9%}kS{2nS5;PCgAuNBn?so?Nn)U5$r0v}58lQI?$HAdqhvlqC^UOl4KbBA%_^>I ztS>K~TUGCFoCVYkWz~hy81dw0Sbj}0lpGcc4Rk_1FP64(adDB*44{kL> zYi@B@O3gLZw#fY-*fogFsuuQy@op+DuM>8~#?vn@E(ZUwsX3;>^r5n_pwLJdrJYlY zr=}I>7hPOjcvaEZVs@>_Jr3@rx=*1Us{vGH*U4XXc^?)vKBSbeD9LMIG^Aab^)b%> zQ)_jw9qX6&@kesv6eTj?<-Gg4v_Iel8rE5CT<8>g~<5D9Hx*f9Wd6!%EBR;d0?A zqhu$XFeG5Kd_3O5P!M)FYBG>*hoxW+%v6*dCv~v4BDVgC3F5z2J1BBYwM9I}ApWS-OTtUAm;W%SupubO%IEgV37xlmuJ7I5~Q_A#?_j>Y5=W<0_i zC0f+C)Ha-3SX2L}e5Q{J3%Ph!V-rkaPH2uiUga!uhn!BXbUKhG{ERWX)ZT*LiLgjc zE>~OU%JF5ja;g+lGZZY!cnonMXt8Kec%=T58#0D3s!_;m%2n0|k8@N*t%XM{h7-*1 zV@Qsl>%27Drx)iF2_>0XMA5X@W zl~>Gataf8>O+X}%QGnly`$9{&%7 zCROjh7*=7d4GmSd)IcqY#>tSrHlw1tv7yp*l+_LSRbXxERBQYH!#-j~F-I;Y>T4To z%DBR~r4%7Oap|_=X*F04l@(7ZZ)luT&WEM4a06!fG8@@Lq{lS|R0G3aI=i^Ea&~dW ztg32T9b;cx1y*GZSP|7Dpfl750c2B^8*3n}mAH7b&26X=OE#>~%IB2U%}2QqitX8| zYD?YKwubo#MdsM*L~L(slq({4sSpWT10m6xp`%p{*KaSkl~#aELtS}!8C#!IJD04o zBZivJ;W}(`Zf@~dEYT*roD*}4$6PoDYu2lCr%fr!FDgc`I_a9?j0@8)OwY{BOivp# zHdJg}=q^2cJNCkHp}I%cnm!$b#$7nZpk;vRnX)AlOt#E?u)<1c}lVBv#wjuO9 z-nQMS&z#QiswzN=tsBo-=fV4bi%iQ<+inAP|BUSqv3+O2lHPy_dQ9Dz^!{|gd8i+6 zi&KEa5BVK{0_JmBzrUsaAlvoEbC$0=^bq(x$u<)8S*J?C!)&7rc$R>ZY~u`g{?_Lp zpA&7l2COYgMg0?Og$DfgbF-289b~)7fNvA^2imF(xL&{swk891r#^s`SwGtn!2B`K zZJ2qqq#TLgZk+2d@%GClzB>xvX5jTGe2;6wsQTQ#{l5R>AJ~8Di@gOYK9@$}dklPQ6n>?FUmk@oG0y2c6@^dwO18f; z3U4>?tE2Eedu91;S1MF{-27%n{rqgg*WA}Itp*fp)Cq;dq=jP7`5+W!W)h9 znCirNvus)1R%nbr@r&`#+~3(^DStQcoD2D5+BeIW;Gc=t4ZA0Pk_De=Y2RtV+hgFz z$G|U(fj7sQbgk{1;~9-FvGmJYKH1X#JhWy0q{YCiG4Q6Hk?z^}XUb=(rTpz?ZvH_wvt@lzK3&n@LwTJUFB@T)EOGz-4Xg3q+z zH(Kz<6eylVhi5f2PMA6f;abBiNDK& zH}^-0r#+fK<~}R&UK5F{xvxpQ&x$`^>JQfpl%4sbTJQ*9LqCNUyt#MEhtn;1(lCEY zEO_du`BQ1ZleYO&XTh6u5}!3$@Po|4xHenx*xC*KEVbYfkcWO+E%+fJtj)H}f*)$Z zFSp=NwBVnz;Em8+JY8wQo3_pet1Wozd6PB^-g;hOqXmDmh3*y$euM?T-GU!!!FOBm zr&#d11#kLzKJKyLe`YCv$bvuBg121|)}PZX_(Ti-Obb5Ag11}n$rik9Q9iU=@aI^{ zr&#a~3qH+)A7#Ohx8TpU;Il3GUs&*}1)pNU7h3SC7W{Mz{yYo5#DX7f!B<-F=Ueb~ z7W@Ske3J!#p#|S;!Cz#-FSX#)E%;UoevAdb%z__l!7sPq$64@CS@0Pa{7MV{Vhet? z1%HVJ-)6y&x8OHg@RwTfTP*kq7W{S#o@Z&ypKc32%S7U;TkyuxS3K>p;EkoJz#p>U zvjxWZbzxZlb1e8o3x1*npJc)3TJXshe4Yhwx8USn$&=_^U1W5)1ws3%=5VFSOw6Ecjnq@J$x{6bruDf-kb*ms;>s zE%;Uoewqcp%!0qxf?saIUuVHTWx-Fk;8$Ak*IV$bE%+NO_%;iEh6TUTg6G*t^Jj|% zKhs3wy4`}m$%5~;;EOGI-GZNG!S`73H(T(BEcj9j-e$yOoWsj3_(Ti7+=5TC;BT?u zlP&m43*K(QS6T2W7W}Oie3}J6+kzi&!B<=G*%o|_1+QB0wHAD#1z%^uPq*N2v*1fC z_<9Sz(t>ZW;Oi`Sw*}v1!8cm)%@+K83x25ue}@I%YQZnG;8o9_MAet@+9A75ZE17& z>)oPy)+cs^O7vzN{?=~m9rYuAD`#foj<6W1KzA>GM(rmYhYEo$0^UuSp<|#;z@HHA zPk5z(cMy&zyj;NB2s3mHvW&y7wOf?JC33v_RM8YKk{ySlYhJiu>KTVh+ zVIW(;D+n_b45SJ8cZ3-N2J8ZUfG|V9K$3v(AUP2m@dDif zt|!dUF0e(ww-RPZ7ibgk&4d}s1y&092Etsj1(pkV3gHoiTLpY2VTN*nW&uwm%n&Y6 zC*Vs7Gjt1-2zU%(hHQaC0iQ>hp;{nYz-JR?h!#i_@Tr8kGz{1Ud=lZG6HXHFV8UDq z25bWEN0^~ppywy{|L`|}?S#7pyq_>9!@w2+?%F9_EOcn#qc!X*O!J7I=ofkFX4O_-rrAX~sI2r~o=qzU+U zgc*7T>;is(Fhj0Dl7R0a%up*}6YyPx8Da%`eiY+RIE`?(fa?h})Cz17@U4W$5N;Fj z&4d|R1y&092Eq)f0?P$Fg>VMpRsmm0m?2c4S-=wsGjs~n3HVaN44DEY0vF5#5|-a(k5PGGr!w-IKD6KECiX2O#QHw$I-Cd?2ckS5?$2{W_^ z*adtN;hBV!1U#59Ly3S*!2Jj_gb4I}FUJ3Cz$Jvc1-zdyLy5o^0q-Wv5F*ef;76-&B9rd?>sq)&u)jeOb?=0o6Z( ze5wA78F;E!Kr>W-!WAs(%PN!w{=!RF!WlsFr!(P9-l_h&9#u<-XSIt^twPz?hSu(o zt-T51g5<@R4^Z_DK>Sfs6JF#4%*25oFbEYFDrb7dlU5YoAs(R{^miaXOp-rOw)m=9 zaUCnN{L5x}`a6{WxQ8@H92S?1N6hjMnC0&=%lE+k*?(Dnvn*e2mcQ97UuBkWljRr7 z^1qYiuQJPzG0Rhdg?w9O`CrQNx61OTo8|kN3f~p)|*uA6V>xsPvKOTKjFORY!J`T7yiae);~E1 zjQA~@_*OX+UJIzL0H$H|H?iH!L#p<<`)3HDZY78iYUs?~?(l%k?4VYKVbs5$1^pTK zh-OlcpuXCEq`#{5sO|a{YFwwf^@uwe4W=6n4q=0)0z|jhoHZZ)vNc|$da_>n3U|}U z&k%I`R8-f0f(UdKUFb}pnB!QznVR%X2bx5GSbS!n0wp9YDKt z@}>Q}kK(W&+B3_0dQW#Np5A`$%M3H3oO}silmE1VJpU&1av@iiS% zeFIfrb|P!_cI%7LD&(^Euc+)UP^7?lQhbtn@mgD*bkn@n?KW1jAsx3W(Pkprvn0-?o;X zUhfp$Sf2=X0z2UQ!t`^dPAh^un#)vQ{3u2_s+Q+yf`jVHbJzi*H#a)cT>dggqUx`9 z6b4T+$L$V0S6YUnWBNmAl07X3pQz3NzZw#7LCdvWs;>@$AJAI}9m{i6sy>$^yF#gT zISN(ZREJ7J*@6&isw`qxH5Y!NTnftNIntoz-I`tNWg8Lb_W6q?G^u~Kl2lcAfeGP;T;j7vPy|@wG z$9UNx0Ejisi5E&J-;{VX(3$5Lho`woss>4*OL}Vwiu*8*0-M?8PS6Y3m@gmY+>Ye* zZ5%$-Pi8pi@|DPfqOO}-hw)1mO`%DQM#5uHqd{#S$0=>i9L&*O*=hFjsv2dOtwJjt z*O`5BHH$4pF=beG67TPo_ZV)FVT0fu40p!&v*q-@6UE(g-x}P#Ji~rNV|`xX<13PHhfG z=z>#F9Su2C_o|s6x=(azyP@PR?MwY8+O;pCcemYkmEU!KqEp-8O#M*J-0mKxYX1`D zKGHK;NNab-y{WeBb)yse^a{{$X|U;nxNpBv?u1FWv}#A9GE&@)dI{|zCRmP3Kml9O z=bW{PU^6g7K=ik3aL1oBotf_`OD@A*e)?wxEe90uMBJ2@Ev3WmB@6-F?X|Ox^QRI9k?BOZ264M@@7WIWaJU1VV(jL~h zYoUy=h=SUhDr%_33@Wsu;hni7>xGtZ-489f#HKeOM2%9vG`4)Sag0EnNaMIpSW%R5 z{Qb{p&@hg!>?C*jg%`puIzg4kDAA=|2;?RKdSew|I{St|Ch(qf1z%X`VSh%(tor^ z{l_J60yOylSN}oH(0^*Ko+4oAzu^8T{olvZ(0@GbL;tVKx%Txsw30K;umH?JmZ`fE zGs07%g$?3pBxZ7L-#6+rY_SciFwW%J2qqmLVMH*Y)5&+`7jmd@ zc5;2itkTZx)5}AepUpZdy}o`JYfBnlw%|b()6%N1AQS)4Yha$>eZ089tX=+$J%}08 zw}Det8{)up1#cFQEB?Vy!NW#nd3w;pLgT8{Mz^M__ ziD|m*#Hr|nn9(}3?K3%(0XGsj&R`+_?QBuZS_pb_df$)o90&HIZJ119I39sq;K3P0 zdAd1hto=<@SmBY4(|YvApC@2Fr%TkC)ABj*rdL`(X3N zqu87hW;4BSHoI5+cWgej=eVTl=!4C&qu6|g#zJZ4?)ca|zYjJMXh#it ze3;D`(p>S!|4y1W1dmIa<0PAPFr%ccErBKlyK;Bx7$f|k$RSQve&UjhOyEX4}qz*8eobCQl`-V1IJ zmc5>c-+^-QC^9|j%edpunQG={Wk~_<^3(DEUbSVL;&lR)OQo*B7~EI1A{&EVYd@^* zHwYc}?3u3m#;3O-#2aE{XIu_7eUrZ7v)13z@Y8fY{fm4$N5!SVaQ3vv7o3y9%?8w0O-Yyuv!8axMs!9eiK;OD_l#dslu z=et7xR7z%`R18BB_sMpz2ot_Th+xETu)zvRe6dwZ;yuV6?u>+XvI+?GM|-VoA0s0v zv_n!Dh)4?OOA7x8bAGC%Fji9V8Wh}N3iAyLe*_Bci%~X6+|(C|O&<&4oEIkXl4yIx z7VH|M6K5GDhJ{ItG)P2Vc@IWt1Ym{E$&d2lqZ%;^(r&^(?{Us-e%FC;_g)C58+)@eVNA zu0IEpfmov#$D{?cc+8kcqjbdEt1Q`wV4mV=f2&q+KZGS&xKT z*NmBg7tvSYufb-esGpBckGKHIhP8v)fG;}@PS6dVL9SC-+Y@|6UygG0y=!Q<6!cFR z)@0umT=NadUW#NSoS=Ry=y(prDc)bR8Gpt_<0F(shWJAee|`DgaW>rpW_=57f>*Nj zHcEgk;YyO_w7_}D#r}hkQ{-JnT!4+Mi2koY0ong$(v(l57?B@;h&>U`XAoot(Vfjb zFMmeETXsCyrI$hz^cr?S+FdE@ftU~Y*6^G*tw;`|5M%|`k20&PI|RG^gf)U)!`>fd zH~kq8g^AxQsE&BzWI_DEo07QjHSU0FCo|WO`fvq zV~!=#-b3{7p&I$npE6{~hp2HMI<+ok)d#@~#C)Ug#8X!)c8S{6)&DwJ^yw3ithcKN z18V#CSE%iW2db%?b28tZo08+ZT%_l}(ocm9GPi5%8rM_%v@Mn?8S+ox7St;&@*sct zS||B)YQ0wea$f7jPl(GR!6jyuc!#^t;FN4$BuWp(<4}w^RI7mJff8F_$jL<59zSL+Pui;*-Pg|Jh#LzFrUSHHbR*# z2^OzoH4w3ntPxK;1p_0eg$!3&IjUWJ0LRGksU!9B{V z{2|6joHQG=dg^B7rEQt(7EUxRfdPny8ZB*iZcu$M3Tg=I$BD^bS(WEFQ)yvLsxDqn z&MX3;k*B?$2Be-0K{0`EhbfCB3iAtJLWdR(;qokv3nM#b37h^m4uVL!uf4gxwzRUm z=0Z_|5yO<@E*bOLoy@unYv>-`kyz%OuzsSqQscoTWA?RIJK z8D07~Q430Y)5*9xB}OTK5Yp89khdw@mGg_16%NCos1FHKSB+w)Kz~zq;D|)D^w0O z*9?gV?xPsA4S_4rtybw@%xOMRpNLE-I8s(^*Dv8MR#)xaiG#LdagB3ZM@8xLkD0e@D^6-W< z)!l1Pn~KV*sEpm$zruV15E^9nCFXDu`eAa>FU3gskka*MZ2?+)OaBXX5DwV~BVok# z`-C2}i3Oa@gm#JScqB`V@<= zMNiHBS&FA3FSA>@dj;&pyVIZBt9Wrnz?P@HRP8uXS=E-l)7AfcM}faAAr5i@J*Q_w zoc`eVpw*GHG{0Bd?&-PzKu4UCzg=0ibL$TwI1jRK+j>Y_=h=V%Q+T}YzW_Tt--x80Sjb5A{PYpr$P=fDDX9XG9#d_J~m{h~3@vw!pcf zN;ZA)3-<{nTJcXPk%ChCq4yvGU&8%BAWpo87pXY?LW*+_%29FL*9oQZXO*FpUi`LH zoPkgv&{!wTbCfdkD&M)-m#Ch8Lsmnw#p_aCbXu&_Z7o&`Tq+cB2WHC<7cQ_`(9Pb@~F@ZzJfd=W< z#`M$LJzopm1qGVH{}HIQZ~gv2JFH?1>|EQZde+5l)jd6`IsuzNN{gEcwF*q;EL}8| zQ%Q=aH&OAFC*W1b16}b-%K~uT0s|6fsP1q~_k7V$S#=6a7A`$SKBh-W%UPOt2^v7u zBo^E`op}R?HY2#zcSCuYv-utk0Y;K#yMf_1&>8bhEb!kl)IYty-un(*-Bd>sLb)K* zM>D}i9!3n-vlF?j;OL50eJ9GeQhSaOR%fCG5m&3)4z9ee--=~p<_5;qnbnTGJaC(+ zvKE{?nWFMQA$?l-5HHKB7N81LnwMK{d|T%(X`FT)7S@5`1)vxOcB* z^^y6ua`%_8CbTUAAi5+`MBiT8WW(KQ{!N=(|n|pwQnO#7Aq;6 zo=?m3C42+~%6pu}=LqGBVpR)`2WKj*8alxP6RjzZF=9Kb_uv;HPn zgCr2RD_#-S`7?f{iN1f+g}!s?tvk1YP2@j-z-r+Y$PN-(!cxdNn2U1<3z<0wuaR?T zQ@l6ELn=+20jclG+B%VY`0ZOLjT!LrE#~t4Gg05dpFT#irnK-+txz)-gEAFY6H1V= zRPuQh`Q(uZ{f`hY_`DPdDD}yb&nAOUk;4GRJ6K5Dl?N^OT6oiS;dwjkexJk$%CY=6 zT9)(n`+E1AlIx}54E8o$zX(k0JJ4c<2mXrkXdD&HlKR*|LaE#3I?SSvh&$$v$qHER-EEl3W|ZfkfMkWc8UEfy#YhP0rY2OqVvWi!sAgQ z@pDM=9tJaFRuBs~WPk!XG5(DGOGqAyfn13yFS$p15^!Y#hHX+&Z<=+EM(iwq929+-l})M3T@IIT(R>fJ`x z9s(f70UYbgL{)a}rf@~3vktjiM2}dbNzCNn^hO7A;9^O4vg*GRy9Qq#QnisTq!d!} zw9Pmscrswu$U`cRwlagSroNXKx4C_He{JhG>Jx!G5yq10*(TKyIz$~gD}N$lXJdwa z7XW7S0jT#Hn6QrcS_;IM@qPzH=pUMXw;1spO}C8rBV6HzNBmlpF-H93c;1Q;|E(Ai zW8uU_lvq4%p+0l*B+f&LvuUph)QGu)V8*^R-23}d|1+waaRWpH`Czv3jnq!zlE~*8 z`J?7K<;Oq^0y?oqViDyf*T^G6jujBrkw7ILB1mRyRbrI)>GzW<#?2NEcIgwqL2!F$ zl?P^->=69g@yMm^4Za!N7)Yq3~Mu*V}@SF5n4~g1{L&a za-s#(dKBzWn7_(yW0o3wU#f2r5&$?sC^m}IgrIiK2>cl&O!@m0Zi`jkW|p59Q9dVD z`7NRcyL1)B(WA9#Fy0w~!@!2~SxC2h@Q)b$wHoykjru8~{+fvT#_pWzuT2(x^z6Zc zvo_HZCSqd3BFLXm4>D>C7UKgIFVf%017!J0J5Tt*q^!By=GW~UD7=ZGl??O{RhV_FbW*Y;r% z$Pne+%^*muZ+2pExyXxSMfgzgLwyMQ?9bZJ3_sUOwxlv7h}QP$w4bo>;9sXX=_B4# z;W@O=88sI*%2uYtEKJSiDQ~Pshc5u9DhPf*U2(Unefpnw8XcN|zXb-jw!K3B}hhP5QK zsJ|r*7pLcQgl{c&+#H0UK-q?dm($mIF#np-hpa;CoJfoKBJ4Rt6CuafK!8jztn#w zhKwgRP7deS+!w0a2{N;G75bq<)vm(7P(n>6*^tZ-$E&k#GBGkNHz~L+Vtj>uzXl&H zIr$NX+xOU2-*qLbZ{Bn$%Cl?j)_ktabR1;Q{25J)>32HTjN|a2!`(#V1hn?4J_@}+ zQgpCX^8)a&NyuGbRLlKwEZPeSn^GmT&B z*J57`%?*82G&jT%Jjsj~_0yu-n_;$>-MlxhQ3z1SRsl|ZECx^D@@ZW35h(SrSXiL> z_T9<;^OLfbReMw4)q|h+_Tu(ClHG-SUQY>#YmU~b55a9t^O4@hLD}Pxgu@mO_HOnf z7(NkNA^q+qv`w?}Cp`B&Lb+|Ke<4QZBeg5uajuY5J|?_;SZjWwK2sPf&#~phab{c$ zAHrO6r;sd;{!B|=gO8Eo2%vpld3_mA(`khcmUs~*qT6XWyCelqJ;kE4)&-^zee<| zOP|aud==9^@xpQ%FM+SJhkO+W_LEK);;Q~B%$?Tw!To1Emzz+3&=;VXK9XGVtZ#?D zfQ(~W>Mv;R(nkZf=HsSL6IvqN5LH$C)Z$L0dQQhynW-OAe?|(Gs!g~F;^2n9MSpg# zi`2){&{v_4Vf}fEyIzsq9b|U5Ltg_%!zKlL#y(;Z)a@kTA+rg%=ud*k!|0XJII7#} zNmzoWzO65WYAUO~VTbE+%j?t7bzF0__4;GD&1wFzS9x&V`0dJrZ8Of=LVLFE*NA*( zI=7J$_2ugY#Z9>A<3JIuXdP>5+xiGLUfQ8Clvb6X_rI3GI>Nvw$%D zMRxN~q{?WXdN^F_A$R+cdhF28ffOwKVD->9KR;k_O@8)qprr$I82sEA&CfG!k^BS+ z9|u3bhF%GN*2?YmANrKeoG=F~Fc6f;j)ftK3_-qPbQJyBCjCf3Xu8;H6{1K6Y11BX zet}MwlTBZvv$s1WfwK+zH$>8Z=Jlxl6K4No(_aQ%w9p@P4El4z^jAP-MgQ-J?0*#f z+5ee-as+*;pJF}Tmjr^l!0byxJ=4O2LHi*y1z~0sxlVp$ZKOPQ5IoL3uu7&kh9=^&7AgxppWX z(E}{}C~SSV;XV&;HXaWUqxI+|K;$6l%7TwW47eBLvP|CN$lEUcUffsYw_s{Qoi!iXKMdyN8;6f_s#vT_Md-gLEMqxXfbX$X)!OCbNd^wQscYy2FM9J z4gIi3hYa~wiudmZi<{vIK&c`J$Ncrz=oWBOk+XQAt+)TY0To%j{pWV6z9Ixn4GfqT zU<%jYdmVNB83&rgf>*pINgA&M%>#FwatnN~#`l0kK?^oO9>Yye^CF~~T1tBvYxL@W z5@iQs*<7_hV*1>uc=Kc#nc%(zKzRP4Oe&!#m-RMYM+N!)d`Jb^7dzkkvj+$3!B-;n zbu{{K*e`Oe;R$^>9I0wf=sXZx4~FzNAtf2*d`h|bGe)6{=o)A4+r&Qch{H*wm@)fV zyBOio&~sHTGSZM9;M6i5DAON^cr!wsu$8tL^B&$G#aaFR>dWC2;HN5*6sopGJ@_&1 zpeBf$sOZWB?C%8jU;3+v0A_%g(L3}Yn6$(j$Ko#w zGzE1;b{Ig={#2459v%;UK@|O02p@y~>`3~I&vC-h2rFEE#LfPU`4sx%J*}XL^ObxN zg+85DDc3P7wx4Nyhzoq$+Bm8iKkk6m-X2K$OLH?KsJwR7e`P0Kv1Pzd9N*Z0Zg* zbKShFMR31Q|LSEb^CxRjNhrgkP#>_-_%JQ6o$7$yaB>=2f~lCe+{hlYZ>IKjz^n$l z5ydP*FHn=p<`tC}Vvqg^HlRB(sMP!;R8Q!iP0wS8{TYuml5iLLt*-+wcz<=q^LDD| zJ5R~f(7ohH>j=J}??)R(<4aIE_{UbUK7%KmR)hfID>%W*2t}Qq-j>~bWZ=Acm`vA- z#Nl%vAOOSKZ#fbI-@pRi89BW9lQ9da2W0vqi3w>&~A zde&D;xyU0_wCyDQTG6+R+Li3v&`tGy1KON6x zR+>1bATm}plp;_#zH7eyIYS6`#Bg|UwA5mVF(1RBujC_{Bg-d4F!ecNn2a_9hkr1 z23bVpXvJ14-e-0BOXJ)LoVZGyneWVfNeCrJ?A!8vbQqF8ovxM@gAXJBhB;LAO~*0u z=}C(BbFjjr;y0<{U6TGTUm4r4c1%YK!#GBSxp4?YXE{dH#acKTM8 z1yLeXfJj82t^XO_44x+9K2}kUjnrNE_DipR13HQCKG?}P2K^aI4Gy^RT_EMI+b;dL zCbA7kxqjKDFE)|SsMtPJu|@cf$l*>aQGJaJ1?!$cDEJ0N?9ZrzrmQ(h(7O0rwWAUvHc|Kx5W9}qWhiG!SUHEkD8#aL4%H=V z5;&ImsoxXtOUM8MZ>wI2iwu?@H>3e)_6bFReQ0jV^3UW#9BxN0TCuU;KdeLpkjbAY zo3Kni`wO03A&K^Y=$hfCOxEiuKtnC{I#kJdjk65WH$@N-nz;iP{Y$hdvxTrHq;GJ( z3yX_YpXH>!qrZZEQuH2+k$w7e+%v`X%Xh>z2lfAr+ni>&s+M{*oHxE(X{o{u2@1i0DJi*HX}9K^KDlClE(T_(N1SCCqK_ zkc1yaY5n2nNU=-Ld7dqB+QlyLRAF`@6>Ma|EgS-W#&1D-%}6P3I7|IyqJ`!1y+D3J zB29ln7QKr_F}%=9c=`?ceUU{|@NE>kK3|rd!LlN)Bg@_#Sr&#>hgFs=JHHBLG1Hsv zUM$KY4~vDE%lEiA@P@aS6fZ~L?D+sxFnW$L{nOuMudm`zVU`6i)egHebC260=ck2` zZ$6x7m%9N0lwBVK@whTSZ~R;o41G%CG(&3H;gBj(prn@!Ex?qP_ZXTiUQhpOnIz#5 zgpn!U-~0&gJOYITeUJn*N=pOhvU@}8pB%&^In0!K5B`MW=inDrJs%{+O4L7MF!DUs z?5yH_9u1?ATwXpd0sZ7~jqON=MAq0TrhcQwTN2PehNKJ{Paaj{Imw8mu|fc_A5jCt z;veBYs>TUFkSqD}Lg2_@s+O4g*`1L>nX&d4Zc9uPVkb--jr|$))rG+l@mWdWCbXkJ z0ZK53wdFROu8ENq`?!`tX%JezPk#ogB3Ha$|CMzzmO_`Ho=%wJB4`VEO%#`m`G0`V z0yCLHxeRY7CTPBTc#ddqmp%he^}7j}4iSou30v_lz{u%8f*BFp=>5Q=B-|tkS5<}x z50Hd^MGf(1*bKsL7$W@*qiI;>2K_At@Um z_-IybCAOjluAVd#dk!+N?wmX%0daL9v=H5{osPv$*W}6>6Vo%02Z`^@A7IDR62{`4 zlWT4IzYq5IQd<#9Etn1&$(`?W(JPAPCU8h?wZs#QBYZ#q>l1bn$0DFH_pH36XnP$? zU7J2Y3{gjzRnC|S|NivZAQNMM`pc(5;D334+9UKm#{Tr(&w!whiLmJX>1y`bpEc@c zjCv2*lBuI|(b_)!=eUMDkNDq6j9_t|WQjNtQi?tK3xA6~<5+@!GCafNM3?Ve)prwK zwfI<#`@o&R_f_wdo5ZI(=4FW8;alWVXd24T#D-cjrU*0^^2&{KumBf(^5%ZL*xbXO zy#4@n)MsqvVdGA01dHXzGWNrVuR!?n6N7(-YtDlyVbS(`MB_N`H49x$5MAwH@Nm1( z^I4>*K-#E!2V}9)$hZ8^I(AU#P>PB)#Xj~2qg9b(^txPvaPzPIa{Phog7KW+RB^@N^7M7#8JfGvo_wt6EbNo-wu;IQ@9Z%e7Od+tJ(lnyB6buuz*rQ zhrLT$o)9q(1B~c;e5x0duK7>PeRB(DxDtX-pGZ z55|z7RVN_9=H8;mp;B;D*!GP6UWZiAbxH0sI95Y^1GIk1OOxU&w2AT1GIaR5M3Fa< zd9wGpFjrrG=4tse4ZGx6n7l3DY)y2HzQUy)QnwybmFL=p1@XQ2kaecge!BRjHd?3t z09mFA3cGZllmmaAqYcC+47O;n8!|aw#d{}e<`0VZ6x4*GfSV6+uv<;V`Sp!1?Q3RFpr|Bxvzf1Zk0bw3W#`4to?Oa@d05zugDwl{u=%)^xa z1%5{!Kg^Jz-@}136|)>J;;4@mu-%;3xYP*ntC4bCRvR)tPw35hsV-u*&iJ=r_TB-3 zRk*K#j4h_HyWPn~4ja_fxG4%o;7s7uah{*WInBTb#0nL`WAT}A?7f>M- zDmPUEpHH;vggHxDzN`1HYxG4SSw8LLnXVt0xwohT&j+e-)+(L#7y?oqI4yY|r#cit z9mJ>hP9kA$iAmD9gE~w=HeT^kkEjjM0H=0{K2<0Lw4uQ7${S$#DSr9xOq9%lQ3~0# z4bUbXhIVBisn8}Jab|wqxD%hsEAUqhaL;!7C$TwZ&r;W^s}21&6k?0z<-xPoss8vW z(7K!<7CPKs%k#yN4s|aNgrIjh)VoR0yH4nx)QM`WJ%my;{s}`D_qj_uN4}Rin;)>S zoW%=$!$YbC*FOfmkY1?tC$HcE-hL8U#tpbvsTY5>jBkPVabSed1KI@j;5I;Og?>13 z=k&BeZ@ve9A8JYbCQE&7URlI>5dWm!%lgktz-zjd9n*^B;cK1^8TUsJ_hgj3u|o3x|FU0mP>UIa?m@8Yi2gdY#X+X+7yhB?y)ykQtQc3Z%0z`n_m^1%Dd zl~(%7OOqq`2OPma;0XQ!NAQ2lcoR{EHqhm(Xi|NTHiJte(8Q~}NG&V|A{1oNLs!&JsU>`yB?eq8-IB>TfZ zd>3It|C{>usj!m1>?iR1WA^8sBJ^h(%IIzA)N%EP9t!$q|G(_d$uax$vt##X%@p*f zXN|myR`U&1XXaa^lnYAh=e~IqrIZjQTkr*W93bO&7*l^n2YjC~{k`xoM|p(ne$en| zY*>m5roV->O*#GD#VT;LPXiSW${A;`;kFPXZLGw(BK}VG&uen|vy$#cBa8R&BMoK9 zZWzAY>qrIy+k$^Qg6Z5Zzat>FADEQ$bNhaY@q}^~jWgF&Zy;&hW^sL{fux0mN~#8u zY8EOv7D(0q3JdC&EMs`Gug&Glm{y$-(81KB1N0OS$bR~?DeQGBkTn@{kgqr- zsR?23Ffer?%&o-WGZW3|Dj94dxoHM+xj;&tAU?~$w;6b91o5K`e7Aw8QV>7Xz|&Pa zeJ?sV+{Awek&-A~4)MYR0skTK(82M*hk8o+2k~`r=B4;uvt9bC-%$5=>0dpBYZlI8 z+3rLh32)^ijh^Vr-0Ple#)GsF68fvNx`z*h(hB9r zTXXT)zLutQ6I6hFL?$%H|A^@Bw3(~~gxvcns62M5-7E%;8Dj}93O=M7H^Vlj>^ z>@NKQ^o+H3pd?Vit>S!>^j}Qp;qV#`x5!jFY}o3;kg8!im0v5}rD{yuPJ%htov5#6 zo2$Vpe-^2uQ6Gz#p>y%>OvbIhgo@!vkWe)xKLX7xEC=M8b z&rE(`{t$32dmHm9n{bY(5$BSa8{%oO9}D0%Zlf5Gei9pLX5ClW9(wsLIMdIBQ5*iB zW&IhSV{5?l|AK=NE*}RuV*`}{d@V$^;M1a;8}w#W3jRIp`#C=~e}6@Vc1eYHUB9K* z#Lw&ZO~fMWUu@H#u{=yAivseE_~;%%WwJr#6k_G5oNkO|9#Cvwd1+w8dJgN4ei7@J zRs3L6X!+TS^;B|T9_WU?Z?g7e1YD~2gLo+bC*wmC5eA1RbwAM)Ar{!r(xq?$T)y|i z+^}hMZX!O+mh~)nhcW$pJ+6Q=9>=vpNeS*(&fB$gc;0m}GfYVn!AnyN+dwy(4f0Bk!T7)zn-g5H~U2qM0IJ(G=;$9RHZ&jdcTX*XV zg-+o3&#vCWB>f7ZTv;V-vWQJEX%RA3rR8O6r)PaKl*+V6d`0hkd{SZGCUkz(bD&e9 zOxwXv>#-MK?^o9KAc2w6iSDf5uiQvvdxdgsN8mgd0LPE@f!X&N>W`?E^#iQmjiRWs zt{wHKt^@E6>O(Boz8hGJsamS(efNV&{OOsiIf7!9K7<(Gh$k4I_%qIE#szBn9y+Gy zP}`&yy~k3}`Xj)Ti?D*^TnjgN=3=}2{<-R}O+mmSUez?t%3)6rfAC?l9iqSv9?pDq zO&-sCT(gaW0^vMs%he^^bAqOA+AaQPatUB1%sI5bm` z`Gx!EPK;p^+`oHh#J6UdCk}q3`WB3r37i*&-0+Pi@qwZz0Wqif5$HwAN7b@&Kr=M{ z@So{c*pgRua{nWJCo*wZ-y@N396-d0mu&eBEpA=F-o_b$pW9K%*_7;}Od155Xb3b( zTshzH30yDyoUyKT`YsVG`7iaesmeHrgdtYEdr`xQlXOU>>wGIe^9^N5I_8-IOv-BN z2Xyz@&N%!fi*{9+1drdr%wF7fenkvtK(0hdnR>VppI%;)4U1*|L1~$bJLDkpZ8*DA z$j`^(1xQuwddU+_Eu6-goXB?iuEE5QO_3Xi+Hj(38pavhMyfI~=$wF@XX6s!uSmF&=i%HR|P8(UtX5=os2Z_7Nq(21cd2^&pp0NzL3(m zMb1k2RwPFObyQ=U$nJ{!%Gf5F2O8$VrSZxVp6drF4?lh=`iD4DSv7KL5*xt27FHj# z6XoG0aw(`92OtB?!cl|7E(0Z#gnfvIgz_3+dCTU$R-qU~tb4lj-`&T)L-2yfz{8>e zG7otx-g^LAU&*wdb8N=Ri~x^7B2PkkDNL5^(o+p;&>MNq5s&OR?m%J}fSB2fKnA2P z#{YcW1h>n4n?ED_O2`g>uZb6J2NotvIhb%H>@5B;2RfY0uK=eYp)15IUgj=kHz0-J zXQ+EOB1Qd|emJ35Mel@^49mNe7}#1pEzqAegGJ9pQQ0%<5^2eEhHjsJ0*VK{7<3sA zVcqHSkNTa{W}~V3uA8oAURQ$si^iP5VvJQQw(R{47$Cd>(4FA&#rMPKBcR>*J|@X# z&Mb5zY?wA3TdgJFHcn05BDNwkI~wx&6f?$@7Q3x+HO}$bZ1Fbz)qBZVRu+(~$3q;of8gAcvmVBUZ^eG8kN=gJpS`WXKpVwmhCy*TRG7~Y!@J--c&#vNen>dHUxrn2 ziRzmR0Te+8+tt*s@$HTTfqOWsX{{q$P{N8 z2PE3uyMisEoafMBrDdKl-$^Cv=tllc-`7%y)&lQgMIq&N?E3i1y;=XQ z#&?2iopIk6WNw`sz*h_l^R@4S-2$<>VVRnVPXiOF|9KCX=Rs-C zXqH(RZxD#TAqHWGus9b8M}WT{0H;+(4}hb`ABt6nH9pC~3-Iq+(rEYwdP#)kFlwDp zT&Z}wAtpNgsV?8ebWF&!V~T(?z$w*kGqcqRGgZ8O1XAbYJGywMK3C4z=-DZTsxhV2yXBi4r8XZQ`lJ@1 znrtFlI8sZP=^@`9%k~ldxqsn!;j=%|AI9V08>Zj!FPbht%c3v-2qQZOmcaSO$dluJ zXyLG!w-nA_oGll}+{P@W>lYmpr@f^c{(Ma%JJxQZ(XKlJ1?()GU91r+>ux=SJ zzLL)Y+o!+a6Z1|){9|OhgqOqYa7x55;k_-M|G+0N)YSLo>llXf}O#8K|^oIY%)m_aI7{Fxzn@rUG4g0i0s*-uX583e2x z74I$*LEwYUf6^=jh?5y|>}WJN`T(O>yYXvcw=(R?Zk!SA!CUmWUfH8+^*!Qm?`b%v z;k)t>VEn@wkIc6lSJJ0oY1;)A*{iEA|dcg*gw{rbUtq@-ray!+d*7JG*C9fKk|49 z4j_9k#^C0>E(!!uH2j?Bje<(c1UwI1k6(tL7Xd#&oWtl;mV5+ z5d%@+Ux~;h&&9P@2IZH!i%;TOJV+xrcHwaDNN@SvBo| zyKm54QDbkoM(|^_q+d$yga=!JE57IC=_(8i^oG{kfa?MW(QIh_&E*yHDG|1T^og$@ zr&8~;keHb2Rc*M#?L>+lQ=8#l=xV_8NTKM$dD6v%Jq*6!WC;MaH`W*l5fP7K&Poyo z1N849hn6-@REdp`9l(S)#J$XS_k$qZf6{P#WHg!EIE^j7yITb+NiB6bhU43VneED5 z)ffS_|D+}Yo?-x9{qUjw}fdl!Ed zCA)_rpbC#DwVpDJ7eQ1bzv7T4B0BwB4582)HUm~7SC?Y^Ay)Z*G@=4=&c@SOC_0DS ze>J08Y7s++h@r1cZ*%gyHHgpARTVA?=8DD2>cP0Hz+Iuf>}${#i!9>+d4m4kU3BJU z2v)EpN#Vh6FV|{pNz^XzjdM7$sK9X*d@Wk6^KhQxMK+EVWinU8Ij{E@v>+$0SH!n) zZseOAex|p&^0k3H?FbeOr%+gt4Cj$y zd>+;N2-+l@f(0CAGuU-Iy2-CD`Bl7BG=AY)yzh)jX&jOcdT%owMKfA}e;eoEM|Sq< zm%>bqK@}XDiz_kdWi94IbW5-wxD2ft{-k9mxj?i9RPe2^e?nnQU5FXsh1{cB#Th0k zcE$S~3G?j!TsDhSksn8%-7hw%!C7RTFh8_9P)qR*rqQ`gIN_psXjDFAMB*JDy`Scx z+3DAzU%p?9Cod3zY{=@%DBavTwA9{&mfG}nqVcR32pNl$T>^zSo5Cu44OF(t;-AT` z@TX(ZPr+@VfOnWl5P&ak>b8rvJcOj3vTio`$-EAf*0cXox)< zpmN4rW;cnacpobADbBC&bN@=u#?#d{bQvmP?5mo{RssC~> zIcY%j)u1A2)vwkLOPO5=_c$F@aNoZ(w*>QhX&q2aM0I+ac~QHB)a5Pgmp6*{0Y1Tj zyoGQXC#qeOq?hqs%T<8sJMb5FXzw8(q`@Hp1J@y($Ry0+x!JHm(|gMZQ+7a@I*1Fj)T!e`;UlMz-gsB>oih~fG0 zPReLOp-gN2i;zDddyXBtRGN*g)bWrK-$}u6%gIFgu}~xqZ3*rQXUXo9&7qqeDKhtd z2QZAuUWDp#BxU?(od5lfy9MIIA<>6_jo>fp@NX|%77pkk)?43ArOe!@+Gj5+dP4!{1=evepzn|JQQ4AsDK72_Hv$bzx zvNCKi&fq2^cp3;)vdf3wBdhWS32SgR>)^{3?{x(KLm=2>2?Y6Q11Anx-E;)d|()u($7UVrM=1htz(8{e*uR^NCpjb7pT5D|8-2J zwA?R6$c?H{T&7nnWJuQdgp9@>^|gp-EZ>O6K(+B6Ukm4l{;*n0ICdK)+&^E2V`TtZ zF<;zYk1hO`WhiZv(V4zvK1VgH2@mwycjDgv+HySA9|PII1r*4L1;8F_xwjrg$uB-O z@i{*7M>Ai%XA2q;ANeam8~DgyB`$d1Aho3qH%e+jvywUuU-z529AEgu*ZtKOu8W#DR#G@j&By_5Lyk{z7sHrjtxk$cT#B?(^ZPz$nYnXkMuGP8{_*>GKgm4zKIb{ldCob{ zdCqf|dk-4_y3q%4W+GbhyZCJC3zj`)lb&tsKR~qK1#~{O>G`%t(iU{s&zki}`6m0B z!F^Hv$F`LLnm$wQb%(tv3+`nE0*=YrVcl5i2*0uEQQA~J2K!!%Mt`;Ue|SGp2obmh zg&jp>4kF;--g_d8kW;gNE#Jf@tDLad7rFcZ6^%Bv9vag|8e>6U*-iPx#Rq5TFCsfy zi0U`pz`-*)wMK{OI`$YJ0KM`LyE%(OXmcSwjl~0=Figi`0;f<^8h*ohKxe9se@}}! zEa|W(SYV?8djur%~}8-bx6H@%loC;a#T`KGGA)ch{r>Vt_Yw2A|~S6i87oTU;w zYA^%R`A{p0C-Ov?OZk->1>c_4%Z*^isN+{5m)K+T06pVE&?9t9%S7#2{kX&O)8E~K zXpbbK2z`e8R}J_5>K@~WYI>QK_9);+yM;4>=Lnu)%C{Fp7%zS8X9yDuQvn{ObDa(C zM7xTjU_;MqynM6^=&@teIs%=SR?zBhECG~1vO-&gS{eBB)Z2P12+;)u!EPQPbJZ4^ zNJIft9OsMsmdGc(-D*M7x6Tlj!g$e9@gOQ`8RdKrAYBx_rL=QS0A<3MRchHBOl0PZv_s4IPaV{n!G(um@OL+e7*LG$QwhBH>;{tjOS4h+31%Er?{nQeRQn`V!V{FVy4Gq07nXo5@RXT+lOQmh*0 z`3O&S9BBsw@e$pAFi_AkOM@v_q z1}UOY989cbIm+Oc^A%Hk`yWpIf=y&*;OUG*ahG<8Pl}ZTZliL;8w*$V;)YgYb+|it zV*tYzOnzXHPw(^0MCq1K`bd2Q1;bz~vEgSabweDKK{2g@=7@+GbkoNR$~qUKX;fhd z)q!0vbS}^?#44MG4}M`ej+SI{GTS#1BYay4gD9*_jKOi5VS1YlpG(6#y%a`b(Ck1C z4K%2j={+$z-G`66=!l>7_W?OTKO}zvmmhC3!ACC0Y$x@i6S44uCUxQ9=E%IV9Wn!h zHQaxpe3kSSbWRi&aLP=J5(z<_VU=E7No+^`gMcs)F)P%eJtsn+CxBQ16^0w_CK2{)8CI>rsv&G0A(5qe z2#c6Psz|k;lHANUN1_80D{bYQ@W}=%6~+~hljS#zy~$rH@3?mmJh;ay___B zJScase+MC!fxEvn_`@`|-a{HM&gbjA+59SftyGA8mwDWV!z1CM!rO^54>iKk0o$24cE%}yxl=<_(YA0zeUD}&O@mOs*nq@-i3${z@03^ z`&u~v<=0d){G`Ur^_L?z+^}xyq+s+AWET)-I?V0>+CfGS)cxPl9e`r5=l zC|vBLgpkdFdLE$gQzX7%U<4TcQHKb~+ECvB@-`HC9+`+-1ZjCYd^>UtQKLeygaY$L z2#j2DhSz(M86e#IX5?HV?L2$=c$nwYh_;gs4SOQ8`ZTChhjw5Ew6J5;3Fi}t_1*sz z=zkF~EA{_~u;*l$L8+tK+^KD(P}x|NZqtMtiTVcDy;18q11$fXM=k^T4x=vNsPZw@ z(T1`2ZV0>gcgVrkEabqAwJ7;M@XN6!??dy4?!6c;R>#>HTr%y0<+{-=VuUrgMKO0s zIY=1gMz}YCWf0Iu{Zv|Hie@K;0S;voPpJn6=Udvh+#7N=@T>&&XLN5ra#q`)Q zDnuZOBQyuXlfTnSVxhW(y#t~Ph_7>mIA3n+B3w;0FX_R5;0TR_yfmmPD0~3DF?*2u zPTD<(FV$q@jX3e?rKlaplrNXJATkNb!)KsApA+6{eK7`^>Ap8&) zx=!H?tsz2zTueyVT^3ozV@szFGxEnc3Z++<*}k7FbJU?DpYKu!`pg;7qcN?BOboa$ zX!#c$wYL6y+xDc9dv-Nf0W37{%<3i*+w4e3#n`rY?`?b9icWe{1-w>_*qvS#$9 zMN$E{eYBO}FW^cJ4Jkr7_F!)VCTYC{e~wGXx{vvyiLeCf@_6DPp!d=B!L6B&`lz z1~a_`;x<9r1?X44O94nuPvWUO0jrG}V$AYpuD=(;573Y3m$+h~_oJxrRVG9H1(W`v zwp+nb*^4Gi+pVy=h +(vW^^bx62zQu}OY8RbCRPbKPt`I!tt5gy)ncyW9K&dBj zR37Jo!%?9xu>8tPTBH4BiH>TCIVy|E`XIh?ROa#Lq>hS9aM)Ib7*R*%>5E8fweJzK zV^ld0<0BcPO&>2pClEkd0TmYDmaSvdzbkcgG*N@qsXY!v)DTBKls{tjt+Zpi@=#8W z?FD)rg`4Q1pugn&r-T|--ye0cb>=zL0CiG37fz8o+ zhPG$6m%xwM`+ey*gsQ1OIS7dcZjJdDZ%0>}Sf`Ub=kYDPJ-xmh54VukA z8x(#i@)YRyK8FzLT?{{ovZ&o~o=yt+5C<{u;zohqP9T{kh7e%TMAdbo;W#OZ$*q`z zNlB7%Jz7Rt$Fc|#oW?ohq#U8mMt|ZDl!JTWPn4VtgFTwc2H!uSdkyyy2lA-qTQF~n zPYc4DP^&hssNyqOz|wlz{dC;t<>PsKMovmIj~jnA+IHroS{mS>nlkTeC7at054k>* zJmVs=T7GRJ+^_P^o1;B+7l_pRFOg?fVSr2LQ}FF%A4Jk?@GQQ^inURymsvMap5Mk` z(HHq`^xhvC2j_L8F!#>a)%+1v7q(|a?zx>ZyE&^HY1M7AufU26W-2j$#7b-$y??$v zD?m+Hl`obwBdrhxPSal&QMqe(0np?J+Ar1XGlZoH5_-lZoTfqW0MQGCR8G^Yl7guF z4fhel{h++3*IT$8n>O1yM4T4zq)T~E52CK{CfQ;LfHO+)u1xu+d$L-&@M0#ZfJB1> z)y0)x8%>YU3j%QtluV*i8$uAdN?pVR9xG3ohK;~=14pn&h7A(r^GWcz=)O}+W#z&U%MDKOBC^pTA3y_C?--rU-f*8hYRVb`+#RE7RH{b{tr(;~-J)yM&)ZjO%5L zI}u~=v%>DdQQ+C3fk4N0djJ)J4QQ~^V_>iO5vhba^D@-%gFznk*R zous*7Esp$K%*9E;wK>Z5j?reW54r?bcZ{nR<$4f0S=x!};H81NmeS6uEFYizg3lIt z^D_kFy|V{+@I8WzM17p%(Ea{H$wY?3nTBGTk#wh_7@v|<@qHhD1b&<})Qw^7+8FSG4Z zX0FtiuOKR=(38b_Rh|{{l0J{-l9K*^lRiHI6HYPS2J>&y=Pl79{fUx1s?X<2`9Gin z7W(`oSo80uMt;mCPodAVqFj&5Q2LCVm3Fo`A_FT$sa(ss?#yE3>7rlbK6`2B`c_gz zG*!HUQ2_0v%_N<9t0>)J6hitm3~5VmC2s`zkDa4xkEd^nfD8ZdFCD+UFY>4NsN9p( zf6hKbbE{D>s))E+3~mcJVP9^@PK0v^eT zEvIK(u=j4d6+J*Ja;GeRy`&)OfZ@KyaNjEL$@24(f#nw^)Si_FUUYGOmI&$mE=a9x zz5~HX6q_K?IJJ2s7OegaJYU*L^w=@#ECQXE8P*RZ`%Z26Je^y1o$3RIn5QbOK7H4f ztbTzEYb7YHJ|&A%Ihv=}o;4Paky}VtJGBY(DYYhejBir`Aw*gHdfd}R2~mvF&SF|h z2oRcZ)wqeg%?lrsz%;X)hM9JH3ryQ|9BMlA{;X13TzD4q?vG%Zpgb#|X5b$_QOv*- zjI>@LmKT;I0uB7QpnQd4<*|;|hu)#|`3eIDN~C?e+xme)VlarEmtlqBeN>cPha^-d zkmtA1{m3KJ_SwgZSO@Z$;VgBGuuyr_;?-PL5@xVZ(n4)h=&hq!HIOQm51(3~1WI5s>-(ARuFpE%*2S{pMP=a29 zn5KqHtvWWTc{I6tB3RLwi&PTdip|OgES>dg<_0&)v%GU>mILL-hfVYmmM#1dr;)(8 zl~3vyllG5sPdoF5OL?q%Hgw;n+)7(KFu3zy~LHbRy458Nyr5+ zt|u|H87HEjUySIm2t>%+?j|%F*pI!+Ge6pUUQt1GBoX^i9>*&l#}oK4OXK?LOh zdKV8enXpdnGGdB+DNClLi-ea6UBJdcv%N-_aU4XY=@;Rxl))bxM4@mUyBqs9MbCRJ z)Q);yQup;s!44`mg;Xs`&zsqP3}lUbX9a@W&}ra}1pGo5@DALjf1-22aHNltfUK`l z1>k~a_7jxDQn>zj;0i%iPO5n~SBUN0N2V3A9TY&SITngWs#(D)v2q|(lOFN4wvnJx z>q$_}_N-Pg&b+dVxba!0D~IEm*27>Ii35~#IiOKFIcF#*mx+|K4RPdL&Mr<}3gzUn zNim-z-a;|^kr*i^j|s)3?2=*<9v@&PLWsoqLoqoA6bhwJmq9U!L@4HyyfVwl-IIJf z3M=rk6aIf#ErcQwZy=?gHAuS46GbcO2g}U%SrmXySLY(q#0I@Qb?I`PsaTCUE!kFt zz(UZtdP2tAFdhe6A`z2Kxm+aLRw*_`bZRHg(UAyfAU2xKN(@qw&j6lig^cb8>7E?2 z%t_nDV4$rxAl!n#k$wr+L_1+N7=c_2TrS0ICRaM`_CiWv)YAlvOJ!o1C7aOA2#t={ z(1co%rffoMd5~%R*QuRJ{7?feprlJl8gXJ%IEiZ*XRrVHAmJbz+D3E_Nap&ts8;bQ zYhX?5X9=z0(*2lF`siSEeg#@QNU4hbygYF{(roE_neAREUHPQHs?E(UnODBS%ah)1 zebgE=v5ay_J{C0j0HV_?uFA}E?nX1qS3ZTAy(f!eQms*}sF~eI$U`x+ZxJEYEX9U4 zb8aY0;zpN2n~8)^uwMT!6afA3abbDKZzzOMzcr&27jq&YSl?<~ZBse2I?BS9m+yFD8Zs{cm3oM^oLSDNG9eZUa!Ry?S9Vu00D z9r<)IvIufvUN9gwbbEQzsKO*DO2)xUXp8Iw)hEpADk%pmX`WQ{ zg9EQ~Mg^Qti{LX(@@a{c@D@?R(NCd$NAhVQouqOc_}9Nlzyh>^eUSnvFy8M1&to-Y zI66nTzy^5{fx4H0tzS_Dlxy;?RA`lCK91A2ihB5Zddl~}RfcjTd%hnvN$a?u8ThDu z?1d2A@Lm@m*kbZAa_M;_xfGxqL~^~D>V?8Dkl{SR6ObVF3prHkw4zK+qMbj|K8e>e z*AGL_Q95a_Xi?kw!5x`bK8B_w-WVX4TJ{VD;Gx=7KJJZeit~q1eWa0OdZ|dGy#rBG z??4>5+rn2$4yAXX$u1=@wI|L2?TI+jWoS<%0&h=mK_v(1hnmI$D5+=~$E-K2_|uV1H%Hh+#!j`Rb>bnimzOs+zTYQA_|rZ^guBE;2xw%IdP`arC zU04fx%+l&Oe`Vm$P`N+qs2jeMeSnS=;C&ptCVWDsI`Ys$RL{AjmpIJgcX%LWCcPQh z24ra`rWWxaTKrVroVRccsX+xP5E^DRhdA4mZ&jGIh?t-UMLe<}L^Y64O$*F60x6ii z%WHNE$Ha7Mi_ob}irE`nBGC{?GE%F7;b>;5To~1+c&f8`gHG=2C_>J0CUI0v{SK7T zz}g{UcgQYKpGbCLEXPs4P@4SAuFDo6M2Yn&;z_(m;<*&N5Iu4?N+t3;UNlvP$+YN^ zKXA}nd0y9H=J`H~j^^@~XsQ?s6Ix?}HeBl!s5`&PtB;FZW30Fm(`%HA#+k7jDdMix=??$G-4b%0TpSp>u& zAb?_*9?ZK4P2s`Z&x1@JjL~&LR*;gmni8OHne?V@Uu&dpJ~Eb$(v@o%K2GqMVK#gW zNnmt?_TB~2_x=_?1Am6Oj@->lT)2Q`wz8H+L5#}!*i_E43JGB3$2pyw7=OAH3^b*i1Mnre;Ak&Blg`tK*13u&z z3GID8@>9qj`3Ys9^X%WC4kFDc58TrS)*~0;KGGxtuO`F_3QS(zIFJmA9GMBV8F-yk z8sC4QC=*1K$j78%(5t1We$`JcgU;ad{IQ!t5yY@YU;CD@#4j<1(kEp)LBWh zx0qG%Ur?jb`Re?^Mt9ij_j!E!B~AKlzdKl~JM;7scVkmSQ%Ena^-}1F;*h?^9UM^{ ztaFD#9({o)6vCP1I47h8Db4XWHoASadie$V0>952_6LD1_WD-4SAp#+kAIcBrap|@ z3-luIYH!%x;L!`4LaW^u=!HIagMYP0SI_Yht#XIFHLg%N2wrEN>002b@%!-9R1?;H zO$`mY&mY#C-3{Jao*TwWJoOEpAX4-;>W^)$tD{`idP4eKPw=su!=8{Ni=!*|gg8}D zQ3c#VccUll3C8oQ^n@>wgtOgEwLy2-6UWC8E|ZHfGRjr%@dTwG9Qid}r!wg5I!a_S&##;-t9r;=;>(VFa&g@Yh@% z(!+k#7_>*%b^pZz*15e6o?6_GpTw3GE?&4~A=E1|HGLwR6qn*;eT~;s>j~ET8$8+B z*=&3*tMWE_{7qp!=z)@WY7r&A*4=>sBxgPs2x`~rHU3%;(&eJ*VG$S4b#BP0PefJL zB1MMk@%nTjB^R)a1SAf+Cm4i&La@nr4hPrjr-{f>rXrRMRT?9pGj~a4;o_>|mKslh znniple2*D2Hz_DELgrTw#(H!u^#oUWeYH)#)q0bUYaC%$6qxa=f_{{ZZ?YZ=dm7Mq z4B(dH__Fndo+hAq zIw53JM{|M>hTP#x&Si_{qk?MnS`;|iR@hS$_SCXU&kvhCzDqSz0ICrit3^w6<1duy7JgXXA#pC zD@XleQkmbt>c<)VN+eOsZMW3EeRS*bAD5>+2ey| zd0OtnVeB+R1vOHxz=EM%6))Tf*Zw{rJ$Cy2};thxCbS>M3z= zNFRSm(IJzVb%O*too$k34ZP{wj8AmM8a!q57R2!_X>KmAsGRO9=9hu{m;(NA;2Hs0 zk%Sy8ejeSMPB)g5Y~No8BXu?IyUraN+JpOwlA)nNz-quMOqR9+HUR2yUnXO+xdQMY zwi&bn<{rmb58yq=qt*c58_SrZbZBTD7SIX+cVOK$07z4Xtz|e6USq5qa3x?5U;wa{ z96>+^_i7J?!|AeP-l7LyWd%Wu>=@D?#4LUq(P4q%WWXH29KZ^|?V#&giF9FS3oaZQ z+6mYV_y*Zs*U->N%q#`~&jRejLR>wdj*S940J{KR15e+9;jJHW3Gkj`grU59i4^~+FRfL(yQ0NLe`hwy+5%jG?QlK~5U zG&HmvuotkMo?9UYJp;Z0SaAi)6K1U+Fc+|*9dZK>0`3G1V2s#D&l@101J4^FHz3;# zdend4b)W~V*aA5K9oNIXg?{LOD@jiPTL8NNw-DTlbOBp`3c0{%5U`8*-U$BK01@~( z-s}YI`sL72FJL#|i-4?qXy^c-18^iZ2Izn~Ae|483s?YH3RnTS60jOD02lyl2W$o0 z2G|9-6R;bw7qAELMZjLb2w)%JLBM`M2R76U0%ifyxeED!eSi&s-8T&lbpr-|jrf2C zH=`Vng?zU_zX1CI1Ay!{ls91CZ=la;C+xS-XTWN}Fkk?1BVa4wcEB#c9>8wE#{qlp z92)u@u&)Q{Q~Lre2OI>f2CTjZ^#ka*7jgquJODmue}fN#4v;+zeK-N(fMWo4z=?o4 ze?<8MvOl5x>G@HVBiifWW6&c!_v}VJ;ko}wl=n%H>nVf-4n7TfK=vZ&0IT1CTxj1F z`%%824*>22Yz6EE>;Vi@JiyJME5PhYFJKQ~+9}|J3&qDT%O#7MrNv=6Y2;C9U6!M$ z_!&r9-<+YL?+FtAo1C7pEJ@#cCenZ{U>S~*jIr}F)7PZ6vU5-T{u$G=P9+8uzX<=! z3n2p`D!(n`_;_??|jyxzlq1mVpx+t>ehACLe@-##0y7QvxloAN8IH}?!i=#SY=s$mo4qKb+hQxVjL6V|E6i}r z&PXeQd10maug3ot*m-)3&OTnmz1liEV{E5wZic?uUYId)gI1W4(>AOqqt#-&30!i3 z17FY}9q=kvymo@ua@h7yF;!rFmV3{yBh@pKC~_t8KG0^iKQi zjES2`rVYaiGxFPxD#|EukI2Xe0)l}cD%jj~>&~PB^U_%b*scWc9q4?ZJmUTz?rZL=-P2w3kJ!8NroBMl`>^fcSG8Ex+elDGWvSZe+c?jL_a@{zRXNN5j0(P#wIU?JtqB($v!_L$963AdMv6Q!k49= zh2Y1*yLuU3&Y`@12`xdHb&@`Bwn3H+)W+I0Dz1A*@Ro&A0EK9!ly^JQ3M?NQYNY$; z5kHn*Sw_zJae1dUJsC>V1NtqvH|TV6RHuugZD(Odg>@A)dQL*)frX&@ZUHa*3fPu! z=2Zn=bs70!Zfb|5yS?DE5`2&qei4q2SzituKol3jLzRi{AaE51x-3vTVCyG0qTi2} zfBC3k#htdz_BPG>*$DI|^V7>gSAe)#h$idmeTF4QbBJsJ2al&Lpv5h3QoP2f?cwc@0sT zkYCz%=zW{rx3m*|h%`c)SzjqgK$?Vdz2^ zu6@Y`pM0dTbJNh!UvY0=Aov)|4O(iw$k-#oE>Zdc#JdOn{4KCg_S56iFOAwaM5g|* z!j^AMG;oFKIp9O{J}3K!hPL9~P-kfGZFXwv>x^l`#*s~V4{D9`ZpqCNMO_-7e6zSufx%^DFU%5X#G+H~xMjH>2HV3ryj_jf2Z6#<6 zg5OL_ZL16N-VEA$(vOp2#bRv>^(1`;^ncPfDI=%pAE_EQ`04n61L^mMrEkFNh_rLl z2vtr*!_W}VY8o19qWdU~H%ddgI~jbof#y=`XSQGf2iauXLA#fIGuPe48NC+k8_9H+ z`l~Sb^fki|B|bsHNA_3n`(%Grn$cykZZLINh3VAxc0yMD%Ap|-?hU%n^|&Q!t`?@B zr@T>+k*)p^=`KgSAHrtZPZH@$zb~2HnwJr09}to~!Z>AZ|Si>+EqDkS$Ab0Ft? z;92nFp`jq|?f(=!H(TeE{|-4}vLNpgb?po|hu50bv!eod;0=?4qde9V;_d?LC;2u;ZC79sfBCe+yN7ABXFOaaNB_!1P-QwUlf<-TRsF1 z)fB}&4qU{9dlk6%Ot=q$>o?&Tn!_6=+!)|q1y1Fk(wzw0i@+K4aTaiWCR_z@&zf+x zz)^V`UWI*^ZF5ORKSqr9q_zj%4*CoHSA*x{*AESyN-~iFM&BaG zVRPZn-zF@F= c(7a!fGtqA72-^u>JGR0n$G!b=@LC+@6>WQa5dS^U7udV6 zk_^l*oR{2~^7^9kPs0%A^QnpDPrg(Z!ZvP)?}~dvyM*70K4fdGvn@yPa>zUK=lFgf z$@Wu}XsmBcJ}yFUkD02ZeJ%0Z0e;&tPntpeXb*XeU##DV>E=9)d0tPR)xz{5@S}O( zotOvyIn~oL!7sTlgXtgZYl*!CYzUPX&EI~WomgH}XH^J0fVo_7=NIAXiQa%C9izGA zLEtPT%iC$@HX?ghv=Mj-sa^_@ANw6cL-e|u-Iao8tX^m=`gZbqDdqLj zMdgF}?OjwB#|wT5<1^l;FV3j8zLZ!mnBk*(>BAJu<|)bR>m zIG9j=5sxvzJpkM|!tlATDn7QMI?D%-XEFaindEGPvlg>!^I+G|-AJ>5I?DomHF!O{ zb7<&Spck}rMh%;@*@l+$3C$+ZK$vWJ7x-5F4)f^5_Z;v=-6r_PG{E~=f@{q4y$9*! zLT1tvA@gc3Gp~Q}UVbO?2!*u&69eH`8;Z5bSY6G_=&{@WmE5&T z8eGSC#@eOPUj@(2$$8G9K7-`k0-k#B(9qwpW?SD;PFd~?JJG_ z*=lVa#y+-op$W$bAJAC6)~B(XiSPr9?PHDo(P|yk*lX4;f^f}g2>HHtgM)Pu%{vzD zU?%&ERr?~7-E6ZxlF5E-*LG#HXY95One28=yCRc)s@a~&V12{1-5Km>N7=eE*cV4> z9T}`Q&GynLcFSEdzP1i+Up+O;;emr$Fn+O0NrhgG}7#`ajX9X6DOw$sM0v}rfn*e_*?jHLD1 zsoFeNjIsomG^bY1=F0nAZ4sL%?j7S^Lc{rqRlCcIsd6E}$m0?BT6q-*O(v&Yi44;<{(boyFhSEjbh!S2Y^o_DZ&Gqp{l;bc;i-#J=qJDNQ@8VuhW zt!+J;9UQG~JDOd4G!Thpl)lL_`xy)S3(1KK1fz3X!Tl?%c9q6nu{{TlKswwHqjvvb z*Iu%-KD?V1DhMiTTZG*tnHe1%P`9yhH1|XW4njZ{ma9EM(X?mqcckj_S)H#mcn<3 zvAb*o9ihFd}(#m*(5r=O081L>#Z{*IBqC9=U$h`2dJyFZiNl%WC9 zn*qcCzg?fH!4bYOlhECn8X`T(?~z{GB5eh01SRe>#sju!n=S0OQZv&gX+`W@QH+@@ z{1{7Fv^FdI$|6wNXNFL}R_&8C_Is)BkejX-gnh-`wFFWz@lA`rcSj&B4ul3tOzOK!lUCJi`bB*0b zfrrfh#&MQoYY^c&i}g;;_O_$B*yb&Ih zML*&!>rM-MNtV zwrM}hWUt%Fh_-9KgBk3ak=2+&`SmCb_fKb7@%w4U?a0v6j?uus?jStn;l?hjrOi4C z{JSjWJxV$tgZNJRaUUS02Yx}0z4mz|SPqSTh^vl*;r`pz^aL&8g zwii#af%LIcC*c0eQzrob;AzdbO}FjM(s2LQ#0dz!X3_+3?VU6M>3lM20#d%|jExoq zy!kz1H26L3VW(~T-WJs%1GZ93>tHd2SET)w@&ErD-K;M)@TwgkQ{fp1IT|IZR|6pDQ5 z=Lpy<;h==N+^Jn5VXK5a5~`iueFgF5lQwZ2NAxrbe1%WIF8QpebxGGR@eWDXZKBJU zbiJEJ%s~lzBvkyWCy8_&9}A2w;owJ#;#>G_34B`usY;-AUwp`V)AOsRi}t0cdOuZn z@vuJyzU%XNI`h-S{qdOPvfbz0BJc$g##69W=#g;nP8CDIKni}5 z6#TmH6Y+ZQ5wKgr9tr#Ijpu(r@>l#+sQ!hzi-)DszM0EIrCaewL7y_+7vuS z!`DpsVUj@6tuQ_RW|WAa!XGj{zbcgHG46af|ffm0=309GO6tFBJ!`&8I;dBme4Zou{0!j~m{U&8$o4m(q(FX03UXGmBg z;Zh0fBy5&&gM?cpyj8;cB-}0G%M!jX;eH8+VG5S6<0PCQ;S32&BwQ+CorKL2Zjf-R zgttm~pM<+5d|ATxCEPFJFj~x`^d+1i;S32&BwQ+CorKL2Zjf-Rgttm~pM<+5d|ATx zCEPFJu(M_Q5>AkChJ+;&E|suO!e$9KNVrwPTP3_t!rczYnN9rBdATz`J12LNK&uE}18tax%vT20KxboCR+SWQ zW8tKDJ5%=Gz=qkF7Pb5F_+d=-5Apb;n6jJk_%x>MZ9INBQ+7QbKY}UyACFIGsvnHU zk7PO0uEpcA5|gCfZS=CB9Jj^OXGZ(gc)WvEoBTTpx3STz`wJtbxVN#RnSL-C{utIf z20fAKvf<4c)qfj|yEJ{d9xP`_+NIjiyV^^)KWKnwVHJ4L#xG{`I`<3s%}@loULY!jbfnfUxX z1)p0bA2nV#^XW11*^`3LE0T{I@0X^^B`vakD2%{1bwn{ zTOs)r6cG2=MW5#({;dTu9NqaO-aPNp4m{~$g(+REg#w@0?r8rI@mKReDwW-wKC%7& z4ftg8r^?qyoX^p0R}%Y>jL(;#XG!c2?LV`yL_2Uicf`je*prD8Z?-?*=X?_F#(BUW zP4#%AD1km%5G@=p9}EE7C^&s}wLp%SVYdK34x5@ZKU&@!!3yB9T`}Qm<@6bNXIliR@z`?`U$9i*T{7l} zz*D|@rG3^V{<|1hQMm;=1R^N$^sXAospjdFoW+v9e~BRcfuz4s;`MC;q2%e|cu8ac zv!ExGZq6eDN&B|w+9&xG+#sG+c^-`cp93#Xk2Tr<6M!c^6}Jicqa~jS65k`s2W?KP$=8w0##^S)w}@;9JP{K^EL z^r~O#m1-{+0-r2jm!`m9E%|Jdd?rf%^krM#uGa`ei^Lz0_};KU)Jps@=-`RITI!*y z_iT=rL7CH*-m=r;gQ<)hXC` zs|<#S+nHO$Gm4#GT?*eMp8XQP19(bTt$R$8_+Cyg9}Hlxq*v=6%1&yS5aV`ft{|p& z@98?8jMf=L5aEOc2sLd2~&Hf{{EqWtV=8^of7pgMyg$Z`1Wa3O@ZQ@LvMY z%hO~(k4Aw|Ipka|`2JM@{(ea^zv3sLPu701J2NT%O^%2Brhe7}=9I2}jY!ZV)Add! zK8fSmsVVxMMc_mE>XG%LOFs0zOENicOM(A_^KmdWUk^3l*KjZ)InC{T9Pm^xYCVD8 zccAMeKgU$-h+!sPy@9 zi8uR`FQnj4?^Ymdi5Di|dAoa51kv7my0RtS>^IHsoem9F}C1+Uj zsVEfqM+9ISCB9YmBdUIHl6+bl1)=O-*u#>(=K_JJ?-|hbXO0*5#@|mBe@U<88F6g# za>xRn%3rOYD?52+3i^%|_&ZbJk3CM5kJ&!d08i!bxL!!l-xI~{k0gHZQh}Gj>^k5{ zPPJ~Q%Kzt_-dF~KmXHwwb=6Lw|a(#^6AEE1D3i{0Bh5QAwJuVaEEE{-gziJ*y z)vr~T`7IEH-;?y`aX#|F0O)us-oBm@NP3ThuIp0J-uJJ8l%ueFET9SHgcYk6Y(+dP!seJ5u2P zk^=uvjz>F{^$T~DUvp0qat^kL=T3>Q=6LyF0C%Op@0NTjn&bKOr=X{ggz0iN`*OZo{vl=MfZuvd?Q9$k6DwI6t@N40-Q)nf@dK9a}mUo8Wk zrz;gf>0tF4UX??R#H;-p^d2u=b0j{;#D|XDR5A!k@%sVr zR4-~>V4@5>2t3W_nCB&i>mpxj-v)-6{5lPK;Xu9Yk@X_c?08+&quI~&NPNY|f-+Y| zxEGM>cZbP;yGhckeQavnw+ncZpUL^aQpx9O;HlgktpY*cvY_kly1*9{@kd7AZ=>sg zp1ge0$0f)ABs)2t#7I`oXLCIK?OS+qSRoVFc@p1sxp;222w0zj&pP0#U6{x9KTSb@ zyQEk9^Ppz@qL)9ZeENSXp4Iqq!KumRzc>YceG2>|z?1&#UkLu?0APjSQ~gUd#|s+c@A?$@w^HDJqmtLlzh$~P=L_yz zWFjYx7jpK?_T`cI?*UKc@Tx3_3W=}f^zy*~ewhNl4|vkUZYmI5Xb$|Un2=n~8ji;} zZl|Dg+64SD@Z8S-UOdw}1YMs?yxNbd+WV-}llL#Pflt=%R&hM$U8SCDf<3!Z;&UY4 zF7fxL;PZA0{Mj&=TyLud1ODAI+%DmG$yfBl*GRUd@_CBp8`K` zvZ$B94+R7I4jWxAiLclvo+X<3IbPt5zwIgTuS-6?O@dn0`#&VUyG`JqlNr#aB$s~z z@RVQkxTYipy-(7sedfY?<5RqxK5<>?*%W+E=lwP8&pkrU;WE=Lz>_>?J990kmqZ58 zlLG&|AYLisya~M083P;krKAs-`nxexlk3T8z$ep(vs2(#0#EHaV480Xrr^I> z()UPx&X>Y=bN*O=+$Ippem*4edRXAMN_sCUD4CqkN&W>UJM)R;Q&1=vI3%Bgz*D`b z_Y_pRC+3KJEth;+C4C+6yd8Zk5Rx7HHSo#gc_am%)iijsYXSl0np?hTc44{8g^&BY z%3QAVXUaojX6Mzkv^bs2b$(^IJm2N=`spkGtSRIUhLgu!n8(k=aOTiy4@I74Z;huI z-?5+Ra&b=1X~yF`%4#aZPA5K{A9RIrL`OJOR#RN*#!qoETjk8FOOZq_9W;}V6DY!N zAJ{W-(m@^0AW0FynNz_JOeg`#40mm9kw09#cshPrGd{$hA`(A!U^-4WDCShIkUB>o z1-H za{vy%Tv4`Fu8Ig^q&S-Ee-_= zx!g@Htj3QM4RCHqZT8F=vt}eGa@9fWT<&1dz1HRN;gA+qM`!Z5YMUAx*CLAH$wm4Z zM_TKbn(8W9T)3dvRlKmsJBHaS{hf_5C@0W`1~#$$HUKRl000~vZrO|C6}QHr@17^5GQIr zBqgflablWJxGBnkM7#uW_ELjCSWvKV&XUEI#g(qS?3`@ptXZ?1In$;?hAL7{d3ePP zadt&|VRXGW?!cgTNI>?9ToQ^1&;}qIz%*RY*W3i`hMKKzIQrB70Q>2RP32UTB zzNy6s1NY&UT5XlFX!4C+HM$&+yD^!z$qqXq zA3ndQrrsaRN1TP=3S%zJs--cb@t>b~gWU7x>zq!;6o>RwuJMLz>V-y&kX$1ZU&ygsm|(~pWPX1d@@4}Th00@1mwmxzG#L)E5+>6Dgcs z=5l6}{iT9zMy~vHKu|u8%HkO;qqF|V!>XKybAg;Qp@}G)26QCo@^HdbxNIH|DQ-48 z9q`?JbS_|n3rEG_pgZua09j=&coYQ|RZ+iJwNxC^6!ha%E_1z_I>kJcX^E7mYHh%S z?5qKb@{qhY;dzA*zz>&-XAZS&@c80!v4We)JAy?`;rN~)(UQZapbBKUi6fU}ua(eh zsN(wZE>0e6NY*Hd7so8MU$z~%2|2Ff${DV>s*X$aKh=7YR_X??Rys1uqmHLD zs|c^LSrE<@3N(1(5zjZa{zG-tEAzPD!Zq;$-*=irk z5lthmj>)XA;kuYo#cM-;7Y@R!ZSX+Ws>&os2L^;*x@yp5!ydEB=XuH9;lf9|2I{J- z$o?Ejy+Vv!@`IBWf3&^u7UpXT5LH!~$xkIKbhzb66`N3Y%^@E*fpz9wS8& zbvU>cy`EV#j4Bcu1TRRlmy41-GRpvN=+T{MpcwkQS9zPA=y5O_#F4SCFzi0Wuk*v_ zj_bHk(irc`7VTe+^Imx$nb@F3rx5gfje#?If6f^wTN(o4P|UzGZ*909l|cm*?I({w zS$S8QN8KQ|yYQbNey&gye_d*q$u!Vd;|{|J`_YXh@BiZ3(P4RINm~=QFL6f@CNr=i zM+;4}8nZBaGN;~uq_a8+z6jSi!|aS4T`U)sBfPX}wc?cE#c<QFAdoBtjN9 zE6+#RmuWd}cv#Ia%s6hcjt(GQfRkx?XB;(Nu9|wd^?baKu{w?S8$FFRfweK5lcoTw z%EXb($Yz`?>Lg#3G#ICt!fT~7Jq?AShH7Z=bn0us+~7lNF&(1@8?mW^IE(F^S%(R= zwc_l`N`Ba=8X7L#wd+OKSnZ*?vP>l6gTXEXli~E zNvYF$kq);esJ#|%I945EItAUDIWxj=9Lh*Mm!?6K+YTkuxQmv=X-P90vp(ny* zn^0`1S#!K4Qj;>~{Gz)*;w~U=GC)nf^0`;lj%D}QNZli;Ki36DjW@n38k@ha{nj>A zB=m9dvy^coHu4`HnoGq=d6}<#FPa4~SP=5A z#fjt4j+!P+Xaf`LUy|xaRV594B{=;F+m{CivxtRI~7acbqQ~O*Nu0a8ie-J~; zSzc-VcvnYL#iH?;2TBYh)URtc@l9mL8h;Rn3d?*OTZ5V(Hcl40sus*q^XV82J7>6D ze&O^e&otR2>(`Bpu^=(srSdOYkkEBwF91WjKy(902IJOv70SkP6)XiGFRY2xhPfMv z%Ny#A=Dt@P=>S1aG)J!gU{ z$aya5C&~2dne;2`Fl>+9JYFaqughrtP|akmA5%{?{wC$CMEe@kc#9@SLf&s0axFyTI$SNy#dKV4agy0< z=nq^_Zj{LFiEqouG~7kAcOlxzj2g`1`25pdOQ&H%CJdi$Ev+2ZTs+<9$2w|UH-VKV ziezrXd@>rS6Ec&OU?R-K8IF%gbT^5C91=+I^^u}f6~%b2Wn8S*er_Iw>rfvidaxk-Ff0H zg&J%xjT2c~EmYfVzdMM<(>lKzyim=FbrG6z@G`HzCae@QHWY$MpcT~yPof*ulzerG zI|kG-ng?Uf9MKcdh!ws;fG@`-SnY&{0PBG!!)QE{K>S}bSToSSz-ts;e6kj_{K)i{ zy5czhIKIc_1FWEjTRWpGE41y9CQTCSh0Mu+)s(wdVQz{Kt4J<6RHSjhYy=9WQ2l6w3G`*4WP1SS<} z>55Owz)wOECHhKemwY-PweushHjNsbX|l+L?J%oqTs5I4?qediyl4-9ZV$zDXk(#d z+IYr5gB+ipsI88NQjYXYc*zfV9H%aAT$Jq*+-ZV|&iHSAC6sR)~M5>PX`lxf7@sV0y z-1L9#*G&JLrwGvgj%+3;&SKC|1X76hGmFo^DZ@Z>nvMSEggFeODj$Xuz(*du@4z@V z*-Cekbre(gQdKD?l+c9B5~nJwus$9)?-rL)u+ycA=$;%ygS?X9A@Vhn2Y zT#K;Nj>=5BDTa|^juA^f6?QN{D2wzlRnd7<$d+T_`f72EwZ2iIBCz=hM z#-|%G<%j`sK@8e9^N4T2U+(0h|37duY|!V5S#gR(**Nqs>~^Vo#`vPo>V8gH47x zq7DvsyhjO%h3DeMNlQW~Hf#a*jnZ}+@-Jh3C~e?`&jJ^UR$$Z;h@8ke{O+HmX>20B zPSyEGTiSHvq)3j~p2nM+7(?+v9SSbGNrDC!33?No_%Ka5Mkhwl+Ne9lawYA{!%{_x z?)<+sHL2FY_%1!URCoC0=**3|QM4NurP-KtBT`h2`Oc~7?pQVO1m1{ zuf-Su`-E5dTT*rH+)M?Uf*x11HyCbm!v~1X&{N}InvhA++EcW3&?j3+Gk6AaGn(82 zz_oa0tv6JI;VvJ}@xCm6Nx+=z8PpO(^?c23exf;2(^MqAv1$*!$Bv(SQ06!`zjWxF z)b85oxID$!A-chl4=@tj9m@`_Z4A3t0fvJD)~h={Q5ay^K7ZJgjoouou>V~?Vat8? zswQtk?G$e<%ciG#cc`9a*RJ(}pMc?@2x-PX4sw7wnS5{|EQoy{6hYnv8p14_#>p%j zx7n-l{y{eF4`kWgK4u5~eD`g(r(SMpudf9Y^#txU*bTvVb77x8br77H*zGQOsC(i= zse>h#)ZOTPBMRtM?Zb+KC%u{IHC#AYL1dyUg*65V{}VFjwhslQ#-B$k^(=oU}M@ zj4i}-I{sCB^&NNx>qm(Q^qw8%UBy@L%Pj?tUIkV0)pvsxRNs*Y3BSzccOkI!jdm5^ zt_wN^zat|k`4ydl7lWL>`L3SjYf;hf5qHV>BtMn2l3%34*d@53GF9=__lgx%-=SCO ztN1Ga?K1vs$xwaQI0{FI0E$m>%<-=Vjzm=NF{9U9RV5mr#48J`p#?LX_TwjIT8E;KPr6%KL9Qh|0=%v9`)EP z5ns`zivJk`h*HH@->1-Jd>joNcj<9YctB)QQ59c(-}==_BK-O0sI<%f;-D8@2f6<@*ONX96C^g9|kB7IZ!MaxgJW0@c$UMd;&J*2TR{tm%LkuyDd zCvNC-z(j)A9OEt(AFn~jU5cF%D%~{_mdf<=#|tbzm%>W$ukx+(MeR$;E-1xs>k^T| a`zFCux{8+GnN1eIZiApa#T3Ex$o?O4H_?j# delta 35096 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 HwZ;Df0@yCj diff --git a/driver/cli.cpp b/driver/cli.cpp index 391a125..357946a 100644 --- a/driver/cli.cpp +++ b/driver/cli.cpp @@ -17,7 +17,7 @@ #include "ui/view_selection.h" #include "ui/view_info.h" #include "ui/view_monitor.h" -//#include "drv/b15f.h" +#include "drv/b15f.h" // global error message std::string ERR_MSG; @@ -54,7 +54,9 @@ void signal_handler(int signal) void init() { // init b15 driver - //B15F::getInstance(); + B15F::getInstance(); + //std::cout << std::endl << "Starte in 3s ..." << std::endl; + //sleep(3); // init all ncurses stuff initscr(); @@ -70,7 +72,7 @@ void init() signal(SIGINT, signal_handler); // set view context - View::setWinContext(newwin(32, 128, 0, 0)); + View::setWinContext(newwin(25, 85, 0, 0)); } void finish(int) @@ -118,7 +120,7 @@ void show_monitor(int) { ViewMonitor* view = new ViewMonitor(); view->setTitle("Monitor"); - view->setText("U0 = "); + view->setText("\nErfasse Messwerte..."); view->setLabelClose("[ Zurueck ]"); view->repaint(); @@ -131,6 +133,10 @@ void show_main(int) ViewSelection* view = new ViewSelection(); view->setTitle("B15F - Command Line Interface"); view->addChoice("[ Monitor - Eingaben beobachten ]", &show_monitor); + view->addChoice("[ Digitale Ausgabe BE0 ]", &show_monitor); + view->addChoice("[ Digitale Ausgabe BE1 ]", &show_monitor); + view->addChoice("[ Analoge Ausgabe AA0 ]", &show_monitor); + view->addChoice("[ Analoge Ausgabe AA1 ]", &show_monitor); view->addChoice("[ Informationen ]", &show_info); view->addChoice("", nullptr); view->addChoice("[ Beenden ]", &finish); diff --git a/driver/drv/b15f.cpp b/driver/drv/b15f.cpp index 4a9cae5..4348642 100644 --- a/driver/drv/b15f.cpp +++ b/driver/drv/b15f.cpp @@ -27,18 +27,6 @@ void B15F::init() std::cout << "OK" << std::endl; - // Temporärer Test - /* - uint8_t block[16]; - while(1) - { - usart.writeBlock(&block[0], 0, sizeof(block)); - usart.printStatistics(); - usleep(1000); - } - throw std::runtime_error("SCHLUSS");*/ - - std::cout << PRE << "Teste Verbindung... " << std::flush; uint8_t tries = 3; @@ -154,7 +142,7 @@ std::vector B15F::getBoardInfo(void) bool B15F::activateSelfTestMode() { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_ST); uint8_t aw = usart.readByte(); @@ -163,71 +151,85 @@ bool B15F::activateSelfTestMode() bool B15F::digitalWrite0(uint8_t port) { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_BA0); usart.writeByte(port); - uint8_t aw = usart.readByte(); + uint8_t aw = usart.readByte(); + delay_us(1); return aw == MSG_OK; } bool B15F::digitalWrite1(uint8_t port) { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_BA1); usart.writeByte(port); - uint8_t aw = usart.readByte(); + uint8_t aw = usart.readByte(); + delay_us(1); return aw == MSG_OK; } uint8_t B15F::digitalRead0() { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_BE0); - return usart.readByte(); + uint8_t byte = usart.readByte(); + delay_us(1); + return byte; } uint8_t B15F::digitalRead1() { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_BE1); - return usart.readByte(); + uint8_t byte = usart.readByte(); + delay_us(1); + return byte; } uint8_t B15F::readDipSwitch() { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_DSW); - return usart.readByte(); + uint8_t byte = usart.readByte(); + delay_us(1); + return byte; } bool B15F::analogWrite0(uint16_t value) { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_AA0); usart.writeInt(value); - uint8_t aw = usart.readByte(); + uint8_t aw = usart.readByte(); + delay_us(1); return aw == MSG_OK; } bool B15F::analogWrite1(uint16_t value) { - usart.clearInputBuffer(); + //usart.clearInputBuffer(); usart.writeByte(RQ_AA1); usart.writeInt(value); - uint8_t aw = usart.readByte(); + uint8_t aw = usart.readByte(); + delay_us(1); return aw == MSG_OK; } uint16_t B15F::analogRead(uint8_t channel) { - usart.clearInputBuffer(); + if(channel > 7) + throw DriverException("Bad ADC channel: " + std::to_string(channel)); + //usart.clearInputBuffer(); usart.writeByte(RQ_ADC); usart.writeByte(channel); - return usart.readInt(); + uint16_t adc = usart.readInt(); + delay_us(1); + return adc; } void B15F::analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count) @@ -243,12 +245,6 @@ void B15F::analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset usart.writeInt(static_cast(delta)); usart.writeInt(count); - /* - uint8_t aw = usart.readByte(); - - if(aw != MSG_OK) - throw DriverException("Mikrocontroller nicht synchron"); - */ for(uint16_t i = 0; i < count; i++) { diff --git a/driver/drv/timeoutexception.h b/driver/drv/timeoutexception.h index dea32b3..159ec7b 100644 --- a/driver/drv/timeoutexception.h +++ b/driver/drv/timeoutexception.h @@ -12,10 +12,10 @@ public: { } - explicit TimeoutException(const std::string& message, int timeout) : msg(message), timeout(timeout) + explicit TimeoutException(const std::string& message, int timeout) : msg(message), m_timeout(timeout) { if(!msg.length()) - msg = "Timeout reached (" + std::to_string(timeout) + ")"; + msg = "Timeout reached (" + std::to_string(m_timeout) + ")"; } virtual ~TimeoutException() throw () @@ -29,7 +29,7 @@ public: protected: std::string msg; - int timeout; + int m_timeout; }; #endif // TIMEOUTEXCEPTION_H diff --git a/driver/ui/view_monitor.cpp b/driver/ui/view_monitor.cpp index 96d808e..12880ca 100644 --- a/driver/ui/view_monitor.cpp +++ b/driver/ui/view_monitor.cpp @@ -13,14 +13,19 @@ std::function ViewMonitor::keypress(int& key) { // http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml MEVENT event; + bool hit = false; if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED)) { size_t column = start_x + close_offset_x; size_t row = start_y + close_offset_y; if(event.y == row && event.x >= column && event.x < column + label_close.length()) - key = -1; // do return from view + hit = true; } - break; + if(!hit) + break; + + // fall through to next case + __attribute__ ((fallthrough)); } case KEY_ENT: run_worker = false; @@ -35,10 +40,86 @@ std::function ViewMonitor::keypress(int& key) return calls[0]; } +std::string ViewMonitor::fancyDigitalString(uint8_t& b) +{ + std::stringstream str; + str << std::bitset<8>(b).to_string(); + str << " "; + str << "0x" << std::setfill ('0') << std::setw(2) << std::hex << (int) b << std::dec; + return str.str(); +} + +std::string ViewMonitor::fancyAnalogString(uint16_t& v) +{ + std::stringstream str; + double volt = round(v * 100.0 * 5.0 / 1023.0) / 100.0; + + str << std::setfill ('0') << std::setw(4) << (int) v << " " << std::fixed << std::setprecision(2) << volt << " V "; + + str << "["; + uint8_t p = round(v * 40.0 / 1023.0); + for(uint8_t i = 0; i < p; i++) + str << "X"; + for(uint8_t i = 0; i < 40 - p; i++) + str << " "; + str << "]" << std::endl; + + return str.str(); +} + void ViewMonitor::worker() { + B15F& drv = B15F::getInstance(); while(run_worker) { - std::this_thread::sleep_for(std::chrono::seconds(1)); + try + { + std::this_thread::sleep_for(std::chrono::milliseconds(200)); + + uint8_t be0 = drv.digitalRead0(); + uint8_t be1 = drv.digitalRead1(); + uint8_t dsw = drv.readDipSwitch(); + uint16_t adc[8]; + for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++) + adc[i] = drv.analogRead(i); + + + std::stringstream str; + + // hline + for(uint8_t i = 0; i < width - 2 * text_offset_x; i++) + if(i % 2 == 0) + str << "-"; + else + str << " "; + str << std::endl; + + str << "Digitale Enigaenge:" << std::endl; + str << "Binaere Eingabe 0: " << fancyDigitalString(be0) << std::endl; + str << "Binaere Eingabe 1: " << fancyDigitalString(be1) << std::endl; + str << "Dip Schalter (S7): " << fancyDigitalString(dsw) << std::endl; + + // hline + for(uint8_t i = 0; i < width - 2 * text_offset_x; i++) + if(i % 2 == 0) + str << "-"; + else + str << " "; + str << std::endl; + + str << "Analoge Eingaenge:" << std::endl; + for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++) + { + str << "Kanal " << std::to_string((int) i) << ": "; + str << fancyAnalogString(adc[i]) << std::endl; + } + + text = str.str(); + repaint(); + } + catch(...) + { + drv.reconnect(); + } } } diff --git a/driver/ui/view_monitor.h b/driver/ui/view_monitor.h index 5c9e0e0..bb64cda 100644 --- a/driver/ui/view_monitor.h +++ b/driver/ui/view_monitor.h @@ -3,7 +3,10 @@ #include #include +#include +#include #include "view_info.h" +#include "../drv/b15f.h" class ViewMonitor : public ViewInfo { @@ -12,6 +15,10 @@ public: ViewMonitor(void); virtual std::function keypress(int& key) override; +private: + std::string fancyDigitalString(uint8_t& b); + std::string fancyAnalogString(uint16_t& v); + protected: virtual void worker(void); volatile bool run_worker = true;