From e586e804c8a48b802665283b9729d409fb62c5d0 Mon Sep 17 00:00:00 2001 From: minneyar Date: Sat, 23 Nov 2019 17:48:45 -0600 Subject: [PATCH] Initial commit --- README.md | 31 +++++++++++ clementine_discord.png | Bin 0 -> 75336 bytes clementine_discord.py | 121 +++++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 + 4 files changed, 154 insertions(+) create mode 100644 README.md create mode 100644 clementine_discord.png create mode 100755 clementine_discord.py create mode 100644 requirements.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..f3e0ecb --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +Clementine / Discord Integration +================================ + +This is a simple Python script that displays whatever you're listening to in the +[Clementine](https://www.clementine-player.org/) as your "Now Playing" status in +[Discord](https://discordapp.com/). + +Requirements +------------ + +This has been tested on Ubuntu 18.04 with Python 3.6, Clementine 1.3.1, and the standalone Discord client 0.0.9. + +It requires the `pypresence` and `dbus-python` Python modules. + +Usage +----- + +1. Install `pypresence` and `dbus-python`, if you don't have them already + ```bash + pip install -r requirements.txt + ``` +2. Start Discord +3. Start Clementine +4. Run `./clementine_discord.py` + +That's all there is to it. It will quietly run in the background and update your status in Discord every 15 seconds. + +Questions? +---------- + +Feel free to open an issue or if you have any success or failure stories on other platforms. \ No newline at end of file diff --git a/clementine_discord.png b/clementine_discord.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b1df608ad043020ea4b449f1c268383e9048d0 GIT binary patch literal 75336 zcmYIvWmFtp(=7yoySqDq5Zqk@gAYDPa0Ur5xP=6Fcb5TXa0?P7!QI`0I|L69;PSlR zkK4VvSFiJ@SDmWbW&1>Gsw-h*P+%Y+AYiK~%WESbApUuMZqeSnt{|kVRKC7ZKB+3n zBfR`~7j%>*zpkKvRyK4;K)@vY??FV!${~AQM1`mT6i~M@NlD+cEiSh#As{l(smROd zdM}?mS%0Ql%PWf>-zOB>T90h8wYkfqSu88_^SnD-XL0=ym1$T%`N`&gSDJNFCfCxZ zm3k(=o{e7W(U95G!f?}bat;Ifn|oqmh&)bmfc_Wh zK$7R=-$6er-{8NwFTT9%snGN_C9?$;ovC#76 z;d@We)Az2In~i6rO*8t0e3I*+zZ=gu&!s=5Za1E{(V#Phlk`DUg~c3FEa5LJ8}UiH zr&M2+)+}otnI>fDg2=kN`2P;D@KgqGylhW?z%P?4lzTRiO=tc0XkjRk&3|6v_ooN< zzWB{^M-vypfB$0;0Z|mvrfMN`vi)X@^5#IkY)5(~{wc-u_d5|`oA~A*t+#L1Fam$m z2lt;z1*J5Hl+uI2FfeqQy^bjy2&pdzNjeX{rTQS+jLuqniAq=pVQ7!h2Us#RD3c3kz!2xU07 z23&p6MTP5lsQS<)D<^K4Lvwys>dWLIg*U~UI9Q?loTgRrmjd(zrO7R6B)j6lNa;BO zX%nZUF*Z6SpTsp4dH0}NWDe>r;~9d$w;`se?;1n8eK9cDhyY(0D47L?qge7PRp`Ko z5msCThQ|YVZSROgkujc*(WsS5I4PG{QiK$3(h3B zxl^>BXCZDTZHg6C%K=M@tnqrRi!tPlCU8_GlV!<=u>@B~mVvhpvOe-7D`b&KBg#+) zS957BETLxMG%w#0UrPq2 z;9$tIm{Vh)-tIntD~4SL#Qv8z*1>}Q2M)+M_^Q_jt@90PNF1WK1->2HN5{|n)Z)a! z(sT6M9xA#ZUSPWHRG#rB`?BDw>SHSNP4cIHUkRD1+;55{y2%fe8`7VGy19DNCxF z;%gSglzc>$BY_*q-lzI=r<%nxCyEV%Fxgg3KuPrl8eMisVAm#}#T^M%f--29`(_Ak zTnC;P?x7+GbtcaAg+2@Yr4Rr2QTF9{fmn2K@A*S%;M9HhUa*!SR#;YMMQUthYF=9$ z3>ukM*z>^$12C7NJa>sPhNW6@gEqo-oH1HMsm^_XJR~6q9};Tg5iRCsDUMSHE?Fw+ z0zpwx+$x6Y<&~=DM_Wt3Gul3?Nf0SOB~h)BzPw>kBT@+@b>&V=ywfVVKCrkaVie>2 z)Z@WTs9=VLbnUT7%YwVf#e~K5RM?Vc(2ZO?;48Zc(#|ng`bt0vXGMis;MrtwRAdna5d34OjXzUz~7*wC1g=f zQDJY)@mp6~*9%)Yegs^3CYG!jbAS={#bB#TL9mTH3Zr3DwX5(mg=Cf*OrlTPTG6Rl%QCwh2&>hm{qS68xt|V1J zYb@=KX>*uC0Or(`upBEUuAt=}{p_GS5jWZrA4mwSo2mcI%Kl(g)p)c2OKP0``3}?d( zmUE2zVk>7(hPRYJ_C~gh5~EXRThLMf+SI12Q*a5|03fs=J|koP1Zf`N4aT!UctMOz zg(oeR1|I|Aw$haqb@%9;VtfIX)J}5N)*uc*_{W9f57)|89u%O3$xGze>O!!$2>_sE zyzvnTjIOQ(6qRd|iw-T7mU>XX#g-$tmKb_Vt!sV4O$fn8%4$Qz6D9X(L#ik{ntQiRvE|fkG zJJ?>?iY#d{fjo?;jXu?xjr*E+8-rBf{p=pwZ;k)6DVb2`bMnmtqBGh&%3LEGYa5?m z)BSU+zod2abpX*rnq``E<@{V6pmgQ=ZhT!k2q1va7}MAb47Sy0jYp=XMYWZZ0O?>; zU+pHg-8SmB!DN(W?M*zR8}zaE&d9RD__2{VwjfAJS%_N1!37Rq^aYTA<9Yk?>Mhd_ zeM)7y!pIl-j4EdUZ;}!u0Jwho{FUW;VtaCk@R8mV2kWyX7?|bb)|yS)0jnhh?LF zL6&*R`FV1hajuKanbJf3k4Z=;r{YyrH7TX--XQ@wr(H|BMb73`Hs+Lh+JspqNP=;$ zLrH1$pqT`ig|wCsoqMjjrT|lIXq>*luPc-OixhMcgHL^WFf@aHqD$yd9+~AA`cHC_ zNpbR@sW-#7nWI+Zd4GX1I)xnzw-JXGGh~$<$E6+B(>2|Ej_(PYL|PD4xnFIF69V*L zwB1+Mf8p0Z*QCVEM!=<|)v>f)*(P~-uvuQ-dw9^Z*^?9`$$f4noq2OkB3~n56+{N} z7c&sfJIdX6FJcs_=9+J(n=E9RI-hHbYp1sMbe1tn%hRLzz~cEld=y3|yC7J^NWYc< zb5_<<3Q^bQV}g+r%xab)<&vW#Pdu$g;iuidrT(Z^8Tzq&7pG zZ8mKV@s98_9PORA?RGVZsh9KdgFFjFdP7XD0BoKtkL|{N;XW?;;8l^0(YDoxO|`My z%io9ZCR)QPS$ks7HT0Y|>}Cqo`Ov2ChMsHW{0kP;IR&ms>sVDr$V7 zD34V`pGV+X?kz1ypgKUtLF!q4z#WLx|CNH+z44k3m-Wr;Tm0JQFm!axS`&k_H>f>+ z^Bf5Hg_H>yDCLv*WsDsrSWF-m4Bfb8DpP~&a5{Sy@pDDl`>Ni0PLLRu+&l%mFp%-Gn@!20z4 zj;!9(Xh4lKZspxkSEudeQPN(A_I5Zcr_{#L@{i^Iwy7rfcE2mn{e3Zz*d2X?84V@{=69&9=DkP{u^j!H6N&wmGq7%In%7$n&!j;gMmRFG@K*FP@8PyIqHtME38 zIvl%ht5z9rUFwahVs}@0V(Y|~c{wGzb5yU~*8v4BB|LGgXUsRcabFi#5z49F9ySby ztvF2~T;-Q^*OIkfZ#=Hu{kW!mO#!#F{Wv|GU~8^6$3yYg|du_)b#wPSRP*blz-zUgPC@y-@bMLItRJZ051ou{+njm9Za0LyRP!O9~msBN2tpDAaSv zBuH%4)(%IC^H6b!U^Z;m$}=tIz|9$vo4yrrN7T_-VbicY{tBWyFZr6cE-WjAAh?eK zqLuzcmq7kN)Fzo4Tk?|pit+_F=lsH?L=OwhY^O%@{X^x~-tUORVN%7!WMXvCSHnrq9$zt)8&*QQ$e`fv1{?aXC^<#buRj|tr= z3ALl^LY$fCUNed1wa}UEKD@U*KODZ^lk&Z3&_IFtG5G)bJv?hbrars&9-lH=V$xu7 z#H2+718Il9-!S%F)Ca@vJt9dKDt^G<@A!-0dfGm*+&^Y`o*F^TV>jrIsf6Ud2n1iM zm2Bh+54G%lrF#FgY95%e$4@BinF2Ve)!2`eN1bBF?63eZoG3V23>PLsZ_1mhGJOaX z*xdHE%v*^lgn3S}^tHO+AFyf)DVz5VD|^eD%0%p0lIB_FmYb)wo~^Z{zb>&P?9+KO z8`?HCqC)&VU=#k-g9g&sP}~?C9v+3#34LdMf3{@z;n;}t*aj8c94`>hPhzzgfpoGoKGG@v6=9qsEcD!=0S_4R7^TO|vk zhm1U}I-(t!R*0jsn!?o1ujk~hH|NTe`Y3g+h_xbL>m~8)T4@q1!k2RfCz+=`R2&ES zK^T;5*HUOxq2Hs8#)*aEt@Uq8iM_s_kJM!XHiw#ITz3&o3Lllyk$Z_-!)@-B(!X^8_M4fBJ)tCCWkg=D9}3WghrS)Ao$sz8rt`_B>)D_gGch-4Bo{<_X;~1+wYIM zh_esp>$sqW!O7LRpUfQe`@^A;xk~#6xU7b_ED0O&Py=w8;c;2wM!b5RUfGv<{Jw9E zo#LJIqz@N92lMs2sZ`OyZ8_4Uq!K^@24JSV{v3Zje=~%;+Md0tG8Fbzx-f`!wYZE+ zZa79(I|iwU)3^U99EzF!@NUhY=np@+k2xwwWVQV^)d6AR0C#aZQlZ!*bNkzU`I7lQ zoA0l>Kq@RtgV?6ryeYFyyJL8pR-acMBl?mdu6uB}D>3)2>}X(IK#fk_MRaJv_jvZL zwCloL?W*Bl(|@M2tO=QWHqB5Q)4jCdib(SI^K{Sr+>HRyjz{F+o4-`Y7l!lwQ30Qjf0G8gT~MN2Ld&W3l+PN*PnhR|XM`ohoR? zAs8RA_=rwK}~K3s~eS} zj0aYbV{hT17Wob?Z383c+$3j;q6me`=+A$shg@KcpvZb%0xr>pqCdJsAjwWRsSckj zvmd?LLZQ)kznh@9yiJ--o4l5yJ)H`i(|2Lh;TiFWk<|pa}RHS?1tltC*WmUjm0Y7d$d!us9s&qeUx^ zs*ka&0o1W-1-ds=0beosew_?$44P2nX=U1v8=Y|4IBh2-eY;^dtEW~GR0@`T+5LQ3 z!N&`!y^M|?hTW-fNYJEO9#B^AlF&_PO0Yyrol#Vjf)$G4oNzn7)TToDG_NyzNv%*VFGp`pdAWJHD;2k~FL$x))0N2uU1jRhP= z^%_bM9Wnnl93Ho}z-zUq#U+&HElSpL#46j_wJ+x*=e)w{$;p0lmKq8GFC#rC3mcZ> zC-IfT^e^+a4%7M+QM8S^<8$faWEF~U#FFMU7)1i?8$XC;1%2XKU?la`S^0(d8|Cj+ zx2)}D3Mo`WJYlj63p@GuNlea3gtQB%F{{$~Aeu|G3pa$TYmq8$GO~?TT-+(M_dRLb z^+@65OZTb=ZiN7!J74_`h6?;6yB%QI1swoyj#Xy0J02O_M&}1yz2@m0Mlc6a4vyvW z85JUrw^VX81E2rI+{LlQjN3(xImAsktBitC9~3DSbfQF)F_(xSU;L;8K5btaskXB? zgsG={#`Y8IhLn=X+olcd&$H~zF_X+%>CWq8$1oZxjY_Twe*jGe_6hCM_{VoPOpKnNZ zzny}~{B!1Mx!xFfe=g*N=i{jyz#j5k>+F3hGJVh!*F}jq#@U2}JKkugxvHxF5$vBj zmE&WKjTjuFV-TI}=M!c4z{mb!RGyfIde?A>)mnv7>5ZL#k2HjZ;7rRs{Iqj}U1Wh=pTqS*x)Xk#Oyf9VhlJTQ5qUOynRr zgW#xfc${R#37y8omzL4l(NQ`-5LI8Au^~rH?E-X()uvVh^xM#?_pO*OqXr*4w`P7^ zlR(BKJsH#bZ7fV|6W_(=Y>zM-*D=p%5#==o^Sa;YF-&Lp+6+ioHa5nNjybBuRK>); z^Y8$WsR0zIK|jdj|iG7z(v!wSH6lHXBSQ0I8llRO7OwAh2w5D!TgmE`>M} zYC04d7g6bvyFG0pvrLTVt80^$ULlCKtQfqc#oG82Bx9e*5@8CEAV|(_I{2sc+i9EE zjTh7;j}yiU!FHG5Xy%WC#d#Si7JV0Gxc(K>C~T`^88ERElk#L3Gogw*@zZaz-1HsWC`%!%lCNc!<_?5u>4_(0q53vPA{ z7FE_1XyYGb^oGfdzoAnz*jybW)-~Z*U^fpSov!sHU;Ve+3_2gl97OBggyDqM+>$aR zd(BYjJd|Z#F)S^MBFw?z!73{1D}jRHnlf-kO+6A(lL0o!HaVyU$RBJh`GwQF=MyoE z_}cx%x4&6W4Asi?IHPCpoKi4M4Irjw9a(0@pipvyq4Ey<1+OM!iV<9Xc{uK1m`=Jh z=Hv8r2S2!h9~xkaZ>G)9)6Y2|1VCn%QvQb8xfLP$?j_g4n%k?Z<93&tdQ-Et)~PF3 z*zIYPr~E|?LONcRRM+QUk%Zmsq3cN@IA=*l2Sag2FnI>EmVZf@uW@>Pf|Crrwy+r{ zePOh2kI&lZO0llxy3XNkQOJtwP>6e{CMT}?9a}k05Opd4)8>c>_UBONrm{(q{fyBN zD``&-H$8JqiA9PQVq1!|tYo`T|56@L0Lq6A=_xuM_A(y!%nnImK7~B<`p|Jn^XB>~ zBto`UG<52Y^gFzZs-Gb^_~bFnbWm=Fst;_ zD!lYHg4`vdEZtLLEpG-M>_sZ&A8q@P*90iA=d-7EkdeK{M|{@tf&H&H**!Y2+$X}G zWH^DF5y90;62>wi=EJ5Y&xX!{@=^$lfFg7MIDa~y`1|t8U-L@KmQD{V?=*uE+ z{G|B)m)R58b5?Le>RMS;R)4pX`PI%Zb-Yphn}$aD!j4M!~@W(moioSK~Dy}7<=WU<5m z^@s_wzMma4%2nA=J=prs$A9&R!B`op=sAj)_!uTQdBgQZQRT~0Kcom;2p8p5e;C|T z41*$=JJVimkE8St>!KuA6vCi>s}frwK`>Yxb11axi%y!3)gb%SAq5FP(2@?q3owo> zfI%&B>OJKhK<56T8di15F50>_0c*covz{BQod{c-i5ZcZ~(W;=xyl=g;!_3U`u$-NwK%vkxo#b|@ot%ucT50dc z3i0H#kv8#kP&bt|X$%kL#?d+O2El*x*W!3P_@RUR!LOZSqKSjV$&#bNYiRdhUgMhb z9skZTLbs!)8vr_TR9IH?wMSescF=W~u#=m}+cp((0lcsc+EP;pMM2V(|0_0@%ph z+N-M^exBVr>-~p=H@YN4LoZs4-g_0%=t~FLDBmKKIZU)~(z5rkP)XfXA+{JI4rZVE zL;WvLR>@5iATqFUQ1>ZP;$9kIEP^oY3#3)%Y8q@%l{!d%=m=vG38p`>bYUbH| z|Imc*S!5!Tz#gm7f6yL}9S(e*k##sb3W_-9=qV;(S`rr)N5OcC&mOZZlOu!`PiOy1 zf?+%TkR=@P5kwXCMb;`GRttlzx!U@P*@{sPAgmDnOuKy;hN*>7e2HMyVaGxN0YE*{ zpqY@L`~?k#ydD9??z)Y!GDfHzN>0`Cx?0^+fK&gD9!w2n=%XU>Tzn3y?oAGdBh?ri z>ctN}nmQlMtqZjRw}dfD#+f6zWUzEOs;n3K@Fm*FW!z}&P=yBP`5^3Qxbgt|V;9QC zz^hY@v&F!&Vzmm7xulPQ(r582aM;$?j{t({dN|{!>83`k46N9id8Z3$y4{E$i{^e6 zzMmP{#Y8x`MHoayICx{$9`Q_VaYLVzm&Gr_T;yFLith3st2&HZz|uw-HMXiUU};@Z z9YYrl$oSi2IQIZ2ocIvxBwWs`s=`!^EJPPTxzJZIkG$Dm!C<1<^o_vS622b z-lk99(iBvbzx^_ zWg46Us_S12Xhfn!56^vRwaeu((7|g(p>ttEaM#~T6jQ(08p;I1FxI0k;R+Q`p&&!Qe<(DZp!cel7+T;_%{a^kM!mn%qJSCNKy7EP`-R zmUx_smVh1uuZoobhQeGw^Qr(FywdVVy)Dy+u7j3n*4PR~I_;lAW^bA6zcOUX>+sb= zZlgKSRA4BAxF5@}r zrhQY>Vqa2_IQ5%4<+ZWBdzL@`I_PG%t84Vo(wPyQ75X5^?=E~sb+EN>2vsMr)Q&_cC>ln1T z$R^fDH8(dGW@X{TRuo!7Og4I>3X4?ecn67C1|e8bly4O(3~)9$Ir}C#ay>>QwA$tD zgw~jV%xrTfKgDR>NXm_d>0$Y&J5ZwR;|dD~rIH&MrGfL2cf=QI#`)LX^>;K7jZ)bB zmwy>wg4Efr1JD4+(c=ymv4ftqxPsqtBF4&hZ*(A6(Iqovx1OxmjW^UM>fT~4_Xdjx zF!13a#nEx59hlPIo&qr&4x^aPd?3o=&Vg^C4jrsW92X3NZPirkw-Fk?%+E ztRD<2avReUOf#&44bFc}X8!htC0?Cq`D>5}#O~?g+N9k<(>=>by!v-z|4*d<&#=%u z@Y~FHV;1~A#>%lWCtx(uy~IiPjdWt07Yce( z-9P}1{MfUz*ko!Tydie}SF*wCyc{PNg8Z>AfGSU>^pFP_lLCz8hp5d-=jczBYRNq)i@%K|7K%-$)1BW2fg(;*MKwlHyouxk#wI>T6M4-3HK%?Ptj_X*=nuqw zfCm8LlmIaXNLXT0>f^rfCp=)^0I;tC5RVwOs*V^eu4@5^uE6!20Je-dYtr0xV=SDJ z(M6yM+zkJicoAeg3uNcK z){5;&*d+#$hz~=s^o*v^ofr%=_cH+2E!;{*;2HplN95na( zW)DGL3^C_zi&OK`Qm2wiSWQs{99C6a4KFT*Lt#Iy%BK!tL{S)#C2DlM5lqAwpltam zx`a7bc>xgxSfx05__gu&ln>!s=Mx&$uT3Uq)0uUiG`qsz`5Jp*bqZ ztOVFSe^Q3Muj{8rS){ELh5UnFSs<_NHMJY@Q)s(cQ8u_TTeY&VF1#m_tkIVy`xUl} zZA*&x_l}6kshprNf=^&-NAPxKv2#tSMH$?-)Wy-+(ZbOV3b(Ygva+{wEOs$3t+Fht ztW=$i3B4E6zwSp_&dA8fGCDlYHm1ldd-PuC7@yQznBsMd!@5?qNjIaq z_wL-5@ybpNYfiO|Xs+vEh%2-_BuX^G)}=|FB1>JzOP&9nj4CHzYR7d2M24*!UR{MLG zSLP*`#!3fQnpRipdixru#~k^Y|2a4<`P*(^{alX!W(}TmUCJBCbv)r3a~h4|`UIll zPT6zfPmw$sbrr@xqBWg0Nejk!nn|sG?4V|SZPZX9Df44fsQ?%H?^fmmSaySEU&5L zI#f)4DXS$b!|3=R8wN9~nEVEST;)1(lPE}1y|0G7jy$UT-KsE&ANG$WI6J6=ac-CU z$E~tNBde`{<9#yUr%cnOCNkTk)Hx!_a@x;C->_zbpbE2x|^MMHP#7sL zKd?NoKoxCBpd@K~^CWwE2w+u8T*?)HrEdhNr-gR=KR>sxBQ*S!zPhU89x08a5sUS~+#OmJDn!gL|n1x#kq_282`YjcnU8 zQvWUjh?zF*D>9Fd3{D-qrSxt*`Cl#!hEi`=hYeiJbhvB*zRllna?gH@wf^LyyFS}H z+39VJA_00xK=VoyRZ9}xLkcYm65TTjbz0I2J6bcdZF}+jYyM})L7&yVcYIm~+H)cV z8_{b$V*#U1Za3&ig5T?F>-Yt~H`L-@phsdveyru=^57YEYjmoBQ&ZAVmA}Vs(nc55 zznv}gKGu}IMxTO)*oi6DHgv+_9S!Z#-`XEt^}pZ$I;c8hC^)bBS%12DnVWdIRu{Dv z`Eh>8VO|&e*l}%sX*o8pvVv%zC1|D}A^H|CJKNe79)QgmP{k?1_5J}YRK_8d`);{) zdNk{BxAE)v?FKnpRm2UZgtIp3dAq1~-Kxou%UEtiNQoD*Sjl~EGM_LNQT5l2V%f%zH@iCrI^R3R}+LdzB zZR-awSAMJHe6e-8&b{iJM^&;% zak584v`2fmz|26_sqGkcb^K1gS}i%2kkj2|Aae;u0 z>VN(n*8A%SU<mVDD+FM^9mDHDE5v zW0)A`j%niDp%dj7osy4T))>H0c|8_7b)}H%2zrQCHZ3CzqaaK=39Ievq};8vKjx8k zfv5ECS^)|z?|Cy3YIhK{d+)2PEluBtxUB=F&=B=Kj9hQ|JcQ6^OWZU{p;OwN!_DM! z%Tp&`hG9nGvHtO%>B|=8+Sa;0R~=(k%<#&C786qVoy1#Q3hno?o>HbQf1GdJ3?t++ zK1j@`NFJ!<1L)uHC#PLT2l(8iWZ=Mn`umyCW(^(dbJPY&oc&JPQJ?kH2iG>6N9V4B zNs%vAxz*rHo;x1C?{#%Ev-8mt)qqj(Z43v`MZ{YX&<4GM{saq46^mfQkkBRr(Sr~{ zTM>f@bM@zvV;lXkp|ib_wW@`7V;3CH)tr;oIiP@6?wm>T%)EhTeS>EkLj#S;rcOoXjo&epQHIj@tw{{ zEO&ofJ8#-qSb(i9EDK$>taf*tw{?lAm+&3i1FD~wP2GvmY00G>KN%Zazi(({GQ^&8=QCBO@}=5s&Iq6 zT3zqlM$TH>)*70OZI31MomN|?oB38=p50FOjZaq^0`jYyx}&Ctk$%L)6Ul6{EVf*J}c#f=R(fOJ6cEfBlrmFwI1~Q?B3nYchgL%_IVJmsFql( zxa-r>n6dk|T!nMzrCUpYmrOCe4rK>$gSq;#!7rgH0k@Oc}KNl9(L8 zQ#LJLGdh!>#J2?B7w1EoEAA;@DLQ9y!V}7=T#(sA>4VYNhAuwUQv|_j1i?)N!xuOC zV1HzMQFM$ar2!!uG_}$ps{5#kC-*DttqYB#Qx|k#CY#hEt3G%AgyQ*p)gO9m9 zG|&JQaw0!}tmD7q>k;R#QDo}wQi`F4KF@_#_s<@(las?TjyTDy04HDoIgQ$JCL3km zQJbU$c zcc3dtUX(?p2Sr8*Q=@_M3P#lr{zbKZ=1JEq`0a)_amH?@6^WTmv~r?N2i;@zZ`6$Y zh^%`2RU@t36Itd44Y9xtxn?ws3&PwyDI#c#3Ce>QpLf()a01yswz%DH_csm90CA63 zP2&y&S}GpRGdzPL{{71tzDhoNk9w2ec);HZ+sT>q32H}0KEnOpmWORCNv`(d-9cOt zwsB;U>tdB#Wec+V1Oh8%iSCCtpWg(vO+B1xpN{{dJ9d7VFYUjRIP}ud*vX!(x^NSX zipoNU)z$k(c0Iw}Z)jORHlJUA#t`NUxa0h!`ec$r4Qd4HekK-^3{_vg0vM>)HNa!Mgnu0>ylY(?p$3K%?0+YMf-u)cga5w zOMhnPMlyP6NpPtUf>e5n55MiZhq>%xPmtnN>S0M#9r|f6H5zFLa&V#7H0nQCPR`lo zz@jnQ?R9xd;DhxtD-XT8+@_%k{mrQ8Q>f7sMUSFig9};|u;Z{55KcT=RyNNSp3t;F zqlb2~wqhWB*9VKY!xnEZE#m%%PoXq(&i3cc!+EN!axlKdX6|QUWor@QQ5G+-HkyS(a4t=uaE@KnbaUGJQ-~C{0jgffqg<4s zmRR|Y9U^Iz;!<;320yWc?ps(|fIoF>>hhaAD6V8nN$KBhS{>e2sax%WseAC%RU~Ox zPpF-+uZy%tzDyFjXM>6_V*|EgP2>pOj}t9O8;pyRhAkTgUX@TZnM$Ox)_1DEJYnV_ zCZ)9~qO)-UgFgejp5V7(tOD4SsZJVT-#h^i3FjjaH+g6BjG&qLLwWrRP=ChP`sL|s z++5MKQlCV;>Po&|vm|F#wz`UTiiw{V6h5;AB=uC*|Cy+pqRfFIPwZ2Kp?_dEfnCCg znl>h&g;Qemt|7YS53>MXwQ(PvYN1U3|J~{}%RZvkM&9}6SD4EG%jXVAp0n=u=*7HBubs4sdh2dWq%T%zJ=Ug0AA8_9+cHPcQQK!wjN}D_bo}{h&ujcn}S#I&D(Wp%%jChU3yrbG9rr*xsWkhwTc-fr6+fs_h-nV6Gd%D>D z`;9ESP0aiJ%zIceg+U61={CC^AR}M5-QkZeFAc$IcZ}GyVaMw?X&tncK0=z0urlYW zwnHu8zGA>We8v)9C5PMYOEZfjRdMXSHutBt94yj)uO%~Lq;+-GcB>D-hBNn7#5pJ3 zmj2STt%Y-2c`{Q^khC#u9K!1VsfU^~W{KkDgp=}( zj$lsZllndyXqU(Io+r+SY(O}M9zsC$5Fh7fo_Fi&V#$ZA%1I00l2fHrqJ!{J2dHwz zYJz9XQ3o#ZHu~Al^~cyN-90Mpxk)KJtDBw1ah$Q z6+b`EYF&Mpx@h9RtZTT1NNk?%R;U#oX=k_&+~nWx|2S6`N#2`F{Y|>Lw@iNWdG#5Y zVB#u^ny~>pV4KUo7?U!b@G_wgqJz227cEwtO!4XlX_LT|IY|?#M~5H#r``jP7c9Md zj)h&cl>uu;|6r|W9>!P4abZo%dpCKV`U_<=0<-UT=Eq3|CElF|>TO&%w)(NxSc)|H zOVphCcw8L^{}f{Ea6vT!mSc^sRq*m>Ks+dbv0MA~%Q`mX)>b|Uf-YPrhiWt-Hzke5h{w~&e{WKt`>hNinPT$<2z|tuZzoOj~j%2N^B|% zHqL_?yD8-yRVD4u0R=OeO!>bv-r-FkC655!B*plDn&vR#<3!zZ58g87jS?lC=8$7} zJx%bcft8sgDZq6g#pz%1xhJ2Zt8Me`$DeJujIrkr$LpT@)xeZ$k_8F&s@1{wpt1Lc zqihDl)u!VWh94(#N2&ssC!Z?ob}j7pzx^BE9gVvA^)R4tqw&!w57;<=A8v`6J47N1 zh?NC0YcI;Os*;G3)6qfRWk+W{sk%J`J93*`FEW-PZC*}^{saD(q>>^QCgadu%U$-$ zX&y)kQ=s7ZqOiuqfKq`TYVS^CvBm(`u_s(k)Uh$er(C=p>bjvmUMwg-$OremsXo85 zZ!04IBj9%AdbCFithBq=&>nvBh9_6qd(xO?N;`En2>2|0 zhkAETzV>lw^ch7cVFu;eT(gI1zFBFC4{6Z;`FXu&^>Li_z*|I%z|KHl$gU1E?8vBV*e7oT|oSTIR@|C$F^mIrhHnGmDKI#RuS(@zN-$Jo2oTkzUS$>R{d zuY7u@C~0zPe9?(Rhx#|Nw#Dp>p_BOXoG02LkVvOO0#)uuBI89W5=7(UW&e`;)-RJP zpU`u=NkljHMteRw7IIGGaMp%$Ye*u8;5c$)`nCRBJjnceNG=RMUM@eTq|7v+q%3GFAz$s?5%#+yiQ4GzeJyFjSpW|Vx?Hw?+Raoy{6S^8U!R_v!71rBjg96VW;^=uT= z^yUSn4FfUE%X_K*-OSqUevl_H=~T+%uC2kTqrir->z@MX zF*>ZDG`33P*f(GI_N$Zx)oI^d`S`4+MY-$9!AU2#l{5M4Nmr5PN$a84V^wx;Q?iM4 zkml=qb<*>PdM{Ga*!NC2#HSm-u*b6u>`pB`BkdxWOmr&Oi#RAIi0?1{;SoJde60gE z<^?B*b%ur}mv!c47IsEfrRI*fvYPpY_uu9n_0|q+PE4KDdNKAz4B)3WG>FvR#|q9@ zanGya9-B&mog>z)LpiUB^CsUSpqNQlBW*QCGsxO9Cd_QCpSUe_``PLI@Tib{xYlIU zE+H0}RiE2$XXG*(g)dv6xrU0WM57!!ib>haOIW&4vU9=ztjG|=vgOM;nprmK09 zy}7@PYLLRjQb(-CH4N9)XScZn(Z)J*#V4ZMLa^_z?$M;?xd%_Mj!>{Broe?=SzPh+ak~|I!{+EUV90 zFS!^Uo6Ye{u)p)wGJJtG-~0HSe$-p?#~8d6@OY-*@|)G1*Hj3p{z!-?s;+x*lAxZp z1L>T%me*C^6v$)*|ywFfI=;tw|1&s>`KePFnH;{xz|=ms$2qG=Wfu-58&foxgqcTx4rJu{2a;a z2yw;myQra;uR%k{ptYoUHY1c~o9v$?W!@xdLi86ryhmJjZE>aJobpa#?W3B|X#T>o z%$cLpL8rJDZB}h)_QxM^=p8zo@Ql^u-_uhO1Hsnz$fcVb==!PY@V$e!CyJ_DE|!FB za?C53|0Dc5eYLCs(%?SFRe2BKK2#oeiHzYyi&n3(r{ONo`ud-xcX?l6f%oTbuR>3i z7Npk69)wr_6@K58(VFWShN9XZ-d%C#0R=kCotD_R{T4RrecEaUhYhy#Z?0c#Qj3VE zoTx7j*RKbH_k;w9Yv3HFDf*objy{HPqQoXrMoC_wU<&Mf_lurJk6(#}lDSLtE*3WTS!eGPcDP3@bQt z6HVZ)wC;Ld$r_KyUCWPs1+NghE-H6C==OMxMNa)VC6 zEIOv@W>g$(pS3A3t;U(k-|bJIlO~Y54eb-A!k+|sI;z~KpJ;2|`}@Dxl*3yE1b7zZ zXCi)?)Tjo{Cv7_0TTx`#?c^Vjq_4Z~8R_-dK?3E}0t1W;HLUzytxN)aofQI(KYKhn z{m0CMlDd`Z9kcOp8Vx?O^Vu1xo zC8U?`Zlt?+=}v*?!&{E-xcBjCZO|+kiC-hqpca2d2om=!r6Xs}?FO1zacjh0nSzXiwodv?=61Y4yy6p}lzJ4DVZxAjRo&!@51= zlHL-;#`r?)RC9xV#}pJKG^E!i=Z8RJ@(M#H``z-iQhDCt^Ot8Hr41379=x+&LdvI0 zwL1YpRsN?hG(%zW{prFEu#NDppaHr}OL5DyC--iy)-LDwV6sywHL+|$B=%F++rmcw zqoa!!YL~!8*nPdq)X`7wzUjxG`VP{yDB_sZ znFZ;}Lt+6tV;SoQQBBOL=~{>yLpQ*YU!SCRSj|Y$pGo1o)q6@38QbCYEo8nWBoN!z z2;t`}ix}_??R;Jo!5D*()1WvLDsf#?#$DJBLv!GHF$xT{D)`jbT#Jy zBRj%NHQXYrbxKdcU(2{TskWsx_Rzq={6|P}g6Fs2rr?8P?aAW3H0}*)TVdoy2>X^X z5jIN#Hag_(!Noy{uH#5bHJ1!5kPPP3;!^L;)xQdlQ`FE<9c| z0*Ma(urP-eO*`@deq99T=#^F2(pd_OH@O5oDC&t}i6#F$UcICtmG+s5LYRP|GH5zz zVp5QpQwHiU-dGy&oZ;UkJ8j!QOnQ3^k0?9`znhvmf6iZ!47qoqQlPT))F4w29{lNH*Rws5441x z2Yce}{<-^Mq_c-h^_$}endczxnx!`MG$iYAu?4oh={Q z<$YLG5vB@=DBTeU$&5Q8p_@wB$vq@XP^Ko1lQU(aGJDHXf_G%krKePq0p^*M27t7Tm2Jn)@uv}%x9@joS^se8WhiG z;-C7sy!6!O3hnd_Vz`xILt|f6F>2cYCdOhuliAXZk{ZZ@xz9uQ(hcOn>6Ne`NNG$` zOg{9=WpA;%D0sIZF@1Z!p>p&ndp}@a>hsIN&PD=OPde3o#!n|M0#aiDQ>thns9n8k z8pXOkQ$FPvl$=kr9G^*gPu*9`RE_F)?Yf7jmVP#%iFflVtKWt)n!Rk~AU(2=i$I+NH)>Rgx8&y$ zZB~nq!(sbI+qv(5(Z2;vX*S);y&v-L-2+S^S;whycY1Ij1;BNbOI|i-;@|H`rrkrt zpvhJKzQOKx_E(p)BQZqNH4M|qDAP44(?eKxj?p#zCx<<&Qudcq({7%3JPu%;fR@+S zC-!>_^8MX$dl+p3BrE9JlHv&2Z~YD;=9L@W~_Dkj4BfkH{&dyC=KR056@&JT+T#$2z2q@Ys`TCb7o4Tbm4)c8knmGt51MB0}!X`C)uz37_4 ztl!-XrRD5LIBWmQh0%=1W0u-kyCxQwr+dabW(U^l>+;>d#2Dwq7>ECi8a<1FFCC=* z(iPN?8{K!zoHLeeZuC$l?3(e5%l_n$x%Nc_TIe2BJyKqZdl4!f`mk&NuDtPds$gRw zJJF-g-1Eb5-I0NRR&4r^*lQEo$F=cfL4xujqvv)wS5W-g^5g2`iaL)N6-xM9U14wG z)<>|BoUzFfa(4Z8tZTh*vl3CA+t5-x0)zPyOtbQqc3j=sVKT@!}!5*aVPV{>sOS!zvWfW@yHac6jxmIs_m+xABw59 z&?g8lRuN|@&I*!GmsgHt&SX5PPt(x+K65JN4$r{+I+iw20)Ahi-p2v0RZ1>pysf=mXgxjX?5+###p&7ct^6Pk4VJvdGcyX$Eh zRk({RA&XkZk5_oKVQ6dKH&VxSQWT0?jO|7_6O86=lq^7j9*tI*Jy3q7f-4G?(Z2K{ zw<3Q47-(!(+shkJoyK2vjdUrV*~YW}J^@$A^Fxw0_);&MwP$vwTmTcjieB8P>#We= z)Geh(X~^gq2X6_ku)nqK`Ec>+8sYt$v=@6DJ>_5jWM9rViDa!t2wU`Kjd0HxY>a6*GT5z$!=o#}Fx!7BaK2@{?{+-xg z{F}!LiSbdDP<;`i2Gi;T6LWwW z2}O(}6s>WgurF;MA|l!i@zcWZ3QqmvejcwC8R@6IF~$&)VW$%N64d|tEk4a5o zEzMZ*&_0f-iUymJ^VLchTo%Q>JlPv&kuJu?|xD&zk_-& zj@{%IAE;U$PpW9~s$Dt7R@=w%A7t8FFHz4Kr!5*#nr8o6@^h{w=gio99ha$cJLpm> zlL%4Mg^g2czlc%Ii!Wj(PFDP}9-&PgG(avAjJggcT?I>*;`Tuav|=%>9W}pl;m}Gc ztQlmyM4xT2R>|y<#twR8%*toM>KQ9I(k1n+lUOM9*~KcB81>{vaJ$jsb}uPl&#wjJ z6&NHWDoihprm|gkq(glO>}}R_O4;^{&gVOnEk=i)EMODt<<(}1ea`W^YIDT zQ@irYRMGvmQoL9Md6U$Of=Pc;dXfm>Jt#KJDd#Meo@d(yHZc7Q zuY2+P1~?J_c8zotI2iur2R+uZltX&HEgBGatHU6|jF|QLpfpD^c>9eOVt0&V6q$uZw}< zU|ZMF!k?jqQO=_33g?Q}Kr`oGxeekRFL{~yw)C7on# zq_OLk3^-1utQ51S6|)-wGviW>Y3UJE9lLctl|&8WjbWI9E>lUBnKjHu;+=REq`Q}( zZgsxDgp=+RRQFYXf6l7FDte`QbR2Mmcw^$CD|F`0Z2U~Mkyy(k-}%@;!}{v{@9A*Z zUS45O?%7)7-wW1ypcJQd!s`~9eGwD&Jg|N{9>&5picH9RC)e|B0>uBWGJ&tIghVcTOYr_B7GqxwWUp3R>SVgIDXOljSVZ(FP0-Qj>B21a8Gtk#VEFKBc6?! zVUtC=$7CdsOM@%%Oq+*rNX|Y$6|m|~+t}Fh3}=09F4)qmsmk|9Ls?x@Lt}jt6Gy?T zSIlqtULh`$;7h|XOEbEjrl!mO?r9d6x_(uy@NwaELZ9YJgvY!7rLU2Yf|Bl(-R_k1 zn}PvRGNiiNOz@YN1@4YFpWJca_2&{C=M1ulIyuNgz^gmQ1W)x`Qxn(9R`r+a>xoz+ z=?z9&OR6|tt%izt!i-|!caVn9GlN$kvg5sEK~`@B#o z0YQ=9(xI_=Y^&@>g<4xdlQ&~>_pu7Fe(d0<@4abLb#il#OG_0~o_td8>-A!zr`Dl& zkrGqeY)ciACPZ0qZLjznL^wxpGPLoXLstx}jRF|3keA^yfa4jV-q%gddi0s3P|0!-Y|!cgu%{0dU#$Ec`B`@Blg<*rPG$iJ%4Ejg-41ISH!Tvs z6Am5SW?t$Wj(V&tn~B~>ewiaGT{-IWo7VhWR&{P+jSL%^@TAEvpI4!)OXi&>TjEh` zH8hoYPIG;#T4Q7V+~fvbh^Dw9n(6KNjr6oC@18v7p6l6;7TIV+;jEdv)z4j zhdB$nSUK6ZI&{NfnYzjc3R6V#bCC6WMSkK45OX4yEMr!9FNup#E^%xT)_X?wiUeIo zrq#Yvzf!j?p6Hx*VKxS5=GfeD5b;D^N6<%=%)X#adau&Fsub~^ik={ z)xK~lqppoaomhGRr<){9@un$i!qf5oq^lvP`_bE4+S}S*Gp*b-u{9&m#P58EVAMmh z3=0eDbh%@}lHC~T>7$~5|Ecl*)31k#(yWOqX!vyM3uT^9J(>N3ej?g^M@M~=BJ-FS z{Yb6-65Phr!KDYNp)uWvPPymHmKU5a!rjYM`+|?g3E05Qg@fz6>xp#gnNXf1!$z=` zoBQSD{6rxn?cju}@o#Vt~Nh%$Y=bW$lm(PoM2PD*U zAw(71JGUC^{479Eo-kh~ceRCBxr3PEq+TjUZtNdIKtU--B9`$KXBMPBTz2+M@x=M$ z)a^`SPHS}Dr{(TafOrT3eOUMF{GfhvC`Fn5PzjY_u4uL4ZPdwp{haFWrEArDx=Yqc z&=$q&c^IocCy8iOrxVYV1m&P_V3|*;vul}v(}4eE@l z3+~_wXBK)lDcL&uZI^NF5glQmT0p`1wzOm55EMTQ7Z~N;8{)FT#!~ilIdyh%brW@z z4D|K!+SS0I8anb7J#$&7K`+JQwICWihxDK)*29bVZ2MYd~Y~@px?#|HE991&gaxQ9mDzy#OaQ&py1KUU6b?KyT{eNk;~L!2i}Ew)2rI0(*B*&%$-|ZmkgEN zT1A%iezYHdKy7O-%3driO}UIFK`~;CU^HR0+$YSot3H|G%0^OKXraw`vDQretNXrN z*UmbzPq&2!bm0?3lxQuzaVVr3_%zYtO}yQmaU5n0ya3nZJUeDHSV=l#C)wSKtQG@e zwXgu6n-iHcn9G-i*!wTe`Ueu&;%;HlxZGYwMGd;U7%o9_K}WnxhwRW%f_uL})%^)( zM}t7VXGX1OHm-Z^i0P0BC?*M=qbHX~zUi;X?L#fpR}F9O zAtPy^7Ye7&6?TIoLJPX?c1=4vN2_OFZ&l#vBudC<(rfAbWXtLF(dw*^Ti#oesBJOg zJY1*(tiSiTyjU_5iPbcSq@__<%fDduxzInc6vo1SaZ-bY^W03?=qr;WgD4##_2`C? z5baK`m!5pW&IvEsElRt9P)hHOKp5z8?pQr-mA>Fh zqqV(d3dOEx^P9l4CI9J#gaAe&;a+n{yBn;jtXyuT5xhNvgzci-%h|Eo? zZy!-pU|$-N*>Yj_w;#T{_pIL^*?uF@YXKedCn=Ah+bM;6Hu^p+ru*Wq46n!`R#3Bs zT_Tm0Bb6g@iiU|cH#Lqc#jXuf$))|zh|W$^>GxeovwAhqn9Jz$#h%CzAvadH%=w51A$V16In~+0q%o79!K?2r&uL6T&xkWGu|t{N>z`V zIYhZW(xGWa<9^lXZlpJV$#ceY#dt&XzWdqqZvVm7xH@j<(KhBvY4pJp7qIHP+c*j=dY|z55OIBf7d7GT&?M@R?!H{JWcDTg>UnN8of>psqL4(2&-UmQE;j zMbj6i6`~}PRprJ8KJ;Vgio7h^4q*(*^^zq7wB{J$Uxv2=)dM(^Wne0D_Ls%cf48sy zl#GRoJ+|Qq#@UegZ`hF)$6@Zy+)}0Z7*hD`W-n1LcuU4%0oR7Ojd7#&tvA1+gBd>) zhXb&0?zg883l$ngo$BgL%9mSHQ=xXHP6%27Mpv^=>#QT?`==j(YBf431R-D^Cl7dlO1+5fzCAX3_-v(FdEgTG#==)c=1qCM3Zp{J@oLC92$Qq(is+vlFn-#Z zQu+x2&n2$n6|UmhX*hL%bijn+U45ZrbK{|g?!B_-nXB%Zxx!M<)*;mMP59)BsdWZ) z*iaQ_x?y*}G`tk2(wMQ=7p=HZo-LUU7g|nB$~3dsu(Miovfs5TvaoUZ#2TPYCwZXA zdrpw;v3iFED2jr@DwOJXDZU@UpLj=+In7Wl%-#c%-6)uPmSCrkGyQtwBFdA zD}Y|r>C-2-wvL3cda6ldz=wSTqb_XIYHlp8_olXccbu}hO`y9Rks){h@gd>?+rJ%HZ)zX89) zQi38mX$+j?Gau?}J~!9AsF*f5D|+^1DE7F5=KW(u-or=h&XBU6}m$RYK69a0P3Z5cz`s$Jp)U)BO%VmR7Z)Bq4$H4IW>64uf7lOT^ge z_|^Oc@(QTy`qv63wWRpo>BanXFE<$#ck&)LeW~v6nh^m}(TeiA88OH5fIs?I6?r@z z?el$O+o39cR_yQWtlvHBCYJOVQIYS9F0|;Z$UcX!!9BNrKlyEKoP5Jz#;{b-F2l$eMMJ8#2qROm}({(L2?3ii_#6G^m{lP;| zTCa23e$>xq)`zbD8Jf?`{h&f+&6ieO=!B(RR{F`t(yR<-3&@{ZU#H0RaiX zfycek?OB?QrV^;07N%c;HgG z$7NlrWd@Z~{kLrKgQWhOU_xNup#5ise+~rTxBow1-y?w5{@*_VU%%xqDLbiyah5Tr;Y zsHeydg}}PbPe{86|wMnJ6QKFv(3^gvyyI@|`95 zz`M|W!-ToIxy6W~G!)sb5&5mN z|6(H^k>{Q@XHATINWZzFW=4|jiA#vt*G!h-O9G7IO}dKqWhtBNx>(#w?9f_~7_o-1 z`59a7a2`>{XvBPz;-BqxgE(pF8WZ}Q3qRP5!sZag*Tm+&8K0D#X}Fqt*nj=YPtyXm zZ8w>XXb3MTDDGOSaL7m71nF_at5SH&;w)|l6^R8hd{yDfF=Hq*qa_@D2_t-ksVH0D z%T#>q$k@RZeqawss}VoBd2@2(`NYK=>$i8Eg_~1vMFhqsz3kTF8eb=n-tuRR%2`;s zp=9*BeSCxuF_F_-d8on_wqfB`9z>OjFz3S5M&|Qx!QFZSF5$xz>o^qabIkPgYU*5|w2cJquB1C-o+@l~tP?D$y*DoQ=4XWF z^|CvF45HE4hFCIFJN4vtcvqB0N;eU|DB~4~*1TLbNKyK$lZOe-OVTe};Qv;lf8ZC1 zE(iQ3CWH%-bp%uYQ3uzll(tEIAE$cn(?~+%Nb>i@-lU_fD3R~C-_HiLruJR>qIMWd z`JsdfNj=zer9PKhUV1LOA~v>*qiNQzd4sCE6@|)Ss?26WuJGsRxhsXge(2ChX%80p z$BN8<=eiV3g$YbJiq63;mQnS#i-<&BFVX0w(qUq_%o@e(F9Q@LkwnCBW(F>-H@x9y zUeLE4JAW~XL-&;qFg-d5Yc4LKl2?c;tO#oGk%mg*YVn|I8nZh1ja8!s;#z1o3WL`QGqHe|=e|Ey*#0^6ZCy$n*2 zQron4D;vHM;WSq2U?ln!mt(*jtv74E@Lq2#AFCh4<;u3kz&%G`F+iO*+zx z{hMByC}lt;g}943E0q35ZncHu*5(GvH7-sjkAI}k8%?H0qNtWC)#3VeD7^D_B@ zV?4Vp=9XN_9EC!TlVPlV2x$Jlzt9)De3_h6CaXyPNePv@8(03ii#T?U#EX=>3zwu< zT54Ud*y#P1QZNTEi3LGxRKKzIo(<90)Jb>^#Yx9tISZKbYps@zp5}+oYL1$InT^RQ zVhx#Q6e(KYN$rcf^tA?AieD`o?~M_;7hZQno2j&XOy+v(ier)ahk!=o&+))OpOTBF zj_gsQV8lpYgn;(CJ$Hx#09qmO)xX*ziBqxwNiG$cNB*j-cdDqE+hw>*m;eP2n})mg zn1ef_sLu<7S3&V($a0FA2euAY`@CF44(A-uSw{2_7TW$#AXjzJnho@+!M7cvxc0<~ zUKRify0d)gW8Qfx+T*P@gnW&v7B^(rfro5O98>Z^k!nY_^LTvyno?`x(w6+1$3P+W zm^72henco|4EN2tzxLK^fc0xvXl;Wr_90){&Fj?X;WZ`Xq&@5F3%tui(i;CsrVyro zMa#g=20aW{XH-~#m#ETPSy&*khUc3m$#0ADqJf)R9txSEqy7#n_4W4BHF|@c41es5 z#FZbewwqaO&RHbUyG>S>t6;S?xmQ2jAhf3{*ia;SlGbzNkCEX)uV>}w(ReMvNt#uB zeCzhMk(h)&@*jvRD$0L1eIM)GpW50w;X94gq{(Rdt^4_7bZSr&!nonE_}}Rv89j!M zgBU~wQ502wQy~>m*fUq_E#i&RVMP=F9?aM@r!6s9O#F95k`7Cx`P&W{AA2^u*83Ef zYrT?ZCs09&{G(*)S#E=w8pSgtYBJblYD*!1+TW;cytI6Vgn1V!jjx*|Y2U(oe@LBQI@bBj(#ph{;f&idE+77YKk}BKJ zlKRJ$J=EkSba?QGrf|v}JRntmFP~VPC)d?hO+Zt`ICl)a!7CEmAE`@z%TTbh%tApA z&aq9`GUwRUXNSac@t?huJK%cn`kR;yI{4nUq#=Cew^`!J=}RI?N}H5aQRcXP#@SFb zAbWXudgV%VSoK}cC%!}lPI?gfsg*s;V$P^~yOYR=GG&Z~X(A52YN#@GV36R0E0GgL z%vTl)d~L_PqL?gLzHp-kzh;icH*PS!DcM4w5d*9jb1r@1`}YOJ>yufKLOOrQIs`Ie zM>;iWw!bn6F{6yvcur?l2!q)nvikNAK%NNn;6kRisYDTwT@O%GUzS1WF{`8o=U012 z7O4}w1jF#RKN0`jned{nS`5{fqA0BkzcTtO=L_GTbO7j|Pv%|<$w(m<=M@uE+ljD2 znBJyS;^>VF=0n)Q{A3IEyp*m&W8h=m& zI5{T7PguwXv~qMjaOpkZd+C&ryI?Nyp|0DsitfMc#t_2e`kSr1QRVk+cP{2pEcYjt zd)#WC-_r~=16R&I6G0;E%80`7*HWN_E;Yn=?%e;KmVZLrl%9{U)Y@QM2&HPWTXMVC zb&F3l&_9RZ7q^g`5i}%*iwi`}0^+w9Kg5+e^Eq>8bjVcd<+VY-<(RYncTAY_(Teyg zy-f$aLe=2)Q~%KUe2uiGU!>4v2WPbgnznDt7SY_Kh~h} z?c_v&j0;&5ejJa4A5ZH<@Y_G;&KUoNjy(67x%P!&*rL!$`N({C=_=fpSG-IvqkX)e zSQLJgB_1!#svM%`VXC~*D{G^c*Gr037PKYG{EY>K+NmE9VufLm?}%wwez_k~%MbpR zBi`b{j;0L!al$TNO;MVnnC^(`s|jn4JNU9o0UgiP>xd?w<)DDhfI6ykoz*n{jY8xL zUt6jVN+IqrId|EG&A7fiWOJlY&tN>t;9}7HLi+q3QkeZzO_bHP1fdvYyMq=Y-0H|< z1*pvY`!&ZGu4}cOR8yg|3CPZA&A(EcQM%^VMHUj%^C{A%Fw1h z_bQt#z1(%pEVec{*ZoY&<2TEbc#Qvr1*`y{RhkmFV~Zj{$M{w08ET`A6-BbB>515S zOIww>77g}DAoIP4c~rn&f|--sifsz8Hy|97ZfEqh1Q->LM>;2ldE zl=JF25nQDcrH0e;b3}%5VzB=uEhk|ogt;ZV_hyRhH)>S)z>R=9MI~I4R3x=iVKbIm zOYCJ>Y65E?JE4%T2K^Vwc98STM>hICULJ7hxp#CCPc9IlLiS!I7?t9t8~-^n&rR); z=vW&4^V&2LJVD{57*y1oAHB)QLGkPNu{Ld=j__x1o9aJ<88m zr<^!T*_`+&g(`*a{XtL*kJqhHBuvkI!@Wi^10cpnjdOkvTI5d0i-uc_#hEh??9YcZ zGVbo@L71?+?_6pxl5tTbLNp89DdVrUjw_$&cc8?#KeZ%u{$hcp+#Ab4EnX1rx>4&r^sF>^HM8r zHJQcE|J5ZIiLb;fuXdGcdrF|f4W`sbhVpcVu!6ggy|FMXtotG~7##qYfF7-`^If|b zr1x-VZD|gwd2-xMXyj*s`+kd?dnvOQ!n+IfQ#?Y=AG#QCvN#A5a$J?#GY1#T+0U62 zwzfzkOs(8_x|r^gO#uc^pBYsqRy@fQeMY7q?y-}Q(6awrsxP)behr5DUQ_&YHaQ}B z=2Bb?4=y-eG@FFV9q~=RtP=Vq5srk`GABJ`VCU)sfCldT)g%m%hJ`raXE=}nl zEF|!}6A(iXyf?khAHo$j2BCjld4|!574q45Xum^t^IgnQ)`PC@4KLeyry?@*d@A8jDiKjbX8ahs0}pRF9;S3@ z6-12?8;J_i-NZ3Q`S(BXu%YD_q#p}aboD4WIskt~566|g_V2%WhUM^C8WnRXeXLXF zwRmj)X-LYTf1o!^Wp3qf&X-|j;)Y+;M8Lgf;+Nt6+`f3Z%vc;_{vZE^0a&2a@6#+F z%w#7;cq`7Z$QbUd>hY2^NP9wQXZ4bJ7FK*>njdY#bjdiy#+ zafd&Kb}JM-&L{Fu=B|$HmR5~otRZkWlhi-~Yb29mU>~*LSQ!*Z#jp~i3Y+|HMnJBb zjJsg8`VAg79Qf7#!5tE?`F*{PL}a%9n)cI{H;A<#hV|SCC8z`aUTX}wh@qJfAD|7Q z{Li4iLdL;!-N30+0qp9oeahUHg^c*-1W@@3DR$VitO5iH0jbx!3T+AA1p5&jU{yS3LA!S&hYAIT) zIL29wTwo4e1mJf5^VIjf>~KP$HyC{`P#z@&4hTfS1E;>LeDQyOOC{F|#2@uzTj-%Y zta5pX*RyOm|M}&>496%w9JFIfF;_exQfQ6ZT2XXjCMrtfLN2j)YkaJ&TR;?>fzz6& zp%}+n2jl;mGtmQAjBF?Nu60n4pc4Tn@|f^JE|xiTZ0jm=#|DK)1`+meg8*iDhiE;S z2pqDLzAB#I5CTzrezE0Yf(B5BZYCZrd`)$_{1jAs) zp;mSDk$53IBE%wvcf!#-{|iUPNWooCKa7%%^%9?nF=Nv#LRi4Wgd(V>2-$X`i8&G( z+zt)lI!B)VZQm~7jQTgDsYF1Z=R)2oc6rn1i>oG%6+3+N#ergtF!J@SMtukEs4;So z4tWdo^3=9@{V!>*YJ5eToO)jZ!t_)k6{!%`MPThm$P4#jwOt801u#a;QNQ^Y+5pQB zAbt~Q``$RPP%!Eu&?vo8MFxw$44+VU>5Lrxzyg>@|K;FoVB2}cxB)hQ+dMWRto!eb zC*M&~q_dn=@!$8XvHsC2BlmXXCO4jgw;Po!|3RFg64GDNrpr4YAtgIS{@Zq>V ztR6RXH2Y*ade|dvLzu}|0CNgJfemh8xhkXS13bN1U<1>{?C^C6qz)h@bEgSpO8=X= z*s)LOp#gZ<$jA-`W0a6=wY~Raz#{9T(?j5Rr~mRWpWNA`SQIxk!1Wl*C*pLTK~BvAs8o-Vx&-RFtM}=5pUs_ zq))ieJ+K@@;ULzzyyVMiz1t0xynlY=)DD|Qfu4OWB2q{j;YAN7Dx^yyn!F_lCAA9E zxyY77WVy`1l<8Yz$C90yIXR>1ZL)VK>VF?LW$b)*RGq>1*dg0e$S;(ipIg{C{su@V zNilC62Qxqqz{1jnRX4DjGPW_+oighJcZi zLVzciGqsirrZTXQBI!53>~-1CM1J!IW|PuA?|&CCD7m%0GfY!qrMK+>wp$(T%M>+( zew%1q9bIrMALsr9UTST<{OA^SaoBkYg$Ry&zhM-8rU-}E45JbV1BBV@6W?xAx=e$> z+x0hkJ6jpUXEWI$EKR=cDeX_`#2@+$Cq$|vB_IV4n21D`I+GlgHdwHvCnRtk*BZtG z8}p9u|C2csPeI_jBC&hZG~Qe@UIU+Qflt@Km#Z$kRwsLo8>bQquX?|VxaKnc)zN;N zzrvRw+mi>Vi{#`e#_O(YLy9d+#xauZN^JsNJr_9**^FxDI zbcFEb_1#&f!xt683vmSP*`C{`Aq&r%!#U+b@dL;YTiqzgeMY-p)HgSGrki@>USHc{ zE^<~*rnHBd(d77kxz-Izg9xrJU(wZBQ>^^@)q*ML<=IU(l1qTrngq{4x8^!G8!KF; z^*s>xML$l`6B{JCO%~-XUzC^PCI|vyCccY4^KTWnMG_r*9c|}jmDXe()MP;w#24Zk zYG*`NxZXB5&0ODTtn9=r$NhY|gL#^vGD*Baa*S5OzrdQnW}~Rv0aNQ`QcK+thL*a| z(dq4>D(1N(&YjrKx2CT4E1FOp)lGe4*};JxniB3vc0J0jo1AJx#OdD#^or9APeaHv z#Q;p$EVS9k2(en|c21;@2v8D~dWBgSHdG>Pg6t9haE^5(>C^hKxzU%_8@z(|-qns` ztcvK!tcm2hhfehBxjl{FQ>lr22rHtaI7)q73rk2WeyhD~T(bQrGu=CDOxzqs4I6{l z2iP_oF8SQ;C>)6HH5*dVWY|Fssr)nSnltQ{GVGpa#N7(cVDg@`sMg4~e0P{LI{4%e zZE`qJtb&vN9g*4tRF0vCf>DD)J4uqA(M;Cl)UtHdA7RoxcT1*+6WUX-##Uue>-G7T z9W!j^VzHOh=d4ZUkB_lMTwBa#g3hwB;88QG%9q0+ib;+`_(yDi_YI~oK|M@yhbOQ+ zKJ-cq&X6;-&zcF)9x{4%U+2%_HT$&nE@#Vj?Y?&}6TT48;yQ*L3XA&-4!pUxyXkTRm!>O<3oQpR4j}*R;9YxhmUK93 zXKc8)wD6^7@6yMm`z*Jm6Nj{{Hygr+cK*E9h6<4( zoFu_crmbc+mbF(VMWh^9NLfb8Q37PJ+K!F!rCC;YUf%%B@cMIKj^ek*ipftbA~avm zopfX{OP0JYv8VV8#&l_$6;AIicIviG@`AUQ$kN;}x!tl`A2RFS%OYm1OoC(1KGRDf z^!K-l#)1~Z)Ep|hJVboRvA5sgI*l0nW2jL8v;O3sb;cWnxf6jam~|Fv()Q5s1fN*! zc#3LMR%asm$K9MYt5wRLvJ z3wz=VKV=M8dkl^)^U6l|WatFttwuIY57Yx%=kGo?KThT?houf?4ZGtfqkDX6FtJzn zYMk}Ye&Grbi}z$M{_A_C|{`h{M-2+q%oSap)igJ0Yoc%H+(%L3|aPLYo2dIorGA z5=AC%Jy!aQm)9irVXWsrJxwCT2!FU%{B57dtk60N-LrYarFnAX>zrsDhJ@;cuu!mp zVNw3y!cz+}B+KGjj6Tm9(ajoU&l(+}3rg678R|?IXZ`%$JSxE@?0?UCW_N0WM&oWV zIPX(NzIj^J;{igswvpbhrQX$SUO(7c>R^Aj52$>FplW$R@oL*&!PK!uKe`5ys0P;m zQ0czrRw^?9_3!=DaIO}H@wf}Zls7T)CwMYP{%+vYelD8X<`9NDbOM)V_%vJM==g=) z_%Leca$2BxuSfH00_h(nmQ!}e9r9{DUUNTitJAVWP)>7CS;LpSQ+0VYGCOsl6$ZZ~ zAnL30)T3XL47{Msd=h_Y=wZj<6B@FgG7*7f6@!^(`=jGOkJs~~FgQ&m^RbV9T!?`U zE6Au@Q7t>D+P60SwQWAS?`)479q}`vd%WKNv)#yqEw?25X3egtIAyH?_e{T~J4TCf^+XO2&SXHIMXiE^BU_S}yfL_`gZ>aWn%19ynik9h z?oq2Z%h|y=$?#gAwT;Q*;hOd>&Sbh3lLa5qGuymJzrca88e|N7`y#Euli;g_7_Cp; zgt+#0o!{@jXFiXO`LVxCRx_Z;JalO&`ymOWU8_6D8s}+P6r)1p=UM^Dk`h~s!&s%l z$zpz-@*&KgW$q`LE!K*_`Y59yhdys{~Zokgj@@=5E%x!b}CB!WHXKQ%yVx)|AXo>v| z03-zLHj3aHEsG=O z{QgL4@4Hp9ff*&8xn=^nB%O2VolC|7*(58f_)jJa>u60L)_t`<@y+T`a6lIL2e6U$ zg`Bzc1{5A_?{}TF-(=lUsn5|-%jK@1*YIeDu6Z<)f*ZUP!*l?LgSDA~)yyWjaWOwu z2)L6zcbO2Td=z!71wcm9-T~}Xda<&vcA#`oKOfKk{phWv&UDg-F1b}e0iR_FV^R4m z?yo>=p+-quA#qDF-W<_k3)DXG(IZP~DV36=`4D()nWHLz9;A^r}y5h$_mWG`FhV+36 zo(zK~cWRb>N#OK8re)EM<0&T8wo3^|x)gh3srv$nNO7b6yEW<2`K^Wmp|FVD_}{^8 z4QvbTO*s+4Ia=sJB;7IvK+ffGU=`qB8M_Lyq10F z*_`D>GjIVnNbstW_~dp#jfJck#~&sd+2L5{uyFX`^vBVtloyvzREJ#Hgj!6KP@7_d zU!OXlfep;XYf~*|o0BIOJZ7s%X)J|6WdInm624TKQr-S$XeqteE7KcypN+ea6WGQ;dE3AI`zxr`C&268aU*HrB1C7o{LllO4`12u z_jheBe7jV|g6z79?TX=iMskCqCAY@8vw)ge`nVVP@c3XFcJxV{`$V30=fXzb!k=E*#9%j!1@@>>mwU-HUp|K0Ph!u^k#LN*} za|nQC0?8UREL&8(QedIhs|;MvVRqnZYZ zSDD~LA)!TL(qtpXqonpTeTu8yl6t|b#-4@T@@H0RTM&U>(LV~*PEnrhr*CNoPO>>p z%cIVO;>S*&gL;d8uVS?l0I!)utU&&+75qb&XBIA;3(juek0c*{vx64P2nV!${mf4s ztJn#-5n0ao)i{y%I)3ME{DJ6l4WBV z>FHEaGV0U4<(Vap>h2jOir066_oJ5*Sqc~Kk2B+)OBeka1TO{3>fE=kjmp%GL|2Xj zywB%O=M)G=TeIl&#k5+)4B<7eCG^PGoScf(SULMR`v>~|4^h`0&gT2Qsl95JQhRSz zJ5~j?iYm4DR;wk7*sGLUwW@^1tlBkWQ)(4K?Nu|0y+@4v($Dvg-*x4$Tvy&a?=#MG z&VBB4ANR-K&Upb&*&HGieWt)tpBO!?F~$e-Q4@353jrp4Q)ficKV_{dmXDpJK>vfF zf_0$oJ4|Y5)`L+>MGFW#V|y-t-GuJ7ulrW6Q%aMSYge!49AdL$q!?>&pN-1!wlyy| zHaxC}$)36eB5#2!KP@P9va|(HxVSwnbu@?y*#J@BpBKW*9N&q7Xg+9i(nQB3sZ#H5 za@P8t%A1(0t;_B2occu2{M!o9FaqeX5LI5)^0rW7C2<3b*nLmU8n%J6P9<~2AkV*R zjxJ6 zg_^xXN^vU{TaO@D<)=BZZ-jK@&A=7|^6wtYr9S1RiVIMnW_$=q95gk-52AYk(f9^OgheqDb$NoLFSV0s%gvk8N5dpBDZT;@ak&YPrz@Bm- z3<{4agJutnqa`msJw4$kg4})Cpd4P$@l~zptKGw{-KNU)5PWn9-`#0r{ibW7_^xmG zLAJmhO)HT1mVlTgJbN-*k_G}S`t-r^-Ck}u-&deX4>eteEI)Blp^)2bpSN7k8Y>M0 zo3@FgE$DZ^{a7^&8kj8f8G?<+7ekJ=62|M2y_bU$^(f}0&aGnZpNFpR3+2JRN7}tu zB7w2kmOxo){l#iQi=A`Jx$ijphi50#8{hfw{=6Nm+#IjmgpO=>qZ*^r{0!K(u9cSA zp3>?`2zg;sW|t54CZ46adsLl&Nx}_n(xA z0s!kWOb@Nze0>*rNF^FzHeQxcM1x-Cf@AXl-dvx^G3RX8p@gDKVBB7-QHb@ZBE7-Q zfe`j4*PsGCHP%D@dD?wbHnF-Gu4W>^B^9ipdj6~OF8P8_sp?}}%fc17#Np)bGHvc| z$FR7Gmuz$6fq0X{*I@hxIh@Zd4x|9mh-bVnQUa2qeHD^KK(@Z>ZTB7p;zvFX8hr-p zG85bAjBZDW^d!(*oPYTXTs;&Il(jqc)CZr(Ys>b{+% zY3YGn&8U{j0G_dq2zTI$j#hlxVGfaOz1%uqbO+tJzVUKJ2E7Tole#3t*$48;F)1|Q z8jHGFw)l9`&RI>@)d9MxD1TfE##@uKBUehPedue|7>))xyKCo zWT1%(Fo981zZ%jUH#PVg%W9RO7Ds-e^YN7YqLI-}#Ii&BFxcz3$M&{3ZE32HB*V<^ z_*lEm_{B24hZN<~5ZWdfYGO|e(c^ug74U?5tO|mcv!0&*CjK9`c1#*PYp9+u!iAP9 zEx9fbct-i8j=uz6>r5YGuKX2V_Z<-d2%4o`KHxaTB12oo%lDj`?knMw8Q9=KqZS+x ztTUj>3I#BwSF*lx)xMfnp@e+Yrmfwpe(liPp5yK7_sc}zzIOKvH`y4~i{PDAS9DzH zHQ#R}_gb+68_xg0e=foaIywuX@eVg6lcnUzT2>4^5};Bvz2`@GMGqvxDK{>@Zhk1x zI=?Vw{J^P5?a@wI5Wu2oivG7HYinre_u2wsB?Z^7?be1?WFZ5fV;f^q%r&g2^Q$K` z(l*o5)lnfPj*t2czQT9kTpD}d+(=G6>xd}k{;kMeWtVz|dj`yMZl$?OQ~_q8j}b1u z%PBCRZ+tv4OWpQ8#A84T-1jvV)Ia%v=d{a6t$J^lS3Bhg!+z(EQ#n2H?SzP4J<<1e zpKG22=@w?k*VgAm@ft#c-@e{{qQbmO=4yS)7eX%#izBmgyv1TkZ}2?Tbosv!G?D%F z7)|l!1%-d2Q8A49l%ERP*`5okGx4&LuM0rD^mcGF(*t=l+o**nr@kL5o-9V&WTw(Dq4Ta^xTJXVfvToI1j@}lau+JssUsLn z?MQlmpZ6nrXt(iK!Ew(9%)RuQNhnYV0lRy(xb>+;(x%3wzK|KHLz580q>eXB(vAh- zniJRZeGHkPQ6kvDGV+4I9?YeMwADR)DiD*`uZLtWJ!vG@5luN@2U#C5Q26OG5LqDB zdAaaL*p|gY&^4c__CC??u&&vu6s82aM?S_@t7aiGFvK`A=gl>7696yq_9cTvaA3GygSn40Y5|3|yR5+9W#;e9(Iv)CNWWJ@!g zM=r#sk}b8W=6~q{OkT}()9x$p)YJj})X9v;4IQy_7b1N(ul4@(aWIy^eiln)b3U1t z`O4TX&8KUF7#oB+H#U^RY6EhE_RrLUn&R%lS^En^Jfg33eHdVOuKBZf?y~>9_Lw_b z5*B@`wx{V!{DN>h>P?N~=07Yv#RfOxbRMt-cPoWT%u$Zke?f+F7X0YOU2S~$_R1vI z=c=7T^h6{Gy9z58(`dHEe{@)EiPX0RPFxnpRQVpxew5Fe9!A?Fo-{+_af7;*Q;243_#BD@&2KrCY`6DXnaX7C$T16!dJ=f2^?I(|`zV`y zxD8_7F_T%n7&r&GeBo&4wbwHeR1M!$PfS3@XcBQ2@3I1Re=iO#Y`z+$lFah%yezr* zeFvrtJ{NBuhhKaRQF8?*|Nag`xsP2e^(3}d!xK75ndrxLkMt-RygQ!u_bpyq-p{MP z9QHdOs)HInT0v0609|a*V|f~MkYZv;zGg3qh}qGgWwriAO~r^qzIbPx&%kr|%j6%! zF3Np6lJd?*D>JB0Q{cZ$$J!0;*FHr;bzC4~@LsT5^>W~qNI{7860m=OOY7nn!>Bdv z_W1n9JyjuSf4lCX*PnLjlL;BraO^wWg>L4`-EurVh4sngalSRko7=7S8S1&*9V(m@OV-rbK9h^J`lDDB|Ujd{zy#OCPg7xAq_U-6cK2K-`PBt>gnd?bslgGfc} z31XBLsG;I~XBkYJ7jhj$%A!dcaJbP|s^ELXtFRWhS4!1lGeKedMmb^~U;l=C208_K zi856~u9`Jfk9FKD-AMUp@mD>?x$8&X2dTqN92O-*__6Kk44C>Z07x`?R^PNQtlb8; zt_Od2b8&VIT0On>wL&Z;$dl1_Tm9GILz^@01NV8fdfa3N&Okbx#wG9ii?1O+&Ew-A zlCbNY5!?PuCAaE83H%PNH}#^+-EZ?dK6bt=L}m+(na3KN7_Ssg5@KD4*d$nUEF8Bo zit^Dl>(?gt7UPm?Wg_}-9yY621o$qt^f=yaK1Wm7tdilv;Vv?@H{(?dAKNY_*$&4$7Pd zFp6XC3||0GH?E`6sMbkG6dvIUUe|C;l6ErvT6a>H_#t7Z+6vcUQuq{_cLsiJunxNV4kp96^$>tda=l z3@)Eb`!gY}$Fcy6Q-_=<#z38>s8VS-Gld#?qp+J)&C0(#m}-ajS0PtZd>R!QV&;gX zwN`&%{~}k-Ln`gI=np%+F-b7$8m7yn$ouDH9c9hFw*w14rqg@aj6&gq2S>F(yR?Ws zj2$^l_qKlz-=*z1Ro;w$?6di$7=8a;Y|B?@1Yi`yb@m?eDYDQ?&K8 zxmAWk#sSzqKg_J)Z)6uMP$EJ)<<`q*6NdD`s@=dE-b?dvuRT5*faZu4V``5eqNYK~ z5a~3B@DaAg_SOjN-}(iqoEwMCr9$RbBWKwKCIJv&@h1UCnruyO+83qkTH3Ps>ftnz zJ;^vp+y*NFI8I^be(m^m3C~{%ewq{~6$`7_7o8ww;nqH^#n0EGYIwo*^#r%F22nU` zfrK?ML$UtjRzoU%&AN0mE)D++JTbJEIR!C`)IbMNIpj*-hFSQl14x{(42eds(vX)N9TBvGj(JNWR? zH^$tB01HBK=3w8R;2};RQU9-?cghLyi1Y(;;{)3{<{H?$^4^O}Gi7W-E-caRCMe|f zB7)DqX+H_NGe&N#vkoH6(B?7};3oZ`$w3o7IT)ajjlg2{)B`qTUeA^nmOkOhnyhHs zki4BCV}2x4d9Vq>lH=LFZ*ykAX%k!y>U0o)9i{=7RKaxJE|*)1jz3<2E|1$|mS-<; zL|~T9NA_s6?;#0MZs#2{q=?Srd)2kl3&QF?8eb`_2c&?_={$uDQ?B6IEZXA%6}=}~ z6{C}28egrRXKT{{ww^sDCvwC7sKkA9^u|49vagB!H}OqC(4C(lMm1F_1{>pap{PzQ z;{Kv2PMok0>-yvN;6iXdlW5k)>3mbVsp?)5ZEk(|T;LeQcXcCJZ`=(JHJ}1!M?sgYbE9lA>x}3A{X67{mQ^s{4wQ{cn+~ z7O|F3Kk=@q9)n<8T_?{|cjE5*DkE$6UJ*DHU# z#DJKUExo{hZu0LeI>xawozmVS5SI~hymjwtOVI?9)T}vojUf;qO1sd&6|44R#Q8q~ zAbjS$C_1^Up_pTl)CzCTa9-T=_K9X|_->CmLq+>8^~A-umYePv*7SE|kg7Nh%WmOI zc+0_@Cw1a^7Z_{g704*_mk;AM)!Zb5?m@r05FF|<-#$x*eTn-Q42nGDZ+_s0?JtcJED8m@Zw8#uw1JScb}r`>^_YNnX9_is!Q_657lBfs zw@?Qqr*0Xe4TC=21f)E%w32MYC@o-s(UpWO*hy{dOYN1!1jrfF0#x?Ve2-Sfln&)% z6814SVs`0aqLNDKUfSED!{|$p(@yuTafb3Hm;bMeS+f35skvt0;{nN(qA`L>XQ4Mgb$o`M4RMZR5)DgeSV;l^H62hro9Dht4g_=&4p zYXrLthjVM@Ch=+EntHPJk>v%{8G^gO9&6_=1cjw}iP@Ij2|$wlG!Fm$zG92^r}aE?%B#2hF;*uELoVuLlV zYm5dC=bxvN_1+q4d_wGP9U9CyxP*j{B^ZMY(c~NlHo;fHFIw!#k;^M}EVC8rcSS@xq^%#i% z6~J`sB;GYUor*E$k_DF$k+A4B-z>dJRtLXs?eEE2i=_oecLYQ4R#XQtYoZqnSq@=u z(bpIsz)cp;jk0dwa1?py{kIpj*4KsGm_xotbDawVY(H+4!$I>Ut%M9TaygnAk>K3d?2?H?f|p`z(B!3g3mniQa8Vtflo9C-h9gT4EE z{cVBxUU@FwZ0ouQ?eIAHJ+pfgLRe)@Bx8(W5H$s=;1vT2%S4zP6mN~x8Op%k*$jUx zd#vf;jeRxxwt<}N+5X!^ON&HqMf{rDg54|y;?TgVU)WqoThc#FG5OEx5v1b%cPOo?kvqx>=NJ;Ei zQ+pD=PR4wt?Ep$ALDP;`9E#`<48XdO(R_We8U{5G) z!ous1)&9ro#gv5SO=%w9W~*C6JSlJkXwck(EwPn4V_8dhik<`Z3qxcae2^JR+ld8j zK(}}9+MaLRZbdmt!^+@1S(bkTur#`A-qZcHKTC6OSu5shD}xN1#-3*~6~6LGg5#Ek zIPQ$xNpEw=td*odufs@_%8f4P8%yv@P!)igYMC^e8@!U=OcBYM@2BED-7bmhY0)%)fOm$fLw>EVBe>B37=0664 zoTqzJJFg5v4Lh_IG752E`d0(o<+t8qB{$okm7KZ3N4J|h4A*+o2xGOY4S;KMApajT zmX2Vb%gM#wX{#c?Q+o~Z68KaGR`r$w+W`#3Nvgl&7+M*1+1GF%#C08ebQ>@DkjCXx z4gJ1n;3x-4ET}A6v?&(8i5)|VjTJIkuZe^#BzWiQR+4stQ5h!D@xvt~^*h2bX%ShFAlBn~B$i62Th_nB*ALyG|jAYnrz zvp0=8uZH-1tsBgWt7~Ity(R2d4`@m~jfwiT3Tj;&Y)}KfmF;k#Rs0$QB_?hU{ zm9E^R2YEXA-Tndmi}4Gi`iizSTx@8Ced_s>Y0@T(W9R&m<@n; zuNv`2DLvp&_FgN6@5O!2)Bck>o@bc1)0C);xKoFtG`StFtP0jzV@@NaDgC1;1rAvL1DyXGRXu%r)$shdmmwg@}1ckSa1Zq@WeTC!b_#} z=^YL*e@Do2N84;i>-G&a#t$p!>tY`gTJjXLGJYo#2M=)y%5?%u^ti7Fn~7yEE9VZL z_p8B0OUr502~XEu%M!?WrLCwlQ)-vu?#&= z?`DDCV}~}K3a6Lzv&H1YQ%SwaSpe+Ct~;q1JQ|w=4@p)}#kje(!6dkLuWlYppA^T+ z=(}74`eZ*R{n_d_ee~elwsb5({z297Nxj>LGp*X`Iq;9Tcc4@_|IiDUCq@rJyqq8= z3YI@HVj!lY3qL>%$MWtKMNE>JH+9EzqjQt*O~Fujn)ZIdy4zv&{)4dggAH^8qhs72 zHYhGoi1O$YPz6s8Nb$Un-=cJ{ZxH&FZ>EIe(FG4>vL z8o0c6>T2UQ{d1>uxnglPw58_OqgDo9&Z7wE8eyb#EYwWNFi`Mv%Vu6XJ2dh&5jSp9 zcY4p1mP8C8JeDhgyLI|%GQ0zzgp92MfLSk|X3gSR?PoO?A<1G`KVcQAr(BT4feO&p zI-*}|x>9B{A#8p!`u*5&0d8kb5OaSw`F?qhd8juQ7FsUrfwXsH6A1A+^me~vZ)$-4 zk`ry#+jskew|xF%V;9aVm4}O8eE4f!1U|AX`JPJwepCO2` z#PDyU;M%s6;4*#@m5E;sQ&Y87bj9W3u7V&YP7sLMs&PcUN`%wikN+kKi20(o(z+aJ z%^N?(tWD>2Kcg{hSl`N9?latler2)k0)2CaXfv=>(-vhfjrzKz^dtWMD#TPlUOdrt zp6kBW&bKcFF{6(Z#Up9&Vu_Ezxn$COaW#fG2x?^@}3~isGOON%2L^y)D~?bM)e9!UJ31@Y3>Om5XoP zMP*N1hd_c+ORU<(FH$4M2aRX|=~YM^98PnMOTqRBluT1$b#QUCur_x5!4XI{F!!mL z7>qcnY*-6fJA+L<;R-ZSRG#Zq90@0nict2C9`WtS1B5#0v8afZNR<+Ykfv{Yhf{Z*>i7Dga=M^Mm%&6nojM zD9~e!t`El3;8th-Dz9+sPK7W3`U_CZeKUDZ@dZ=jnR-PbL!EvlGr*%|cutOG}9n@uuIt+B?|V%>-`G-3wijkZ&E{)!W^r zxz}-bcl_x6T=tyZW#^dENyix3Lm}k0xUu!`y$Mm$>6oT;y5#2q>iRO@<7%&AiUcrH zn}9qA;7a|4k`kVxQt3x6q{Eh_T>9niX>pjYdQ&ASi^tu?_nhCpNOr0#HKZxQ(s}5h zp}FH4>lml#E%*k(S2lLA!Zs!S#`5z;Iaw@c?xXip7?I}XgMHmc6MGb#AZ$XEv9#4a zz3O!_eSWnjF2H2qEp+{a-VXjpl`ms#M5?ona+y(h%&4!gs#{H%w}Jn1H86>Ut?vV-gjMb0*E=( zP~h+j%+@!?k|RsN@ktEb&&OmC*7HeA*NUH}>JX<9^@Zbu4UdkP5ht?~^BTeGfm`g( zYx}nOLwQx;+URn%$YnCK_zSqzrtR+a=b)wBAqNoDb=w zbzeVk#;I2SsZD)lgM3<(Ken^+@WkBeNbF$AT%7%8_0BAefXumNTB+7&K0Qg~TqIwJ zeppvuMK{P5vG>O9S*0*ktdOcjk7ouMQmSePZ{W=iJ|5p9G)w1qW?B$ zTaK(tLvW1NsYpQxrYhiV-l9QyJHVN-o|||DJ8?X!3^uv5n->!je-FzL0W*I1oES2e z;r2ME8GDnQ=)Ax)cwd@^UKJK9?t`p{1jzSnYq&ETzN`9ZEa^k*bC{KzYb5V!eMU>` zzCH&0@S?=BUOU^I!w_{MOqDxagw?y{O&#d{JR+|4ko2CmL{WHroU98+J(0AokD9WD zg3n6oaj5`))Yk@##}Dsc(yTO!Tjzj z%YBI>qUG#ot9r}Zqdl%*W?==d$YbcYXWqU%(VO5b9iHY9C;Qsx(H#BM_DGkRA_@7R zBD#@qh;C$vxRT0dNmnkXpI6wA;=^c!CX$%@G?%UgDi%NO*B>chQ^k6d3zl5>@Y;}yR)N~S_K&M?Hat8x zJn~)*2UkIEPn)VoYf zo2Gevj=p7@+z*&iNPef}a1hen)9ypyXp`sU;BTj_1nW+p0}XAx2I{E{5&Q}oKn->% z;tSjtub6yioO6;0K~t+HoEfJ^!|~pTotyKgZAxopoG!m`&E#EUF#F@cMd8OYF6O4Q zx#9}`TO3dX=Td)e9g0Kn-jObe60!)EU&qq{aWykyp9c;>DG*BBUKXa6 zm~;={gd{|C#2wvgAjfdiEbnQcyEml$__#-^;^{t|G3zLU3#0cz5xsGK+qAK#Z-c&A z%*f&eCo5A5xl}d3-8&B}$)MkCLhHAD&OQFL%KYrNwpPc@6OJo3Q&zz3aXQbyU7WWL zvgDB2LzHvg(l$Jnqd0u<02ZBCNg!~;=j|{LLxp6|E&5pU`yw*EWr6u^m*9yQhFdn>Zm!6FZ*)mH~%a`R;hL8$@?FMa)FzXXIMQj{X+TpSJ3K}kgzM`pTjQI9a_v$ z@lWZ%(49I2`f$WW{uV zSJ8JPTkzyuuu^sk`CQP(QSOwC?g|h-@)G&g;k}%CC27b>2T=(aM-v(6{Q_wkUd7Nt z#n95dWzX8x-^HR4fuk{W9Zy_5=Y|v4`lMaV!NaR>OOhJhBnTpN8Z!^%+JbW(>zjD! zECijBC~c}AZ)O>BoVRzHEID$WF0a>`rRe1br3Ty)EN4D-z#(eMMT5su`wwgXzT9@d zJjY%eM3|UoX`CG-&~-)z)pO?I`iGugFXR}tmO0qD`fA6oqr387FF|qoJZ1Q6-Mx7QSVgtNx ze{Y7V>?`)?mC^z{V8+UG1k6j4IV|yT>Xmx9Q!~6+4Z2<%nAsa>UuEEHcKDV%x6P>S zfycDs@?>t$)~`Qu;tG7~$a@;#(lCn#OG4dtHF~t2Ae8pHJiPa<&Cg#{y6bO2r}a9j zB{tIde`8ra=P==V$eJjGP$Jclx$lU-QMNLds}2q=csa}hcfNT}w^3&ZW{%gnM= z&N-&ZKg|}6RkG`z68Ek8D+J|f4!D&O|>TtjJLeq?Ke4kLNw?P%f&K z7WmR)NLKY?-WT*0`fSWZtWz!sy`SjrZ*y}!_MtbeJo7mqtp>dTo%(Q8E|xzJa6lVn z%qQOFy%MZc(lpVkVTuk&5#_>1(TFM^{8)yiM%P}z_^r?}PijT$19Y(#aUacIO}Xp8Sg1nX$HPJ+{9(ZkVaE z(a}?qc(;fjz>#xXE(M5rDP;JK2hDEv`9aa6QtM%hQUtr)pY@pOU5|Qe;@qU@q^H0! zM(7E_MCC%Ga@gI?bfr9-a_Eiy%|$2XR!l--eK_m%w^+7KhvQ$N$w`Tc)v#y3`Y*=T z&kx#yH%T9rmN$55XXqvALMmuINLS!%xq0cFzp}E@<~7xK zA|q9A$H?q|DFzjN#1&3eSP)#i%kc@ufs8!j!450>g5b=ci%VIZeX&)^h zYo8`q;MD_>q1Cg%7rzr4ISV~sJ&c(q>x91|tLZ~w$DwA&fW9F}IP6l;L1KPJceq?s z4G;3sCb8b-9x;+lNlYkrc7WD@&zrbiE4Ry@Zs$Kjn>abP!RlQ4SCZK*<=<@_e{k?O ztS(MwX-(NTtzxw{H=)e|Hq+f};Grq4&Kx!6gS>)T zl@l<1U}4UN{M$@)&d}DDz#I>+V8Zy2K+OJ1LwObtOM?D$*-zjT=d};CRNq~KgYWK8 ztDf$>VWFXa?Y22Ak@+i&aZBeHr3_l7X?mrW;2iL+@Aesa<#bkyYEfy^^oU_44*`lM zeo&gk$0a%a%c5Yip5kEYlJAn)^B5J<<-u{lm7RdE4c6x47aWp?ESy8=2kCE5;4)dG zy^F9wsdooS`Ufi&mhFJO(aJg(y|BTXlsnGAxkYh*QSZ)BXw-C@^7Q za=aGemG1KckPw*U>hg>I!Ar3L6>MGoJ(49oZ0sXgFmk3e_WL>J@@O+=qi| zkU9G9a1>}puT@j$0oj=NizN!|6i`m|q1jpV+lWzrGTR5gUImavq(vp-X7ra;CN`LE z)tt+l?Ud}MSV^REVog|#0kR!@F?M5P+?4qnW2Y2`IX^GEbYl2)?i4y0jNUj}m=VM7 zm_9ZonlN^0=l<#bWHtpDqr5MAgU6RIR1cG$nw@ti7>GHa%g_6Tr5WDMt*8GaGGqsK zzE!OA&Fa|T0tZ~TfCC(WGc5vtsy@RxG_z1qAh*md{9pY=f$u2_N^XBcQM&UF9BXtMrvDvyiR_NOIGDib#xE!#*6X4eXlH_hQv+^h)rrTtQNx-0 zU#VJ>^UIYIt0rJk@J&Go-B^pQ3Lr1Q;0wX`T`C&-Z`Pt?dM90%wOwmp(^+RarOLFQ z6Wno;*5z0cO|J58?rtnCC>!nd;quLk%kjxl{bV*pkgU@F&(^R}7MrHmS8E@Ce-z7RL}7B{7Q_)F zX;Cs`o|<9wVF2;f_twb2VNB5LhtXBtF;!D!Rw7RbP#;lo%&||xJSluabBlbyA0%u! z{3R+40T3lkm!Xz_S5u5WvdJ*n*)jC;W@{ed606kF9)wXbKR)uiwr}j+x4d2%W}sIE zs_bZKeZVLLWv0B@m`d}lE72di`IMJ^Bz}998YPcd)?YfhJL>*e8au}A(Hh7SB-)}Z z9RoymfT69l(N%x6>6oZm%u>99pAAL#(tD(|_B_iF8W1dfC4DZP_&6H^pmfL!;^4LZ z_5?*>j*M|zcE^v*&ZR*kE|Mo!mP4=D_b*vPfAz_h|R;hp2KxLy4D$ z$`H+FT|N+n8M34z!AJnBBF@b*L|?I~m$6XG^m$Ut5=gn6ms;TWV{+se1yTXPF!s3G zh5y}0dvxg1i>8UH19|Y9vG1FcO1Ei;S7)%w9s1C_!>#QGcT~Po=oQ=an1Y1F$<+x0 zF$!5|^0s;XdbQpbPelaJkAoWa^oeT!x$qw{MON7w-_1lFBI_mjKdmN|q|ob2ltNv!Xx+ate1_NMS2Qu@ z)xCsePZz(|hUO@}n&kv>U`^H$1xd)@gu0B^Vleg(Qo5JAhl85NLa%O)7#^b$V<;4= z#BvyG6OP7<(s*_6Vc9=~qL%e<&>vBz`F;LP5_x@myH+=-z~EnXs)uLreRa5WTM($m z&`2XbwLq!ET;IDPC-x;mv_HBkLs05{Y{4@q*@+sGQ`!x@zy%r#PM`obeVnZ00@3~R zw?4rc#LP2OQ#(8trUlaagF{0D`lr=V`OB+)bSv#aM0zrhR9@2oZcYvlO>0~^@R9kL zRxoPgJMzwobN;<1_Y-!0xXT)HS!T?e#GO&wz^!XRV;xoObMgYYxWNQ5D$d|fT!nq~ z@Lh`<$(?FBi!BzWLB6N0n})@_nkFc={O_pG(SXOSZmJ6w=XW>nqT`UeVG#E9h?==v$KX(Vo8Da@HRN1=DM1c-IE-YwyGOpZ#+O{jfL4 z_vq;8qM{=Crk94Fnru2itAD$jXR2-1eJwwm5OhU{?k~!Pg<%>!7oMrB@69)qyHqPR zvKs7cR{C7LXl@y7sCwC;q+s$*-A7nq><4VBS+)sKRJR{HYQFOhq~3(A(?q5@C^^!x ziN(+Oi3{Pdt1Zz}$9WqdpLX8iO-?Fzg0FlwCm6B5)X#}c!W@^-?ja=2_s5}E$EfvE z&xJ<4obwr!p;qCuWU0Mq+P|WZCDn#NejKtxkv%$4p0&0NC2Ul;WUMJJ!`8Q9aO)n4 zTYw8atl)B&{vlP}Lpw($YolIp%{O%(oS}O-ba)8^o0g<&ng*vDSP!+y!Gx(YHZ&4` zND%X=RzUtey&a^_X~z%N}yd}o)eB_Xl05_Wq2YTLcdaPk!fZ*by)7C2NMG2kugJ(Glvd{C2f_P`MjtVL_fhJrZt;GDU1+o1!e8t6D zHLdb>Uev_i6)OAS)3k&H<;Z(;sBOCF!pgu-6L?~Ci}>-9}%^HNjqviVXT za_)<$qN1zj71D#*v&+lX3Y%arMbgXh!O#<)&m)0mf-bqvabEEx@+C)fTeEHI3cslG z^7qU;$kXUk`52tY$H)fo8IZ}$Sda`7g1!dd2Dw}yT!@sFl`q%!?=}-kZ4~^O#2Q@r zH$SDOW*?!J!o=(wy>N0&9{_IRg6YbP`HXiwtGYZ!XBKk#q`&0~rQ5&ICx@6wB>eco zVIJT8un*DeLXZ&hL{DhQtEJ$c1OW@03yYGu_%_je*!5Z4{)l+{;V6O4G9mDd=L{;E zC3$}(`rFN9X|lhU^<16rPRHIO(Of-Za`Hy8P0nf8|4=z+X})ikJ+FT_55sake4fW4 zk-D+uY%*u5V=Sn1rY-&f%OFuF8|5DV{b(?wDuj?64}8HkU+jYU3vWDpf5ay6$BUY! z^&CmN)PC`GdJpiSS36j-qn%8{v6d*;tDUe%`;vRA#ER~2{vAtee39S=lUnx!!2W41 z7n-|Q^f`ua|90|HwN@vIIsQZ9(pyK&bgMw?d7miebWH{LdwSq}Z!d^n@TGgScKe7E zVUBO2G=iA>VKA*d-sd)M!c*lTGiu-8B5sd_$6}XaKUTbpJ5~s!6D(~Cj36KLqy=ZO z-bR_%Cv8tNWah-ycPl;qzNB*0j;3&9VI_I?{%i?b-ljWA!lJ-B-GT=%aFVU~2=C-> z3t@02X}MtJ&Tvn0r^5OI?~iiLtqxdO8ojO2W6BuE;K7?4)Z}udg?@!~n|t@Jjzyy) z_FTUkRJd*tA$|2a;$EGcz92&DRGL9c4)|ewOYH-K!Sc7=(WeS$0Sj!sWgb>`f^TaC z1mMpr;5@o=(dYrIu^%~7PjE?ODKYvUhnL`37sTI0 zPT=?vFX3^{aH2GWj@+}H*26x+$8PaI{=T%kacguES%b6mIQzg1I9SGwa~Ob7|F~^| zbp9ySg&rTxa$-};RXO3GXHSZ3jJys#`@iKG8;Tx^RGgBLcTdWCauuXAQF1e>+0lT# zy0U}%(vQU7XS`NpLbXr6oeBhTjgE==&IHYJ*GkxdA#o z!Jzkjx{j+wrT~M&LK21RbU>H>LgT?l%c!S77o0kn+Ar!IPf^L)#kt>GbD16;Powef z)y^$3?ZgrdOTRxVmGF075P%{m0FMc_lGp4 z8|_>JWm}^~HLgg{yxd#-{~pZ?eZ&^cHB2bHB35tyc3XXz1E1Z@E~8+ z-585d|0Yj*kL0%8HV+`%^tJk}MZS}B2(w2x-@_%f(@trCa!4`%88hukwT zLmjw)B)4>BbqLMYE7jX`&}Wr@E`b)bH3iVLQ7XGs)n8N67MO?F85yL2ksbf~2M2JU zMotd*nb!14@~2ldajI)uCD)0_&Z&Bx7eim;g zlVt|5ZJW0OZuQ-jk;giMsbkUm1Mc(Dll2@kwbUzRsa-HAycim{@_c@=$w{p|Nf0J9 zV~Rh>3(biKw^HSL!2uKB+Bb+|;$UrSxrfw`cCMKF`NtOmRmt`yC--+;p7h`=e+$OI?LguQ07I@6dMU=uxb`r`tZGe?ie&@)(`bX)mNSY!{ zZrpY5@!+#_JHyk|>3{3iJ3|MaED>dijLb}CVcOmldY39$G5K3}bB?#(YGKQhsPO5C@&(~*ZUpoJIz9`pf5cJF4_U%SVg_apMy!3;q?d{Qa1=B@@?mPIF z=EQ6hTMVqqT|IPOuk&DFEbzlZC2KpROM_-FO3`eB5xW~Lec}@RGA6E=isiq_Oo^dY zrj;-IR>I0G3(comq(UoA_Obx41YcEK)|y9|>&j6O_=RFln)2P{u&l01OT5OL_ScY~ zM@PV4lT`6ot?&pO{}#I3(RIXf#R$zXD#I-GWHR&1Bg163%s;t4O>?`mpt_7tC1cLM z;~x2Vl>gT8HPHXv`%aITc%kh@g@C`Xl|LCN~4=nchr4>fF_; zD~Xv-yj37iplz^!Fs4zZ+S|HHr6YXHxk*X=%!I0?ura1E%%yZ%6;et~7 zO=aKK_i=}>;Xe9-j=$%UWawf*i^GRLpWmo}T+wtVx%R&t68-nxK0U&jZ;aOQzYio2 zJ^xD$RnY%lRxZGn9m)e03eGJkk!xf|A}7aH9{laf3QLG!ZF7Hx^X~=TNHK3L@7nBe zyv=5ucTMr0JO^m7W!I$)s~AXF;y2UnS+T7C=<0h*+e$}_%>q>YEYOgyT6jMDk#>K* zb-(%uZ(d{9{E7c){anbkZor%Ct&GdhWb(#56`xrurl-ox$6y^NUFR(KMf0S-I+U&m zPJMe>27b^E4=Xcj*L5vVEYI3Yo(sK3Kd4Ls$6I|cwex8aH*- zj9kBz^LTF7$V4-5_~}GFlUR*Ts4hIqRME3wuC8A1{*=i2X&Y^e!wbsNMlP1-mm6P& z1AIyk4U!_3<~$acChb7Bv`VoFRgc;iVGfaBKqqeoFu?pykGUEsSI)HWP5aA4*44fK zGnAi{m&U}oRE}{KqufpP$y@Q{F_sV?j@7kMsgr{1sY>%|L))6p=Z{MKAQJYjXWFJE zn=Zn5C-R>|mVcvirYmHbnkb_?0>*(uKec$YBPTcUOaG6lua1i9jk-orx}=emZWNRb z8B)3#>5^^+hDHfN5fJHi2uHeO=pMnOBjM~8JQJTeBrPFN29ele5ip#I?g+YDxFQ|!ZIH`?G~ zGt-ifS%_PCnLsQh4c;7xu-4>f2=Tp8UQfTyeysm}P^wXV4|2c^X#QJlP-0f=8M9I} zS!8@Srg)z2<4pg`3cfm_wH@#M zUEVX>aiKDg*(GL-QyPw$ao#6*FQtwp{PunhZTg;>tptdirJGx9oWN{))xCXCLxkX- z+dM0SkwAA6;VgNLzoZ(P+&k9&ytajZk5{NhS9nz#A7+0Iac94O_GEh}PD+e;?Ya_5 z6(<8rb+^1790`dzjkh=U7tVR(qw+D}x?_&Kz(}SJ#kV)s4 zwut^cDgmEeY6aj+P(bP`0*c%^e zyg5-FdbUW_*oi$<13a6?L+%I$LWhP=sk^|P_5HFMYkBmWW{G~MOTI zCOf<_fFIq)pVnA7YbDT){kydkK68)5j<6V7;pLVPH)QkE9qamK2|{6+GdOvM^_pL2 zLNtfP+VJNH==5lGmJm$S{&&uwQtc7NT69R>*fCl?R-p(f*IT=MghpTY|GeSl%=cLO z75^+Ae|r>4-YBgM^$~yMum7%!WZYu$W7ayC1^toA@Ms_VC!?5Hq@)H|U4Fkp(yl>; zv{%)p&|3&f8_)*CLc;h#`!L2=Zv0xI9b%_$Kn$KWrOgy*zR9D}Y^nO-E_Ork{`Fd7 z;Y4H{H6ea9r2rug-V6Q;s8V@rW##QyR-5~#edlDGZ9@gMlO5wx#%v2mvWs-fg!!g4 zU$v1i^Y%!OBtP}v@gs4{c9pC6o}oN(aG$`>FGF00tF9Ja(neW39bu8c){$}R-VCBj zrx^wbe!WBKyGzEXuoWCSP=`#8kGmyCE)wlk;z zVw8EC|Hge@pGRe7WwhN&UpT{qsM!7Z91HN`Z*w+2E?Bdhy)-?c!Czy2a4wQcW8v;H z|EBFuyV|o<@lA%P$f{ncNuF#AyXy9Ri^IrQJ|{yqI!XAO+=JkIP66@5w#s4^qGY?aeY>)A(wyu(MF$Ur<;7)PjI!T@FOIBRrq}k8r1r>C9Q(-9pyso zN+NTS3*Uo5!hIgBTW0N_p9g93GOoOhni!e1O@XhGX1?q-3^oe z)J72<;En-quV3d?ixHWkJ}fm7-eD8eA%|TkZkn&7_nYL8Xy0i_&-^Og(oNpSZwV`w z%g>NQKZ*Ifnx@MMCgrxvqmGu_%Si9TG=I=oOZOe|7+qj~+yrCTbOLeL39|N7lRwMP zbB>opJWvYeynXzkde@*(w^V0DyzQ>Tq5BeiY2Idq?A0FRtIstOC(YeSHq>Jf5)oA>uOs*o|Sj zy`JQlUOcc{pq=Ep6WfnOd}|KS-fDYr6LuU4-e26>Uc+>v6nHOeyV&ir;Pdux6eGFS zwZnuRy`(SV?PA9T{mbhMq=e$=sNaB8(%D!@9U9;ZvDmKWI2J*k6L zk0bQ1S`Ny897)vGb9{jt&V%Xps7!IjwIww|>nb~rkseur28=A;@ov98m zhdHX3FW((cw1SX={Ac<36JFb+GTt`?&Usq9oGZ2E!!-OB(&RTw0btaUY7@5X&E0Ju z5u*cgM$+LhHgR@@Sffu$+>1oDIkTgIrtPl#2Mq`17zUJsKgZh&IZPJ)tE;|KakR~_ z=-R1g*E{54qTrE8quq-45W3@Y+2`Drn3?H&hEo7f0#5hnAd)rg$~|dtX=^o-3~UWx zNpUz z0Dw){5rDPhy3k4{Ld5B?axW@*?HV;N?)~V)#!v;%OCk~}(39+F#+UXuyr8{hT7oEi z`oI^-+(CasN6j0e3jA-0Fg)Zi^SsX=*LF}mftWY@I&}Z8^j*f9CkArG7mj5~la$X*-#YO#%Zz&fAcRO$1Io(4f5_O za9ny&$Y%emEZU12%4Xc01dB%?g0E=H7n3J{twJx6!Bo1xG$P-)mw4}q=-eyL;?q;E zf*;ktX-*N-i+gnZTHK^Pkn>Ck`U3@BY7G%NxL=Zp-Wf5jv>!NE-O-IhwS5(*aK*5d4UB48clF*2aXuGR-dL)nsgTmhOB*)i9Q{C#QM*m~xs0rf3 zg@AQ9L`s57C&jS^P7#ii#jOl==Zxu_(u1d)G8$BSH%2LRMqbN>=|dM7pw)O|rL&6~ z5FY9(esg0)H9zp#O$ojY1p7(dD#-*o==rnXxU+u}8$aP= zugTy%2NA3QYzQwRNd$#`WO!Er*yh%bBs{BXZxt&}S(L~uXqjHDJ*jzB@yOMY4v1z< z$VW}cx@RxnvqR+aJlAcQ>3E8~!1K?=r^AD--A!#FU0BZHM0SrgUd!LzZmg1Op1 zI7e}cL3ZN;zcJ72Gne$nYi)5SU?l>?HHC1aT-QHs#;C^er6yOn&wE%53>!y+rB$Re zpVuEu&OeQBz4tDj#>@zt*t@?`n(!y$q2do`y6eB64ZpjsbDp(OKv;=G&;ld}7Y(?$ z69nG{?@vKV=I9?t9fw&WV49CGgR*BDjo%>tlyjfaslZ5P&~M8!clVDYmMbUhXU59i zPfVUhWp%Ms{a`rV7U+y1N= zAQu zHdT;_I}@n$$`NI~N0iRX!_SKc>bX+3RFkC}yl7d8c+;;hS?*5m7DUFnQO#g()O4j3 zbeeZo+F|q499bN1s=xDE4gP|`k_>%LGBwz$Z+lkXsqd0;=vo*4yG*V{Jm$HGrzdFh z_?pyBV8u+zpMIW7!eQ|V7G&rZgeQNFwDIe}c1eUr&O5tc%A%@lIXjAM9xvXQ>@H1L zK88QrP&$7iY4TcbP}@g~?>G#!pq>NB>U9r6vASurYVu{d6aC(PMUbX|G=I6*HX$K*ZX7EWMq5X*I|aDo0pIJ-|szQ~>7akJvlUsON5U5w3Y z+8#A-uyf9zQRM8!ca=?8rd(1lqjz{O3z)3k`Kg zv!oMzZnsTWM-Q6NEt-NQSjZ)+HR~1jwwknL$nM3{Xdh=WGTHzkpTm)$qc<0}r$346 z7@mQhr_#BY95XnqeNj4-MGq>!i)nS{O;Q}A(3ERTp9N@JMk zw7X0T>w%%u0^jTTq@kH|vlfp7y_2+|Lc?TvRhyek@;BBw30i~PPWRv;C5(`17Nm{}v-`EmpDms*Hy?na zKR`w1^})d^EBB^-kb8+Cf%0qsv!Md1Fr?z~V}PA%=u^DD5N;xo^Lcl$h~{E%T9nn42&xpi0Z8L zN||<9UgP$nkWjrnr)zQOf~BTTn!ZB2AH0$%8%e9HR_aD*(C4aGip_0{CVDig2!LS9 zt|X0G?39D@{^5$e&Q@>4ZTG9J3Z&l&TRiJA=1x*v5uPy_E(*>bI%h(DMf_3oiSL`D zJP(`4egPFCBq5}+C@}ftrn?EM69#)zuO^fa?WFrl@hy{Aa~v-&cYEDxW-&_K3#70Lb9BFSsKug;LRWq& zFF-hB3Z5j5dYmi^i@CAqGwqY~pctb!4IlJDb*Ik#$bm0n;!l!=$I`b$ zZ<7Xho^PDF0%c{h>1g_R-IiSmODGDOVh8@C28TxNvbnj1Wk#}TJQ&cKvrhpwmmV@Fq) ztr{X)%Ez3(-;{6OLi5NP)i{N4OqnQf^8r$iSxW3YEmQ)li6tGNl!F}(B8XDQ2Rg;M z46T9PAucuDX;bTTz+RCAYO&^ zPOE3|yDVou)-Z3p>aXhQYu_iSa9jG(xiM6NcPE_$Pa?_2|BwoQs#7&`O}Qyw)bU%- zpt@wMNN$cc^JPa(BHEQyt2R|goM++(xUQ~A$F?tt%dIMu&ow%%uW zrM=p(#SKHj=F*bWgRva(za%{N8pKs-n`Rxyk(Xsp36GU%2|{}&t^6k9yHScDG^&*J zxLB#=F=Ta_2hjk|VbvScr7~@PLrEI(a{B?CMK3?^peJ%LR>Qtqcx69Td;Eb6pH_c} zE&vZGLB1f04X~w+O?6vMEnL*Q%d`^KMg!N(Z8%FW`#+Z3FH~v9#j)BEYiA0Y@A&(IChiJd9uFc zSnz4dHwP|tc7lbS*1p164Hqu}+SW1l?IsI^7CjY>_vLTvdRJ=>^*K@J;XiNo#>!Vf ze%qO|?Y$PShugq#c=madb9IohdqjEH2d%4b-yJYVmR zJdiMaGWs>DJ_aC!CwYwML$G<~LEu9fc8lH63Vo-}dJ5N7sZNQ5?PbR0H>Av@H!~FC zAADUQo`bA%b!Q`EJ@Bb~-$9_+im!4N8C6J7lF;0u4kFf%7bNg*H8hzg@;W9Cbb#c* zf98Q7a!lzPcVG2gdB*IhY^UA?`GV-Jkv!mm8<0{#(n#TLr1}xau6Z*1F_0U`{+b{P zF)+_tzWi)%o7v6_V!Ua5qK62Q%;UfsA$Mp*LB6ej0K-XD}(pIl|+XI+1UW|PHp6p^#PbFX`?$2xK zepa#nH*3}dG|~0P4>AQcXA1HrC%rS4p2AH(}4JR7^84X= z24(zNL`b7nR>DrLNn_I``t?XlayX_}xAUT#{m6UvVaRaQyrLg~cv8S$X^d!3uiXnc z+sz<^2%xXD%UT*6^9s|yqYbtYIt6OE-=nsyLMM*rzxtNC5G?NRJ1TDlLuB_hM`hVw zD<4D_Nq7UKQ%?o{Elp8a;ES&gKr=nQX`0HzefM4qmdtv`=H|Lfk zY#E6busUypXk-|z#iB_TVB!0j=gc`RPL8EQ-AF&aGmde$f9uu4qo+(R2fneMb}j}m zLa6vFY>=K4H#9;I!lfLF2*C*3yU*%m?CRc^XPDQ|85Ra7srXGoRWZjKn<613q`qPe z3P8Ob6v=qk^3lgEUl6f?j4ws^$y*Z>$={4r{uLgotRPlU9r3V2)se6ZRQ-9i!^n?> z$ji)c3w}P1XQN1#X(E&`A9GF6o&g|xB%!G|@p;5DQYUPJg87v&V@oi5p2 z9AUL()P8C+-wyllymrq{dqta)ovG?$>nDDc;{MPb|G^%a1uiOdp|*ksp3rD_T7;{S zStBUIfkyZjxj4MmxI8AK?qe*P6RE$39z>QA&d_v-QD$2^O|P-qA8*YBULS|N`*^^o z!EoU)kEsGQ1Y3HyWH>saR{BzSDi-nm`m0z{ZKVp30LN0 zLwp)DjYGFKT9{@X;_V?U~RKxve1zs2v>+WZ_#yFSzPQKf0|j|*P) z#cD~1@rG)lNY(?R6DG@rFsZ$qoLMnHo7ZuzHvG>@ji7%dO!*B}KXBusKb+xw_9oPo{VG_njlyx--H(^!;bjv1OFjwnzyQws*j_%$v)u+1_d z0**fTIjJDWiC=t_fJl;nUGoVtQVlxkz#6wU*~B}zYy%oa?7NJU`m@+_**(zhy(i2$ z<=TKUEH%S-`d9LGc}WUKcARI!pa zYOzKy)L!4rbrtT!nrO^}Pdmqp?Ka#@Bz=&RpN2TB<6MoeHveQxyvrzOF!A1M|5_YC z1>HCG^hJhqP!UVDf_yu|Uj(*#L-%URp1U{d6l>YrU_pz!b@KMRRq#00mG@!KFXCI9qOW z@R%>qtruX=XYYfWN++iWzT{(D>z$LcTd)6>wE_-)_^M=Ax2(G8>$taKc){NsWHElt zH=!%62@3!%wUA}_Xhci5cxRWVh@5Jhc)J?K6dM)ja@TqaLG2utI<2;SbU(a6&l}5{ zFxGb_>Uy_($!<%CRNHrpNnOBt*7PfOQL@6re;Id4j_xIweexDOWM$mq2puCZoDniy z6FP{rKY?`_v&38{v{a36nZz0#g8!6JyuMTrGOdPcaU1WSp#3E&-YDs}v5D{0w=7n1boRNhZzs+-FmNMm^3>|pghK#42<4r^pw9fpCxyM@j zyxokZxkT$5zlXs|-B*_aJz3G_527Ddl30ol*>6n2fQ<{vzc$NVCVOkR}tnh+dXFkUQr`%wy`-xK1H`zoWYc*q?9JqbAP* ziWuTe7YyqXl&09MXC895X3J6!NSF&(0M(*+v!F-c58A%zCCS#ci-FQYj(Rhh*5mV- zh6mUE5HFX*44zjHri(Y+eqByd#Id{~?(UW+zi5bm)Ezzq^xq|9tTYGSux)fL`kf+U zw~%Yd?On(Otnh`h;f8GEIMTmVmrG5Kb?A#{M!b$?9bp!*z;Tc9DW|0C7W_3dKI<1J zc4y#e@<(osF&O~1zaK&R;@?9z%Vg%y&DV+B)!P43TyKf-2DV;asTRwV&xLpO>W5(e z3GE^m001i5ADsEafjqyvVIvpvB=KXsBl;=O%zH?qcLv{oU8PrI?po{a3cn58X6LpQsVzfax{!co2VuAQKk@P z5sLH|5>KciNZ?wazVTwpigPK0I(aL*XlmdtQRgRwkKQ%{`W(vam!?`)5Ffc#`dP=1 zG}i8N8NMnbx+{NjfXgIn{O32qDIQo$uSNXs77`DD7{Ni8A%y`9>~4YJ+x8|2kHbT{ zKG05t4-3z;}02*?ibIe$uz;8bPxk}!t-*nB`dua>_HEz>z-^{T-)et4Ts>OnQULvA_ZE00WVhVh_Jaa=E|w0^9X;23 zcai(07P-SidVjFUz0`L~V$YBej{CcVD{%e#%AzFBU+`Z4R2S`~K$fTHLY1LFwrP_u z5!&d&AKi)K3P&AmAaMbgld#=t{(nj47Pnzq2a=lfdH(Buw2olw!nznOcnz*O6XwV& z1=vN;p{rJtcZC^SaJFl~$bTx0jS>^VORGQeX!3~Rx&{Y4%c1K5W>Q<5*XrF; zLmyRrFh+)q=->N$%S9x$L&G$23)+9>FE*gf58*t#zD0(W9k+0`yA^$Qc7_JxKEb)F z`CFHzfzOxd!%>j&#tnesZvu@JZifh0c>N!O;$O+tA7#r4#$N?ttyp;BB^iqum#Pi) z?k57qEHe@$8aF4*&=cHA8^7e|CmcT9Ud|))`Yv7kyo69o=v@S_FGG7;+Q3I$cUOk> zmn|){4{K}jm&CEHZ6TX?Qs2N};x<)@Gt?*qTrZ0Nh6mqnZdYTA(9KotZx`MPm`jEo zNwP@MqqA0mo+u}C#xS_4EJ7Uoh8-jl@j@A#WM%PdT6HlgO7ESlu)apAw+}>IDzOq4 z!^o1FHL8d(P*=x2U}Bj#Vir?qRd}n7@lT@J?*x(Yb-$d5tQUCjyE^X5$gm@BZ3{r$ zwOn0Z5(oLZBQ{u$uGXN2;FbXQtF41DMh5mk-|t8F%dgb-z;TkQbEQ<`ln{;{UcZNR zTdVzF5<5g~zW2OBEO!%4^-O2QGi5^f^qP4*ZxkWL1nJ4}w`?G0pQ22_9v*jTwP)k` z(PDBOen}_@KO+J2be}*_kdfDs8-vN3XzbM9;u(7Cp~mJ=%CLa>pEksUR6yXvd5i8L zBi*O(e>d{-+9Uh=KE}nxg`A9W_vGrmPkA@yvU*ayQGeT&?QN4CEg>9MjR%8Cxo-UBPI<^ap zv<}vj$`Y^lp_KOBTIMN%czmM2kk2ntop>_lBxkG*& z9S`72eR)`tIlfs&h8$)FJiLB$;JjZ*s4Fmx^7dQm-YAAPhxlx56xZa3NhE91-gEL% zTqNAD9W+ha*z^4kN2#m9et!d`&_wW8V#Q2&&rvllUfAUi8>P(UdJA8J*fS<12gv7) z;p19S@xNlr6f8lWPfh;;GUXB3b#7j0ZjXO~^@E_0pw1ZM?bR9i?BAPl{T=I+mWG6@ z-QbguIR3UE(80lk9`Ne&VqnHW$$U9Vm1bgn-o4E@4^!Zq%k4|s`(>DQ=VbH10cJfR z>bofOdVlA@Bo~z%Nh7qW343~|2R(J($j!?O5*a1A@ zq%BRiUfSe4-G2Yh>nqU)NT2lmSiHOlOIBjR$UmlRIn!Aw*=L*PU|Euz2ee95yv1(o zhlf-S6!mb%dpt3ro0FY&|95{Fz2`vT?Ez$5+>2ltKPk(D>#XVo=6okKi)y;%LyA_2 zTUPQI*`rnlRM_pgl&AZ{1^p{M%xFm|Dapmf#o97*P5BY$vY($uaX;FE_i35{|^V+dAbS*3sxK z&w>SXz`Z<%q@^bC@B9R@MDLJDO-+p@vFd~F&jXB%464r=ru$3*^jQj(I3 z|Kf*83*3~V_egSR+utJ^=X;H-_wch1WnC99(uHUAEEAgmUBULniR0VhWxUA|2H{p; z#XfW9IbXP|Cq$)dN+@NjPrkl3F;gRrK}X~SG~q@bVrOH!*b;R9ch{k?X=nevD6`)} zVwV#~Yk==#=X)fQrsBGf13Jn8tPHYUsdw;TWaN;4a=YL!FQ7>b27?U^MPf$v3+n%Q zPZVbo%$o3uFm+UzQMW6`3B^^|ncsgeW5rMaC_1``{`PaD9Qr0EXHLG$NsC{jt_o7>t4V<_`V2heS# z5~ZZNNt%z%anjO+uGOz!2N}n1gLTAlv1XE$U+Q*-n|E_&?uDD2Fb8w|--1xPMN`Ph z=UF;#UTGfooZ-vNQcNCRAo(-EO!`altir*v7JbJz(_bfal3T4fi&dXBs{%vF`^Ccx zRdYXB@K>kO#SU&*sVEuC+4%3jOSA4c-PU-5R^Oq|1jyoNJxad3LQcw94d*y@zVLc? zP1`B5?!5^6?xE|Wne~*`#@4-_2)=rv;b3>r_+CbUjFi|l68WVKN(5b?l}9jvJ_>4p zBM~Oh3Hw^^7z4$9iH1v5~_I> z+L9Z%T2s=mi)~cXcM_BmMYHl?HcHhUiyPFo+}Lzk*Z=XhpNYru(5)0~oV;jBAv&lA zS@cn0cBK&8zu_5#RyQBV$4ulDpdPL^H?M!F>4tb-OzL)UJ>J zF!{Vxr!>C!wIEya9Y#j<`C1(brk4nX5g8y&k#i(;B+$EVM5YgIVTJ40t3BjUa-b#o zVdF&=W$MHwSH5ymMPC{VGfk#A_e>Xd#(zw9bp%EZ$Go)v>Sx?8VKwR+AK+$D#~S8c zev7w;u76!K*m9>2%F(e=e%RaA-10Dj_5%S`$}7Thm<%}Dk!I%y$)Vxkdf3NOEj6-Kd`>-$ zQirnd1{1vQxmqv`L$QAn)1(NZ2JWdLMM5JX+tshKS&EUc$dl*lZiiDMz`F~xzkM8i zpU^K_OG~w;Iq_-(koS$$(>Di@top73n%b)H)^7lWQOxsuE`3L|xD4%a;aLkT>viVu zBC)VRW_;}Z_(TiyF(x-1L`?qES86+-Usr|a{`!g~-?9y@ULM9=B=*w^CF(suWNGzvZcW5narM^C_V2U>C!Bd===-5YnWf||R(&_X5KT6elO!sCER{LKb4l_3JI zMEFO&=ANE92Q_|EnrbC6GWcwOG|%zh`bU}&y#aFWLKC*+VtK(@tzVzrjV-F`^t!s@ zfj_sAE~6>GudFa16BOV=!XF3V6IPLnKu*3e@O-6O@FjBQwuyi2)te}Svj0S;)L!C1 zc{ITN@4TWJNssuIer|a92MjLs(_N122HmbomZYQd@(xjbA%UPL;rFO}h^oXdMX+0> z8{^uB#hM3MBC&!#cLAUPJ(PJze2tM3#?e*p0e0^He(qP$?DDow%(PyiK<9-aXTE2I z{4bKB3h^aCp$^8gdIkn8Tlccr$4R)^%J1GjI(mo0OH$qS%U@p<;D1K@@_lyenq?VC z+0x6?V)WV8x52Dy(b&2UxqnY28cw*O%yxo`KM)qkNw2V5yJjhtdHXx~p+CZ!HulgM z=C?(_=;k(&O!6%!Q}4E?%JIJ*&5xli!88-*gy;g#c=FF%yTFmf8VVM(NeQfrSzuIgO$) z+QVXdLM1(dd!2IgYhPCNo(KBTlKOX$HR^FwsOB?&QR7U;?G|jM#y9k1hH;^`srv;R z#5@Te#eP$LnxN11-4?qHSNc(>zi{r3wlG6tBn#096fxNOdX}SJ57iBJU*B1!4@Gyf z00J)oRI04Zm3o}Xc=9@}%7bKI$CUL4jsoc?$Z(Iuz z&uOq$p0Im(v9dS76sNU)NuAC$(QT|vIHd%1&(zgAjvU)Adt~$Ee^-UmgJI6Ojmru= zbRZ~vG1!~r@@PeEeOsB}=%uL5)oUQQ(xu^h#n#rQkPY__1#^R*>2}GSXQXSq$^~i+aRo_Qep6O})rMbrpvE7eV;%J)( zD0ad_Pw7WDD*+|?W?Cqh1vEPbp-%39+s{z3zee%V4ejYC8c4e+xcJgtgQ-g{V4}<& zE!J>V=0S_$GL&*p!s!Ttf?R~CjIYv-))l*{O)$lr-0hm(DTp|*I|eD|y;Syj=(jy1 zI|Dh+Vzs3LE@H4ur2eAGLPvDTYhE!g?s7f5>TM{+iFjFHXtCg2*Bagk!Ck6@^0_fEwQ|Fo{=p!>ng(B6R zUDXjcxyt}(D4)kPrZoP3i%T{95pg+&6*^qaOXccbW(QTeMwfO<;C6p4u@n6!24br4 zqdvjU)xv9W5K5W%rZp%!34oo*q+H)a*VzUsdCY#P%`t}jE%YqN2`SdCf8lIV4fo(d zX2r@Kfbs?%{41hN?S=S24rCenD0?RCK4AKV!=A&@T+Zh(ua4IG@pfi(5Fo;Dv9yNb zC4~s+?B6mgsD>EU=*3$VM3eKKFM-)AKU_IJN#@bJueG#Rx(FEklZF=X31w_#)u#PK zPIt0`d=#wc@uilPgIY zW%sZkDQL*PUaYPaaaqt--aUvMeT>}#r&k9+>%^wCf*E>#2jxxEC~E%!o%8T=kF|)u zM=wcUmcsuIOFcS?)5-nyi$a}l>Myix8YKS7({0#LDjsbjpH2e=T`v5KupMt#ConFe zbre@2l9K$#zg#9l7eQh|#bfsQyDHbCKtuUBSp-%FZFsE0R>7;UNq1$yIp$RK*k_#@ zlS)#G)SN`&u5kX>c&3{+cw_3qP|kE^mQl4?@hn=67yWVn z{ythx!8@UI!6Esw&&IU-=LxgISIpVRDDXZHLsHma+d~-;cKG$-%=8%VZ9FN(R}1{3 z1I-U1R}me^k<18m@4u?kOHPb0x37>VBZG>k{$|yC>JpPBPlxRz809~*rTd{TXyEwqoRLT zCSQ>2Uut+)N>mCrJwuCz=m^(fg>Jb6+lkdW{lJlj_WiR?{cb#T`GNLK$k(=p9)3;c z2Pjvs0z{7J8M5sP-na4`>sIQ>Q1RUbR92m<1g_L{6OZ-`;s%#67_Hd#j;Tvf@V!Si zk#2QdRT%q2Xq{2=b$-c%rDOPxu0Ed~gt-`FC_h(mp!X1sHPIv$O>!FLE`ot6r#cG5 zjJ~#foc7MGcN{;9NBHv&kmigRt+#fatpCX1jQL|4 z_IO%DK)!1WUH78nhFO+>jA~M;jl2IBJO$N60i)*3)}gQQhrygWXG%eTnyrriv{5{) zjs4jwn5xyK?=wks31MG3j^QF~${Yj6bOQZYn=!MJJa4n}^-l2H$X+YM;wxEsyk?pGjVqFI0w5ydtJO z7d4!4F-%)oNaWrD=BkZYvGJ^nogIF?(~1||vqFoVHP=gWa&hX#sOn){FQF%*X}qPz ztkWae@kUROYSz*4(ujYa5PFaYy<-uau}3ZNjwO(eYcxDYn^+9MvUcKZAhpQy~-Ucr*>WTi%+rMW`7?s-+68o z>)>Zucv0P*!5c>W5`|MZJ>(S$oRp13wx+*$H2TF+?Y*Z0IlVw1(Wm-|m4_>#-_15i zJhn4(0sU6rFL*sF$pS_vN?Kl(I!Rws%1llo#o0nYSFKe6*Uz=5TBeVvmd{&{(yLiZ zgY|Si?7S=BX-N6|MYqa1YrUZ8t#6s;{Kt{D$nup3V8r@Q$uBIL>)kW>rfy!bT8ac? z)y}Rc4?)0}0VE}i%BqdZ>ia13UMPzH->!VbYq4?Q748cKbW?SGPh^QB9T+cL#wqro*0lKj(@fWTi!O&^)0K1wRdjo&?PZALTSic=YF_Z( ze?DI6bo-kj`$lZ1Td=m?{3Y)bVd9BK{{-{gKmPu=wLceW%@TwppkH7cXjDl$3H*}CU7%{Hw2QD&0#^Q-sm z>w`KG)~yfl7?I$2527)WCJ?inDhjE=M5?5}l^(~3PDz}ns+Bqv6%2wsL)O=q>jmih zxs`kRmG+Olm)#2-)6cl3Hsp|KJ}*e z!)TVG6mfDnjrOn5s>wJFw&34}xz2B*MpP4v^auicZsf*EExe8z%n&^)R6GWabo=SN zAjsr9`wB63P`oz6Di6-~1ft3n&R?h2oOMF7CzO1U2b~ngB_g<4M64kB z7nC<{Z?0qvR_}oCE_6S5CmC5z(Si$sO}a_F3%TZ+NcdvPeG!^O+TSYL{I4Usr7fU!PyjpWoXr)}-NM;7=9JaNXW%CUHNY z>8)WS=YW(9+$?s0h?0YOIO-dE%tAPkh*E}6{N_13Bh_;gKfN*+uSd?g{V=qbxPV|>7;*quX~h+ zss9GgQ|70c3?*L>vr_7trK%Vw_{Caynd1Ub|8S7%Q}2x8tuVD%BH_`gi?G|JwGZT#se3$K^-$POjrR z@@s1oAldA>@BZ;s)8V{%;0t5_KFd{D(TU$yNHnK8%mH@NcCQ6-9jIzc_4Bo&B5l!SaeoE#)a8kP`Ty-ARFj9&`kN>AI)78Oimm@duMP*HNDgZ%1VG3W; zX9_1`oS2nI*yM!5CA?7zg)#~7jv@A`&QAa%1rm`k+Mzxf(HieawDFCV#H8Of^#YdU z)_Nxe0AuvKr}my?Mr2)tFy=f(E?m9b^YjdSNfbU)hdbsUN6#Dp#A&hC8>^V6cLx~P z{@XfnpB-W#CH<-WI+AKb*KExH$g&>^eX+-gHQLr0H-9YQ=Gim9H2AQ*9mie@!1TYL z3PCiKE#(^3fy^QPQ0&br4UZA(tXnzWLwE#-$58u39A-gA|~hIzf=fwuqS zgEa}D8p`akfyjM#-Tlf>1+>qyM1&YZzMS0pYnr^qkxC~Ko)dD~g(eg1%wK0~waY*UlQ61fReGy~ zx&w*&UWTuA%+ll$0mbS~oFrficPE_FS`Va}oT7y3ol*u_p9U^%KX)9+K;PkeW>gu-YR;y(v8{G&mi!03-*P7A6WiG z%hIHQkGprcHZwdfD(X6e$n!cGAs9-rK&q|b{sNlQs0^_7+7;u^ zq=wom*3+QTBWKq;^yipWdU9*`ON!UX5a;UR)n!@Iq0M z?%;7iX~NP!BTQukfrr1)=$O7^GLK=wVw_A0Pvo&R3|)|4EjT`GM|-2%A7>f6#e;ro zO#HU2cFs4c3P&;LyEkg@u}8%>C31TF7-XZ9-jE!(o%kxKPGL&IMVI>zg@x>VgP+5w zG)9chL%1J=G_G@kJ&NAjm6!;}j^*(E_6Lb{Rsk^`u8cjwR`h)6yMfB);5H}h)d+Sl1%U^SdftQi_ol<9za1RUG}HTncU=@#545todf9~!nPJg@(SfxVP@Fum zi3yXiJuA0~{W13v1xX&A+nfLiJ(MKG_@UOv)EY>YcwlpHC5;cB7Nk+LxbY9^ePx@HQQ++6>{ovh+GT$wx#~^kF>+- z3>hILfKVIbFGaf9dUwCG#`8y-?*9`VFxa5fr6-G#0)1;n zkcR(0Deii_pUpBr{axAhZooQ_HTmB@nJc5VPs#y(ID2$x^UdXr>(s%&I%+_uLXk*0! z0Kbgqsh*GCnqa+rN^~XGC7Iaxq$Y)p31n}%m+o+{i`C*x0D9nG1Gl9&zFD8BKyPoY zCnx~Ljb)_hsA5oqPM#cy*Ea1iF7Q|C9|IRbO@lb=>3hcue|h54RZf!sl!G28(}a{> z&d%o8oxrwn{rm=80Q_U(C@67sOS*egNvVz=Yv^ee_J#rW*(%L47dOmY-HzkfllkYQEcBgI5 zYFKVy%_3S`3AO}$>>9e)cpvi@A;B^<3Q-UQOaY$Tx$M}%R*4jShBoI?+TeFwz?{+g}7asiK1vGan<+SNIydGO! zND4<(1O8g%RomPcj*(QQGT0@nI3D8SJ*`{1Jy8z&r?Y>DAE6$5ZhuR*ziM=r zYq3rzT?&Zzgn=&GjE8KAUWpu)hCU6sPrD071Xr(a?L0|STTs0?oD9lSBgGf6;eujX zVOMlLQD%KKUxcDC?-)tQ@BZUi*8SMOzJ6X7kN1@8)k> z=`OLR^!$|3Jr=l51k)?q?@G@r+)~y0F;q5m%T|n~!WcgLLf^f2$enYB%+~V|1UF8$ zWK0abz^}s_f2gu|vp`j;l{1MpSOW;$mKzEUzeI<`%C97%t&Gawr-j|I1fzGghp`0T zb;+W$w4?I{%G@qt8jBDUIE+aThTN@p{ORrGGx`tVRaG(!E`%XAwCK_-96c_c&IrEl z=g#|fIMgd$E|3VUSpNMu(64F7{j*hrPvtME|dB^9}Cc^Dg7*eeHz4B1w36ti?<)@4!LF@U0 zyNDv;oi|EClu>$5CKcnG1kL&<*&mm)w5#*#FId?v5OJhwH!yk6y)Laq$FI|s$_5wE z3+)yhJuE=Ul3bFr309eugqPuWu4tdb48B57T_R?YLP(2VBqZ@H88Mai0Jb=b(%oonP|M5Kx& z;O(c?7o;p4vhJS_)5dqB7C|g(9Jb>_b^PZJ4+kYL6l9i%4>}$%8|dV}Ao>hf1tR`;0sQYDsyL12sQBU9>J!q6d}CEj8VVUd-x158R>GsXkWKkq67$s7 zapBJVKVRM`ScdT}L|%Xw>tH+63;{mir~YW8Fs+%p{A(OlET5x=Z^{c)cZlF%z90-^ z{}=Vi)fY%`c8R7+-Y88LzgS~4fR~P(#-OE4%bY8=J;RCEl^6P~sJ3~KBIk%HG_B@9 z{|J($!2#v^_wIU>jdYqQ`!i{f{W+lV{BXP@K)$R~Lq_T^&NWsv_U?c6(vKQ696o*3L}0f`+%*76b{pF~P!)#D@DYq6Xan zf@#~tBV&#oeVU%q$)Bjm0Z#wCn2KkVk_1oCBjc^^DJ)whaan$5KXXd>_b5LDgCn`k z8jsrY7$oAhj5GAuQXOsL02gd$)2g?iDl|ET!`9Jkb?fUJ0y;N=X5zrrL#N zg?_-`d$FV|Mk#_@E1mbYPC?`MX4EJxBQg)~;pOAAF6uFQ&LE<>vwiC|h3~ptNu=>g zud?*>Z^x3UDe0y9RG!<};;!5{ zx@YBPb$uiH+>^KY%eirxAGyp+Y14%ryOUKkay~-Rxjl-=zq#h1A=1jVtGJCvYIUW( z9=rNcL^5_O@Lf3bJwi%a*!`%i4q8Ee@=iKU}_}lkCa+>HD(;R96tw((~sb85gHh+1HI#jInYTOFo6~Dfo11U(yy1 z4^6f5r85EWG{b|t%MXKtxCx8{dO{V^^HU4v%x95dCg@1iu9bA?COamk(syG=eXe_a?4^=tZ0_ zy;7NMgbGt)>x{O?+w2S(H3i+eYV&&4Dfo>4d!Ev_dwd79y9jJ-EqxFhc_SNS`qlT; zYK4+ZzuqV`!BESdB6_CTRc0pQ^py50PF`zvn?C-o)vjZ3KnV*j5}PnCAOBw*mL7P)!Sw@INgdZ=0SZn+_p+_QS?A8xnkWHFd$apa`Lj z90qJ*cAbB=pa`BWEC%M5>*Z`g#m)j-Qkk2hW<0l7^u+Z7@mL|s`&x=y|~bY0wn1L?4hS}cB^ zG7ocX2?!7dnUzn*q|)sT$EsJPTFP>pJ-e#cI?t_PQENOng*<_lcB6fK=h?r$4V@s< z_RlKz)LqVU%&}LvBOU>wEj82ysI4YHij85FakMJrJmz$xZ#Y}3%wt$ke-%31m03*$JO`#mC-JY1eRfq?OtB;Y})>EV?u_-2Do9Y6Mt z24=)n?>E>l&nPSR=aA>Lf1We7q|Gt08GMx>iA|wPL`%s3MM&Hn(zog1m719oZd@?T zmCW~-<9~*7c4gw}>bpDZoCe$UtU>|5kCG+A;suMy$Ocgz+7hCXImjPQ1u>W=6 z-%PIOB|GbY1I~XT*WD)#uX`yXgG@?%5^B*50OS{2H@vdXg+H18>6H0nO7lr0zC0)D z1AKx}SW^9Ep#0II)gAN4+C&3`dk+>fR^=+U_D|04+zBSdfQw#HU9+`pYvaEgZ0_@F z_q&ui>@7r0;CtYDhXxl&}#^lhjXy;&7Z^!EWd{)^rPbhA|cX3A#WLVwOy?%HZU z0}G8*ZN!+^+-lk!rFyFF&d}NG+J{sPo+GR~>Y=1<>JUulijD@~FzgdMp|H z#qo;zqthu)z%8fF?m1SstPGCGUtLc3Up~;}wf~QjPaUl}F)h{uQ92?_BUz9nq|8H> z1pv&O#UHgE#4uo2tp|gO7T_X20)XmA*<7t9Mo~$y|C5>u zf1J=bS7KnPWP;uT-7Gc!?*^UIwD)#1hf;)jYu@Iuno+4w2syA5ma^QX`FYhPT~X0` z0T+SJ6g5bxqn?$;)0k}gGo-}pUnUHAn0mFujw_76D&BkQKC47rMI{~Fl;311>}s@S z4ltq_?*48~jrjbj$dW~&AH1$b}W##Njy7)}>2I}d$^tsP3vr+W&{WeH5M>Eoe2 zr-JAbl24%M)teXIPbHeWE@X{u(iWFUWt#A~4HOzQC%Q=XK1%?aI=}o&=1j>X6OgF{ z46;{eMGpoAS#7>UNS?earktt${qUfhVW#En-T7MWi7&teH8GRme0y{rfOeb(leb_v z$Fm5A{~74(8jM$b+KRm$CjI0;@1Zane`vN-y5eEh#& z5#Z{6Ut03nPh-fSbt7gJ*Q<#C&loe;7}gZGFLkP{&7b#%kRF6fL}zKT-oU| zobp4k#}jBs#KdXNoRY9K`0o|TJf{Cr3OhXIbp|BHarqHlW=bn#?T>d0_9x*5zaaeQ zKXtzn(#z7(i2D|+eJJE@3&d#k-dAq+@KsX%HjVt1pvqb2|55f9N9fqE=Z9ePt%j7( zp@iqTcvIcky+AMYIc=p83rS1YB&(mAJx_L~&+qxH6-WFsy{&0Cy73=^i33TEj+A4Q zVVYp0$C*ot&2KrGt-(fcz*-Xz z?1gq}q~5}Gtzq6&SoXH2ICgx4A9$qZ1eEy4^Cb$y`U_(I*~^9|;;J|SgBL$OvGy1Y zA8(B>ioasjvzAG}<=ql{+|tC3%H?0M1e-iseM z>Q$&bSSzvZ!Otu-o5eBMO)^eKAz+d4=|i~Wa?#WFahx9YDE!9rr9s*~yGJgECEYI- z2yB2(FAJBk;tLBC{XslCA5ng2Vy&;$G+oFxq}9eSXczC*-^( zVW+uSL0t>aG+}peixnC#a`^|OQ5?T+bWIFk+hA>{jC>uX{eg*4^nJ4mf77JP-;8VP zRq}zSOP{}&Rk$DJqyTNEMF;o7bpS&PGnd~|%af(bGz!EuTm z=*TKD6?X2imp+S_DDw#^>`%3~$$)?YaH5FlBmd~SF0+>3huVurr&+q31}gty3~GTM z(oQ`oyH^DI&uj;?WGqHWj0}oRaaD<<53kSZ@t8C$<3cQA(*OY0P5O?DHllc$3)ku3 zF?wXaW-WS}{JD|_*dB`~&iQ(+>pP2Fr6xccy+-yMHAOt#ITbq7jpI%zDw*JBf@&Hn zWY6@1lcDLpq0#{l?CGhDoeA2^MNZPp&JY-tX!BceI`ia>d>>|D(+M?%LvXy``1vk^lEcP$~yGdcPU0`X3CPo zu{+%IycHzfHIb0ki)?wOraF1nFDy+GeJEj?k86*ex0y&jsNPzYyyt~pmT-yk>e{;_ zVhj5bNR{xhm{wL$o3)LhPY_$!0{DXXkg&b0vr7^CDj;b3z>o1wFqBl1cU2YrJ{;vC zp^+t`|5*F=f3XG?Y$uqvqCsDkqJnw=d>?(O+p`~1VTZT`bog$xX%U~JqZ*uJ&6(_d z2hTR5E@+I^Z^C+Fw5?Ceuf@NuFKSfN4_#>y{=joQSku8BfCh04`|F5jw&5MvbZ^ zvy~X!;^K?DSftR!x8_cAi19_EqKv~nN$71@2Ur$K1eX4gxR((MVxZ%Tx=Ah(#KXgP zAz#k%i-t=%C<+PI=Bh#Q<)Dx6Q;xNqI$B%_5 zv%E~K#au3>v2t@)74J7HG963+1hGUs-qoL2DN3E6s%uRWmf2_OD6Z^v_?LB1GS4AQ!m{Nssl+6G z#0D+^E)H|kcN8P>-)}hNYl-Q!Ba%eK+QVIw+35d$&oja`j)>s5WZ8e+xxy8VJ$%WU zD43zMlspJ>eusN>W~k_E)a9Lw^lj%QAH?KAlQ-8zEs|&k+mNuIrecCG^K6Hs5*H5; z_E3|FGG|IjFQTOpIhx}wt7JT-R-|e?kt5@K4lK^dqd`&#mg6a7E9{uCd+It;HN!J3 z7b0cpd+hnm!A;xDf0YZCr_b{EJNcFMcg>zm+8b3qh;bM#i-Bll=c>;vJy6;uCizPA z8Gt){Q$&4~VsRy=9{Q-;t^1@;tZa8Cge3T_1v)(b7{3G0!mnLR{l9{q5fR`t`*O(5 zGHNy_vO%RCa02$HisT+txYWqymmTGcLVBZw0}2t-%8CnI(}Yp8rtRfS9Zs>fj}-uX zbq#pn3(HYXaFdceEi>s;H;Xf^M1dp!+R@X&!RodAm}a*ed5nf`CNuvlEG=1zLz+3* z?8#WQLgookPg_^mN&0H&cgr1j_QQD}I&qq^dD8jP!%<5%meR<&-rOEYqO5Zds%s3X zQ0{JD1~GJ4w1_~Dh`KnGi{VI|=Yamw;B7(cDk8+Ix6F*WNP^=rqzDAccQM*t>?VK! z%gac_%Aiuw>{hg|~v-Dd#m_XddI)Y2((LV2G z!;xOD2*Bzu?U{9l;g`BtbX@O&Vh;6V<`|qJ#n}ab&GeT$O7 z^dx|H3PGGThf^8Lc0~D>pAtODZN&Ui^i=ZwtK-u!;6&S%!q+-SR*DOsSm; zFmhPXIFcS8B2_by#Uv3ajt1S{TqG%V9ynrO*@VhJj3nfa`tjckGrs@pvdE766Y2Lm z^mjxHdYt2p1{XAow5=N}kmah4*;5_$YBW+l@CC%}6Fr3bwD(k3WtBxj4X|%y${r1i z%%A_&RD8|Lx&ZM3ygmYBAwCX!oj(;2*A6f)5c|fnMnzPst?JOh4jU`R9SR#@3Q56<QA2wxi6WK%c!R{Xp#~$(T-HQ^!KX%m6vUFm_}fWud$Npf zxNHZ%C@T0hUMp~Ldc)6cH2~{t2oVZ*S_ke`i9tYT2rfNEgu60aVCQNWM~s5PS)e-sIjp zY^trR>Wb_mBI%wiTT#E4$U~3Fyz6?Q6zEZTGX!#MtuH?4Q9a@*fb9G#R4S74Kttq%nB|%Au^~-`Yklks z(wUGd{cGaIjyP~8I?yz{Y_n-gxOZSKLF-!&V>$UXi{pNElO!X5KD4A9`#lP?sbB16 zLiiSc7q>!$|K%l{DJmNS({s!1&7E+g;%htfjb~XZ8o^uQYb&Rcf!|%shI_w}PT3M^ vu=M&eyl>|8e66$C!te6J-Bg?CJ>@+vw+CW*_q9YB8t{3ptf5p1u?YWvm!HSx literal 0 HcmV?d00001 diff --git a/clementine_discord.py b/clementine_discord.py new file mode 100755 index 0000000..2c2534a --- /dev/null +++ b/clementine_discord.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# Copyright 2019 minneyar +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the +# following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following +# disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote +# products derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import struct +import sys + +import dbus +import logging +import time +import pypresence + +# Any of the keys in Clementine's metadata are valid here, but note that colons +# will be replaced with dashes. +# To see a list of keys, play a song and run: +# qdbus org.mpris.MediaPlayer2.clementine /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get \ +# org.mpris.MediaPlayer2.Player Metadata +DETAILS_STRING = '🎵 {xesam-title} ({xesam-album})' +CLIENT_ID = 647617680072900608 + + +class PresenceUpdater: + def __init__(self): + logging.basicConfig(stream=sys.stdout, level=logging.INFO) + self.logger = logging.getLogger(__name__) + self.logger.info("Initializing.") + + self.bus = dbus.SessionBus() + self.client = pypresence.Presence(CLIENT_ID) + self.player = None + self.prop_iface = None + + def run(self): + while True: + try: + if not self.prop_iface: + self.logger.info("Connecting to Clementine.") + self.player = self.bus.get_object('org.mpris.MediaPlayer2.clementine', + '/org/mpris/MediaPlayer2') + self.prop_iface = dbus.Interface(self.player, + dbus_interface='org.freedesktop.DBus.Properties') + + self.logger.info("Connecting to Discord.") + self.client.connect() + + self.update_loop() + except dbus.exceptions.DBusException as e: + self.logger.warning("Error communicating with Clementine: %s" % str(e)) + self.logger.warning("Reconnecting in 15s.") + self.player = None + self.prop_iface = None + time.sleep(15) + except (pypresence.exceptions.InvalidID, ConnectionRefusedError, struct.error) as e: + self.logger.warning("Error communicating with Discord: %s" % str(e)) + self.logger.warning("Reconnecting in 15s.") + time.sleep(15) + + def update_loop(self): + while True: + self.logger.debug("Reading data from Clementine.") + try: + metadata = self.prop_iface.Get('org.mpris.MediaPlayer2.Player', 'Metadata') + position_s = self.prop_iface.Get('org.mpris.MediaPlayer2.Player', 'Position') / 1000000 + playback_status = self.prop_iface.Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus') + except dbus.exceptions.DBusException as e: + self.client.clear() + raise e + + time_start = None + time_end = None + + if playback_status == 'Stopped': + details = None + else: + tmp_metadata = dict() + for key, value in metadata.items(): + tmp_metadata[key.replace(':', '-')] = value + details = DETAILS_STRING.format(**tmp_metadata) + + if playback_status == 'Playing': + length_s = metadata['mpris:length'] / 1000000 + time_now = time.time() + time_start = time_now - position_s + time_end = time_start + length_s + self.logger.debug("Updating Discord.") + self.client.update(state=playback_status, + details=details, + start=time_start, + end=time_end) + time.sleep(15) + + def close(self): + self.logger.info("Shutting down.") + self.client.close() + + +if __name__ == '__main__': + updater = PresenceUpdater() + try: + updater.run() + finally: + updater.close() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..793fd64 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +dbus-python==1.2.12 +pypresence==3.3.2