From 6ea9251bfe55775792b2a94d3d4e8bbabadbee82 Mon Sep 17 00:00:00 2001 From: Slavomir Durej Date: Fri, 19 Dec 2025 16:49:02 +0000 Subject: [PATCH] trying to fix the log out issue --- assets/claude-usage-screenshot.jpg | Bin 31356 -> 36496 bytes main.js | 157 ++++++++++++++++++++++++++++- package.json | 4 +- preload.js | 9 ++ src/renderer/app.js | 43 +++++++- src/renderer/index.html | 27 +++-- src/renderer/styles.css | 44 +++++++- 7 files changed, 269 insertions(+), 15 deletions(-) diff --git a/assets/claude-usage-screenshot.jpg b/assets/claude-usage-screenshot.jpg index c84e577e4928eccca350d83b73d8833b484ace91..d49cce264deabda49b6a5729631f8ca673ec0508 100644 GIT binary patch literal 36496 zcmeFYc|4SD`#*l!LnYZtm0=H=xV6ov8c6Bgj*-7mFY z_>h>yVTrvkX<2D;Sy6EbaoQwwEG#T++t|3+*to>`dHKcvk6+Xph;thx17$MM9fasP z=@>Zas0|Pd(8&a(Mibnx7actVpqFJED;ql)P__%Ar(nub=EA3wEsbar+3^!D|S;6}%Oj89BXO%oOtmzGyn ziEHaLzUYA3e!sRD`xm}A0blftj0}t{G`{HQeZe0CCnM7VIp*ER&av2ea2=GtwT=7u zy(h)BtilS$c%Dl)zOnI&D2|8{Xsm5=_TMoU`u~cvKaBmwS3k6!fet8-ffGVN3s^Ry z%bCul5f7B~u+I^_s7^*GK~*>-qIgD;&Ra8T<&jT*Upcum;L|OV>*9{gmF3!{JffSs z^ez2>w@L-hDAU2TCogJ>Y z>x^hjbp(}us5yDXKI!nZ8P6l#33M7mXIRH`vz|bN@6+aY(>NBmV@mmGCU@*%Xv{M>BE%_$HWt{C5d{?3`vGx*ecUHDPEOn8_kP3)vc7CDV?n) zOXvk#rcvrDDy#7mCge17VS9WDs%-t-#r=cWAw>F-aSDMnjoQ4l;=Y18EycKxHqn#K zi6|{#BK@uFEIPwTHXFYJoRf6+UEU~$#E~?$i&^1}qhd*IJB@g5d9X$-)io!J8glIA z-f&38K0M^~RWA91>e6t>_G>oE6rD2Oi?*1K@ce>R-`!(7o?qwK`>9A|mntmIv^28i z+^4YEA86Rugj`wS>l6LAmmk+x&Udie)6G!x z+unh-rB}Fo_Kn6e-p}5utd zLaX1NFFpr9##5mn{sgX%DHMMUdBJ(_-r)6n%X_l@+o@2i4i&176V`yM6kogfxQ+3_ zgN`AaMptL97R~%J;bV!-ZEO|FQ8~vh$~-T5bnOG<8J!QFH51bwW>RyaCGR4}`@VSA z;dBSR%~|$SyfZ2LJBRk-R8HzB>Ti$c)VgvmTwrH?H1x#9RjKo-q?f$zu>(3L(dF-s zJnN{U|LU$Lx=Y@5t>W>B2a!MD-uLMJe9@BIKF4n-?^w7OswR~DgzwI>pWE2G=yl7v zD~D}OYa9mJcC#3&dnwj@&FBxfUL7dkSeZN&?zz+=axRjw#PwL`sFLHkE*bCrq3a_r zdaY7?RHbg9G}#K-Iq&yXsn~Ugh+#^s?IU#Uxvami>I{_PuOAb<^D1uDs6GF}VAZ!; z*0{@enGU}?s`pWBu*-ZSd&4m5sEk*y?5!GN42$%oSVsy2+i2QdbQT`El(5p`4%lT z?XTtADlCkoM`qm1&)oa1JpG_fy_4TRsfGjLB)S;4YE3AbM0;PJ^G$OBOeuW@^Ky6`WOjD3*pc!klUcjz0e?Lk9nIG z^$E$$M}#U zM}|bTm)3LW=X<&3_8GN@AgFztLHu_x*?gy`XP~FO7(rxYU}9vV#YS4tWM*PwVP<4x zW(Dz+_F`gYWnsllWAs;jb?>AkGM(C81VMvz9X!irB5RMndZO?TiItRy!riE0FAT{{ zM`Mnj3e{c4&9C!U=~1Cuzzq^iJ*$UhNQdA@sL+$b1~gGnh6?fgVB$d(zI!#|F9qUf6}(kznhOqB~3=38>!IWgp~9Bzq1M* zg-u%i*9Q5QU4V@VESy+RiNNfpLYq5S;0sLKWu=-V+0g@@Bj*@4Cgnzj$F5o9PVpTRyg84se3+cbG3u#3%czMHcC#T{*p zA2bt~2m%HvPe1{K6a@yk1`INAYfJy)1Wc*_XX`)m`%QEpa6A8rXxfA{5^1{)2}s=B zZCgvzxKsA~`^vuu{^7-!W=;q`uq|mUbAYkYS?R058s!O*f1^+hdmTtdhHnvgG}v46kl z;+NF?@;MqwxG8hP?FFnm-f82O^}pyKD?_=Wx*&;G%29o=6?mKPR0aFiITw~7a!TX!=ux~#7H+K`oL#8;`| z&zgD1wL=o*8?GcU>p?_;V+{|b3L?8by10cqDuWWgV@|YxdL3)1Tv%MMlZs493*z{; z4KaKdR>sg@@9912e(U_@*K=}4xk$Iz_1)#y-mY^Y6F*O}CN8QrC0k4ZBV6!>&k1om z7$dpiYp4a$2r3k+6x>O#>`myYiPGH{8fS9$bHMgKy0g^@YhtAJTq+b&Plb~9;j`o@ zenAUVXw2w#uqNdTW-rE}#jQu1m_MSnbjQs%DDqtBv7^aE8^=$N4B5BGX4y3zJ50y3 z9?4F~xbWE6TUJRe|J_Z!n}t2@3Zn`ILXAHb&o(sm^v$8OD369w=n15;Uns>3!lXme zpkj8GPKyb=nLsb-42QXEBtlH+g8UUNnOfiT(s|CEl7!x_l2PkRdGr(%uwmN-mWj1C zdWu&F@@oRSF4OWD_@efLj@U*&F-Sp?Z%WZGPNNW%_p*FFg%eurTI_4zu5)}%uQ~4v zWzxT-f5;@u28n}@A>fU+P>9V&dl5VOhC~q`9PB8tLI~d?3B=tcC>WJ4%eR=xM4F^? zq78*GaS$vHIug`6L4|rUnI<}E3qnX+z=?MTe^IoF(%37J{()UW*F8Q`%;YcnVAHSA z0czW6chfcbr8bGjTHF&iXeq0iG*U%;Es)x20v|K8ZF31gq>mQlW%=EamRa zq3nj1_(>#%wcs7B7Tb5c11DG(_r56~XFX7v+a$dEOxvKo>-GT5yQhaPsxt^@jAIh3 z%Bv%74kH{=xpT*nap1>ZhTlwNz*@z0YLPDKY z7CHS>-T5xAjE8GVdraha6rbP^UHH@-a)({04s-u`NW&$MGKrC=16Almi|_9fFIcyc ztQDI~o~WJ9DlZ)05baunNdylD)3?D7Q$A3ky$5?rD?$xawB8Yv@B{WRUqm%i<= z?shYNh0tKDJ-$k-)q5Sviqt5A?J12)EUu|Z=TH;VNpSa=>*pHn&CE_YJRK{1=Zsum zM#Q7OV%kouIgx>v3B5{%YL99fP$4Ep;#(Y&<1=oE~h_%p*fNF{FC<#E`fLsrm5YRO~?%tDu*|*q7?6P) zg+*4wiM~OuF9Nmjh!_%kjsYxvM|H^y1AD1rP`)uXGq$+*0hgn9H2jjFW6h8fe#V@O z7*

XnXSR;)6o}>=w4c;=K*_oonf={*+U0rGDP2il-|Wwf zZFFx`?H|GIZRTupCEzJVu$M5rP2nvR0~`wOL^20TZyY7bwpH&Yau^d&jZmRo@Z^i_ z@6vK(VsHz3A_WV22TbGi732=Ei19@1eD<7oY&}^qSl5!INuXqpxSnX{cfVC-_tNk1 zH&SK(r5*DAQm$zmuWgv*o~(#iAm#hV9tWL;wN;RI53Fba6G2gWFeNIpCq`RiVcUZh zjuB)=_##tmyI^{Rm(kdUVoep}C%UPvyxGd}LMorhbLv6@23Hdj_2$XG5+Z?|8#{^C zD<_GI8%};EBYce=T?_=1bB2~r5iGw@Ml9L}G1f9O0H-Y`*Akad6s^C!5IX`=NI|lV=4mA#SV6AsiwPMx4Y-{Dj`nbSl&* zw4BC}i?0X=-}m{Y9K)l+y*|e|Hl(Hxn)CAB+r^Lb-*b4sNQk`dSOSZ&*7yr!y$iQi zg)sQ66-6RbzR_@eoRBK9f)Il`JR|Sg_X2@Mx0LPNuct`=D)bDy6f=q zT)~#7Ne>>#yit#({}g1`d^&~{_Fw}hMAE~X_0+rH*>sHo%+CWdU3~kcdgLTb-vsy% z@p`i)4`91%^Hd(f9<-Qv^v;#7KgRS!XFCg0j0i z@N#ayWlN5Yb)WX$(ehY(EMx34B>q`$Kcq)rl4C4q@gU@$%I#{dKpnzR@@SlAUB>RN zvN%}1kHJfql*2s29T$y{$txtNTn|3>;DBYw@y8OT(a!KJ-Nn|Xyi*1zsZc}pMiS-u z1{Hc8G$q3FWqoxs-yQ~5TW}S_2@-Lv0GgN|_$T4Gx|wkFyZ4PYB@ta#PLdyAJ90^W zvSc)! z-p~BLQZ?bYIvM1OLq+xv4heQ&#(&Lq=eWcFy)o?zy3)#H;la-)mvPxaGY)5%3y078 zI;_NDnXtRA^DgIev+PepAD7-vBj_kXeyNfdRGKjSnpzYUVrfEIm4e}g^>;j|?`w0LuR{AD9jcVRwbW1LlABV7Hz`}XTtYkdfb#an5U2&GS`-fY=tQYFFVIPcnIdy(= zspHL2|5)+evk9BC;9qvL?D@k+jgD}{+l5N>=lBU^f8^p`vLV=$JKOvgDXidJz;ul$ zGraFMVxKpRZLl?aprO&tKEmJ#PCS}t4KHdTu#xr+ezE4&p9>3CW*gVk1aoA6(`OeGd zdZjkz&k)7qB^#Igd?{=fHZJ^x6{Bv$`CWwI8@{pmO0EHo_}LE4z0dVtzD+X?z{o3H zBh2ix;r(jqf5U6%tN0R|;ldz}a*VT5F+qm33)z_X6H}_4zhUyWKBPSeOtWe!t>(n=dL`ZuoE9q!0K8(>aH^B!9X>-st9(YN__y2hK4H<;^?ZmSk`!7OflluzD$gwMr4C z70t-r%PYl1$qg0C2P|jc1&~2-;Kgn&1CtSBD2NQ7(6IWgbQsaKgA4}p^I4RP3*Mnl#bZUqiXf$+x>(eZ)ebDd?fDr6(4d8V)&`86uvuGX12>2WG|6X zuyA3b^#~cMQ$`H%c#+1#x_e5L`?dVn#QDn@AGm9#w1Jdjw&A)<&&$C?#|1M&Ph$o> zVWJ5YouN#$9-e{=k<_}DH)eHCw)G{XANp$bXtZJtewNcx+-yV(y0X0|-%wg4WBd%| z7HT+@Q{Q(32&L9;#`SVQOkXfx@7ndu!G%j$%dcGm8Ci=w_3^|f(>6YiV`vf=bNBcn zg^h1Ru-19|ssgGm;CXeYar4zrd+)Mb%uEb`47@L)B0k=on2Mj#Ap9H_t1}{s&y%=e zHbiW|D2g#qgW&K4hhgg{8RM6$KqingzwCcGVrfu2*45l*#yWoFVwJ0u#e*_6^>g~c z-#-}{Qy~(!(Fot{D86tML*g2?C3e&zDr|3EzHyJlM<^@ZeKnD|d}_(!T>nqHiF*#o z`X|$pYn-&_Ws@CDIMm(b+rQTilC8)o-pIQ`>O?HqXnc6|Y|4f<(E=CW_}z0vJ39b} z4jbBgcm5o{Fyy4qWJ1m2;F)gxcj$ClfOi^9Lr)pUaHI3wxtP%Qjr$dyq$;r4PFlNE zgYsKw0IF86iem#l^{zP_;gb77YM(CQnmhSn-1GEXr9|%vi5<^o%!ls`S$iGqj>`^=ISw@ z8F!^w4?LHzS6WyzIgp{en83WRQ!h;Qn);0!F8Y(Z@2wzaM+xyOo`4*e>=}yDu+?1}51MbC(}ADc`M98O89`0}E? zjpBhCeolqTV709SVk-p%dJBD}wY1K`SW4KvnCTY0(*`<)51g6UEDhVKMtU zZ+eY5^a_+E&TJM7wrU1QTZ8?4a8Qky7>vHg)Qb7JSqT8y6ga9wF!aP3TD4#^sRAP* znNcm4Q7v|~=Vo3;=fAwUV#uG;L>r6$2x^U`rHAYRVygM;jNu^A$7F1M+wO`Qeny3g zIacOt!Qt6S`XFjgH5zgIX@zw}y4$tva`mu=$w_=~RR6lxh=u)I(T=@^3UWmA=QWhC zh~XR{B}^>h5~{DF2_aA|L}~Rw3eGLLb6F8}PUBnqK6C_%y~vS^`ogI_be?N>;D=WY z->nY~-+Ngo(7C>E#hmy=rrD_P^9Zs5B}Dl;pWWxzJTgX+>#XLrwLIZfG|l_bMM}@b zU0vkroSQP~Q(EkUFSYypFLEsUysrwS1?i)hGW=~Sv}5*&rhe|=sS*DQkc#NMf7JBo z$WmO@=b#~d`(5LRcaqrJ!tYso=RAeP5d@jYB+465I(l{S&uEI_9JcaOD}+j~vjm+cA!^@7~-y zm6gEFdo6_N#wC}RR!RZj=(`qxs|YVOVj^xd2=U{o&|MSU(eTpf{M`KT#uT*N*(>G| z!>nfaJ`1}+4~$*>^vZnl4#mF!6k+dTgebfG5X~6}h;n%B$cy}JKYvu25{C1tx`_Oc zbCC^q_$8HVlN9Uwbauz}G(ND53-d2MIdnf`)Uf%ZkP5-4kigKCafC2l?Rxip{&dRu z_wxy9!W$IIvZPt_97wXZp?(5S-IiJrQFD0;yRfSmBw@e| zp0H&X3FTPP^^-u}9PSOu^e@7x5W5S73rVyH2DM*j(EidGLpja#4g|&{R;{ol8kk7m zK-1RLp}FDs0#K>8#4HEH*4(@K3V#rjpDc(qfIE@+R2K|B2Q{JuX7wExTX7_b*y^m@ zZHcLDT|juJZxAYoKC3NW^{GQEV$}@n z0)Bpc#?lFF7ZaiBij%oJ#9xJ1X~-8I5gkuR{K?l(o*ncM4UZL8sCY1=i9efgX>6C_ zjQAzBV&l{Nxpy_tS=ch2hQbJR8KMSz2Os=}qS02h&weD`I4GczBJ{R2Ob;#}e>lq| zZb5TU^+O!~iku|7rOp=jFr({I9HWKir`QGbRlT z4YWDhPI-0_V;$dO{Xjy}=rXz!H7@CkrKG96cQ?T~G|#|h^z(=+qllTlmn7EiBM$~H zd~^}jhY z8u=r!+b3O_d~F~xamj7yyf6GgJLMp#3twQg6(A-JU+`^GHXqh;EttILPlc|=ddb(p z?E}4=nXApKO~RTGuD4%i4iO$aSPHP*5K!6W@W>{(@X^_1%jQ$YY^$~&LlbAwg4M#r zrf-1=e9B0C)J&QGji_9gwtX4_Oo*m))xLJUbS?hLs@5!#DHYA#hLSVQ=2YmUT^#Ol zu#&pJ1Fs&Y?A(p#6OOs6sQ7oSw=wqMD8z*`iYU8qdBX+A5|dx3IFVs46kHPEyZ5et z`7*13Tk}z7Ztshdg%Oh$UrVNyo(P>cJ?}HMr}4WCnA*1avxhnF-4pjZv(*;O@>1RN zo{Kt=cW;!=#ZPEsayfono<#J;tYi@fHiSqvZ4~7|dO|E^C!r-#ar?Mv>JX*x!=iM7 z-F0(Iq|>L2;aw-h?RX?|Bz2v8H%?f9DDucpfV1~E^d*SD2=cV zI(lR^h0kNs=w%w+4VcSX+`b>Rmv&y4v-EYdb+lXbmUcqpE#~{_J61}+pnw8t-8>D zCe-jNDzuxzOld<4z}1L4!!k2#&QAl+bhvr73K0)TFIy=Z_!%iCwy16xEUoVP)T;Pc zvk7d_aOZgAUpdr+hNnI6AGe%hpMVH_WhexCCF; zU}$5&B|4w(DXF$-HF59r$HamAYhFQCo}L#5)!qrY;2kM!uAnf6cwL>oAxJs{%6X31 ze(T}t_`J_J1bZLx>!*z`c*?T{&G2@8jfeb}`ky779>&$_7<xo8qTFr)$U>PdZV0 z(0DUgG_o91gNj5k!xcy{qKbE(pTpergf77>8reTI6{T3)@;<-RLeeSWPM36@9`}>W z=PE8kOUCu$r>DY_KU<*irdS>#6#|C^Hm;R>-);Ec0=}O-zG3 zQ4)2BqWE)Y2eFV)v4S8c!X+ska9CMHt06J$mGir&M(PdFT^F+QzD^*#ZBqG)XQDms z;I|!C)xU76w36c?DTiPbRaVIF2YO|)1kq04p#xp+*`0+Gy29ZOZ<4_ zS*3?RB4y%$9_)1V^t8SU-+^>rk(1%q=+(PXX4Q$VPZnX4lrPwFz9@{tPgopWC}||6 z4ijg~MvQ!MBFnEtk8qnWN&3etLx(R4=Lc)0xKcE3kHq9M+1Cn8nMWtTv((EV;84WF zj?K&j|vYXb6(38 z4UbD-#w_=$#b*bCQVvrOv2Zv(cIYUvav0X9vvLlv@7FHT+`!H*sBsoMYGr@B$#(k3 zT)%FYzDC~J8H2AgwS5)ahgg*yhQcP`mE;6cz$ls#=X8so?jhAmTSj-`kW z^iN~xxoX^T$Q^-4qlb3npnM$`Kflx)*V*mrbN{8hq>wLHoN4;0y&6_-#=Q&Zf%sYk zbG0OxOC^5x6hU%@8?Qp*Dp|=aCUjMYjikelcRX*qNLWb`xw^`ADCzJ43EpwIL-+m$ zxkEh?X4(d(KaAgT^%BhoC~Wb#dH%p1L{~g)ZL&UZBP1&7$RbMCTNqmp z^!7X33bbG9@M<~qXH)d(Fo{Oq^l-AdK$s%$*OVL-b%zPoQ)_SW7t%oIYD7l z14dXywAfGzlqE{%0_|&5s|A0hLZy+-96~nFDpFFz7p5cY&a?IJOL*;U{`&aJ>(k>( z5*i|}jx930e(^a=KjZZN@A0^G7qYKqr}sQ3G22XiB6>Nx@aYxr-8lusKruIu!>j`{2D{utK8>1GN@M6D zaS)Q4u{#4LMvYjA2y=Dmh)Un**b9Tl*}k7Rdb?Grq*nGomc75_nD=OVNwQ+Udu9jx zNhLYAdOOLeH0&Jt8NxvthJ!WS=9nO+)vtF$@^{t`c$}k`w6b(pt2VzfWGeY^m|2u=#Z`Dj3Ku zbr($jCw76i5_F^i3gzJ2X_B_W;5-TVN8!TQo51GG=P_hu_swo%G+c-P8abkQRzE3x z-DO4`KYeE3vFEDwOI(J3c_tuq+w16#8@Qs<++*$eJmS^yrryKF%SByg*E9zYl{@#L z&(v;s26yq|n;B6&hrG^(T=}-NdU@F)Br)h?VNyzDpN6j&YQY(`po2ZpICn7mhb5Zy zfP)ITicz768S*Q<7V+iJxpzk%Z(HYdzh?qEJ3kLmAv9u55wo^GSjL0v8xFB>8byj) zY`zQMPsHNPD`f7F0&sDTjW;`XR0oYUesLjp3UZ?Q&a#vRDPKq)!QUr8;Ai8UNm=$B zSv-T~iOZcW_7?c@9rOA1f{x&YiO0XY05p-m*=!5cfU_oOmd~F8&Fp)pYksu@Bq0o% z)~J3)w?^@z>+;iS7E&Uja(AF=f@KIsq26tAd)~Jzv0j_lcC+vim*ho4)7A4v*9Ac< zP=GjqpNqYF9z;n|8=ez4%vK z{ArC0JbRG}{p_F%x(T}crJ&Ex2a%=*nX<35{VFYQb>C?RYQCN%UC`;LHTe&w0SW1_rX|WUA{%Z6?wn0W)efU4eb|@IEN7qffN)eCkzVU&} z)BU(1ooX#CGjBX(HpoA(reNhkq7hH$gYJ2+M|}shtW=wKbb9C~+m3j+&Pq!Mw!R)1 z7;wAP@+0#?!?Kv50h`1%CUom2GYqi=r6uEsdAREv`#cl;SOhpGEVx-D*1BvsPPMr| zefv6^zQ$-zuZ3oUI;T}B^Xz^ayddvWv{j#(j!067I73TWT4!~&|7Eo(tyAz!U$TKa zH?x<#qI{z~dF*2S^bXmhhTYTqJ{bE6$lv=gm)+KB$*xEPMKHPKzPvW#KXLsP3qvLB z*clG#RP$74hfBU1ya;0_27T@K`uoNbwGSR*+Oy7pUE-#jI{j%_Ue#VRbmy@gy1uO% zM{>w7VLhW?UnWh_MHV6(UF{X=YBRLX9`T2k6>%YJ1Gd0*m0?LNwC;WDX7@hFuSdJn zo{$oAJ+{#r=;H7j`qqSSXGCi+nGI8>ZK;tU-*@)fETxO;2^72*&6dLaZ+v~0Atg4`gY zM|Db4E^=&6mO`P35x>p+=w;Yo2bD}TIGA9fD2f4UJ`knu@ACn`quo{X;tXOQSZ^F$ zhjxP*xB;A{QG6t)654RoL?;T{2$l;hEMi&V1u+4hMWM(LI{@v7qB7*#3T%~tYC=oS zY|aL%Xj!PSleF>iMeO8okngt^f%Ri3if>^T`L^c2j+lLlBADKQ*T`(mSWlr80t}h{ zy%kFJ@UKBgQZ&G}9ib7$LL_>jsRSZYFC?wUZ-Anje&1)XNEmIAms^VfCh1T` z-pIA(O|nveP-yc_koQrcgEE^^VcO)X7q;Pq9tGu^-&_G2wxqW8`ydJnPU8TZd1H$) z3{6baG>q8R5@oiiZ>WXCv0MzI=CCuHNfq-E%V-CO$p)vj8F~( z8=)iL0(U>z(v=nMb|uu>5`tzye<*GHwb-xKf$EJm#kgr<7q1Rdp{M9gIsdwVUHth^ zW|sdjBeSwI9~f*lFj!z-Mw|441(#_H5?^g{b1T=AatCZM+6MTitlBqs=Wp`2wj)iF z|22KWn|j_PcuOMuHiL*)IjCYpQu+xozPIp5GP;=R-!cw$?Fq$k_D)G+GMla3$^olVM&kT`|BN@3)n z98M_#S7HDG!ND%`Bvz0|yV;BlX&qWev*q~2gtKn4&UW{p2kzXw$PVC!N5yIUTR9z|54PZOt(y?KH!Kr|!_okJ_xD`IAY=>N_bXG$WLP9kg#a`i4ZEQA z3nKBqsi4#Fbz2yRAb%Q^f*W$&!~sIc&A<(QTHdP2Z)Opj%L4@8Bn?^!-v1ppLCZF1 zpufy5XrW@wU$}`=zoY1jtw{l_Lj4HcTE`o9!(o}iLjcp!LKDNmm|rAF{emoR*86FV zfj2ZjMh8Tj`rAc5!c&l`eRxr0vq8boV1!%r(vr2BztbQYLu}jr7ZF-Ezw@5so1D>z zps!tPlY}V+0vo?q3Cy+}xh^4D+XS}6qtBiLn&67CQ4}q2K0Zo?w3Tj3r#)1J0Fnc1OYB%0Ehn_;Q*JJ`8RmW?_?k7wP#bl zBmh+TjjXJ$qTx5AA%)F@!EYeTRtEXo9yXT`0nHbhjKTZAqcu0}=8rv~`2WkabTbKE z9;eCS-l>o+5_o?np)_h=&}2Ys>^O(ekT*_6>_niy{|b4-(@1h+{wq7qJn}0$ZaeTN zJEprxn&b)3G>1DAZvjmOg9PFlX35whERG_1&^lvaYwv*!hdrLWr)%tv&b0958XR98EyQ6SUkLkc>8=HPEI)e&Lmn zUt>aoz2@k_&I8Q``t?Pc96mg)`9(p@Z+Aj#=+RCPM}YpI(wa@YuO$-+=%nr=m;qa_F}7Rlcf17#}?Qw)R=o06`D<Y5646a~#z{dNA zvo#{!K7v@fZ1Jq+i%e4j%jo~;?*Ag)U0Pq%DhO-^4+?0Lk(55vVL)_| zeERX#G&Aqf%eU!ux}ut=tlotLeZ=>y2;n&zj3U%Iq9bESc3D4HFO7P@&vZ{3`wQ=h zzf^IOkwo@v$Gj%Vtt0)m@^qz>NaF3efv zXqxZ4jFYL=9k8gf3^W?XjqsViHg6DF;%f4b5evCtp}Oz22Qq<}K5Xk*FZq)vF*ox4 z`)BU<1CQMIk$Uv8Co;-~&h|W6JQXbE8MD^L%klM=<#{GM06f@^v~}WX1Stwr>m%Az zDj%@9t5gUa37;lb3Ahuiwy(_7d_@P&5H)_l1Drqk-ye$mBJe-KnL`^r4EnRV?vcva zJq5vhf!Y;Boul81BO7I&+7#SV`l`ENOw3Mfx3|2u<8fFsk5IejU`kJs;Cv|JN^5^M z&N1Q%0bP&k%UTH~-Wr}_P`p_lHQaJ~{bS8n-Hbg}+xDo9zwnFp@VTEDoK>P)NFT^c zY$oV8s>k1|-Ww=JOe63$bzjo1{I(>`HceUY6n6C#trBnFZ@y-zRXf~en0K&H?26>J z;O!(kWRwKnxtcpr9~ryjx-?&14^VRaCLg{9- z?2z}N5WqeUJ2th(rKrcH)S|<%+>|4>Rg&H^?KhaIsw%d(HgDSe zHvCY^7bzb&JNZ7qlVF5MUTp{mSH2Okm?dnydfG=pbcE6ei&IrTx+3WnG2`Kv$eqTj zM@$7SUP;*gnbY7zze?teKP)a#5N8w_EKhI;UA{e2%{m01@SN{X>-pK~0vP+MisYvc z5c0}bf(l|)BzaUni0m>egNEw1F?&cS2+B#r7|744VMvW|_sM~X zdcAKm_V3@nPms7&RJ+UZUQyol%*XTr=IyD`l|IM!;jk>kiW;~`7ir&UAv-a?)>fwD zhw|#WdA_}L`j7i>zJAQSFWJ<)ei3kdQ%~xX_cgpJCh`>EW<*E0~Z34dINS| z?bL{#&>2Sevy6(>k6z8-2Yul?2a3X@^d+O>8jF}>WEZXsX71M0&{7kb(CnFfEQ!nB zb>$WJ!i?#tp~kUlr>k@19>3i3f!F8DR~5tkbsU1L4qTDlfUCV@S;hGod*=?!LgiF2!MXWs&$NH?)D8Xnc%!cv3E84jwmOhf?*S(O$r$tv zarTH`k5?T5;h6nj!!f4O5tLtcFMu9{2bPkm^8Tj5zK5Dy_^tmGg0D`Vx9cu@57Xvi z_w@DVsd%V;-2M97=5o)|hM$Imi-S85WgHFI-c_9a#7y6YEIbJxP(#^UQd;pYLy)%} zx7gr&!@61W`*#Bm?(mO8P?NgAM2P0&BfLskvsb6F!`43Ego0iW<1Gm&5*KPEf?#pS zofiNgI;)RZVQs%2)VyiLQ-ME2J$Xca@E;qxwh1;M$25M9gU1#EimlzT^suSUilrU9C|?O!9QA zIRB$lP6x#q;xHugKrL{Jm90+6xIs9e$3dZwZ1*mD`a6?gDOatK7~UufR5kL~Pqp6i zy7i>&1=`mx_mfvoN8?9zeCcCX1`*4OH%tlT6su4jfxZFD7XY z?=P?s)iFeilqb5P5{3%K4dR=PVuV0bGW3OC_J~-7rhU*el15LJuj`@07b0@yvZ_Yf$Y*=GcvMG;?&jlLq;Z(g}pjBqi{u71d6AMZiFK$gPFKv z!{}-SUVjA3ON?kbRG#tSU}O=Wv2cEgf}~)h|InN5TFr1fy|+1fp2yr$#yK6^5U;C{ zrMBn|lwUX4uBMi7srq5TQzoXVs=}ex-ntEZ;wzK8b&C|nnZ!c(jWb%nCHsOd1V|T{ zx(69S1PcHZJx$KUIHo(UlmiF`cp@R6X#WD)>hHl9VQ-+lLvHVJE)Q5==J&-l<7@SE zmUo~DmZyp)*`nGHTimmc7leH+&u$9P7HGY52L; z9JU*Axs@o^9HM0Xprm~n9d*7S>S+x9;=zR|18a8Hd+#70EjMT_W!ecxlHsqXz}$Pct42Ig=#s&o?9VF|SO~8> z6V$igN3wK*`{h{Jd5eM{+v-ro&Di_;M)0#Hy~25t zdqkB6lhd$xE~?`tYC+6v>Xer(#tERngjYPOiF}}F#Ay{MMf4ty^VM#j=#nZdeSdJM zCARp09oL<2Cu0t2R>^7>2{SSvBZ;{qP1*~oT~l@=r@e4vj}K$QtOlg6#{u5Li-)Zo)w-=ZnLKG>= ztkX{+i969FXFvx56qF~~p8@ZtjtYllR+z)7kk$oBfClU!iGwQs=3oSIJ9=buCXjIL zcBTEA^!rx^X9R7k)5EY{bv`m(DVoG$gnv52M5%4VOz!wKv1AdT5!8+|l{bkxJ?u#l z#}D1s@yWoPBBpbYKa!!5FOQOT{QvZqky0|2FkxvEZtQo{yu3SIH{4`JCY3GH9 zux<>AM+}#r0&XK7=&3fhd{YtBBC-Vc1wIr`(gyz~27g2G1k?L9x!*aDtuO4g9?_2Ei(EeQ$&1Wz zwz#x(;r5Pwa(pS*%tZXtBzgCYYraxmyDxrR`ut+bkoe#dKr{|NLluo-OWjG_6?N-; z%{x3-tio_y&S(8lqa5K&8t=9Bj$9k&G?LQ0qKPjU=@aycWWxH1aKX;yel#d+al7T6 zv+5W<3(%>ALszbyO zIMj}t37rm`Qp)f!}ZH z%@@qhGw0bS$0p@>l_s8$+{@0}KNjlGaIiXU$DM3d%Isup|6E}GT8~!v3py>>6GX9N z1A1V!@w4j&EVvOg*i%MwG>;Xc>W&5Qg}Y%5(Jh>ftZyniFG-3h-^AuPYNUjjc?6trT|9++nOI8o7=dz;LLh_(+OiSEyoNFzR-xJ$Az;^-Ou-UKL0dR z)zFSWBl?;fGWhWBv+Q_SBSp1SI|-x{O*aoc&%5x@*3QL#$CA8(Sjry9pyI6bSI_Ut z(uwiRTEtvWwC+ocpYmNP$FD}ChM$(B%BWB?s#k-;mO_xhx!;y5Ee^^H2S|z`#GDzXC}{{?tL6zB4xNBuRyN{-^qVEQcBW9Z}r=Q(3IZT@e@q1CJu}u?^H8=s}k6UEPanBbx)ro740n$PGyZPe)VED zs`&1<@2xv7i|KF}-Lu7&4QM_^5XCU0-IWcf*H_RLM&ZHg!F~LWHAWmRT$9z}?PZcj z4;loRy&Wt*#+#b6yOu#ur09);V%X=)m3Ag^@X9-8M`QFKt@rwvza{99xU*NpiGmwP zoRP1wjqZIV&DdQecf19zF#HOEH=$b65>Yx+zHLv``E9u4d);trKJ?-ONWZ@jyks5 zf~P%u?>RC2ME9c3c3#6cp|)FF`J){wOR6g>n~g-QtHR(zSIz||lNpxm8oRQaRQ*i) zJzhSa`tXAaJ=Yd9+);K;Xah(OR$gumI#d?Xua1mG8b`I>i0=M@vbafhnR*oYBG-P| zqM^%_%oT==aaarOf<5vk>H3$`4oHp5gy63s&^Va*&AlJ9cru{t6jI3*WSL zm~mcI>L+Y8(Wf0aPvOgP9R`LOCt6-LZ+`a-k7?{uKfUqTQ$au77bX6|C`K1yZLyqV zf>qu5+_C;HSnT8=N3>5LR@4#G zQ7l8cSd~^Rb)eW>rPs!CirRhz1A z@Z?0o!J)R{D6i;&q!JUdeR;ivuOdAz+bF14rm@h_F|F4?Jwkc+?$*sgsGZ&HQ9XyY zK2n&0UAB`r;q28vcJ*VOx#5{}`TK0xC>>-ZNLfOOFq#=~(!1+9`zFSloO;C`{)E*A zQNHYF>(*je)Ng;6Hb^RwdU;{vLymphqkTNqJW1IzY{5ut>XE0@Kg9Fz0EScd{ zs<}qz+Uh}i+UKcU&BFIk^^I3|==JINT8XyduLQwDAjCb4rMVB_K1eB2oh^!5i))4! z@Rw$WynTxxn{Lm6>zr;+`D2=oNv59~m#ephw8`du<^hF>H(s7Z=GVlY{9<&D&CmYL zVd9f`k)c*zr&KmI75oz+g^z4uBA4xUhdb?-o#H+-==K_$sD^>I9qvh+5b;-cMslll z6L`C!14itl31XRTn>s8;D*(xwxPrJIe2>MmI=$oWwbN5QK5BDCle?9Sgj;n~7++PO zf|6co5@tM3&2U|rPe7`pcx?D&_O|R1**jHRdK(hYWQZusTE~|fIrW@M`O=aET~*71Eox8ofU^1O z-PD>MpWLy@V!HP75eXlADUNG;Yl~jK?j36ru7ByBzjh+bqtpi;f-7RLi+Iip!8XSY8y<2Pw9WQ(ML&UEfw4V4ColY&yGuKD5&LMyh}XX>K_wds zq3)-hAP?OV4KFkpAn=}roX~Ql&hl3~N`=K`JLN_OELsnFvqz*ojebW`84TMz{$f(H z3OC+Oy#hVy<0`8MXX7p*N%V?SxOn%`%Wq+8qv17Cd4NW^ z@|>{#o1{y4!P7e8bKl#&H-jhx2t93sEoc1y8K-LCtO`hT_7`mfyH-KS-2~t0QJ~MB z({9%E=zCz5w;9*B+nTp^f7s-?Uc6h{9-+vizV^Q7=@Va(azRf{j4T${Q)u+mck9%$ zp^Q%(VB8H^ZOD*4-*HuV%h)D?F!9VP6r;Zhpf~u=ZuYBlCkjkFryA0X8`{gkk>yRY z(;_VLg7eW?s;0%OiyA1Eb0J!_l7bS_f&!;diWO(&hV!x!w%7`d^6W(6nL)6*-lbt! zRL_Urui@DHeD`jV__MFE0MEI*R~2k83Ae^FdbPX zTNoYHj15e1Ntrtlx40IlCkFlx;&-H{P!i*IFoOpE4#SkWG5-pu&cIn`f!{xW!q)HS z0rR#x6f?37GgXVB0XQN}ev<;&dM7dVV}HUzo-MVe1@vnHcpR{nLUB9(rA1J36WOmp zHllN2rg<^_hwn2htp}BEXI9#;xBa({EGmUE~@akr8pf)SSeNeG*3emhTH>-C#dFw|;H; zs%9v+aI`Ge4tzS;62#V$lgE-o2tEM)w-EErUlHJp#`#_{+BU6goz+BiJu#(+zngS% zos*Ed+O3bP6vsX+c$KTj-q3aTW#j=@ez7C9{uIR)`h2Ei_Y;!*!MW&i0_hB(YLTVC z#yF(f4TzSfh2{`4(Dw@Yz266>mbH<5%E8mm- zX1In=sWI^T@xa`>yqXs#k;+#zuZZcN9(vH5I=dmhzV_HG_Y&@eZQg*vJwx?lRN^w# z$Aif}edZNCyC}IN^-6+-6M~*OfDX*bS9LOYm8>hAS~M}+-!C?Ei$_E+uJ)bS3I>cUa2S+J8c(F!`F}-ad5+K7Qm;e7CyPUL^yjfyMGgobP^Hf zuS~*M8XA!IM|O-a*e#14G8G)865=ZN5|)BDOlEuR&CbF%f&V zQ4P;MvUzOYP&X(@l&YnKhrxVXkP~b37qmr1Kcynf)?Qvr1gpsHVaVVN{n<|#IO0js zEbk2%g#y}~*fMqh4UpZd?h&iwo(WR7FK2F@thqb=isb1X{b6F%x?bK%=u~!d`;{T2 zdZ9Yik+!1|92;W5Qi`|z5zkf)^6y)L8<6PZqO0T*5%n;cl&<%vPHr7hu0$~AyKis& zbeTR;*!7|CYNxWd(7ft!d9e)6G&?u6i!yX5^CZP^ z!?b4g6HC<#7WInL(^p83EREl2AhSxp3=a_oY`%Z^g>+x#ww(HV3x2>s{d(_KQd6nM zjw(cE-L6m4cG^B9=Z%W0SmCxTO*;SR#N>e8CXDAcuFC-(i&V3>=CWT7c}v-aOZ7y+ z*kp10w@0~ja$wsr9XN_dyVmMhum~1oN)YCiHf{x2qFO zb?bXefNx(XEPm7$n9-8C*;A8!tM(NvgUxa@u?%ldMxu z6sT-(QuBF`->9~R|7nyA$HlxIR+mm|vgIJ(*|*_w#nF;(278I32l*76%9Rhb)tMJ| zEl}~4(a<zG^B5R|9Yn!&Bq%f7ND~<^=#u6bQ2{gFaU9Q#!MNBrb15$G?L~9x-uNEbKW8U!T`4pc*D}nh}q7&@u!LPE8#<^>I_R9Y{NK`fztj)<6$= zLosjxqjSgX#EutTV`q7rGu=3<0$l0tumc2WO3m`tMDcEVF3l7}>OM}Azw_*4b9Q~^ z6T^enk$4~3gWI(NB~xOmE@%Zjg&nn}>pu3An{j%osV86l{@9pSW{RJcmGappw_LS^ z+@g1LHmX$yu`#Z`Qa?VY4H<|13Y(WN0fGP!XPKdoiNj$BU_pz8SfVH`LcE#|Fy)Q< zXZh8kcMpBAps3F*6Z-IPt=O9*->3vYJnPRG2&ISI4;hk$P|i3w0Ub#B?MeE8-ca7ZS^Qj|470izU{App6-6vIJd3;&|*XoAHT{LOp}FZBK%+8 zU64;K^W6cSXy&`aj8vr=WXja3&-M@}Y& zq(~gdaOMAD@{-sSoj?DgEvJhrIqPOJcH&y!)HXF-w9}8IOF4VJw?u8+q!3BGFRA*W z6dve3y#E_;4!vK7@!kBml)nVvvOg9YWB|;y46Nz?*Vg>afO)twU|5rVdBBwZcaDPv z>HpIlw`=qj?%z9id@L?XB;BmSEt-)Xd>YdUPd)TqEn>!!9E5$Qk`Zn-G{~uye3J*B zuFchO>G|RG9HTeB=-hTS0++-5jSY)_Inj1o??)=Lzdk>2T!(UP?Pe4ztNIVQ*8%Z` z+H?zRWr>Gh?ntWl&dHyqI+DA(CVYNe9PZzFEXFDujd5t6&9am57hSlQJbD8WrZ)I7 z=xEO;9n&&_#{$n8&)Vx>H;!!L@v(PH>iK4A!xvpuX!AC8g4DV|PTKrv zp%FnS!2l{$oByEvjPm}C>Y0tO`&G3Y4+i$!Ho56`|Axuu0v($Yx=IE;z?T=05Od~{ z1WuCm?p2$!8qKmWIcPfoEb#-o(tUW&+;N7&{zNTu`K#@0gXY2>c!}%OU>={Xp zq;bD~KDJ6^PGxR|_L)kGzc7Td+vOP5RnKeeq<-~_S*e_7NK8z#RNn>D`I=L?uOi z()Cy^O6~lWo^NYPin&F^_a|+Qj1*;0;MmuZXZ+Mo(=y3T)&ra;t4k~~PDZy08DEpa zwcLnkK_i(A@??4v;S7&~-@#Ab;@yUvtMwj!&Q3V6pdogePp@svN5M2Z)(DcRNyTo1 zwvzPv1;PQ}21d|#HFS%J6!pUB;*48nm3U5P=iibwfCjJSh;Aibyyo}h=*c^o%4_Nr zFCX@gbS=UyTlS)-`g!3?9z9vvSIb*m|Tt333@C2ZxjfinnbJI)i-CwKxUXCD< zbzk~4XW8TJNBnJ#CC|hk7Wc6lH)|L`+M#bTHqf6J?{&oRX*nlD_l`HbZbnaSvQc&z z_$a{3xA|t1?7iD2_Jehr5!tUbg|?e4ybvZN0JLgEp z*j<*NLfj;eSF8&g`yvtX>L?{uMc7&)FSTLIB(Af7A_2UW0mR`6Q__58u`-zw@X`xm zf;DKEOnpBQGw7{6sWhN|vG3f1Lw{WGsevgyPKr^%phwcQya`RRj}{uCc>r4wa8 zVH7 zAKI}xTr?x75=3D6P|olG>1Je3YP4}sil^P;M@_3#V~{ zy1;MvpIRnOz`*kW$uId6_8HBn!({>HdUJ4m3K<3AdQcFX#U_7-#L*UOw|lN=k?`_d z*1f@T8K1}*N#a}8kDD;KtJ}v{EwgETSjjH}^xJ@@`$ZpfV|`p;1VIr6{;x;?Pb`-9 zuR&$JPN8n4orXHec9n73S^kRTLdMQkwUKM#ZmGP@<4g;ma<53C^0%6K}aXNMb z=X>S0n`*p!So0~{Zp?@qQ@Ry%5fez*i0ONNbqvo-^PygH1cTDHDTx$ZMpv}S&up0z zp$KVM4rf$Mjz-T7{- zK|n;(%to@J4JkOJSlX)^1!4M9P(cjNf)@KHdJVP(AM-}OyjHe;tvLHyIf zj3b<|`F@cX58^wy)-NSqn5|@qfYa)0t_e78y*ot=Iz!&omsBOt%|!`@?8$ZmvE@_z zPC}4-Ih?;xN~)oy&@FYJqF8HcFz)+{Pj?=DI3j!AZKLs^9XTqjb(^Mo>+E*LH#4yl zmVJBzz<~gqyugX7vkFtXPX_@$G#kV{1W#izuzT7 z3E$f;uSlT+kBe>C#YT&B` z=~Cgo$LR5MNN(t~i{~LI&~t!FKjvLn80bS)u+t2n{FcYe z@dhGM_H`JN9 zxVzG%wkPi$NMm5lh&qVbadJ1l%k0Q{4%1W8n)PqwGHO%4o=%b-?+IK#-3%Pg>+LB$ z^jLpMD_?-rBZ*p*kmY$vp&etWu7{#2E<12;u3NG{J~X&$R6}h=JqjG#pLQfdCtUw( znfZA)XER?-kPr1f<1mvIpNDIB|2w7C>9aPocv3iIb|kl~s3`vhnP$%u4LxmBG_#y3 z*VNoqkeMeNbwYo4y6Af5Sx}p+zc)##_(PXlWOz}TN_PTVvb?t6D*AT0{D>X7WaY-q zEo#(OF-N-#=&LW?+Z%%i4~c#EPGiz&-1>b6Sn{oO&WKhZ7bHEf)Qc-9dW*-C{)!-$ zoLGUU2z~_Kfbg@=^8)_olRnacAOY@+3t{2_Tx;=+Fj`KrUHn8%Da?!_G(z_MVPnIdMX6a+`FU z(h#=NkrF`3$*SUQ+@~*hA^fOKXGx`*BHx5P$E6tDC;hHL0WL>WX8kRUi&1Cuz*M0>eeNFp~I2kQx;cbPEL_D9@t^ECqh?MX+ zWi0np4`gNgc7IyRvAFn(WC}`s>JtZi-shwA?C!9U&u{fpbE(08^$z6V2?^4{2^_nY zb02yGy=+2JHH)Bb!-{FPLl(PF=6ftS8Zwh5NC%qMPrX>3q8 zkT=+sR#6``?Sv$m+GB|Vw`Gll4qw*NIg+|cd{k65ow||0h`gyw@10zent04C@pX47 z6{i7?4Z(M^&>h{B22ybv5ywAzR<0HE0hy`xmE(%2py&j&MI1&VOx920Y)+v~0yfc5 zemd89*efx3;IXZLn!?qrW}{3LNkRie1TFK0*y!uQUaNRLxa%h^_(8MwoYWz7NSx45 zSgaw60U0rrGZkd;q>O8bh1phce>4VWSVmBi2acA^YPvAwYs`3PV9aw&{d*94^OgSz6FpV}2Nfe0=34Qr zhDLvhV6`%r)xs?@p0D~j#Vb4D{PWajZLVx2ECVZ=Cb~N=eGJL@*|?NnIaAW+#~xU{T>ZI zkk(O7aU#u6h*CYh>W>8(o~c-ToswkL4O#Krz4JQce+{P>HzMCmU-iVp^wraef# z7wD8~8uKiCT?XKbbtzs4n4gYkA)#&Tc+M#rh^+QwC!P;DLnteJW1-dNd@onMxaM!Y zjtd$&5yvx|0n3zt7BTrvJxNm%iQ{=JoEH{5mNh5YsU zgJ~ke{lTU9ptJkvk6pk5pW8<$nZlYgxX+}8^a_#Wqc_F87(1Le-6(T&!J*o z=-`NmiK6XIQjTh0^~{=Hdx@hzSZB(|$XE>C^San|Y%to(c4i@PZ@G|owkgs2dIs`D zp(q(&0_XHs29{GT=3#Ua))fk;`gbj&gFT9n7HtTRZRq!Enkgw44ZP53U71S{-d6Fb zPf4BNab;haPE@FRIf}UA*=kL~cPLW!(%*pt7`AIY1qA-_6I+N%I^70j&%ilqD&R2D zmo9oz2}OQqG@h{-^gKGCFQk4v`O77f)j3t?-?Sug7`-Y!pr7)Mp%19R0&e6^@R95L zjY{YO#yO4I$PGVo;?z8&mA_}L`y~8IF|xpE(j{+WmFljzMXNaz>7hlzNV=7OD=J-Y z0#DNGdzedIk15@QyfB&tza@J86qtoBdt!ELzH!kOjmpg5>&~*({zph*o=6@(Iq-bpj znrPEykZfV8c=367eBOw~EbW2+HQlv(aSV?O9UwLak{p)^8zcZ6QQ5bgEWpr{viqG# z3!rX_U{jVIl#SY*hK~RR3N&F9(ua;BGfVG&!X}`nCzm-_tjDG;}98N@<+S=h4 z;8v3KQSYWXg|!x$mo$*W(VL!8;mzdar$=5!Oj(kGuxYv7i7~0~t?j?wy`A9``4pa< zeA?l4m?ApJEJWJ5$js;NE$SPw0~o2QH?`JD2FYV_h=AF_oIpE0*n-&@VHeJLV$ATE zA=a)m4XwOeqTpV4(u{oMJr(#TpKHPyhg5-MHDKo10Tw$4C*VQgVSe$~>DWRcz?T}4 zPN17Fr^%nU&-VfgMWr$E?61sM11V1af549MUy=!sJokS*@mGX7T1ppWX(~oa9qBQI~Vi(3fq}%J?jsp;EI;MHZKO zYLCRS>zsMb8QXb=8V57UnR_KJ58vr~2+aNJzkqu~5`GXf0YQmgi1!wT9E(+^)gG(} z|H=#T-%$R)aLWJhL-`;Pb>`U)c>L=BoL2cKpkNJH|& z-mQB-zOMerObz?E#Avjd_@6>ne?RY*{iA?fMpyR3SocNog6vlZg_M=T zWL6;xGNi$O!nB!N&zmY3@|aFx0oOhO0C8oO(*9BkF3QDn%}@dA4AaMpqWNRf^gg&h z$Mo+dd4jgom)aVo-_Q<-=c38$fbd`fLk_t2#qbavu`H|ck7Sig>jIfj;Znj(cLf1r z6a5K;gT8%m2k5{%KT7fcQVMj~M?!%;0qA&8J@7aA>fZ4q-8dv5pu*#CR> z5f-M17#i%}PZ+jwZiK>r4Pb};K`=If0Z!p1YkzIJ`fqb8sSp(YEOA#0*=`V%>M&S`CMFE4OpjAr)XIU6vihaCN z{ze%2ufizE!ha3ZG9Z+;G#XG#qk(6ADSW1#S+f9ZNRojXKsbRZT+9;2fT8oZ!b$Y! zn@Z~f7$OK(m+_?4tS%3*##6d4a6f7Lnu3uk2oB7PI`}17bs(D-3S?QYa#^Es^@Pbhx6~74mJF+h%jL`-GPPbR z#*}>~837HKRT*J41cSO!kmXsXL74}~CF^$yvh4gvF>`*wyHr@C;G!2CXac-iOVa~T z57;g>SqNT|_MfWQb_RpB&C;LiSMAK#)wOfHJf1mh5GBBS$21pf;4vDR${_nM{i=Ss zqvfEZz`0h>2BxZ!FbL7IBf(-gA$I*dbHU)*^*6PEE)}yH-NEb00RBiMYmgYM6!!j6s7DF&;o6HSt0Sq;(?AB(inZ-JH16X`nT0&` zpD+=yj4Y`};lBX?YatFi&-0jz1{7k$V3_T*Ml`dj$4pxsEFloc_J5k<6SCjIOM=Sy z-34H`M<~c@6H6_y-Y^F=Q>~qNQkE}EfhFTavPxA2AS)dXX1A6^nccb#UbdAE`|m=g zBu4|LtdS%?Pdl^HEev?mieSxjfYwucm42CU=eQ`-;07hQUNZU*RavD*C3pha^UqSS zgyC*s@I=DO08iwvRfdzYXn&~6dXKi?^(q;y24*3!%p!Y=p17%WxzOj2LjGDc(5VDA z#{4}nN8ya4iPR%fkFr2RX*YkuiilIJmZHElBf*!%xoAqLRX<@X&%;@=4qo$-7UQ3kQA!0M@!%v^sVyawPEyMLeW^ZEY%dtR?+qIqA}T+2DgxhjR8+uS z@E@=<#o(tC=z19d^!3F71^@u40XZsafD?Q=0{*&2(*RW9yDIpr1^&v($SJDI%BjjK z3d+f-%BZNy$bh}OF9-mk`Z1OcY*A7Fcy#0<;65PwzkcmB0DBpLqd*pf>JUJ^mkP3%YNrK& zfpF4-RNE!o&leRn1caBKfsu(B98k3fpr(RAsA(Xyv@|r}=uq%;fMzc(`$5^`bQ~rZ z=nq}vl#95R%^-B5tdZ+n4^~+IqR$ORCT^a6`wtvGA|fg#uAr!-d`v}E`=pMp-YNal zre@|AmR8m_PM4f7yIgT~^S$op9}pN6eDhXhRP^mTF-ghyQ&Q6&JWPL*^ECHaUVg#z z@`}o;>YA6YUN<$jw6?W(ynWZ(*FP{gG(0joH9hnB%k13z!dKkd`o=f>CShxP7cVOC z*nYi!Aod4ddqKRYX=orc^t*UbQ3rs(ki9gt2W9ElkDJh6xW;ivE`ovc#J%jYMn)m| zb6Bp6K0Qp_!U|J|al5E}$LzmD?8g5UW`7~}H(sLv3xohwmTF;r=H%=9UGFh6 z5V+XhISsn0Z^d3qJHRsK{*y^Ex;Nv&f!EPdUP}r)K((DZ70tB{W0eUAxhKwVx=b$A z?Mq|k=Yp3nlg<@Z86w#l%WN^ksV-^ELytf(sobsqJ`!M z$|Tr_9wmznGi_;B)@=_YRv>G(P4Hg$9pJPiEh636sK^Lxp-($hAgi`b9911?0##RA zQEs+k2jj+`r^>BtJ-oxDX?(4FEs%fl@s);`%n7m`h1}(KHc>>4=GHf-Wlvc8WIp!} z5*Xk~9c%X5zkRNPdN%hN^D#!BCgam7&O&$PPH8YaudbdpoAJDs{HkdOkk^(d$GmJm zd;gGJK2;Qb6}RI_69o26*<Om6O2z zrH06Q+;;!nM#+)2oPaj@N*B&HV*BE`u}=n``gf{7-|QC9)9wm(JgqR+n_K@@v!{Pa z{hVUt=<>LS%%>A^*`G5}nc^1;C*!8So(=K;M#)>xe~Ny6H#_OF$1Se$k23nO?Y*S= zei|a}2oUR98uYPwnIg2#sgcrevR}C7p%cK~%D}fV`;0PJ|8ccaY1NKpqunm}+L>hI z+N2|Q=6rcsU%W{aTqndRQiFuGO+0vc?eLn_)TLqnVgA z-TTHlrGQ@V*#T5_FZ-rmZ2!~^aX(8uF`z(1YT}!w8GLIHx6NDbae0%vJ`vYS;vK2a&Z6(5_nY>^OibI0zKW@xsS){bG0y6F z^8ItqgZ+SeTAXt=>7OF5vD{;qgA~|NuHS8gNiLUB0gqia3RP1JLJD5GFN|JhvEqgl zv;~LK9;ee^Yq@OLzLM|?pGAMZ;qECKdB!IfQoM7K)X?CF`h{(?A@K#V1gp^_XO(0G z6N}xB5c3uctE7y%Y*%4Lc70zeV&4-zY7OtLd0c#{Ntv87f5K(x=n5<-ymo-zaq-CJxc8(q+>%99rNHa|3Eal`?TD<&}Yn zozVfpShkRvOz7#Hv%{hJ;E$G4wZh^D0bX;1WpRT$Q30oF4pYq~056K7N8_VMD{p<` zANqoP|4{G2eA+o|H*o^?cn26;L`FK>cR5M*C%Rt3Y8iFzzhCCi{>JqCiUl8YG7~0! zj_=D)4!Vo%;sB4k--lB;=!#jWuYM`<+>++NL!EIZcjizFM!yi(qgPWZgiWe@n@MB| zcbk57d0*#i0*`Wy+~MyoB>P|6^x>5Z#%xgPe5s&SN1K;*!mD!iUAYGR_Sw7pBs@LX zOl`I-l-bUY6z>fg=UA5K?E8GhK<~>+$H9|lN**f*h>vfF(L*obb3xdsXRD;*w(s{Y zc<^ZQKr~SeV((CD@ki>6V%C{ggjXS*b8e3r40Lb0Hy}7*J1a`(W6l(_G~QZh`Zfa zF+OYeac*biySo3ScD}z;Q$whCUo@Z&h0xN_?rPCp^-4!eOHW5bL&pee+T9l|9U~JX z1JiEfySfJ_@6G~$7{FQIhy1Vp`=RdpsCyt(pr-r()&2kH)jdVI&YFyRM#yU!4NZ$e z?4_+#jejq;A4^X5Fuxbxc;!JR1AXSehMCMlyQzS`@ATTFiY7l6PT?4Y>;PBJ;bqUL z45P1BYpAPWe0KmJa`XXLkiEqiF+Lo=J532_brQaR;IofgVBDs2u64^zw15Bx1 z*a6x^cRMfO$GoEHIC&})P@uR+=j6eN|Ch*wE?$@ z9+QHD14Sqtso=oGLhVxDQlfJnnK=xE@#ikzuK2V0!>(5D0NGv*D8gAQBrZm?=*QN- zuc$YWJ*+YuTHZ&AL{lTDRK6p)U8zQ|2CcS1cGqBxNFtJOLMzPTJJOv-+uS5Z5bQ7C zk^b5Z(oA#2bq6>x83D&WF5LlUIR6ujWjf<|NLIog4}LAQ&su_uDCUH_y| z!a8U;&Rb()KhFEdG5(i*WfmdoJ3vPnMjm9}-;M$~DhaM>xx1$S->jj7A~R7y&TsPk z&VWBy<4OfcVuuDK!EpF**5F2NND!bPv(sMFJW9*7$GC(X&fpbT}Hu_7@Ab5OqLi6#zhp{C|gN_t2dhV1%>3L$phD z5O&6~-yqs0I`B)#zB4PAr{sE9lqL)W^EVcT;U7tFb8Eu>$=8)5;Q3&QKSk;%md`rD zHKQkg6O>jSrIX)j3~g@yn`I1J)4W&$X~>A*w&7Ubr5g$UCxy#lAO&}ZKrmC-!6c%lXy`0JBqM7 zAX&fP6+aMLRcfY0I{b41s4BQu5e5n#9+c9Z^IeG5iO_AXI`Eip4g7t0=9%s4ftFKS zJHRWqzYhxDRSxcNI<-mRQ2L9>)|b%pW`t01{)fNkt1k+HLRZoZg6i|zvPN?4AWMP6 z2!?<0M62~xs=1~~XcxKD;@6^O6n_-RJSE`Pq$7Wc@`X9@y4eu_PVUQpLnWGKq@gbH z1N}#T@k;Fy90Y5Z*1zqqJdErv_%X8ZuaRE6L^b_R)V}~IU6<4|Vj{s|n^L=gy2Wu< zvt5>c>?(;&Q?npXeW&OPP#nZgJeucwuRbRIJ4N&HW<+R4%;B=t zDX+g!@6BM)jQH5Peib=y@tt_zp)3mfeo=oc<4a^hz~M%$R!A$+?`+QVo%99`aDt)h zBfGeKOUm!G%%w!K9U6cFS-TQZt9R=#Ax#3N0UbrRYOOYC=bxgN&W#%ph4T^x= z^nG`bhP_Oh1)w4fN`-HT|J()_gEW7}x762@(_5k#FaB<^NdO3OEf$K=0V(L;8gS5& zf#o0#pUb@u&X&wH#W8V@T$(g}gU3MMr;Nfi7Xp{*CyKN?tf>VyQ<~BowpA9h5e%lE zz7$%a{Xav`<}K*SQ`;DZp98X}!cf1EZ9yz7YvfDH{Hy{d|u_;jgFNoDTsZn_nXQrCP3 zEvB#!Qh+RFby{9K&qJ%w?}B?^q^IBsBOtO(Tx;EW*)Zch{zF%)ciw2Ya81RQr7iwQ4LXYU@Z>-^$VFZrU!C9}MP2ebUP=^nC_g;q}sr#zU_ z_TS9UZ15KZV?Lt%(Wg6TL2~ZH>B&8qjXxas&0&L10yYV8gc4kY%RDO3x;0|s^* z?ExD#ZGr8*>h&=tWM-LXY7nJ-^E$D`r`$7gb#To}$d9R4=W*Oi8V>!pr5Y|xDC}A2 zNbQshi8BX-T++uawuh+^`Y`DI^RM~8B;HZqo8Opg8~bQ}R7cpz%V&uD)KA|ckd!H!Y8!&LoOHd zMy!2v_XfEQ@&udGeyd1bKj%~6sxD6YHi9piuK()w(6dsS_*p)_7d+>hukjf@=I>(3 ziSw8fgnX-@FbxoSDIa!#a?dm(&(|HGA~dgsp;8)#fID!0WhW$>8xUXR-pjc(foo;a zdfr*{Ii9M`Tdb&obgig3TrDo@!aSW3MowjQsOFh#1Q8Tj8c;>vaHo8LV~x8QNVX2_ z2!BF5wq{x{qVn00-+po@kdl;et<6WL>&d64ge?5-arx{35;AZ1n-{z*rf-4M zgzXFKaNvf!8Ol#-7U87vH?c#F86l>nJ?gT>$R_zbgXgie4-eiEMpyFO5WT>z@Je*8 ze&DRivGzq4=1Ht^;>Z{#UHYJ1pwBbi$YQ+m zpSpJd2q_*2-T{0!vY5Az+$4bE2>m!o#vnPeA zm9Jl|g>@g@Jk(am$5!lY!P1ei_}NHyGn`aKKw5GDj6oTYAQcbG5%Zkv33 z(4)x9sV?HE3Hym2J6-CIxWlI1j&mi)Hu5jN8VH{r%HJM3CE!;KDsub9U5hR2FrcQr z1KiCmAu;a&#}%mNG0wzL3|+8GxSSdWL*bIQp<0I1XhH&qW(KQXxMuEq)uRs2c1@Ko za1W-`D5P#*zH=oDrTP`Y|Mc!DW5yYcLPj;Jjq{01b3|eH1GmDUeQ1w2s&KweACKPY z)y5&2`8A_T652D!yKHqI4-0j*%DxvaCPi8})V{EHsQm~kXPlY|?(9vMXRZ^Rm3@A^ z3#rS86ShBYV~)G~x*T#oDs=B%wHa=5_JhaSH=B?-?FM6iznLoyUsc)0%O#3F&O-(G zk(d)t*_xZqOV{7q0haoyhP$b>XaP>D#1atiBdfc3XEVL@q)*R`ULYH~(dS-)tua<@ z!^o`9MM@8R_SUD#->-hjX<>3W7=wQiKKQanu~6ek=lQx`KLZc;FS9o$whjE(jylH* zIK~fiT{c{-?TfM0GRP-{IP_MMg)9aXG@Q=%R#8bI4hFYHRHua#)iMG@_uLc7UEcCZx4{~6Zt?WS7%^Ert`@8xf09WOVNiQ zT&z4NwDOH45$xF`NXbEBMr#ARKt+qm-3%7KmUtUSQY}l=1znK#Mp{31ie)v<9fh#W zunuWJN;L~t+-R0q!zBe{(RWB?neyj3zg(jKI!WTF(IULc-T@j}3R zSbj4trtViVx*$OPI_@q1!1}uh^B!%MjtPCbGpD0u<0_6oia+MPrXNLDI)tm6&Y%gx zM$54{2)<|sh;qbDE=yw)Ve=NFhC?@&u8(+y3D}-@u+dS9*38Zud&*+soN-3BOD54L z>f$@#OLPC`1DGtO?_6Gs13?hI6pcfk$GSw&w*=N7ognzH+xOPVU&#CPA#ZH-tE@Ix z|6ticKZj2@mR~&xe{Udu^LfFlj4EgwieBg??Ou78z$?$2*nsbiVB;;WdI^wM|-V!kyQ`sw;VFGqe~*#dD== zJ=Z-kqd0DOg?<%E;=Ql~94sM-8j+K3f-+=ew{M*N8w4wjH$O(s-vKUDlwkxT1iZ}~ z{#giWvuMsE2&>Ix?ngTZqA~T8RhA@0r6LT!NRzV74sd%}UAizZsa3i%Ub*E3E>`W) zOJ_RvGL+)|cT9{lp=`afDe1M4W;Eu-Boo?oGGaoQoK}e(1r>6Wg8;w0`G98*0fqUX z`mwEZ=5Wz_e3BmP^ssHy!P*1{^%pM#obQ&WGM%rCb8>_`!Y_Hyw>wlOE^|$zqv4fv zOK*vyl=txR$=j3z6XStK_@Gz48?_n1Eyuk$bY8Tx_@9^^n`IB9%#YSz;&r;4AN-}@ zsO5D#Ww;rr?DhOz`SVkkYx^Yg z*eb>gg9KR<8aSEIY7*{zIz0vWnq?GG%YpKCvJ|<5nqK85(UBiqMS3L0gu(h1&@rm; zI}~2m&VsM6k0+SNP_{>p9ZF)pSIZte-(Cbm(V#Z|?b8orWT>h9oqmq|Z zssHIOvFS@s!b!cq+tmL-TmHXW+~3XezYK9G7T(c!wjqT3R2!p7!ddwQFv!A|liYtU zuOGUQNMUUy*b)y1wl|}ycv_)6q`laoM6`!=^n`q$p95=PqFtZiAS!#rVN}QUS!ntR zqQ#XJ$GX%r&pTe-xp(J$^PFtadK%;#svV9spS(q307Wi2P@2NnSx7+QZw-ctx#7DH z;t&VwN{5?+u3g@|OJ768!$sw4@ z=w-OaDhKIg1-3OYK_ULI2d~w6IqTFfRbm6AO6#lHf`aV&vq2{L68mL0rX1={;^9d< zz@snYl^Mgt+EYRRZipWnM6V$qvu#uwmw0Rl`B~a;2LQdTZuZK=CP*cGiwP8$2J{BU zDd@?oU&0$y)bF0+3xN<^;-;VEltVW3LCJ%S+BU!|6lV(qaIh(t8x*F%cB68fUAo^a znzd@Mvefp`qd+cu#UN+qLodT+O@(xax9C*34E-SMqjV=z_V?s!jg8Az-USYtQOhQs z!fdE4pO;ISafIvDONNbXr@kS|cM{>QlNE2!O{>6SYN=9kzCoeG1cS$+`UEGu{?SG` z?O9t+YUNRe3yEhv4Yf$)v>y%fwNv)-aS5(5Ea~xu3|;kyw6{AD_B^A%Fm*I-5>z>O zH()8ESqyTGW{>RSnam8MGZSELUPED}t1zb&xRFUu_qh9!wjhjDm z)HHHSaQ(CYsm;enXZOvPM_N-j-xiGTf@Pf4BBzk!SQAO|UUzu#Z#B7LWh3>+rzV$k zWNIk`>j|q%&Cu18``Nc11?~X03F=?huI=&ELM-k8w9qm_5l`!Rw#`FtuaQd|_iSFetd3gX6^;%Yp6+8$v91UX|w-No?lSMyOb^RBhCMIpnB7;NUaPB@F3>)8yO*^#NDWbApAqNOz^KP! zq)D8WA^LpIvP{7Z}p&{VXkKG>DaE z&$zbY8ckV}d|y^YucD!HtGCh9Q60Xw3hrF7)(_7=kUO>rKm7jK))r%NX!(R$>WR3*I&Dr%6N zAq(hu`ak5Pid?!%|2eN^a^DC-3%3Kr*16{eiZr313S?8`B>d#@ZoxoFh5MIj9c$t{ z_rz9RTUSP82Cn4MI%>WGukE0)Nr%0=1}lvJ5&?}#gt`i-cPp~08uGT-^YtH=wOtGj zNl`nKB^#sl?gh-<$rW=$$7i}=q63>!q|h&o0dvkrpH1kj5E{Y%rkyPjr|)^ zYAuuOye8PZ$ZzWMhuWTXHXiOcDIxk|=7v9H=?#>^j3lZPVEDH<<>fR?;&4EVEJ7bwlvRpb9xR!e2@x65 z{P6j$S5Dr@9-G2Sr4{SWl|8qZ1vZ1*znRkjcIScLFb<3f`XnBkXC#+A`=U~4wdZ=^Z=o={#H}!@*B(-$7 zl@Cq7o8AA!`Hqkr*Qb-$NVVllr&S-qG96&`M-Uo>?3oZl+bNeuX;u;q_He>OkEgEN zhvP{@n{0P)K8hudcn?`7DJ0mN@SXOie#VpVK(`?<(hBqq0pnd4Q9~7#3mEMBia*-_ z;ceq<*nKLge+~Mrn?k>J;7+Ze#;qjaV09@U-=)N?m0&#lbYOsAKCB9i5bA>dhqwtj zR{9b-K1>L4pa*dcOFxZnAzsKQBuv^7xwEGp`kj(en3Q*FV?SkaD(eyQaU{=s$9=^T zP49(PuYksA*|@0=IU|Rhhv3I}xJ;KUy(tJA+)St0oPa$tt}GWg`mzUiP@4An%k)$4 z$k`8{_(kG`f^4~Z>xlBETV^21Cy>Mdj_Wb`gQ*Ox945 zVO_n)i|93;*E>Ksm?vVi(VL<+giuZlqOj6rnqElH@Lj%$Bst_^`jQK+d^M0&ei8iC zz)BIACxzeM0iYX3{0O$2O|O+Bze%%v@RfVf)TneM+vBMAn0-peJJM6{;Gx5(ZNifr zkc}#pvFp>ZP$;FpUdB8i3C=WWc){K6{cwxiWJ8;mSO6EDx*Dy$-jM{0yD&HcLHIHa zO|(~xZb^TZ_Jm-oRaz0Nho#(nc4W*Ddgj(ei9lktTuTj3UKZm4DbLV2N)Li_n{qLE zq9G6qYHMmvs^LI`+|6D%IXztM03hmP;LViZf1B3qb9y&RD3Wqq8Ht6F8O}vvf?j_k zLBADgZNx(;$Cc39prcfE5)X08)cUHcQAR=9S!i9gb59?iO}mgi?)LieHrI;^BX^g> z%?jK}or$tJx?4_{MI)mTOlhaL!)t?Q^e@z?Y-do9SY@}A{Z<6LB#^TZ9 zW}VSt&-N8j4LNG`IxKq2^nYg@#Pq@$sZQ;h>0pGH*6n+cE_LR+y-sT|ipx|ZTvX&T?|1BzE^{x4#7KQ8u!sqLqv97YOR8WP31*cG2LKV?!s%G(#k%CMJc68HPTDRwWyiKW8a#Jje>hq1T5%orkK2< zU_O&2ywz*Zz2XUu>|fkub~L75s9|-TVSm+K`y5 zyTXcpIGbiA)fYYK^}YS6T{Bwz(ovo>H>R%$hu$!`8#)iE9X+n1!XLkTAyMx+b*#+| zjMszQyOI;r`eJh>Rr`iUq46&aG9^~j+8LIMMK`Ne-t> z`x=k zo?DT4JuxkpIVVd-fo6p!4{CE^@l?t6a7q_?2S71*5jQqofZoaK4lviWP9bY>JHkdb zcYyV&pdBDAGgbz=1m;S&uys2C+Q^b-h3dCuYyqUpBv|PdIY-_Omi+CL`BHj3m<%Kl z?2(gsPa6KQ;Q!T}FQsUDin=s>wXerfmhJ3wdrcXX&h$88t6 z-Ig1O+#@7NJ!O!3`5TIIS&f}StA`}jZ%Bi5!PI# zkQKQdMf+A0NiWYQ5-&|+u2g^smb4r2qKO-zEhxI%{I3}7e*`MEi3B73U__kR1`r-z+>|@lQhLoJGUe zW`1%$4^e4%3onrCz%71bfC}J%$Ce;7FKCoq1<4>a*7{=P^H^gLOr0{n0~lYafaopP zANDkt2J18IUy=QLgMrYB7Eq=>u7hSAoOr+zAbQ@tphp$Z3~KwVb^w_x71RzjgfvRf1QG+^ z0i1R(g@117ZVT|PvX=^ZtR)b_<0x7tj`B|{`oA~{4+iwgu3U7Jq(M5q*%jMKP_*t8 z0X{ZvCaQH7X=TUM_wJ=+4O%$5Gk0-dsT~~I@F4kmE<@^vrW04rgRCSCZU{2Tn7T3i z2FOuVpu1ZRel9TAl2j;Mh%Eg!Mg{8tF-&X5TQ)m%k1ro>B3HANMWW}jzUAkmB#!c; zP-DmmQejJ3!M5^r$<_gqA?TDdqsV;UHu`y1;__ZaTGG7GG9LjY>+-OXC-+-2`8 zrR4^mG;mr`#{wpfOp;VO;i6#I_k>j`dv7`Lq=PzEkjej#F}vzclBV(>v%aqwp8A~G zm}&6)B*}2mU-N%H?uP81bTD4|qkDIU|9Qm!<;1)n7>QYfI79jhwoNY4RPH{5`14eD zZ7~cZhrj^IhOE_)!F@2GVK($}WKY=Lz!HjXBFJXLC+2nlJ&lm-@LP79D%&rwYMF-{ z?=E9ZQ~3{r1=N85W%sXP=FQ$r{eRgQplR_RGK7D2|JnYTD*SJ{rCm{Ld%?<%V$k)S zzgSj+O=InPm%h~t?S*oKsh^=~B#{A(S^~A@zmf9K?myc<7x}NcX_w_GCzN2{Cg5Zi3q=b1rQPGb51wufMHkHh zo~|x%W`CV7=t-qG{@V}x5ANBY-M`v)%0Q9U_Ym{{Y(f4>!av*p!|ZG~suTU+ zMFL}Rwt+MJ=WcJFAv<)NDYfmO?H|*IZaR~=d%lUiFm7Z=&$I)P!45e;^y74AnLq)4 zdG)x|-(KiXuk#lgfB2bycK>KwvNlK<|I;x3FVXlfhcN-NNpx~*xOAYuPa$5<^0D>> zcYGAT?LH$^?10{VI5+w!+1MxdRHfLm!~^*G4Yji ztZjNjhq%bF7L*RDo&L0W`2z7&o=a|gSf1~chr9Nmx^khzm0-%Fkeo&C4_`jn+8wkO z^1?@a4)LS$VMQum-l7vZ`eMN{_T19Re4mF^v!~CEEM3g)7T5hw>F+#z-~f_zOJN7t zCM1HjS6uPPTMuFPQ`U1~PwT~ZfO}wy4ZjBrQ}lG%4?w4QG~SEgV=e%6s$u4vP;3{X$+^`E~n&qgGEOv-Lx{_Piwblx6oi$G7Evc zcMW2H3E{6B>U(73Cr|tz?zi1xCftqX!1o%wN_VX*CI5GI)wi?tyXxh zROrDMU6#n3g<@*qn3#>yeWbHc4uidsh>B-@=xpzd#BvG;Wisq&>A;K1)mUx|fkW7( zBuTFVTiY#VrL1t}eOgwZ!L*s#B_B2|`t9{_&6NF70_cGX{g6{{C-A2yT+Agcsuhq| zVcaAoLKSy9g{dOiVra?Ofc%P~9kti=0o5o=Y{$U_*^2N0*^;SQ7^c+-8whgDzTL(Mcy~CY)skf`>C-os)hE4^nYvb4z8c^TtsnFqYmEgXXep4|f-7oM<2m_V3h*KSc&x>4L` zLV;UqjgsmaXMO5O`+MK&4b zBh2giO1>%fIT6n;^V8pGf`3)T(CDQ%4Dj^%IGe%8b5Q2Lv8YUGc6ZU?x z0@>^^qTAOTfAr3DCo6ZC!NAi27SW4QgYE$w`qB^Q0BYyz63x0w;jQqk5WEG!c{~-59UOj9~E< z5r2IMj>%W0zfngE;u}Q~As|LCt-iRj;Kj8P^SWu|%=**4oo|?gV{U$FV2kg|8p??H zjN(>T!<`H(vj+8OHict})RVwd%eZ)HIoViJo zkE(f7q5d}260$09X%bsuMi`hfihv?HIo zo;7$JqLWa6{=!7|#ED2jHI0*QDke1#U_jU)njM340BwIRf_O6+`b0%-!=tLmre`a? zmcB*igfRqiU`kqzMw`?+ z;HBysGg-+t6Rr`Qop@0f=NNSXa)0^g!*Ohwq2Gz;D?@ zhnDL2^CbdL2A*X;FQ+yybi4f;US+dQIJBd+*+b;UX)+S$~rC(5_9$}WkP925cWnO)w}ip3B0)gL4% zeb|r&SpiuQ5TVKDruxKaYVtrJPjk=e>k683aW@k+Zt4A>ItWM2N3=da$TnG*(RhSU z>UP5J=4=V4KzAEC@(AxhNG3|zT{+YrSkKSsXXte%V_HHXtwwEdb~JE&{pGVmTLu`? zlU(KZ^ii!?%Vq&hax(e?Sy{guq4FfKuhn6Xq9Gg6F45?geJ98H%F{*j$fgmph+|=!_g6?sJdEn@tn^H6nCmOqq zbCkK5H_gP|yIFax-!Wvf89CC0K{mohiTH$G#T_7eo2NzkmJ*D0tj)$g?S-{Y7~X#g z_bQ$x#`jR7lET&1(QCJVZn107DYLX5FDUzxlyFCM|1M6 zTm4v4SIQKQ#)}{0IAQhdiwfV&YI;rFY&iti@~zEkCLu`JZ#+|mQ3S$I8$2`{&S+LJ zs=RB^ifg47^M+ewae3eO>Qt=1adle{Z$=QwMFbOSoG~AeCMYB95_i&9ONxPbr-Eol zy`A%Is@PMHGaEKb`sxHR>2}A{CAq~$_bTNYJs^JqZygdx1^&c9QRJJUriF7Z5c&83 z<8`5n^j*;?&!up0^E3@wBvvfmYlX^}$7j}g3Br|HS~dfw6Y zBSo&y>;$8}%%vgjcCz^D3V(*mNMO=} z@HlBuQXDwWu~)5T0|@Ap{pbZae$*7aN-YFMNP-j|&}%dSBN1Q{183G>lu!R>AGw^W z6N6;F*_M*{;`^Whvj*huAdTy}LX_8?VDiHh9}X@x!38b_G99{icc~C9DB*aW#15c! zZwEkv-`Skb$A^nz;gQF?@WwFw1h{8~$ubZ?I;goj&xLXZ%y+heJ@6?8Y}vvydM>k{5#n8w!>j{31al!sc%I$(0`M6$3RCp@Qpoi%+uYket0_E2tJa6l|R#eR4R<~ ztK7o9_RnKQb(wZ}4u<{?CuSGfm%Qj8;U3Q|8BHIt&7-`TJj7$9FmhU*9##*d+?)vB zCwyqS`@wSrv;*#XC%fQ*koLKEOOsc0L*KpV4Z5YIoGT*i7UoPD zMlpbD=`E`4@*VJ&ULz;hLlF*yoI<3FyI(EI31&?o^80%()cM1$6IWT3<}eX9pO z#^J^#Lcb!bL#t~1{hE6V7S*fI&VKQDa>#o25KQXOiTx8g!1`%(57DY&XeVq8O<^2& zCLScI5SVeDQzh+hc=2%r9vsu4Z9Gp4_crIKLfNV3Dn;KX=gA19GZZaC>ZN5h`AU`D06Hk7%!RI}@qPhonxQ`jeYWE@V_NK=bp}>_% zcR_Omr!!x|t+u?SF|Du+WaAm0rtJU{kNcEg*Byj57+|F#s5YO+>MXD1)Db!j<4Ru$v7iHj=^KMkl8bjQ;9eP5+UrIvzat0$B=M;@0Jw?uEZvaqrHHCojGf zs1PCTiEY@XZ;y2ti3VLgtg&>oCOcuVxYZX4W~FTjN?+F;_AHd0w0229evQxHx%v!^ z?bD7Z%X1i+7xOcosC?KB_+A9G7$HlDm??>xIIQH-qA4)wbzMWN@yPt>>}Wugk>p+G zBZM*5h{tn$Lxm@*y7@e=>`Gw(iY=R+5Q$>ClrXA$X8W=9nv>Q6H2X@fYDQ${>>AAx zbN+Ix#04z@51ob+atuqyDdr}S2~B}do$%=ME-*>cI;VLpFLGwtqgqQyo8N7VF^d6@ zFQF z(6>ifKfP98n2DEr_p$qFdf{lD^tFp^Q;@$+ht-Jgh`xEa8r?|1ErlDenR`k9N<`+@6fWsSU1?kMO@avvnI zAL#}I?87D*iDpOQXOsy3^+M5B?m}MdU!|zWUIebiO*lM!WgAZr&stF^xUl7lXxNgN zM#WrJ_rj@7>&0KsUlr{2%Lp;mFUJyXD@A{>ChvfL`S09ES<5HXt$wJ(DZb00- zP%nwq8Hy@Gx+ZcEL_R(aOd7I^K2!NxM&a-wB@fS~dY@C;d*)oJe3QdHcMt{~3#uuoThdD&Q%Q#W#WROO zg3cuC#rj`QI8!`R%O`MZw&2zm*DSc=Sv{ILT$hRpB}3l6=#?WRxnSE|JS{#v^(pla z)0D%f@4g{_TDYcQV8s+N_BxU`P{b@*AIEzCQTAQn9VU*;4=y3bpUB5XD9P=3Szc{^ zC;qBX<@Td<1@A)1phZM$NzPGN6moZ-Lf_i+PKcofK9Ux7s$-s@Y^&{(Y3h|5HW0t9 zJC~r@nS^r>$$8?pm68}&XMpQ$x0fEO^4d#CHDI;1f0I#M?2@h|B~)WK6>h8s$U1b5 zWV%SUvoH3i)ot@td;%Sj$g~nLbCQ|>Urq)ML-V3xLbEGkkTYF+VA&6v@I0&)0R0;41DmAn`5j<$0qk;1 z(t=^j6<4=5dX0LIfQDWHQHF!UtqUeYG=q(|K{pXJBHzPCRdEWT4ZL|T=Zu7-z(v4>*G4atT;aQGnl3eX6YiBDyHXRu%p7V5hye$o{|R7- z43uECy-C`-0s^xP0;BPOo+KF>LP1m_iTKIgjcFZjZ{v|Oou^1bUKH`f%aFvD_&{W5 zYFeU^SOO9^qgMgBKd6|YZClG@x#oOh%FJ^#XWlJ`mn!Y2@%baf;-VQIGPKm}j(rAJ z!Z*LHS0Y*A5*yG_oxTb~_0m{!W#88WG;h6x#_Y82>IpxMy;Vbhadq@V<;|O>aq-ji z8}eYLl~#uQ814kt@;c2xZ-ude)k~E|Bu+j2V_fdj*BWWJ>ug<%Y^(!M_w;ltn7BD- z$`lI8o*H>yPKA=9(|Z)1?GNU}mC%@U2Y$4((eR=c_&qfXgf5O26}tnteULc&$dF)* z@$V_QyyyJ8xWod(pwHwCV8Ybv0j$%y-s0%9;%9sM$+yX=V9Kc&S>8($CZ~{GacTJ1 z1T;2n+A`weU>>e3`~^bVH^2*LYFum0_&RfTf;*f$)j>u3>W1JJtqAznE@D3;I5` zFket5|bzGr~Qh3*rblfxx0hSwdRw zqJRL_>xMe`7iSg%($Ck8I);?p9vv0SxVmzF^BsT823_u#UQ_$oTdUM}3kopK* z;MLrS=B2O_npJvmeJP*?*DYv^#po{bPquE6Ov9Jn7K zAl>`%9@2xHl*Kpg>S&b<5%fsV_tu{g;ku4>coP7bpNyHTnOk}|ok);^FAWiGKxyR; z8zX95IY1j9RWJ=(;y2NJD{eJ;a%L%t_EqxSt2pOFjpLbmiWz)d$>7&La_||r=;*M6 zlwM?|bPJTh4L(X?A42#RFRGrOypJV6@13T&UP$h|XP)MxsLUkmlubj+T%meY4}`ve#C}Anyc580~?j!p~x6{;kj2ARm1kbaDEBX zv@<;Xp=DFB#tG0iP@87i*}{bY@K$UvR!On&waW>(h+w7gC)%{wko#>FHehCgHz92~qV zgARm_c+EtetF3>Tk9SltibP0rbQC#XY`9LN5Wk%8G{jt23DT)Jp|^=S+47PQ-Xh`K7K2t{Jj?Q&+eaXF7Hp&RX@|O|E~4=Ew%e+W!RtX zpIMCmw{Gzq-f(kK2gkESS`lUlQ}}MqCko6%|HvfY5GggjbiNPy`EVX`s0F#br}(O6 z!?Bex6U+C!sHYQP2dEU-6LPO=09w?J-i!n+S>Z5u1P!nSw~+k1u6tI?=E>Qw67_3BvV zICZW7!7ZnOjaN%g!{D{z#i0qR7wcFGPP39!iO}`M+_vU2Idf>0D~M&-f&siRH%s)7zEDL%qHKL6JRMgiIv~ zp_{cVquVVcBt;RU>=aTMnPw~@TN5hTD@1nL%Dzv?60((Lj411jWqdMY`khhT`@P-! z`~6{KF;~fInQ~X=bZCA@Am^B2rHk1%({WmH(0@405jNgX|TZm`bXNcg2!rz zQ<|3FV3J4>0-BQqC!I8l>Iy`of?v|cHTWI>bcRv=nsWV-jQjQV&*#78ojF1N?|Jtn zhEnPLmC@GVAeed;Haupe(SKcuU!VWE1i;n&P>WZ88{9R=hP_2sbVTNLB!&pMtrx$L z_NV3QikIiIygYSy_lk;A(tIns=W8b^u~wDtRmBkGP8ysvFwxa$EaFl$W0CUk87kBW z@ahV~tcJz>?!-69z0A=b>}0Z^7LRnOQEbu{ZF2C{LUZr5PJcFD;c}}=E&Lq$UDNyF z!-%x5U_=>qE|`iurq-ypDkj!pY!dl`)D=+z^%#sjh{=)~5$uYLx%<|GO@zz%>(&+w z&-Jx!6O#9WV(xf5kGV@ymE?#?iE6mMX~A?{E8rN`(gd>c*_&mDg@+r(L4Pu`Q+k*nJ@Ezu{4S zD9Y1+SCj+<(~XbQv(LU;@Apjl^T%S=V!b6BwoMp#kC&B6iI&35`snb~>g8p_bmP4_ zZIW$^!x@QUahVoj@-S+w@kXHLu`JABLgrjL+KH0k8P`|&>J@RGdjL}8I?oH?M9mteMmJAN%<{H3rk;1x>QQ_`Av6K?a}M03BplyIr{sf1%ahl5y+dDZ_qg!#p*g9{U)bE zHASN^Rpwgdn@g+1zXc^-H?y&YBq_$w316xk_W}93`q^VIA2O%l}i^ql0nW13ciFP>q>?6^WvDYL5-*rq} z_wm>p{zp_sN2TgylOJ3vR5I`AV^A4xteqdXr?EBzai69DjUL~Lv8{;&pCk{T3DPoUmLXgSV2V# zp;wz|ux$HYQT}3sPW!a<11Ua4SG+1wuht-_(D z?+D3i`nT2Qg+-^bM8clvj;5S#5|%1c9nY(4zCmz3a+(W1edJ)>B!-Iy(hkAJ-f=bP$KmYnrhHQpSD;9Y1ho)F&|Jv zQlVVVSXt)5GI5E?iH)}M4R*2rwd}yBa2r(U+wQZKt6iVN5APK$yLWagojLOJT zl@7MRy?B|=EoK#u4nFAm$&96nBt7Rv)j&-X%p+^$hUtT%)dit|{ANerGeVl0IN6)= z>PmQ6VzaZykky+*-qS1@_LjoCwfV?paRk72yR{HIJ|<*9L~>eoo^3zxx8tQNRCs9K zZLVYI8#nev>tK$~GkrYvfQI3;rS#W*UBLX5)v3T(@1WAoUcy=Zn^ zqQd7BTXC}40q2T*9KN1E$2Cdrt&tmhgVGgFyh04F&nfY6ya3sEQ%bG6Dki{9s z=fg)}w(qfFH|ulfRD?}VbWbLw_}Jc)TPt00>6lfKX}7%g^y{iIe<4!b;03r}yxe$_ z#9ea;(u$qUvc_!`=T5KKc9@$gLSchvhrxYFw${lErWlFgDi|;U_wC7}!7Eog++9Oy zf6U1^BgSLLN>2MuUF#&K;bhZvpe zPT!AnV#b94Mv7lGT;kcuEm&fSpU#nM$P<0a8bz*HiGI2J#Oqwz87I!!dnn2N+*;Rz zD5@KAXh-T5%sV)*_7>={jO4Xb^A7I|%BHlW4Wa^GSH$j)+$-RJlJfy_B45)@E=KJ{ z;|+=*B@0Md7QKhWHvf*ghu(^0sgXwO;(jMn5^ra_THwPL4=zjhMc@4`Nvwmgyh#fR0oKUF+%3HQx;wF3>(X>B_) zF|0v}APYBX$x-5ue2mo#UkN#6u&-^1=4VUE1*Vnm%|-XA_+Cez=~ z0Ftv@pLmQ(+!NZ%Bbts+T2AT^Bke2CTE_D{HCl(6GV!Qy4P?1*342H^L(!;?vnN({ zFq1TpvkbgIVhyw)?*`6MOSwn*M-zbi4%^^)mM6clOM?pQ5MTHbM@L6 z>|=1#n?3o7IM1=2(`>auQKvHB@b=XXFH(*`7fEV#_Bg5-%>mB7ni@J*g1xJ0{KAR; zTdK+HKK@U%;8)D-SKan4z9fY!H>7rnV7= za9-SoW`!;j;R2|*#`00Yp3;aY%cfqP_{vw0P|5gc{;%G|wv&VBN3?A&5V$XgwzOI7 z)_w%7fkiKYSV#tR_C=!NaAiYkDR=F>Fj>HeED`@y85B}$Y&7dRP0sB;n6c0AwQy%^ zyi^o>+k<`Lj=I9qmJj{E!J^=W!gsukq5Y|IQshvI2gF1y5T*B6D^*ru`7fc|w9GG5 z_2uoohpwfd-S>H9fAyff`#o7lzLN)aRhN4DK0IRdFi9~=TMPwi+B!BVvZ2xlpfK3M zyOtx87QK@%tBM_9!7)3}TN!Ob9HPsvIQ35%`Ubq+3<@ymYD$uG;?2AxZsW4Cwp~Mb ztBuSW`Sx*n7PFob%N%*x+t;S5&7H!V_vvMSV3Jf+w%x5}ost>@bxqU=1QnjaPdp^< zj~l&>WA(@_zF1*0_GsFWYK<0w!l-IctRCb}3@cIXE12s{j~TS`{UTrc_+22+ds$9h zX)dO(x6J5#s5JkHxw4BX0!9}-lW2yG#qF-LN;COrM~TCO9Bd-11$_(XAoUu^&_iFTY6g>PKED{+J*)c4#qS>Qr-&%WEQ4r>Z1 zU$rD(!sTIKCUGad$J;@d&RfkKGgw4KF27ZLfBk%6b$aLTHHGBgzjLZMhaG8mt|Dfu zuhJSaL|+8QJ*eo>I# z0e@)~SHCz^OptDgk}wYOE-SCduYG!PbmYrf<;%K54hiQ_og!~Ip4P)C8Tu;nI#YCZ z$d9O<0jy&KI+BT>$rV#LT;U$e3cvyhgL=iIg%8nAdFyWK*9U_v?>;P@>P2K{BA& zLtjXel){a~(t-#$uVU5Cj2Y|0ft)g*QrNdPh5HCfSeBpIy^O2AXyksM_nEdRD(*bV ztq4TcEy>=&p8W~^aW5=qRAZQuV~^*2d=vV4C+qFvOYdW^>j%swjNQfTLMb+3Icj9k zYE|V(J~W0L7owt(=oH6xx~S|CyW$??`j=bYsou)xpAECLd3hS8fiH(36f_f!l6l;w z5sK3tmz;-X3bm0NN!ZDjT6f-pP{hiMoag8~rmy`VC{wNONma3t%B}kcyRpw%%Vp(5 zUwnh&MU4yVjuZokkU?XDsvU`jSff{cXbr6g74}fT`R5_RcJ7A{-70j7)eI^ryFl0*_3|Su>N}-t zc;u+hYH=S`WWzmkoK>bULI|GaQ(odS#~*(HwG5c3l37gjgEjyN&vp)+8eJN!wLE&i z!Q#Hbg5c{xAh6w4&@6feoG*{n+MPMM81eWU>=kPkmNNX>1vT3!gN2jqb^UMTm(&Wn z)&mi3-@uvgglbFHLA^#qHptCiH^v)@-txoNKcqjIMl8>gRZQs|id3=PJ0X16M#Or- zN?HD`6jjpjzy}PMtG`m}*HtL()EJ!uK@}-LMm{FegXb@SvJIu4?Jb?6*d=g20cn%F z*kmkYVDGT?rw~_Ok&Ii=aH_D1JN;z7MUAq@q<0>4_$h(nGPdYEbSt3wx z6VKB&3cRunGcW1n9S9@pP3YTRJY?n|A03%JFiw|)aDg2M4r&XHc20k$aW_DbLb_-3 zJK&FT#9H>EhM6h=#bw7r2{cx>=`TbC;RvZU#dFz-i}}9BYobg14r#WxVD^>_pomS=AJu%$)<%8!2?Iaz z;yx>{d-aE1SeAR+W>W@fau;<+Sl0D7{I!n)jW|kY!8BmhNQMRT(Yzp*e}#6eEC$~+ zDw|4Zd0p@k!WtcZ8KJ@F%zu(8RK9vY=ak;tW3ob;;-;0wfTr{cUg}O%7*Mj%guT`Qeh(>(wRaE4iYw#7 zZ@FboqS6e>S|j%!k{or*!iGD03=A&ze0($5s1zvSL3?;E(zitRRlV}v6g=64?AmY( z;ZK*N8Ius9UXEn8&=TZ!m!pQkRMn}P^1vy*7>C_3gKRm0fOZKjOe~v%(~O<(hP$k{ z4=kNoB4;)Gj$0l54tD&}P5|3<#?~Y6ZUF%kes#7jsYN3J>(QxK2fBzh{ZbcruWZE3 z*QkQHV?9rmk1v(InaGZCIzr#u3Xl9yZ+)4}Ka}ggI|#sRYvC1C#BVeJnFzmdXT;JM z+=k4QA+j)yKa|eCDm<@rV?wSVDrZ6luu(f-8n|p5vrBCkK8p09p{Dh%woBu7B2^zuHmfFPIrVcjrkiby@LBc{IVI~KDW!-?uFdiia_Y$ zPYalIZ2j&k+vkuarP5H9j>?-FK>wEYWk+x)%V`O*TmGQcKpR{8)+VKn>-?|j%NcK9 zQSJ;(jvZ5wZ#>S1l&;QvJ9*ouhegh$sikViqaw%``MKEpBmL^DJ1q5Ggt6DO>q&kS zc}CkKGfnM+)iUBt*IxnooJSvdj}gVZIjWjDalo$kIeCAk&xF@K>mo}7u0v_?wTUu) zHmZUg&1&6zx(|hml+k6%ed?s)t3wX2Ai^H=#?{k+bH(@z<^@@(^UqM}9{{(}J3XHfk}#@iyq~&^7$K#>-EBo)e;OpBj=U=C)+O9UuKZ` z;r*>UbOZs5ug#wk-sU&3k$TQ_Tt_f>lWho?jEp{jWaxUz4}gdNVzB%SsqbL6@Y(vj z{`ghqh~S3%mkw|Svs7|0&m9mL@Oaknl7scj+@9(3w(p2+yt%(R69LEn^-(UYC77{Pd@uC0RR zt9Y+K=R#kGGD!Cp)>T5*k({$@38tebgTvEX`u{k5;A0aPIwMi}B5Y9{eG?iZD;_H% z6*OTZkwR!J!PVePshpvjC3)-n)x5lq8IiGguAZa0omTB{(hgd^bb871RzBbD>cZ}- zmnoL6gUNOw=N!zU>e~u0M{d`djK<~51bm>KfHKHxMAp~B;WY-s6kjSQ5aJuSmv+6bJ5rY(W69)#h)5M8Kt5ii+uG7JogjkvfbE&YhSppw zZV7`Y$JvML%3~!znUwqbip&m3JsMZ21_Hu|1IRZv#9A79N)~8B@F?p`SV=an4UaUf zJKUf4kaxbiU>neRX@^dF9I<+brGFQkb`g3(c39Kz)0Rb_f&$2LXL{#_jS3T+M4MZl zN=0SIm~BgNuoZWWy<=LQ;LQ@SnG}|lJ)a}wVp+}pa8398xcg325MeqJq+ts+!SIC6Q2W}(W$41hw)$be# z^_^`Q&wqi;JcqTnySTs>=DB)Yu*Zqk34zes7E^MQMMvK^7;B9J%Gi`dZL;Rm!;pPM$f^EYiWF4 zI;6O}H@k$u8NMu$IQFuwSeLM|pM6IIpGe&otf6E-~lnyAR3?w{ovcV+@ipp06YzgW!QnEWJR;GYf7f73d|^% z`dF@vzNk2^NFnnr&jj|!1+#UoD{a8Z@hSH7mkzBh@?+KoH_Dq4+dp3}L=Fu)KI=XH zHHBqYqICZ8>viLfnfo@5Ay0vLxzibwOd(@EDOdO#^n!WfNQ4Fd4=;lRfyGIw%imyD zAluO$Y>Om_1NgSwv|(2d?iYHl5suWJGQ|&kAIRTsDft;X{F$8l&kQ}|!u|94AJ>t8 zqyYb!^4s*=|CSk4o?|jj_GkPhDUsPi=kH$jUz3XuO&-LqsVTjI@M#}7ZtmM)t6^!1S(yVOC=ylckqYT2;$)(F>B&M(~;T--_R_?J)c!zxjtC!#}Z zhcW{67xb+Ck_MLgZC7Lnm+U^BeQ-M#le=N6NX~)JRYzvN9f)qAnSwp@31$Exs9c%M zhqg~gYxGPV7cYXYwB}C6>+KFs9-2DV$uq>X*5W#&uJk#%!S~#IUE_pwFJsfjPEBN| ztM1GKX3=(e!7prKK|ujP@@A%V75BveK#1=_e2o5r=Z(?YbkDhRUXd&l+&{E=U$=ev24gUpw*e+IW8ZXR?3)M4 z=0Eq%fxq_6%l+>d5tF|!$*-H(_vily`tD!T0Q}SM@gL?*?1H~kPRN9loF#YVf*_yT zlQUNymT??B^b}^oC`t}{@&oL`JOwVIdv+ndlbSgIsTqJ83Y2f$^)9^oI82+XB(7!1~5!I6KH>HJO#EPL8U@J1oWk-@FvbIkX=H@Ur?b&u}-M_Nc=PNy_-zBM`78KREA_8UYcWf`rh5>$3H;$o{;`)wKv!E=c4~_ud@~E7-BFl zVYbkEvQ?s+IpOhEZN?~bqO}4`C?UsmOJE>70|-h7DE^F=65Z?|7bEDW!=d#=xTN+g zyYtwlp_nTiHV-J}?rKf=dKNd>Vcf7T)LEKqpyKZ6wgYm{$EWFjdRS0HGz<+V zG&CM{LQvj=f1czoUc*fqk_Y8U-VM-i)dF;@4v#iBY1Eu9l~zDo#nNT{`Osp7;>y3C zcY$=QdkCnwAc|O=OQoHM9U%FH;0=|rV*?DP6v#;NlBPFULN_+BfQq_WieE zATuo42w&kstkI3>vOvQ&=fGyDjH9~$7#^0uPU_lVv800=;`ceYq7)lX9aipzy7qvz z$eOlM`rn5KhX>LQcQW;&{+y*Watq3K3S{>#&whhxO)_LWZ39?rI4*4Wp>MFUuRkX$ zAp$0P8BBC(bD|6m+iyTU8i9KJ=mjU;LD|v+LVpbL{7J(?(NPXkTV#|{>iRrm9u}}M z=r|gPLgyXmX2HRe zFq@#}@#~;-tbd65PjwNWV=WJ?I-DkXdYWFT|6S1T|5)W;2MI(5Cxt*)v2TCs>9ma^ zZO8 zX#Dt>=OC3?RzO$2Q7B9YQ34)pxB8|@eE%+89Q=|8Se(rk;x#-Zg65YrI-Oy1x*E*J zzX%oljx=LZTWk$?VW)E#l*k)}Lcnyp5`S1C892wqzj**B#vDVT8}xui@LdS_OUA%{ znj&b9Z2oeaC3Wm~Xw0)j{SOogY7`7CyzDCS@PsvAycCgVqfGPI?eL3(XKQSov>--Pf zI1WC94Mltw-|QE)`BVRs6je-Oud*oyRjC^vWf*q>&;&F8Uk4161rE^{PL|)CB9sj~ zHonOHsdmBwgafE5Xw0 zN5yt2GfWN%xB~z9+`eBVsIwi3GHs;%)_mhyX7=fq3O#n-_;G!Zl#*(^K^m>OHJ4cY HZRo!M(#^kG diff --git a/main.js b/main.js index 40380a9..e0b06f1 100644 --- a/main.js +++ b/main.js @@ -9,6 +9,7 @@ const store = new Store({ let mainWindow = null; let loginWindow = null; +let silentLoginWindow = null; let tray = null; // Window configuration @@ -176,6 +177,149 @@ function createLoginWindow() { }); } +// Attempt silent login in a hidden browser window +async function attemptSilentLogin() { + console.log('[Main] Attempting silent login...'); + + // Notify renderer that we're trying to auto-login + if (mainWindow) { + mainWindow.webContents.send('silent-login-started'); + } + + return new Promise((resolve) => { + silentLoginWindow = new BrowserWindow({ + width: 800, + height: 700, + show: false, // Hidden window + webPreferences: { + nodeIntegration: false, + contextIsolation: true + } + }); + + silentLoginWindow.loadURL('https://claude.ai'); + + let loginCheckInterval = null; + let hasLoggedIn = false; + const SILENT_LOGIN_TIMEOUT = 15000; // 15 seconds timeout + + // Function to check login status + async function checkLoginStatus() { + if (hasLoggedIn || !silentLoginWindow) return; + + try { + const cookies = await session.defaultSession.cookies.get({ + url: 'https://claude.ai', + name: 'sessionKey' + }); + + if (cookies.length > 0) { + const sessionKey = cookies[0].value; + console.log('[Main] Silent login: Session key found, attempting to get org ID...'); + + // Fetch org ID from API + let orgId = null; + try { + const response = await axios.get('https://claude.ai/api/organizations', { + headers: { + 'Cookie': `sessionKey=${sessionKey}`, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' + } + }); + + if (response.data && Array.isArray(response.data) && response.data.length > 0) { + orgId = response.data[0].uuid || response.data[0].id; + console.log('[Main] Silent login: Org ID fetched from API:', orgId); + } + } catch (err) { + console.log('[Main] Silent login: API not ready yet:', err.message); + } + + if (sessionKey && orgId) { + hasLoggedIn = true; + if (loginCheckInterval) { + clearInterval(loginCheckInterval); + loginCheckInterval = null; + } + + console.log('[Main] Silent login successful!'); + store.set('sessionKey', sessionKey); + store.set('organizationId', orgId); + + if (mainWindow) { + mainWindow.webContents.send('login-success', { sessionKey, organizationId: orgId }); + } + + silentLoginWindow.close(); + resolve(true); + } + } + } catch (error) { + console.error('[Main] Silent login check error:', error); + } + } + + // Check on page load + silentLoginWindow.webContents.on('did-finish-load', async () => { + const url = silentLoginWindow.webContents.getURL(); + console.log('[Main] Silent login page loaded:', url); + + if (url.includes('claude.ai')) { + await checkLoginStatus(); + } + }); + + // Also check on navigation + silentLoginWindow.webContents.on('did-navigate', async (event, url) => { + console.log('[Main] Silent login navigated to:', url); + if (url.includes('claude.ai')) { + await checkLoginStatus(); + } + }); + + // Poll periodically + loginCheckInterval = setInterval(async () => { + if (!hasLoggedIn && silentLoginWindow) { + await checkLoginStatus(); + } else if (loginCheckInterval) { + clearInterval(loginCheckInterval); + loginCheckInterval = null; + } + }, 1000); + + // Timeout - if silent login doesn't work, fall back to visible login + setTimeout(() => { + if (!hasLoggedIn) { + console.log('[Main] Silent login timeout, falling back to visible login...'); + if (loginCheckInterval) { + clearInterval(loginCheckInterval); + loginCheckInterval = null; + } + if (silentLoginWindow) { + silentLoginWindow.close(); + } + + // Notify renderer that silent login failed + if (mainWindow) { + mainWindow.webContents.send('silent-login-failed'); + } + + // Open visible login window + createLoginWindow(); + resolve(false); + } + }, SILENT_LOGIN_TIMEOUT); + + silentLoginWindow.on('closed', () => { + if (loginCheckInterval) { + clearInterval(loginCheckInterval); + loginCheckInterval = null; + } + silentLoginWindow = null; + }); + }); +} + function createTray() { try { tray = new Tray(path.join(__dirname, 'assets/tray-icon.png')); @@ -331,7 +475,18 @@ ipcMain.handle('fetch-usage-data', async () => { if (error.response) { console.error('[Main] Response status:', error.response.status); if (error.response.status === 401 || error.response.status === 403) { - throw new Error('Unauthorized'); + // Session expired - attempt silent re-login + console.log('[Main] Session expired, attempting silent re-login...'); + store.delete('sessionKey'); + store.delete('organizationId'); + + // Don't clear cookies - we need them for silent login to work with OAuth + // The silent login will use existing Google/OAuth session if available + + // Attempt silent login (will notify renderer appropriately) + attemptSilentLogin(); + + throw new Error('SessionExpired'); } } throw error; diff --git a/package.json b/package.json index f7c2040..1439796 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claude-usage-widget", - "version": "1.0.0", + "version": "1.3.0", "description": "Desktop widget for Claude.ai usage monitoring", "main": "main.js", "scripts": { @@ -47,4 +47,4 @@ "!*.md" ] } -} +} \ No newline at end of file diff --git a/preload.js b/preload.js index cb54db6..63ac749 100644 --- a/preload.js +++ b/preload.js @@ -24,6 +24,15 @@ contextBridge.exposeInMainWorld('electronAPI', { onRefreshUsage: (callback) => { ipcRenderer.on('refresh-usage', () => callback()); }, + onSessionExpired: (callback) => { + ipcRenderer.on('session-expired', () => callback()); + }, + onSilentLoginStarted: (callback) => { + ipcRenderer.on('silent-login-started', () => callback()); + }, + onSilentLoginFailed: (callback) => { + ipcRenderer.on('silent-login-failed', () => callback()); + }, // API fetchUsageData: () => ipcRenderer.invoke('fetch-usage-data'), diff --git a/src/renderer/app.js b/src/renderer/app.js index 1dbcb8b..7c3c51e 100644 --- a/src/renderer/app.js +++ b/src/renderer/app.js @@ -10,6 +10,7 @@ const elements = { loadingContainer: document.getElementById('loadingContainer'), loginContainer: document.getElementById('loginContainer'), noUsageContainer: document.getElementById('noUsageContainer'), + autoLoginContainer: document.getElementById('autoLoginContainer'), mainContent: document.getElementById('mainContent'), loginBtn: document.getElementById('loginBtn'), refreshBtn: document.getElementById('refreshBtn'), @@ -103,6 +104,25 @@ function setupEventListeners() { window.electronAPI.onRefreshUsage(async () => { await fetchUsageData(); }); + + // Listen for session expiration events (403 errors) - only used as fallback + window.electronAPI.onSessionExpired(() => { + console.log('Session expired event received'); + credentials = { sessionKey: null, organizationId: null }; + showLoginRequired(); + }); + + // Listen for silent login attempts + window.electronAPI.onSilentLoginStarted(() => { + console.log('Silent login started...'); + showAutoLoginAttempt(); + }); + + // Listen for silent login failures (falls back to visible login) + window.electronAPI.onSilentLoginFailed(() => { + console.log('Silent login failed, manual login required'); + showLoginRequired(); + }); } // Fetch usage data from Claude API @@ -122,9 +142,11 @@ async function fetchUsageData() { updateUI(data); } catch (error) { console.error('Error fetching usage data:', error); - if (error.message.includes('Unauthorized')) { - await window.electronAPI.deleteCredentials(); - showLoginRequired(); + if (error.message.includes('SessionExpired') || error.message.includes('Unauthorized')) { + // Session expired - silent login attempt is in progress + // Show auto-login UI while waiting + credentials = { sessionKey: null, organizationId: null }; + showAutoLoginAttempt(); } else { showError('Failed to fetch usage data'); } @@ -139,7 +161,7 @@ function hasNoUsage(data) { const weeklyResetsAt = data.seven_day?.resets_at; return sessionUtilization === 0 && !sessionResetsAt && - weeklyUtilization === 0 && !weeklyResetsAt; + weeklyUtilization === 0 && !weeklyResetsAt; } // Update UI with usage data @@ -316,6 +338,7 @@ function showLoading() { elements.loadingContainer.style.display = 'block'; elements.loginContainer.style.display = 'none'; elements.noUsageContainer.style.display = 'none'; + elements.autoLoginContainer.style.display = 'none'; elements.mainContent.style.display = 'none'; } @@ -323,6 +346,7 @@ function showLoginRequired() { elements.loadingContainer.style.display = 'none'; elements.loginContainer.style.display = 'flex'; // Use flex to preserve centering elements.noUsageContainer.style.display = 'none'; + elements.autoLoginContainer.style.display = 'none'; elements.mainContent.style.display = 'none'; stopAutoUpdate(); } @@ -331,13 +355,24 @@ function showNoUsage() { elements.loadingContainer.style.display = 'none'; elements.loginContainer.style.display = 'none'; elements.noUsageContainer.style.display = 'flex'; + elements.autoLoginContainer.style.display = 'none'; elements.mainContent.style.display = 'none'; } +function showAutoLoginAttempt() { + elements.loadingContainer.style.display = 'none'; + elements.loginContainer.style.display = 'none'; + elements.noUsageContainer.style.display = 'none'; + elements.autoLoginContainer.style.display = 'flex'; + elements.mainContent.style.display = 'none'; + stopAutoUpdate(); +} + function showMainContent() { elements.loadingContainer.style.display = 'none'; elements.loginContainer.style.display = 'none'; elements.noUsageContainer.style.display = 'none'; + elements.autoLoginContainer.style.display = 'none'; elements.mainContent.style.display = 'block'; } diff --git a/src/renderer/index.html b/src/renderer/index.html index 35557f4..9c3dc38 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -69,6 +69,17 @@ + +

+