From 84b59c8cb274d06de29e8ac978be54a9906fa5aa Mon Sep 17 00:00:00 2001 From: azogue Date: Mon, 29 May 2017 09:38:02 +0200 Subject: [PATCH] unittest sending non standard jpg photo with bytesio stream --- tests/data/telegram_no_standard_header.jpg | Bin 0 -> 45404 bytes tests/test_photo.py | 28 +++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tests/data/telegram_no_standard_header.jpg diff --git a/tests/data/telegram_no_standard_header.jpg b/tests/data/telegram_no_standard_header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f47f42c4c74e805be84cdaf23812dc6e03c3a7e GIT binary patch literal 45404 zcmbUK2V7J4_dkx`1j2}dqJb)EaiIi@6$J+l;s7xWNf>IhLoF6kXt3-WkHE&!P z9B~ktVcBX!tG146(TY+TK`m-qX&qp-wSof`e&?J!i1z(?Jih;bAH9a$+wzHQwI665? zJBS!N_BZ&K{nh5j&Wu=OXD7C|lSu6C;V~=VH^$yg(xs38c!#d4*^Ye|%7(7my5Fha zgoEF^tE>L*KWxsT)y`6n*SdB0^d2zKNA4RCIDEv&Q9%X?ppBKQJ-2Qv?s`DE#Og~*~s z{GpV~LzpS>&8{HC+sEY0{_B&aXHsM;MJM;(=CUv!apS@meUVpSl8<L3F{;~hZr(GgE7$1&D0yH48Ib7f=40ni!O$pcgD_rrx22}_nd*zrM z;^)l_U4z%i@>h>q_p@xs;{z+7O^VLFceY<)%8!pm-Fs__?7BsC>&+gaSKb}}xFB15 zFVH1$@Z2%X>HP-=ge9yh|8mUoXh~YNzPNvjwftw3b3>BFBI=!MQem?yMF*w4$-<~$ zxQ(hQ`e+~Vc(pVwmdKZ-^Dx9TBr>`At3rJknMI`#6{xcU-&i7Auq4+6|J$1zl?jZu zOkF9q#`%TNFmZSy3yfokHN|_Vu8ZEsy;`+7gdNKT+b0CL~V^FBK!Q>#uUBt zxNKA`Gmh?hQP(NnWEXX-%Zj&(CYY15 zJ$`STdVAU(@!p4Xt{;04eWht}9G za@5I_1TOL1`v2uql$RAKH*aJ@ljM=!#Mj|K2{BRwyHPH{Dogj~tNm#~^oCCfS9FqP zZHZaSDCHr&^P}zV0GL()?Ofe`t#fiU%)wr>ltsN}j#qTb+N)PG$udhc0S^()1FnM& zLdELXo!K%`FPX*g3JF-A@TeAJf3SmIC@%viftm7?d$+}sDpy}$1@`HSi!f67Mob8p!A`UhQ}DW`ltTJhlz zsT$^{dtpf68+D(3`TpTT?ej{>jqoseqF5nc2p=LVfGWtKRs$9MWELhX*S%Xo2;=7? zJDe-l^@@^-qTmAogZDKFMs&#`_}u3 z;_F%WzS(?jUa@sZr|bF8{`*3^jJbGxRGinn_x~wK?)o@&L!jiZU*0*}5_kTc<~h1I z)K#Dt%2y24dCM%Tx7#QrTjkXLcaIS0Bgoj{Y#C!v*QeoN+PP<+wH??gPc*&!hX&3# zRE38KvgsTG!{jwmfOTF@V0TuG5f?o;P!Zaa0c|{TB#rQ^ls{Bcls;mF4r*e10|(_( zi0F|xs31U-qjam*UtPk?+;qS@c2h|%6RwIa?Im=Bhp}tc4%r+*qZ7Uer1FKKppgNg z$=*|@C|q*0@v88$$>FR@MKy%l#(B!rEM0fhr7}3fB0x#^8q`%n@6lM;X@d?%nCx@m zk!gBgO#~}Z*g^#1nWbow{0dOF4#}9)FQCy!d{BAo&8EfQopZ7qJMHTgMPHQpXJ7NN zt2k6Ou2Z+W@foWQr2iGZY2L-_<4P;8|9t+v&`)D3EA3bB^WC%Py~Xj{jLdG?;e6?= zXz?6_bg6uy!d0B6uHUX>eB<(@1}T#=*e744kjkxd_CjYz;~4dua`Rj*qJVH?m8vX$ zgZ9!$lha0Tc@8U{DiBXr4;w(%4F*Is5ecn{UW2+qrErkf8|A-&K}A`pR4N56;c)WX6Yn50x ze8-DfsrRL`)ULmr>{Py2&y*cKx7)GWQnId}``(n+6MvUXUuPBT24v}HMKjvhn@5?K zR{{vPs4ICREmniE5eI2j0BJSt%7zq9y`DSkP@fia$K>>2ihdi=p>LJ}Orx_cY%R;B6*(M)PNd=8;Tv;21o1zS;uSQ%65-M`_DMR0& zBdQwgsD*_=yGqY~y@O*IFa zo)))$SQMB2S*4_KL7skr$+4zDe#PV{QcK@0h}SWr3QoHB8mE)0LV*P8YH%e2oyX^n zS9toGr0K?Ea;wN4NZTQzKn_R-=?y`sqEO?Y$ey+_fb43jd+k&A|_A zynZ^m?ADDQ_pNPAO=xfivqWrY%G$0Q;@#tb%lwk}f}ejj;=BLEpVBjin3H+ZEz$NL zsieCa`zX5THB9bHDp;&SF7a9tF#~77bipW4!`c2IxQ>LmIcc#5cG&;xT6ze;E!s|w z>_g_ed2T42t1>d{coi_*b-p_UE9G(GlVA3a}T@>E$k{71IsJ@f*e_v zu77S$F6%yJ75hzdpPeYKjHg0zUY0}*DaqCo9Vi2_?% zW#ceNyg5ZIgXZv<91;w|$XONWPC~e<(k{^!r}&$o^-)f24;+iFcOvG;Zb9wGU)cy( zd29#B6t6nt^y7hvu{E9!LnpcZ^n3NUA?91_!*blVDtg+hS2JU^b)MTFMtpM3k~%BS zC)3g8lI~4uO2Cr*XvTNEN}rJ^(vA<4C?$+HdKG36)rh$DYbQx&tdEv#MWJ+)?JQV0 z1$_*}CGdHe>{?6%IQX1|}NbpHM&U7<(nQVYXICjPT-Zn+-h^~FE#Cq}e<6a1%V zScfFe6^7<3MZgW6JQ12P_L$T3u|q_+~` zqS@w+N^L(yXMzes1Oe-kgPs@yRjsaOArO;ftz#;=I~m@eksw5!B|%_M?ADHn2^ka3 zeTb{|N>Dl&c#P7fnB(&`%%O~A-@>>YlXH>_u**3oHvmilYajqJ3?fCkASahsB0eT@ zI&dh#oi!@(6}rxYjJp5Q7$bm#9jRN~sQHnSqk@;BtsthO8J6^h5jv_-cB@|15_U;) ztAV+oB3p-!9W^U~v5V^WM#>tQ4Zl|`u3NWv&pEHR>yK*JZr6=mf3x?!4_#*VtSyQ9 zvC}W6GeNaJyYpii-I4qG^|n%&gcHzsaN| z>>`JQ!GIotDMY5aAVXM1%b6>{FZy1&WiqB&_K)0SpI|RFj1OR;Pv7i7e{%&h^s6tP z#=i4eYh3P(5kGY-JiaFLtW5M_Et3{^A$IuP^<`0@onY|p2X-faml?4#Wk+t>S8dGE zki>Vs_PhFbp>fW=hn*ncb=W&R^oQi80hyQf?_PiPn%mP#hqu!2@AT4MD_-u^d}8l> zBO@8NQ{E)%(441V3kI0XY#oDioZ?l;L|7 z5(m)JL7qrDi8|JR1e=pN z-sE%#xG#k#I~@%51p~ZEAA`Z7x*pvv2)%e^Kw<$NJN4G?E9kwCc&MrQ){*6RKN>ut zYRUcJQ%4W^=3F}O^VsCNbd;TRkLQ4cpX^>#od%AtpI?BdhS?(ZS3-xkp{6_-uWu?; zNxx>jt?nV<3zOcs5EBO7w2$T0N4Y!^T|@ADki|4$7__rGC(zTnPS=n33!$SLgp&m*hBJnMlHY(R#wVs`1pW z{7%>Iw?6!)DX;PUn;Tc0dw#GraIC(*F8BwC1DPYSrLKN;U&QrjW12@c_l}m#lw8== zDoU?d*rKwg*NE*Q{~mIJ7}q;F3LK62E1n+FrNfLcxB=k3RU z{|xb0zW&{OJ+mdIEYx>AqT0gTh{}O~i{iT!l}uMM-}aiREP#Unn{0CMR4&Y`6fArr zv?PlukSFrC22gEO{-34<=|O!$y+bxA5&r0|SElPh`rw~Uq(Hmdx*4o3VF`y~V@o4+ zy_`0RF+%V_fxr&hdT`)KAO#FDW|O_FMY)3UFJSVG;}vdW9O6b6Zzys4?ec`rW#?}E zGStT|!~f_CdHDzLmp2!xuXbK^%t!1WK3VA_iVT!E?Ax0tejdKIz<)xg?b~4lkmDe) z57|+tMA1p#69Q^i@ZBl9LLMT@XUD(P(ui1Hv|Sl$bznao5rN*JiQ;}CXh0V?JUe&w z#iQ1Y%9dy1RNvbrp>IuHyiL*Lztx7yAT_uZm?aSXx8U{I6{)$2n!#84y{;cLBBuV` zv9kD*6D>Jy%#u`JX8TtkwK26{Jgc{CocH!4ljD^|kk7DaU#MzM)OKyGc;Va3`1#2W zo1E&_nkp@MDiQH^IC%!Xo+*A~=$akbs)Vk<}n?`MkfQp}c|>wX`rY1KJqW zkwSJ%_z4E{FZUnileFWlO-W7cofsI|`A<>Tu!@G4Wc(y1vdIWec|jmGXNx|ikIBgl zav(tXB_Es{JVM6KJOGr$PT9NA7x&z+X9O+Kt_iJr{ewB#TkX<3nX`cbgSJJN=gxFr zd3~iy;i0SFrH)|*1_|qCRK|cK0OJL}R+%!K6F}-1{K_}#D&8m0;^+x^jx-!Mxw(DJ zp2eOzOp{xpC8N*C?fD?<;%GBg?Pwja>yW--D ze@c%R9duv8cxAl%)2VRNx5`83H>1`#I=(e`smW8=+ZNNxbB(8-B6?zEg#M)3rcU#&f)o2$;W;N39!}Dn%TLzCTYyX@BT5~e&;04bnRl|jzT4$)>$rD*KKL}+Vb7q0ZmCBP7X|$AwuH+zDXu5ojToy1 z8p1>jo4^#zA1mjUIjmaXc+dYTxN`}wkWNsS9YTU|^na>Z#{i#Zd-(QKTSIl-wEfh^ z^#Dak`iO`QDAHv4YcRkE+XPWQIj!gfyvcJL=_rGPP0hnk+jaeA4X4Emc4rA_SZk)^I zDo8$+82q7LLpPY~8n{ew|HSYxu*yV77tGTN5djPw9NE~_JAD<<&-^(UO5?vGy?<1$ z$tiL|?d-J^*d$oD$DhCGEC(lzK$=F&{#meLPb%~&?)#?{N;)PL{+v6In<^4!8FI=%BLam51whE* zAmRNAASM6fJE;%k5AUuLoLz?0R1B%KpT|z34Mo5qf5empz<=x_1u8>Vps#S4>52sGc=#(`HiWhY&nk^4L$>}Z8xMg zdJc!n50l(w6btGg>*}Z=f+jV`KMp@}7Vo7L0gpp2Rlv4KUvdb`9NM)(+q27+{gw=2w!tOt;e^MPPc4K|JyC~BIml_76Pvf&Syojk+o-r<6tM{-4As%r}d z6aaLMlzJ054ZlmIP(Wjx}7m_*SH@x5f@s>;XXi~?)^P;s=%jo!3 z#djgbnGP|Iz2`?2$BwxM`(7&4Xjh3&-v71wi)i~vH>NZd_gHwmzF%uqa7MCn>DhtL z)*bxw#HG_s10R}P8X+YtWAd`K25Y3k?c*Y`>93eg29QS>05Vr)!v_BEa#UV;1@eS< ztXSWRY&GXU3Yrlwp>SIXlCc91q%jrJ4jdR8WI?oEV~8IZ_;sRQ)9ssZ2Z90;ZYc7Rl= zDgZ|bHdBVAfjB+76edv+9FF9)wTmke48tG}9=!UcK_dk*FN?s&E|BG(os;jGEJzDY zTI7_0r$bc^0wxKF=q6Fz17ZRLQH9DCCg=DZS()qs8wC&wfbgNU9bzk@OQA^O)WOy} z749zQlfT*V;5UeX0LBqf?0tW(w2j}#ra%D_ps8!Batvfn6t4=WH`zpyd;l`6eq72+M^lx zS(u#_>%nsR@HtSVD5oM|G7Cl@P~$QN=Cl=%qtIjpu*RAvJv)zuv~M@u2r;}*28SQO ziNt#C$e56koDZprLLXApn~mNV6iB$}oyI1b?fXYcr0*X~M6{U*K`|G0Nt%YO5sgPmqfYqGDj zn}0U=^X8H_;sy==^igZ+el!7)OgZvm(yjT+Lf&#&yd!yc-lLO{ReJ3`?eW$5dFJ0% z!1PyU!SLQKM{Aa}ew_K)%2?x$LEV~{ZHt-}I<+W}NksBx$TIvOO)zP%wl;oz{MvRh z3iN#G4>m65kyO?VQzb+;PU%5yMZ25G8)YFsLh(ovq|6PZfkUl@wgkc?hmQdVa_dVoH;x4wC;>;7@lf8z4^%fa(|4 zTB0JQtN1J|BA7p3@;i9}ef3ibBakBfE#>LE0D+)F(_$KqHCUO`=;rZVpl;y3X!Kpm z2Ka(Ev6)LMhx#hfPJ_!PC`tpS9@+6ERz~oCw%UnL0*c;#Y;~FUPzsFdHjN_v$wP{hdyvU zIqyd5-F>NhnI!=*;@R3Rj=SxiO#A3}&G7TbJQMmOGi8Ajbl3xn<5C3DYfG)(9@)VaN-0EQ8!Q zXt(F;Ic)643jxX)J8c2rHiJIU?Xlu1umjQJ`6$lSLqi!Op3!F6C6*gjBHG|s>-dT6(jo*C_uDP;C(Ze(c>^~$5suZ%nKKUl~GwFpdy}k>+Z#-dc zV+!nQ*T&TxZ~FXMzD!gS0_`szG3J_o^Jmj0cdKKX+<$tr!ncjNtZ7)w$S}{BRJifd zf!8xsW^q`fR`1_l6@^|49^xwAC3a>jDv%PCYerxa33)+98-lkG>F}iOK_o+~{F0GN znXHb56i}@lInxudJt8%+3ckcd1{o7YhB}y~Aww=9ibBIU1w_gW5r+k%Y|Mk|Go31+ zxIo8QLTPpS)dB{dX@*i_&DKQmKXHb_4e@H7pI^UdOP;Q8PJurZ{sw7KQDHY(A=?|` zM^Hhy*dFA@u|Y3nB`ayfAW$Y}NT|ZpzD%SBWuMED03{6dHIWm_2vF~`WnjFyw4n-O z5rdtV?2Q$gM?=M*BvrtZ9X)f(`YiPg+E&VzJ`<7ic1MAL)G0wNBd>km z=t0#K&U3=}vcXW-PCf7WY}?b0shWTve>w+qHeL6ulwFUwpYDGz^P>AlQ`;C-8za^- zNAzhAwl%1&$&dTPgiod8sE;n3`)lAo2iC_+((iA7^M^}MSl9k^+*FOFHn!Q+!OdDK zO9^B~$Up%2!pN9|I151ka?vG{mgJlSPJkSe0Kae{5KDStk{+3hOhtY@pK(Mq2m&|C z4u4>LEaV$H;0)FUb`rpXp~_2DV3=%#@I&^K_OsYeu!c$i8f$@2v$4dbN<#{)N%`_^ zv7g{D;B#1Ij?N`j=5FiFX`_g(u*FOI&=sR3yL|& z%R5V19FhbMVh3vm;2WhhP>aK?Vmi8#+~CSxs*8o++g?1Go!kxo@^$^jAg8xF-XVwCEbZ&i^dhm5iS&o4)rdnRisqM%d= zIiTb*@qFO9?CS1gE(4iW@HG@z{>S7(31{zRX|bEZeZWziJpA;F_u82Ed`iMq|HOw6 zJ$CKMZCA&JnOk(7*%@A$Dr}i2b9*2Z;O$ENHSoJVKCjpQw5YmM{I=&Gz!I23&wP*5 zFK!k!?=E^MhQ%okS3W!6=dsr%i=*bJ>a+K!w`ATlR`p60D}5lFpHO)BQgL`(&0l)P z62#ZQ;{XK*9=pUJN)Rd%fY8aRQ7i=Q2(L%lMt5RX@D|%8;@3CS`3~J4A_?1); zt2N7^T66=1Mt*+N-DhaaE5&Sp3%5&?gLb!joQZ@gF12fbF7wu!EOw1=l(n4Es3M@o zx_9h*F{^-}55mdkLr`OTvj25pDwL%PSSt*y9MsjY<_l;f9xC@o2cfK6e*F%rrp7{4 zD#XC9@MOi$G?QV*(7lfp$=^rPM`#xEQDmHP%8hg+coZRzB z#qNfc23b4AON3%zS~h}xb2OKYZJ-(4m3_7zb2~BK$lNS`nl$rS^}z$%{nv`W3@H6+ z*!2wu^z6Ebh%Gm|wa5cn^uM=`1?{;2?Rdox@BDS^=$OURJyIV$c;{qN7g`+USd?L2Jpif>K%M4J14#@A`f<0`>08tQz+&PfMX zv@9`fUD3jn>T$lHM>v=*@;Gg&#Db4QBYwfG5-30*0WZb^%IU1^IePG%N+wH#geHT; zi?9TKbu+HFmO#k3wy>+ZbV4G7vQASz?YTMh0EUo4X8lqO>4C|CNs| z-~5x#w;?IRrQyW~AGyawjDIx!fo8f%dUIxJ50@D*dpKTSabip1)45L$K8-&;otjL}edCa3v-Tdn ze>AxH3d~!6UBAN}#dETLg6}M~o1*(aU%QO6+f(EHmi5VN+DeHL1XS=XZ9_~!OB#SW z2tANjaMQC3Tv#WbXD)s^psGRnsKbpuLg#Y*5A1eoSmu79>L*Ay|bR%T(F-Q`s_p zjJ~Kiq>FS{v)t!vSfI(en0>nN!TU_+wgGFDaWHw(q*VyYslP6PEbLQ%M?n{g6 zI!?%#!+O6rQ?hs8Ir})K#n@Q1%{q0L`NT7)%)(o`5yh92EpuxE7u0_6PP4qJC{)+| z?w`)ji;OjA|B|)rG5&fudCQN#tpA{E#H_=QVqW;znSj$wPJkuaVPQeNm!CrWL+VnU zH=HDk4uxH8fiO}=P@O(}aRckI!nH1;+8A6TfQkl{5-I^SbHXGN2{oc;I6qTP8G`X} z9i(SK2}jk!goiJ)p>UWwa1u;)Mg;sG8DQfd;1k)L|LMqp-y;IR!2=*8l8}-pG330m zu@t7~J#6^ts5it;fTT24wRF)#fQw&Hsi5}k5GBJ5ea+{ZWS_f=*VHB6u@mFd!BZGh zj^E2SyY5ei#C>p-p?-EP*HShEs^mkrpX9TZ2HrSV@p`l3hM5gQO_9{rz%f zSbAYb+QH@g00bIJvUumgni3d_gGLvZOi+VAXbV^y0GgJcU2ujf%*kAO%DsDmcBl_y zs)FecWUatAOC6w93XQRbGPlf|jDe&;5(0VlFH2!f`WUv)Eqsq)lEatyJ7}M^b;X4K zt@U2Do1aXZIP2W`#+dt~*Ux|dO0?sYZl}zT^3`vS=hkp6a{acs!?wo8U~lo!mf!zu zW0o%*l)CI=uO|;ouDPM&&9h@X(_Ayxh9!zOnXV>#KW0|Wm#AvaB+R`Nymxx-=9a<1 z$NJB0V_v`5WVYORs9fPB6BUI(y{EmYx_;|nb)wyv=Awn0x5RdRj?jVOB2uUF^A`=f6 zg?4eYC$rufsrKAp7W)FhDD!9Id11YXgXipgW0J`M{agVJh-0c`reb?ib^K#79D_*} zEQPQusNV&O_5mzgLq8W$NC6n#gpr!$KY=MwUuQLS=xwbp(tqj0~?K!r9!tEjkMy^_C!9XaR$LMfIP(ehWSD8ZhiT+xzOgeRMiBhv>{ z4F=49BB^s&#|ST{Ts;0kDSS2NbQ0hRE@hMT2lbmdP?H=%W=%XSGJk7i8E+v=DJoX&W2Nk+#xUiTih23Bg{IQRZ&yUjbiRu#Y1ecUI< zcbQyw{N14yoULLErXz-+NYCrKC16 z$Ota3+|;30VNj|zfyRSXs2 zk>zfgB?*aPW3pB>d=|3sW?k_+4{J{}^-SG3tJ?4Q#rM66HvSs%$m9|PvJT;3mTqY2 z_N%ksJnncq){@f3oQ++1q$ue3)U3kPWg#!*#-TU*k1N^y>^95;D0(b`u`X%>KQ~I% z;MH7mKHvwp7clAIko)kRBdv|A-cp;RnR~zx87xDT7tW5ZP`DcwYn(Z71cC|&ikSr3 zL4*H+M;!hr6zB;Mv_&-jjVf6R2RTmgD50P27Y+ux@z5iDv$ceRnJMS+D^n_f*ZLr@@Ew8|D69k3*Q)j!yME2ISRm@)7qsvpG?oD*lXWO?(1VWi|ND6JJ6h)U7o8sM%kTMC%u>f^MUOWwy<*2K=_x%~ z`R4^y_srtVkFBECz~hj8v;c*>0a|V~AF&JXIrqs3kCr`i|0zpM+VJ0mardV0xIf@q z!=_dG);R0wZu&sg739OZr~N)2+xfjp#{o`DsWul`h=*hBJWNIMP*)`78JcrA4;XJFBajFUCgpj4n&(OF z_K3th9p4Me|KfsGnkR!5ofbi1T7c2+-jk<-CW6fFNL+P7vkxhdijaxW%SGIh3BRE( zFc*fHTk6g1-K^h(#(-r| zlxsx1%M4sdLAr_366XVfg(U6AlDK(&zlhK(Y?x6f36=kZ}k4l{^ zt^J?Up!@A_RS6oQ_c^nW$SI3x~nUl-{N989V1uPZxN%2k>Hde-#t}Q5;$)(Mkjj%=$L61v4_@OFL}F z89Z?hC0aCABY6>79Pr(_aGe8s5#Fk&EwlS_-V`H>rRgC^X>AP(481|K& zKZfU`Y>?Wv!WZlg>Ty0@EMOlN(JDbh*<6B`xo~~oC2=ndYsCm%7nO8EW zs@}4XFX%Kr{xU4O9I5t>Q(0V3=iiLjS3f%CyjT9Q83)3r9e)2<`Z)dWrJD=aC|-*? z>V9O^*KN!v!&4(mOFNzma-6v3gZ1MyMZ=oJN8fV#s-Y_EyyeKe4twsseR`x$3bG>Y1Z*D*y=BJ+Z+&2Q8NXtcYq4Ic>hPhy(fI z95NQFcvcWsAB0U_%|=K7pv59fgvyxrHeefwq+2j^(>2x)Qs8W1iZlT=>-elSu*MD) z1nO|C!Ax35&}F?X0yhWd4o%S2aTtwB`P>WNGlFsxE+m6#98Fs6e_`FZ48EMg-FaAN zm|u}3{$bvMGarod{bQc)O?iQ}HVz^OCY?IX2@A=91{y`776cJT$QvN=VY76vaSlhj zeZos@59~ZlGII$Nn4$ss##jq7&$vd$=4xz>H|m1#inqU1*E$4)eztf8X&;sZ!EC?q zuw~U`pV*ZpXibokWYpP!LLBV_ruf}6?jxih{<_7uePYI}CB-W~42>LHwd{QVq|MQb zjZD?rA>ZjUb4N1zqC2LQ6SnD@jax>18cms`;j0TJJNy%Z9+nEgV>8HyUTYb?)|rs^Xnz zyt3#1@{K%%S@`#pMW0^RJW4FL+tzXJU&|5>jeI_+I8MsgF$)*->Id@UYaD8+*oSq+D>&)Qj)lBIc`%VTiAH&EiR@`Va&J-JO;fXy`#0S_UQ zS&sMNB&1*oc|#`2hY}$!T;?0#KD}rOCLdXosO+KD!dB?v6zDQ}JZqfecV<_kV=hh*aAHpNI6p1EM2HRMDb4 z3wl+5a$A={JgD^T8*;JoS3TfZw0YvD~;8+x60+ zo8q??-)dvF54pKw!`T4Q;TK7kTX)&HezdwmX2C#1njAG%$@u10oH{k?*)JLD+p2DZ zUb_%{JZPo6vP05=*0~w){N;AJLDBi1vGMI)7gy@y|Ma*kWqe~d^o=frEi)Q@+(TQQ zXa?8bnpku7_3xr3V>M6rtGamYT6OMGVawRfuYXo_@$cJDtsY;m`)6+d{N7#{E=R-W zttVj}1f)4Z1){QXae|*_@2~ zd$_1mRp^Pf zdfW%v#RElw0st%5oD50oV<4R0v1q7O(A!jSYr0eht#L87ttBAyWZ{T5OQ?UEQl@@HTGQJ@6U_d z+87ZmZL8ffO!YSNp)57U@vg#S?z7cj6(8{X;=_U42hWH)`{?AEVCC_s^Pl#pa#uou2&;Y06yB(qB{i9Nz%RAd{<6e|y~* z!At(r#+*!TX*zNBwO;97&u*T`mNIwzL*8|n_eaXQu20(-by6F1H74`v$Ln+>d@AOo z&WC*GxbtnyiZWjDh=r`|t2zm0*)z(bAkTfV-uZQrxdKUZikEIvE*{>C+( z9$q>UxO!M!$;|TkkJlfMK0D4Ls;Th|dAr#0(veHn!JVFeH=?p*Oh}3Kug5)J+#cD+ z+^uxTX({<`?jPP4{|Fv7W8SUCr;qYi{(Ne4K~Yswhc?D9Z1$btGo^82rjQZqh9x&u zb-ymZmU?vDZ*7cc^=}5IZt19Rys>&@XWxz@g-h6_K&gYjdR4f7DVwjd zl&_c!vq`ZPy?fTeG`=Vt(1AQdAAr;`B8#@T?ugkwC<5z;2XsFP?!K;p>RGg9YvC> z9ixuHCQoc=hoBXfRkx@j@+*aml?Hx7Jd;xeC1GOSz$|d(UYFPJgnApC`4x4owlnAEAWo-%26C5oDChJ)fKK@ISdvTflSX>SOuGlhLGO-q$kWIt1wqZ zE3%%|lnpxu6IMJ;aGuN7sKU%cBxDkSY}hE~6^KIo(?pPw?Zu2keFrOF3`{w+Vn+$D z(X#TCA(es`;O#AJ7l0FJJ+QW{LxpCyzdV@x8+3gYczyJHFp)7iTw=*3ia0Dg5|R6R0^Y!M|!0Zs_{nUiIHYVl7U*7=m&s$48DhHWHk8&J%zh&ux?OSxA zo%-rVmSu$9oq4Hl&e0EdjUSlxN7{;&rCD1hb}!E=c*Mj$GmE`fxh*i8Iz4O%^;h3F zKTx>Ba!DC;E%u}S3kTnRH`{tC`BqWSx$g~J{P--yfh~7mORl)P+5hprg{?m}nL2!I z+!mEL^0;EziN&pdMZ_*OhL?Xl>eRldPp`LJ%H6l~;Mb2wAA@}J<&w7!Hz+!;vtO%F zr7c_1VzqM9H}3A>k=Z3xZA$Ww@26pQy3*dah<&Pg@CFQZG*^VdsxKF`Zzx|0aLy$F zy|Z?9aq>m#pO%nPydroP_`H8h7o7o!fQY8+`UZBV^2thZzls zy8b0z)DZ*|%610}v_{i*`FyoF8k?8$22?)&xpG0CGzHdH)Mvw5AK12M`ptl}bFB4_w$S+HI-Q?X12eAZ0-*LF4FY8yDWpQMNiiHkQ3aJGkgFw#3oo8H zYAX>1Vjm=`=94^F0!JbXeI=`jx(Wpc4_;@{wF$I52kThT2BVOP1Onq1^eG&0Gz_PXZdQ!E`s`$IynBAH z(*vJ>v!nIdM=<&PSF-(_BX5=-=~*%GMbqi0(S!Ss?Z33;E3dnX9*5rPc4ckal;)9V z8>X&)ke7U5|5*RZOMQ>z{{@?Y8TGfy{`hfZrdQm>=DY(1%YW>;rb(;|(hk}clyQ6c z-V<9u;to9SGV0pp1Td%bD;?v1DmXvX+&rM5qM&Ya)rHTi98$;BA1Nt5tNST6=$Px? zrKiV5zw`L&M@<2u(Txue|1bnBX41u`vU%qo?cVn6_NU#N;=F#G_f5a*hpnaO+L(k- zUMzkwD9UG!Zg%HRw_zu`UdIj3UwbSl$dryhk#~>h3nxPp`rvki0dqQyF*H+3ZQPG zZF25_*!0ap5m0j-XOQN+bRv_ezxbGh?x1JCcN!leH`GW-6S$jPgJ`s4B9so(aP58=>)HYSMK zul@Gs#kWgKXLwFn`TM}jUKt-$+C@(D?W8io3JdY^A6kD4)_n1CqW9)Mq{XA`JKffF z%hHYVJJhGH>gd+SLCU(5Q`T)=x%%rnXMDt&k5*(p|9k4?=SitwLEXpg)hj1I*IxHy z)U6j`kHvj%t?#^8mOgssCsA|P^&hw2AvNe=JIqkeaKzZI>!B7YG+U&MxMp?DNho^G zqWvY<92i|>FmNur1;)r~5561;1AbD%wyTv`7E#iLu0~W5OlflzTEj(9Lb9?OAt6s@ zvr{Z<3%~W;yK$P9%#E{9!$nppz#1nv-(f55>PR@a$vQykODS~$yR-!^YD)@)5DzbV zNBWe27_+G9K?Ib2u=6qy9Psfq!jD3wH~JK9n9&eliIeF=jm3F+F^aBylQQm^q`Ix} zg)ES;gabh;02S}S1N(vZL9W08v3#V=BFsUe(kEbY_fbxZo^5~|hzfKkd|?%V;NoI$ z6FBkU($9R5kF>%E20qc(cY8KxNs(A}I1@`d9+PK`ssLr4x`dY_ zu~9|S9&^MMDn2G~HF5;zxyP!qkugc9bp3JNCc6fS)uuLJ0mZgednzua0MJz$7*v~5 z0Ga%)l;6P?@gN-v;~}AGK^_|LMG3Dal?ZB>ypljKu>}xb*p8iwZV;40EF82$gO*^GH~ALiMW8=M`4IdaL5EH92SxXY25&g&95t|mQK?rzb=BFu>wAA} zp0Mpw?)1h97UsYHX>)SIujDLRb$oX1RQr|g&hG9d+t0lnHT1>QYF)tNSY2g-I@#p( z)fD57gdRTPH>z*t{2W@&eAqZb{bzOpGa{u&!BWrYb-EtLVd_6~e^zwW`p62&ft6L_ih?rsQ54X~!&F`-8Vpv2QZWRz5;J%aAPc>S=W5K_;jk;c6>dZICKyue47tGJQ(!Ful)AxU4!edB zZ<#32F91?sclh5?SjxhDeGSo)+`u5u!o1>KW~M`)Ls1E&T&On6p^DR6q}~8r)Ec`j z7!O1abF5{-&Jc|;lqJ_1>1aWXhmu0|%-AgU5dqFqR**LfJb*TjfvsYovIm>QQ?MKZ z%77_9NqcW$vWE~zr7S!_3~;448Y$Y81-XaM2RYU-3d;-2Z>0n3n7jwKaxI(7Bad9{ z-45s2p~Af znM3$s&WN--5~m$n*c8q8k?aWz(5M#(ID9%Q{J8BqGE_oE9YYGB!Xw%~c|xUiwQgXp zxgilZJi+}5s$joolmvV-e?SGAk0_^F1$CAPUhEjEOyLWjpaWGD>#id!u&a0-yUVyY zZS_d@7WT43odoeA&5e;lqrUM8PYTYfDJVOj1|yTX6n4vSoS*C;Ot9KIZt`7==e=ZBAh#g6WXFxmy8lQ3nXO0A&RI zln9Ci!v(Un_=O+=-W`?RP*%{)pM}dPszB?B+7nGF*>4;Hkr1vRgNF|ihD?XuQN5`hoD^aMLFjru5|4C|+Q}3#d;BY(6a^CcG-)qQQvr zM)(8UKtn-}51v3z9xVannPK{lE`xGd(bIgp2=K2AF>3>0&x|SIxTvOPEzV}awPdKq zz)w)cZ5U9}r!b7uL3VMn+O?3GhOR=a4n47LL6n5)QKCL?vS4bRUUJ4wPS6(a*cWWW zKNLgA8Z(7YbP7-NNBf8oofM1{>tU0hMDQ(eUw&6}Lld`52r-v{d_)iu2igh7p+Uxx z7%!nGp@oBdu@Umc{rNsw;UZM05;|Z>7gA4*9e`O|R1{dy_|je-^jID&_=P`sb_xSB zyz(RURggh%ny^BY<9TvyP?4Z%Bc|2)KsBpoXVN`Lt8Xa$Huhe0ARBh`>J6`ksGO}x zhi&EPdj-~oksp8*Qo@LZT8b`PszDXtDL-rj87YNBSTrT*0Ms;6ST{l=!xDB0n^32B z71=d#o2|rz1kwGda$o~)c%Po5pGH|&I@^VrrTH?iu%O5{QCucl4f}diN*f-Ew57iN z58P~tfnCy(3qm(gFY$VYR&^nrQ0d@73`I(i+ky??!)by7=eog##UFXG0fbl~aDgt6 z(x>~-M6p^JnTePqlZimJaL5si%oyCAls0i^8?T1?Y>+qDW&oD_zY>dL=lE)G+#m*Y zsk?W$J_15(Qf4wusvYc0IIm!>qJ@c2R0eUv4Up_*zzI1{xNg5VR`@(rqn0spulwO5}w54rN|zi zjX$!bkEkNpNj&y-11KMq0Du{IRzC0n{Q^!;g}2=~X-wL^h2O#}czAygPEVeU#a9&#uPG8QoN6vZ4-9-*qyg9_-tR?4j}`Y6 z-N6b{{)Jh7&`H!ewS@?A$%WKS zuPKqJlXt=T0G=IeY=#hn!-2*~z7D-alq64BMFOL(XZN++$4Xry&~OF3ag=CO1=<8* zj0b;HTP=E@_cU zN@!BkX?O$IdU)+iS4HQ8=5E$v*nbYOO#T)-JB2=#(?(j1M)->yjyVCci?uM}M&qKf z@g1awp*3n~CjNmWKE}E9U^wZbX1!X9y9^c~IBbrMimk1uYiEHBn++lpLuPFtR{Bjlz~GPy#0){5s3mmo4AaiBi9!7326<;sVPBYSinZc9E2Pi zyseJ*>4;kzIJ@vG)Ih=pJa{E?7!0{V)Sb5BEXQ-3c7wQ4)6gI4BAR=|8Zm%yi$o`Y ze}jGI;}|mJ4Al5=ER-S&K;^M3_lTi)fE?^wCfKlR47(|35bf_}gCcqj0hvat33k}% zDlbxMSJ!3)h!#dhM#8#iU0F zAqN7Z#}pWBY4?2C99IAx3KUX>k{CR#$a@wF5%5<25QvAI^Gz{p6JUo3pahbiv?q}e zpChP1p058oi9c{hJANSIF;aFxFtmKr{3mvSotHzAr<`E|!V&?6*tFRMo!E?TP=n~) z2(|pMs&8rGy_ix(qKHU^wwNq4QlMLs;UR8Y4-ZX1-4-GMSkQDZXa-Ru$SS6R!u`Rz&zjg~z%h}yRi+9D-ohL(_a+;*=2LQZ@1MrrF6BVSLlK#-TO z{IWDMaym?oa@SK1S|f}4yF zLGE_h9mN$e&`-ShvT-}2s2nbm@}h{$qWB#d!uJC?hfPb|hgv7(u}j@~ZGyWD+Bo{y z89Y$2lJMX&_>;Du)HQgfLkyM=p+8C-;zx*|4prk#to6o=$x9=z_GQK64GiRr5g(iM z4TQH`;nIKAHrDyc4(!Jj&$5$o{II!ro^rCAcJXu~u|k4iLo^5rYB>Z7wiVdDz-0)< zB%*mp6i~cu1SUl8`1nR%^RROzDg~>Zg*k~Eu%ZaiQowCR5@x0AnVm7T=7^Gs z?B1!~(1^hObZA6U5T8{bGIfw@%WFdbOW+3Ox-$g^PPakAUg9USuy5-n?N0^aS)6Z% z{l@TJLKu2Q^+zXi6&8tbl^n7h$R7jCua<#KipnF>d{)#d$tBA$VR7@owQ+aA2?LL+9El(!dl2VpDv z<&;^#7o)U$GuT83mp>7V^8dgOHi&n@eyar)ibU~n^Tsgk0C0}!-5;c3Xol=Gt){fV z)vuxl@klB+8Tuzz8=UoYTSX9YVpFNPt2;E`DK6Ja6kz zABcJfw4fFW+P*tn(M1YXVxQ1XJY3ojdx<$CR9YfmXSV7u)K%XSgN%DvIOoK2ffmgC_4>kx57#J1I`pV$T zPzo`i_G}o-I6=uH*@zDCWP%uv8YQxmUpPZl$6rto@r7EFFx;bzJAuGu$1Z4U9vsvW z?9BghAbfe;^Gb;Idd1Kol5zvwikGn-4N{>UIPL4OUvf@dCTU^I0(e=$1Z})Ik_oVe z<_2;*wHv6WSWt7gwz`f+MNSO2#{q?J^bhxvHV)QAARH1w2*=2Sf1oXLaIhph6oVP% z5KE6Ebz&D~Za7(K4>QJf0IDN-^L7L<&#R2dGUj=;b;%Kvb0R>8e2f)AyP^Okl=u_T zc3vWI-Tk<1BD~EIs_odfZlNFkw>Cw4z&9=c_OgpJPs@dc)FTVDZXnmb@IoP2u>+7r z%`SkIxPdp~5O6%$TVw;z0=k;#q3t-4{8D9tH{C%>3isRC%<3Y1>`-7EvW`F4#Tm#Q z9zNvQ0=f7dOvp#%+iHa8_d>Gqpx|RKaTOq$?i)Y(TWa-nh-AAzk2N*l3- z>z`iol)dpPENqD=?G5ksVgX)`5W*{woR%Y)q2#|I%8>5(Fg*NVX&+sNVvM?#M=c?Q z$0UB@1(@p*nh(H&HGIZUFdzbS*j@eMI@Tjbz9nICdzz71Z`=UxPrvrnyp(!;1xuXk zEEInT28>>;Lh8o=ZPK{06>I=iGGz>?Pyq#N8ApMC$vnyrOe;WQ*bF!NWWngw^_lqY z6xbjYx5|hrgGnEQ1r`*NxWX=2sDvE$-vYpVR0{^qQ%#mrlh<&(8yX z<3le;bxjg%gR6?nHNiHjT3;XWyMUtUv4x4^dLxG-kHz7}^`5gT?HZbUvE^f8uyAUg zbOned>(jriFX5r111xp3D#cZ>B_T8d!iF&A57(@0Zn_aTgQO?&+kyy@iSVc7Ro$@v zud%C*ZR?G7A)e;hmvNJbHnQ2r^>cgTex3lbESO62GHp?~~ zWe&C=%Ct6sA|-{zNfDi-j73S5g97cs#I;g*aSC^s5pMdp9$-6aI{y$HwR2Heg;CYO z_B`*o=aN#kU_U5|MJG$R)cAvDN>ov;7aJTPP1U+;pX1Yac2}833Nem;AEKTI`r{K;gFcT-(!QCm)H+W7NyZPx=Jw;vTfQSU8_)*GEgd%v;Id%5~U<3LgC z!oJ&k``Ys2m$!5!%M!&nt+8vf*&Q!9+rIeTLZGbIovzt24DXcBXEep?f{UoqIXYJV zAV$ugJwCJ6McXL8*H9)&yYV>ME$w!``9T|z!cVN+IUAX#3aEbpS;HhMt^Xd zOSDV5y^(}rEo^n}tqvTbY*Teb)SP1$$%IHliPIBU6cNhVh!0xM+fLUKHv1nD3Q#g& z1+5^Db3Rz?l`+EAk~m$#Pg2d4Z&D|(S-#A121Mjf{@XmKVd_5(xj-yC1?Zo1um^USp`uibF|eCfH%f6-HZ!})LOpCrE7x$kB3 zA}nSOFIeYogLpyE_jO<8ka)&BIkB6#&;Wp(}Ta;Tv6$KZuv+OPLFcj zHZ*8Do{rSD-Nfwy*)~G<6u#&C$H|2tR{rMP^2grnsR%op=N8{f*M^-3XJfDRlqa2k zJr_E?0A;0lE;N=#BI55A)S)DdrAy-l*jngKjP^rnBIMj^?0OP2YsfP?5gPJ1D#B^e z96|%;OYqwe(xp?r2GmU}xLD&UQ%jr(&usMD1C}+LH0#MAO~Kn_$E$5XWK+#8UE;Xns7eV$73(Gm5Qq6H`>; zWIkNN6|^Ucm1snF3DFFaa1K9;_zcj-!D$xABLu1l1T@YzG?X}>;MsZ8_(8LU_%2~* z(N*-gWiskGrA>!RIDty8)jKKa;3xK8^l;TzjayYyl{hb~!V7y;Y@a6)?{_>$? zcM0Ez0!8Gu=|S^(NbSXeIWBCD)wKZK3r(>@E(cP@wr9R-TzaG57&%O1Kz&_m>M5UkMw+dp$XqC4wyisx1>9VuoK@fkC1wZ*18O@xV0jCAsH3xgU zh~#arP4(^jqpmj7alEH?>4(!05BpEYiZYdH^XLieL?>pebsB~G-F7`|RPsH#7K`Fp zB8v%=aduFZP-;Xh(&CxHsw%X9tA}ti0sEiOvmP} z+(j`ox~G0KrV99;$b(bNol)^3sTCA7#lcDkl{{iO3fB-!zaR~QouRh%U<6qj8pfr> zMWELKJLwLSaLo|=6-02;fWBM z=!SEM+eRP>r1GL4WgOphJ)c0~aBOI*whF3lMkU@-A4~U_`rCo{oMWit`8?LKO0<$UAv8xW3p2ptYF$@DSBSR5v>Qk}#Jl(Tw{nx$D#mfSf&QDIh{own^NS!f1KJ)I< zbIXns^-rVP=Oq)_$!W72E0U|~GL8^l{C_j5En=cA5<1zt(G$&BB!L8i1i( z+~5wG5rn1E3soS2*Aq(PAK1;YfM8IHrtpHOn`U3z(T$VYvw7@w!o!|xTx?KG->Mir zD@P~h`dMQRUM@@+IY)r9Levaf9Jq{oiyxPxLEEEHRd#k+-{UR^l?Q-NLy1ksOW8{X z?N%_{gP4M1RIU1a#V7SO%#GS5!fB3UIqi3$a!%|9_BoAr} zA~9t7NJf3oYQ(B{giB-nNC|jn`Mopef%k*Ot;HQ@+h2>X|HIVrjyqR_HO6!4dyV0d z&*BBii9Wc80)elZ*}_cPM^iF@6psSPvY@2<_3 z0!ig?BQ&D)ZqG%ETqvwZXn(H#F?K{MBMyZ(AZDb?1U+nyEIWXWf^Czxr&vR z^2qoX-uuqZo395y97Cx8*I-9vbYo!_+D5;&JcvlrilYF8xm7^Qv~MH2J=c#g7{?t)eH+5BDLYU>m-Pp-=z4^$oVd-HdH+35cjBAP@Bp}9-zC)s@s;XbUL;|8kF_CLOdHW{mE$t5*l*@Vo52zhh1wM4 z{q3^0%YfmLmupwvZvy6K&rkivb0oh0T5_S|_U!rI+TVC`Mhx?~T zMFpr>qAdbdAbAVnp5IR_o`OKqQbqI@g<1ea}*nu|a9z!vP!-h*D zkrqIq^OKW;Fo!^)P|S?98=6P&-E#oeC{d=~KA+pzLc?J$Qh;A!!C~vG2VhKCa~%Dn z*|@wh3?RdqO=ZohbK=U5;MgB*YSWMOK-H(LAtcTd`pPA(lY_o7r!_wgA1YI~JO8|qm;D#lr6Fvu3AG+&?yIYt;fy{^(DC}ahS4dk zJcJURump1VkKMa-1UADP{q0~%;?vHDCMhC%E;ay|k;5lEnGL&4k{H{_L&%nzF*PCT zcbh@wz=M#C>tmFR5QC>tN9|VSt?KGZ=PTO>e|LZ;s+iS&SkrU+UfE8`dp0#3!4kvDoHP6=pnpcz$M}%xCm=~Nh%R9Ev*c3m9mU(Kk!n_?(<}HI& zX$u$=i{A$|&WWsrWQNapVzCdEz~S_P4(z~nK#HM$1RqtMn82DRUn2&zZX@g7Wi0eq zlMPfV74EgZ6-Iyv?J%&avt)P(I1masDG6Amt`1;1#?uYR`rE(Iy3j_gyYjt$xOCvS3B&Nd>FU1s06m3&H`h^q;}_Vyy!xr-BbeGr^5vsM zWIMd)ki>6-p$Z_yU+2?Xenipi02i23^uD;D7NW|V2_y}{jOvb5or~usuogN&Ts2cA z#DyZ_pL?riD>Zz8OK})m&zGKTs~MN2(xj7cJjYTBIw_z5Gs!iB%Bym++P0Uf2Of`?OOrR!M$1p;`#ScI=l5>AIhmhyF!b;$B3mHE-fi$tz*HEf z;wN!eo9>n|Jmfcs5BSdoglt`Hc%iZK8bvFq5mQR6VoKW$_E&;m6H{b^2=$Ioj5pp5NMyws>WypmZ(IPbkEXj4r>X=o8#|chSRi+4= zEiWq40x3bB!m_P(^N1Y;9;t>}mo4_>7pX;=O{lsxG9jWkhgO3HS?YT)($%cI;L2jC zqgz{?;z}sfA#MD69$Xb`F>>dR?{3+N<@Jgf>HHAGQrsNu8oo4u$kH-vw84ZBw>9l5 zCq;%ZtU2Pr2#9)PqIDd~40R#>%Se&Ks45{Gp0>pqJ6B?lCJh2|36F6y8yW!%B@UJK zdGuGCOWYSrhamvx5GK{DN|8>4R(#9#c`$YY3*DxU zHRefh1=oTgyjUKAv$nVVqruc22u=FMp#NhR8}W#7Y-J4sJ3(|mImxwB_0yRgloEp9 zUz&tepX)Hf{8;aKcVcQs@FSE+g13-op@i=ME=+zrTpEY8SbT%j{L%blk(VaB*&wkz zu(}UB0bu(ojyYdKd7kJ}Gdf(YBc&<_MNp50jKd{sfY{L0Ug!t*}4p`y$XFUILD+i9ZwLOLLS5pOYu{{IvG`A%Aif9CQfjQ|Sj_qxh1^h_=ftG0}eI>IV*pCt`&!?Ij>CbCNJ^l!yKyA96Kbc8#J? zfp}t+LzZCU$##aI#75=1+|0BDY0gOpGgh~l@ylK!YG$%yi{wUgX)5RM5*`(Wi=j-# z4w@&%ol4__Z}b9xuiwI)!=QsGPk1R<$pld#&;6 zsfR}%?)}DpjXNhkfgbf4;AHh{13C$~8iHf?5kg83DW%C|ARy)`Fm}v-)LTM*v!va8 zp)L3Aj*1bevYe#r8~@{}yqeNS#_m}L!R(!SJfpl3orSE#vx^&&mW;M{ynqZsQODsU z$?n?Bw6{=IzCr{tt+!KQlMP*{UZC->n)&Y99h^#0!0EfLafn@m|Y1ES02++wv(TG)n4XqyNvB z%0c82k^Y8m%4s3^<9;Nh(e-HZ-kM%+Q>5#bMUPVgS8Q5 zggo^kox_+y;csRZ&E&#&3a$V_je@~YhzB1KO~QvjQQ*UMIPTH-GEl$e;bF$y^fOrR zITx@YlP^%|xH6v4MBDa79h<1cId;T*7iP8-Gj1JBHQGPCr4TM_A-Ifl66C=#`PviA zU>K|xDwjMj^F8I)vqJDu#9p8PTk9CU;<*<@5UwH@Fxr3+CU8N5P7#h$sTLE2#67bz z>!Xm`{3mndeUhFf9f#uRxEc&X2eJ>uvqDMO31dhFso4Gyy=^!KA#>5{?r*8!1EORr{ literal 0 HcmV?d00001 diff --git a/tests/test_photo.py b/tests/test_photo.py index 7a2163269..81c9e88a9 100644 --- a/tests/test_photo.py +++ b/tests/test_photo.py @@ -18,6 +18,7 @@ # along with this program. If not, see [http://www.gnu.org/licenses/]. """This module contains an object that represents Tests for Telegram Photo""" +from io import BytesIO import sys import unittest import os @@ -37,6 +38,7 @@ class PhotoTest(BaseTest, unittest.TestCase): self.photo_file = open('tests/data/telegram.jpg', 'rb') self.photo_file_id = 'AgADAQADgEsyGx8j9QfmDMmwkPBrFcKRzy8ABHW8ul9nW7FoNHYBAAEC' self.photo_file_url = 'https://raw.githubusercontent.com/python-telegram-bot/python-telegram-bot/master/tests/data/telegram.jpg' + self.photo_bytes_jpg_no_standard = 'tests/data/telegram_no_standard_header.jpg' self.width = 300 self.height = 300 self.thumb = { @@ -122,6 +124,32 @@ class PhotoTest(BaseTest, unittest.TestCase): self.assertEqual(photo.height, self.height) self.assertEqual(photo.file_size, self.file_size) + @flaky(3, 1) + @timeout(10) + def test_send_photo_bytesio_jpg_file(self): + from telegram.inputfile import InputFile + # raw image bytes + raw_bytes = BytesIO(open(self.photo_bytes_jpg_no_standard, 'rb').read()) + inputfile = InputFile({"photo": raw_bytes}) + self.assertEqual(inputfile.mimetype, 'application/octet-stream') + + # raw image bytes with name info + raw_bytes = BytesIO(open(self.photo_bytes_jpg_no_standard, 'rb').read()) + raw_bytes.name = self.photo_bytes_jpg_no_standard + inputfile = InputFile({"photo": raw_bytes}) + self.assertEqual(inputfile.mimetype, 'image/jpeg') + + # send raw photo + raw_bytes = BytesIO(open(self.photo_bytes_jpg_no_standard, 'rb').read()) + message = self._bot.sendPhoto(self._chat_id, photo=raw_bytes) + photo = message.photo[-1] + self.assertTrue(isinstance(photo.file_id, str)) + self.assertNotEqual(photo.file_id, '') + self.assertTrue(isinstance(photo, telegram.PhotoSize)) + self.assertEqual(photo.width, 1920) + self.assertEqual(photo.height, 1080) + self.assertEqual(photo.file_size, 30907) + @flaky(3, 1) @timeout(10) def test_send_photo_resend(self):