From d1ddfaddf0345ad6e8b7ecb19265b8f83dccbd8b Mon Sep 17 00:00:00 2001 From: Jacob Bom Date: Fri, 7 Oct 2016 23:55:46 +0200 Subject: [PATCH] Add tests for Game, Animation and sendGame. Still need setGameScore (I'm thinking we can set it to the ever increasing envvar 'TRAVIS_BUILD_NUMBER') and getGameHighScores. The tests currently don't work... Since I don't really understand how PhotoSize works... Please halp :P --- tests/data/game.gif | Bin 0 -> 36535 bytes tests/data/game.png | Bin 0 -> 40993 bytes tests/test_bot.py | 11 ++++ tests/test_game.py | 134 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 tests/data/game.gif create mode 100644 tests/data/game.png create mode 100644 tests/test_game.py diff --git a/tests/data/game.gif b/tests/data/game.gif new file mode 100644 index 0000000000000000000000000000000000000000..50fca0a6916411b6ff5440d359e4b4cd86361854 GIT binary patch literal 36535 zcmV(`K-0fRNk%w1VSoZ?0r&p^NQk;LZk~gv#yWPV?(+6&mb&it{B@+tHgKRtgtugy z$ME&}@%a2ag19qmoH>28$lB_cy4I=5-CdT#H*%vsd#v#I{N3sDKz**c(&RjNsqXan zK!LSAeXl%usyle9J$kFt;_mtU{`UI)QH{LC*y-Zz^%+==D{Y~p#M>)soicT*N{YSp z`u+U={`ma0DVdaM2Z|1EH(OpU-xg|w5j&PIs6 zw9DOao4!DPuTGD`HE^G+#oNu^>_UXOPLRXd=J7Rntxk!!T8pzwe5E*gu0nvZOpL$w z{Qn?bk@Ncg>GJsW`~Fgfut$%rdW=-GjO2#{{KIQz4!b5%G~QIWR;=4 z)Xv=LOn#_}u+1=Tp!@y)M2f)Y@b@!pnni}XCTO0^+U7NKq)mvnLU^P#bf!p$x=M_} zpTOFEqQI=g*B)S&^7{Ps`1?3@r$dIiV~@1u@AfiqqRQRufUVI}wM~1mMbfr3VrbL6ZMT50Qg}69#qdD4 zdZ_>Z|NsC0A^!_bMO0HmK~P09E-(WD0000X`2+<80RI3i00000fC6X%00{p8{RtdM zu%N+%2oow?$grWqhY%x5oJg^v#fum-YTU@NqsNaRLy8 zoJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXeNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCL*rCJsR+9bCbERE0>MazAwVR^PC=-)ZQCg%02z`Y zgOL(eLS!+KXF;MOl$3~G&fF`dR%B9JF)~CGp&F15C{Qq=l0ADfLf!v6^90wTE9fn$ zU(a4WdRKeI6$20|lq?b?Dos#u08)(zDGXsmCc}}j042>Os9;bc>Jj5%JcutW!2 zOmF}pC6IA&!az$lNf1ClG64~IU`cVsOk<4kw;OZZ@t5VA8*-W>ugmVMC(~*xt}E9I z^Vr!?L(MN}qpiy*TKwrt6ADBCK_fxeotP4tNUMOg@eKbm2-AQ!?KHPgM?E#wRfBwW z)+M)Fr>rP{J#W~;v`n_kW~Z(BG{zV+&pGC>t%WQC5CVtYsQ*<&2oWeS1%`MKF~#ge z1P=J%7i%2u;fRx}c*t45xizeiNB%YCm0$ky*_x-#dFRG3Bfaz;?6U+h6GVW9qN#U3 zR}n!Fq5u)qVlw;rQ`By|#kdn5b*NKU&BE`g2H!Z>cN$;oq!<$prQszRj`44~rwBZd4sKYWYV;R^uhs|VBhb#>7jazvHB*^CmA}o=K zO6AWBUrXF)I2lkSD|@#y-3dfe0@3t}97{DDeQ*e@eBQ z)-;?!&85|?c9W)$TVX>fH`cM0^^uVLrBBs*QH%=Jt#Jj$7qqa10+;}=phbxZ6wm-W z_EnlpoT}|wD%h81^=hh8Xd!DEPF(-yvYfmmAX+E8PGYvzt;EPIT$2$`Pe35F$Q4Nl z_IcWrN>!kO!yPMkht*dW7I;{6+~a85LY#iFoM!FiZp$dl$_Didz!feqlEL0<0AmF= zs6uk*%aI^p;i=74scHvG(AK*4pw|_oY-tJ3iK9hLm+mOo@SfbCtWxXmarw}bf@(fR+im%hPjQbWU;)~L8F?>UB+>% zUyT6_pkfIy2x+Z57{6-xlZ(~)ZeA`D{c&#gMQa)1d;l;=a(>Xf<9UB!pbRN`Kx_@_aQV2q1* z>^kH)jn8i5kc)in{dRlFR}lyvq+#x$B?Nw>`eB84>j@HLfj#!Ko$k!w3Jtgd3*%%cI=X)YJg25ztX19O*cXUX{f}7`ptAGJ~00}dAPmR!F&P8b-w08}l01`+M zCU5``um>}cfkj9%ch+?}r-W4IXO9Pb3>I`kH+(4Ae~4Cv$%lmkSOF{01V_+?%aj3i zG<~{OX*2)O0FbZ&7(oaPz=m0eU3SKSNVt1m)Oe1kTafpJdT4^_RdmvJd6}nqf;fm3 zfC86*h{_aoekF!DXakQ}1Im#RKoEOvSaS)rfdr;M6-S34=txbNPCw;r`X_~~=6|Ue zfPz>7(pUj%AaJkpk1U3FN0$5?7vHhHE-Avr;sK$5h0WC1w@A&~{<0h1Azdy0pS4rzy=cz-xa zk;}M~JgJeZ2$a(30g6CoMd>||fCp4pX*M8`1_%-cc?JR&lQL;bA6S)4c!yX?cKKI| zXm^o+_zcknBWG-B@%fMgzC0+?z*gwVSJP?_eBshxh zSafO!nDQu?VA+ZXV3^&r0hOSb+&G3gcmVhq5;gDu0Pu^4C6&UscuS~`cR0tJAYsgng*KuXh8b%U@7notr!APBC|esWn;x~H4z$eUNmnG*k5 zZ|B9A7733%*@C2roG1VTvB{hXQv!D9k9uc5Jvb6~pa7OoXHhv@Q~7n78D8P(n@~7> z%$S0I7>~v|fXGRYNpMtl1)m5r1o6NGsik*JfC~rU0wxh@5Z9k7l$#BCap0+J$Vi@1 zxPQ%vk;SQ=9NC~1kOU992HGZ}2}20DU;{;lp-kWg5pWVlK${9_j&w0^?((*R6q5?Rmy;;^0Y=WYP%iD4&# zX;p&d`EiC8no)X%>j{=t3IbQk1CqF<2vY-f6i__MEe(KjCD90#a0O`Efs6koRyFyF zk#(YQ8l3nxoGTcZcM6m;s;7I}r+(Tjknl_^<(gp{0w-|n2Nhu4a! zFWR8n%B{ZYtx3`b;0kl&nlW9{0GV(Sc>n|IYJ`YqneN(&YznK=s+U@+lU(_ib-Izc zs;m2|r@iX0i$V!|1Ewj zs;iv(vz-dEOCkb$GpJHzvMF#9Rv@IpTQnJ<^A?KgG^^DLn#Y&1+3K@E%dbMK zB%)BXr21x`;s#u35}LrYPsXTT=cw=+t2HZp7JHsuiLV=roV(h!AYcdG`n3zv3Sz62 zRtG96S)(J7W=*S!iq*Ep_NvB6vsuZcHw$t(d#R&&w|J|!da4fU@UecYAl>E$IM{39 z;&(<+5_v!ZSHNy;JBN)Mv757*PFSFPh_!WlxtNQmnhOG)+qr%Fxy=!}g8MX4^Nl2- z36;3ENcgby@~CYJxspV?b6b3Lnx43tySl5nz3aKa%N)WxZiD|DHCF%z7cdft`2fn> zokkinJvXuA*^XE1q?LQC8r!q_+OeG4yPV6t-76a33y>u%SPxJGBas0QKnh2wzR%iX zka}hBtA}w)d~}P7b-IeHK&3IdyZY+^{M)~v@xOu9TIFG?AdvG(?0c63Dyb0s znG=kWJA1tstgZN)zrE`LT-?Du+!?|P#0)nBk?;UN>JdWF00^wO@yCg}60_|Ky%fu& zCn&$yimmyYx!SA4JKV2d%o(98#;w#biy)>Q5d_en3r_#LxUTy`&O5W=3B%M{yEA;d z3u?cmnZ=vS$9??AKI{gTc4^}R2C#>+84&`Z@BrSR!cgm~c3GkhEQ&Eay!6yg5$4?x$6+5{r zim^4kwfC#RoGZ>;tN|)b&;||2dxOrR+;F543TOWidkSC#TFMZ25CV`;3}{7ZkQ$wP!CtI9|uqe z5r7?(0s!^!0B5SajLf`m{K${n(UBX$5{$FAOxGBkx8ID{d9BxcZO$+4J_-#c>z68p ztRt+=+LkaMi5t`_{H~6>OZErFlT6ETO`KYrsk(gE;f&HMJ=_C5)uSC5#C+9pCeyFA zIIeOc>$;H6%ED_cvG;t`NPVF5OTQ$o$2tED)gD0HqJ7+!5y(Ld*qO$D+PSPs%&Okm z!Y=H-Rh!!&ji9{E)V}SYz>U)3E#Biz-jva8mT=z89oTW1iL%|wwEfD~ZP|H9-*TFE zEZW;mji;In-u^w@z)S!DUe)?Z;23D&lNsGa%D4;8bJQHmznR_E%Fnoa!zKOQpxxgY zzTq7n;G}ihs4e0n-mJlc%B*F4DN{&lbMlPY&f8FaS1A<;b1mF}=_{zTWKp<5H&4 z|Kr4A{=nHy=1(fuRcynZ{nRtg=57D(=28ylaozw*CTG5A=M2lnYU<_n{D~?~yZTJM zoBiT2{?ASB$Z<;iYcsi;n84F6YZl=jlz3cb?!tPR}UL=drw`dq~Su*y-Gi#lSx5q(1B{ZS0Mq z>Vv23z{c#8j^}QyE0nF7?yKoXzU$oG-Jt&2htB51?(N16?uDW1G^c4FO5&^9<2@O?h=B(K>teDV#Sy($m!-R|-f zAM=Va^H^8z8-Md5+O9CW?(v%G`F!Me%-Pxs+(v)&F8}RHe;7=U$W=g zXs)ST&)<2k_oc1^eDC*SPg-POdxnRm?IzTR53LPMZ&x4TNIv08PWKrc>XJYClyCWc zkNJB6_`M_egP*L4@}JEM(YF(8FR8B^HBLvDrmr88cQB*3qNK1ldH6 zBuVYpNtC~)8Dq(k*-MzdWX|-p%w{m0Ilt`uLd>U6U_pf@BPzw{Q7PrhVPJ{@+*7El zq)uH`!Rl44R+E6>+O?}XugS+p7ktYzEQtqL<6{LQ6X*X~`sdG+q)+t=@3 zz<~u1CS2I?VZ@0QFJ|2M?*au4X3P*+xiY~>2@y8ryzrr*i4rS9yVy)4vT7VZek9pC z8#R+DRjzCaGbaB{nb>SD%ZZcc&YwVq0wbF28q%Xmn>vO1l&aLM(JLg`>eXvlv1G@l zP3zXXcervLk0)Q={CV{0)vssY-Y#UxmMvq}yty;O&!I(=F0C>3>W@NlO(fW4J82r) zT(XTB+%=A3)3D(SGQ&N{BJ%T7D)&iZaew!(AoMHpk0 zaYhyUQphWcH1bFzEm3mGB{`sn11O`Ea>^)mp^^h#vea@* zUCi;wrj&s&|XP$eu@#9fK#`R!?ms|L`m8p{#goyq8lVGbdU1rZew>fm& zNAG=l>Z{Kh=+z}RYWSlsKVEa?i)Fs~+o8|hdi2v*-(T#9B3k&pU-v%5%!l24eA}Og zK6(Py_y2zYGOK-W3Y*dRMwO(=E_{L;9QpLOKhgCsfD@!(1z%Kza((T6$)Q~L5a|Cm z1qRM(Ys;VEAjm%prci}4x`PQW@In~IP=+(4VGV6~LmcK%hdX?s74$KRH)(HsV)Njg z9EQC6)sAovgkUt_BEc0#QHtk*%o!qeMJ#4fi;&t>7rjV=QH4=dsY=zW%m^!Ba6?`2 ziyzrwN52q?aD?1xp7Tt&zi8y~iBsfb9~rZNO4OqPgCt}j4cP!LB~p=DdO#x``AA4Y z@)VP#WF;+WNiSqllbg(>7CiY$P=*qeYTV!u+i1D@MW=rDlOyLySi%z?Bacor0~Gyu zOI+e;0u4yWeeeSj{fwqRr%?@ngfXCz6v#jbYKbux)F21#rZ;OMSi#&UL^=Pt&W#`Z z9{5^`KUl^xkIvX*F3ow)yyS?N2k|8U@}nP$SOg>fDJFoBNgx9qsF}`uCT^rTO$m8T zgRGm}DU0_;IO=J3;(O&1nFzgcI)j|GL}x`Us!n#c^PQm)<~;pl%#PgiHThJ@J{QEG z2K_Ta=MpFZi-t1!rBan~T%Ho4Rz5sNbfUJjXixo!QH8YAoxq$(M@>UakRJ1%%9IT= zYtv8MJcu_dttR9m*E*PPb1F&uTM}(bGo0pBq7vl;MSXhKK4Mg;8|5f}j=GV0u0}uu zVrohfq#)ZgNU8v})!p1j(8(Dvrdu^z98WaI?$j}?p_}Dcm7$DsqE-L0D^%xNiQ3j- zeiWp0rE5O#%Fn!}6hc(3Ch*|&(yXGAu(9)|9A%~!#ojTe(QxczBRg5#QZPpkuqDITRCaIitO>CNa*ONkXucYmXK*7dFZK~FY-BjoT5t~>C$`+zJeJo_nnp^M!aJRl> zYf*tq%(#MNsm8S{a-lktZfT z&L}vZ3_gu;A1qP{qvW&6jjBp9TvgLzm3SULB25|E(3?K=zb5~7Mu4rMVivnt%DRK` zFX0(ax1u+x>-DUAD@>CIO*0q)_3K};*}(&@mb%tiC+y@WY$7D#I8g#Sd}bG0Ao7SQSNlF!3MNujfvwN&j#5HkLI$OEwrIAy3sNf5xy_} zRa?gy*R_3Yw|x%qkOzHdBlk0AGm9ExLpYf!cPd`n4PS>Vy46B1qO|X=-y>gp-zDaG z&wXxZKH%WnLMOYwMt8xADo1ee8ul9qP-@u!iYQ^}9E0%@F(M;Ow9RNBDsiDzHP6b*|G( zrD$E_#4JL?LEK(GT8 z-~lJFf;RAnFxZ4FJVbvG02DZesJXQPL^0~CzA;3=>^nnCT#p7cI8j5mL2Enmv%n%e zzutp6yh%d$Tf(bYB|SVW`f~(WIDjE>@Q)12{xmY=a?C1V1Poew#iqoJ2~zL}8SX z?(@OMvnMxHxe7!n3lqhcYpM0KL;G^HJmkC+VFf-2g!{{aGC)BFutjj31x^S7N!UfU zh`ycUxk!{mV8p>;e8=`EMq$%3Afzj%gF{d(LNR+d%bPdUsyfY^w$}OpMNk72Xo5P( zfK6z@F|dGe4976I09s&$bG)^5jo+MBNK3D=CsDn(f0Dn*dL)=NU%K%}!W%@*^Of@5vx>96GfDB0Z^NJ++fF)Rh za99I5$Uj2V$;s?Zf2adHPzL{vqrn;+O3u`VTBwD&1Wo1?4ABg(V=T>1Jk3v3u9Qqa ztE4ZxQ$kb>7O$v)aF9te5P%XefI%FC-b~LG^oJ>OxFpKtT+ZgK&%O}NO(eXWPKnTp18Z0uL}qMOcGC41*SgP#a}I2;c=rh%?mdxUb7l z4c*X6^iccUt&tSb&LUB#%SY98#v^P^!sI{#oemFJ0u<1PC>R1V7{oBRQ7`p}Do}xL z07?Rk#N$NH1-%^1kG9)-&vJuQ~G36A~jOdl+HM%&JvwUxtqJI9HRD)NTV(j(k)|$KB5RX^=SGwzHI4+sY} zPy-o#1TH!K)orcMZso*Fg}gcSPbWpuJk`@-m9}tL zf_(sm1IPf#^auZ1oY!Wx02hD<_uMXOEl!`4RbcE_e+AfpWzHNq1%gddOkGlx{7>J5 z(t;Y$zFCEs)W!(lMk|!ed1Zhy7=tq4SqR;PGEhXpD^uzd*-0eXlGWCe{m7I>w-Iew zzhqLt3`}4hC{qO0RltWEpg&L$fFaOAPC!qLodpIMgGso6EXaaMcu)vcTP~2+CDT{q zcm1qAq4r+r#@j9R_iPdTkxI;{zqO}|BZHh_FlH2{GLNP#TizcJv=o>ki{fCD2C zf_AuoGPu!*lmu0fzM#a=Yh_vl*jpOtTfZGfz-5hH<<)~#wi7Ma#Qn!K!vGIJ0X5hH zNPqxm^#}j6J=<9r0|qbwD=>l*fB+-NgtxuXHpqZ(@Pms)T8%7Sl09A2Ro&IS#MUjg zsckB^E8Jg&#^4cFzNr8YP=qA_hXVit25m^;Rl&3+gAgczs%04!A%&0Jjev(HDTq=0t=8=8!dxL-~m1$PBV?+e#PF?r2-nZ;pPO~Z{^Pi zZn*!$CEwEu;->(ChrNL)NP(MdP`CwQ5uSuBuwN;*-wQwlp|w#ZcmzqXg^%rGyvW`+E@*=uV}wS^4VZw17TifD z+;R0`+6Cgtp+5{LfSj#DQPyZuHUJVf0#rU>D;Vjs^#=&>-_#>rmVVT3_U3ee>6re= znXc&wW4iFIv;AB9AfGR9RqRzs!ZG_`ZY7;JjOfUeFZdNe;XGmNa2#xtuC&HHncj`X~B%fWbgttSOH_sfSdFO2B6%vPTNUv=KD=*BM5;i7G9zi z02T1jyPeg(re%Xp2h;}az#hiIE(yMDI)^^&z`SH6l!9cq0Tj3a7;u6hpi%!9kmt1? z-r_yp%m!&Hw&Hm$0|Q`$;0#~^p6WEMYO79dM_%oBY;6MJWt{F|OGezQ0*6u10yVH` zg=EO!KE(O0-{S7$61ad(0PbexgbR=aM}SprhHkxG&=d}h^$mZuxWEnQ?>E`eLzUBW8 zy4KcVW$a~hPFMg<24KJkh+Ts^cmyp3UJ2i5Cx+tnW^ZW@WQ--t2(SYRSjWB2+x!mW z{WfvcPH{7w=~H+O?T&53h4GjTifiy%HMoZMB?Bwm=N(tUJl^9Uhi3nM7IJ2_05&H} ze@60c=4QXHWfSM`Cx`MJ+-dR4A|oHuyzgZ|ON_x{Q+ z(1LyN0$Hd52nc0tw?&Tjac;+716W~5XY+9v_l0zVLx@k(Hr@Yqr-F7j@pnh@c=xq= zr&`0lTGILnPBw-pcuWrtcw1ENEU<8HN8#a3cwAq2ap!~=hyope_>q-(CNJ@d4}go$ zcpcpM_UcdW4$N{Gg%wx{lC*w22#*w@F2ok3Kud&;LstJh!WFL ztY|R+#*8s&5b)>mBgl{>GCDam@;S5tZDNmPL&H_Xqjg0=TBxr zhx#gN)Yr14!Io}Ywqn$Q5}W)fVKD0|)~s5$a_#E%>s1D0@?kT}sI`^y=5MUrE|DYN4uqu~zz8OC3c1 ztm^LXpX(+Jm|%qw!x;#H5g{0W9By?r#~gIfvBQo(a@e7YH3eN~PSq zur2uWiXC<&8!2OrQCev_&qgaPdDt3!Fv1CgMjEN6(&*+FUaZlGxa7VnRwD$~sxEL4 zm|z=M4*L2lu=LiO=m`Eqa7Zmx^85c#mX!)jq60Ngt1!+v>%6m0JfS8do8EpgG&UMt5Dyl=HF1yR0rJ($`6}-wha$>#z5bBF1+s^|40FsO z&MaQqHW&Oh=%I^#rqA-tM|a(Je?bf}UaSCv6Gj+7TNsG{y_HyGgdim0Xc=L}aazHv zB;#8{-ogmU`x8PfY*>D|zyF#&8QPuSJUaH-YkwZYK%)+^-K>ib%nD0L0fPWQeC$ye zx0l=71yc9!dnOAeE@;*z8xQ|^@*}+A&k%I*Jh3sWJJZ7mrk>Hcv|Vp|4tyX4Z_>Rr zeeYYU6CW{vp+R7HVITXz#~%&=gdi}$Bb(6C()iMdOwek6z6*kpb~C&O70*e>t5^U0 z#|eKpK}v>MRsqX)Km=BAfenlx5|gMzlT7d^6%2;zRyV#4YA_k)=z#0g@P#N4;t^%= z2Pev~iC6Jv5?SEg{GOHt=geY;&0$>QCUnDL<lijW2OFVh)#8`v!wojhaH@Um|Nn~fPoa`J@Kije$uq23HzrOj1sie5tMb1TqY$E zDg}iu6ayFl2U5Wi4iu>24_pj_1=^6bt!x4jjX*;SPYE12P)%|9E0ilw2FsF~G)j@W zQcH#SQtA~^ruzT1DO}_FDV(mRf>Fd^29+tvpbAx?Mm1_uk%|Ej>|+UvKm`{c!8d=D z;VM4zjYdz|7BZA!WF!NtNar|Kvc|FqMYw}M7@>o+&Xb;=X$g<46X z{&ly!rEmXzE1+T(N0Sdc5CR;uN}LePLcrw=X@R9XUCvsU!3-8bg${uL0%FdzB0_D2 zReNC#Gr7r_;jlo}yWYIo*1aQ!uZdBd;uUjQ28tlWZ)9wQAZ(%qZzM1})0sR3-%-In zet`($?2$sSjL2!7FohKuUh%Tl$$tKGOE~PUW74*^wiWSEiyGg+YI)0C<}wNdkcAk# z5LaUeoL*{p&XKN}&2D~koaMX#E_A}qnbReO_uR`R1G?3&Mv0(ji&rWe)XIrgbe2*4 z=v`MJZ$`*OrPVX~PS>#;SbC-Hnwe`mP>TPq|BRFkj zPig-R;=LjozKc$(u6fPnBzQmuRR}^FJtjuHXgbHo+c8-cyx<=)v~(R4T1`&p$;LSG{?@8hcM6^&73|kb$blz zem7eQJPde4rtQ+TLMzD!Px!)f-sFbM+R(KYF^P4{XpCpP0!c^$2tW`B7(f8zwrWcr zUJxKSh82e>=dsH9&GKgZ!v#@Lfp%oBR+=a9;Jp-swso#{4D;NAg=Q~MDUNITraR+D zPdW&~v5O&CA>^6(S?|XL|!TMhL)J8)&-gb=8!1est*8!j86=o0?w`OZ3=6R-HiGd={+UPurD z7O*^9zH>h~e&#u^eDZoe+z}5wLW6Gc6PMofs86~Y3IK0)U9$}&XHwPaX#0|WTI;$O z0q=S5k1E(90Koqv!B0zhn`8Ugd)TKxB{y!(-O$lj(W%(oT^}nnK?b0K zt-!$$5CQ}+KpQ;Cylk3*6<*3M8?&7s`lX)-`hx&;0u`W@gwb5h(chlg-~DNx{$b zrk~3(LJUYs@D0%k7GK(^AoAg#3x44e!605epCnP74dxmF7U1daAPA@f3LHQXIGuqA zp#-GB2*p|B9NYMjp9bdM`9&ch`a>SjK&f4!2@aALa^VVsAtNG^82a1{ik<+XTlMkU z0kWYwu)>Q0+kwOw9ZJ9u8bKPgfsXB=ER~-h>K-7jB4}MgE!ct~qME^JVa+IF@--qZ zCK3NZV%$k$iILuX<=`6bpgI(z1_VM1Y@dO^K?wkXCP)A@*5ME|f(yLBE16Ciz3P?Z@+yN<~3^uk|`E4UNcH=jKpcshb5Rs$hnPV5SpgLY8+pr_(-PU_e;>8i2 z-3{aQ*`qpmKp?C^({-W|0Kq>-V<^soKOCg8?VI@}-a>kyH|C_vjeuyu-^|J430_+w zQsgaSq)~#-2CTsf_+ORzqR>&IJkBFMl4MD?TLnM?Ck{uRv}8-Bzz`tK9khU__2Cmj z;Z5FwPAY*~`ojgh11y#xPzEI}ULHjvUl&;9QRd~rB;`_)AxFL!JVIquS|28oqz4>k z4|<$Ra%ER)LI`kz5|qL1Y2zQB<>KX}3#g@L`okr}fKLh^c+vl2T^=72h{0XzC2H;r zU&$y} zv=nIW(p=IdMIu3Io@Q!Z=S?Z)|NZ5aogpyxmN1GW>KUeO9;PFJ!U8U%5cH;RMxz}f zjSI}=23DqJqGeht=W>1>T*}}43FSnNCK3$8FqkG@VyA(c312p)=y_*6`j#-xCRLWF z2WWr{sDTpz;ab4KdbVd{W&&uDB?s20eR?B)mZ(1z0S>6ZsqtqP&Lw~f=zv=1fzD{C zB;(qmGG<0$>2@C~P{Y8bT;}2I-q>fEvJq zZl(ns*y)}ABTE*502INVMyZsN=$|fUNaTVJ1i(+Ss6?9GX#PN=Dr$i?s;;I-g5v0v zy(SJ8-I~&7n__CFE`b2(<8XXps7k;P3_%p2fDSN12zW%CrK+l~s>_u`0UScC@@Lr{ z>U6>=uI{S2t_WZDqH6+cCHCl=UaDdCj9s-6pSUXGmy)Z1hUvLZY3yy$O3XnIsKDg)r;ENQ#769*QmoLLN4nCWxqT<4 z3ah0Sql8W<$O>sVuz~<|Dq5VZZw>(v6aWhJYs)%=GpK?N@IbZBEJJ2%!K#EI#6SS- zESHv}&;G0rNbJzg?S?6(tw|pmZmh5ltH(ZVrVaoKzyO`D1xxBH5Ws*6P{1*?Y&3YS zGbn=&C<8nQZ2HygpSpwqh`~6{YW;cXt&;z%5BR_i$SvKLZfEeN8A@uqKH4P`W3k4o z-)g`B48VB~LCK;;;i9Yrz<@2REaN(^GAP3_sDKI-LMu=Oa%$^Zwge?m;URKv=Z@>o z4uj~9ZqS-8_Fe|+Mry`RDtK1vRC=t_KJDxdfFjs|6U2|FmVn`|feKi|;&!dq25;~> zgCppG8LWdxm~EB9gb4tG&c-G5s@mH^Z1q}iu4beMvjTb!?pC&^5OV*4Ep)>-#4qrYFkx7OGpIl(6v75jMgPhKJh$bm9yC=zP|51@eXI`I<+ zZxjXPA?6Y@%5syB&Wpoj$VT%tyI2oRT`_`&T;wLK_Mt> z(+PoZW3NL_r?lgb85jmdYg~tKh>L zFfaG=FRyb+1armZ?f35O(r*7U>~^v;&u%viKoxM}Gq+?kHvu0XL;N_)ah~-*fpMgCi8e z_I+xSnzARP@<9LbH6Qe0SVJeMfD>%%OyoiwJOf39W;xs6IfHIGLvjLlv<-iBNbfKY zuUPAjBpe4ZN?R}rZ~+>`m`g|F1EMlI2=pqq@vnM7OT(@KJO{JM8De zXy|IRMw_uxvvX25b@xKByUz15S8!FAuOsln2sIrY0zn24f?)JU$gE!(=!Fzb70Tz@D{=aWI+&Qz!1=O z9rS}82(%xwvSVX2WdBet;B+VC0wur%8uUOXwDlqnrA5y$UDLH_kM<;&Haugp8@uig zbFv(__U!hn06>8$M?f9GfFI;GSXZ-Hk9A?}%R*>_3LF9>=xIx&ZTm6oP?M%-&-HWH zbtFr-BvbcDb8Jbgb{uavch4?5s4OUeLMh}6{OWc!^R_`B^l!%#@aX^`Kmq2SfIWTj z!FBd7?>B!ZwSSjxUb8VV_o!b3F>4>V1xrIWID#W6u5RzPgirV@SGa{Ugf?_S3P$|Y70jq!M2e)`^~)Rp|yzuF`6#Z{sTB*{iZ zTBX6OTqxII*!)=lI2SfkuyYXaebXP${8-_m!ko{;lL ze|4%VO-L7z=e%q{qJE>4DJ`2rW+7BhQGVsDaFN4){2tThp_#keOm)CZuY3znvkSLq zKhZNq7&{FL`5>|qht%s5(NyLpi)W8=zKXu@5k3DTTvoCdVN>5?bRB8t`RT%|z`N;# z%11R#X{23$PFZ9U4kSe^>8eLU*`2ki&2Xfw~O-&2Z+DpwBIl!le_<;R|A|klNM>kzVWOL}#&bR3COf zZ$W~VqOK<-yKT+RS=oN))frOAy{=u~FS^Wb7awkYkre0|Y3%V6@4fMU=iS`*-gP$D zhpWtIfY`PApuQvniJ{GB2-2Lh;ghr9vK+cuyCFJi(>zM>D`}?YO-@TgOtTyb(twIj zHnZmt*2nch9~Op*dUwj(pVlovO3!(@Ds$>Vcb~ zfnTt3-w3s)hb8Aq2VZ)FzN|Ql2x7upS3f>BCy}D2kZ56eyUy3K-t4s@*4jA!#s5aU z4qmqPvh~x1OU8k4;fG)8o|wCS9uyC_7r!G-!dr(Fn)frS~78xT2XDVOFaDqV1InY$rhNR|sjb){_{JRG>;A5!2 zvSQqxViLbDT{LPUyRPWv3DN5(jEbRCH6nvyF(5I|^Ru~Aw44k`_&Lc$h`(f>N{XQC zHHo!W(X%4$S}#%??K1sFx1ZOfa9f>9vpzje6f-6CTAR6tN+>Ay1`YeW<3An9%Q3!q zUjdG9$Q@SOQ1U4Gp$_2A(0)ecTn|ECg=pHx5qMTa&P_-x`gKuPSC~T|1zpJmz99b7 zQ(|4CgwM&`Z0D-2X6k$&xZ5wO;bt1&G0a#h7T$Mmrq0EzUVOO zR=f?M{p+WoZxq3~&q_rPX!=!~k9e~Os|MN_Sp5Ma3?odZMyXc(Y0Azc1?TFwdt^K~ zV+7q4uhQbWsZ0_e_yqpW>~N`d493y6FGSQ%bQqvCdme0Xc16cg(?DzlzQBRH_z&4& z>@Ocx4G3AX8qW5Tgy$>c26>0XiHG(hC!TmBu$1tuVt-eSlV*)0x(#Ko=5(0; zRMvKcF|lS_%?{;gmw^RWV6yW>M>7FNH1*zvne;35LjceAF3FsEqM`Ov-c%`*MEELN zfEL|eDe+XhmLX{$788uCSvP}GOPNi~XS?%<$14(MiO~q-C$8FYfgmQqpUv zNT?jD>6+z3+T7xeM|JR#H)f>u+D=0J7mF^W`0orA0!YcaxYdA2E76bdD9p>AKxObr zCb4#2ikwm<8@J(cDXL+8v9mP^Wxx5X4n_6AFf{ZWisz4H>e8t-(Gv%gipUtH?&U*5 zvys#%SA+J8%UYZErQ+2;zxq)B_)t29!Kpi%0>E<FCbE zP(GwJIga@D?!j>zoQxq!rpkfp1V*ZMj>59(kPSfIPxf&_=J>kk#5`!c)%N+97v*+E z(R(O96}Kel=j8L3=|3k#K2q$;FM-%tkZ~G87mKcs7|9_&bf_;^L+XWaB(8tlo_1tL zri^rJK~1|^O#Kbv-@jbZ(A*r>UNm@s<7ko2Fmy?qdGs?sX!!5R9SVGzn=>=Nx!lT- zocLDxQ`~3UkQ07O;jFPDUim)#<}DG)H3%4hJ*jrlirHE&hiQWCYy>wp$Ku%q`;#)z z9U*iu!CPQ(4XY9AsZi?}>z*ecjx@E~G3B{cpI5aFVULUs>F#=6PUR5}Npu$C#@tP4JDZEJBrz4Lp zU-^p3NB#6R7oVeh7iA-P`HAU8$)odN&11d|nyZG#{I4U!u0K)^Eh*dHsHRDLOSfmA&=pU=c21Q{t@KWYTz)ZaM z!okRDz{r(2q7RMcNvzNETAr7kgiQxLVK*~x*AcW%s(#Ro-R;O>C_$W>y8fy?U$INO zh=_i*BNuF84mEvRY?!gAM6D_n#3N6fzQ;JhU%RDJamAe+odx81H5ta0Mu*XdMkcbM z4%IFs&P0AkC`QWPrKKDjJC{`ug++(B{&bGx5tgQIphF8VBFXs)wxp9IA9;RfmBmJa zM5js@N&y1{>Q~1(JJ3`b8*_kW{ku=Bygt68nha)6P%o8H&JnL+Ab(BK!^x;O{=S&x ziAh8NoZ^-&NIxnFx6v{T+gk5=N%wZXe1DO`hqD5`vq|}c-cEKW4J1An6Y5P81Eq~) zJgHexo0$^$2cCs?bwa#9H#gu5h9C3<#CA| zFFg7*RM-YfUT$rhi!A7_Jtr&pP&s>#JM_bqy`sH(mhbL|vrD&up6g@gAK?3SXYnKs%StK}^Fk?1tGW=7*2xQ%1(^vRb>s&g?O4oM?Y)`P0`Xn*01sx_ z07Bu_5C)gkI#skx5`JS@gAl11L&=+Ab1Z2wJVIm`y&#HHp^VrllCGuSgT*zni-tZ! zd*_S?OMBWEO>;~3?q44)pCnzh>>-vWD-Tw#rY~BrmfrZmAFLviU$$WzIRw#CuVKHq z?4VqB2$Q5v1`f>Ex%hC?xaW!izL-P>5EREpr!~Rd5zz8 z8hL*gIgRn@zkQY=fHoIT>s$vqd*Kjhg}y3@LS(thgWgDv?}IyhVJuA~_#!K0^=Co4 zCa62%lNTL5Rt6v5xCN~{I?NGdKX&y&JBoX#!RQ@IIO3{;nJO2>@$qNH(U7$w*H2M< zAj)+pV`@Xrd-ZD%y~wdI&?$eNapcVxgp6>$G(H9T>I*|G{px#}TlHTQ~P3 z;-sTVWw!(k6lv>B9%Z(p9{sKFfZH^!KenlzONpa>p?koP>kRN}ve5mA?guAx%Q&!0 z&~1;Y8-;RkNeXuq>D%*|X#L{e{AI@>Vk7g7gY(5bgg-rE48UV=j@DFuk6K)W11A? zD=`EP5~$Pa^gfod`?{z=&J0`aTyl8;yIk_@(NJVpD`?8=!Uu2&%Y@)Q^+y6Q-d*nI zeg}49J34@2(kO)$5BvSYCr(NO{)0kEGmKbn^QC6&LP$(vuN;$+_VWry}-{Lo0-BN%p%? zGaEs!-N1`#-y6x0*<~q~xUd(S*+{QK9lMe#XnQJz%5*!rCFjm9- z6u;}SO=wM_jY|g9JoQG|ljTB##)@aIksdn)5<5vlD5(%zBZv7X-`da>JVrGw2Bxv# zDwZ8^D+Y|`##yg#!I(c5)vU|LsSBp%8{of!@awPwiI_HGXMN0>*T~w4LSsSWEsfv0)=LY4NB~XA3 zIW~ZQ@WGBTK1rrkRM0#vHhH6hPS+~&Lk}~?rCkD+!nSx4s<-b?bNa& z%1W(-zsVh(r~I^TJQ2OJ6YKyC7Lut-3gOwN_Q*sf749TSnPen{kM#x2(qjOCQtVOT zPo!Hb|AP2vCNIiS)YNSlC%^<(-k>A7=P;jhB^jN0HIvw z97#cFBKn82ibIQahOD2LDL*LlN=z~+8-5W&HQkGb_9v%72u=(9-#9IgCsny#9XWy{ zI(uK5MvEv-yA3c;?tA}`_IGKT3Y3Ul4`w-s29 z`T5`mwjNf$B9WlN03<)X$>O)_aXOG7E32V z5q~s^86%Y+x-VY3p$hEMd8||BqC{YW^XL810g0JW%~QRgaHefVAo~1a??wo~ybx^j zsFlAh40qgPB~Az@mr;7&@^n)wu4s1Bw9FC16e{nOVjheUBC@Sbai^ned03RP#bZZb zM4M(D%DSC~Qq-`XaNtnn&WZ)IgK%foRgPGHRHV^@z7-aIJR zzuwC$g=2|Y79qY8LFv$Kr6~Y2fAeVd==`N|Znd6%sT7K(&5mk+D*ERJoGUidpp_7> z*rtQK_mOoAILTI#BYh9JAl`yFC9RI}dg`3cRP>=V3;UY}?XTXs${1olE;(-8CA#5; znS~-g4WfHg=H2yBuvCvOS#Ws;X1Mr|wD4pwhGJN8Da(LkFEU?Fn`rTq!f6U~KIvNi zr-j7Kmu=M}A78gXs5{NU{y3v|8;)bq-wJ9vp9nqukwzYsbEN8F>Nc$-hQ}aZt(xgS zEcMd6|J8@xe7MTF)a&w(DwC@C)dvd>D^4BkaIGw5A&(wBw-0!a`rgc`;%fD#;f_|E zKBIVnF0{C|e4<8%db#%V)7G%hSvdX-TkKp4d_svU_?$4T&V+Med^fizK1|BpVXb#x z?(MC`_|4s8@1v=1b-5y<(`d?L4&-v*Mdm2J9;v(DcFZ4o@-{A80sVL4XSTCMvX!AQ zu>9hPU5u~v`3`LlHov)atmM1Z5YSzm_-VVcEqWvMDvD4sgrv=-Yac?c3Pi2k{2oXV zyl}UU7&S;>w091HfF=!z7nJyJ=(_XQcz=QO7rj3cwNyLayt?;aQ%7)+zXP)PDr5$Z zC@5?#atJ|p%p@|NE%ytSLh=_5pfCl72`{dP<}`P47E_?|K-)nfmSHkd!k9LhtI8OI zvJM=r(saTM1-V@Vc~f=oN1Peu2# zrC^;PuLGT%Fd87RtxuJWk-*XeT|8|y*g*JwN~lK{b?60=0wS{_J{o|NW`ZM-J)k$E z_wvY=5ET+4fAZ+jc5tZjB*cXtDK8V5!I(8zcRe9m@XOw_GNn*pO(&4h z_#qzyT^L&pD!ym3wP?;YV`b{kQZuH5w9)?Q)Z*Hgc8?GAbLOWTqgm% zETEp~u8F%;2ljfb_!X|m5A%NcM?x?gAmh%k*2{Q%D=%B=sdqCtKDf=o(sMXgGt>H` ze1l5_-ZwOb$vg{wF#KZf;iXKcz`8fMaF;uuHkG}ew~thB)I8jdmNwuw65Qh7MtFvr zWz~Ql-mg#_T@jG&oiTi!%Hy69fOet)a+oo(z?YdP>7}zh!!}=$@?Go63?le^LF~AM!a+8 zX-(hyOQc(?lr1AGT3JfGrjI;J-eXOzBkCLFK7I(aSjT3lD`9HltR4!qQ77TKja@CU z@KU5?Kq)ll$n%Q#IFL*gyeVr&#Rk4feBEmO$WSb;4NAtg|KxOjJ_CmiM|0_cwfQ7`Q(Dzl>0}F*1e`h6EEiRF-1A*hEFI^pIl?7rhaH8hS3wCWr0YvfM1ot1M*ndv)!@^u@q;< zfZKx=Ne411rL0H3ViXA5i6<;@beLA%0gbkFjo0<3DjiXpanGRx7B$*hFck?DyiOMi z%ti}_IAR0gVH9D+qjb2KB5VK1);h1X@wW=?et*kWhh#{=Sr#rcG(b62ST-p3BuXv{ z0@jO*C9cZ`KeZwj8WNNk3dV4Rc5(uhy7g!A{Y`;EVmM>bVQD|GJ~*H-cx2&_ z?q-J9RRpm$2msaQWfFcH87JJ}!|w@2vWhhGakzX@8)OkKOdJ;2vij>k&`esogd1Wb z-I7laDn3Q^_Kcaw`=C-H8 z1Y$KFt(4}$kt%0Fk!Uq(S(c+fszLon0kNkhqB?^cGdY+dE?YKoj9YY}a4<(rAFTUV z0dXi7e)kh$;_RW1Jm0tboKhLnVWa!k zMGm5XSTS^Osbof>6C_6A1ls>;14$DVx?>m9?3(MbUZ{G?`hx4eq!_V-zj(9ihl?#H z;3Lf3?Po?Q^w!6%%)CEw$F#fI^NqzwU~{y@HaCa$D}1r|+{|}BbxYWG;!7jZ!XXRw zYGmAc$?jGYrU8%Yv^Dh|H}rCL;l@PF|M%+^YHR z>;9K71+#98?>0fccOcglrLC0u73a=NAjkvw3oL{7d zLL09n6Ow5V6*0Z)p>tQlD`6TENf~dom!Vr;diLQUAJynhaI%TDz}73lR7#V00o{Up zD_i@ES7|z3JmYCQAWzdIPYmdiKNl}ro?=O>ALPqBD~U@5$;iS=uGDq2M;iqNDI7kZ@2aV3Bf zJL_}l5(1-y2PM0W6Rm9HT@)52Pw}3+9FF!Zu3N8r-4nE*{Piqz1-BVH(StfP6FyCz z+susN!ncv640rq;ks#E<-d6=&U$OQTDTQ)}5bUhvhoJDkEA2RwsO!Ymy4eT@ELj%k zmveq#bK6T0RXL4yl33SP6sw0I89fPkZb7Q2HEtYcaPODKmV(o8M^9_^@uoQUm1TpKs8YMV4O{L&ax ztOD!>_oqaeHOAC0%p~TCl?4YQbyD;@AoGtd8x00`mLOqpJMeuZF!2ah5e^`1Q4hg! z;g-^$l_vGR!6ddr?xHC4$8RwXCJr`kX6tug^o2qu1f5x?eF&o}dxMmUp`ywNv8@V4 zVQ^@}RoGnxCJ%0cMG5^iNBs#kW;X~~+7;RFD!~~K7(0iZ6!AY9Q#&gvv6?9UB{v-c zxzd5iB3fA>%ic~7u!r({3VML)sBy5~6=fE8b)us%GX8CSyougvDvV=W>3TGT7}kb4 zV!o}|aW!b!odqmo!4aIXdTdu5jD+IgFVv?r;`NOVgBglS9_-*o=9W61E`uF_gye|A z1ET{tHiSG*@r?YAt%+yqpa7mn9*q#)jQc$(1dIgIXl0ez?n2a7hyGbwaP(`&3I8B% zWbvnL;*PeAKg(w%g;0MQL+1;w0_E5isjJ0f^0%PSG!2Gmx>`YB3`)nzVPpNNi~qGX z{zWkx0>$^v0KKv}Sy^^y$#bQXts)onSNxdNjkn4*lCD0W_Le z%U73kHWhsoMDLzvqirdj9rcE;jwN-_0M$t?dZSts#2t4!^Fc zteP*;o^sX+La|_Te#h30jpEHej!>mCQ?6vdo)x@w*4ove7x*DKVI#jDjlq3>{n)_k z8ttThezBChQAYJpBlpHgQA&Ywr|Z~CyiCOAQHvJLxxd{3Kqf^tR~thXGP z$P;!F2t`s=Sr#OM(&&8mosG!S{DV}F+W~II5KgZ!epj$RzFS2Ijwm6j5{V4f&Bn`Q zv}4JwF&iy+9y%1_-4+Ie4(zDa5H_t$)V;Y5K(P)HgxeAq&@F{-yNb>LPooR&3vtkC zyrf0qd(n!#E*HXpZ8C*$yZ>jZW(7e!P9np0Ws#JnQRQU=pbDA6B&}@WfkbmjQ->dQXCV`v(B_U<~AB#<=9c zTzZ1@7};cLytyld($^NrO5M@`ma$y6nBKlv;Wab~EGEW+qz(|wghE%RkBx6mIo`mS z8a^;W&7j)@!h_(k+kSlLT@-K7#w)qPlfgK^*GJqEnDSj0312Flez+(kbyA#eqM|QN z0=DKyD*95RjdECLGawDei9z%RrkY)G`l(yIU3eR*Tn$Kx06TZS$FZ(j9Pljj9_&tY zYQUerM*#wW@>oP5UzQ__EIZXaBMMd}hGniL)n6hdv! zqv^1`PR9E#fC9D}EmH%@>nt|q8sv`FPdLlt$zv6JIYc%BMGPJ0`yoqsj`AM|TYRGoP0`p)==YS9Mvl z?fo)N90-Q54*}<|8mq*QA}S%&o>i9P1!e1@2}%5t&DN_KUlrTZiK{Sl6%|SG@b_fv3&FGY9mFP^!@gtC~I z!Lojlob8Kh$v$T;P+ z!Z!lkY71rhwF)Lugz^tUB`zJt0b-eFi{1d7?u_6*4Fp=r=G|39sYFND!oZ>Y>)cG) zXAo*;EAn&$jE-4#52i5>TF^tBuC-{%vt5R8)-GhlxTw7y-QYds+1U3NhPC6NqTjHx zp^Wk=n#d@HZS;2d9rZ75eqFtIsmMRAlMmp`D#}kpgiIJ!5c*d2nXCQIx})da>C5-# z7+AY0&!RU?5*aAjv=D|t=k7D-)C)>WlZd$j#gJKdR^>oVxRPa-R8yZOg1OSnMgHjB zRK?}U4aJJ-n^l=gmDc?XAH#6&nLEm=Q695iWDfEEp}QwJ4^!`|WMpC=&$ltcHvbLY znoieqb}y{rrXxv&$BNcK|Eidy!1hz5{k=JW^KN9*Uo>`b@r-GE9*pID;-^AK=YZUxc9AcT8;o2tUo z^jpxP&YsiR$2qa*D0XU-cQQZJv89b;__a7%H3)dhPr^p$yP30`!oL@FDoBFRvN}i3 z{rb*J>I3?^hXf?i$0kETOYLx6qdK!;n;x(*n#o0_9vos{aF_k+;&0}1gIHJLvP-dl zF*j`G!g@XO;=ongtzJ`sHLMVrQj3`bs^Scr?dWB4yJ*RrCj9tTbl=Tl4GoZfY!U{t z-J~Yk#;Pz0<79Io3StbwifjIc(*bfHbvE;y{i$HEj>gbZm>md+UoZ`06PmbbIpZm8 z!*~=W43?dm`RY3!7A17|>*rmjEY1Ad9|L(C#=rCU4Jd#J31;Mv1H>FJ8+1?UGyc~5 z&*Yu;@8oT=8{H*+l&ET18J7ic7lt@YjWP-yE`Nt}cXrY@9ht+SGI($4*t-STIit8E z2nC?9SS;i48@3l0w_!<$uSdjl@uyrBg}mR!A|fqL=qWmNsO}m5WO2DvJdyknng6?d zY(!G24YrJJ2i2Kt=Y-KAi6=cId=2c(zqDxT#Nq`wahqGEIiS#7zqveH@a8Wrr`{VZ7;Gc@i}cw% zz#xi64X7JSjR@*s2xYfpWS|5;1`%h0+&k7#;+9jgja3=0d6U4HXa)a&%=Wa2JSo>A zgxQYB0A&RpHDo>|Px!5@SqDS3o>?N4^;*jRp{)OKLTqMO5S9RoLGN)!C-VI( zOB5QZU1k(~G|vBhWr+qokfjh{A`{9jAfBuEEL+ZsiccQ$*DFh60FK=s#)F}JHsdWR z&vu405w9%aH;r1zS<&#wFYK3=KwcRaAYNITHlOZB8!z!OPhr+NAs z@g$Q9hG9z0!Hm+?=dIh>Q;V1c*0$xRRO^!6)f)A+Uz!-Urd!_Ap5u#OzN~k6vjHe; z@iLsKhEGQuq-{7JtPYsM;XNV(?$gsQVJ|a0EA_%`vlIxf(!cnAK{Xds`=x!nxp;xz zJK+)C$DHoChh1oFbtRx+V0okAf|F zACF6^@xdDOaJh-B_<8QnX^_T!N&5% z2g%e^;|Jxm=nHX~K~-1J5SXvF4dNj4Fpr`;nvbguFDSC$*ocjDJ#~LEYSsrqnte^+Il8Yoj@9#~HcuW)DuD zGj7Z}?~Ea{;aAdYShUl4GtUh&c2X~Q-4+mfn*ZS4wt}zzox7p)ab^(CaI#D@Z;wFC zN$&e~nu@>JUI+*HOnz9HQU>KwX9w~Q`)}P|jTSum@)z5`BBb0iP-Y$K;HTmgmX$etS)69_KH@F3Kjy7*opM&bk_ob7BU+ zEH%uS#cYWQz?>;fCP6u9K^6MZceexE)ZuHT@jZXhg}&_dsS!yb0VtSxvxxqd#jl0t zJmV>RL;u*3b}-lPnsIf}VYriIgRU2uC2xw>zB%WUNr{o@08wb}O@&er6}{I_Gk@?=!* znEk=*hhd0d$G&J84o#U?ZLtCA=!n)+(f=AC(uEI%M}wq;sEF7M5aRhSOtX}& zS4L9A$Sv$v{P`Fj9X6Txu1VHFFb#8mE(<3^_q(yQtiK+^17TOmUTUuOq$sja*AzMC z@TE&39>be|wmX{5ZAPD1l&~jPpjLE`X@<^pB6hbHZ0&-o`u_g@bp2_Td8qQtTRU8# zZwmS@sJMbDq_6a9@%h$$_Ro(LY^IS2K0TSs!uS-HC!&?ccPQCF2Yx~Gbl&{+m#1Pv z=Qp!@dovZZ>vFdvuk|f5^&_K)yw7Zh!smF6hUUTMHY8r`8MhC9u2=X%z8lf-MgTBp zHST7Izc3Inc6K0w9Xp*p(Wg7opID3=u3py_=Xi@tq+cr>%z`X;?mERhPS)ZqXuQON zT~HW~@MCAZi+Ij;?LlJ}D~jj_1uIIoKX*X>$ngrs0T}d_sou3md3q3_JeIB#aVTv0 zE!Eqz6>d;s*e50WXjx(hrqteKA2ynqY(;b!GK1oZ>ul`1y>L0xn5Xy`#*W=(!kdcn zsgvnZa8G_ZsH#j2T|)g+R*(~|m2)0MH@YS-YGca7EZKCtTh~WQTlXbozOeCO=mJ>8 z>>XmE#!UvRA^b+!?O=8tBau0jOQ1HF(!ZcJU{wA zO~i8Br|Yer4N0G9@ImO1=)i$m(dQ&esbpRe-5%2e3_@l2fZn^n-hAC5|UQWnGE8&ifAHtRUzfKhPT&-+x+d zdhcUXdZT3o9rW*W_2N%uBYf;&DuJShe!5B2#d;)ZG5a)S1vY#PX%#~Vg%8WI$bo}S z`dHNd{sN2{3_QN*p`9ze_plvbk?`q%9#g8e-?U>FY%EZACYiqjNpmGEBOsB6E!GRM>7q6co2n=I=)G-YH}tVL15LR>{ z=8qG<%sgcRNcN&A>S=^&Qp=$Cw+&&4cu*6JTl?Ry^5BScvHjHs$_BK(GnrKKO5+uU zsd2ERZ2Z3&HFaE?>sW0p;~tOeA2>BD<+06C+tN*|o$B+f`pmvK-V*0KaG6DO|h6=dI#;~u$B0I_G zyvdw4>k`-}y3#H-UVnWqtzx6tP_y>=$j{(T^{9kDBS;T;R3npY4`? z{TM-QL~R=&%(@T=_hJ8#<-Ge)WQT^E*k;wZ(h#I}4K^BW-<_;g@rbo(1m{ zWO8aqr-m`D&T3xXOUU5Wi-kafU&Qm0!6p{Qik(yS##;Cf3$zt)@i$id#C&wtLMU1b z)~x7UFV~`QANQ(wgd<_h=D6yup;7zN7|j_b0qu)6;*CUgLCMGA*f|c^sa6?r3d66AUfb1SS_Ej0 zTjZsy?I96;vQK0Ndx>8+s)w2?d#=jx2Ik^tsb_iSq}sUYE=IhOP|i$yrfD^liEri1 zn*Uf%(CC%77d$o9A2qZuF_#)(wO3raA8Z+1$vejw$t5q!9N6?W*See~q;M}TjV+vB z=N|fynuzlptGsc~{m(7DA6KdsF$P$)ri_}^>$0QCwki{*u|GGgy;IE27FAU&s|EPZ zaaq-4ux-|#@{*u`0m~6~R(qaXEZ0P0XLj(wD;BbwbE6sG6b}gIcC=&pF}8J_=NDPD zUI*U0=30mO-W1MaRxO3Rxz-J}KGZ)H8e@IRJKNn}Ao9fxhr3-!D>&aJA2?HglN2GZ za)uz-*fS!<&RXKGi?`Y{fNG?$Klp^%=5#`R2BGqw@sY?-cgT2G)v&6#{vG^K4TNiz z4w{F$@F~_>5<^Js9wk62O%H|Yr*}eK5u3hShOk;#M43zdNm8HVUxGgzj<9Q(FC8{E zY{|%b2y|~J?xnx+*w>JEDJ46&_;(tdA+!jCC-26&U6|)d_nxO?m_QUo)Ma%nVhC_1 z9Cv)J;FgFEH;M%Dv}iW%-EGEug-6PBU166i!hZ)pw8o`Vl`E=1d}!jw9qc@5xk5D#GmWIXZ>gh2h(=9Whe((KigYw6(;er4cLg zmP`;J0CjvzJ?xGfAz#}Vp^e|r_1$Y*2!IXOu!i~=;q1;QKVhO!$Z^EIB6{)BwG~}p+jgkR;R%B;<9z}|k?4*Q zBXlzmc&*qSYu=76yo*MAXpAX185rMLnaf1@$E6B5SS>U-5saub{@?9VALm0%nZJ^Q znC$u@@qZZh{PPIIKGUDe+bYudZ^Itp*W*(?V_X=7h&h=QhB_{yBo4Z~=9lChvi?LD z`;WD3`~Ks@tYC@sf75k>{bT>6>$0Ur7}VE4J@hP;WW0_rAZf!hq)-48C{F}MfB_>& z!IX;g0K}Ml*0ebD9Cx@S5~yA{-H10HVPYi_ciWMo-);o<%0KV+LfoPP@b1k z^Oxw6hELahCM~sl$1X9n|Ng(q``;AE|LgKa!$mk*v68-n7V!+VY@m5^PfVxJ<*am7 zu2MWRj`&~CPy?B?YdkbIx})hHM~L@1_k1OeGDg_eldq6d_&|&`R>T&=v5(bo(Dt*e zr~Ig@tf%@N{AbEv=7m3&uRE-?97`*5%`deZt4Dnz+1)UP_pvbxHDQn zpUh6L)^4f8SD$X!APQ5&t3`~r9Mbx>9tCjd%Dq-?IrC8awH=Q^5B?rif_SO%s|?P@ zDiVX((zRL?;*ZNufweMIC6Y~Cdz$CU?c-QvfU@%p`=B}x6(OuNx`S!dlh(m`B2T-~ zu{!~{AHcWi%5MtOsKB<-<6_t}aRIO*USAb7t(@@zAX0VQ3_B8vbw}lNPv$!ZCuI0H z=P{3Z&3)-!l|&;G&hXe+D#(0G+&Z;lEnGRX{Fd~tnmQCqv_MDtN@FxDjFyaq-k$+y zcS`a^7mLQ8&AN9z@KIGRswNECf^2t=99HKMG&>73Va>U2GJhS@E%#VPHFyFv>Ra9;Lt%)V0RrSC;Vj744p-i{EO)Mffw?^BL@~}|{89{m^>G8VjS55oFy0Mk> zO=9X;j!^Gc`H3fP2y|{XmrMOJ(kaWFArb?&W02oNvlm*FAGw6Mq#+_`*sp2JFQhM} zve0)R0o~jO<O-qgY-|JDX0#%y>h?PWZdE+(s)yMP4)_ch z41ziSfUz_;<(2mjx^D@3P^Z>ihVC{4tEY;T-4XG)%V!As`w!)gndQJE9ot^#q}Snu zxZK7_;*J7;44;3)m;~M3=l(X6a9QRmXkh%(zfGRdn+-Ku$HfT4?9mQa84l0O(-Dw? zu*_%aGK?GdwppA{bqJ@&3qVwhr2$b#-cY`z#uw?#k<4ViYVqRkM1qK)qvag19u1@k3doK}K6ef|I^s`TI=sTVpgG?kX~^gmcXc zIh;Vk8lxRicS$B=?x027KLQVODsX#~s_}4Xyl*VBVoy9e0tefvSd3|Fv&p{(C>_)C zm7;%_FbRAB2oCqORQSC`3$6&0Br%nSTEd7gzyIylqC6BFqf=LxCXt??MngUf;F&Na z6C)3z8ElV4tIU!7<7%gSr(3y6<3CqB>Wq-gRV)de4Jq3z2E12-y_EB7K;cmudfaS9 z;%#L7a{n;mwAe_aZ{rAY3OTSY5)T^;z!X&v;CsSDH6FE>A{9^Bt~V$0_XmW7P-f8H zYr>!1N)Dv#h(*f6kU08;xqaG-!}{+SbzNWVoB8Tw?!G``hf#lQiP?65ZK0g#X{V|i z{eRZDXD)q@zhiy)_frsL{`*rPB~56J8~X33fJ^=?55?p^F>1H|iGM&Z%8I7maaM@+ zH^&d1J`l!2Naq7W#p$LZk&*w*gU}!pHUIy2PWmq>ugeBW@>(xK(fTT4=)$g!D|2%D z-ZQC@c=T4?=cK{PHI^r<-5)`aK}-OWw$-+;E+&Q2IYi{kHvC^T{>ZnW5w>%(-eN~~b^^*vJ!LQB%M zx=tWugH_kIN$DNeX^4C>szc^)oF;C&f;yhvV1#nVyvODFJs2uSmGfhB+b~f4p|P3Iffx?46>z~u{6q9;~dG+$jRDB zwy~D6WZw=som@-yvLuH(=$i8#@~D2f_n&w^-k^`9DdLXA+pN#9Y$IRIcZ)d*<{0?9 z4LQy#NvbF!cWtEPIwvdkf7EV_-xugWqN9gg%|nrjB3FkV=CuO!7- zc!odjRFdpj33HMzl5P51`r1fV_ zr?NjXEu$0(i-6Fmv6;$1{UzenS&!MR5_SKQz@4Bh3kZ!lh1x@!$GhvV7;15x&jI>= zLG0!mbV+}I{*v*F`f8gFkSX*6AT)O4^L@W6F=cm;RS7wM&~`Tnz$T09B3P)E#rKXj zN8%$Fj!B}TVn#(tmF)8B1;YsM?}mNPMrA5Sz!`BM7O&EOR_A)7a?h zz&0B@M@*Z3N$qdYdMSF(A^^=IXy$vrDCY2Xcey zZFi&>p<1X+;)Ht)LkwfEc8+_**IM*0zu1*Er*`Xl6bZZK2HXZY2fc(L zEQ|aEhG-kW-I2V`S0wxC%FvP)tVb%PSC;d!kU+yB8ke ze0BHPT!IWgiOt{AD7xc~4BYhrKwH^~OWhL57D>c8xGIv^)_aPtKTiak=d@=lE#=`R z0S(;CR&V$|x!0G1T(eI{1E9rw<=JAGpfzFm72I-K)RQ5m@{GZL@7`gO)O9rbjy~6NbqLJH8)z@;;8>Z|x?B60{)6Q2^>n@?w-vq3D8Cu^*Wp=4H z2z!``&4JJFZC57?bZNQg2qX%vNg=ua=G@-jyFibBQ`vr{FbKTa`=Q@pD4Oz-$G}!M zqi=r)ve_#IdGK>T*wb)^*oVPcjSf&2p3kM&%Gf7OZ-Ol7Jp3B6tSI{F;Yft3>pM&C z)0i=s5?I6p6?d|l!gGcMhErIeQd?tx_?sDoWdtVl?3t?pbv+4B(i8bg<5U=p0_`EC z!8dfQA>7wW;*7RJG+o6B(pfsjLks0mCLUo9cp=)XOL?;tP)$Ij9nGdpp=$b13d)2@GCe)Oz@Z zTyh}@&vjX2R*-$$`ui9q>`i`>neY!1dbe*t>NkyX{y<}7J!w;_=JrivBr9K<(0%%S n#2h#}9!1Qjh2s9nEz{CWpg?aYA@(=LzJ|%!T+a)ES}Yd`yW)>`lNUubg^8`Kp+=?_ zh9HpRM3SPhlH&Sf-jkU_A;|#GNJ*%|BP3!4pi-Q5-UU%v1ErR4|L9Z!2 zRt7wNDcxfQf zzClz`p(CQ|eThSZ&8B-tH(r45i&GpflNSs6+(9=8lp6jBnC-!(V=r1^Z!cSD1)2`+ zMkB&Csh-~A)pB2+l>i7dZ|gpA^_;#G&yyR$)AH)$vz@yp+7D9gPJ)d}&;`mtsp}Ie z2Ua)OyhwXrJwCp?v@|BsBBY`FRmJVf_>0bGl}n2=cbg- zrCV{Fh>>&p@6= zFF(8ifwV=)>6E^f^0y;_Kq9GL)Sm?L51XDm|BOJ;bZ@HZ!NqH~w?gDCUxYA(kPSQu ztY3rky@ja!dOi_Szos7&AY}P0Z{inWg+}*9xeATf3jK#JQgRbjo!9-lf*nX$x+D_; zaC$+iWT8knalWS{P2zVS29pza24KsRN`|wFGb#ir5i5%m?(%(Ip!dQ6P|s^ZVdMjnP?(POv-2)D44 zKMWLRqO5*@=Vft*(zl1-M8824$kw0dB(R9%kwtV)7?_tJaz;KUrs?oqN?K}OVqU^u zBH7nKPSO*2lX0rJK&9~2OagZqW0_?c!7!FdP&qwbVLCfa36nKUU8o?fLZL|BKO2k1 zE}pZ;=kZHPSi#4rK|B*2lM~aTHQO4@=_n$Zn0}RSUF%|NF>COL4k)O8k9^t#jHz%F zo*+Ik#&vj76f2d9I~a`HuEfC3xEZ?|haLx2R;8|>c6}876*)>GiXsZ1nqDa#zS)U~mfgtfuExjAW^!psuPDy0es zkw*N8i?MG`6K!SguTo{j9JmL~VDEw#!1$RgQq_!xn&!FDG101d;(79UVw?4Bh1*$4 zne{Jf)y}=p1luJjH7Ui6!+P%}ttyTyPG=!!J(lL>Ix3{gHHYD+)rvSYLb7&ZlN+=> zlck_pGfwrZKM36DFO@DWe`Fnrp{OF1qL3p@qVzuDX=Qx_ z#>~GBuO8q@9~KP}MSo}7rnyMIXxV1jmQH~{K|&!Zy&=65uOMBW3C`q};+AUf>F)X1 zGZM#|z{@zww3@J*Fq$x1`C8pk{dq-pMU~;pk|p&_wVjGOh_5=Q8cbDLU8_{IAgSQl zNNquF7G_qpOoU8c@`!Qsr@e~KikwQ^Ps?KnlZ6$Q6>hr5dN{_Ft%c1y5%m#nHEto7 zyojj&<7jz=>V)n#W!BhSuefI7dlPr~-C7T$*XfN_`!M>(m=`Osy1*@_Ns0-BV#YYe z)iyo{0l|Ti-d%Jtd~^x;ZPOj~OA@w6Z?xu}za1qdlqP)H&YmpVVcRj?@t;cRW=R1j zt1;X3H+Kln$uAG^KS+sUFrUqLmlc-vGA>^wqt~YoS1B0%R0(s)J<;98;XCHDPFdtz z(iqCm zHEDQUGQKVNF11?lkzkm2f%kG#0f|Y+*82jIlhxSX@Lp3iUpe=+k$yzo72V)wcN9ur ze_s_p{!ps`RlEVl7*>aYDPfygksl(_A~OlbjIx|Xv=Xe;e7SUHJQM6SEH(UXbVh33 z!>UQDFD)bqIO(Vh*&r4TvlrV3{tHP94;Ec;V(B}ytenz%za08zJ)Fi$MN>WmQ1`{^^86r!r#9U$|aGGs4(6zUNN%o$~W{axoU+3SJD$j zA$FRVzR$m>MvGh_l)0v)PBlu6SYm9bV$|3Z_?0s{FPWxiySw!3_K^>ncL!Et9wtaN`Vv;_lhibCcr$V?oy^*J? z&M>R9w}+cwDMRT{>4y^A&bR4u-O*FXzz)7k-7(A7@T5lF$t7QB!=y5tvh=Xgu;Ka3 z^U@Rk!ob}1)97b)ZFM zLsbq*Y+E3+5^-8uKe<19LWIgSVgJr0e;#r0sXd`FA-$PU{C>P>f@1u+hMq=^Y&YM) z$i|HGh1ld%^h6dOH7AJ!rB2g{b??Cl}QnOw$FsZxnA;?l9)u-)LfiWrn_uT89tFRa!yuikO4FLyCI zS;tRi@0~uZciMY=Ju;lk$va(t;0!%!Jvo|vJne2xdD+`lJMKWaQ&1;cr*kNAa;`bCy- zpFtl*GS1b*ZHe^^jZGoEq`S3^q{OBMyre3u(hSm8!iFZM z;?CBFiq0}h`p)M1oCc))e8@bGTz~*eLt9;9M@tKc4VNP?=});_!1tTO^rXZ;Pq8)U zB^A8skXTh(j#wCKZAi>Y$40Bq$jC^{&Pm6}%E8RU`ka`FfsvJ-fs>w*ftG=hi;;ng ziGlbZFH$~a;2V#%ff1L2i0D7M16sVKCbqU#T=et~4i0n<%ydv|V|qqTPEL9TCVD0& zTHp*?8z+dZt|KkPhU}M+f65Utw9&UVwX!vZLWpnV>gqx5YmT#7wE9;^ z5SxEs2cSsrsB1;fNXJ0`KQKv4|DMg#^1pK0*uJm_M)HrD{nrj{l$@*#=@krZpmx^! zhA-?5A+}`yZ4d_f|B_>6XKnEl9|L`QLkmMofW-zFJmY^Ig4I7OkbklN+c5q`{vT&= zYijh@;`|%$4ds7iGjuflAJ}dvzu11N!mkzL0rZbc*xFFn7HX{og*nxTlUtsx)4$wqsljOcOSU$f(cB#HvTjp>M!I%gAWRMyqF}&rYka$Hv6Krl-$lz@YmRO`xN{ z3Hy(ZWUWmBzocvNw{vdhVgPi;VZfwo$f2iCt82*0PRq&6!a~cz0Cb_p#>s4`%c0A} zV4(lcF8+&{|L98G)CSNdr@v_#pld%pkD}q5e?R(9f`#c%4`QWjZDV+2n7pL_w9J3G zoPT+g8=jvA&ZVn=<9qn@Z`9Y&fQSCyj{Y^Qe{ueU&GbK)^M41yFZq9C|DXGCFfoMu zPW^w0`gzv>EW`$CWb2@7Z766AXvqJ@GJi?^cedN&dFXF^wT0>b2Mb}NYybal8UA-x z_5X`y_)ClRO>`l~h6a4}|5V_A9{As_+^_Zgcgy;xwf?6i@)+oI89}Wrb#3`fEp?3z z>8&8fJoJAZ{Hsr%zkHA|)Bx_?`P+GalXDZ~xBzbhXuj@GD+hS~8Hn3u z{)Zd+m$&^t`Q@)E{hyS2OV*!GZUOT9<{!9zkIyaYAGmG-^84l=xPFh%E$Sb*ZUOT9 z<{!9zkIyaYAGmG-^84l=xPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG-^84l=xPFh%E$Sb* zZUOT9<{!9zkIyaYAGmG-^84l=xPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG-^84l=xPFh% zE$Sb*ZUOT9<{!9zkIyaYAGmG-^84l=xPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG-^84l= zxPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG-^84l=xPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG- z^84l=xPFh%E$Sb*ZUOT9<{!9zkIyaYAGmG-^84m*;X?lFQBXq&@cgF(@Sx|cNiQ+* zkSMXfxPmkYuS4$(iYp!!JFS4ua$hXX!p5G?_Ib< z(pdTE=^h?RG_Cg?@w;9u->7=1q^oS2rwF(lRFqXNd{4HX+6nvT>J;YgXw3G($4_dV zsc1FICLJW75Hxk)1%~RmL;42zl?xCE>B&vY6Yl0a96a!b0gM)y%Ill=J2$_=0=kO= zya{~1`TFa`{|7vt+G&dzpnj}Ky%;sHeH>neh9!q`m+9D7>nOuKzeV-J5`y7RT4G>Q zy^nqc;%_!x$k9koh?dWz$O}%_6`-Xk>4rFLsVme1vrpKBFwcTE;H9s~=vO7OERt=M} zRH3`Yb#%OJy79#0u@FW$2D!MnpwQHHW#mFH|65{`j0~^H3-9QqDh;(69eSrL-l~ zGm$+Giyvfx6dSQyJbU)wp>dNRE)MvI7TpS1&B)j`7fQ~9QZ!m{B8k&L0};M3k^ z2Wa7rrUoX~o579lsf)C;biG#+;TUR)_#IEq%ED#wg>h{-%tM!Y!t*&3nZ>Mg<`X&N zWkb+2Sno5!1FP8o65FO(9$(odO-bkZ2u{$EuaG5dYAl;G%1_I*D#}k0GFI+K2J43n zW%RS8-A^+Yicml%op@Nc-%C|-g!pD~wY2q7)$q{-pU|Y(#NLxaJ+b1vp(GCui)uRN zRRw1{%OwSMKEtI!Q9k{5ONxU&>z!%cORt@cIJg-j8Cgx&sOaDT-64L++NA|%f5nD3 z`ih!;G>?7Mta8*ms>YJ0g3z$~tF@*|vAt~N2Nn_*@Pun(MR1ryn48A^SPjju4z2l` zt%Y5o3ZZ(^$cho72iLaY-^zhbwoL5p$=SK1lkj^&Rut3EY$y7^i`@e>RKOfkI1I^G zhUCA37LGy+UlkT9$4H`5jATR#nE*xs!{}kzkKTZ};Lai)TP}`z9#50JhFqT(Z%yvo zPicN!k(L~l3L015sw&Ls%$eVsQiVWR*tz2;**_%VcM--Bw0vX&Ok>SF7j<<(?`-?* z8w|Fum)7vgG(Q?Y&rlNiYplA&sFc>X5#J#;zoV+y$+zh<$J4f@9L2lQhDj(4=DV{?UkDC%`5V-(O0_%T%9e5%c0~p7S5+j-TixUY2k@E=HhDbNKZTw zlZH#mRr8Z{s2c4`9o>tSvd8Qu3pD63@oOv!b%M4t_llw4igz>prMeqLbnk7Qqtu~2 z*mV`Bu+}u>hBVtpExgMymf|%uL8ROddrIVSI5&1xJk>4!*yAIxLUT=m;2*~!M-Lw0 zt3=b_;IPxts}QKbY;#N%u!J7ofBCV1pI3TN{=6dawg6Rag`qBY~~D_S}j^;CEBH!`GV} zp5nRm<-{qLHiNOP-~dc`y_U0sC6|k|v@iEthtGrxrmVD&ug`QQS3co#GbUn_|nj6s0JR3p7jKz z6z|}>w}*R3q_V^2ygQUNvsDYb+KmuWI2n(Olet`7jgUOffE7xOaXs3fXm5P88Is_u z&=c;xZ>ojm?a+=#X;(du-~>6_{^XX^44V^rpXZov#C#x5cXS%Q$A54bZY(P`Pj=(S zYkFvKRQL|sz5pMw9Oi5Bb(6UIqlIr2^8N7dKhl=pPYA8iK<>>ah@n9hi&(e}>vo%U zAn^8s1FR~hsz%{VR;TWGzZ&MZ7`m*e0O8Vbu!5RXmgIXKpDTzt5DX+gzlYEn@Xc#aqWlg5p)*$nMYHkrBi3MEOYxP@f<)WjSbHI@4O*4- zc6Cprk#boRgO+8`GCjUmr}H0v*>j!v+_Ta`t|CpI7<&Lb7NIIUkQFU%) z@f2Qu_%3qN`elg(K2wX+1PQzXTz7(6WS)k;zYHJY}0a!31teekpQX0OGmj;8ix-!d0 zJc_R}$6dAysp6!?+?0^%-cpTjnKe6I4IR#2Ur`>1t?uo?0Ra=Ux6@ck$}HqK`*=Z(YW)9(UHDfIn#`y2mh4|_~dNO4_` zt5oUv2*+fL(fx@SqI`Rmz?O!DT{$G`VGEVL*|UhSt1-!}?_PImF$n!ZTSA3}O4obP z6fIf}eJ5st#8oHf6AT3T*9qjW<2_q`NDz!R2<}dwkfJ$n3Y@HaNZAuO8sSOdqqbkh zG#=DoFNn>$JbX$6pfuO4mva^7abDmnoMw@aI30uhQRUO_$KOBmEe^ z_DeL`>heO*>C@eFH+TWoVz%20etNy~)b$*JPv^!MXs>ry={(LBHdJTGuM?jka@PB^ zWP2Pz{iU!d4hWn$r-Tc_W17h-YLTy(TQ?zN%(~%yPlN(IekABLa_F>(p#VBnHrEyN z>iRs7UCcU@LZqcZX8WXKrhsALIDY=vPI}UTV6RtF!&t4_E%k{}J7%Rb(fror3ht>< za=p6eoAbA>+~-VCIv2Dzs#Qs|8c#2K9GY2T8CBRe_|J<~XzcKxvH%c$0!$V7Wi*{= zks699C<7kJ8Y+gQuPlR2>RbV{dE%R`TG}g^I8Hm4_WdYtL@Dm7ZZgh;a!JX?i}BLa z{2L!fdl5sgRr^V<7iK$5Cv#-EJw!8j2noT0%?YBp9qKuE4oTVyLf=#dKste!XxjUj0`y%Fm2Iexqj>F0#`A; zkG~a59{ql`|Nhx=JGt=&YS(3DihDhz`m`Sy0*Lfun8)JrzF(BI>HRD(pJ}#nX|bl# zd^n$Rs#X&(Ho_OY*)A2>iE*Nc3PsxL7u}VG^TLRLlCEt?EQif#Kk32MGSBaj3e}sG zM->~ksD#woOE>pEHpL2c}&%AFkiv~G6IwDsbsyo!CyVv*>5x? zT3oHJ*cuEHJ)PZr$T`h+5@zFl^pv%pt=6(Mt*ZK~y&~rS5m;`L}44Wp}SBXRp^f zDwga~uD+g!UJsolR}d(dPHhhl+-IHoZZ7mCE%bh+^VYV?x_C3HN1VT@kPw_p=~mTH z7EM)JAXHOS`mTGUc=Rj5F@99{eu@)X%==l}aBQW@M2D3Jrwn(Ho*d!; zsbgF8cH;n3Us?6H4(q9>9(@Dj;Znx@Y(f`Hh%(EAqSLQF*1N&C9l}wLh|%0TIWk}S z&TG38_eGiyEfPH-fx?vZtqI3Q+dcx{JHXAm-Nn+<&RvUt*FTd6Gku#nY`wUizWCJD zHuFK>_1NKO{}e9Oe0A#gHKYj?&R|FE5QK4C?B)hI`VDn(750~s=}GfPu0%kH{ed(o zKdM60v+lE3lJD?|AnIHB?se#;mO0(2n`}4XlfI};`(Vl)Zn<4|s(6FwqaA&h9^AuD z9tVpqsH|j@hB5hD;;uJ1!OFj+1z0zOUs;k+38}PN#;tNYs5%gh^B*1#>=o9(1yWTP z85!!e^t#P){!}DJr!~jT$Dh)sFi)Mg=vCb6`HL2QgQY$naniM9`%u+FgKFF20_0WsO)vS%z+BuGd&4KKBwZm z#(TJiy6m@2P4Q4rCb1z)X;c}phUkhd4!1YcR+_Qv{AyQ0C(E(8=!E3Ru_O>(J%D8) zMmXywn@-KTp5UJ7OE^!YCtHlU(Tmg+nA9WYE;)IQ)}Ppgm-oT?dJN^Jn2Zw)X9j?O z9*dcDl}*i#Tg5;)tgcOt@&*cKAHGxt2Q4Ga!^jPNJi$n5TwW&`J{_K3}~CJ6sxzX(V_6 z=!a1VU0s|4`J|G*sR2-9VlZ57H|;U;J#Mec8r8w2R$psb?XFfBYJuIQ$`VHy*K54S zxw3R1W+@^Qi61w>=6;3_o%s@LwZK=#Ew$!}$(Jq;i7Kchbk8H%cBBxtsEc$om|3dV z$16>bq%ceK30fMqrY$~9qN|%wk{p{KO+nUUCeP|E^NhnrcdNxQUw6@;^=V_Da@;tg z7*CDF$BQTtF?awb?Jnt66(JNnU5ztH43R`!mz)6_L?^tcl2C z;vR*(boxvA!s-+cm*TFXMH^^ekp&A1*iB{ySeK8nu(^3@EMpLq7~U_+^;BAHpuzU- zrZy_T{6nC9p1JRY?vV&stHIgu=&Lo%Tz1m>v=rLQ9Xg@p`6y>zbm=*b%{fQWif@6EbLi;+sb>EVO~O8w^y;Ck2D{Ck1YbIy zZJ>yeO=--Q)Lr{PivH+3yL6fGHz0TGtf>76iS{Ntz6Vq+2{Ji}O3}mpzJ|5eJ7IL{ zNxMNuPx&48zI|zvYpY8r-WG9#zI|IKwi3q^6rOIB47Ocy8jbR9ZUxr;68~Hjb>IFj zOOPpXL8HCXQ4GIFaeCiH*i8KOm`WjX(!B8smY1?NruSW=61nkvAbae1zk$f0oU9bqoYQG%06azTi6)o> zR1d0872HMHiZDFNsWHRxHAK+@uaY&ouo;>FVL|81alP89j>jbs5T2X6rUIb0KAzI(C~X5XC7dMDpXw&DS2}-`DvAG;h;pKc&Ts|1Q`_9f)x>+h7 zgRFY!%=cU0)$yjWkw5>%;mw8$A@XBX?x4PDx{Hy#Q60|4GHp|oOle`9AhL3ucXgxe z0bov{_c+yCoUgXFq}2wXs-O z>YgiJ_gYWu?oG&7$)}OT$9XIP)CE^RqLe3>-{pj?DA;=BS)8^7@x9ST859}U!YY`4 z^sH{ZMZiX9+=bpe{W&hxrlAXdQp zcN3J48+44Zj|Iz~wzg8;YnOWsm>dwj-X!NpmX0^a?HV@tVgS3<&6ixq7x(E00nfUo zf|GjJOtw4aX8YXDVpe?mfVcO0-hLEGP=s{8_aS!bn_}a;@uvZ^E%*@IT5KLYp&3e_ zruS@XgeEO;&Tqe$LjyWEgfOr_#d9virjI3r-r-A{Yc=Vds6>R#VGfcnMNnWOCEdhY zy2E9;P7yStSxAc$A*-}lH18I6(3I)<#^nWo@l#wbT@~ZMYmfB4EcMsk=A3s@&&45V9DV`mkRI zn=%Z_Q4Nwew8dF8hqwdDqO0hd?>%RbLjP-rF?QGMnK`$lx{`drr3{5P$Rt`Z;z=~= zQ!K&Vm^BXw&00eGOT+wAiY3i@NYNVv-WjTU{%!zPb2CU9?pQjDhc55yE85mC_2iJz z&b_DMfRITU!0pDd@O;INrE7z5wRL+Fo3<-R;ky6?@`fth35bqxRlBnRs{&}MQ&^)7 zTbqizl;4(Fdrj2G^I&su=O5bmk%6ltbAlNWnSr%!>x6AP-=usblSZ%SPy1t-w%ELA08NT~~TQ30mU;R(SgL>`ut(wo-I?UYxNI*zqHf zqYwiw+Cpa*1DvM2&#Ss9#dYvb;d_Q;6Nv$!yci3Sc;hT2+xQ(U19!Vz>aeFY3K%Oc zD%=u#W4z(}U%dB5sAsiUXkNmyG$)`rHcaU+iEvAD22zSXfDR;ChbpcK28c~n=815^ zpU0Y)$V9uT?(M#gzY7BLIN48H!&Z^Y*@f>8_eQ#tOl?WHB)>=FR|L6L_q2X=T3^x0 z;Z`vpNVeG=R<&TGjKKIZ1k1|K0f21KlWf4|`IJSX2@Fy|L`aU$62nyJmM_3nl9tg+Kz$RvYgcU{RqAHGhyKk=ry1D6Cpi4Hv0cEWY z$-R&z6axRM6m97sX$e8FBb8)x2Vlq`kqq71Ax$n(aFxfFBvGpg3c647TT+g@pe<8x zL?=dxrb(Us)aaW9g9iyAa|}p}%|JHSGSi9d?;)nr5Z^=nJYz?{cPvrHa2&#ALIM=m zT+>!$5Foe#%MVKPC7?b=wK2woBy44-x72z!*WYw{_~j;S$Rj$J3N)pj+z5d;o_$U7 zdR6p-V#bQBBQIFvmvsqfp0{V(ZlY7N5pK`L6Z*@k;7lEldi;)p*`iO@Mz|l zsr`J6dI%$5$|Qrn_dx($5dPcL{G8=MXF8Zua^KT{wjlWtj^Jg?7qJ~-zzyCucy8LFitIANC-DNgy}W83u$EnzkWwl{?P%Yyn*e(NP{+Zo z2G(AxHXw9-KYjsrJajcZsRHuIp|Zql zoHy>h!eJBZPTE7=b|=<=pSS5fB3zr62M<{VZ|^;U+*8WYD(a{_r2O!vq zb#!xkC_wvq z+1Wzl*$_MbN!xImMZB{rGSSf`0-yxwCWo6(`)%`!1`92#iZ>;j;<86RZAM419d*uc z*%%w?IIn$uF{)GtaMTDIWcjN8Z ztUs?&9Wyxbvx|<~M!t6=a|^j|XS(#Zj#%%bbq{c5DX#cJk@vr;Hft3d`jmV2=o!Q_? zolI=*LNnFE^r6n`ffK&EYhLsoUTYI6%G_!L?%cwO8C8se(dk7+czV8)>qfVE0_IAp zcRPlF&H#2Rw(3l2>%y|YE~=p~^O3?_CCZ!KqEfw5S_{7?OUKo5!!3-+@$mc7lvR8{ z5GoA2a>l5vxe09mtKEq2a>7srtQA4h5J~*AcuNX)6t>4$$`Gm}ZzFidF2!fIHj$?A z-K?2Td6Vp{8>>B2o1^p^CU(*nifUkI9Vmgi%=F+R@v-Fs^#niTd$zK#Baaree+8@e zv8G%#%j{{u)g$&-hx{yF^vd0#UD2EB6)v{UYwN4BuIq=SdUkP1 zw`#veN&=U02{vMFffVMZFi6m>=SBizki9_*l=$2aNCWkOt867&%7v2(L1`8n;lhiv zmt$#JvfTtvx*p1pFC4|wh)l8TF#3Oj8UwkB(akmts%854=>_ZfSucGD-k0{<| zdb(%`&*sfCR{LNKeVRTBapp2ij3sotI&3)Mb)Nfv`2Dp6(|{k0;1S*M)}8=NqWMh} zQVe=PBFcKVB@oh^;0sm_qzCtC8~KXJdx6WQW>H#n-l@K0pd1@hfODwt#)E#4{|wJv@lupUFlOe6WeR&PJk}ut*!`oeYK^ip!_uiKar)-VX#TntdgtN0-8L(%QqMJ?69! zWp|$vcC2y9j~h)Y2WG_cRx#H)xOR$x!PiCWAxYsT%4_gDxN?n{hy+c|8g4u2;+WK}gGM?IiqBdOq5@ky69KZX_T zLl`X+YNd2*ZsJ+`UuRni~G+_CyfK0w>)1T$i3SSMdmr?8>PqSv4HPnA-h zB=Ips4`ioRRGROwn1(de%c+7#6#PVMfn?)GIb003u!1YM_Hyy#osA zqo`3`7-A-P0sjx|t6eWlRRudGw>AMA`!bLY;ulXTb_vg4;oDDJGx@P`esI}KyX;Ge z;{|@xJbIXLL%OaOwfVhojf-7QEL*t&*8bIGGcF-J;GzYpROu%eoY2pmc`cZP5q$Vi z5MAkJjvsl)nx-2m;~#g6@2oEl((^H$90s}#rjJJw2W!Y8Y~2UHWS1<@3vMmTp)}D! zyY{;$BLV_e5%JwQemK{N>Hs%KNVpT)RR}4tbHlx>47QKV)u6-TFZ0;S!5ZvKN_N}o zs1j9j=qyo|-lnS+|G2ET+-A)f!}j6ggJ}35IdaMiz?I#t=Wc!)YAX@KWsNg3LD9UEdost*h}EfEkPZzrohTtSe~iq0Gr3Hj2*eZS#PgwkK< zHMtDU!fCR7G3>hPt<1Fs4HBV}4dd_ZJy3{%%z^lI|H<*u12{0S6{}@dHBY!&&R7EY zB)U;rJ-lwbtdp=C(@Npsva@g&co=25BUihU>5N}dTcS;)j2FFK6QrfGKFE~NEBg4; zkcnHpy?J@Y%YhwVhejHX=P1CXP7=f*#&qLk;S@ita{60baana=VZtaCO-uW`;Z7scRHn1w1LQ+=YuTb-ivJ%IjpY5r@TG+H4x! zY41q3-s!19ss!8=H|$qhrwxAfoJ4$-9FwyUuRE@E5#En((e``)J*}$pSCxrnX_P=X z{#Imlla(W3o*!GcKymOONP>l3%QXeDHl~Y*Ud6kv2G{yxl(Ic&_}&{qBbyMh;CNq* zc5eM)=JtHI_|8GGu9+<}PO;wbF({0GXojE*I0@jQV;}T0Y-CO-GvLqY2Dqb+Q>nsI>Iq|%Er0{q`Rvc1^iOYiT5m2IV)!Y&4f^awk5OnjXM_PHfC(U1WB-8KNy^5S}|2GNocf=UO#w; zL|}zeZ`>wJ?85r}m_rx+-Eh5J7K_PO)n$C#(H?!mrF|(g4%YUzpCcbTlxvk1-iMi3 zrZ?1S=cpCVNO7?@5>P#Rxdq(C7G@CD704nVEus<=B-v`#HpI;gTzb_}xKUo&hmV0x z5jZx&)=yC4BtMkmxExh;77GW6#oU0;;_TVlRePvRD0(K!M`s60cw`dW0yPU|+E@79 z7HcQ$D_lXWU?b53eIMLWqxq%^U~TOpIvn%p zMYDuEI;7T7Oe~fVQvO)!YKdp8{2eT1s2W-t)S0_WDZ)r)&00+ZK@Wj`cE9KxhbTo@ zR$*FoK|3%TwZq>`TT`R9_m{7SZhOJ3O2~PpJ6&4=k}>IH|ZSceliOg^bA#32R3F`4dJd> zOim`S^2P??Hon{&o*g}O?}jQWL7_Kq5yf|8rNwU)fanCi6AA+ z^>VWE47N0(P(1R9Ig?0ly%O=~3T8=Cyt9osTY=t7j*Twcayff{c44r&V+EfN5yx+Nn zIk3v$kyn!CHOt~)mg>QVEo!2t-QDk&Gu{_&bl5tBJ4>b>RF3TQy-pq5E=1a<0E|Px z`YOcsRY=`B)ps(>a(ZU&AWN}fOJj)ZoC^{E#ngISmaG(dY)M+jPPf5lBrhloLSLZ5 zW)@9c%>4b?N28E~A#r;%@^+D=PtXITHHGIYW}`8Z6USMYrdl&%y>Jy5LVZAD^7`N< z^Sa=JPS&Za&4-hAU3MDCjPDtVxOn!w9G*IEbu5JkCX!QYB*mjVk#Y290TcMgAP)~K z^t_2I?1~<>ee~dCT=>?hc=V%Z6|*M(z|9&Fwx(%v1(P3pFftg5p$mY*-oLp?WLJOI zGsc(52HRy&-iB$;tU8%-X)kV`GE}C1cc2>UT-5Iy9;PxECoTiFgFUV?zND{NwUH#r z#H7l75~FrR;LeyrQkjVcy-jqyf!4`Q)JaA=TKn2O6HJRwEcb7!0-Tmhtk)&OECh~U zi`rjwFV%dtub%iMhVX6nWGFlDp%*dH|I1xp4W69w2cdsIgu^sEQng)5}kI|f~ zF2zN3%Tr4NB?W9E=PCCFxY>|sd=m+ID$&|^q&zp8-uy6`~AG$%$ zUH0>!;|*5Z>H#ZgLDa6>yxG(9;|!Xr&tf+>Da_8v5i;EIFY($bUCwFXjI5Niq-yo2 zK%BL6TyP89@>rT1GwJOQphi<6EYFh}>(R?IYu2V4k{Cu{#@&XW&2(eV$^I0B+RHHR3c?blL0PiV(|6 z=H<0OjyVgIpLONE-e9b%#qWgdqpT_8Xx&()3c`VD=g$P0v;?JJZsiGTAScu zV^{pCOj{b4Y2l{2!`k^(ai3zuP8NOjt%QEJn{|m3YgMvTjb1cTYys{c+=8fh+9coa&l@2->O_R%eWA;&(p-fSZ4K@lmRB=FhRrbZ z;MVA)F@m)|a&=>tph$|F8?oKCm+kq*x_F>xQJW>{z>UX`4&pBL`%>cFkB7R2&&9~) zr_*Ytw>v#`;dKO+sD^PK4A%^QgxN@**GNS)kFO69Fuv&G@ke&ry}Ii4&CE#H1Tt6O zeA6;_l?4>ZIV5(Un=N*Mt^=dfoijM*KD(|077N8u3Iyi9wFx#t%`SSl3}m5xUaX@wh$GXolEgrsX6PSN#<8b&HMOCNR}%pv*xN zoWLAwd$N~c6?pS>f~Onr7XEsMnk5H5tGO$~!H^eFp2{>@IU8M{3aFDMWIL+V*N!(h zsB^`b(cEluz_7K4U!82_sUl6VCqKpSrfPjTu5zlWV^Li~Oj=W1Cl66wH1ZR!OCq?a z_xm{!o^u73^NQL?LKRkvQR|_B^`kB=s!V#0(2~(M5$nPlv)rru7k^$o!0dn;G zt}?#Nv^@gz3Q(>$9L!hma_~95W|0)ZkIq$lek?TWYh+B*t{l8s9;MgwMp@wKVfZ3- z^ZWC5M1)c>cf6Yq-C+e<$nK>ga_*$-)$v9&$nsUsR zZ1?epZ78X05&b>OAv_hF2Pc^rKiI8zv{bBqrX~SvitY~7P4>#w5Z*Ty3+;^u-KFi6 zS|4kAV1Bj!KTz4=btd271eKR7NP|c2U zXO)z|?XV-9-ruy;3Ajl|W87&v!q*&FhtJIkp3AhYmADKzy?9tH{1{f`HgukfSO&DGzRthR_<_^ly_ z`t{$~0_EKMm+l!&IK9lv)?piQD-1w7Am zwz|SwstU7@*vx}B(UYZJN}@Oh2i$pwX7)YTv-K}Rrq#ejQrz^dYJ9DxaF3haZtgFM zC$2I%J;h)2!bI4G-qXRBbEAX|Ey?60SEG-geFSz!maIf`9)}cu_{w&E@9Xv*?c5@c&iYx&Jfy|9@N&MNZ|AM(E&th+*VZ@=iH7$3iOQ%$!fl zA>|yBGeyOm&!;(VB;+h-X6Af8AI6OBd#%sk@cr3r*RI>^dcB^{$K(EZj>_*EF?9OL zVC0Xl1VSa!nH}^{xQ@8r52Y7=TRvD@uWu@1$R1zPS%&vyXW+LMq!rMpkbv2F+_5!) zl{Tn`JE3uFIuFzw&$gF{tl}l;GZIAgw=$ijg;0sp@MRr_ZId+*6Bml}_&w0d(%Dzj z$pYWA+25(HUYFo%hdO3J6DFgp*Yq{Jb7jj#m8Z0&&1&H8bskRThQ*5Y9NEPSUfd?D zY4Uev@7_!Cf<%jOU`GAUy3*TfNO3<$&Z=rv2rqC02rUoKa=y33rm>B`=Rcf@E|_6M z&HO7d1krKMjVlyGEW-ao8}hxTU5Y}c9C~MTv+Zy)w(*EkObYG`uo^kmOkpcTitN6m zj%ijezAkoFfYMt$BAl$(ioCUVpQk2#TCFc=lUN=Xzin2K{7dPhgspE@03anyNYSj4 z;7hw>e^X0loHiIhfK%Pvc>}$#_=NsJD`B`gaZr`CGN#+lsOtXu1dz~Txw(0JSD4~9 zzZ8xe^)!Y1r+q6fV1&Ci)jzch-)S>W-%Nk9N))66FMTrx%@Q>P^k1?soM?rtAqa=s zn#^W50Q8C+^O7QUx5q@)<->vR~4^0)Hf z^R#z9$d4b&wb3|=T?`$%el<~iv6km+@AoJCkJ&_{5o*=Xk@GYt?FA9puX@{{eo$H? zdIA!piMfD!V0c|z-`RRpa{9SbqE)Olj%M)oKLhOILVD2hOtH;~xN7!gafCxpc1kkD zejhe<+yg1qxtznRaF?_)yBo&zN%`GN$L0h^fw4vF;Cpq=$uh!#5MW+ZlDwwP_N+-g zJ0+3QfujC4vMtmXT;(Yenv==qP<4RHn0wAHrIkc{i+qbdY8>fz#aIBkGgAW41*RK$ zrk-Z?0_Hg*P^UWmVl(Hed&}_J$Os?5+Ys3=Zv{+TYe##fDtg&GolLJJI^f$d4wFla zk2{&4�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 literal 0 HcmV?d00001 diff --git a/tests/test_bot.py b/tests/test_bot.py index ce8d01576..8140cc710 100644 --- a/tests/test_bot.py +++ b/tests/test_bot.py @@ -158,6 +158,17 @@ class BotTest(BaseTest, unittest.TestCase): self.assertTrue(self.is_json(message.to_json())) self.assertEqual(message.photo[0].file_size, 1451) + @flaky(3, 1) + @timeout(10) + def testSendGame(self): + game_short_name = 'pyhthon_telegram_bot_test_game' + message = self._bot.sendGame(game_short_name=game_short_name, chat_id=self._chat_id) + + self.assertTrue(self.is_json(message.to_json())) + self.assertEqual(message.game.description, 'This is a test game for python-telegram-bot.') + self.assertEqual(message.game.animation.file_id, 'BQADBAADFQEAAny4rAVRC_XtgXzEvAI') + self.assertEqual(message.game.photo[0].file_size, 849) + @flaky(3, 1) @timeout(10) def testSendChatAction(self): diff --git a/tests/test_game.py b/tests/test_game.py new file mode 100644 index 000000000..08e67ba87 --- /dev/null +++ b/tests/test_game.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python +# encoding: utf-8 +# +# A library that provides a Python interface to the Telegram Bot API +# Copyright (C) 2015-2016 +# Leandro Toledo de Souza +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see [http://www.gnu.org/licenses/]. +"""This module contains a object that represents Tests for Telegram Games""" + +import sys +import unittest + +sys.path.append('.') + +import telegram +from tests.base import BaseTest + + +class GameTest(BaseTest, unittest.TestCase): + """This object represents Tests for Telegram Game.""" + + def setUp(self): + self.title = 'Python-telegram-bot Test Game' + self.description = 'description' + self.photo = [telegram.PhotoSize(file_id='Blah', width=640, height=360)] + self.text = 'Other description' + self.text_entities = [telegram.MessageEntity( + type=telegram.MessageEntity.URL, offset=13, length=17)] + self.animation = telegram.Animation(file_id='Bleh') + + self.json_dict = { + 'title': self.title, + 'description': self.description, + 'photo': self.photo, + 'text': self.text, + 'text_entities': [e.to_json() for e in self.text_entities], + 'animation': self.animation.to_json() + } + + def test_game_de_json(self): + game = telegram.Game.de_json(self.json_dict, self._bot) + + self.assertEqual(game.title, self.title) + self.assertEqual(game.description, self.description) + self.assertTrue(isinstance(game.photo[0], telegram.PhotoSize)) + self.assertEqual(game.text, self.text) + self.assertTrue(isinstance(game.text_entities[0], telegram.MessageEntity)) + self.assertTrue(isinstance(game.animation, telegram.Animation)) + + def test_game_to_json(self): + game = telegram.Game.de_json(self.json_dict, self._bot) + + self.assertTrue(self.is_json(game.to_json())) + + def test_game_all_args(self): + game = telegram.Game( + title=self.title, + description=self.description, + photo=self.photo, + text=self.text, + text_entities=self.text_entities, + animation=self.animation) + + self.assertEqual(game.title, self.title) + self.assertEqual(game.description, self.description) + self.assertEqual(game.photo, self.photo) + self.assertEqual(game.text, self.text) + self.assertEqual(game.text_entities, self.text_entities) + self.assertEqual(game.animation, self.animation) + + def test_parse_entity(self): + text = (b'\\U0001f469\\u200d\\U0001f469\\u200d\\U0001f467' + b'\\u200d\\U0001f467\\U0001f431http://google.com').decode('unicode-escape') + entity = telegram.MessageEntity(type=telegram.MessageEntity.URL, offset=13, length=17) + game = telegram.Game( + self.title, self.description, self.photo, text=text, text_entities=[entity]) + self.assertEqual(game.parse_text_entity(entity), 'http://google.com') + + def test_parse_entities(self): + text = (b'\\U0001f469\\u200d\\U0001f469\\u200d\\U0001f467' + b'\\u200d\\U0001f467\\U0001f431http://google.com').decode('unicode-escape') + entity = telegram.MessageEntity(type=telegram.MessageEntity.URL, offset=13, length=17) + entity_2 = telegram.MessageEntity(type=telegram.MessageEntity.BOLD, offset=13, length=1) + game = telegram.Game( + self.title, self.description, self.photo, text=text, text_entities=[entity_2, entity]) + self.assertDictEqual( + game.parse_text_entities(telegram.MessageEntity.URL), {entity: 'http://google.com'}) + self.assertDictEqual(game.parse_text_entities(), {entity: 'http://google.com', + entity_2: 'h'}) + + +class AnimationTest(BaseTest, unittest.TestCase): + """This object represents Tests for Telegram Animatiion.""" + + def setUp(self): + self.file_id = 'thisisafileid' + self.thumb = telegram.PhotoSize(file_id='Blah', width=640, height=360) + self.file_name = 'File name' + self.mime_type = 'something/gif' + self.file_size = 42 + + self.json_dict = { + 'file_id': self.file_id, + 'thumb': self.thumb, + 'file_name': self.file_name, + 'mime_type': self.mime_type, + 'file_size': self.file_size + } + + def test_animation_de_json(self): + animation = telegram.Animation.de_json(self.json_dict, self._bot) + + self.assertEqual(animation.file_id, self.file_id) + self.assertEqual(animation.thumb, self.thumb) + self.assertEqual(animation.file_name, self.file_name) + self.assertEqual(animation.mime_type, self.mime_type) + self.assertEqual(animation.file_size, self.file_size) + + def test_game_to_json(self): + animation = telegram.Animation.de_json(self.json_dict, self._bot) + + self.assertTrue(self.is_json(animation.to_json()))