From ed3601f8839077635cf55d1681706b27056edf1c Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 2 Dec 2015 20:17:53 +0300 Subject: [PATCH] sticker packs management done, conversations list context menu added --- Telegram/Resources/lang.strings | 9 + Telegram/Resources/style.txt | 5 +- Telegram/SourceFiles/apiwrap.cpp | 56 +- Telegram/SourceFiles/app.cpp | 2 +- Telegram/SourceFiles/app.h | 21 + Telegram/SourceFiles/art/sprite.png | Bin 181760 -> 182522 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 243901 -> 245481 bytes Telegram/SourceFiles/boxes/stickersetbox.cpp | 621 +++++++++++++++++- Telegram/SourceFiles/boxes/stickersetbox.h | 133 ++++ Telegram/SourceFiles/dialogswidget.cpp | 183 +++++- Telegram/SourceFiles/dialogswidget.h | 28 +- Telegram/SourceFiles/dropdown.cpp | 88 ++- Telegram/SourceFiles/dropdown.h | 3 + Telegram/SourceFiles/gui/countryinput.h | 95 --- Telegram/SourceFiles/historywidget.cpp | 54 +- Telegram/SourceFiles/localstorage.cpp | 15 +- Telegram/SourceFiles/mainwidget.cpp | 123 +++- Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp | 10 + Telegram/SourceFiles/mtproto/mtpCoreTypes.h | 4 +- Telegram/SourceFiles/mtproto/mtpScheme.cpp | 123 +++- Telegram/SourceFiles/mtproto/mtpScheme.h | 428 +++++++++++- Telegram/SourceFiles/mtproto/scheme.tl | 17 +- Telegram/SourceFiles/settings.cpp | 2 +- Telegram/SourceFiles/settings.h | 2 +- Telegram/SourceFiles/settingswidget.cpp | 17 +- Telegram/SourceFiles/settingswidget.h | 3 +- Telegram/SourceFiles/structs.cpp | 9 +- 27 files changed, 1773 insertions(+), 278 deletions(-) diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index 70f558db5..96e8c3733 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -581,6 +581,11 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org "lng_stickers_not_found" = "Sticker pack not found."; "lng_stickers_copied" = "Sticker pack link copied to clipboard."; "lng_stickers_default_set" = "Great Minds"; +"lng_stickers_you_have" = "Manage and reorder sticker packs"; +"lng_stickers_packs" = "Sticker Packs"; +"lng_stickers_remove" = "Remove"; +"lng_stickers_return" = "Return"; +"lng_stickers_count" = "{count:Loading..|# sticker|# stickers}"; "lng_in_dlg_photo" = "Photo"; "lng_in_dlg_video" = "Video"; @@ -658,6 +663,10 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org "lng_duration_and_size" = "{duration}, {size}"; "lng_choose_images" = "Choose images"; +"lng_context_view_profile" = "View profile"; +"lng_context_view_group" = "View group info"; +"lng_context_view_channel" = "View channel info"; + "lng_context_open_link" = "Open Link"; "lng_context_copy_link" = "Copy Link"; "lng_context_open_email" = "Write to this address"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index f8ce9b4e5..811308898 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -323,7 +323,7 @@ titleBG: #6389a8; titleColor: #0f8dcc;//rgb(20, 136, 210); titleHeight: 39px; titleIconPos: point(7px, 7px); -titleIconImg: sprite(160px, 100px, 26px, 26px); +titleIconImg: sprite(161px, 100px, 26px, 26px); titleFont: font(17px); titlePos: point(44px, 29px); titleMenuOffset: 36px; @@ -1794,6 +1794,8 @@ stickersScroll: flatScroll(boxScroll) { deltat: 23px; deltab: 9px; } +stickersRowDisabledOpacity: 0.4; +stickersRowDuration: 200; emojiScroll: flatScroll(solidScroll) { deltat: 48px; @@ -1814,6 +1816,7 @@ emojiObjectsOver: sprite(147px, 196px, 21px, 22px); emojiObjectsActive: sprite(308px, 264px, 21px, 22px); emojiSymbolsOver: sprite(84px, 196px, 21px, 22px); emojiSymbolsActive: sprite(287px, 286px, 21px, 22px); +stickersSettings: sprite(140px, 124px, 21px, 22px); emojiPanCategories: #f7f7f7; diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 4461772be..3e002ab8e 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -726,29 +726,19 @@ void ApiWrap::gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result) it->access = s.vaccess_hash.v; it->hash = s.vhash.v; it->shortName = qs(s.vshort_name); - QString title = qs(s.vtitle); - if ((it->flags & MTPDstickerSet::flag_official) && !title.compare(qstr("Great Minds"), Qt::CaseInsensitive)) { - title = lang(lng_stickers_default_set); - } - it->title = title; + it->title = stickerSetTitle(s); it->flags = s.vflags.v; const QVector &d_docs(d.vdocuments.c_vector().v); StickerSets::iterator custom = sets.find(CustomStickerSetId); - QSet found; - int32 wasCount = -1; + StickerPack pack; + pack.reserve(d_docs.size()); for (int32 i = 0, l = d_docs.size(); i != l; ++i) { DocumentData *doc = App::feedDocument(d_docs.at(i)); if (!doc || !doc->sticker()) continue; - if (wasCount < 0) wasCount = it->stickers.size(); - if (it->stickers.indexOf(doc) < 0) { - it->stickers.push_back(doc); - } else { - found.insert(doc); - } - + pack.push_back(doc); if (custom != sets.cend()) { int32 index = custom->stickers.indexOf(doc); if (index >= 0) { @@ -763,39 +753,19 @@ void ApiWrap::gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result) bool writeRecent = false; RecentStickerPack &recent(cGetRecentStickers()); - - if (wasCount < 0) { // no stickers received - for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { - if (it->stickers.indexOf(i->first) >= 0) { - i = recent.erase(i); - writeRecent = true; - } else { - ++i; - } + for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { + if (it->stickers.indexOf(i->first) >= 0 && pack.indexOf(i->first) < 0) { + i = recent.erase(i); + writeRecent = true; + } else { + ++i; } + } + if (pack.isEmpty()) { cRefStickerSetsOrder().removeOne(setId); sets.erase(it); } else { - for (int32 j = 0, l = wasCount; j < l;) { - if (found.contains(it->stickers.at(j))) { - ++j; - } else { - for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { - if (it->stickers.at(j) == i->first) { - i = recent.erase(i); - writeRecent = true; - } else { - ++i; - } - } - it->stickers.removeAt(j); - --l; - } - } - if (it->stickers.isEmpty()) { - cRefStickerSetsOrder().removeOne(setId); - sets.erase(it); - } + it->stickers = pack; } if (writeRecent) { diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index d9c79c5c3..c478c0ff6 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -1985,7 +1985,7 @@ namespace App { webPagesData.clear(); if (api()) api()->clearWebPageRequests(); cSetRecentStickers(RecentStickerPack()); - cSetStickersHash(QByteArray()); + cSetStickersHash(0); cSetStickerSets(StickerSets()); cSetStickerSetsOrder(StickerSetsOrder()); cSetLastStickersUpdate(0); diff --git a/Telegram/SourceFiles/app.h b/Telegram/SourceFiles/app.h index dd6c07c7f..506eca63f 100644 --- a/Telegram/SourceFiles/app.h +++ b/Telegram/SourceFiles/app.h @@ -323,3 +323,24 @@ namespace Notify { void migrateUpdated(PeerData *peer); }; + +inline int32 stickersCountHash(bool checkOfficial = false) { + uint32 acc = 0; + bool foundOfficial = false, foundBad = false;; + const StickerSets &sets(cStickerSets()); + const StickerSetsOrder &order(cStickerSetsOrder()); + for (StickerSetsOrder::const_iterator i = order.cbegin(), e = order.cend(); i != e; ++i) { + StickerSets::const_iterator j = sets.constFind(*i); + if (j != sets.cend()) { + if (j->id == 0) { + foundBad = true; + } else if (j->flags & MTPDstickerSet::flag_official) { + foundOfficial = true; + } + if (!(j->flags & MTPDstickerSet::flag_disabled)) { + acc = (acc * 20261) + j->hash; + } + } + } + return (!checkOfficial || (!foundBad && foundOfficial)) ? int32(acc & 0x7FFFFFFF) : 0; +} diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index 076589d1e219d505eed18883608b26de6a73d84f..29c40d45202b0a60c271ef473cfffd5aea991c5a 100644 GIT binary patch delta 58383 zcma%iWmr^E7w(y1=niS5L+J*QmXs2aZjf#fkUDfqD+ovX{gCGoj zkKcFWx%b!o!84qhd1kM@SHJJtA+PZ-Qt*={VLi1E1~CYQcm;&?1SKDcNInn{Od~)@ z{y*>NBBa>_o{I}S7ZecTwG$Mw<`sD^BFSrIBW%knDk*MlZTnnQz((wOeLcbe@&EPB zG(KDjlK*R2ZUN!6Htf&ga(K;hcrb2E1|bmzVNnT5Q9*e@K_yWMkw?msB8uWl@(Kb< zk|G)Msj)0cLe_wbn0F10 z(|`mF$rcjS_haM^6CEQ=U^FKRygC}rK*-y|LNqwWSk%aP#^8Vk#~ky&4+t=Takv1UoCJ`Dnu*8h`=HCDQ7jCzg`qh^asd5CW$@sf&I$ogpo zLHX&U_7_b~E=o9?R<1{w?Ux_!yB~)|6E`l{+mI&TXwX*HZeNbI3TS54+Qn%-<$7Zw zP@<-cP{2D;s3agx^j~u>OM%c*yd4 zbUnB;vSim&{drG2GRN1ax$#4H6P~r&oQI}ZZYq@ucNBQm_ulvB=$F?LD`B`ic;?GL zX>yTdkin0N6v%2kAL4CzPg@%H@f?(_ZLZ|Keg!K4%rQK21TO8Dk9_DbU2Sp&jDqh5 z*62i&V-X@fQB9{cTBk&VI1xu&A>y#Wg~{P{mWLX-cs>TjVO3`BENpBDp-ckW1gvMz zo^kQ>yT4dJjgaaWFah&kocXCN8!s~o{&1_F_;&qP|z4P_@e~#o zPFEQ4pX@CXv+d@n^e@_O;DhAa_V_=3b6I;?EI$jr{&zy?gTYsi39+tM$&5r4?`g;l zdovk{aEJF%58>G8`b0!oWoE9witIGFMr>SThH!4!1Z=H!1~|hW0ss^Q0$@EA!0G;K zyYH_WtA01iD$h9Vo%<)h=J65oNc7QG*{4t6?Zbs={7-+!j*O^+-g^s#=jZ3Hw9T@q zk(D|WY5nsKiB9~S&2qFg4zy%O06>XX@1MXZO-89{Qy|dmE>5^b1e8|G)sbwO1Et6U z#kK_We3ZrlE~2S-m8k9I9#*DCl(7AzNE#;aPJ`pUgeM$QOKfbc&V4ifS2VYOqm9zK zul?hjNBYuk*g$W-7}12L)Im*9C64%K^~Wh zr1xqg8H|Rqgrps>~~vq z$&Wox^1F{>_{$l)KZzSa9e$JTUy`Jx1LAE_Ck=TE-J2!_LmXBoU#^HYbml2?R z6))h1feIfW*VhR>V>iVJCR7UO+5aBCy}cb18!NA;M^RT-r(;~sBq`U- zt{#hsi3!!)O*|Ozr2jlN)*c-ZF^$S)H6xb!B8J&>-b6OE4=kuw*Z0%h+HJtT9`tYd zy$K{iGAs`#GAR1{KWOvb4LdnG*;#+B%&L|1AoAC*Ulp4q9Iu?y4kH!$; zWH=tcn7{;1{**{(7mU0Tv;*CRPCx!Ac4aQSp61o7S0htX&BnW{OG`NAWef8d_wJ}) z-ZSabSpEJt^PYT2iQ{DSVWk@Ny6|<%3Mn-wDH}@%K6ldqQ<*e;k{10QBWlk z7)F7LOb%3_P9G;&`#fzKEzpLc>Zo~0iZqaX>_Ni_L&m2!q~}X($&3iRo}xeK`fU;x z!A(Jv!F&j##GJ_@t8C49cnG5dms8hFp-*V|G!)`{GF~{G{IOE2)USA~scD7}{Fuzi zCZ(n>`vVii#6S#27qd7k|u!0WxXk*G5S0Sv3c`TV?{a?|L!H0s;k+r(Ve-B4)wXJH&{5&*l_i-J{FhRj+!KBW0lhEp3l?KcZ@$TR` z;}7ynvT{EUop)>9!SQc_Tj|+1@7`=XWj9~=z$5vm(%952lvHDxeShFI_e|UwAbZ$n zhQzN4zd>oaeH%l$S!+@Qq*wP z`nfq6ABz>f0kU_R-)7G^JS>~rUD*43F|3{YkY>ZmfHCas%;o0%M_v)V=*7R6-s)mT zVk9g7N}6v5U)C$)5EkGXM!{z$@&bl79?nGuS#>KESTrQ+%=*r5Rtkr2J z1?v1!np9cgR9Ta~Jt{cM=s4L+6I^?kXkNXpYhVEWxD%>1R_=K}^Ou?Za>sl#Kc?vW z@3AauspK+Msznp$C8kPhGswq(%h}Ek$W0M>q_g)TRLkxD&e5Tdr)1qrxSZHE=Xeiz z`vpXmi#-2)A5A-JU$(HZ+4752IBM(6q!{)jq)pf3|IcXOhCf@J-C5vIK(v5{`# zR_-kaQg-&L9GKZGW1&W(pWw+XJfsP1yRZc?k&E4L0Ex4Sr@n?C{C$x9To}psR~8e1 zHrxS0BeXc9*u5gyR1kGM6@OxEOpIRy+bA-qV4Mn2<)GSij=^8h=U zm1eYER%&JOcfI%@gSH}z?_Pf!O-k?!22GN{qQ$*tE{Zr$tZ=Ie-ExG{PmEy|NU!Wk`__F9X`4F)|}G#Zg$v2FdWD29`Vt6Al~$o2bKmIvrthD@06!Y#i*)nI0VaKZS zu`w|rD)29}kPv#G6NAj7`8++g)!rm`Kz#>G82+Rm^@{IjEY zv2&X7PoU0BVsTl1A;~*@2AH3^Zs(T6zInZ$)Sz_BhvnL1b5chMuK2D8wR38`t9h|l zWrp2zDPuAYaK*vZQcoAGNPrR7<)-~S3D3>R_QS4#=22UrZ+rc3=kevh&U$hj80r(- zTu>tMimU3AF98%vgE|yqVy z4v>S)CSV;(YA?9r3S};T*K1^Iltla(#k~jInZ(&@)UQd70QEbPfV(g1D~EQl#8`!e zU$o^1=@HNf*|x+7m$bin=)0WYnT8tj^RjXgNstN4{7h%-iRcNQ>0XAtZ{&K}*R+s7 zS(3+EIOS<|X;ffVk*{B2!KS8re0kWte)_w9$~fn;eoDsV{NJ;3YO!*qe)rEx>^I*H zn{zS3*h`whlG_Cb%C)MN#jGyrM}iNhPI_R-p+p9$@6GGMd)ldNB^sGt-+Mwaup_!~ zY9+_5V@c8mAw3YSc=Qtv7Lhp{|a|^f?yThKb9ArLVSI+Mxvk5G0977>8aX`^50*IdN1lX7K(+VanF znQ@AKibwB+L(-ZK3uwfjeExSx1B?aQ8SwLsXhty)`o%*3cToP|y1{v*zlXhe@h*Em z@zQ9W@=-013G!1YD&UPc-$GK-b(t_-0&i}{zl{wr0!Xgmsd(M;K+vE-=k?s)Uz2a@ zl-9im6LA3tC#zA9Gr0|MjL9!Q!vu)$KJ*(IN}$6|WsBXb?!K8$VO1f5=i`PkJ#rSn z0Z#s%fL89qa~ye+r54XEAe3j^Vbz#KmpY)TsCOL{Rd*!<#$HwbiHY|6lJIrAnMD`< zSy`2yth`jk%=>Re#?LbtIgJGRk(-vHTaMhpw$J{2Gv-@1HJ=wp@4YcHD9|t#(7t`b zB&ZqoqgQ2Q^cz#|J9#K%{!6d*TycGW7cD?8CNJf zaKe@$p+X82qlrjI3L6VGIbL6PNcXki%Ax1wNDx36&_EE~hebZQn5|PNSWwd&q05UA z=U~98r45ABUsFT<-J~bD63_Bt$|f^2bGNX&8J9S+wW`XkvmQfKRJ8MR-KUvI4}OW@ zEA;XKK}S=Q&pp#(SF!Ag57}a_#%s!TEm$4eTN3D>MNAi ze3o7B#})3>@LX0jCw?t+^_zDPlL|7Y7JlmCb!c8X75`48L!Qza>~-Uw-giCLU$2ay z>8RFNh?0>2#{c=G>q?6!i9E?W5y#nH>3~!Elu_Ga4UQt8!?mFAZF^NxIKaPPmjCa( zNXOM&GqJ}aYP0uAholWK)P7PEVG?q@|0Ea&kCyUBY#n>fpf@fI1Era1x3->fIap3l zzFIzLS|ycd)*Xd;R)KQdoG- zO8vxfu4EgEbW+q&wa(b~)Fnff0xRbutVu1;Xm~g{b~<`3{V0i8LL?HMr+2-lwDV+E z_xsKg3kysmSA2~37bc$VzI^$zx{ilV1oA4z^+51gv*I}TctX60Lp%41b*xVQ-{=0$ zE>nrG*pq~_4g}~XeDbK$W=xBmXV=faV#u}yn)4KI@YembMUw~iV9ckhU;=a9;O!^b z8?=o8;4=_I%9+F<6=gG==*g;*_;A#dzTI>M`rRpvsg5s?JLQ9J`3>Y(sP#l5NOi?8H8nLcsH2SB zgfj0(e%(`wvXXIhaT$OA@YSEY+E{l%distJA3r*Y4SUkzgq7X7sIW9Tjo#ecltk}9vAA}AGQD^ZLI_! zyJF|N>=nU7b{DJHdo;7f2-P$+Y&AH@hXn{Sl9MejplT4Cm|B2o4Br-J^=Ub>wi)L* zE9gT?L@eh0mju5Ec@(zUh6c+8Bqf1GHU!hN{gpQzH5OdK{Ig-(KwXdsVWTD4m6B~3 zwH(O+^G1MsTpK;HyI8g+n;Q7bDE$MV_mtu-my38RTjpbuM`iWlkO=!C9q&RV`1q=D zdbrJhI*FP_Os;v2@xE0!`C=C;qTk=C@YG*?INyD+CFrYoI`hNl+~o3zJ6lk zrxU1l{Zuo1$$g~m?!Hxy%kTI1Rjc|@4(ffXgNcv=5ir;6z7C@kcLV<=!Mda^i32Fs zFns&>t~m=nnOvHH-4g5Tw~dKSf4M=u@{$mD%tm{hP=Vs5U0J^X36o<_xEUO$-NQ<(|7{NyfZ zG@d8BzS-`toZ1cYz035ikuA`#AeLO-sq9*nBSPn=W!9J*%sb8ggwUYw?wgCpFrd7= zT)Gpge;7N@!v%IIBS^y**!%bVQc0?`Dnpeb6Xltdn1pphk8lfGWbOg|*2WpD#TqsW zMJY23<|slKB2vfB9fF2|NiRSG>kNTZ}SM z|BCkzdv+J_&&G7nY%@k(GBQfefQw?Qhck%&&;ja}P5}!zHEx%3RBb}(D9lp#>C*sQ zFrdP&g+7p|k$-@0FhY>PwYjoUO6?1sk)BAVJegdZan$ltMbD?|B+A3(-yYJf>wbbM zCNq5l#iyI%EfYuUuOYm)lT%2ovk@}vso^BX>Xb+QZwaHU)-X^lk0^8Ty=z~rniO=H z|172GAp_it_Dk;hWpXjSj-?nf{1qdhe155DNqVbE5Di6n;bCSo-eE#D*t;*HB#Rta zOoj&xTTjw@V>AaJc;lw}4wP%vs8HM08`*F(6T}sMV&QEt-uKQb=|;%W5Jb@_Dkz+) zT5o;sS@m7Nz7taYTZ^AT;&XMz{0)?_riJN0XOB+{@@&HIt<13Eq_tsL>n;Kj-1n*( z&khTfzt0Q)yi2UPwm)^L2WRwRd}`AfU#xbz)xCDbhAA9%!ig7*Nq4Ah3|B0zvPLB+<}df*;QmTLjenEJilYwA?}X`h&<2@X6`T==799jw5N65Z63I|A)bk|D;aPmeDNt-NHQ6eA9-yT~G<*?q z0+nGNy2i$|o;%|-lLkST_>!u&Gj@H{?xdUPS9;c=ZX&c9H9X7JqM*XsvvqTsxBjTc zr{+{52^{FM(`NEyBx~Uf0@WeF(ZceYh!s~D{|oha*_TXG9@ZI7(?q(|`FE-GF~KQu zK8$m>lk-~|4B_L3aGqu62xf@VK^8ynKiV4Zcg%9rB2<_=v3dLUZFW&%p%#YR)2DM{ znHqLjArR{Gm&Fys1srxzOXXl@!H*>gd`t^ilKzBzi7->+G{*0rXUvovs%{AazIYK< zE-FTfa5O(!cR*{e(GZ8VsZ%X%D+G%*UWgZiT{GYJ9sTX^J7KZ05V}zfe}KZg+)^M9 zgHteUw38G`g``PJN?JKOI^I&wW<ATAxKARWYtF9cBZS?>YUF3 zV`}&B1?i^i+OOqk0l*JG@H8wMGd_vGkuYBW3B0SJ&)?Uljzqcnw5?YtRqn&&YjuY3 z17@Lz;5(YQy)?KWpE;(ak`EfgPH%ssBQgo zp|394u0}$czum)oYtA7EAyv;)j#5O^zS6icE?d+&{b}sKa__~YYItK&R2*)<8DY|M zqr}223;1LczsWJBn%ECUB>lVAD!h_9&hbu=9Vx{WIqDBY_x?D^hRay15eHw_h|7gq z$P{39a~*Primcetg zzfoMxIPx(B0+|}o|5&j4uMf_%zq*LgBn&A-^}4MHZM@QQ0!P|za>W-W1L1+J!Hh#V z{0{wbv=y}g!CWElSe+#`7DpPca?z8v(Htsvz#NgmgaM}jPZaWe@rSvNY%M7XiyjA< zVkV?uVj_RstEDE{PI5*_UgAWHYH;>k)>of(wAGp%n|>!-oDwt=|EM{LxsE+oj<@hCgat*@{tkWNPvL# zyt0bG@bjhlDUf$=$rC~$kD5b14Ke&>>cJAmgn&${h}3pKOkV4~>)&DvwD>3K$u7fw z|uGGMxN=3yFZ|g7z4G#38Qt#>;`b*g8aOo=xihi{F%KT{B1# za7IwMD74qop&(TCCxk%OjXOdH~bGEY`3+ zf^_Mwy{pg*Rh+`>)2b`|vR-zK=}2Uc&sE1t`m^rdZJ{bG6!#~7tw zgC-(5jz^)88^3z4j>tgFqtl3tc3(;%%%E3c!Wpf~qu-`lTh8nmZ4il58`2r!Cf z96m_b@WhXdj8M`>^;*h7umwA5!1F@hU0GEi51)3-;O;>HF?w)-*s!=6Is!30dF$mt zj)%$Rr;5&RXy_)LNl1%P*e~9^8;8ln^(s*Egv5)pBrllem9459BL%_$|DDE2+m`Q&-Li z@bs;TwT)Vv3(+PBP!mkt(h^{m4zL#Nhs`lwI46z9N_?Dj5i=RtFsGYs8OEqH9<8O%PbZJTN!}_j6K&befL{f5HEr=fa2~Q4)Xa#(g5L$P5eUnk5Loi4Et%0$ z^57?q`O0{4%wZJ6$=<}6 zqP#)mxCEK^p9inoe6q#r-kPchXRt?aF9%e$e~jHf*HiBq;^OqesfhWNK<^=^koFDt*tiB2IG!$Bx-= zVvunn^r@I0Uu*r#rM1(OYx50_b11XN2JXn7dylno3#%D}*ZbAnQv5k^Ezl9bX4j>XDY)&ZgdFP^ejUDjTU z5Jg#`3}T4{<%6Fm!b6<0yP+1TfFN*W|Guet&9O9E;wr4#k&NDJ7m_cLpJwe`cb z)qSMV#(i`VQ{9oSvA{yh925<_DeF`pKYnrHN%aD%BnBW}-r!X+PjN5wkA1m3J?|It z?&+Kq9u`ITysrkWzpt%oej6wXU#AOdA$xz|vR8KVt)Kq+QA(_4j&+@f9QCPc|2?A^ zP2J}=9?XVBz;L070H!d!wsa_h7c|(MdvCmwQ82_1)ZzZ|qEQuJo#U`fL5&Z0>()-g zt$;Z^$!QL#c|_n4;mRAaUTZUKnyRd>jyIVn3l2I{cK;r!y^xYr|CC<@*J171eS_CBBE^&*Ja!%dJ@K>PRl+nL!J#@Apjg;zs zL2rL{^Qyi3l!eH|-d8u(eGYD1>>esBT}+u!WFioGG9pLs%qHmj;?B?~nWW0dzvfa} zL20mM^}jLrr&2H8(42x35#ksU2&7c+Z;>bH6>b+P1d>CW$W|!ROZGD=2$=jO$>rv&bedj> z#k~GLb8X+wLWpmqad#DLddKsTw&CT06DQe9cJdOIaYHE2K_ne>^XAHBu!%&k0{yNN z?ftj({J)PUza=CnfwUvrLS0#D;6}~FdUd$39Y!Eqk0w&l?v^;P;fp^i{)9(++y$ss zuYS9jjN4;fbTN}dWu(EB^HyM>_~FX z#1vm}jQO#E-7|cA$xBW7^R9x8edb*{e9;ye$+G#NXJWrllmz*NunzshGgY@qoq#Pva|lmIU+i zSkLZ5iHpui9FC*|*~@>T9KOw>wr7T`*gmNic3_|Ab4PmTVA4mg81t@RgzV>RxTwK# zQquf>c!0|duM;q7DI5$Dy1}oqHfKMkxdclgf;ERMXPV^u#Fhy{7u9O7*VyB;mF=5Q zsr5W#t;f6LRGZ&hH)s8G+py4S*Fffc@sc2E{QzmDDeBe~8Y+8Dray|}PJ_Jk%~ zsAHbqnVp>tEZq8G_W9@mG}53s_kEtpmEMu|6(*H0hTNgs5i46A>K;yrc;1W%VOB|j zUYnW8h*_P-N5>e(6I$T%!QeC25E9Ht;-rN}r`!5x##he@6%}d-f+hAZ$rrdOL2L_& zK`;!&>vO>hv4=gxKP`|HdI&Z)rrwP7wHGs|fRXE4!SatGg2zQ|>jiK|PCv}Nb;&Z8l!APG zc`mIAAE_4K$U@w?5f@z}x54AM)e8xFiP*%rnoP~dwBT!g_2kikOGTuFINl>$cPrg0s zTX5gNuk-sGy8K{bpi~%JtOef$RJwyMl-ha_o}NO_0_je3Nw;tijX3)_ez&{0w@aPX zTH(6Tt(kYB_mykvZKyV;5LV!Pryj&spm1@Umvi;V`+F_B{xI5#&uBlw8FssfC^}oe!U)vPnG@CdQuSE5T^Rn3B0`~zYc{=8Z!~08WgbGpTORAFZ%sr8lBi1%g(q!lNDYxLJ(PC3rsJkK5 z+51mn4~c>sZ)}jD@K^O3;s8iOmiU)@3%o^+{&)KYBKPa80Z)-e8F+VA&>++q|XCn7}^kL zs{MH)@vlTQr-ZX7UPeYn>PIjI=5_n*e|yks+EwGcScT7wDc-_{4|Rjj%JmZe$^9St zld`VHC2edw{I&9yygV`*Vg@@JgRd{7O0@IVz9W}5Y3^}eWX$b)zc;V8fBAp`U&fuD zd&F#P7$I|=v|U6c^I+zTV@8Ghs)F>olJuJ>-X8_-1I2PZ+RhJFK+oo+0yPgd8}=B= z*^2!1?Vf;$@;3VU!$pAiapnNWTp**s@NAHLOM2ft1lA28k)&+y{ndb%SjsL3jr;C zeSJ6gIPe4Vx$e7d4#Xb6?`XzDy>!;=>kjQ}vfMaivN8!lNz0vp&D%u{yNZNzd>11K z8n^Q$C!7cdUQC~^=1c*;Fyh6lZY?VVR#+-Bh(=bkR-4)`O5Ue{Qm_{f)WH0c-g9;8 zfsd~HL>c(6OE5hZUF8V8rS4(vYf|aK7Etxjq(zC>m6eroT|uJ;%_FvTo+&9QhRtrP zf3n@XUUezW8G_IQKculVw*uc$g&u0(M8zjxs8u4E$B_vD?aD5gz7HN3oa(T2(tOrD9%jh<^w$!+GYcA6*gF-c2cOoJ7K_Fm`{rf!a^``aL z7m4v3<4+ElcoxhGN8sIU!9pD!OkVRJpKZB}vPeq4!iPLplVeUlj49PIE4LZ4FIQo^ zai~J$8KX3tDAxI3)ZU#NSN8ZMnG02Uk_fZqCR09lzWnDRw8Ufx(v9soe}bZ@7d3_*rt6k%HTToz1ayEK~+e^jp5RiVQ*1mQBg=3jVFsD5HPh)3DT zfM7c8L5S9qs9K0G6?w+Clm{n)pV6pe+m)d$&`WGBh;Qgey*$E@9{#nijlz zz6y;FBI?kC)?s+KxUFg(>ku;m>7*;x>Rpk6pw;W<=IDIyt!mbg;h5NAAm*kw)DOeBN9w)vsu4EjfUx z;~3?R#Kfdshkm7XtaV(g(7dnL*t)slwrgfg;M!1d z7fD3BpY>Lw%<2q11cwBA;|cIY19(5H^jU;Na7IbxV|2-GR4Mm>s~!2vc1&w73`W6P zJTPPIelW2Nyoe&O-~%YRR|Y|YD(>2k-o&Mj6k?2Qh7-%^Kwa=B@{!Faq(?1DYk!z@*&gXqAA!S-ebKd4;KW0 zH5nP@HuuUfN+PnH*1i=pVdG*fBSEkIkFD)?E8_M)c!~e5Pw1CjGzivO9#qjhUYQs9 zkc-*?qcg~w=V`Obh-%b~_fEMU8ZB%*4 zH-^gc^`N^~zqbC)ULWJw^ei(-_k|P>|IYP(r(j$e!ci2)bBPoDI{B_yGGWiA{ z`86!yMRCASF%A$evGO^{r1;-YE60Cf>JzIj!D@{YN$_Eh|ChHhfU&xXuU@!eI`}ei zDh5!H&MPc~HZ#k^hSOq@yht@IW>Gh6)wsq)5MtqamF&%EwkZaHjaIjm>3#_T}2=w;$u9HwuXTirs*3TRFm31TX zR@)jKGHQ%fYQAS(7`B!Acw&d-eVgq~DLh*wRP`UfFFFEgql;Wa=L~8_UYlN?{~zV> zpY}O*;{K-rbeAgjER$v=h_VVUaJ(pi3R}MSf;K~BDjN;6+-&miyp_SQso?eoR&0fU zf+TI=3x*-{ssXnjZ^dq0iZj*Zs%ZazSK6tjZaozS-u?HGAPoc&0N$_lrj`k39elsc z&r8!%Qi^HuWq>tqt8FS0iQI2SZMOh9Xh&jxa_BQoz|~Bk?>|U!0O<9k7wS4w zFZo`M1n11A4bCSjp>S2*{GfqnCAhbrI z$5d*{K70*-Gbbh|-GIE$tQ2kw(=}vWPfLw2KwQex#gH>4zea6$yfYWnpu+;j&)~N* z;@H3n8;)D`78E|Jb0P04Etl_N`1=Af5sRR|Z#xhC!>24I&HZY`FbvsFo<{~8v|>B# zvXw--rsfsDB?+Vve{7%tM>}*LA#;}Fm#3$KSd0+vXS=ShOvG{)z&c+2R0ZzijehXK zw{)8Ellifn60D7u#)I+X0E{IJne|T0xt{17qIwnDJ_6P+b|wucxsQ{PcLJGk&U`&u zZ9|7J2-$J29whiay6#;Lx+t8CyxWnsGgI+hc@H*z%x+{T5cJn8qg=kE+FWKVp^9=j zITEv=FuI?T>bJ{S^4bervW_r90J@>lnU~N)zxivj^vTIVmmpNH5qABY%eaYRNA|0& zQ)zG+uq@#9efzO3R9bDm#v(d$A+=LU7F@4RCe$j|#whlWgX=8=TFmwH@sY@j2(TAJ8}H9APo|tNm1B2|7f`kBz|L4vaYi{%&HR^(OIEo|Z-D)q9T@Y5;yorE$rs zfb)$4wpr7VVlzWej@Ysmh(ntm!Hwf9bE2!Np{om5;wHP7dZ4cR2!W}v8_4e*`~jDR zB*IW)rlY0+7}>@l#OsaEyTOUF;WkRI6w01p#|m#k7nR<=+;HmHp~M#UWAreockloN zT$ThNFt_PLo*b}M@$uu3MOXZOxHj+!X3^ayoc+-oSi?k78fSp_W^KG#n;TRKS(24r zI3@2^WUMzqa&JM3b9+l``|aa%6Y=q^+xQ$e@o;hbul*KUdOQ4&Qkk(kwpQ6-!_piRaty;c zi57f?G>7mz3` z8S*D4s{Ih|89YMNGWnxtc`+dD%v}$CB=r*3vxg)HrN6;!VNmB^2OTh!J8_m*G(kcy zyg(5MzI#GW8)_H@li0H5ImEkFR@-cPvDtKKf#>fudRCNs{yqA#ugK=$$>;C=*O5HG z<+bKkpN0O(c56Fq;>x z7Tdgg4#_Yyirhc$?oaqrxDQB&G1N{%5qNxHs&d%t3$gKjlgKT6;64 zXGM6Kzl~|+y>~UXO4SrNGE!*d3t;tmmp`Mi^GrMHWTy-MRLqlz#0#kuGqc1C#ZxLg z)f-Hyr^@K8`<=8k`1a*(`WTl!U(wgp&liK$SN2;+toG{ZGZfFPQVO7Z7b>#vTZ_p##t6Qu`+ZU_HT4rT_8HFP|F@p=qQNne=6@P*XDcWyiuuo|WZh?9KDSF`5 z%$GM9Na_$*}C^Vi8)BgsEu0BuQhMlQA!==sSrRWWdBYEx8>>&|?n_5&X)lP*$JnOKH2W1u zSY~Tj@Bsl~7gRGH@xwJv$*AmC`yqSt@-QjGMDQ{UNG74V*dKSkpsG5*{5f=zWwq%{BIZHeaZW{^3jiVRn|Oo1FQzdM0^pExaLale9i zfOOBW-z|W&LRF~pDm3AvRX=&7?hz;Qo3)*g`IUBz>9HW>4Yzk_>X8Y|cpoDOp?<|H@wqsix8}P0?bO(-R2di(_v6zO*}IIIpUYDW!o)VxhvdnaLt&rk zaM_{+(SY~~|-c6ler^u$pz zB^yGmSFLKqHvz3Bg*WG`vK_%Q&$^*2Of063j5+f0HG`~&foXTCNdl!c$slORV3v)B zoQ5)J@hM~F!-k;Y-tN;YG#GlIE>ZnhG{NY8Bt7oTFHL&6WJGzEK+SM801f==(dQ>5 z>ED*?j;L6Cbfvd`OkJhgZ&p`Bf@QBFVPe(0DS9{WJ9Kx}>I}L7m!>_dps1*wk)A$; zA!lm3GI()uae{r-fl1(+229 zFapTnHgg?DkA7|xpA+fSRh#>`ldU?p>VQlc7$}o`oL-&T;jyN%jQVyq{Q$hf{;uaY zDHdn)kP&K6*e;Bp*@zX#D;K!~s8n!}4DfG1?|6R@A@a z%4CI_&f59(W9C?Ce{h|tbi`Y25Ki&tq4U*}Ri_G}`T1}+RiifSzIFqi;D8K%yqc4R zrboHq7>>?oXX+t>oL&mTL{=cN-RjZd4_Gq&@V#Eoh)K&hJ8EG##UCe?VXsHD2dPT+ zQG(vCxYX$w{f*<%9w(=ds?GGEJ}joMPFh6da{aq=CZO zv1Q&3a{nC9*B1v5-(O3E(#L`#>p;wEJfw8_{Oc4|L;MjCtVBnj#Cm%k_<*@czsX!z z$LmG@A8_jje_U%JyS0A$?|)ehA6It*qE7_BQ>;4oz1ujGzB5G$wL6moy7W3d*GF@BhHFKXp3R6n8}y<-9_~t$dNFCCm$aYf&n%*|tJ~g` zkn5GflO_6EY;$~8Nq7!sxm%cdgil$$vBDe=LGUPoVNdkQoc0`V_qp604rxk1{y(@- z8dB~P)28Zx;@z;MwJiL#nFGSt;n$`hbRj(rR|dC>rwDUy^|$W>zvzbTUN`=LEBy^} z44L=?Y7{Ph8e+mGuYw4!S8(`*g5gWL{PY{1IJ_8t%%1M5N6dc9Pu-(WRaG<9(jL*X zwIGzpnB{wa-I|=N`DRnf-XwK0NZ(blW#%BPE%BrpE74+{_ti1dRNPpPo=ofjJ<6*D zWrRc+0riT#_Pl#l`A;`lvPzPENsWxx!6Dn4TZmA zdnB27Nz(DOS^9`HVns*z01Pq~4f-E!ePvYC-5c%DDP7VX(%s$NE!`bbQbQvlAfU8> zNT+nSBHi5~UB0B`J^b(ecv*`NIt%!nnRA}ApV)g(rPD7XUf8afdy@~(KMfsRsr>1( zRZm0=LCAgZLAzZdtkNqTfFXJsmF7Q&PPS4Kuwk2bs%UY6Fu*SvuiJL z_#QG|c2{Pv`EV@MKG+d+ow7={l*;_l=dcbtS2|9m0|%rOGL32A{@*+o5kZM*o~W zeUOe`su#F5d%jEalRD^RiZdfRR%;`O;0iWBJpT))O*Zlyf)jzwcku+Mmla648Tq4= zg_U&Z)t@4nrxcWwYLDNgnVSxIa_}LuJl&+P`=beV^Enla1g(b>)MtXlc zD?}6f$2x}MU=SRKA6x)4LI}kU!*>7!JMZ7BwXNA=(Q?jp#>Dj2bTT#jD7c{?W}qk6 ze|^~7P0Ooo`~z^KXIOEB1xiZ}fI(&`tpjWKjk#J(xoY9fZ|3xFad;GqMY+#PTa2}@ z1J_?myPf$5;O{L4$Y%D~6+dByG=U(rc<60kiPGSuNI(#J#%A~ds@OM&%@$|^E5Z-1G`TNfn8$4DFeH;i`O%(5! zZQmV)sRzfI+-;eJY~u%2M_X>t9#1k z&wA=ET)UIjR*jMnpb%%#z@f?b^5xHz8((kD|D016{2VGpJ6Zpz(#icx z-=&BdA?l9=))vww1XBWTRIkiFMM|vT*$+8tuBSg8q>G5ag(?k%TFc>v=g6O^rwh1m z<~*vJU2YEjh4K97o&4b@v`8{ZQxvE5@nS66^iU^qH7bf9=WC#|Pa`#@Xl~$Evca)nmxtic0R^PfcQSJRzu({6o7g|1?hW7&tX_S~YRiFeAa~E# zb^JUhOY?lhpjo#7r~@c!J8fwnj5 z)%cW`!IS+d@|8n8;io8d9<-j!`&VtR28))Cbj)Dg&=`4aU< z7;*zG|D@ak5JZ|;L@KLfV`pcqwp)DNnhY{I$UD^_p}E}4Aav0`6sQMyBY3Z08~*lKkxZs77`1)JB#9M?fPipU-0o(( zy|OZATLbT#u!Bp@N5kI*kJ;IVGym!+yhU4%l4aqpV=eIfd&;M}oW_;C?dK<-8l|dq z#+XYV4s~pqv2ja5vf5t$-7@T)hr0-W8h9>_fzguz^zAx zgygwod&m->+7plUI(jUgQY@15_mLZBLjy~MCymBqes9@AS~mLJqfv6@;VXN!h_9$` zlN;CurO-dhaf`iq62Gg^tfx4(9r|@cMUV-PploMmPDX zyx+HWd!imB4+6Tam{dqz5C1zDD-o=rZpLJ)C}FoU*wG0Em@v|~&jx@V~HDbQ|6!@|O@E!9{^hj7&GW{+p*Xv5zR|$eo|5 zfh@?XXji2r811Mu~~pfD?(^J>AYGi zPYhVkkz`0sWVztCS{><+pY3!zznk05x)QeF;ba@t#2cvm>osXAZ*}XEST^%XliNYd z$Zpa?+vRn}UuZuPbF|r?Gz+YdD*$5ty$6u~aaoDTl;#!xZ`h5399O(fb+~i-kft8} zKW*AF1OeUA(_ca`ZM=o+%t;1eH_*flIr?)H!}bF@kp^CGtI@=M`_(K-Fs5MjnpB|q zBq0-VdxxNo(1V z++6!+2`}|fbviNB?&*zrp$C#Q+*h#O?_SW?bdfj)q)07C2_kWGbJHeEkbNOb;ueaT z6A6`g+xK?m0~z(^bE7+(&*a2}1f(1Kd~f!%<7RF7Tl%L3S_BA~>;?qX1|C&)coFqi zwU<3i;<)gi;5SGF6z{3*sh(ln2?sn}|HLq?jJO}DH5z4pJI*Q~s`~`ikXbpG6C0pM zTQrN&dVku636sYBmlOS+{pm_ecsm{ZSE$i{t3;71oRT>6PcYoWju^+{=l^ooJIlR` zI}+!;4D<2PZrVK-0F|YQSLuxl_;iY82a%>(2a(83B*G}ix--*|CE*-?U;^@GP5$EK zVCXn<8%(>^ArpiK=7ZJA=tjzlC_B~w$>QRo#|AFu+}$~Otaj$vyKs*F-io$z=op}} zoKHw&zK)l(!j;5=X@s}f+jJ3|FT_;)XBe1cvSDZOOx>(-LxnZi(Ak`x)#>N+7!k1E z8u{fDGouo@wOJg;@+`|G;%?)K>vuk1J()r5mYCs2{}h(fpvMb8CHjz1FpKAvP1+r3ZS8!?qyfa-|plBkXu@kzLdHIxX%_r8XxO&LCoV zQUMdWKfiH)^4~!8SL|Nfe@Jv9mtI2w_aY|oey`XFk?xQK-y6tJKyLfLQ6le>6f73_xOTQ#-qZaq)FwieLirRy_udBZe)BM6{E5f`Hm-qbm21;b6C;kY zgeo6r=c=~+?4|NYa3%uX*lgg&lGELkvj6w3hQ8=@-71o)# zIkw10giy=>+Z6tfc{38a`ft>!`1$rWW-wFkM1!LUbJTVh3mgj6!+yX5yiO;YUe3I0 z73&Im=+8M#wY%c3?f!ur;zqjHMMTlalO>E5t;j+?fd>xs z1c}KXiRB<73@SVwM|`Fayl4yuqq7j_Q59Mvwl~WCf3C0zpzSX+8Uro^+av!*Tllo} zLd<$x{^HYyCPopz;gSxbrjCO@N4t58f>w@JG->~9IchGp$~auF+=PgL;LCO*du|&p ztl4t7ex=dR7N_L@=nPk`_U|`Mw6-ad>d~H~dYnZr$NGF-_kY{X=>?qccU-JQdth}t zfd_o+b{}pG6^k#7tHAwEF68z5@C?vYv8%5C>eMuQz#Vq$SGHkFwB#w)FE{`+`4jA5 znn)jhl#?}2>#s`h-OO4edEiz1RzH;5LqHjST=x8vwz`mg7G?dFpY3Zry!yh53g`cC zLm7yunQjh8>sHSQd|QXuW8 zcT1(V=F4id3#|87kfhH!IUO%xI_)c)kI~g7QAj`zZ~D+pN5EWECOsq?=Aquvs974R znP$rUg6k5$KFY3}eW;F?Vi2BtChKdGth6+olr%fTY@pMya&2Bxl65j|fF>UPczOnG z!q1E{=zm=QeV&0f9mPj)3jlrsd_%(n9q5~Z_X1E|!UwH;52lMXO-w!l2_PW9gib0j z!RFwF2pXB)-QD5t>>=GuoW&OSYm9T9oX(_ zG~@>seNi2ZBh9ZN3r%jhqM_4lQw$*YmV9e!{8s@C@7zmtQ7kW=RlMSjldXHaf!ev0 zy!V@}KTi~;dWDHWh#-c4zq~>C=MNfxrLZ58Zv=xCAp<#l2<8oIXGW1VGt=wY2g^yk z)mM1rF~>OkdylKt>cP(a7x&B4Bee8@|K)hR*3p*1k=<~m|Dn${Nb5a2vvQFRyvaKD z9>F}_+n|B|o;oS%uma@N)LbHae;8<(cgUo_^HC?oCL>t!UX03F=M@|hJCL2AeSLA;)ivsWHYkWB zblBn?Dc+l7ccb6)u%lO~OdM#_+PQ&-=OA=wX>Dg`7xUYa_ttBp31W|HF#=uE;5L;Z zpa@at^rQ$$%sFA8|F{&3_E(~{7-Lr9{9v>riodCAChKMC|7>cT`7bQC;<6J3AW4Iz z?qR3~LC?iaHjVQgI|3MTR>L@Cjn)>EVgd;lJk6U!pz5stu>C_4Pq98g>11O=Vz%Na zdK?W!r=do6Zvh)3ro7GqS#K ziUQPVpSJIX2~SwZPn*;#xZPMyc&2HP8h$PWwoz`JB2xUZLNLyih3e^jX{y%FlfZzS z&(4%;rvco)4%5lzTmI=27E##n!K9f1FYCjVA&Db7!o+aSBf>fYbd%8I6=dn2uDZ@Y z21tb9IuZD|G0OTL@j5R6xl6N^f2W1%~KMjJ<+>uwt!3@&5Gc*#=5MpH^dkMrD;7d<%ClAHMPy3qG`{sEEKCo0vHE z!v|zWJk%FGu$h^>s#C7B9I+r`LUz*#r9vPpBlrCD_?W=*!cMy_lR0|jyDpGU|G}ra z1B(<&T5|YlqHvU3G_$C*q-Mgvm|IVty1;H~8}4M+h-;iG(L zhVH%{9kK2+PgPC&F@s^aJBnFK^|2^c+#!TZf5isin$;#8H>868i(u4(hxOO3|3}6i zKW{mgiMBp}Q-$k#I{oEU5P2YVcJi{>RiGPmw{Nu0Vol`duUkj+tE;P$68qO5WRq#9 zrl+wf+;Z+Y>F5xESd4)8A>K&uq4P&MxQ|gy>4w>Vd}0zQU18iax0`V>g3sV6bGDmv zJG_IddR>;0mDGl#zriKV);YaVoz}OO(X+PKm=BRC{ALpP8XmiOe{2AeMa-*M|1lx~ zs-ir$>q=g~3fXuB7lEtG#Xq#?C&<}9jv|!Z!mnyeH8rL-Pog1i0KG2lL?EByj3^tD zU*404=@!ORCHq)D0 z3Ykw|zRZQOWa|E2FaRH5d%H-}eH|l|77~Sg_=F;C%?Tf(Z~B%37Xh;I1DvE~>`pX@ z!ZFTQpbN&Mio3eq<~1m)J;P>E%_S&`{$LczC$9o<_^()&6Ca3SlEKm$!pu=D8c z8;qE>loi}vGd{${Njo@{et!Rkg98h&VaGsu=~=oA0dquuivdKK5i{q;$}sB(}h-lw0+kS8yyg;mSF_=s*{ z8EX$a*O==72A9DV9M*uswF)_xzH(4w&H95!=Q|U{$&J8pa~ec)YS;aqC{QL-TUOrQ z3K;`K&eoRx`nV-~ot`|xO`kRrfvmn8Z zhwF~nFlmrUYprSkEg3T;E*axg>bS|B+e@##vG>o&eC>x;-q*sU8QIKjOW)w@?!-*>Gv6xJm=Q;Q zgU(~X`3l;f$k%g%syR2VqCqJhJb_svW+@KGk6ZHz%rcq3K6e; z2Tn;ycM_F!*!9_ZHMSEOVDuKN<+0fz`PSV#IX%NP_VM9i>GjSalP(QbvK1e) z&8OIx5e+F^>u6gMQQsf6)?4^@t~30OhePFuhtTEwW-g<-Ws(RB&ettg369DMV$~yo z?F;i1yb}TCAMt)qN%?f+XcC#V?P} z@6=7aEm;q*KN7oa7s0(p5p9a6K0NdE3|wA0|=K0tw%D}e|c|( zu#bA=_XUDN-YM5dLR|5lvJu6mkCq{PHni|-Ow@6r5CS;HK?USMb{Z-U6n(|tTaqov<8;m|CC1JrMA{rHP@@I_#VIP5)sSGqiw!HRsQbM-3-9P{- zDJ5n4m=Xz+S%i&)6SlEou8*yE;J&dz;6Qxv6sS!g()L|hKC6IbAuB7lj|1J8PV_P$ zF?W4m(UsXvI{$k>{lUL;sU0ml=qv}s94Q2Q!^y=i#CK=}hC=cRX@c~)1?R!>*symG z4f5o!}0!}Kes&jN7*OjyR? z7xZ=|0=4WlpfLwze;ny!ULGBMwd4X?G(i!A@keTKtMRC|jnMspIwAlq*x*VN85#MT z^Ryp2vwV)R!{z_A()C~V;D>M{&>{Jfi{;G!D9CGt$?H!0=!)ymyq$agy|T-RX!MNp zc4;~nO$Gu1S|oV3i0-Ux_Y9|C%r00&SXg)g#lgLWZs`^H2BawlXYvdHsa&VsN+d`j z=f3~~&mCEUYT)`rs+6#Z#l$tg#b~Ouo`k%;Hv14n;M2$p2~=QFOa_!*1w}=VmM^`q zEpHRZMg0NI+dETd&ouq5*G2K)V*yXswyyX>)+IF?m!QS6E)3V>{dakaQa;Z|xxd~Q zu&dX9Oqf#n&DV)ON`Yh!<6QfjB5S>VL-~ss)k9D@RDzUE-+A|o{pf~v9$YtV);h7L za(x{91wKTC5-a)+HA&nuw_n!xcke5geSJ>Jg(v&E6T*P;khX|?tUr;1w0GwJ*xDOK`qFhh%U=D|c>mim>TkuIoT`cRm2cO{zp*S{p{20y z?un|kL#Pv|d$^{AGPpb%_SO6}-CVcWIC={g_)iPXC-g@1fhE1_<^62L^Y!?mGQ!o? zOrCb3mxF^X&v)y;mWx(Y&Ts2d@?)oZ!dnYQ$1$46$R!Hr{F6lIE4KQi+1`eFUNpnX zL5)%!A`WwiTmoqf$gp|$dSP!H2v0Ji%L_c9&&s)S+LWnJd{vdvYA#2NW^zH&RzC@k z8Xxx-n8achIt%_4zZ)}MIJ|!PnA!RndVKF@(or;MR>dGY*y`V=?uHZ1A5$ob-1iMu z9a{`?-lm#`dQPVbV~!Z|jIy4ySi|b_q<$+g6CKH;M|v9`6Prlx)oNtBV1f!BG1KjX-Yh)xs&RE@2z zt<5I@y^A_J?Z)=2V^_Sw5Ib8nV|j&ld91ae?CQUZpZM|(s;zuz`$hB}r}rQ4JDWz| zw0WHUeMBr6tW>FsR>ya#DyzCF*FA#L!sM>*HD;E!SB6fUxQp^`Xos!C<{43j64YgZ zX1wXp*jT5$J-?p)-Uzm7+9#|9vkCH{9tINU$+I$t&7XCAGx2y!tF%c!jh|TTo$WS# zA}S(zI^oZ&^&AOIvn@0~BqYdrdBv6Gf_)sUebF0z(zUv!{}!SGn76Rd(ItHNnDbFF7j*+0g@66cetTlW`DA_GcpBJ^8RY zB%|l>yM4t888}cB@iuK+Uehmnvowk3`OP94Hc+xqFhu|LrBeWjI?u606Q`b&`7gLz zzgMWMCpUDV0-XrwQn^W!h!Ci~v$IYhubL08A434vEn^u&m!ti;G0g13!a^WdicES&3_f$81rnskWPN%1Y4X z3ZHu7PY(1Z2k6@R*iv?vfyr@M?u9J=`zL=<|-`Og zA*n0z$B#js*F|!v1?yHc(rsbvvP<+j^A1ic4g=WV`~3NSra3;ewvzSS%U2tGOG1_o zgQt+9*G9a(Ct{zSF*znCTwIFvPOOF!j)bz#E-};->ncnVR+VuMA%_^jE%k!s} zyt#-yGd55p?u01Ua6u`yW5VJHO)786XUdmlKz3i($jIYw?k}EMBx)3tF~@7GVQo;O zU1@D@WSLp8&X%hGFDRcSEJ9ojt2HfH7O+Le?44)q%d;C$kTuG7*ElTIn)>%kPGdMH zAKMrbE)15F2Y0xuNrbos1Saw|RMlh7&i0$K>j)E+)pfEsG$$xcy`*tH0ks97%PPwm zKH|3oByk$i{Ucd?yH73Ca;tm4op(?tHxDE3?c$;Pt(&jI`-#zz!THk>S}XP`bu z^DoFvC{z&jDV=)+u?J!blUwEx=(Mb)=JxVC@zV4O8t7J|8IZvf%AqTCS@efok~kg` zmw6*vsp|OIC%>gn5hgcl_-^7y7!K$$V%oP(5XTkgd&Cgs@U7$M{XQMNm*HOv9YKixd%{^l7)p`9)_<{TRH2IL9)H63v3fTIFyz@u2PVJ0-H)F`A*TuJSV+#yudyn|PNw9eBg|o(5T_Q#@#cGk%^|8FBVi#TrMW9L> z8xhGVWronT{zM>UW{ms3X73oLhBR7|>Cr>_SuuU;%;+*!S-PQ!po`)j?Oz(|!&4cB zSRj#nA~_Igd{M;!BB*hIEs+OA;7iKO`>s!xp&pxIQ2Lsc_x`!~h94R_MeQ)XG8vxF zH~aLgspjqgI#~)85}$X7^~zzc`marQ2EEVy{sJ|@JF}F3*&();4A%WsNHmO2?>|&; zk7Z>EB!P~bKNM1~9^{s@CLH9W9o6k=m*z^PX92^lH?Yp2dPj2uOp@fxIOyZ@QmX#jKX#0H3#ngoB zL|*EG;b~}eX>%l!kM;B@*&ynLolRfxg=XU$8YB^sCr%#pSy;#aW*vhYt_}A610<_s zfDkVw@M)lti?2~e1e~(pLqlPpe4N2;_i!je^u@#I&FpU?;h)Nmd|5ePqX%a^f)zT{ zmUj~8Sw!jhe1=MbrO%p!7j{Y%I)keQ%`KJKbaStZJ;=q)0!wf+{JMLO$BBPI>Ca^k zOg+L`vKw8RUjO`?oU-ul8uIdNeC9Y|siBNjEgy_rL@lKXu*q;1R~qG2P%-dHrGsUu z{0DAi4Dz0Dx5vJU#udmXzF10Z4udGqt$f?Cf|@9KjLZ;l#G}OVFMa%NvsYPdY&D+ue^Q37O%ds0 zPaJwKDOC=>u1^PQ-hF~&6x;`T5Wm-_pTGN*yR_L86)TNf-j|9ZCzZPg?ZU$|h1bxz zG4PQ-!3nFM{Zzl7-&UCXvoDxTiT#=s5P(L#}#NwMY(CvbS*k=~C z`k=Taun4+;+kdN_(y3dwbJ!a7-_X(>SIVG}qJ@*Dj^6ut-oFi;y)%-bF+Z>^o`Sm! zqbe`zsDfDSQLCW8!>;ox&v@f|%PgIR8%W-?;H2D}gx5&$US|t`NGY_#A|wbuogDnl zG}hO1AwR)d#ykVl&S!z5XfyJJ9q9gdOO{l?JuibrN=nN8c!6_gZ;wVuh#1&M2)x@x zPoNM_0ImY?NJz#x(Tjn+GOLO;nO?PT$rQfz9YMi=mqGhML)^>H9fvOEgfmM8-N|yK zP`BZIsfktH%0XSJVzsc>o9A(|f&VVhTZc7~K4ItgtXdYdq93M+3{4)o=r5!hFE}S0 zX5bM*PbSv54HK-&oEiudvY7>%&q|&hC=h>X9N9^?4t(Sjg%LsAcnz67t-oTjz|%MD zrx45nU3uL51nIO1`(sgGWO>wg6LdVNDcseeQbiD1tp$HiLSnCvqY;xO(-KtLlstLc zIcuP+w9w#02r<7s-~13C-w)JXlG4(mLAf-ZT$I?eg_Krt3&^-m*z=4=O$U<#%M%w&6!Z@XiKwrj9U4ZuuOJL#XaELj0F=c>y?MxKf`gI{ zSXi!mC?F?Ft9g)P5Ryy#X%Nw0lOaW_zyMDUou6qJx`Ve~EV>_On{~`$z%>NVB&;_v zH#1{?w$=ge1|YR6qoRWTqBsZ681R&^1VXGy!+*>T32dZ>NFu|a;*L&EFa4(UbRxj+ zm*~|kvgi&Rr1+&dpVveJ?J3at4F_~Kls6-AvZB=i>CE1n&E;<~s`AYO4Vp3O7&D{6 z{ruCjW0sdI5`=V|-GyyICW-bn1=$zpWm|>unaL-w+)+}e2Oy}tWS#8z%CH^>uE*~C zqY5Qj;?kW=Urj}!Jr|FK)Y+s$j9PC@Tyf3Cr78RySPsF9%w2crBAMOwx4i#gTV?5} z-q7M80)-s46PV#2`>&VbVlm!&I~ywJPakl2?Q77|(r&D@yc6)+#{$WVTq5~ug&?Vr z7cwBUDkvyO`1uI{qX=-Mk-ykXRvPpF{^P08+-g3<`qvQbjoo$!rhiXUvCXOCXPRcq8_ zo>PBri*X(=kA==1$7TFcXxI?if{!PEDi>YVcy`DHL=0+V|NO5{K+_Y|!-A7&Jpj)j z;b-nZ)0S2c!X5qf;l%73FoOZz)hM-MX+1pxEiEk#Ev+z+!%5_8n9r1Gj@lN3#zD5Q zFUI8L1gu`5L;qksz`6x^;Aev+B2lJ|ZbM1@C2aJFT4=KVx;v(dbngMdk+I z4MGbZRp_~eB-|SxY`&jsN#W5iNk^n(fJz@6XNGxPISK#UAXOi3FWz6M&%K>0BWAPGvYWK1|Qk1hC@NC)6pJTWgS zY9uVEJ4?TRFPNO1%mFmaFrY?^VR*Ju55jV-zi0nc3)V2k;*5oRJ7tpvLCOCY(D~l! zlCe(+s1>->mfHY04trNbhaRhiga8}(F@9RsCLr6JkOH6l&%xi}H%>W@bhF;C{$yc( zbu?Whdrd%^ibFBGZfczK>2Ga#6}<6-fLi4ZK6195Dn3>@SCe73w64QZnWtO9c< z$-ahg@bcmVA$-~KucDgT+Tl6EzG2(Vw#EFAmw?Z}fCTbNB4HmEJX8cwNlgq3g9X6U z9Mq#nrK)HowRv{x(b1ivK5>T8GZi!M0}PqP3wlA*PnuA)58oI8Xh|Qn1?EEf>Jtzq=N=u=(CEd+mAC98ptS zTa-U&LF^J`(JX$wTjgdNsfg9TQ1Mk74ldQP4R*=?vRwAlPkchO$0QcpuyKxiEYg`h z0t=Yi5oiP3%RXt9qcwLQg6Qz*Y~ENwLoHsb91CL%YPK`|=d~#4EZTyGngOeQXA-BO z%W?gO!V#k`C!G_cp2E5uXs^i1$ssyAI@Sc;`+!x%lM3Se?X|4v?Ug!S@1pQ*X#_u6(F2m~Y=@sewH5w3e)%f>EJ-A0?V#=Bp z2dg**qOIvYFbM_vYWSZ|un83p)7BcCZX)(WrMz^M!#Mw`e`UiRFuD7iQ~c;LNxm5e zRSWu7$A8GPkY4xNNE%nJ7*k$}ha$m5M>njJ!B>(=dn@V*7n`8u*V99vfQ~!*rylHP zu?u2Gnt@2q*;FU8P93KI{Rt!{JW5EuQ1aaYb;Ro`oSF*0IY--s8p*1x%w$rKN zRC=TGzT|8pFc4ZJr3^n;0M74l3~Q z@F3!}jQD(Q{+Cl$UY_3$4>4qaf8U4VY)w>fZ-jJy^Swnp;+}1GH$=BTJy;ZRk}DH7 zM4AD0oI>2Ve!A+H(schT8t$TGDPvzO+)1t_AQ$9xG(6`jR=@b4@7px@t8^%gXcZ>9 zh9EjK4`=*3%ZG?Xot@&{l37R;>@88?FGD*6RP%IUmmnOvhNELK`%B_@6_VIa6j2xm z9dF?+w=bH2dwMD-250`HfT<@c5}Kd*FYhplzFha)a|<3`UJD>-wLe*a1Uce;4RExC zwKeSvTm?9lhKFZ{eGnE3L8Q0aa(*v1bjY^3@vnd=b&5jNvb8{7#aD-SE`$z}M=m-|5nDfaV!<(37rOpVLDOZ20M;y2Z`0yPEH(o#i< z;8@dIcsBG`I+ z^Io5>qJ6OeW(&w5zEFybufH+*AkIEP^66Jr=5?-k{6|4(!QgMF>rXwKqt-9iUsNBI z$BD3DD*A5qy@85qOG^vzVUd5wn*6dWYbWfXJPWlp%5^?3T+IY-<8)QB&fg=}d~MmE zkw6rVx>O{~!XhD;n+WXh9umKP)H2m}ny;ASWvjhuFQsw&!bED<@(~>kBU9*`jY4Ik z;{4@sBMozT*%66g80A)LM7bNeu)C6upN6knwsJtororm{_>-B~1BEdp9wwJrX&U;a z(R7~UFq0Vg&1toH;kvSglNH~9epYX@Db1v)kfC*^)<)|H%4m7p<3|pV3(i+P^e0&m zk%GKdCmIIDNwoSHw@+F7ZXzq$IRs#2DIx`VnQb4*V zW(IsYmg!%$G`ijNV>h0((fzVs5w{9_>-zNbq|I~eD^4*=i!IbX7v?d5KCz*47gX8! zo-XI}pN;gqqN7T5QlhRq82?taL-cZcXpt!8HaKTZANX z(=v-rNvbAKRH1EtXDJLgAs+dy@X%e?sO&EW39o^#1DI~&y3Z>E;&1bqYWqgCv~YKQsMZa6un05ehwC*5Ru;-8zpyO$mpEtC-n$_f`N`S5nr1 z?NylE@^{WmBI#zKel}_SSsv4eztutFU-V~Z;UJPJJN=SDQMA8gu03~lTqTL(7uo+i zJMvx<@e(6NSmrK_?X)ogZ}8B-)eslXF(I( z!ZU0*IjyqSlM%Y3t*3ZCK0E|||NcFMR#8S?{w0?Kab%$*z_-q!tPV&HfCO>gMlB?R z7wjZraf;uFkQE_oV(M@j2^{NU0n9ktfm)WA+t6W}9@70?F$Ig9d`;!<36iqtms*rc zCP(BSK6zsJK2M80c~;mV8`@*NWX-`*s4CO}1MvZUsU~6m=S$vj|EqC@j}-XCq~9A? z^(j*bdioD}U4%vYC%%uIHdkS7(?G=Sc-G+z|yBOh! zdSXky08i7EkOjc{6EyS)?+MkdE@H@t7Fclsz_Ia8tJ$6*CxWUVstge&f(-YGRY&&? zEd#?g!1!R$i~@w%SCLYoLqken%oR(n0Q)7=v9z=-4zgrSb~Gh{>t-KSKMkQB+-=~5 z2+cg~Aa@0KJl&4otow_~CXpr6L|t`zNonF?6Oa;dyPDr!ZT7(2U;n}X>g>FuA6G~J ztKC8UG#{!OkVrwkR2<+arD9;|Wvw7(t>CVo>H3clD;D&z@8<*=@VLxYL{TOeuqbL@p{wTgoh89_ru>h*{u6vcpm;8gEwmp1tOm z%g;xr>(pSH2N+txsBrj8RLuA&SI{Ql>^f#cc!vDG?T{~Vs_kFRt1c-)_g+<1~ zg36lfHSmH!4(kSHBbkpRIJC{ZF}UJHxlevqoUznMzVT63*Ch{>s?##|3L2La@iU5| ztv@eC1KaJ#Cm+yc5jzI^L(P(!&Td=k?i02vY;rGC7YraD5;c5FU7gEj?O(M%Y(f7+ zUG9W~{TxdoXC1Gko8GPoPR~R>F(TaDTO;?o-=CjG)~>G0(ju$b*RQVMV4Q0j zREB-Al1ZczFmT7aQoS-4#Gopp^h!L9TJt!_*$o@~{3;0ts-6$qFhe zGB>BIRFYu~jBKnctE~9}1hVyAqlr+?+TFPhI4)TgKZ7QZa2-z3l(uZaz@i<6r=QAy z{Av1X;xq80XN(BeV+c15olcbgb(<=#A{EgkXhg&RY}?*wbV}y(P?2AgPmn!*kz#1p z`Z^rM+cVl9GJM2=e9kn=y1dEV3%S)8J>q8Yx{Gr#{NPKs{p9rgUN(E6!Vp^b;2+4m z?%#TSkf^t(#j{#nXR;guDJ*k(t0QM^prGX~Jrx;;-#|E2cF62VQvVWM)$BMjMr^-W zA;3~Gh2=5DqU*fb0Yu*qV6gC%6FYxZIvln@q%?8UjpH4uv59VbU0u9Bhv*_zlzDOg zhQ>weZV(P_J;j?LX5U{wp##?SO<(fuR9q5RzBy!~qZG};ypgpJ^fF)%@A=N3q2iA_ z%zJ?T>lb}a=cG9g37)4>mDcZY*wp`OAcazuAa}PWuRy)AtEmt?E7$*8^4}h3tg0e` zB@yx3J~rnEPM&sbFy~L#3rzbu{^s&ilm(s^P^g8{`!`kRy~`l)h2m~eLVoYGKU3X0 zwn9JuN%Og7;FOR-?{T3={OhaO2YwE2QbYR(w}?eday~CcoXN{_Jl5^XBn({U?AXZ=G=*Zs~80$Fj*trN)hZO-X1Bx_OHyz zU1LGSEPC;mOqujq+v8HCKCHz<3%}iHRiB+&!@!St^pxjonz~N!;>x&MN^&3|yd)zZ z;^hh5`jc~;@y7Su=9kgDOa|vVi4NKpqjtwy3+sa#5ozXyI-%52iMb2&L52Xk_-JiDycB#UzjW2*Rl54 zxvW0%7BR8fHZq$(y4F|y#vAcB?EDN$3gOJz2^@+{yF)k-`F?T!_r2dM(t#gM;*VoX zY7^^`8|{ z)+?W%<#)WgGV1to@OH59rT6#wgcqY@u>L6AjvzZ6o*4^+-27ljA!%aF?*Uqg@9?6D z0Y*{2#~1n2%E`h>C`g#+38l}=NQI^Lz@R$Gzq5Cj$QBMF{#b;V(_^iBSO@wgPE%Q4 z5cf?jT_%YAm7KJqgZD?XB!Xf5uB(ZY;Y|zPj&ey?92`M~qz!Su!#-Wy&s>WN2TES( zLFB5g1r7b-+T%f22VfBCLaltz;;@$$giGXb4l2ayb~+!4n01yC z;;UnZ1FqoY5ZINKE|hLV2$Eoe(|qPAykrvKgWDEmQ%^$+iz{;m!~UpvUwvj43wR2( zR4jK-;qVe7d&yJ4A4n6HmzM|Sb#jf;>@1U@$zs;B@^X)z58kRNz^sZ|L}aDq&Vef* z7~1CNpWeeTzj>pfrw0`0kU)W?xmlq9zXq!Z0stu)85u*2D&=y;f{bRPd(2;K6*G^r zi=p4YQ_|7>r1_jf^7)_Ra7GX7cHIU~L=?cCslyj1jLKYSbfJoV{<2(Njaxm`6 z$iyTmD~kY-Nz$iJn>8#&?00xhERm7WNRF&gpN!6u5@aw31d-KLP*ZCx?|9qn4kIfo z`+H=h{>_C0Cd=>^aIj#kE5+0{Hbw(3#kkwKVk=WqTENZ;hjc))c$$in6Pt>PitUD* z_+!#AyIm@!Vy&uoE%; zQ*(|tAABZ$jcs=0Uu~&92jh7@V$;ag3p@dv!u&~lz~on+0*wS(Hq&JW0^e?6y%woe>Q#pQ6|5i3*uK1~p@9Vp2R8|f55R9O0C@zMKxATKa?Scq6eX#t ziH(Yi3V{I8NNFuC9Q#b4LW^d0`^aZ#jNr+_NY(RyGJ3{qXrJ^hb>%y*ofr^2gN=+?6da9(d z(p!OmVEPLYP=^Gjy>0|E;A5XER0bNVFJ2G8HqQNEiVpZ=e_QOgq8eRVG6FJbRHCa( z@j-W&4$LQV^eK{+dLXaIb8H|6dx27MipdZFk!~hK9UYwwuz`Tv2zV>$5m^k<2(U?kgj4O*F?e7s5|SgWx_A0h+$=~+=4ju%P0~Hyb2>%a`95w= zr}6rVU0gQ}{$1UhqQ$0&qBw2r3g6iE% zy%Q`QIGD~^UOTm6Ldp#RMW;V(G)y@yySRri#mK}Y2Q&~B=@R;0SS3IrB#fn>k&R8x z+q+@55f}|bL`E8Z(g8aebTy;HkuWWf<|=_ND&!@)fStb#r9-o`%>$*3ot+(Eh761~ zkpRx_2P2u84P0Q<9_+OI{GN`ztZjkR)Kp4-enQax3|kER_nJ3rwAt$b$MfC07ma2< zK}c>}@U@3vDf+>F>OOsX$Cx9E%=3bWAp-hGiO!qLfJwj^wxL0NC9sXMSg5i1 z@bM$q*T4lnV$wb*ayg@jPA(`&6uf;-vUrUkb_oPrS1i+7t4}$pvOKYi!p9*-YzD%? z)!D`Oz)XlgKU}1I4Z2>;U{L?c0!AMz#8Db4#DWa9ea@R~;xm|2q5Xl&Jt4gOya&Pl zdy|Xz!XH>>AbhaR4dHA(l@LDE?eln!q2Yg*0-#NuS2Fi`wUDuFasK5L$p`K3?O6eR zz88b*rFCF@D0U*r;%+jkLH0;aKoA82&@$aC51lm8y7Y9GevG@;R-x*Z**pLH{0(eu z?3Z4_-Sr9dh$}O`$e{^{xwiVACEVWL?grRWQE;LRTXUtRrAb%M3!e--^A$8VF91J= zn4#51e{Q7kj5_+buT*|w%;;`pRX@`h4kc66Di!4*^qhtwH!JT_Oao3Dgh3)St2-`o zp#nVig7u;Pi?ud){LlAeN(C8$Ofe60eIq}9ML{#8&Ym9ov$x4)2>wDEVThJ{(kxj* zTzdUh7|`Q1YWJ+K;J+*ef*}RcD{zeA!BGLTm(2|(EC0I)D?fa1Z(mVD112PTT|g!W z@XqE=7p$zTCX3Z`3BGG;Xh0IS%{hpUPnEIYad2^s?KK;@|C{TbW48=A1`RQED1{j5 z!NCDWI0_zWWZR?yYeG(1nw{(r2q}_MQm`Yo+`zXr3XIflfi1|&LxpCsz( zM%QHQ?HK_rI&baeK3@9UwvyIYiy6p)Y-6h%Z- zx=W;y2Js@@h=_=kfQm?WcZnb&(hUkC-3`AzpYQwU>*M32!^}8y?>YPIz4lsbAGZ(* z^}GX3b}jU})V&s>CC~r6UN5%V=@7gRyE-N0Mmn@jY_W~ynF`5P0G0>sc_!dI>|ltVr&lpEyT=kHW^6tu4fLB8hA|psH0+ zr5v_YtP=O5fEi;ah<2f|-w4nZ(l8WYRN+dl$@8uD8EGuNu&rq^*S^W~T^W#Ij7@S?-Jnqno-)prLeQ8FYUD^*BXN}bj3L@``8-nixB$R^a&Pj)9`y@$$`X# zWInBFx34cK=;dmGbO*#H-@3Y94%h^N%E{Q66)hX0rv6oM)9e!mxqtYd&D925=dh+E zX|A_v_Ws{VN{TL9>gNwXKUu3pb{1mgpMidW&wDPIPQpW?q-Zv@GW{zrzWLGMMqvuO z&bM1?yQW#?&+P9RJsu)UZ+MO%p+ly6usYIF4M96SvlV}FXGKs%bOqmxNKEHmS2Hy9 z{$fIzPQm54(1$A|Pf7skezT?Mwd`seL3^Br`WvyVa)em}VQ=10yDk63flLUXDjFIZ zDd3j?fD=N-w*KZOjI0N$H7W4mA?5(t7BxF!HA<-p-CU$p`@!SKLv>-jHsauYgG4yyHKPkC50I za>L;dDXX|UyIv1QQ5i`e9f7HYKLs4+8nB#NN0x`5qVB@Aye62GY*x8Xln+cAIMcVc zx3#a|5-gH>H)M-kLyfM90rLv2x-jk#lL=?vj0@Xb=eJks-@o~Byd1p zSMPhE3YP`uUM6SxzzI*m%1R133h<>v%`t&JoduJ1(X12j90qbpTzYzJf4^qpV*N0AM4;byvv{{xC5B+i{ebjF zoT+~*-2jWYJ1xi2vg-jI753KAe=>8mG5q)3mQ{piqNQ|9xd{J@v%^1lcW1mmwnkFr z<2d0Zk9WLyjbU$G#VMJ~A|7oL>@tDe66`hBdBCT^FlFy3(G0DZrU&UjRZ{^*K#kin zW~xRgRElt&&?^v<8W@T?k&R=%U4-9yc5;vfRYg}<7rH%+=HGq%$PJQ0Qz(c8%}-g7 zBiuGin1VV0lYFg7u0WR=o~l825DpnTD65u>XSwk)A-6BTYb%q!1-A#w3@|7eqdOLszBS))$a!`k zc$in3-#*sMEpR^RSsEO<*rn1QyN! z_N+CkyT0Fu)8Fa_>-IC0B+){JP&!n|os9y6AAMz#;y%O51kb1&tP^nN(Kf7Qdgt!PG4Y9 zCBoPt%Yj-?r^F;DSPHMw(`T65;VTYvwh*I$UNXx3+P*NF$8ywE*dINN5DQkxC#|RM ze!6elA?E_B*l+ESaY(kHHvP%>{W}ZjUNUtGjkV(gas}(FCAa#!)7x-VZpOTQ=q6-{ zWC)iUf+&2v+Uw8BE$N@9zgxsrU@T+$iTtgUchJf@0@5U zq-Re6#97p?(0AHfzT=CQXTTH(V07?D*%O3;6ko=J7@Wi$|12%Za1*0`c;~{mQjOl0eH8+)hmIdaPnZo{X%J^H9dwg^ zx;3@0j^!;ZB#02ylhUJ97;EW2R+(%y* z$7yJvl(y&Cy7WuGXE@2c?{C8E3`qm+M+zpUiIn`|w*top8%~nxk06XiL`KG?rL8~s zI9lzx#2(-EUn1C|e(w?$@Bz&JTmW3)&fgwt@RRba3qO17U5E46gH|p*ZbX6`9mosGRwlO_rg;1J#v0*D}#x|a$yCumMv8hnX zof@s6*K_zamYm!x-Dlf>I&-B@_DrfcJt@69pS|L5AzvG0YU-ZdQSfVkuZ!h?a1)dG zGr$c!T^=YMOyXaETCV^5&mX;{?A3fyo!lYxFgI-|Fq zqk-x~IYYC|cI_q{h8n<_Eh{Ud#lTBT^MryIP8pa+@3Z$W7-p~}TD-<@t*mlfkADdf zvG0S`cAB^f_X(LAQp89r)%o;&OvB!8T?_wO4bkTe6AZ%zQnRpqCZgFm*l3PVvCK|M zW^s$JBI zu=$bjq8?7odsrsP^O>P118{YO^JT4N4;h)C=$AGs1DLPK8I{Y#<%pZZH z=>MyvNUKPWpM5)Xh^V56x$_zG_v^ietx464VmoEE#SXN2nJxa z*F+ExTk*qzM*{z|EDTxv*@uP&F*bB`NOpCP!kULkzM^~jZcFZ+)>p#0v*+-zz2`_m6X+3^Ufhvr;&0JTeLcKa23Gg}vCCSt(#w|*>^39% z6G|I%Jli_S=QMM|7$EgiE5g#M!G@2GzG|RSK>y{xFCr~xXnl;liECQY6Mv0GpmS2a z+Wqa_R+o_P1O2Jl0cc{NFSJr;eDGk|I5kGyOnS$z6eSx;(X+}IPF#PD_QB5bt%Gb- zJRRTG+06CcEdvNbEVB{n8@49#iZ=~ z(d@E%=XdXORs*8`Ge1ro{jm<|SW9R&`3T=JyXrB^y}M)PC`v#@H0l0I(O5YW^~IoB z=$qX@Vw}jrx9XC`#tT_5QkiE&iVwNh)1>iTC^%w{U$Z}@hi|tj_8ij`+n?briIa7I zm0(<(*mdGE;!QW9h(Z>hH_ZinwZVJCglFUxe);1mfe2Ri9p{rO;xE*qc{6^L*#3y& z1luw}9DJMqU8PfERa7Y|uLS>CNe~aS$skF*N1zYWDOG%7DU!6yoc3z+tGr_{^u;D^ zA~SFWcQq-LWX#{-=H;#RU7ltF?)W$8JA!#hQ4o#{&6}?1q$GuXB04?7L2&zD{BEb5ftv^G#{vP9x!`~?k z)}-|GsUoLE4TR8R^Ps9!vhP&L)XjtP$fIhvtO91vm13i5) zd)^IWc7FGI?yN;6Ci|~YBfKoQUEDm10ob8Xxk7#<(^OI?^pcw=ZcgSaJ3eIPF4CzC zFWx)o)||k_EsBJL-F~Klg}6026!Or4LKAtDo-cxI*S&bl=LBeTA$6Qy?h9=v0*dN8}?n6i-LTMYKzM`f>hF`47jF z{mO}?0;fMPi$0<$Kb@#5y5C5gUE@Adw6}Lj_&ol)(SNI0SFv!!0>C^QTU$(2TSo^P zE@Th$NZQoLKC>_;-<)2}WpN`8n01pTMPWXfWMn>TG>H#n^Hl<|e8iv)>g}3yv@$0# z0xQq(ZP6vF3dboz@M1urv)eBZvc@Mo%`i7H{A*E@PfixvpKdS4;`zDPKoKh|pm4Uj zL-63@s38@!<- z_*>5BGUtsm*(>w%7tyas7&)IH*BHf~h&szcjad2E%qW>2IyJbHT5?#^Z)8IDrU zZ>jtctj=6j5&Uqs_$|};-ir*_Uzuhl)`Jm|1CyS9MBoKEOcWL9F8=~?*$=9oVgi+*tk75b_*sZk`xeM{rpdpMj%K|O&tV`SK$4k zP$1Yrs}xL_zdpfR^HsURjPcMBKjPR5nDislk6zijQ;h&XdMNo{1Pd^NYZJvFhAaLf z8;HW|%+S=R^A5vs?jy!QA-4(Hg*nFWSn_l_36s8Af5YBGLn!^*zj9OTt;t{u&}TufGdg}CL~}qe9EP^yI##xAq0Gw@=+fKR1{~^@#yUf zZ1!_x$)?j^@+NLLe+(AD6~?IZLx}uUP}}xQ=f2Z_`IV<`tG@|F>i0CXz8IA|&2`FLPV=L$DCotm za2R;>-w}c|?-9#$G$)q}(_$V@3YKV59=c#he^kI^_Fr=Sq3fQZ(l)%b#S|4gK6b`} z%J8TN#nOHr*y1 z%QL~yPW9lxBq7o9y|(^IAr8rxTq0bR^5aRK?8^T_u?c1s>nWk54L#}7HD<&-0sC{? z>#EO01i`|oM$f;m=26bnL=OHokvd!xx_jYKbabb&>GP@U=VP+z#t#=W(lB*Bg&6;% zLRs`>G_62U>DJt}NChWLf0+Z3LmO1|vP)vue4v>1bFblLpMa6n(|v0HVpNNL#YkZ6 zo06XrZ4b1~OMf*kMXx_P%I!h+_KrLHc>ytYpHmsGdc8IO1t(Pc^{FS zO()rK67zD%3{o)3|6(q@wvIfcWuA+bypDWek+j`w}&Zv`rVKo{L)#9zS8bn3A!( zl*Dt=AVkh?X3~-wf^yUx`1;|of$dPuW4m0Ta$6dK1iJirE#v%%d|HZ#;jfo(<6jlv z`$kELAH;3hXNe^9bgdpVAU!SINvjh*zmHzrIBJ^oT~BiDOY(hjaD7R(55sMtemn2+ zW9zfGItDTx&p#|oj0feZcLbQJ+AF1F2eOA1|K?mhF}aOl*~}VUA^8#?4QY4-ZeHETl0@v3|X2{aTCzjw~5;!~rIO)BEFRkZiGWbu^^*rOV4Bt80b^29dkFZjH82K4~rgaq3z;=k{sM zUqG_b87|!Y&F6w}HUlaNL&`IzM=SnZGdkHnkny^g`z8)Ydg+Sl)RE@jmDF!zrTf8@ z&~t>)=&zN-yvsz}w*$a9OtrIl`m`BJQxVWtQj!SSEX|wyIs*u%2}DkXPg*2MPUVp5PfmvRU6fk?}v6tFtpAjQ$sB#83(@E+XY(A{~UyffRS?Q4+0*zRAD%5v}Z_ zsaD*A0*SE4e0uoU7REPKvjz?g)oGwUgd?%6vXV)Pb_cm(>%<>efFe1y=Ih9{%TsKP?z7W4?<*%ZvotFCLzR8$LEnpp#X zi}U&Sm`R89T#Q>Y+P`J}XyLlu#(wiVyHUIOi!yS8?U(h+F*novTpl?nzxYH$A&M*c zDUzI91ge!H6!)j(zL^U%IbjTYWsZ?+NNJe*BokpJpXA7dqqvc8F5#HSp!=|8>V z!@a#a(w!OJdGXxNe~e;fzlNFu(f+)T3}AL*v1t2-TPfk%%SVXc379(-c~&>jBuaTj zEQNKvm51I~GSp0*5%3M%)Pg7J%o&?_qHYU!ht?eVGwFvt`Ecm zKrKH2K>7MLX3nEKpWWprj-Vq1E3&@A6(AEJG^p04mX?%gBCz~ATR8}44I!7eZ$9`w_o zMPnBcK`0=(Dv%4VC&?X(sHl)Itn;G44a5NMLQ+zarP*#E;ENDF&`-X8eT;X!8n_qm zbBG}Em%K+p9MS}$7NRBUe12lb;4P{UxU675$nLG=_YsSA;Gt#CsSL34$NPLoSgy_$ zPoC0y-?F*xp?wEVK1t3UjQIfin|MgcJ0_kc9Kq1D$J#-67z`7~FF0~Y`D6R|^A5`< z8-6-^m*DI05^zw7PFt9H2~A6KKL+^?tmWIEw7~i=(8|w3BW*z{McSPZpfcEk#@A&3 zLwK z?MaW6rbF;el&qW(>Vc^5FjrhQZ%mHEsJ^{wZE&bokAhvp?qD>Dxy#8-kxSTQtCFrI zT_MWu+9|g4rf#~bS{#8nX8Yc6SA{VMROPW-bJHFz2|v=(dfn&7i2{B*fd0}`SOcCi z*&jb18p_DHq`Mb9-Wl0#^vc&gO53yd7BljZ;5vnYeBvK8I zQ8p_jnZqDnr#J0f{~e=#!tD+Z&`3Mp+};i9!aX&AO~2xbS;Vf7AKv81^7luo?+(_` znQw;B&@We$%%XGU%rjRz9Z#3`=$oIyM^X+ZKi*U8^4bimMt(elHK?+xNIo$S%8+vD=k!4 z006vDt(+jOoR20i*mF8f~|C{MFC8;r&4Ax!zM1 zHU1_27vtCZgs$qF{_z*$7d(9W{!8D&y7#_HZE)wXxmcc~+D00ustZx*{cb_8KS2cH zgtVd@f%pu8lTv1M&9g2g#TSImbps(o46@vqA*^4vE}``b5bIbI9p0;70-_su=PG3& zn(UV@g|sLg7HL9P07_FgHd|pv=)r)>3=2vY2s7z!-nb#78M0ffN;ASNtq0x&X9qFcM&Jv)WD0bRNBazQ=ap*%{0{p3+tMc$+ zJU>2|DYb=pQ&Mp$156F_a-%h71_pvpS_H+TH#!`Pbs^mKkB;K!YeSDI5_IQq$RAfe zUZda8iSVV1>LJJIE!&;U!j*oTTVddp7(8&TFa2}4v>v%1!s6LiDiksGotE9Qh_7|J zpjiv|es5e$2bO@vK|6c0KemM?bf17&goT=)pC_lH8g$4r+d zN>(|~VKOo@qMFLzRNKki{iKCHEZW=Agsy~ygaW%$J#ow+;&DM)V(sZ6Mc?`2q}Mk> zgK9js5u+V@@y%I`n_ipqj^dl9sG#c9mG@8XyXksQzUJu2%~tPE_NI4`o#qpr+YdKy z!!0(YSGdh5@~`OJO|18JDbU5_2Bve-HTL;qsQ8b zR#{>@m%mh)pB<>yxwZVVNRxAU&^gyPlic*OGv4*%J2pY=J}jPm=JV4)g7mir(m(9T zEzO7{z$*=<0A~ygE;{i`z4J*4^f7$UQUgCV5NIA-9V*ClwzqQ#2;|L-;NT&6Tvx6T zK;i(9DpS8xTjDo->jxPN&L4XtEQ7uJkDf2-c8PPm!y)tP*(uTGs7M!Es4umCZqUss z;IA0}(o-|>ZId8`PYC(^-tGFyA6sn!e(x1#P z;sc3ujr4g&nJdU*#TlbbDqLR&sAzvd1^ zo#S15kZIS4?K&ZY07RQARy*GBMVn1|p*CTh=(|oKX$PO>ZD^8D}PxbcNon4RW&Zlbk zIu64K{g+2hBs^PnA8%#VCEYRgGV6e>9xi@@DE^uS!Dfys(?3LJRjEXvc*Aj}uroTa zq`-FK`srR3#YLsA#H;S8h1r49;{?(7>ib>S!f%THl}#Cu-r=kxd$L)X5k$vEw#Lk3 z;e7usc43-)2ueTGGS6 z0XRJQ9)lLr#H978#20n?wC{(O?Tu-T_eVw22qIRX)W;45~KQ&Gy){uwY z(m(DB6PfirRRx8nL2mjRVTM_yZxs0aBwn%th0z%m|x3ZFAigu zJ=(Jw*olzkL(hYC_s*4UI$?qk&q`P5Izjxyt=IYrM2>_JFHXf?PQ|PH$Fc+)?M|v2 z5Dbj8LrNFe@PT;=*)~2g@lDWTo{1uLZ-5k=nDD^FME;{kOhg1@<=)}bYMcW)`pqT` zEDs&szoA1!P;%_uq77jKVg(Ku@I=xHaS96;&Ae6e^_2l*;MLC_H?ie7ZuIxU5eM80 zc=y%HPyN%=G0>Vo(T@n>WG6eM?&pkpPX}=0M5_6DX~^)FK74bA^dYjJE1aUo`06=xR=1pD<>DoPt7RJufoShcsPB*R-s~0)GQi%Td<> z!W?qlG;SrNF4Q};K0*7ru~{?LL!SEemn5S)+-F&%>%MauYPk#ot)`A|n)p|ilNtFd z(nJE6Fv^=FcnFjd<2mL+yKNt8X*KQ0GXBS3Uu0a-&UsYu_!`XXrD^KDjsX*d7Z1z| z&%%HGdbBA^R<6GmVaP;76AZPVw4&XVoYCbH@L@zba1+?t>7yzFId1Dd}d*t$zy zv7g_Z47ht@BXjh?Aut%rSmtTVnO|6k?~~fd;P?RByOPb9Z7a+?gBkwlGu_0*jaS01 zl2)61+EUjL*qTTuC^cal*!-PK`c*rP3ujNv>U8vV&;EyD3?IMh-oz{M( z!Xmf+FXv19@I8Uw=D0h|srz%%OyiUL*}}Ts)Ym3zNLa4#2+Q1DXvm>d-(zQl1FE55 z**nSMR^pZTDH`k3>|d+nAww-&QsbuWv9<`m_LJMMn1ou$NVMzR$49%QeLTh zJ)&LLi!LF-S8(AtSYhaopx#yM%^uk+0X+K)I=tIn|H6vnZGyb;*XfwrGRJIO!#iet z$fGy@<=4OE{rO|C_L0R3H|@H!?Bo_H%_mTB8N!Y9EJ~*1X}S@*Gi6n*q;u%vS)fLl z@nvlBUzJg2oM7`KNwRhAha1L+k>l(H9{>g-1~a|QM_M3 zqaC$A|C5=M$?A)0@I6;9M)~jWdk~@W^h&MAORTzIrz7V_ToV-z{Eu>n)}}WNGRK$$ zHeJ0;6?`AN%6&{F@0suIn%9^fuqHj6xIz{4)uA9p{?4##xT+lAsy$3kkE*Cjo0!!dHvUi1H;%pS9JKyC%Lt zSpKhYw&#P9S&Y+_yy}UgaS75j+6EKv=w`9jX}7_9548&nla7F*>UXi-Ep!2l<7w#v z9ObKt5bBf)M{4&!Z_->Q9cr4;%N`_oY7$x8R2>>3RKD{@69Y3yJv%|mfp+@Z6M!4j zDaUKmZ)%j0OR&O8HZM8IOotP>LFC#bG_;g01T1ysoJTFD!U$TIaAU9+_~Aj#rhpyZ1g`qX$WGyb=WMYPiPu6IgT7d- z$rH8BGe$#zf!Zy)cLZ~xu@90{6?QBw20?^sh8VlZ11hqLjIxA z=l}G+cXg>90!i6%3=EjvVfbkT!}7*Xja50oc9;4212wW+0nhaNmw%myC-~QgMlx?( zJ~Yq@g%@Bo=~pVXa(0u#P=q3Zs#vkAfi$5jdAA>o>s-G_N;CV}jlx4`RONV_n?qC? z`^(dXO+-76;ZMz7r?L9A)G6Ef;-e~p1Rv6;e6$BoA}KDLvzxx``!0Amk+Xi+QO;%J zCIMer#f`)TA0ePO@9n*otENJ^bXycG=8bZzCKG#Azui16m|moO`%Dmz zA1{6UQMi?!$KJo8hXwWf1!SPjKBP7Fegox0i-!_zu?bzvfd?qWv=hPy52JS{HJJLhO4)1 z6x@LD3ymrKbqevDhSWHzD@TjYeJyw)mboQ-xK-?|;hdeTD=U6){=Gnh$h{ytBwnR} zr_xW45w4eS_8kt^*QvYFZTa<(y9Z!?AN?$ zUh@&ajGlBEG4lL@Pe8!1A1zjqkYIe>wLV>AntVr*i!$^|@lMRg1`WVlBxyk@H`Lo5zbNa+4ulqaC`XYm@$* z+dfP{s?PwW%W(wEuD2>MX*{1OY&iaxIipXHtw>C!mw_3}lHP@Dj|i3&QqN=5J+|Dx zOuNii5q}_#5@$H3CGs55T`v-^ND;l>@@%&UjvUq`ivFb%Z3?2vc%C(#ce_axn0cu@ zivIm++1VMFaGM;cgpS^(929#K--imfuCA^OXp2+l>$Mxk>8Yu50%qj5h4EWrt6fV* z7q*AB1VaaZNKi{4V>Kko82*pG%_hdn;O#DW`BIOchXu!{dr(AMTWsu5Kjp(#l6-x0w|Dq7kwN#YAo>M>P}x(FU6 zg0-j)J`t=Xr~xh&^7DJvVW|5*63p%57(R{Pb?RHXR^j;a;^$+57uTz6b*0oEm)w3# zD*JKZ-ZIusC4x^a;$`}t`UD`RvdO4m5zahyDrMo@y!PQJFP}8(ug2JSFIjG8SO0tw z{=N`0-b%ZXf_d0N7n?w~9{%q;3f*0Zg*7o{-x?>))N5zoZ?Ni0519NiAI7sx?5Rb8 z4oX}F;{bf`*58xa|3b-wZlB!}&`7_L|KfNV$tDBl-jb4mL9(~hHg_|7m`mFmO~rIG zdHk8r85tQ43mwsT@`tm5nV|PNb6&iMK8?{;j-18OnQUL9h{G)!`L|Y5F0RiT)p4M6 zAi3sPuJ15W=_KT{UcE$0OGA@$YhDI!eE|Eh0$+k7u5*u#`1#<(_l_M|;DjP3H89>r z8La<=*t#}2q5Bo^*GM1@XOjsfk@INWTAWdS_iah4JksDj`1xL_$J)62=TD#7g@4Z6 zf=_}yP^v3SI2#)iiwSK=;l%&|&hBxsNJcKbQs|6jME~AYZ^RYvr3;U%5vj*)iY>&&!FA?T5QB) zx?Z5TVe62mw$JmTreFHu6QUweh7RJ4O@Mft{Nbe}`5UK#6gQ2X;x|lHwhrlbQ zso(v1S0238zWhw)i${MKgom(+4)q!(fbCq97$ZFqr@bik>u-_3)hO$i-QT~Lc}}^H z@XC0sUS=$CW^E-<$>qV%oXLZ?nuoJu19YsEv5y%RRqt&53=qD35_7YPs_7Bx4vGx} z!QW665Jj!Je#AlvuDa5yWcfL5)a~?kp*0Rwk`XurxQgUwi^ZL+$wffWJmCd+YY+VW zJY!TCtZ&^e@;0L{2qS4SSq$D!I6XkA$6RD%jK`oOKN+vPq?AM5i*FZFjOx>6vn!SPIKlN0fN`pYc4X$MWnUEPXyBhRUX!}#=5?pu5b5jdDHO}k$6 zP@#AGCgX6PUOX?{=J-qZ-g|>3mdupOLPjX-or$uigMplJ-*{;6%by{;%X3#-^OqH0 z5z-4pC%RKbFPl-;`RGYmk`^DXHD7veAZahNu!grO0UhT8`jrZNBBFTd3$XQ7zu1w# zD4j`0WPUH-BVUN>hQeXvRt&Q@bhTVsAgg=A0*qt844$u~`L3&Zga!Y)LW>*^rfbCB zWH?`P7BkkPju}HJC3j48x0Ytxx-aCu+|E@BEP8tL9lpKv>kSn&XaPh#H&ay49&EyV^Oh}Z;ioNh#8W;0jgqj{yb3-cKI;7SMAv43s8rot#Ry%goGdn?Wwl0=JN@ErwnT z=1#qI-}P$A^TSU0G-i7}uQbGBJm%|*v+0kRxP?ZvF-dcjBO*kd3j@kOq%>s?S#I5* zWbWH#r$sQEnj79|qh^x|GDXOnfs6b1k`#K`)oe7JybWtN-wI`W;k8*Y;dnxe0^7j) z)d>EAcOAmStuD-sj#D+U$e(A`e_!IU>RzIaQ~^W8Wl!`feR+%3n|m!MJ58ShWPzSD zeg_pW!E&Y?*i(kGzWb}hN$Qszo<1Eg_87Ce0K`k89?BBeg6hTh%g?F}hr#Jx8uTm& z`UVC@zE%Q;RlNJKkJT#kqwPPg^dV-b51&4%fCT;oIha9^@1O4_J3eE^MM3kmUMU0r+2{P6 z9OMB4F|l(4W^?jjzEnV=pb(K|gV)f)uhnxow5n_Xw85JMRF}AG*ud^LHa5?={+J&% zTIapfBePK_HjlAjv^Q@bkTl7q@>nxstuK%!jN9>*tRhtxB z+I!d$-GKK$k#HE_J;*>J+D${V*Dq=)ZZSrAt#0H4zU(!Og8~HQA}*dizeI+aq|SCcAvheiGtnX&Zc` z>A%q8)~b!bK?xYwdD-d|J3o(Yxk3wvl}?%hJNc$;A00wVYYc+$2ekyL;5~Hf&sADM zLBVmDE4pz8RK^!8>XKI9-%uZ%szFG(*_s05c7KkS+ue_P%n&8P+Iaqz0_PeRAFbza z*iSRwy;~PDA$P^oeE#KRszlP(pC>k+T2=16yUk50U{oW%8qS+0Rd3!NAtV)3dOc70 zbdC%`4uL&T)RRRR9XYj=xb0GMI+pJ(85N9DTMbL0tWRPM7rc#FNoWT&g15y4%SqC)y*f7uKw z9rK^VokpBLuh@FOg4A>_(TyT99f3$NF?=n0VYDywt~hY$b7rbsEW(>joulohKz5mf z+JqC*Xq}lA+y;N3v5{bqAKiXZ11j-HbaZr;p+Q04rt)J-5kP@a3ee-ThWgBe`_d)V zTEBy&k`hrY6tvg*Q#!pp;>=*4yy@4w%_EfdLsr4$2lyQvb}p|9O2VZaz_-=(IW4TB8<7o0BqjgZo$x}0D1 z%50?kK1FN)IJ>>sh1scC_wZz+QJx2kI-1i_jf*D2%T;xYh;Fk9+NFMR$tBedc^i1uVqlYrf<7nk+_`epg-Bb^W^ zv1)dzPF^vf^QZ-Fan(BlC{xI(gL|*zy|rS;bth`^R(I>5J=j2P)`R`x|c{AdCym?JZqU_M8Wg*;kC(OH2TA*K2KU-LSBZT?u6b7YhpuZrak({{DUpXlGcV*Ku~z z3X4Au1R}+{0>cbq*4S80fn+xh{mjhfpj@#*p3%LBH#`i2W$41(Sy@(QQwbYKl85I{ ze(a6ozpq@w2vPPD$@vh;PheVVdd=x}w@LanyWw6y3lX=?*=D8EvDIh0V#z;-f#4B& zH}R^U9e||Qj5flV4^Ek%O){|&54$*V(|=i*zCGJD$mE=#@{f-@mHumXrF<)bqSuk^ z**UGMF$rMzvHs$c)sbx4&)gxEar+<|yUAy?-XQDw$I-o_jjq$*mhGHWC}0kxH;`2u zI%e)~rkwzZ@6tb(+rnY%d3c*&ViT@^&+myH@ay-Bn)M?;^AGvh5gYtqN!iJNY8s!H zpH@X?+Q#qr#_wm|;^m^G=V?H9cy`YGTdm$(;U%-I|{o z9aMyd58Qen0ntaR>I%??-Q)x$223F!4k=tsJg_lEM>CQ2t;Fk}(tuPi1q^3sMb)H= zC8>kq2XLOyrX-wPT(DtYg4(@A82=)4p-SY$vC>&S2yvRLbQOUcg`P*4r(IjC^8C3h zY*zM!I~OAY*WMcSn!Eg4u)U36GRf$oXa$Z+cLd zWl1)M;hdD)hpeoHWg32M@ds;B3bzRU35SdL864!6c)GcL0EM+|AJ^5Zq>$166XPn@ zjmpatz{kb}4P+Ml41(gTu2l@Tt{3Ys!Aes7E!eCGbWit{tXg)?oPm1N63m0+b3*Fq z-dc73j%BY4hocy2vMzCE5j)9WV{}x%~!}@ff zT%r`9+cBB>DGSU*kB*Km3$B$tNbg+0eA#pjLFRg5v9s{#Lnw$B!D6osP7WIs>cNB5 zY)RP7rln(Gao_%eB{rtwCd0~^%t`8 z^74UZ?^0#^(tmV!8>p14lP@qm(QGf!2v<{6LoWlcFF0|ZT#hsoroS!R5f-b5yk%LH zX20Gld{OBMqBgM8$bA;p?m*mH*CiYkWcJP;#l=VOOGxD0-gfjVjQhqEJ{}os8wBuL zK@o0zq{+Tw!}r(TLF(JLAs{|;T=tc|N;y_J4Xs>mdJAm4lMcbaj(Y+Ur2;2RIvva- z5v?_oU?qvI42=tZ6|Wt5aq0&e$C>yypd{$i#t1rNx2Z(Vtg?F%lb% z7cVL;Dkq0Vsa3eIM8H>hWcAhptF$`H;c6RVtR9i-kHg@~P8s&R zL=YfqK^aa|Ig`w+|P@oSNdQl!Dgf<4$){_ zfsPS{btywmPEJ@vL;#SUK)MgS6ErFucRL7&h<5ifCwxFypvCA|_Xm;@xndAQ1oH48 zJimWS)P*sGT>s(I+;TDhp7K}OFY~S6-Q@WZyJLiqjHy6tdGSYbD0sab2UBqIk*bz5 z{BRJoc{=z(^OEonDwABp+5TFn? znF?3E{c(wh$NhU}wKSiUl$RxfomF2yg^98o&PxK7e#!48=rVl+6$#;xt-H*bVF+n= z3852T?C^(9BxbFntWBUtEr}FkC7I|Oz{emCjzv$_va*WfVih5tHw|pI59;j?Q8nU% z!3AFif3=#5?E0iS)6<%%-nz9g-yR8!U@-M@70kb#z zh+=k#{!Ea^!-;oqKugIED*GQlexPSZd{$4Im!_kn{HaFoGvAXW2B8(L8`Zm#wao}4 zv{|YlPhtX)W{n1{1@3Ro@4xMbVee&S@9DsogvkExK@uj^ZV&6~wfVDb!Px9V% zFneV|o2ZmPAz~`zTl-6tm}?4VQB#7#mw)3*{!WURVBe0u&m%+kK(0@nn*#%VAJ+Ph zcKy)yV1P&j8W(1V@Eix5`nRgRq-1#ALMb9-McNY35>k!`fSndd=D~RavJEM}<1)Ky zhx_0oo&w``;SqQoep=8J*hDXoOA~%G0P0DprQ?;tzDa-)=AcHP^=>`I?c13VCN51` zI>JGDxH2E0x=Ygc`jcd5tE^w{j6YcY=7tK;6=Jh29Qj(jPqq*z?cVMf=?4Ui z+n~n6flMm|Na+74!WF65UvoZU4bim{Z=o^6C(u&lq*UZC^K4zag!O(r#4{SG00e2l-bEmzrVSXs+1fXZYrgwuKuY0 z_+PHh#p)CJ``Yf3G1?co*`^u0(+8ZDOKMN@Aj?T;EQi+Ye-# zi7n;(BBQ#KaVK z|Mv)%A^<%UFl<2SmN!IY==s6n0#5URFyn6jQ0q5M+O$A-Nv=*|+B0+>?=)R^vfm;8wWz+Tk98){r>g zWCk1wPN8e{l~&03G#OeOELM8^f+1!>0^PXYJ6PhsPClQoKPPZYL+*ct}>$FSQCEI%gp$i^BAXd$KvU(*qL|Bgn+C^ z${Nx%W_{v3+NR0jn08tDRoK>xX6M&wX{^Vv#R_%HZ67Z}>Ckuv%~n+hVs;^+jqdw5 zjw~b8FHN+RtVR>J_FxGY4wAiGIG-9AaM>`eur;dl+TumsU|1BT!_u9NcG4yKxn!!f zik<#qQ-zZPw%MYH6qDj1-(w%9VU}MR$d49JX^*OosBGHH-r zcAoA4cw%`DLgw8rku2EhJ!xI~Cq*7HMz1HTwUsHEfv>kGWj#OjMXG>LNkPp&K1!mN z4X?^CS@F761}q!2?uRkK13CUm8M6RMbvG=&N9?rF5X%M{I(}f#;&U+NX@FwBa``d} zC7@UGe`Q^HJXG!9K4Zp~onq_;?P5sQY&DkTkycvlDN&XX(Kr(dWl25aiR=|mS*C|5 z%UDARBU!R<*|)Mxw%+gP_xn8W`+42|apsu&%sKac&;7lw>wA5NIo2Eejmx(XcRH~> z-)=TPP7QqQ6!Y|HB-Dm#Nn{;}+p2z+?N;OE$^;0*aZo#)?d1LdC3^#cmCDcSA-JD6 z_CsjakgO+d`s|@tEdEQ}pY-bYd~1pATx_+T-H`cz4^?;XU8{m`Wh-O7y|cmg_y&`P z_fx~;x{~?P_IR@=s+?e4mD(R%ooQFlY45~!apf0&L14SaL+ z8XfI!ROID8ARexE-9>tgjcTLDAwVMR1c*6rEG@W17BgU->4F+!_aQ!h8w_#W1f5|%8nR>;D2{AJ1~FzhBA33uo7>Fd#)bu~OjZZ4 z2n-%}fcOKpt3n#%WGCPe?!7m{i> z)>n_JU+wU4h9z;t=A2~(Qi)vD-cV#G_7KF(UDnqJOrlL|oP@p^$SzEq%t7&`_yexO z)eh8Sk5QR`>j57(dXn&UN!>Pus5)O_E-ma)>>cM;^`O~MOZ4yO*3tL(#ga=Nus*a~ zU>eIL)K(@{Y!gQAA6=BTcM0U!Bs9Ly@ML>&- zL?H$J%=&?Pj#Uz(+lS4ISnN#=X|G~2=e?5i^>;YTwVkfOmhmFJwgM_EK>$z`!uS24 zh>hRC9F)r{y~1&sm-1rlIM7^5Wx9QZzw$1l$D}?#+G!xbA67Z>*?GKKU*S)g-KtWL z9CpfTnCQwn34(ets|4(t@R`Vi;WKO}XM zl4FRH7(vd1hF!xIgzbBz>SH|fI$rVTv2Ykw%o^`-Xtp1q+Yb0o;%baf5K-vE3pK7&WC`8Fc)wn>nSw7dspiK~izAuVtSR5J{u zaHB^Y28q?oTo~;%o$gXwRRiHUbT8(b=<}>3Xohfo2W@2h-dnIaloa>^76tjC% zQ_BWKB1Nvp`u(`5UG{Q+dj6MtEp3fnieBk8j4!R_Zs!Xg+C@lDU`RhbI>&WyF?89! zjz>QrZe+f4n}rW^)*ZHh&VAOi_^QxP>>n5zLw#N3u}^P$=PmS(EE_B<3oa94O#{pgy-elt zRVFf&IoO8pr+Bz4O)(J?O05K{d;fys^8MA6B^d}a*((q!wmi0_QYI}$UUM?Pq7R`H z(>1BW0xh;({A+&�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 QDFQ!749!V7hwOs>2dl+X<^TWy delta 57712 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≶8}sr%e!u%pUX<57frzG|qpeUdS#!|! z(aPH0%|;om$IfCsiuc{ScWigdum1a1oe>iq=FU6e3o*(PaxZza&-Y_#{ia@YyAqb4 zU|^cL>pK*z9uVy*MV_*@5xQm#Ig<@FktOH1aE8;Fs%St*RE()}G|S^EQ`a#N{!Ri# zzED6?)K|ZE{TKE2?ezWSJ4C@;hEP+qrc6=adSkR^`L({%0Jb$$Y=b2Dx*c(YL(O5)%NhZUHOIORj&=X0fP={Y-RZEQ*^F#3Cl zOXYF8V##KN#S3~@v8i4UuUA?^6678RP6A$D2ygWzWa=es@Q>ft+ z6!lu-)4f<+@v>UQBAqH#2DxNld4#%fn!S6IKH~D`OFwZDh2qxY8n#}$7pfsp1#)qZ z-yIJA|H>!SoSIX1wv8bkpk;h}0V#SOu>r}nQI^=K|ETfZ<~p|IipzO!XC(xRe_wK} zoqOPWH`T%^JSyA%P{cIWhi;TE!+ZU%?hAsKoWK{a^};%4>A#y-%Lz+^ysN8&Tpk}~ zV=>>C&%RkTC3tu6nKvyV3@cY3s<0Ux#_K0b3}K!~o(*p2et6C0?ZpWHH7;Z@h7no# z%VIX0GpxHZ{Eh!)#M&2~p+EDAw5up-$dYpI>WBX-g{l00N)vg!AU9I?`uB4|6x|Q` zI1_}*rqOSq>v(#~ZdBS?AQyfk z^ZxC$C&(7Y=BRlSK+ax86MITKbpnc?K(d$xCD&VrO)8O_A@xS5;_h{|JJ+*ZJ6-_| zuFv~%91~gBu$BZReKBn){!u%xdP43HS=-eBbp6LNy25Acm3%CJiD9Zn*lL@zWcHW5X`M-X# zvt6$p#L##~pN;twP0+i~3%2std8KOgKVeJ6?%?vZy-^f(K{CFjTxEZ;%dv(KgsrH^ zL+-D89QrPPbBqhIN2a-ZY*! zB*JjNEvjwSWFHrBXZ}~Qwc0IYw*EF;4oV^NN1zU47(ZRO1mb&r?l2z zGZ^}DTQq?6UO=lEhX$qN-sCE{&yLEV$}1K$eytNsIe~6o6TO>*GksV&H3rsomDLT0JV{Wwq_l)lYaTfo@LY_GPVHjaKBzeJ9YBtUwQw)?}GY2VyW9f^-;A$(~ov za^#m3%lzA~DigyeE!=D!L|lK4{OW3Z7}Vpks`0-|S@={@T&cf+x3+v|bkEDLLF9)a zi%U;m`_ns04Qe}-_Ts@mqx{@dKswk2X`#vFG|gs}8Wa4m7k~t`sex-3TJtg0exy$u zc*H^I(BRCC1^eZ(n<%?41RFZo4Np{|+5b9d{BWQ6|Bk>G%P>bpWeYfOh>%!JTC9LP z3sI83CoW_OlxTL}e_oXCc(|C<3)-EH-ez*8k$&4|j@q27wU{*WHNP(Zg7||j-)ic6 z?O5JQ;UW*u*(px@%he&y9%{$|37gT`8Cb*Hh7_(=IdX@1q)w>3@PqWV7#5IsS%o+L z`WG8d?-1^#+6PRrJ6Mm<7$;rZT;);Rc(&C?XX933kDN zkt(uGKE5V#Ng8O9s^9*oW$~j>yZ>xg22-{+#XcjX1Pc=5 z?q|FIqF?-!roUgqAM4}T-`_`tT>phWl{W5V`KA#;U*o5Lhjd!-P|~C3g%|Ec2JRF~ zf=K`8V=(nQh#vxzjW{CvmN?{iOJJ;Akak?Oj!AxoMORq=#OE(F$rh5$;ro1!0px3J;SH5rXIbdL4|+8&nqY_ zctU3SCeTww6wKj3oLk$-{1RJs5I4L;g@r*d-smEKxhn0fbms4X8?KwTJR8Pc`Llu0!Z4n@O3){{1*Rz2wKo$gSrk$W23phfhgkBH4*C?XbQ6^Y9lWcb-WtoU?>CO@?cJ}`=~{xZd5oJZKD z@gv!Z97K*sT(t?Plpv4ncJ$#)lB2&43xhZ=Wxq18_O)<+0a51Z@P-{EwuGgnr4>|l zP;00VGo#t54&t#wQ{C47#6*jlk`>-4}12a-9=$A()3Wt{Px<&W*_A-Q-o%8|b|>?YeueO-4LK#xmA2?C2~7 zuZfn4jU~~qt$*awzMg?H(N-%Ub~ufHt*UA^(J%LCwYM(cZJyn8YYsCtH63_3{p0E> z1+()#0W%u{o~rNK>7#{TdW(xNvabgywwySUj`T}Ain|SjU;0_u*P(n_6(08|MS*K= z1{ZiyFW&g4N4I%UNOC_{I-=}R)Ov!tdsZw9o%oGIAhO?Vvo91b87)nwCbLj2Q$IN~ zQ}ms+Xa2;os{D3w#owdhs`&66o5mO1L|8B!$;~E2F_(Qb6nlcOda7}@kl^6@n~0y+BJ1XC0KczH#^u^5MKwiPZtR?V>U%;LH5E4CJl%4loHyYR9hZ$qNVt^2v0G%{n$EEKZ>ZIyyWdKS7>_+`&9P=SNR4qT%Qz zMeOeGj*8WmsChQZ&iN}?O6r|r;-TVOO?Y#we}cpxS%;N|zD=*%oRO)2q``oIo(vJx zD|pn5jh~)R)6tB3=a)hqZxLSm6fnqLprd1=GNA=?)v&!Unl-MN=bOu7VH1RIOWD|b zh@s=5h4Oky__+9dyZ(G^+9f%}@^z}>hKZhwn)ms`p`SU|;QKFhI;_AqV8O>LdWf2B z!1%~iyCdZyh~8%T=;&3wkpQcZ-S{4nA2O> z`=1?10dI}6oTi(DJe}mdcs!gpBq7&MYa8j-N|&Mx`DsRMX?ZPy-8~81r>?7O4~tv! z@*)k!_&4RR^=^J)B0&a!CB7n(oNpLt>Kh0xb<7s<(zaG`a(hiAXpo5tLGbZN)qqyc zf@P@?_N|BgOGWsI&QZnKe^}0azL)jie+lH@QgDe<@N%(F8y|&Kr)9Do6zTGMf|I`4 z|GqH{$;V7KLR3xs`K9g5e(o8HoiG}=#JI;h7HR1~-)3qkF`R<2PG7(o=O`>0kL~g}kpd4VCzH;y zgNShqG)yNw1X=-RE&=diWf$Z)NHcB2`o?Pa40aC*dX>O}B^{x>&Auw`*6}Rd`jk{8 zWW-6h1!{5FIEomWNIzPg#U|JHdz+HvSN`>>L;cqn3yUFrjYe$_qABTj`I9;WRo3`% zgHl`9k7KgF!!>v11P3F}1=#tZr2VPsG9zkZOQ-yeZr9w$gs)%!932oc$0I=e_<*8@ zCFr+m2&o)iftpz`B8S72e9m`tR576TU{&NH=WZXNU7lUW*Rlqbf%O4HeA=AOCc8Ce zqus|?1-l%g5m>(H_xglr0dmA`J}WHWhAr|JH}4%tS3EO>EhbeoepyCsT@M-!ohGy~ zV(wd36wiOf&_;F5)P^oh#nCG2Y2;MDx^u~q%Jr~-n*Af*$eXpvzjgoHcJ{j|No<}6 zmG&gO<&j(9D&b{1dyf0`-$j-qNg3=lxc@fg8rC+H&I^%N?xU{ML&>E+L7Y9SniDNN(C>S9-)wCB}<(e&; z-e*2c$Zt&84ZmMF0mOjGn$Ia$%v%adXoxgD$C@|l=xf?aTr+2I-QM0HM;%?n_QFT} z#7lsoq2u38Ryz(Kn!u_^U;hRRL=yK6f@x+^YZwrP$4JCXc>zBNH1;b zTU{uq<=fnr#0*AZVkv1Ou@KpB3{!vZl=T!5GC9o^Zrx{cv(R^eSD#4*M=#VE$a&0Z zXLp=jp?Hl)aI120UN}vK*G)QT!(Us0%nnQKGfYjAVCY}Y+7+a=)mGoj-%dS>8kO!k zjTooF5;4)T;A%*HwVZ$4SI177ocJkhHc1ALNGFm_0Kw#Q&T)3FG_f?q>rdYW_ge^r z%Kz_@*wK0mB=GxxCxiwCIZ&Il-4tAcB-i>X)ovq87a!8=I`s0m|MWqXL8RBHNU`C$ zn%U<)9cI2jWNEuH35iQ>kHQ;LvYdmb8tVfPqQ!E7~@A@MD$+f5oTqMJaq?#W0Z zDVZ!|?fhx1T;ZuLv4u-ia>L$f@D>6r?|Vo~Bgm%W=JW(IcDj5r!`|x>zips5j}XP` z`A{Vz*tQkS2Fqpn80m6b^o)g+rm{g`&k7F#K)&h73W~0sTSxp~%=W&V^d@EY%2WR3 z^j(JCd)k^stQ1b5yE9BGUGu>C50}s6u{Bjxr&4u<0jDnxa3oT2b)H8UGOx z&C6>y&mHRM7~merqIp5sy}9jiW+WKzFDp|dhUwgT+li4P4N8LTFd@L9uF~fN>r3!t^i#hF_^yV zXPH)Qvb3t!1U_PU?}Dm^CFwbq#J$=$uasfEj#9hln(SUGVF8i|w-wm%GZUG* zJ=Y&{j_`NKNuJ<_!cX%101pAeG?Ls$I4H%hS91@RHp!`^0+^lF5LVYH_e?E<$cD*o z{0!??0XXuL8gY3=_g5nE>o}W@8U|U@iOZ^wF+SxL0nlOgN}vp^!%{e)p~tS@PyP}!oWKS7YIdt%0L#IKKKCPw`4?Kh0@SQ zi$aJIn8BOk$N8F@3n>%haxkwq37d_v_~Gu#jy)~BPh?hYFc1NyL1B9EWGB5Emde0= zWFJ>;;;6Rj9Bx`s!rSkwZt#0o(Sg-bI`?}^!~V^Q)YdzB1`u%JOc1ZNCRv><|I{-C z|H41C;eI^|Z#=vAWDwu)V_G&1?W!dES+-m+qY+E+*iLuvPbeX2Wd?gKmUdG=G=Pna zs{f&tbI5FWBKKqOcJU=GR@`QQN1-SxV@dYI4N~;yxZ`6^^Ww7NdE&2H+eUnaKkhd| zgmJQMcFuB}A=b0#w*W?LRHewOJwgqIlgv3HR8cfWUApZS>h8yc>Ek&=my zR29J#%q7bG1^A3ZytIFd@PO4=E?m>Vb8Z#0lfGc8;n$2XWcd5JkI7k41`Pg23&EnE zqz-GUYRa+kMKTTCPK!sLW?)S~-RR5gQ zrV#S!&oJy0Kjuk$I8>GR#{4WD+iz%UAPl-jiyJXalrGpO^!l1`7s3T5k(x8iR%lPQ zSs{(a)YunV)X-kBNaf@BuovsO9Z_iAm-6ZM9SVf7g*(|v&0ujX=E@&s_hyQBwq$kg z7k|VZ#j5USD+9d$G_1&LzmEA>$6vzduC?}1za#88w`+|B4@HnpYMcGmVfVt~1%-L# zi6`l`&^*MreJ0ot=1(Xd^2TrlERg-H;|;dd|13S6MJu+-h1hB1KAl{&ilaC-`}og= z+bY{g`lAp@FnB2B7o>$Dy+qskup@<`$8MmE=CILDA|6{P!Texv@Bt@tbaX=`>gEoIgS+pOPx{dZzjIgquna$9E7yv^C*sSPcUf zm_ZK8?nQ(dp6vZW5xiExUHp%_D<5y?cXoXEp?BTm?S@)=E`lm(c7KuatHd@saU;*CkvjS; z#nvMV(sX}m7omEbM!3>ZFtF@?Z&2TcA^+3X4nyTM zdTD@W6d}T#eel&uHky`JbqZM)Cox>A9U|bNev$=(fjVU8cD^sv=Z+-4ackR|^dnq* zVWBS{UC9Osv?HDP{f(bQhJg7R9X~!b4>~UPx0lh>6hhkm-8RX@+#VYX{Fad zWeWt&av#?YDG&Z;3excMi;S4dKNbvs{g@%kYsgkU;wek|)%^nL;zFo{mnq_$lnM(* zTj3(`TCt4>Xo+rXRLY5TPiJSBU@K`N+GP{HfCJO zlpAOqaqP>ALbL}nl}Aa3TTI7WyyM7>aHCok!YTUiVJ1D7P%=Kimk|g^+PSMi>taq| zkh->`MdT#;Az2JgtqhlsBDZoO(gQyBhW_5Z^rUX-ToNUf9@UV={yla{siF`eX8OUk z0o^r|64du}zb5}W1Na`MoKTOhMQ&Ipd?XO;raNA^>r!W|(?I9-w5z2|h;IsX;H3vG zl)iR+Id!Sqe&^z6!71M{Fdzf{K1|57Xu+lT)lvJ^t87&HG-?X%QQ<6|!}(XL3W?|^ zH8lQp0MWgo(N9OdyLe6ej7$sdUHt;bedBx zLyAv-4bRr~>)t5S9RrEbGlW1NFvHdj)0acVb+?7=$i(ppm0$K^0*u*#%Jf2i~P zyPJH6AzSJBos=FT8Z?8t_nW^0JPCBwx@>-*CA02raWb5%BPn;0@;f)phVQ?3A6F9l zz02%}EdHg=V`Y+2Q0!{_uyRw~{kz)$B2ZR*)(>sdyd23^SUBTW?fkXeP8KsZCxXL;KT>=}w05YaM8Wi5%q$`!BH(KJ~sJ3qsby@?@>cb2XztWa{~ z(v}a4C>*rpY1%y1Qd|u4oA)f8fe$a4^Y})LxRt1&^13sYfNIyrdV*6&#XnMi^1_c*H;C z%)CUH6ZbVZ4b9EzfDTvA^q$09LZE4m`{D&g;<=;P+=~~0`Z6^rd4-^etAP4tAie^D zy66w({_P7)WH3IE)7nabC`rx8h@6_58b1W4H9u_&xXL$rKrO$fEed6}^V4&6{?#s+ zx3*<{4z|Lfh>WKFvp9K%s3DsI6m4Gc@))i;Z}geGVo=e0s%pCwB2~`sN(Y=N)Uw55 zfx1Bc&&gYn8CyOeJR5O+?bSiy8><$Qjq`{e!d&Y1wH|qAm;<)m^&Sr&cbO&&wz#N& z4|MamqJBYz?0CruiHXfNdLvQMZL=>lDSCKzsarp28@Y3QSKgq8zR;1hxlnY&bux&c z#l)UtEaqIcUJ76=&ir^~I^Kj}B8VN*d^v#iz+|e_VK@0&j8bcn{6652bIWk->aH{Z zw3Jea`Vg`W=K;kHQeh7^&}|;#u+l73mquARU97b<)C%iTpO$Ou87 z1*y3{{pKo7{Ujv?pO}>N({)GfaINFz`uh42|8yM+P%byvYz&oq>#i8#^-nLQ@6Yfz z%JGchUyJsiVq=jrm53&2DmK?$!)^#7uB?E3;~HX@rl#GQGKY?x&_uG~!H)DyFlX>3 zc3^l)z5RQvO$AeI>_0E1b#urG?qZ-dv=|tP-2_}h<^nM>c!IJ`Kri`k#XSH9oc?Vo z0*xt?-p_a*L)85I#6W@%$Y+3yE;G(V>EUtGp6(hX74B8Grv=mvn1yD7R76ZnFF#^I%?Yma+&Eh# ziPe_s7h*PKPG21gdO}QtY*k)xp-KLdAk;FJimf32nLGIzJMxq5l4w2a^VJ)9!}&0r zOX%i2U2l$M3PC%^?+a#U?9_TP)N43FfXXb1~o3e|u3%?eAuaqYDHL@y&hj zdUV~fZo^juy*~=gVC@J%N4|f+hA}kiBrcZM+vk~Pa0o^m6>JIC;y)^T^wNCqi7cf>N8hkAx-#6cZMNV5`32#;-B9$e8hW69PKb!EMSxz z9YPY9qpZm@!(xIqe>(QOYOXtPep5Yy1m2zVTl0;>RAO3GLu+L0mZOAMw- zCCtodgF`~f$9g^;W4`soFJsJPD}qz3^?mpPg8|bEZarOGN~#R0Aq(FTMuMI+QddPw zRR?_+gA`$ZeqP>voXoL1*MXm{1|g41Gm;iE)=u9VfBYxe_Fi64zwHS9&ILVfxg)ZmbP&reVHM^YnR}u+?^;wHyLjL{)rZWe18iRzWT6G=M zEoEhxU^*Kfg85R60@x!w-?NLWD<1H2n9P@#=J*yuuLy)OA^PR@kz8&Zc>`o(A~boUn~#-@7%5L!l9qJ!exN6h9XcAN;0xz)b;_ z!`Il6>!;68xCdzfmx?ev(!XDl=6#^09-;QXKYj=nenKg~ZdnW}$|b--6r6m-YF%1d z`qT5T5ty4vpp&Ns!2u|G$vQZ2NJ&crX-m|>KQ2{l(eG&f#7cE_yab}8KT1lZfcm~B z3lY5=4;I4q@FN$ts$u>L6qTw#s$zeZp`Dc}`L~E)NluPhk*7_xxS>Y%0F~bF4JU_y z$Hk7zC!P5mPhkj5#z^sf7h^E}Q0Q)z<`TcO&-d8NqPtJqx|?raiY&4uX(|uqg^{9) z(H(t+*Yld0Vg zLZKTQX7r4Vv?3xDa`|{DI8?yv=Gio3%SDjhjf3<8%MxAh4&{^Ptj!UAxQg6+LxMbC zL?jkhH+_FP0cf1CbFSCb=aJ*2%nQ%Lob%R}0Wm{eZDRMWLq`Jn%a%T^rA41|tGh{8 z)v!dfycwEj?xX&QwkL!@flO8Jp5mxNvHAyOqJ(Qu+Zz3tR$_vl3MJd1O4h!u!gOZu z;Pm4d@h&D7=~r${(Tx_mjt$!S%tfpMmB@oTHHjZl&@aS`&~+{~;%qrTUAF!!a-!A7CwT4HUz*xC5{W^5< zhjVC>{2h=qBR-nfKNR)*mnd%VMm2LR_qDJ>!Dq?|_Mhpp!@qq_X5Q+M2MtL_ERSvO zxR&y|bCC2=h#EGks=)X7xDVBSqnxL|Hn^AnYQfRf!A<42z3^>?8l%X*O^vi=>{uFP zB6uq(`Ht^64a!*h3p3c`r+HNNpzLN+`8QB9??-NmRwqJm;ux%X!YA_})o&e3y`5!n z`?436uo6*wKqTg}g=%YO$8FLH0ir$mwY7vTo`1tt7<>NXHpe9!ih#=o7ADV;4$#+f zvE)c$QbB-5$_0Vq)vH&eTqY7N;_QTy=&xxWDd`Ni_W#XO=n~4J?Q}Ksja@>;zO0D1 zR=!DZ`gKWSO;I$<_j{HHUJI^7Y%ek-4@7K;G2Nz$=^oX`6$Y6wd2gTlsVMRyeMJCm zeLCx!R%LCW>j@5NW|X;TnAdi+xM$g#=&X8FBISmN!DlFtxS2Qqsu`aHz$XZ}VA zX~C9wN>)jp*V_29`Jof8u^xJ*+ly|I;Jb%;`G->K2Mgl+TlLU)g}o`unF8;9uoc(Q zNY{MbT9~L+l$D>AnkMq)aWr*w%y-5zVFDFHdsq-Ku`dvCF91S3x5uF_Ga>r(DRy&n z^Eo!QZz5MZJ=DNAxX^mghKzI$lg=Db^_`l|ggj!{8yivxbrH_K- zB8T~x4OftUxx*Bf7lFzW6P<-#jqz4E5P8L}i&1b_=!S_I`btjl@E?k_52SMD+xc0j zdwx+yWo0crAg3stv?2|^Gj|-jE!6rCQ8H$9A9TqUXf6>=$mJWeN3pSVXu={axC#8i z7f{x7#2QdBI-wsc+!y8!LK7$wK6e?Sg9n^2KSl#W?r;Yf<7sv3iiNHy+o=LtmoB@t9w*I;IEjh`roTZ;4Q86^lp{u48 zzr@1_VWKC>qw=0q90J%7P(5__ikX+cONF8ger@D%h2Q8g10X~k+E;FZZnKAN5jH9D zH{Y&e`v(ThLH?<|7}7UDNJ+Vp{FW2~;>?m?tM3(sxZ`%C$2f*LufUs4#1eSg{__K| z&nc6H5DFnZr}f^Z?o1Cp?KDOQ(p15(gp17~zdvtJszEf~zW>ndah5xp0v#9#g_aIr z?gsehuymU0=0=*{TS?N76iSKn$(JK@5q1v1UXKa&yo2;C+Z-e@7aQ(eN-q8A8$8e5 zP5O-h(J(L!7I&==M2JvK-Nb!C9!t7cBoHNOc$e?{>5bc$qwrt1wz!Bv zpL19-Y(2Au1Hm7A!{zdIq{7!S@E!y)rh7UWBTEr+G znidL!=aUGIpE2JL)NdOso;UCRcXncIfShduhFfKV5_gs>I;G?}Kb?+Ut`q^!DruM1Z^pnWr8}gV|tCwUHt1`syw?3Z) z?&Xs_xLM49tYt>@%_Ju!g-{B6@XpeL0bx5@C`P$zWI4x)SJVtGw3EOQ|O7A31mjM2b<`ghR#yzY=@?@fb6c+7$QHR$%!KiJc6coWQP1L)hu zx!Q~7@LU@pLS3y8y+^xjfGj+A7y@2JXHogQ4{jxcyak=^{!F~($Cq!qflJuX(0y;b zDJg}RAL(;q5{@bP?j638l2R4)>Cwux{xRzN38KmiFUm);pOhrOFy3nDh3>)>K-C$% zsS6^1ZeBY+#Q=>aQ838zXrV&%zy6NVfu#hc(?FJ}uZDp^3@}FujfkKF2@SzWz7@%`kI9G8GyQivdH6!Pp0{;8kCjYzZBRM@j&%%+?6}BO zMt1D@p}q&-Y348YQh2-T{l9(xJpxdeFXKZkwf^&`u0?$|QqT&rMPG?0s$z5d(i?!X zU5G!p?{=gRt>n_c!6k)XHuEz|tz;J3bbr{{uyexnMc?HLOCs-#_~igOAr6dWw>fa{ zrVd@QCuY(7#Z2BaRjsk45n+Tz)~Kr$BksyCtv1Znv{o1JN25**=TU}@CWBWsAIOLQ zC@qx+jW-(lQ2i*7tw=H^nF9U6qYVxFS2iOQ9zYptHMaF1eDZ8ce%V|zx|N&(dH*>n z9GUFhk#}!@|Fb0pQ2v4d1zru{C#RI&H&9$$Oe*5VW!>yQz8TSwRpx)W`I2LbaKQoC zM+}L!bb!Q9(K*2%@Z|;~hPp1r&D!%|>ii12`SOncEB1^5dDeoxi$=~brC4m82$`5s z^d_56+UnNsSo-;q+@Yn?hdgeU?hgeopBAso^$H4!A*gBeOxXLP^so4OkcCb4bREYBz znUL3Za9&!XDZ^+I7_|f6k)nh6%q)H0cb=-S|iUN;23L8 znN?pc#d48j$u)fZ6Qty=pj`<~c1BLJN$ToM=G}b(go@8jQkS30>soI%Ct_yC4 zDC6lDYWa~RTGFy9*5@ndvm5u?KU5TRr!mYbjvp4`+~-52u$4M`W6IJNxmq07D zlW;HYVKOO&ZPrw)dT?mHw6|U#bnH6x_elL54>{TUQo3mCG)C!Qn>rQ=yfj?OIWR%T zm!?uEM=;E{i`9RN>~G%IWzEmLRVyMvgY)jyA5)eBsdCLhEgl^0u)Ei~a~XHD!(Vi6 z&q(_Uf$b$GR^`=a(q2+>qc5Oe`kB|5n7bZ-fuk*QH;GduNzk^aJ<$YJ!C6Oh#s!UH zt53KSjs4I5w3nm&Fqv0=7$$B@Xk5DXGv8H^jJuE54 zD~qr54d8bLHNaFHUaGp|AEKRBmdR7&t3EMGA8D`ijB<(fdTGrFW`Fe z;e?nf;I4EFmQ&^3j$IQQs~NHCyHtl!iQIkd`uCKt1v^`Gg?NC6M`iT`&iL(IWPj5O|`Rc~@-8>0-0Tj0s z#YP%8yYrQ>;+tDDs}nK91$!Wq(5|;X>oaL4CWcdKdfL4J6+fFyqc<)RU-RCbsm!nT zSvC2PohO~pm+-oye)jbI;=<0~uyVw` zqwoGv-AYpPvNXZ>af;?UH3NZ$zrA4$1mTy*>7e&-TQ@~B0vTv9NXq<>zTYqcUZQgO z_CHKiGSudORDxu4Zl63BYbTo1c!ZOs(z?`{H%+BQ%*&_CTcHYm9R` zMf1G8Y3C59Qx{9n$WI;{zL8jB+d<8q!s>I@wUpA+W9ySC>41+f2!f`#*S{Vug0DOa z3VTYmIA960S${os8@|{4m;}uZHL7gz?FV*s%szeB_-(cak}%oWCBjq z-90^-rP+)GK(z^%e82r=72ukHzZv*`aD0H#Yk3M|;eN-rpg6q0_XCEk=in#F`UCgP z!^OH%Xz`dg$TcSG>~y|pdW5ellTGj*X`{`W96 zFwoG`_x=e0IH1eT*BE?y#rhI84}X8rI4V(e$nIK4#|Lv<-sluF?7+?P-yOn%{7@#$ zW0>SL@PC`{#Y*Ebmc!*v{O_OWIdabvef5b%&yOEJI)TRmIKqHRT0&Nq0|VP3S`rZQ z%meTeqGS%ZxX)456=+A%Vtq9$qP~~BcnQi@-)(@wSKh)YuwerA4MrlpVPgL?qq8@~ z(9#hW7DfZ`5;8qvLc$zqeLXR_VUVJcIrH)I=2TVT0<;#m1q1~JDS#zZQE?UQ;=+uI zjs`%+^LFg)l=uQfqbzvH!m%mQ3*PN%(uuh569Rnf`EPS_s1cEoX#vkzS69c(!4dwh zSOz@a6@Eo-%n-1?U~UWn0xW=olamR-gI4N+IvG!(KM}Yt{!ATux|GrWu!@nOeXix( zmeH{C^iIR4(&#AIt39O4;`X3C;-jLC{_-pr*lbQ4y=VYz3=Ks*KU|pp6X()I z0jgj)*|*P}1aRdG0yK(L!MiRU|ERZM%qs?nVhVyq1WO4RRA8l0hN$iC4t0Oc-Z_Ob zTn#X+M(L>^#l_AF#KhAnq#*kNd9WS+4BPO=zdyswoSgE&%od-3!1?B%C2$+79_lrx z83mcKH7~h^g>L%K@eD!pf|WrF9=Cg7*8I?*;`th}4{DYHQ~KZ1L;Yui9yb065s#*f6m5I9Bor|099+NwT&K z<8=j_mHpLWg}C2s;$>XX+ATj{?veozRG@eMQaHY_MC2 z#hGF(LofvJnN}7wa&O<_0YlredQiR7u(6FqeP>}|aeBP>rV#PM1=6v7z;4p%cv%o? z(CE~~p(pSffryxR18|}_Hsrvw@EJq{U~)WTxk}OWI)D*>l)C=C*%rVC;(LQbLtTIa zHRU(>sCVZ{zy2Rw83`7me4NP*3w zqe$vn$BpJ_(|e{4Zs%o7g%c=;9%)QR+rz{m`;qfu7^_P%L>pmusXyWv!=%p1ZyYVZ zq5@k>OA8ehRpJYks6KBnm8cIjfd9eQKoJ?jd0Q*%`@NgyG zva_}*ztv2td`7tAZbycPdw`T?{I_o(>pI$w>iri(bYabDxk9(1Y;2fqJ{Q%>KMu3 z{_C|k1zwkGKA;Zz>-FcWj<)E-`84n@yD@y&0}^_CpcA>F<4s!X`@})0qu>aIU0G?x z-Ero?PKGs8wF0CHtMj)F;m^pL{X+vrmB%`K5{II3q5cI*DS#GKkxF--^m2}uO-U4KIt3(h?!3KZbA>}d=R@8ske zmFVisga*R;06gfDIoLL4z{C+aLOYSFfO>N|R?gPraCzB)^&L1V-++)~%Af9h_?!DV zdH~$rt`JQRwI|DF91pxw8TiO3fqw#pr$V^d>u1;!fPT5Txu_TzAx4!E-~@4Vt6jNx!IL_|`h8su5nnM86yflY zmPe{gwfS0!DFSeUOB7A>JqQa4k%P7gFl8j8r9~7YM+Y>;0Ez(=4deg&@3%_6tGqcb zK@2N<0#XDVo{PxT8^SZ_n{RZ|>;o7f-6xmp?cxh3E#NwPSgT};edW% zy0k_q;AFA^g68A6jDF5)r?O<-S;#KdehjaGj2oJC72U#Ux ze?Uk?B*;73sNYKh+JTbtk@RyvtkdK`!jR6J(iMUNx_)pGCrjMPvH~Fzft|1KN=~<{P|Gq% z5y%vElaSV@&SjT9mh7MOzzd!UdKSFNArFgomE{3omjxW4TF`(#<8e{nrT31|NzvS4 zOyiGDM=<>`VAscg`WUseXo-oTv!#Mm1x3DmjfIITwsCm_nS;A_8Co8xaiH41)W+n7 z?_2}_X2gK!&FiICrW3qaNkfR?rWs>WfPCCdxshSpvcIdfM!!5fz6_{2nx30U1pH)h zFnkpoSc7y~B3T)kK>DG=Fy9IVJc;QN`*72=!EQ6FDQjL15(4;VXB{0>Y3SjMryTKy zHFH{F`sf^x$d(TU=?*yZobRulNn_=J{`%JTHZ8Eqk(89QS0dCVhll%57km7$6g~nq zW0v&ixh5t2GBrlDRN?gANW+T9(i`!|YdTM0DY@~ydCcYMFfanV4u z#CnMA!*8OPaEcsfU#AYDsBR{wEU&87-axHVef@cK0ABsVNtFfz0|Ss5b(@=d1p2QW z3VUGN06_Ht^jbs1!d@BN4C%90^z^(9egu`Q7ChS=B5^GiU~bu)i3$*y0Ne{aFc5pC zMJfVg-@N&q{TQMTQQi+Q#+63Kx8~7538;AjbaI)ADQafM1j67yFsahM0FRWAPyx21 z{wK{;8|wY2M=*9iNFD=*_5fxK3#DgcfrU#XYh&{%KKJiWPkU0ZK6I%A9pr#j%{2uP zqSG98bz%}G$xsLak?ibjoq_}Fdp}h%pOScZIZ!%?XW#MoY53Nt&?@hK+A*=maA?id zH$jnMD}^V<7i(%dssl3DUxzAkh9uAFK#r<=y6&z2E#Q*+x+;}3ipQ>HM+q~D*yIQ7 zCkoh4yRP3|=^B2+>Z-w>8!I@I&mVj?FgOU#>x)wN1B8%=kO;xpFwA3nv z>OEKdT~O5*4bsZZ&K6tmH(U6!76S@B7 zm@1?j6y^=;UVdwjeyFdHwqE=rh!zJ11|TtMwiOL9rLiv8gNzAQ80{*Sz%77D!hjZ> zB^UAezkgYUg$Hsx3$F$KG06}dVQ0+dNo)~$^!Ako`^S17V z9t#I)IR8XFA_FN?40sV3E@K9@L6|Tk=jti~JtD|7PwRB7gRC0WvvN9UVsQ8!^ZWO2 z_~?p@Qw9w>q(9l;({Uuneg#p&$Tg8eM)#gDJdy;{-TD2BEEcQ@Rp{d>g6AEvIVHoch>+d;-j zyQW@zJ#6Asrby}kR7Q|6xDpw;I_4z;xjIzfpnjoCKhM}`C$I5rf zF%A~w-<`r?XPBTR2eIHIk574Mxbg12duS>U2A0P~B*cbkmgC*OLWpR8m%Y%3TIt34 zncJOSBPxCUlBMCo3`2@Zxr?n6H3Ktm)mhv3$8_X_iE*)Lf-#!;Aq3RC5wATQVyU|}Sxrq$Ol)uY zanM>=%ys4M*yRlg3;7?bi0py^J51loX>9kVh^W208qt25IdUW8V%> z4x-EQj@pB4UZb`+{5Tnf1u%Q@d-9r;+;8zFryPZ+nO8mkEi8NmAaq<*^}8S?1zKV2m_gB6 zqi85OA=T`Jguoe#$;j9gwSioULBg$b`8&ZI_P#s~WDo8vMNK`u z73~T=hrQ*y-VoNK#G;`Duux1FA0janRGEeHB`S1YBk^dxPg5l@Ep+j)FG?<^LAFDqVs7N!_%&1XM znQ$dT+&}lD8bM&m)%1X{zpv@kzn?KnieF^UY;9`lz=Kto=#}6#)xljah}p={HJqXB zTPUZ;ktIkD-7B^ZldInRo5nLa2V>`+oSgpb_Yl?;iud@XqeR~frYx#S@bIiZ8=5+a z>Zg9Dx>S&rT+9cmx2~9IimWmnjP_L@eP#zR%*DCe&Yi)bp${KF;?dI5GAX@IgK`Q4 z^6l;I_Cd+-U|N%;=kH$^02i!izeY%_SE@!Mpa#b(B{gZv3zNKxybtWz+1W=7SN{;` z6;OE}Yy{oSX(}>p)?;97Dd7QQd8cLpr^V!VSLe|TSb0q-!d%itfm; zcqh*jD>HQ!;lZ5S#&x?omMZn<=y(HjQ-|b*63qu6FANX-mrNgf5|PfXn)>*_OdNi5 z2t8z^yxhcJv`D4h4?)M@J8x?TXW>fdjY!8hs9j{?*wxdcVqlP}FW*lKiu;p1HD=%` zV75t_^|~V9JonSYVG_{pQ;bXL>F!EOIKT{)Bg6LEUkm&A@p_{98@%SqD*FwJS8&qx zWLy4Y5=NA=k4f(o=~0RG*w9DS9Szj@=dXV!%*`~$Fqk7T4c(_FoSB7J&PC6JZs3L0Ru7PhvwMm6(8%6uc9;92?i$0D`0qnwV{3g0Scy=u3>Y;)4Qens82 z$uP+8?v}A?V4vI4)ByB^d`v9acl9i%Wg)nncLiRhN)J zdGlVDQLIOc+kMx|9%kZcihSC_#<^{!{AfWv0kluc$8MlLidyeYL*5?gf^)4YhDFXF z8~@4eB_NT934ApJtc4t<`S2mzhQ{w&&buWmK>X#LYmc+Pwr_BN@Tr%WJB|N^_pDMAWqa= z?<@5#K@@jm;Vl|`Y5n|m(&HE6N0%B5{zg+0zkk3+gb!^HS9N7~E3f%arTBcq?8nDb zKo=}xdd~@B!>1iC<9ic^iZ0#rXN>uM?SD6pu7jYTAnd=7%_6gc{dp1C(mfwy=~S!6 zdMu5VTO%}lN5kKI7LVSKV?h@R$U)dDHFq!1H^QG^(kM%^V?1w3AN!N)Rcy}1KvE7f4O;_<5 z>NSH=--t>Jk>%Bod~q(%*@+ckRnLPi+2OoI;iyH`vPCheX7S&O4-CWEko?I~`BfJ+ zz&k@dFS6S4Gs$WGrA>eRg`@|Q#0vu1N9-H##PPN-vql}iVL^91sBQ^?ur#(GZ33}_ z#qTPSupj+xv`aKIpVF@wOYB|`FpPI2TrHqHX0<&*^vaLKNK$XM+RX`Gejj6cw(*Ds zb-FWl{!=x=Whn7~%QR!fkC}vH60g)ty(C74np(Tp-1(1ZYk^D1w{AX$=jrTg{Pxd< zNkuGZDP=;AErOb9c79sp`HKh>rH;u> zpo6@8F|}rGtdHR^IJ_57J;!|2%O4BGZz8(YTC(MAHukT{{qKd+0bVorJLev{$G7rM z7Jf$Rt>#V)tY$n(cYh~u8Silp;=5RKs3S{}Dmw#ajgvS3dv$vL9f^GAkX8Y41ELuS zj<-gOrF(?D3kt(@Z5X$a7Zi?Zf3hc8lC!~VX2>9vfI$0_PQt;pm~3{zmnxLljkJ** z_X}?|Ym^e-0{{UV-wovLi+oPp_=y~tAl^`@_dRm5|1%hEjJQWC z{I`z`Vv9H^D(oi-0Ix=c!sH*|mX3|Nn__NZ_(@<)JU^MsvH6!9eaXkQ%KG{ZNwpl` zg>OGTUYyZUI(FC*wefp>&3qM)hc;s0SD z64|8~^H^e-GaM4@_Si*)vZhVAbA|Zy5zi?^X{g;RP81N$E3_}$QmdAT>)nWbXBuU% z$1~*hznG~KWqtU+SA`Avo6}q?>-Fn+C^XpwT%|}s^A^TKj0vI{+}Ubwc8nypwYcB9 zn-q)``C9e6&s+vHRtH|MI#|!|dR-mvZ8*}yiu-S6v>`^Mxn++=TTt%-rb73>U@fM= zsGow7TiK=4+@2X~t^@xlZDyx=qT~0NSg?`8U_w!w3SFQvKn77JiYNAjC zgoI8@y{yIzpH(E*y&rQieCE1^t#nqx%CS3m>q@rXWW(TKBlS7)e@|gT4Q|xDH3CC@ zhief{qK44Vdxs2bh9{kt02T9rjh}Vwu0;-qEkDWIjkheFlmz1Q(+BJ-7so2Y4LI)H za{bEp^UM=9eKBc~w;Vt2c}z_Phhbp*(#Ty^mYXrYL}Po?;om38OH&!II1@G6eW@l^ZJ| zk7*3Oe6=^{9yJleQaS!vy{Qb{XWBn+;Y#fVz=c^Uq#jMOBeV_+;lZnK{?_MuQeSn4XGi^R8G{qX5OJMmwo^)>r&>$xcp z_SQFjiyZc?IXpV9SJ+~xp1(=OD`usk1wCLJ%*CZA<0$!cThhyAQTfc+a=7;|R5W)l zMA?Ipn!|^vw**uLp&tKxt9FsfsIF}7Xfn*6gAcO!&NHewuSA+{T=3^_)x7*2@fXL9 z@!OZ)JYEhl+GY=L`V5`A0B^G+l8tB8GZvaL{&$x@0G0cB*Sr6{DX7t7Hk|z-cDjo> zO`PMTaf`s%qA!$mru~CA8Q-{3hX^vaN=TCB%Ty(-e*P`Qd`7&z{OK-o@!098)#jSW zg^}i^NDi7SgMXY8Q>VZcSd+fQpYht_uFA9&Gw6L0`iMMu@Wze-FFx_R;zslsQJ=sBIw*GnZwKU1-*qA5TBIFGOx= z9_4qImq+epAbNdU>qw)v_V2*E*8&VSC?oIw&qdTa(#Xp7Mf8*H;hJ5`C8M`C({_vG)pYaBpa-Pdquw$}^ zJ00ExqwjYAhfOHerW49Y+(y}rD?DH@RpR7(lWrBs^fhet4|htJO!RQ9#5{`pjh%~w z*skA|3;yi$CoA^9?Y17~0X z>4+lSj{cFa=P`>G<>X)}n!HcNBicQ3`Y*te_x^+5=Z@LnXgVG#x;}*Aaj9YIUVo~% zqY9=6LS2*5#6%w0qln_e8sTJcxYWz4_CT%KpBT}^s+GX;=k<&2D&)N+T0Jr>1CK&uK({Ijv)0w&OqmXDhJ$@HT0 zVz=j+bmH5$?;+E8GU!7>OuVgf8enCiOW#-|7Dh zIVP5=>iPEV<%_=1P&~+R0g$U)k%l(Nw~2{aP*{fn6zKfUC1V^9HpZmg%JRy3l{OLg z(DYXdE74M9>@hdrFjAJ?`jVB;kBERRtbye{Ie<2NH*>gQvul6`?LWC+Af_H9wu(To;rL9WlltZ4?4XRFt|h`?<0jvpJW9EeGGb-rnTw0d`_j_>m}4>`qlL>*%*8Rg(`v2yERGvlr%oqG)5r7}Wt2dEx6H(TSG3os0GUAT8G_a!?T3A*a zQ~oigVBH`;y2OoyFJtHx#@1>w`48?%d#!X!ix;cw)r|I5rf5Z-#=b*4ktBA=`pN!k^hE;gw(cj-oXOXB*bJ!o z0u6pvMF-8+RZYie0bB~zEY|qD2yAGQguRH{o>6m-`)j&@4FCA?qiS&LtptHGl)a!R z$P#}SD)zGv)?dP&M}NPy_50wKmP6ym&4ul@Il3jahQU7hQ(?yEo|SWhRYMvgsjqAWmK9T20!1bsFC?l`+#0q@?2z>3Z5_H#v*ohB(5`-%Kpmj%R( ztQ1QtkT_W@1d~LI?wFF0o9=3KKzyrQPTEfopRLCIeK-9Gu7E~V`XVb;c&6s{nZ?CR zGBPs9lpYvh_I7r5)(#GpL8O<%6d?=P+Sy6bG@59!dn%B^EM3zkA!HEB#~pF~*Kwd69eiaBJ9>We`S(nNol_`Zm{ig+Ao2zSip`p=7zH>F0Pm-2W-XfEUw| zItQK(OKal#RT>Vao4Q1LS4kBQeeL+? ziim@guoLQtx3U=Bm13I@e0Vw@R}3PFXXWzISsIdRVn zu#-UW&t&T{7q4; zpMD@o&0hUoI#;^{i2~;5Eg*n7kSPAePXq-i0n1-k_=(KJAKt6F1zZFpUb%^V?nhw13wb&Ue#D7(65qDUH`Sm*ux4H3xppYD}+g>3+&=tHG6{YK;L# z6)s9qNeOag>)zp`lM^62kpO=L{f)O5WJqMG-PNCM`aGAiq}gvF(I<_YlbqRw{~+iwmyg zO{tYOS`yYki9K*=Y7wOnR+e@6lPQ21pT;oeB3VJbw4H||_$B3LYlI1gG?&2p-0ZunJ5(3@j-mZv*m9Dm6+B0Ed&*YEY7IjSgg|;se7Db%ozhqo(Id#OK6Op_>kkb2c zR)9~Tp={ip;oNL}F>BXRqx;RefYM54YtL-go+>N4@iKEL{Uh&FiluG7d7bTIi&^}Bj z&A!+Bd9LrXP*1dV(+c z*^8pc>t92xrMr>vjCH~7k~JTjH%xMvDpz|N8+M*X+o7ts^e#JYDtK|{4Kw+ymkmFQJ+4y0|2Vhb0(F1yB3UpZTF~ zalW?QVgG?mPE@Qzl+}j^P9j!SI9qbptCp9qNeVmy%;O#C4zO_h2x<(1Yu`V%f&YKO z9r?3Bct7QQzuhdvmoh8a3Q6+Vsp&-Ms_$%NvY7Z`Ukg`w{Pg+acMmsBiH*GwH4g6t z>}IS7*RL#XY$$tsOU(bvOwJnGb_$Z0lPXR5pmn2fa+0`QPkmidRo;?_=^bnFdcEPm zuguI8mCD%47Sng+Gh^rDS+RLSf3EPHiy?>20z6pg1-PFS!IT|#ljd#?`Q9F~2WTVB zzq?%d)cp9t-j&XVhKvyZhtxd$4B%wKup*mwBbzp>+leIpLCbUHO<@1nY6q9kxd*|P zf|$FZt?d%zJG&i@k01}V(^dv(I{0$Os`}X3mh)ConWLyw1fXkTRB;xf|#qD^XclnFWM6X=&+z3YeDk9UAF~ zP!z{GGX|xf+N3F~`Dn=sEd=aPJvOTrZvN9V(?S}eNtMb4n+vntmDMO$5(2oZ+ISWIN(0JI758zM* zcCFewVVefG=l1r>PEG<)9)$r|fu%QpNr;_RcA^R{lPGvxRCb2?{8d&BYIyB&*^Hr6 zVy%$>PrW6sq_D#8O{Nh)Po>|}gk5#i`&Y_W8U=|KLI@{H((As8nw@w`c`#Y`(i96L z+Sbm3>@|+McA!_|k*)%YMBt`u%_q;#&nq5_C};IiHFS$(&@nKq?U@$VhW+@VxFs14 z)lL2RF`!LA&b4c^2+mYr0;szzTwFHtgO5|9+7>9pts`F6Ylp<2a**)x)RaV5#52>W z@jEuGTDf>QqWU~88(i&kQ7147mvo!3@ zwY49>DNW1W+uoLg@!)|>J^NZPJIpq22GYlhSq`gp2B0^GhKAxJPc(3NbEVBP$%KBE zxs0_vQ(r0@&yY8tf6!~YBIIJxrQmQm@)899&9AJll)pIqJa!~FzG3u;!@Fbm(7kx7 zf;j)xoYRM?P-eOa9VuPR#}Rnb!}Qzxx9vz*KPrGD(WbbWucRaOEw6dQo0>@MDW^^y z8*ckK&zn}?2;^e9w0NPH$u%gkdAs#8jM@&_>Yr;jgWJqZ^$^>N8^AxJHD7;iJaGhrOgDG6dnMPM7pRu;ruxp?exnc$szMbtP4-7rTHEK6IW8mr*P3AoGR>>53u~6GnaFQ|3 z)8}-B5Vf?jB8X}jD}OGOz-KJI+(KMP{#)3t^`t-qB#envq?U0T%cWwyhr52=bR=iW5XSz2KwR4A*YG(B4;Y6Zn zQQkKLu{yK9wh!U2|9LOxBz`^m*TJ`Wyd90C{#jj>*dXC!r@@~6dqp_KD`Js3UnKLf zw-Q46u3R!|*l^jg9(=ifT$CiYe5kP)S)>N9g1DXd)NDBs7Ek2mKO07u?F*`Ri4(hh z_wlS~cFyS$J(lLQM=kdc#7ScW?Z2_zkdl(J1$KUA-A=azH#LtAnMAs!Q$8zKf+bKg z#iCZ-JJj6+=fuXP$OgJM6!i;PKim)SM7o>Amwjrw2lATBsjsMfz(6@rE;Vj1T(2PQ ziFx1LF!%S7_*-{J)qmy!*JS;0i9=Yp!beRp*>7)6#}Fp_N}Mzb_AVE1%v_z`RUY^VkUl{>ivjPOQyj5LYleL(jzi+^!nxIFSKY2GGp5gB zT*<#3!d*Xs6RXPZvD>FoYF~GREW8CG9m9C7w|k>bw?om!P%KJTS2uZGz5CIWc*n0_ zs{FWNgF@A1Wdn0#-{8jEq&zUs$#GW~RrzHM{E}HQL(VB|9@Qi+9;zx;2U+Bc#pP#R$eZ2Y7;t7+b`=0TYdm^oy0>I(FC?7Ve z-k82PKUfDEuiYE18;o&@NF{m1(vtP{_`ATQfnJL&7;IN@Wr(p@JoxY8qC!@m>?bV} zn~dc!Wx(oAPfy?XSvxLt(ni}X3R!i_X7x4n^pFY&2-q9<)Ju*;a@O_DbUAx{+>`W8 z=4dPwWY=MWnj!M-rctPhAbS;`x<3_f^sS!d?H{-3CNlDtr%Ob)M$9gUL(cOxk|I-~ zXKt`xJk^FlN0{Rh9>0)_hmYZh4Ae5K&(3v+MO$Zf<0tgRwMBUuEpw&Ueugc38ak!4 zXQk%=F>ju(s zkmNDpnHL5ss@O!nqUyif!cT1D@cA+XPaLsTY08#8#&6s_$tlfzak;KQXf!ZKtE=&6 zW0vS+Gu;G3;F0Xo+gGuALdmqP!fxE{b8hZat$k*<>SwWcbCN{u=zu#nv$;u{+3RDd z6e!OM2l8bKiU6Db+;1&ZuhadtZYVuNp51^h7OC7cb7%+xo}9pX>il$R*3AdbBU=Sj zi~4F+(nf*9UlV4_^DV1x8U;2{QHc8Ht+P_0V%GQ^Z%_^4Z&)By(H5$;mABGyHikr~x-1ME5{?aU2AV;pB78>NLv$8+W-E8JX;`0&_l>~(w zR?n4Bd0(Z0BRvTZlR`;DBld?Lsak(TM@gwvyMpZ(yrt|^#U|ftew!Bs7|Kw;xTKKr zYt?%y`jhRm@%`dU47;nkB>vcXEgza*>F9hDX`jH?=Z!q+zxH#f?RQf4m6=yAv_>*n zuT06#L^@D1DI6^kWNn5zHOQNmM?2YKqb5x%Ew}?N$wIXPasyV&YyPUNBv0t=cBm7_ z#1h&5eWwS$k(@)#cI&Ul`Pw|^fSWo2pr zD+n=*UF+H3O2_r%=xQ)C<)h=~NocJo6~CuLvY3sFzcs=$>er#Cgz!Mv@1kk?+bV>h z$TtdGF!Q#Cih??kpG2O~Ht)B2(;b>9=$`^nq&q-Vu3D`eu5Ui6xOj*&255p;I96P_6}1nt+?=f&5mHCr*bQN zq;PNopFCG;i6s4PQv4?0IWtyu-rsgZXB^u@S7K3Qo$m?(j{B6Sm6wsxl%a;y-hdf7 zkv~f+`Lg-O2xD05w%#LBQU~v14`BuWEhCC49;`2FWUOe{K`hU+rZfjm)BX zAV@z`LNcj`*t3(_*aTahFS#HAe(|JHBG;=_)cBS=y_9)D1|uD!fkkp01E`8qzT7ofv1%M zSN8rFyxUjjCl+P!Sn=L^MeC$WxPP4;waSnxgC4pLi1LnOf5u@4uyBy|2Vi3bpRq`$ z93LNdcct87KH6#~B?JbmxU!%FIYQ*WC1@cy>N9tACfQS;T%7-gxkoUyPU@*y9Llpml0scV~fW z7!PCDCR-y5p8t|DPx_@TZWPBSt+7vo&tzUCmKZ{FlV?W)ugbyNDB@g~lcOXwHm%|h z)UsIv9;QoMmpW81{4y|T+#8{G)*IFPB61yUPgLAqZQFB#59-ut` z%ZJ={1HH|6#pk~NeXh=In*vpcQ6XE!iScFNS^4DL<6MYz9@~x-&8~vnS-eg8nA0e! zAFK}E2P9AD6tAJ0pHvP*7Q=6~Os~L8^4B9UI#H(T)mRfUY`I-Ns!^2N_+Dfph5^7A z^ljgHa042J(@)&v;M)RyTbE);X7c4il{ow~Fm%i_v@oia^9QvfGfnW}1;Zmg+JZ0$ zK|qm%!2Pot`W9>A9Z|-p&`U*l4ahfN@fDYQdf)zPX0?=5NhaU`{_vnszjC7={d5sp zV$rdI9|p;>1+0fa%wP{(1u3YRgtz4r?KEe5c$)HOW2vxB5S!qlWKhglcus6oaTp9m z*;pu%PG>3{b03Gzx|5A$*h-6UC0^s;xL6FEVUSyrF52aMw+jdrD72)w(s@`p?nhscG4srsfniA#GWYG~A_8+WT@a?vqd zN9O>42&+mde-QCi=e-ZF{s-A%mxHg6C&+A&>bLy)wwQjhy3-?LES6xI#K_k8+|6uz zDVBpFpI&RG;Q)0SJ-K*-A&FukYw!*Ki-F=mJulN+mwx7iUftjZ^JuAr(lYM=b8S`&u2wTzk`7N zX}%8dOD3x9=2|1o#V<>CbeHrxOEO9P4$N}B8Nz-Gql)5*_MI?P_DI@AymtPXM7bDx zeMt_NH4wV1i5;WoKg__)NeP4G!<2Z=k0+daB0uV=5icPfgSxEbHFaXxf=H$=kMEf} zMbrSX=LLa?Uy7;G&F4MNdIkIC+qU7b?~De=#*SCJySu0D$I7@O(MDTodUm|`XxeMF zfV1x6{KQz5{f)Fw!_{cXH@h+yJ2L3&;kP-pq8m2GRl{3O`MIXLNLmP!<4KznCM2-L|bgT5dv6*dF~6)1T}{{S zC7iB9|0F4NNUGmaS5I>W`BoUtezJbDQSIjT_;8N-!oyzp*H*Q8mxrqp9@>5- zTh|O~&pm{G2Xvav3W=MU{$)bTFJ2t=DB%XoW)&6jXFzXQaZz2J(Pno&BRLV`pJW34 z6U#zELdK=kk-Pmrcbr=rHT3wRq{CjbT^*}+*VUU; zx0$JA!ns*HjwT-8>DlKR$6MQ3UtQ%+f`i!D$jB)CY#UhHIE6aJY#YFVE0=KJ_=4eA zIqh35eD$h=4IdStHf9L?XZqklUuf_n>hP8bqr%0swCe3v`sS-_Z1ccp%6HwJRMXd| z*NBce__Mg!hLVL|lk!q(3R+ql`T&{hA`HddJnPXP0bK0lE%=itmt9lGS=zF_af4q_}L=$WZ z$J{O3k*zTKOfsq6UWJYpv*M-F9_f?){c#7G-4XNXYv^`O?jZThtts!#$?ZbqEdMEx z2uFdefTZyxcI5E#@~-56{l1a`gu(B(raa82AX$=ml&SfXo}OMGMC1>ApFhvHD~wPI zr^2Z@KVBV%BA~J=JNac4U|=o<#`Wj@5MMt*HKg8le(O+wwoeSD&e!B&ikSE4|0Uiu z{0xn`vtOYSO@WV#k1NoK(|ljpmy&`a4v{1`oBeFEOBESQMyTR%%1JeJtpc@GceM}V z9%$)bU7_UG?lgzC1iyp?DpxJ7feWd_nE-rf68qNmf(G?oJ741M-JC)ZJD_7UgUs#A zmGhHL;~Qjn*eFOwlJ7yi8>FThG4`i-Am>g^61I8x^DWn-KWov*zjn?xa zg5oFX-Wv~ecS`c0TkzV=n;Q=9(?0H<+=VqS@)g;fXz17G+vBLIc=dL}_Jq{ED1Klw zr@y=9FvShz>BUOh(SMb*uUj-j@|aFPUv671_xLli)$)P4qX~QFD_E$6^OI}q*p7*R zN0@nSf?I-#=^qx>?vLF@ylSURq;fT{zrCwqT-Qn3&Zr6=BE0^#ZeE=x}9tCCf77nGShMy#c_FCY&yBzI@?9yo;@E zY#zvLHDED=-qH#E^Y6?3d7LAQ8gSgR(;b5tbK-CzVvKmz{CY34efW1)dH!+qXPt?( z>Kn^gtG7EYHkr8kJQk9z2&njsPFpiBP8Vy3%-Ld9i)=?rX7bX#RwjPMbJx#^bz2lS zZJj{!m<357`SURt=J~m^v(t{6&*)2;YcEen1>~)E;Qgl=+C~SId8opn-~QbN;1ctr zNMa@sMm?d``&aq%;m={Tc51E5x2bwS(KG8E3XV=;viiS~Tp$ z%pY8Vgs={+QrWUUeF3|W620~A6*ym>oSb|I;KFhTSihBey5wyt6ih-K(=IeRQ!+3x z2%L1!;N#-zL&dl&`$(C7Noe;v6Z&xaI?d7iHp!Y=lP)`*WMxheMV zETo?D(?n$W9@{i$--)x8@9pdB^Z7U5E}>nZ=SqoM_|p>p7rK5N`1C7y)L6(y{*9Mf zAw8a}7n|VjZH6w~U0rR^x3}fRLowRZC|P`VkV+bk{AnOK!uP9hZh!qL^WWeT3=4~4{;1#mfc!}brkB?=A_s=d~Oh0t0 z+IXKv?O@V<`T+{a8=)no;w}h^g(}=`gB(s{IbazyqR$GC`B)XVZjeLeM4`Jv_lwJV z2L`fBv#H_6ZFBdk&SGfMex5>GSot0g%4BDu>uBgUD4WxM(z=1`2SNwG^zFa>WkG?E zrryD__6|})T3!ir>Daf_> zyE*%o%PT9tp^{f|e!3`=VW_RW9}bJJ^7zK%V4ru9^tTqE;aRBP7jlO37vBsBP+$jR z5*t->_fA~qt5nDWhr^Y-Lt6YirRO#iF3ih*V4|S0+a)qGvI`!xamXCHZioS(WY$Au z^v~G7sOCJp1G3`zaH4|N=@F(Z0Ieh_xS}2$$~RE5-rm(+nfI?>8T%1rN&})0x==27 zqpm60+bp@+$Tsm&cKq=3`-D;c6#T9&e2+vM*rw&hTCrnhgV@# zGMtJ!P;ah-lcv&rZREk^N%~Kxo(|Tw+OS4V#sg)nC+I&^(x?3F{%Sd}E;l+#)z;GD zHUxe*O<&|3I0G(Y>TGKy&;{h2X($5y_Y1F~M4Q$o={8tfz6N+|EaW|k4|hfN_91<< zeFsqEb{SyWaAthzIh3`jkg2Jt>0Q<16RP+DPlL<0aIgdxIqO{eFR^9b$@>$Uz7xlgC=cPO zNJhrBr6qI-F*Y{#e()LSIItk(VZg7M-Q0`@0s|oGdAQ&o!M2$kk{`VQ!eL`eI5pH` zrWaH1=LNw3fJy=X56&un&wmzR2_^h^n;~;mPAB%&jxvE(v*peL>gwvCs?QUlTw1LJ zz#LT4f#<_Y9%jN%0~ZBiWWcXqchOk=w{Nt|$nr8;{RuL~N+v~F%y zW@3O5Vf5@km7)P0CJWWU1os`bSXs7MG_D8606aZ;kc~h$DbWf&Wf2yBi*3&T@_0F~ z@x`}OUDOkO62_H{4PUpvzv9)kB(i!R_=~HV8B7n=eqMv^^0TMs68v%`Dyp^2rXROc zm51soFE26XE3_5{d{aeRn`-`rGs>_eBdrKde64Q=Mn6i{0(d%d_0E~zcKlU>`0QQ| z-3w!#1ja-ee@9S-lOctce>hp>!h)nAk%39$>}nho@O9+x=!a*n5vuH7VV0w^m(m`* zNB{L%C<`9qo>N=P*wxhq?X^JHqJ78&Is@=`Ybbj`(GkBDWkI^lAV)TZBIOK!G?@XV zCX_6+?XG>u$pQf&U{_whxl#Neqj?VVRf8yE+7*r6j8D{z7yKfM1<$O;=J|6hRA9(K z>eO{^?tpd+c~8%y_faZ}NoREW`uZ5X*~meX^VUpbykyS>zU(QP;+OQrBWmXtFQ$rQ z(o<3-l1-B)C3}oPq(oP#T#bx^{<&t$)cr7MOhQY@7#K{vkJ9%M5T+x>Zx!3d?c^teNF$4B9Hx%ML+u!iM>@UUYq=c8SI$PLTOfBdtgD$pVly(1%`o;wSyf`Y&2eq9V>ZSLOQZ}^=-DzUD! z(|Cz__qJObqdSqrx}pk@5}{+V!CH7s+{gP~V=Q%Lma}$d(E=1AivQm-6qbmghDZA5 zQyOIfi}Km3Tu@id<|o>b>?o<+?e^u_$kZQ>?9te4EBnZ$Bj(AZh#9L=0UWzVXjMlO zSR*1Lm`JJQA}DdQE~n`c4@|CGTRX_#dqVgXNz0_uP6uipaBl!;Y1=#wVfOWd?qiT= z2PrBv`Du6+T@Z!F8wGZ9)7hq=`$`r+aIS(&S!w6YFergm)&7)Q4$=>`v=r~#Uky(( zO>+K1&vVN6<)*yrJ>rr_h4O(&Qk%9lR8fH}8k3wH7865u9CSJB28muR!qk<5d#(oQb;h;!LALMCTM9cLh76EL5CM^7^F`sY(=G| z>r|wN1|L8Nf7VqRa0|F7ooY9`Rw(Ln)*k)|Z-dh_b{c3uN-~MF%_U!cr~S$ra+#Ut zJYc(elX!<5c`D!FwSZXyp*dQa;Mz4Dh%)CxRU-VvlHT_{@B6x}XzqP=Wt{%Oxb~$; zx&BSprpr2kw9u3cE#*J}hLUT0MVTltV}M%O=A)go)SvpMKqV_{jUgx{8xqgzeT855}giPk{2S){M;Vt#&{-tZBC@cJSX4c zy60ItL@t`x&Y^T78q-UHmLy~E7pv3P8m-{?1f+w>0HE_oh^fN`KX<&cVIf?b2}LbI#k z;D*sNb}~ef$^o#V01(I(4lA&bnSc<6lzd8bxQR|!c=!&oUOxQwq+P@J&3CY+LQ+O? zt=z$9k#mokf=#1PI*lc3UMTNGKu8Xt$^ALX)|{qw>P;0gT4L$VtKIKa{k)9;k@6Fc znmY&2qP}tJN28|v(slOwFS?G*cNH|!k@85qvH)w24}Kn+a}fL6DO{Er`Hm6Vj~m($j(Zf!Vxf?%&W135op zgql~q6QnzH3v%%=fDpm#*|CCRPHIZZN!j0#OE4bzTsg}LM6gnm)6&*6;3F6)*qPE@ zC2MBsi#<7%tCf%zqwE?S@jNv*_{_b%MDiZg z*q{qxox&l6g`rq*&dY+MNAacgmD86mPbkA5RN7kzb|OgvSZK+G@bG|#p8|UyGG%Jw z0hQAxMb=zAR?02Y|4W2L1uVfmBg3~8Rbp)7Ei=O9|M9phf zx^4>g_8YdSgTM3h0}!gOm5Hd^+uPIl-O@>@?emHZpKj#u+&bQaZsj%}58vD6DmFu&!mx2(o|E~P24l6wP>o)qep-?01t zvFraq*V@w=adA7AaOoGprc>s+`^xEyg*{zeQus3x_uhCCHFtv7__6a+s%OU??(F5V znUym|&(5l6y1VB(7t+jc$k0}6Lrjc`x|ewKOa*=qJ_?!htn=`AeOr8wj`|Am<6mq) zuf2#SrY1%~ijs88frtiZOp^E;;D#kL$-@4_}POixM@naB^}kgIJF{)Q!Av<>lo?>#l{xb3YMs9y&^9ih-{iGfdq9U`=;`RdLh%@W-xWLSJXUES z;O8@?5;V*6-qn!-d2$VnwgKeRBb#pjt-Ay%L^m^blC~B=DNq`MON@cejeA87ED5#=GK8WX}9zQ6b4Q~N_%0##M zK8WIW(Twb2d;HI2H_E0nd8uP*D1`|M2?5VjE%I)JIBpjH5#^%O*Icr+vHQ_nmHGtA zkU1^_)DZm=@4}pk6S^!k1;KV7n%nc;#t;XEhl|A6AL(P7&Cj)vXWLy<-Ga`B zBq1x3A7;fW3DfaX-zF_D>{Y5tI4j53r@OEcSAIF={(n_nc|26z|G&c++t?*B#+Id? z@fh)xY#GK@35BRIOi5`Wm91RKz7|Cb*`g3NB9hDyhV&#c(q>JHiWXT%zt8CTJ>T!w z@tQx*+&gpbJ@=eBpZELyc^@_96s43w!J&(6)GDeGVJ7{ag0=gGE@I6~4b=J!^CV89aOO3|&{Azz&4nmewwIcr6|K1V&t6 z4A5wO36}m3Z3v1by*w29&^`uJEA4VdF=fqnN(5(P)$tk%>4J)xHm^8F zj9&NDH{y;)*sRGd#`x3eA?(h$jB!jhUjUw!rsFCM;TytmjQZ1~ru+L{pZ(B6mQ$5I zks#efC$AwX;4-B6T#-ikSuV5>trIhW|95J*{9|%rZ?hj&hKFD{&Q)MC_AxqdnUnD~ZeNp0EDu!%(u1=MdiCb~t#YWRC z!j))&j4_|QXHW2t%t^8-32q3h$NcW;00!p`x57Ti?EVqc{r3J3(UZ0kO zH`QcIoYusPi0})}glkT4!N3%Q@s#f8t(QoW|Fr#;55X2nedgyPx;jYnABKeJHC9lf~I|+}PEW_#Gkv^z`G$v4z*K zQy;>#;1K-zl?(aWkV$MpEKv~Hzm(jq8T9V2;-BjBD5%|4;fd#?j+^_47F`u1Q#E(r z8amym@u2T(78n7f%5+3v+DMO1b!;Y;qD^IXqEbWcTLnCgIWaOP!m>+W(9@Zc2}{0f zYTx)$4_uYfBsy+(Gco8EJfK?8CBtJ)`vVAL&(A5bJ=`B!TAo(dRY0BQhRXFlX79PC z4ZEtNiMzv}-hYxNIkHm!)chgN<|w_uoBWbr8UZ?(8e9md?p9VmfAi|ioHMuM8w-O@ zc@Lj?zFz&>QtKza@fsL+xIEH2Yxo;j+9c7Jp7Qpyi0INWh2kWpQqtjv{Tj>kO)N5fnz1<*%A(5%3$S#t^4=$2(xf`d@PX-p%6Lv%N}%ge*Wiu zUkit@vC+{49aoFhkv)_>-@YO~lq4acCjC$amRv~h;}WASmvf1aTVP3L+T7GX4%ma5 z=%a1gSmX%wkWAKkjaO_t6hs z>OxI2gQ5MSK{DIOVE%$e7zr@~s(LG=SvbRiy&qq!y*REoze+lK48T)W%pECWok?Hi zuERZ-5Pm7p!} z!JmzCeC!Q@062{(v+8{|mu)Z6uGFD~m<5N1ykt|!n!}~n(A^6gXO1FFB9*9#l;@E@ zV25;~cf8c9rP&HZna$kTUhRK+P-n*?l^J>1^#f9Izc(qaK z!2EZw`h9H!U(xT}w2;GG7XueQbKgS&Tba`{PrsGJ2?L8ao&dmnuS5)4ryj*!C}%Pk zwIlilI9-64P2Y6X#>vc;vQ58$3-LfR1jmzwD`mWG$7}2Et8LJ68or3>|OloMJdOD7*M^yx{b4Wq_47aw5rOa`up9jhCM&cu+OvzRuiY(P zArb=}YisbkXp$fkI&*I#S6a+kE&azRss<6volNKr-HJJ9nFa8_#^66Iz3R}i6!F6@O9W~@8$C4D>(?4jJGV_zHT@MA|IRnqE z)c;WH8yJ~L8w&+rwd29Tg#ao6sRsH97NG7niw`vIuSD0?8C5|NDOe>y?iw%50Tnn3 zGH`G|h-u1ffco~o_#A5sW;*+G7O=KlWvY2*>^-#Yj# zFuWWAUJA^Sd2ki5g*b-W8%u4l(E>+>u4m6^4_bZCZ2h5}1MUAqBrooyd;tc!B>~47 zn4&)Nm_R#eWb-l(bfCBr+{L;)p86j+;YjIwl3edia07~<|7~TW>C}4RI z1cG7EN)Cn+eHiip8Suhs4+q61ge~&oR=!>rbUatk8GTg3{QZbpbIU`=s$TcxLJDX^ zgc)z6J5c2ja?#U2SBWc|C4;Fc?D8R@Ek~z7*e>_yo_OGjr%ZU6Q?MryK*8qau4l(W zLAA?+U`(5%uxF{i3mtpl$dOiFgbQYODXph1|Aw@yClJ;^l<){*{lo0B&fGNMf_c%5 z_{=n5on60+yy_k$bX)r7B7iu}ckQ}zSmU`{6FK>?p$Gz($Ra;2Og=|D=l8oLW26(X zz#BnoZ3}cM;8P;E+!%b|-}zUuLvAWCM>V%;(*Jgv6Kh~V8LYfpKrj;cNNfWQP|&ug zPp!kkjNo1a;2efuz;8GthzjEpmdj9nK_JIvr#Enxu-91(1Y@?V$AfG4<7wGk9j}IL z_l8p&yS)_t>l=Iwve@Y{lmaN{{6fzAP1VmFcCm<0=&K9^7w$a}uXP-Hu@6-O@GnQn*- zK-0<{OPtwS(KIs2cx?{x=+8D2*IHkD*LPf}{@p0wnQ2cOxh-4{dPh@~qUyODCH--y zf1=G*x$`BJ9y|FfERd@=Xfral|BH;Zm4VyIL5kwp#z@_USw0jXGrEp+2Ih?*Z!Luj zw3Cc{Q(s^20>1^Ws_DTUVQP& z*6S^hqu}VaN^?Fn9JX7r9DaS2X$3Z!TV5Exq8Drc`iEfGF{~1KJ|t+4z#{I_03WR( zH6W__6Jy#N&(-evll|jkcaEpNKiW%*j!y2Y@Bb+!ofM3Db8CA^U3(Mg#sbd6r{FKO zzQoSLq42=+wsL~B(0HmEl}c67)02X!Rehhw8|+{#CjBFFoPP?Vax&dlKXRbVc`b43 z=e}xaSz)AOANpb=kE<9x7B>cIU#Cu)07C~{1VCff>Xqnceeu+s8aL5U@Bv|S-dPNxa|wcr&u2Ezw-Ik|=T4zfreMo4o!`WBrmB& z^WRZqO~6?b5r5wGGRqgd<65-+^9S_{JwKo&6+Di`zv4a)W&@iYJ7f?QGFehs7!`)W zFF#3E4t66&qnHplWkp@UVXa7I2)DT6I)5Ati&7DKA&kd2!$^M1@RLHE;VbSWz4(i- zmQu9+^dt$xBW$9B10QTII>zy@5@4xa+W{*m zf1Xj@1S?CS!2=!4V2sd=O4$d~2bDZU7$teVNQ{Nxpm2xs5LO{w4Mc*=baQM1fn|my zeM;4-BxFbohv8W3ks0x!2a^I*=*}&~heJ7w)0%Ru2t+9prN`}9WdPg2V29)}krD{0 zCcgRa%n{|?&BOdi4MLvIV0&Q}pI7Lk-2#l+O-XKK&R{ZT~bK+8D4lCiXhC zcD}M*4f|8+*TIefy9XowItOyT7U#rxuSf~^kWBKbqg^x{4!PZFW5<&}TBj~xZq+R8 z!4E1RaQul(x@&LYFV(`v#8%rR0a8IQVxBcRkSnI8zkDZZn^F+Z>V-FcQt{S;>{LD> z1|fWfFB6SVTaXg#6SkNfD(M2f{LRSFFFsTiUJsBn#Aqv@WV}V5iP84y`opTzO?Xh{ zNss~`Vyt6v?3q;;OFN+@-qLbA^s~7_WEv8$lRGWvKk_=FVy;(BA*^FRLnEy!q9V}1 zWK_zBr&GXUsQi7Rtj=$j1*d{8u@?o0(L9av6BjS!YTWi)Nu?XK_)xiIUY}iRi*_^G zz97D2hx|IOnuhMGV64pJuU*H~yH+puoe-;AG3&kj*x=9PAlsLvbTO*$zVk)?s$MW@ zNv}~4a|n<)+5Xv4h4-w)J2e?3`wQOPl3vJhte8De`#65y``KDBu0%E0m0<|??yigA z&pROG+8Ty1s~7g{Z4Xyr+{wKgaPOU5z!$sztNkB`X~fLOya-pfjW<2WE2NOwiKUgs z_k>vvd)h{{K79P_ArQ1!Y`wDCM`f(R-LkgEy>>XxJLi$M7VmD#8@V7AaW9h;GsPE_ zE^*i4)Ly6eDmbC8hug~@3ozu9{j!fa8TfjK=-pg?X0y*p1if<)&rNi|JeeH3GKVak zz1E;uC3(0!BfwdKB`LK!rN!I7ubzgOA;;qxqR@r3+nPqlrUK%5Xg@<-VPejN) zw4xWky?=&USmX9Af;S=yo3#*PY^bs*>(iF6Ug)K)!u3Cmd?)vRB@@`^!&nuC!7Xb# zudL^1oqhP!-D)I`;wD$641={$fe Ks1+8psQ&{LpUZRr diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index a62038a7efa6ed5ded451b2199c8ef45faa772f9..54a166f610f3ddcdde05f3d60c00b4bf39e77eed 100644 GIT binary patch delta 86389 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 delta 84779 zcma%hWl$VV)b3)z-91Qf2o_v|ySuZv1a}=sfZ!S+I0Ojp?gS@z2)eiicU|P}``usP z{dKE$rfR0UcKY;r&UudX!82CZ1y=1V0wxzbH@`NQfDpH!5HD8>2BP5q^F|Xnf(WOpJaR2YrU_lmpVp8<%*Q*}{ z#2{UTvYK1ryjNG6j|~xCrA9o!-V$RAFw*Rl;8eg=j(4cPoMs(BfYdQHI{b8WR|N#L zpE7e$cAvGdcR~l%h;#h|kFq*VyNc@HC$l6aMYblw)A`~5emA+5E07b366yT8)|KK2 zC6OuU5InRMkUQqeiynM zZ*B^`o>g-}h^}efif-J^(Ib#K@;E`*FSHBN{uW&Rv$<-vQdON5`(ffz@NDR7o$?Ve zdH`Scrzgj=qgo>tT!|xms>@^MTjp`QD4Flr8{VuB-zo zbji9&NyLADa=V3=m%rQ?c_%D&?|+n-=nHHHtDsG@Ok zC%U^BKoxNECG-RO)m8J!npth|(JAh5qr=lDUNib7S~?9k8YJ1n#cky@F%+&cjMid` z17%J}n##8ilTjyL3~DT2a~%NW=%#yI4(?(UpX@J@`bk~!rHhJNr)>4Q zbhIGluIzRTw_Pv4PJ(J)_dSGLKJ~oD7~GwurpMCj_vCsny*6L{TeI9f^ZFos&g5sh zI(u`>N+nQ!e;3Cp9(1IUvBcd(Ybk-^rXfpU|B0}6!DYz{>tnx=48hL9Sc0AU5jmv! z%4CAq)_D=5w|=S6we%5aaf0|wkj=mRbnD6-Q~Djd2E|URzfH*5r+}1S@XQ1!Sw+QK zMaH1PTTcAbCG_Eyir%wBp=wdA6|e%|3qX3ZM37l*bG&TAuRdygQy&f_uRX7`uX)Zk z%XdNQD#22jwl{Mifp}eGnzQk5#P!5dG%(dW$H|**==|Bv^&#d>sZuy_8j?U4$`uB3*SC;eb3t1=I zPV;=a8g^zGPh4ytl2`Z9-*<9WlSFPTVv;H)iTRre)P)-I^fVNgHtpDHn<uNoIJ{7+dQ#b9|Q8h6r9Rq zQKSjFe#cH8=L2tJXXmXh^vdwsdEW8nPdbCkx58xJNw;9(E6K_+ zx@e2QW+y;v>uO(EGL-CLEvR~32#J6I>7@Ru!^}kUa0-EGov~(F;v~M{j+vx^`G^oU_Z44*F_MJ%y7w~x@)%PC|)G}Q^uG|D7Sk$I&*2Uk-l=^Q>9wRAXX--{#B z{@o=aF*m(>PJ9DX)x30;mot;w>gXg~``#1-?KZ!Q&&0$wbsivQUH^g}2AZQyT|39I z-k}11Krcs8X>CBw#hvprxWD>+OZPK?yi-aqW8B&xliD^Qv%$~tV?>=GTu27V0;{a| zm!{dx0>K_~@RO$D@MR$AuonPmsNzSZipw2-bmE^J zP{-Go=PzQ8n@y849zwLBXQ_?6XXxE4o6Zl~@K~iEtsva&PRj3T@sqFn#Si;O?P6vN z*bfG>LEytjm8qBYB8F`_Q%{X=S=p(hZ9edjNlE&*zNASc1$}{I2HdLaN3VW)3r9fL z2lf;c9rknot_G;->lBpu73$J5D){jO4w2>X9>l+++Ro52gHlnGH2UWUv1YG+F(-~5 zC@U#quC|-TXZdmXO|8WU0@AocqGz;hO~bwYgq#3jCUaIaKECLaNHiG@UKt5D(H;(B z^61Z1Ax(Y@-B`uew42)7?J_;|mqM!FcY^?M>n=LY;NH?ABi00}v<}$98Sd zBAG8czF#Vkc~h8|BN#MspJaKO@PoC9$G7s3zV+EBa^nI3wOB#EBzROqd!W239UoTn zD(si5V2+wm(@NW^-8e8nOSoo!6iqRg0#gB_$EIEH&hx}?uuDbE@L@TfyV&W^fXv5_ z7*R4-jrQ}dG@Slpr_a2#K&95}V%yo`&l|^Q^Qez5gSh02-fg9|gfgw#QT=82FR;PZ zRVa3DyX919uh@FzsssyP60U;@_W+Xih2q+;t-gnu(}e=5ufoEf|6FZ98Vj7=c}mM_ z#0RgwB1XlSR~xswg3l-(IBY>RACJ{u3JK+|aIvVR7Uq|GkKXX{1S$>#h{M(7StSg%O`a*R&_&<1K}59u%@+DHgdpJXKF zz9J=*q^N0;FH((I{1C0m}vd?_68?r6PeEFBb zzXnm5L@&qc`f6t4IZt?(lT%XR1aql)c_T~Ve`^AU4z^E4RpVtf2V^Q~r4~NS`J6Hj zKO=9H#0lS9Lf2-LbYDE z03CKZ1#H9qs95bN7|GHpG0AGx9L~FAZu>t)wObae?Oyw;xgu@8e~J_akLIg{ zTcRUlHw41(LiZ*G+66_&dgRE>aSzZ;uV!lD>?e4Wi3i<83@O zb|xCfVPcgWGB7B^M%&M)Qjzb`vDe~lziv?o&OBZW2vM7_46u6ny8hH}OOjd6Qe6Jy zTY34GPnxEVj^cAfS@+9K%j>=G%`)J$9sufZ6le>IiOYd}=$YWHDtbB9W8h8(m^lWF znZ^bN8}Ma=5jlf@j~7JprgCAr(vQh}G)7#@;EleUXwh;^Fev2w9e4%;yJ(^zGE$_pBo8th3Ru>erSdV=WF$e! ze)b1KNOIJxKk_`J&_@aNj5PqABmBTqwgrTJ1caO{f8J9NWb1iaY(eB+PrFKMKK66D zm(YGYvJ35~!8E&WcI*Glc;7k=O&Z2Id&#TuWsb~z^WpMK+VQW+LUum)0k?6K- z$w6E2=1<=;L_>u&nK_JUEm>V3VT>z2PNO8tzfqNc=MB=cZZ$LAz?80a)+t6fXP71| zRrfM@KbMIGuk-;!C(HWD(q*~#*F{2?AR0;$lWLd`1y}%|De$!Yid^^% zxe~60F1J(!XG~Sjl;kBr)@t=xeb^SicAc*=6q)?a+c z`Ge1q{>8*HQ}YbDKWyAD@+(?0+t0i6ikQ-cPDVRGlS1*&y)?YZ2ho!3+x-rQpr`Si zb=|8OlBmcI5mwdz5CxwW`);xufs3#iY$)U9Ko}gAf-Q2$r=5XsSJebq3WHLLB4Eq`%ukok9f++4{=Bgz6J&-(}Q&Wr~Fw$Vh`)=3KXRp%W|@ z3@ZPj5BoJa>_Fq~=X_yfLQ|On)n+YlB{{C~Kg*!(W52PFu8Z1BZ!CQ0~({k9B#PAqrzlk;Z6`l@dFIKvW|Mtg?Sww!FHm< z8#n;&F}ywg@$L-xt~AmYj?Nl51BdXY=&#;-^NAYneClB@F$$}!V1innhn2>}Q`6|n z+kQ?4Q!$GTFvpi|>VO8IhYkh4M(XEGjD#_T=NYu^XcF7Xy`4&<4l+?CZ9j@)?84!; zxpxMG8h(ks!l6K(+u$>$1HoRE>imlX(cbKHSmD2!0w-x)uFLq>+E;UXZK#NA?eT!M z+G;%mCFA|r`yS)X7cT#6J0u0|>ux&>j}Dt)y+K`T*KYdl?`c5WbALjQ;iOMP(9+t1 z>lKfJ-H=*F8xaZgI4p_UN~?!^mo}AXOoqOt)YS^S;lpT7LW}U1bW_@&$t{VdTr0D4 z`^$RkE%lv?@9itY$se!7cY5ZvEaT-zL*lo4$swG+x64;p@xbu}4Oeum`WEem(WCQ5 zJzAYfKFC~~mJWz*MQJ&UP28V(q;F4nY>N4}bYa&{=|j)hoZc3`CoYfMV+$sPqis9S0TGD;KCv97 z*WY1Sv^*0TTNp2NxQ#-)EgtFl(=wzG?^qTb=EW0&54}4R*E7{Ji1?MFu(pYw;@k>$ z343!99s7F#i6c}3o|cYrARI^1;qM?Zq~%jzF|eQWd$uKR^8hmBdf->`r&*@(yZBYZ z*?e(jLh|(=kEbA$%gf8&9i=%mZjSdC|b@uN1H}yMM?Ugm~8#D`$J+3^Ggwmct2-! zj1r(&sIWj$F%l_j+)Lv~<`x}m|$MyD`{4?TrCM2yW1pKT% z-b&s&!suU24l`MG?O$Z&ms#R7Ov0^d?e#{XVfcYd+TzNjO4l)nG`+nOkE!zkaR2Ch zCF|ApsrP`lEH9gO{A}jJZ!rr{(xs)zZ3DEyR{LUMVdigJg9{L%H6qlKEY zaMv;v?-+kf+)q~)pQ(Yj6;sDiXT+4N^)p6J@#5ZC{F5y5n~Yr;jmR&=i=_SD!XcxR z%?*Dg!j_vTS;7ZtCMW#|NPLMQrw!j(>PSCQza{Ll1nMOZm1V8n_9xRRdA$t5IH4Z z+{^T)U0fKvb7&QX9x|H3NL*vq)7@chKzK_&a{f&@3AdUd06B6X<#6M* zPBNLlaqv2z@P}Pdldx7pA?hAvUw@{DsWT0`|I9=sC%WXnreru`U_V!%my$yT+eBdOqJve^k=LDn_;->7zDGRxO0CM55iw36A|m3L2=r!mRzRTq z@MnD7TaMth+7n}jybQLMxO7yPHYRDrfLAy+_*3|5_q2|X!CnSww?0=6Bele#@3Bh_ zwgEw6>$S~J5V6AYL!D-)JPU}o(f*^B6U5mOa?4y^ZaN1Wv<-w!f=yTBg>zoUFLswB_t0VxQ`B` z)ko$Qu@sgn#_>RJPf_jMdCLi#LKU`4#*Kwx3FEIN4$kNhLfE4Sm%LTrw<=mXEH}8X z$dq~$-&_vxi914jA`BL&?(uM2P2Ts3k%4>=%s_Hq?L9>8M>v2caDPO*R0Kwwn#MP- zH0!z2z)QP1bpq@0L>j46NG({3R>J3NR17R7Fi8A3c;-7OqZ)-V%eSsz1#MI6*@;Wg zll#=*JJ@pnBs=uT6qP{L?^3B(SbJ_Ih?iU*@1)+czkBB`XVvgc`+Yp(p3ns;YH^c_ z7f~7Qh9zUIuq8lCCpmW_J%}_(KR6}n%x#j-NvaZp zCX)Oc3~992dbXL!e4cGS@#b3JaOyB=u$g#iv!DIx`v*CKfVfv=tKyy#7Q@GJE*00C zSdk!Obz2(fN}kH4qQi@+ z>@-6eXB0b9r<3ONFpcy|Nd93Fn8Kj)hn(Lz5a#i~=s)~Ka^a{FY(IvLTJ;abk*|xv zY8(0%#Q<$oj7MbGmXF95ZQ@V9ed(b;_9-nPIn#*2&wG?2uX~I%3(s|y*y}ax6t9y` zj-ya5Mkk46vE|$>xvo7?!fzsiB*}-;u$Gdb_33>4R03F|$3@0PbGH~L6JQ^h-5DRhX333%li|OA>X)4Som)kxCFXk{YCZ)4)dm`wY9T!S=h~gJN8~DFfF=<`2bk87drwv?2F}lOX<^$e4o178(&#j=v-c7hsVi2Gd z5>wn78Ks^A5!r~KKZY_$+NvnE_v&}~dts`~Mld)6nLja2U{7&OLmXsoNu?u^y2d+| zBfe)BMr(D-bYT7>eyLW)ceI>rW5(B~miR>h+GGbXzlTqt;>ac^scACv$w=d9?sTni z_#9r4Y);d-RS++!*WQ`;g7n}PU{uk!lGZ8#!)i;Z(XsSVF(3eyi&+>6JX$NoMopVr zjywymk89^SsXGX2 zsz5*ti#hcNWhSFzxhME(X7ppHx{Zb_l(2G49fMa#(sH0%qR8XiO~5f9J zzgPQNn5rE>@U62Ci_u4J=&g>e+ola?pOb?{(S59PHXCXbhK$A!Ls|oFSXaSIu0pr! z6h@UOuBfy!4!qZhxfmBODZLLU9@-z-P2mF(o`?m0puydRwkLQ#Xwa27Ur?z{-d8x0jug5t)zD9Eo z!##Rq^__R|dKSV|r14VOqM?WsD2+6jbd}#Y6|-)KotdZ8;158G%!qwx;k*UmAIB$i zRY$zD2k6!UAobP;f99T_X(00T^o~Z`&mswV(s!mg0jB}LWS7u-z$CQWQV__}C0QAU zng$yP=p@rXgwXy$_BQzD|+nM`tzkXSc< z-UrGx*HWNWK2m^Nbqk)8f{$+~es?&-Pt_=@#U~V_UzxZ5=mYt{pg!&Phbqgk`Dk?Z zq>E(SBpS~_WWN9HIf*%EBQ{J0o8t z%8yI>)cP-RiGqX%nIr6T1xtHHdfh03ud>$fRda-Hv_LQO(J_5}l2Ta>`F`8N*qH_>mLl*Q zfQw;X$Hn$>IP>I3{K=dC&!0cn9hS^KprN6WbcG&8w#uuZyx+PAH%N;{kKdO4y{TMW z&$s;$K1162ill-k8gPys>wS9*_qN6QSo}~0d+cR6JDd0?tvp=!)BdzjtHU_6K!v3gIp1MMy`;Z1wdf44*4UsBHC- z9tUiXYGoU{@%(id6yRU9auKbY83NX@@O3P?Cb;U( z4~ch7Dt6a`3Gv(ogpJUO-;2@p+yXDp%Es1Nn4iBVE7JN6xivDdA|jEPT_VBW{ej<=C@ zx$7)pba62lv%c#H-|qe75N6f94p|{0zDjnO4+A>}wxi^Zg-gcw3maKGAR@4Qpg+4w+Bf z^w`;(Ov#vu04<%e*W+_z#y91Jx8q-iiEY^op~_<~PE$=OAC#{q@f|bjR#2KnnuiWA zVYYs%==fU<0G&hG6ROGxTh)tYrH7_p#Rmm!25d-%c0NU6(rzc__Uc!^;~elGK7_sz z;iTu~lfZX!AfXAVK}ScgVP#^vUoJ-vc6M7&wY}X{Q;ZaV?>3K~*RsmRml^s1dMOiU zfICOy9rO6K=>pQ0owV1}W|_kk%M%~VwXSCiFnsF@6hr2q0<{kpTZ1hk-x#A+*9P{{ zsayvH^>uF|ezYCdAqbnEdGJHO({Y@(A917`pEm7GivKKUUPqGnj+wVj;+4Oy6GO!Q z=nU)DvectcFuaXuyBl;`5mtK=Ko2^Lf$(nYES&!mK;O_aqB8PuwYvXj;k1E0!TrOH zka(FE=qJz>qCG$dIlbcNaUs3|86&EL;^^YU%m|5ys%sxV=NYZ&nJ(}VJFHH3_tPRw z9eZ3~COU$Be{P*gEjY37=ewQHGxp)a7gkmtBPI+tWFb%_3?IE`XBP!otSq%`-*mgY zUW|OXl<=cMZdzRq`|=nPsGfUwB2MM!N*#p`lyC>!I+!&jFn#ssm(ah5AgcaQG{}`n zbER6w+CCGhnJBP7`IYtad`Y6dk2-An*{LvRtWvmbkkkU1fGJI$Y zI_0M2u6(TvbapfIb2^H4!y}~yVUsS3fmAHgbyeB;6U+p!X{DjcqfPcH00H1>5bbP%xZg?AH;2%Dabm zpw}6Q_eiX}Sjee+1=y6GjV+dgjSVm^Zs{7tlpd-n7;Udo6AWparl;gh_n02X(IHzT z{xU=3crujt`m~>e(XYK&aHbRZ^003rdwRJ^=ohW zT%N>4E@c(dVne0ja|Y~HzB)_w18mC3e~MT&>v`DW^63hOtskB0NelS=u{WV0R~bha z%`@JTzF>yOPDC)6){!ZmtAj|~dNIBZG}a6Zl|RjY{iTo6r;o-$MXPo^bwCcGBW58p687I&vqC09 z`Q3Aua3FIg5)|bhel-x%trme_isbtBMUx4Sr1~9qGr~Q4Ebvu6Xe>EY5$2qR!^6Xs z3Zle6MK7?I@7_nn8i6QyHPEzsn(V7vsVGD;Fx(etwuq+Zx=?!Xlef7@d9|2)EStTo^Lf9Z?JYYK_5gENAB$ z@-H{lqb4(#h+mwWUI6kvpYwh-Kjhmq?8^Ro|2g%_!|=WKJOI6|rVC(oG!pebpFr>} z2YT zu-Y8{A|Y(Jdm{;n&>PgFAso{21}G&B_dTdt0{`H^%$wyZU5YC0`W?uhia)HA^kK_69WUl@2#k)NjnT^?K3DX#KhFV6Blx;sk>-5lZ}u- zJU1?WA)rL8tkUl6J^5#6@f^v5I%#13^65E{?#hEGSKa_ts6A>4DJ4M9bG z`uT$g1>%hz^Eel&dP$e^mjahVZ z<;uq7OPJa6dTSk+rgTwYz|iC>PtmAvpo+mOM$DgJo3~VR&p~88LX8K^fc_MW8dD*t zcyi4}WPdI8^uetjL8cDexaA=Rac;-kGSp)9b=F~Cl_hFt9O&PQ6}K zJ>_dMyBsC+fqKI)hZJ3a%XcW4SU9V|>}Nq9ZU$p=G6K#S+h!M$!f=TIObJL zVDNq1S+t@Ew_iCEuP<51D#*@%I*h4yFW|A80_(D;G@K!CP&Eswq=Gbfq1uGuj+lsO zxk&^8!Sng*nV^>qG@Ea*?1|Mo48tEWocT%hq+8QMb87p{<~(qE_=LpELw8kxdghPP zyWU)dA-YMBv`OL|${;sXF-=d#%kN<~kjVK!Nbzr4lqf64EDN+DNP@*m!FA1#(EFZ` zxJMUbqYhILJK)%e-CsqOHQ(<OHijfExpG9b%G=;;S&$$wtjM?i) zN1wdP<~Auq(?Fp3^m2GTx3f}{c`nx~ODCqpOq5y7B584Wc%5`V76nx?;5dF4$jC^& zzP&mNY+IOpBu7VNZ@Wrh4iNW!L=zP>Q7ihMkK8-Ohet92gf$Oe2i_*98wJPG{Wd;Xr}I|z+?659COH!88~%*Z=>MX1G}S- zm-AXP_jNGBiOoUT<9FLTaspE3i_IRdjdyS0?nOfw3!?gNC_}WS!)i`uglzD5lYUl{ zK9cLjpQ~2$z8A*H)9l=AjLq2Fd%njKEv{>t{w-3O8 zu<8;Q@|T$Ok%!bl_d#WMPzeCl=eeGHp%q+kwXMwwPw#ClR3o1Y@+x()?eb5v6}HDY z%fNgS<##TrQliV*P8xl{NZ}!1O2V;o+hT`|M>zbHK%~EdE6!W0Jo0DSmf{$FMAFvz8~9yq8^K0CGJxSMjr0 z%{8NPG8nIJ(#cDm!ltD$d$G%2x=r6tj26uT{wbI zddS_Ws^6yI(Q{PN10GHCBlpTMsXFX8W54aRM*2;PxyXlD^^K43Kx}Ln*607M1#J!# zXP&**1-Z-|Gmj>1!oekvN6jdR!51*GurX;s12!d+2~MUYUV;_+mD=@TWtoGcn)$W$ z8Pvd2@AWZn1Z?t6B0b)7Nhf2Dmz;HZi};BbxTwX z&kF#&v+*=U!dp~^=0v(vMGr}^D%9*4g!)s~Oj)uYD zT|>=p1>|i?@RA;TuJ^3(0u76ZK)~+P#&PPEQvmYt{*`Zm1e_4O^eYd}?yVCM-oLy? zx064D!1H-lf9_x6@YpGOWn+!d=og0jc1|6QW00$}B6 z4FCK=pNV4?t_n@mN5xF31|a(qX!1Hp7S4AiBU78xgA{o4@niSgdsII%}oft zy%b#ejA+L}bbjcC^J2~%!Ep&QOG{3J#J%qRviR{svja#Vrf}x6HSPen?ayWQX;#?` z#>jy9`iOAN)YNU`5gy8StMTtN!1d)G#(4FfrNr{Ca$$4%sHjfoz^Su}YB-w>i6jm~KCdc@Xv5AV3&lMV!U8 z@qEZ%FLM$bp?=O8Zzje}@OS&_;4ZXq+OtXFGf!c+I=dNKIO;X705}j3HS?>^)2IEt zM~SlWu^+Y)%4JDarhHWeD+fhjxh)*Mv)`u)cbKsR!|_)L^6*WA@Kr&I>{ojtvz^%Rsp6Z z6(|jXM1pNPE^!&i27p)R#<==0>^1=_PZb2njBqNyA9hQn=QvhA?4x&yqCf)u3Vs25 zer1?QPyXMn=XPjoLc*&G zddW}Um2fwl_wBD4sB3H8k6V4ZW*F=a1s4siqdEgfoc?dNxj}juT3PTa1UY53TbOl3 z?jQ?%C_&XlbHv@xIlQPZ`O^yrx`_1$v~v)|-r4ul^7PV==e)JHu+=3SPZ?UyV?p@Qf~ zMOU0c80OvR(J{jX3i{qTuo{(RWXu_81&r)=!N5Bce%h#EY>we}!4<+>P0taT#E+VT z#dOD(G2bNpCZwy@m7za%Fua6D8@0=MwMBCDciHZ0)=1)pfLbTVhkkV9_S-Thmrq)Z z_r^dgeLoM$E0Sw~hDOp{U9|1^ckmg%84V~HyI<-1@#r1MyZ83IJZXA>)Z4Q$@AV@O ztGaZ8#e${OWdAXYf4jpdQw}~hh#ZB8qH*)3S(C`3sMtI@!WG5SIAhWvxFYqofL?~( zvfWFK6NpID#;p=tU8$HWsIe_beRIU&D*#RA(wo&lb%u?AV{U$(d;l$k$iez71bL%I zMn36~gaixfF3#v2p>62VlVidyd%Ya?$Kk~ikXLe0;^MD1&$=P=IYKQ>i%8&Xd(~1lGv{*AN{F=&-Qnz6Z0=;Z}bfZB$M+@N_dN#8Cx>0%G!)&3u%qrTb1i zq}AV7J;T@bm8Ls?dFkwbcy78C2k9eEWP0`~EhS#L_QUk;9A+b!+m!SvcRlgyTzHSd z?v$-4w65xxbr4S}!H|`p|C#XkCidDGB&Y0 z6|cGGh)_xMINwcXldOfU+HkT3H5B(4n%{eX!Qh145fpE?q?rOn?mh)89N92gY+gaz z7e{McR?rhcufP6xomtJK0`|Apw%qc@-`{bt6kPOxL2RLfq&=u(@&?boIKq!eslbAU z#)57}R+2PjALhg1zroox_o|m}xC>Bb>71y(e7kwhb$>d$n;UuVUub7$JK-is7k&|S zg9=n5{Ae{~^WT5J=Mca=q$vPv47v2V(;_@uj-vH;Yo)V{pqIc@fC@7YDBGBd~z0 zyOm^3{2IU`#Trt38_mcHO0UQY=qRc;tPg{^%mw$6tmvJ(R363+Mpo_!YPE)zYh8ohLF?QG;`NR zGPEKBlT_YH03kd?jqmT)wo5d}-OU);C|G1fI;k(86F^TynUQL@TUem=Ouu6hkPFG;%bSp+i*0S-QoW5B z)QQf>9z!#f1Nk~o){U^j07?+3z>A=0pFjmG{kIhqDJ}m_W5-k(_lAx^`)!tjHE^Vmsh? zNpKm$_FWl6?l2=`#1VW0MFs~e4H|xrPo!*aUc-?z${Lg4l75l0#?$58jkoP1iIlm!X| zO^_=DxQg?R<%xwcjHWT`>KnY++u87;5K}`zD2*HU0r?qaf2i4>aWhF#cqkH}FTRV+xj(T6l4>JPH|1*S7YyyRForni0He1w9wDo5GssI|P@OFQ0+o zFpD7!ni~{6l5LrHA>tpmMMRB`&anN5cjGiBJ*2*P1pUdsnDDKxt(~62x?zW_#UeAq zmOXOGS#whwX4=OBK`}q&Va2%&$-xqvH=6w33hw!C*RSw(bTUO`iB`=a)rK+n}2`YQ#H6q9h!pSwLc`V_KsTk_UYo2y%VE>)Rz@A z<@c!a=B*T~B%*ZSN$xVW{0sa0@!sxH(2I$_{`a$x$7ajx*f7DdBGWH6-g_zt&`Vfn zu%p65(91S`69KfWTCyOS0*v(~-UpFn;*39TZMoS!aZpS!6-;oBGkaVa!#W)iU<}j^ z*1v=(a`kp6JTyB1II}1CdX@i~TM*O61e6-B)7f$~g1%0e`Zwi6uyik~-5VH?pKC3t zLL2<^n!-ba-?+jUU1fS4o?_D*g~%OjPWXU(>MGgnhyK1vTkmmd&~p-+2|+rnxg5L;Q1EJN%}4 zpq<}e{YLNWk%Uy^CDpX)>Bae=TeH05Aot-r@y=;+&czdDw~NtJE#SdwY81@@scW5^ zN_@Qc?5za6=(Y*r2TjE%+^gFL>gjT6t6gqDV^W2rT{d*>xp9E`hVY zZ&BoRGCja(x#PWW1LotSbsVHy@Z!lyt>@;6F+f$f^8)AzDxrSeFG*iIFo{>%Z%Ae{puMJ)gmfS7qKr z(oKeW9v~}_zC{GdpFLBM4=FCG;NK>bA7&iL(}gWTqPz|Izzk$kV%zbmoQHMPE!#r= z@8XqQGX~IG6Y-k?W%xP7ek~Bs=KObjmy56C;qayGxfR%uLdHIM!%VlE>3^(2Afo1MJY!_s>vzk=)S@)G#8MeOAMSbZw`rpN=*L zP5yV-?_5Ogx4ydgcq?IcpO?CveiMD(+Xs%1sB57-N@AsnPJ!0Y!X3Z^JamSmMj@&D zHgq%kpY2mF_FH`y$p7K$EugB3wl>g1gP@d3NO!jaQc{9|N=Zm}H%PPTZUjWSySuwn zx)G3&ZjgM7d+-0=7;g;D7;p}3)}Cw4`sO$14%mFIC@X7?+{WpWX!NeqcZa%p->A6g z(9tE;3WlZg&OWpsB)TYR{kRzbm~n#%R*F<%U2M>K#?m0~6L~&m+iSCW-Q$)db0tU* zXYSJj=?ijkddA%jlU^UZfl2XQ`D6Kh(Dmu`f%=}r9iP2Qb)N#qc3Q3E@~D3B@IQy9 z_if1^DUHh#(Qd1So7?2(@xj>Y;^#E87>N9uY^q*}{)`o`-X#a!@xdjr)s_L?#-a8s zt!V0ls_M%ASdkoej~c9nyS5B~1Va8gsTl5>xhz5~dq`!3neol#V@wGyi85kXaS%4y z5v`XFQZK8bht=rGS8!6@od4VwKFro^9cu)PG~af17eo-TztX1P8rW@hx+v~A91^%M zPQDqPS98~(+H7+e){~D_6r$z;cea0k@3&Pa_Z zK9rAL{c?MkLykHq7lcJc#;Fo&|IRZ0mg_{=ujr_+enxYp{4i^JQwj!ZTj&obgHw*5 zKLytt@|TpiWUv3BEcG~v%3k5KF4!Ba9xVN7Sn5K=T+$>7)_g_O%hX^7>HWUH)cQ+f z=7gM*_3{-6pWDL5^aVW-+c+4zkpOTu3nbeM*91Sj*GuO4%y{{IDJvbFQ-9C3rWeh) zEIi1CpTH1R=~>Dw4Dw7D2F4Q8Y-aCBep2%ekNvsrTX_W1cMjG^Ah<<@-zdgzB#(5B z*ub_i4F4BZ4$}Kjh5lBE&z9yCE*|CC;GY5%t=psh0{j=eUUQ(GnT@ z%qIDvv?NjF#9OXaX9mH^^r~)!*iO zm>Pu4{dDkCqI)raW8RTqZz`;e8=OYGQ!~2U;J&XtJX7ht`|HEH;(GTmy&3H8mh?uD zj-`~fYWh$Z%9bxsYs|vaqx8<5`x-GlvWz~tz~u9#0HOa$iq98LeCp}^C&%MB}5LhC$hp-HnNiQg9CTAjs%!!kiO!BSSB^VGbWZ z{kOSLrFGxMB*`QRVs$`cO@PL>9vL~VT7-TG5LGD<-*p>1~b88u`XcVXWl36!g~Fp3|%DrGbjEV zGUYsT9DI)!ije4xFWipFwmlBXb&3vi-)zPpqf?xU`MB_j$w8(71j?>Z0+9;e%O{~s z91C?(;`_q;!m_S)Hmj9 z>z(n%RXf4z*T(F->S^DcYVJojNZj~2R*tnY9E(&C4TJS1KB6!dBD8t19{uLB`r#D0o?So_kMtL00&K9Vz6^zrmXxQz`8-n5_<|s7%?5$$j$R7Wc zwo|5IBtW87I{g{Tkz`0q6&M~Bk6lit{7WX*4Gh>^oZqe-98^g;&$&iOV)dboNWdc^J@ z`TdRXei7^)nw^_V8-2D)s8;Pld+H`AaaoHE@VR?}|5ihW__+W;+^M2sIflRSHEH(y zGCVerj-{w9TPiZyoALQyl!x*Ce1IL}?>7xbM-hh3CRs zQu@dqs9e9}lI*2w?>i=AhtEtLuTG%*vZKNufyoOCmnADz?%s^?((pb&de*Ndamdjy z_{NsF$BfMg04o0{h)-$JWao!k{Fc$x4fKJiMT~)ohm4tvr){&{#3@oM`1MN60P_6f zmDhEQ|F$GB`5R8J5-2nO-}26+V=+|QzrA&JN!*hg$@0w;hi;~r%`o;)0lh&;mH+OO zk$S|tHoT=u+k-DP-=jFl$A!i|>rO2!Tu)p6Y%W8PVmpIx=Sa~2M|h2!v~~YM#0Q?{?e5Q#0U33j z!OO$1>_#N1R>_r4HqHY7w6NB@xnL-d^1K8WMyZ#o|L^guC6{GRBf#L3)m$*0>9UW( z$#~g(57o9n_XiV>LQQ|;3zeI17WlNnBAyJ|ZN3)wMa&j(xI7Oj`d9Lf?9a!~A+=Iz zd5T54Hz_fAdCGHeuO(QqineB8BSk>kv5epUPukaFZh}BIpnznin6Kg|F!&r)()(?& z(H~1$o3z*g;k^#bDN)C#H%iPu4gX$3_jT!MZC|ybrb`acfjL7uXINN0<#F-Se$@{X zR09$+`j#?WR;P~hsDHi-WOCz&aRRdW-*=Wh5_);5(GlH#&2K2*T@cvsd-O^pMz_#)DLZWSz-#OCXS-0z-MzQc zbB$Mbt&V5b3 zxtX}R84ciuLe~dQ*s2}j*0NF9L<3wr^jXYk7~W(sSTlnB*)z$0EEW+hEz;|2;|)JS z1Z~v{Z}%fb2`i&t%TumVz{KGBukutt-U`-El4>XIWT>n;P5+*-a4V&iR0WzIKC-@;(S1mbYu(c8T}w_XOz^as`aYb|NTLou&73 z1&YX&hzNhANiQyjf^XMu4qF4%SuRc0&hx%V?XX{Dwq#c(6>0M_6)Hg$TZ?EFzV32% zX_qJ?s|GNI#|mw3=0G+9hW8N%@^f3aZzs}ceJ;KHHTAhKQj>3SxVK)kDO1s`^Lny?Ct9{8QGA(JW;n~lK7(bbUr&-HqYbC4jmI!+*}fa zLzjk}pX_@>Cax^q^Spur5qEcihK7bT#rvyh4jvwSIXOAWPoLgHl9H$dgYPdi-kQhN z;pa$9hq%W-TW`o8>~nhd`|5bzFepSPOP)TQR45z?{iRcO^EI#6ctAtg(yZ%={JNE8 zbAw$IhgBnEF3ZdwB_oeEQ(8_M!n3Yr9n+6-yRq==0Rx;o%4!*u3{@ua-!e4jgHEfd z1D^)|SNaDePrM;tLW>wYmsHmvE;bH1@9qKTR;XKRA#oWq< z;+Noi@P{;%^HI~&N?crAD!0x4{>W7|H542iVDXC z)9?C}VQD(b{o)DI#on9`SXKzK{)*e_Q_yzf_x<~Gjtsx=Z@$c)Y2e^rWH&U-=N!6Z zw$WL{(~qy`9nQuSbF4!zGCl(q;3W8*iKTZ1mVB>s@N{Bf_XS_QW7as0GXolB;|P#1a@0 zK?;74?zyprg}8x1_DDH^*HK_N1TV+Ornp#Es4*tS$2nM59E^TGSs|2JIl^%u;XARA z>z|``j_JoTv@NJ+>C0$xuxyKQF6G2*0BCAz-t z_jvA~K(Qg2gmAE9SLr9A;eAKg!I4D5=@b^i>9W6nxBFz?G66!#Qx^B&hzN;q-`+?` zOWUk=AQ4BA;{;)ml74>wTG@E;re~wk*Ct(n1T2atTrYm{Avzj?GK)l?^pkp?`5_cN zU@8hvh1*A{$B$xwuutmYa7&@u!JhY>%SVT@dW=Wykm%4>Kv1SQ-9YXydyMs9(HELK z1~){C$EB$m7JEyQ5ze*b{=q{2GWh_?Ro8aWE%$Ap@`yzpc zp(K7;bI!wmRz$6JvQ2=Yx29_{?N&L6iiz4CoG*R+FTeCPf_^OgmYFmgr@>nX1HPb; z+uO%qKtpTyMnW$$8YO{&Rsb;*6M9=)+rBo$Rc3e}aiPutA=M6kC01xSv5tpT&qH2j zmOswmriGE=U+g`5_r`fH4Q;o&=rqT$vc!no8665vns;cCHoMVk)>tJKoBynut*nGP zm4r;0q&fyJ9*z$^ZiRJA4I<3Cqy|xeM!#Lc%+LovalJQUH!$St$|Ri{QgAF95ka z=zg(Uu{-G)4zYUy50^@k^?rLVO36)GQT}tBHBt6B4Gwg40n(o_c&vtNXB@{>K6 zt|*FlCB$iP9k^aAlKt+B*;8IOwRduI*gLzB8w&~wirzF-q^cAjpPVePc2%s%Ag87E z`PmBMDmAL2y3mzAin~0G*mbFz$5hf#*6cs*^mc-t@J2(WZ#^43hRIBmK)J+4&1U+$ zW{-IFKXfKFsNXQFwtKNY!}m91aFc!pNr&E)1KDY_==gCIWRa_ z#M-*7pCCwQ>tNMZO-&6%O}_DIad|h+O!OG;9*$e*mp^eW-%#=zGI-)%FMN)lCL#CI z!T*;gaFzmYg(#2de$a4?!aVtXOi1Ba)%p-y*KY`ZTwABy@5Az|f&Sj%u&> zuX(sxST|B0>W>R@7yC4*?{uPjUX!_1k|bc?(gde1QIp#xjwF+SPugmIon-*HW|ckA zg5j62{TupAKcCgf=LKV2eC#9XM$Jmvz^lw)<574Sf3F+EBkQD7d_qLe_bk5&^K=|T zXb|2FI-{?mQcbOuS5?iYWbqYQrL#$AedjO75X<9!&2@cq6P0LoREu?gFH|F;tc*vH zMAn3eR+>*r=B2|7hqH3DVV5IwwYd#BCmUcr?xTY1Xg^>dA%&N82BF823N#wblz>{G znK9(5yzv{nwXgP#gr5-y{Yt1+=l*Qt-`wsUb&JkAM+KktrmN_}p<1=^S4F3Hb?NTV zVucy^`I}Rn_Q(f6G~k>!X3mhkpzW+wR5w=m`Zf5^AN~KnEsV9?-g3Dd16U5(!pNbRs_PP0ZYguE zf2B{x?aq;qVb5PE6Wdm`UCq$Crrtgxt#%R0eP8x=`7V-gx1h_^YcSn&xXwi9;Nke6 zTW**Z;X=bGp)GXq?2-Oik+)@ZYq`JyIm*0wW@%}X{k1W-kxEKQ(aX*DpF47uhVffDD4&DExJt8p+6n#+} z4b5%9iE&7)|E(FRI)xwvlNV5TvV^@^1H{O zvqSXxHmfEiBxDNnKB9OoMLn!N+czAN^C}eo{64<-qJpWg;_~0})nNPGlK?Dv%&c$Ul6ke$PQ9+Zg%vgBfEIvjE!65?! z1MJ;C-&EAnWdngXG6i`CMY#KkEhaR`Mx@%|A_77HCD!3YV`Ht=bi34rQ}ycMWC?=T zMwb^m2gI@-?p0S>;botHbq_oMv`)^MfFn8s0XIYBwD-Ctwe&OHIformUa%q6J|l|~ zTprxf?lHs6{(l0z($W2CY&^RO!!R5?e?&=Ju?*pI+q%8p+8wY?g)_)jr%IadSac&H zYP26ah$iO58TW}Fe84l}acsQ$`ufZ+KXN!-$>;VC4y$0M6lJQP$ZDQCzJ`WIo%L!* z-xj!;m=FKJ?eK%(Mx02(2ZtHaEq!+UP(3--p*Vd%b&pr|*Z42@WlaaO-RNoForaa$ zv)^d0tbcca#N7>`1rnc1JfT*b_9tGRLYooct)+o+k_jO$k-85H5-^#^1}`I+ppScU z9W%>JamVDdg6CJalgg0;&`@_Y3Fik|-W1--S2^JtKVNG}@MDl>GQZo*9?j6?r(yx& zYv#Ida#B(eCF)SZ5}Sj$heu1e6TaYkHBbD(nANa7F#i-0?-iF^EywzJx$%j5#9Pn| z*@-EXmLY=6W(0@|KX~nOB$BNbAzT%QT+dPTjFcQNulcoj|9X%hnrC{LVEIzIF|lAu4dXO6`VJDqrcLVehLxvqKE5 z4G94eIk8PtYU=<06HflwnTOWgq|qgOlD*xB6@?M*gVA*17f+?CWD9kU)!e*1SsPBT z=Rz>{T@OP#@#fz)vMxZGmR>kEWt63Nr#?n|ag!y*l{Y6^Lbsb`>F%$f8uNrlB6^bT zt(&{|9hENJ`4GD=d+$>szKedCYKJM@@2as%5_+~FY&^YTOJh>LX{KI~R5asZ?htWu z8Z@*UC@lx_uIU!dJ-yTWIBW~l^ZAPxe~Ds}lRviL#VsH4L%UYa7LScl9_*YG#zu7lx3=Bw%fnxYx8;H`XT;v z44iW9fv&4p%=E0>dho-#pgn4ud9e_&WYr7gcXRLp8|*PCy?p_vLz{0X5H-{ouWL-Z0G0M9qwi|8i}QJ9L!3*(G(~ zZzUycTIulaswW5%DpyhQLym02_qm@|Y6uv{gRK*~Os^xp57c4y2M5!rYo8uffgV@9WXXKRir>79?BsjCG|w9NQGSrc!xetu0|c1K(Y7l z!*QO0EDXc|Q}huO?-OXCH!7E5PNGIJBU?wFvNGWxE9(~f%S|$E`;1o@VOY2_{j}#n zfn&p!Q{x$pGW=9j`rl>Q0stN)$E#m;_(F8+LXpK`^0nOOS0q%07Eh+$^6?o|v*-TV zs@Y@M+u1Ly$-dpNt2pF*Bdv>x{3qDMtkt!o=>SS4=J{fBbZIF9WkKIe_rj*Xzxqv^ z!_7(~TcFYa2|TaW$TE{r#}7Wz-=2M;5U;91qNBnFnCJc!`~+{m-QWIGikC3PJjt{d zjDM}{JuzreP3Hb4!)IvJjfD7l5YpdDhZ-BAfQn727@#GXCxwND64kw-1e{nTmMx^l zPEI_ALqFIH1PThF!e)7Gu7i1|b%gIov(K(>{=FCU=shv;zc>fgFz8_RvVvJU+s$1} z7+R@wDelxP6GQx1wdtBHFdp3d@NX`+=fX<8a*y`0E$U|lwP1$!j%v?w)S!v;_XKl5 zUH$|M8WVG{{rBjxlM0!CVI#olLLngKFi-;Y|J*95N>Kvi>fb+ADi#dpN(vhtVw-gK zqZ!*j2Qinc@_GpeA4k_${RtQ&3E~9}ofB;S*6H*F%RTFiCmbBheNjHFwHGmq^|O79 zmVx03PJhHYPJ)a-qjE{8X#}-&oc3B*dGC8beCvv)mVRH|8_TFn7Sr!RG$~1y>BhxR zF!x&<;yizI6PXxw74sb}3OQ4F@39;(8Z>CNAn!5Kb@inc+#G}J%!2Y>XGFx4N~eA= zscr_%2mJ>#e~xbmZ6~}S*QH5_zwE&B&=n>-XXq@$=-d~wE01N;iNfEW1FhdHFcs9a z>DWOBJ};a4aw3T{4y)214MS=8V|Wz)zK{>Kt{?tK1A~pcp@q|}QEocqGrvIcRqY@Z za*P;~%*H>P0K$^3kV>|ICm{`?8SQ4SR3fJ(SLlT(hJ+A#(GuzmrWu%i^5emiXl*r0 zDdoq^EsyaAk$(6zeIDOvy$Y|$uoTPWCP>O@G}3jlF&GsWm$NQ}O+*x0RmH`m1+@@? z4-ivFXI_!z+jA_udYhZO&M7&_1bdgQ#AwdkIXXjo<>;sh)t29}THNjYt`BZVu1Q+Y z>8_8MSJPjtaf|zMPrO3H>a2IzFCEr%v7!+9U?-SrXXK^_J9ZSqSdXtm|=Pc%91Y^#(b!&M>qn>I8Iq-~S2)Ku-YoE1_hG zW6^kPYEj2do{>s5ic>CvZ)9u!^V3N1y)ePWcOot)bEkK7o4H$hAMZapS8#AlSSy@@ze~R$&@!QJvpk54;S2#G{pk+h5JNSi4 z<2UB%5{-}-j7r))p#;c>j4+;Wd-%x69z$}}Sg05@m1p`FR<0!oM2gGHGm3AnwL?)S zLDqO#{FQ5X_C5?+x`--HH?#VhbhAxLTG!8#P|Hiwxmc&Ya~J1vsP24+*MqYI*JgFt z?D0X&*xH{Na=<scC4&4_HYsP+CU6r+TAIOW!eJ>puqB8@3YWttwm}4 zO!Z#v2GMEGr-qx(t!W{W--l)jFGr0IRO^Sd)?OL*JMO5x{Ums@L;F4kHAg1!ES1|} zjksoBj*7}lCp2f|0J*|jqpPhRbZx65ete!sqD((yf#`3a_SuMjV(9x{d!IksBobBW3H_7*11l$y=hDprtwo>}kKwhMjWfgR z5UbI{?tk+*$@{n+YwVQH3#Q;_cz$8T;{JKoSG`M!O+DXUEJT*sx zi|bQV#B}IJbN*~v?sFxn2ae5lrBG}8HVkUiqETMDyhSN}ur43Sky$yGOLyi=X+11X zWo{iPNbu%E-_&Ov8LS(PKCG&8)Vi7)`QObbvyJ=6T>F#d~(&)+uY{o?>3O-_$x<))i_mbH*hV78mC3MM3wMtRTF~ zbl>=U&KOVK<3Cy+PaLC5Vf<3`fx4eeniY|VlEd_|eVGQv-QEIK610!^hfLqhuNgo85gPDT*K{Y}(VZW{TkK5# z?(U9$J2L2{{Dq|*2;drVGd^bg;FzHcUkYDd->`NI8!0NaT*lh%~fL_-d-ML=-1eV8r{zn2r_ znKc@$U&|CZ6}+BsS4*wCxfZ7=_bi24wWwYml_n?09-Wjz7nKqB_AAptXmW#0^sSEs znmbnaTXlE4+@V?anLkF|tUuzu)e2bPzgT01OYh9?`GkWX{(=x-X5X9angYc3dJGJEgW69 zKX(opkUXK&OG^@JE*8zEzz{svuZo8D_FRUeDNoCP zbZM@5RtdJT_L;5V)2n=IJ78sS6N}a=ZQlG<&~uUd@##>lhx4AUs>Z_ls~M&_tQRl& zyW{LM`51T8&5R5L6j#O}o2K&OTnbPbC#UEV8k848w-_*0`zBQNcfIx_b4V}-I*w42 z%W)<=+)7E5c!&3`q_%N8>e$rnzSgx@Ya}}nBZmv@))0VHd~j~4+TNUl8_vPxod_c3 zrgR~fi&d&`J9K2TLC3^1g#1;eWsp(7?Eru(Xu+VsiDFgy1hu|Y&Yn#{x-0muUXKHaVE0E>Irh)v4aP}hh2FT@UZujGB`AG7vLWPEK4#rJ{GBd_o`(CJgbs9-MO8J;yBg z{tQ<+D%~rg^!_?d3mvfoWS!8%_Cn@m>)C4QBZZkWehu_Vt z*IJh4uK0zw9pT2b;fp-Y`@F}eC>n>4m%a+BxR#Y-Qhd_ZU(}d^=SMv{=ceO;&bq}L zs}um%J^b^t!0>y}IQBl;6?m-7)>cwr5Rt|GTL7v^)!*OWH#$n|^EQa>0n7K}km!9E z|D?m4wERY-j~dKxg`dO7Sg4TM$>jpk!bL#smS98}5e0=36dDzBKZ)Dfan8@rk4;bK z;EL&7d4vQ8z7rEe%*dqIgBs}P=lK}*bUT_(o{oE}Q#Te}!y;}z5bZMe5 zctNFsh&@;svos~Qg~AnGbwQzau$RSvFF?t~i76b;Fk@lJ2Ca$cl8v7<^QbH7pE%** zg;R5I$oF3A7X7#feN7R*V?64y(IKylitwusdk7es!E+p^}t}T1OJM>vlXLw*?}b;|K|>W;arkOWWFktr_Td-SK6*W&3VkT2TBFB$zsy*F|!lR{Xm_?UySEoi8ROrGzs?PEpZ! zadA;Dq4sG|2*6iy@DPQ05aVbI;c3xMYjzLf2ceA-p8r6tcqC1Kt^6cLz(Y#H-D!va zeKN2xTZsWC5y_L4q`|;udGZ6UVYdY0)^)HuyoIGz+?UtY-;$RdimpzHSMFpDM;s|S zy}MWiolgB9n~1|};v;0qG8%DyPpUtpSU{HDy`wSgMcV7rx*@Hn0}Vt9x@j+emQ_L* zFIlT$mbQ#u?4W#BFmL+aSJXs-m$30?BvC@(pFp(#uP92K8Uj+pq8|;RF1g9zJPNzJ z-vwGfmbT5z7}wUy(g37f{ogoUmY$8?- zmL{np2Ss*4?rygb)S$n)&dC`a(Nf`liDD#e#y5O-5J|_21}lu;{Fsyy^#l9WOD=k@ zSytwEYp*On5xCzW6k9C08+0r0L_lZzL6w_BN*Hz@J(O-c3-N?@Py;MQ1FzhIgW){o z3JQ6`*ZXi%2Af$eUzuptqAN7&4se(Ywb+ThliYCU(Ng1pK*my2S7*}$o}g4i&13{> zhF90Sr4opbgql^gl$cc`T&-NrjRf9)=KarHX4 z%w4W>>$_i^rvm#>>lcS{2KPHgfR<5k&aOhlRSmS^J6T?IslfVDo+rY?0E z69L*9*y%liWA9OL)M_<84h>D^n;=DW^WWOP%p#OMl~wxqnRfI!E*Jz9_iN?w8$4y( z45{N#Ba&9?LRe3UVNCC*gh;;x`iT$fJXio5U$pLg%45Hc^;J#nBS~UPO8DNM`F{>w z5@T`f2JSlTr$2T?>&!Fib7RwdBwH_@K!|ILp;@mfP`2Ps^rC8g{>%FaMD7%gf+*Sm5p# z|Fj_{Z20+D3Vo_EOvy{X|uaIG@}?H1KmIF+#_1M7+UChN6!4EsqM0FxZ)-h`t7=Xdr?DmfU&{C!x3$6 z7Y_^#71P(JB7gwrCf;-3lo8MOJ+0Hk>%kWVfS{fm(3OwFE0_BHKop zz_M<~`Xj6DVzu4iG7?)o5Y&aDvG>}35krUS)+^|cg&T=bhgykhzWh0yV0(#t>f^we z$5+!(R<-+GMNh^2bS7Q_p|qfoQ_0X*p(lDwshkEKQ_2SFu{e0_+&pcpDF?8bcT1Gb zGD`Rm5j~CMf0$&N;;Hs!{B)9Qui-`0^))U&mba!-y>YZ1|7=G~duPAoU^n(SZwLDO zU9%+5ic!F=q-n3qPpZ;R|LQ}R_pYH4tpQapRkwtHPLDs*r{l}hYi<+|1SKjL`w;tw4dLq zZaT%I*Kpt)6-Zn1z#J38S8y_)PKX|)l!}#H*WG(j#~fT1D#OkYPu$pr|HJw_dVA4) zX?|MqH1VwpGD+%EW3H8FTxMNT$3~O9_R(8c7TI;zfFERD!dMWZuoJZfLPfM}kiJ*1 zmQik1^4EoGSvo~PsxcG{2wx%4l;Zp1y|>?|YVBP+9iBW7#wpPc@a{tVKVkEPD@fnm@PA9bin807nj9#B z8>}b*%|j86Cx(dI^Ed4iu~amGlJm&mo3TCV+)Csrdz#{80eB6N>&>;nci}mt$fpbq z0-9p%7`^A*$!k2}$UC6v zpiPsR>YD&*ygY~A)a4ehZxL~L$>Rz{z2%eRzJf1%51Pm9BBy7=C{?{q9p+^iV&z>! zDdFJY-tNndy9Unt9AI|z-K`dgY2D;@d0_xG5 zRuAKtDSJh^uisfn_nPeZuS>g|85PoM;$?1T1=R98$9 z%*m=Q?ATlw#RlU96N&?*rbyMQ0jaGR_EO%CHx@y(Cij20Q!SuQ2+oXdJM-teHh({+ z-@pqUgn>~^&{XO^-{nr#*%iTRy9a%`7aT5VhemQN2mi0VC8fn{V3Wnfz(7OIS?+_u z#v=_O#bc@Hrv=~b$e~m|N@N*6dI)J6QEz(Ir7V#rgrFk!aqIa7LY)AkbxV7etbG3W zc|D@X7J@cy*Rea{OO)z>gwpXZ`r#KZq{j3 z%PXI8q?e|@|B&r-$*LIGv@{X_sCN^qhgZN5GNN4Nl1z@@N8VcHy5f4+pRbJd3>#n6 zhmOSa9CiQ~iPV-lWTJeXrrLSS;>iro%~Z~_IH~MOl27Ilo}RFneXxp0CVw6GDR}4$ zn=;w&UMJCYG(?f*fqI4Lah%LGJqjP34tT2LdmI~kYfr5vZih9vf7({5=4s`HR%I>O znYlSR^_k^a1^IJ~-M%EI?}m3{i5D-AEBDDzC7wKLjrY+kX>Sw%YDQBk6VjC?^ZQD9 zTK$`u`Xn(u6s}j3c?{5l7%Ra(c%N$Gr9#Sg7`E(gLdIUe8sbiKIB9`KyS|C z5I@Ww*qnbH7_*zmXE1ph7Fa6WU7vC3q5LV1?7yDI_i5JhiI}X2$`OwL`f)#DPyOR0 zn=$Pm$Xv`?U!@HCUMl&A^%xsbx+_B#hI(=-ZJTw70xU#|pei#2vp*X!<$YEFbgxEp z?w!?xr-;&*m1Xs*#cB7Ns+yRugSLu9YL3RIF}?jbzT)schzKAK6UL{pTB^i_r;0A@ z!?_@*q&&Liy93dqE=5pyyd6tg;9pBO{y3WCJ!Z7GR(1sbI-n&^5(NwX zo$=NwBb+@P9g=mzX$QB$DR&c_G)NKiW^kcpSa06k$a2cvmXJ$&NRcqlM{SH}&ob)k z3HJB*xBve2`fBl38#SU=R8|(Nqq7s6nD{9vDQT{HQsd+VesOVeUU9Lwl@%+DjExN| zC@3f}Ffc7ex(>;U?TA6e%OLiMz@at!pS&sF?CwIFWvQivU077Dq4N35;M9M z>%gl7&8Vn?gWufT{Fno{x;9RYEMs(%@$(ab?JAdqy;|8DJl8S&wur~iH?qD zvsn|nbYtwW+1}d|Gcuyp=YR-Q;`|~aFui?z9&b%B)s5alyjUr-v=kGgvu$Pu58g{# zedpK8N`&3kh%n8>)1m0NIDcPX#0V^ce_BFZmlyjCKPg8x;Dx{cxJO>3h_+!2wN4rY{2ejA(FABdfYC$OS|qpGTE z*1&UadfLCH=8c%RI5{)(uq7wbf&6H>v55&g0}Cvzp@9%oXi+gSYZrK>rKKNB2zhyQ z0cauD*Di|6%6it;)@R1q`Dia*yyzPm$|4|q)!qGwq5b;BPVqe^CI+yk*UlP1ZuH1= zw%!8i48?)nEv4R z;32N+fU^-t;{ITQgGbWGxNDpAbIMi5>(}I@?_fM@#1#`5iM8?w8-QJ>v`SNr^8?IB zkjPwLUxz-+T3A>BQMT6)`~?rnrR5fE>u09drUMkXd9LHYJAp-8&*Q2ToTVStgCza}O)P0Qru z<>B)cgFnR3s5Y5*XzZATwzLQWhKO*sd^<=bR##W`o^^o^C${RZVHX$Q0KV=sx5iY`PX9hEd@JDct@%b1&lw7X@~p8L7vqr28`9E>m39TN$(HviZ{X zGD*$DPV)K7`beB(Y)fXAwl_phH~BG6&@LJWau7!ElTaZ1Fv2QM49>MA6ZA)}HOSC3 zG>8Fn$sQR7?gGr(18T)p$mE!xORi&ov8M{?>JjrseM0Rj1pdfjz!u6f!~){_YiSq( zA#7e0Oalm5ThlE>saaZDqCt8uA%Vi8)dEE0C5ND$Egu9AJwU5Ntd=qhAh>0?N!p0EYEb*Du)ec=X|0#8RCbfG5 z{ZjfamEFD(4fa+ldwg|^w#g@x?|!-dcUEps6Mhq?ATz7x3?n-y}VMv?>6u#Zz?OKnzpk`OBS+4n9rWAf!gik)j_|+?VSc6K2|T>I+1w@!fyh0KjN--V#rd> zZMQN2i!1>J8NLE_mBm{7m4BDt&!W|43ItD4U;mNLvfNxFeSv#6upod0f0IPa_Vk2c zGRbdW;IXK`Q=W;aS1(bo_l}IjLPSC$xJ`NVuz=1^B&?>Es0!aX`PSJ?9J$vfucV|V z|Go!#X=-XJbACC=tM1<6?BZe#(9`rb-?LLaBk&hiiu;>=2~K2YS9h80qa|^5<%11} zs%dMJ0Z%948z4zlQCL^@8XtORVZmHbSlIhq7bqV1A|@s_wzBF4kKDwo z7d|U*cT%AR!HpVPOy4WNp{-*wiV!RoR+h<~p9oe$4&!P@EN>u7<~Z1ovw?;rI}(p% z1-S1Bk-RsH{QJVI-641m%TGeOb-|-~=F(SH-QCBFpn$2n zWdMO?QmsIAc6K(zoE{SBRk5-T5C;~!a&Bg3Y6_`d-7=>6DKquX!9fie0i-4I;RBkB zi%Xh(zV$tH>m1VE%?3P&p1;VOT2@=4fRq#xz%Tg?{0@)P5m`8iKyY+4PNt86Q4l)N zTJZh%`1svGP(bhmJ_6NGgbhQ_nqCvcKqIL_5sw8L3nROzetn<_IKX(w1f#nH_a_UY z5bzlxMlN5<8U2)sU^^z1jO$MZk&-BmkRo6dX|>)L2)JID1EHQHw2em&aXkiPg)NPz zF#NuLLSIJCJbA6ThiP0Pr}8>fgtAv{M67j-yrMINn|rtsO*MtZ#l+|9Nk4y@+V3}z z6A}_y{~f13a^la*%}s39Tmr@xR3Pc-=?UhhK`;YMI~5Jh4v`rY;qokK#$?qUroQCm<+1U^uuprc(!_-MDo<%Dy#N}wvtt?%f?ls4 z4s0VaDMSnyp@D&@z*4k>HG+VbBLM?g+q}ZUR~x5kiVVMIXHm;l_R9E)I1gs&L-ag)+m#q)33-;LPEd;T?7u#XS7-sfO`^APP zKga*Zq*+|wcy_|#5b|uMKR9Q`KvIC}6HR*J9JX@L)p?>utQCdc3hz{}xh2G@a z)Qf^#<{t{9<@jbVL2HsN;Lp>rv)c^uV{eYwgAJ+d`c>A)W<=9DUEAK$0<{36GEHoM zem>W2B~BBQo}S*$vJpz11x#2}Vq(bRqIzNm%~RIGg1o%8e1%*h78XT@7c3eLTpY%D zAhZq+?f`l(fxL>*=?Q!)h`yfqb?DzG7lN zzpVLq$eNs$>7Kt0Uwn*Z!FoCV+M9tVRoKY@za=gR;ew>W@TuqU3xXP!pbt_~gs(Y& zW3;}IW_Qdnbb3PxCZ?ua_3dxiu@iaq_x7T&v$H?8LVWrZ-Y&?I#NG4Uwtg{#`r9UW z)&~gB_UBnaovBCtdQ&n>>UBwYy!M27SRKBsjZ;P*0$<@ZnSD5BPg`;A^4s+##}#61 zyjRd0^VtgL(@pR&lb>#EOxlkLb$xUxrZv-o$TV3G@iT^&riZ>3=20b}b}Fd9VV*p! z2WU2;Z&bFqyx5zb>t!JWQX)=|9NqKquS(e(+>ZHMDr^`&;DJm8FW@#YF2aa$L9qzz z+*f|Kz?k-zT4;l|iP=2F#*hZCGrS7yrz|CV8Oe*&g zcGb1NTmCiU07NkQ#z*RQv?8m*CvAc8;+44=9>o}pwuJirvIl0Ktw4F<#WbQoZsUyFMHWh@jKcg(62 zL`yN!jZEDnUWgds6)4DiEQTnm&zOw9s;d_>v#5mC&3>7PfZYV5Q*%Y7g=$`mdR$a4 zUM{;H3W9W1E6(5rX!3lBb6j@L4eat89@RV8j-wrUM-A}}a$sx_kR?4K-KH;Yt+)g* zsMEe}bC_BPDdG_+Om_#HGBCjWBux~_|31P)QSrOz`ecOjl-GbzFQg;e9c_n|7}0CdAc6{y$8;cRbep`#yfz z>$1zzdzsK%NKp-4*lnLFb+=D3$b5^nc6iz+`4^R#-9F79KFs5hvLQx z72B2QNXP@s>V1di_Zkqe2Gp{z^-+bC7#AChTPGs|a#jujf&QZPwIj(#*9W$~@aF3B z%d-*@5na>P{@V2u`V>3{ieVPSYnU(*B1&Cda$AuXs!xpb^e2*9hnTkSMf)=StZ*X3 ziwyL2(Blfsq$S4EtP_nGB)KWVgGNf0Lt zZ&C`CHyO&V&XjEP$hZ}jG7W=9KI@A5oJS_i{h7Huc}g`^5plP6dg{>bQg& z_u26h+i>j0gtiBtpEgC|nfS-$cAAAu&Em+p-0CX}fEFyjjTq4v1}Dj~8e>{+xqdfg z!p@>pE00;mc#hID->=_Us?C+~7=IH}apv0ZXe&IqJvd*_e#!C2Yg|!VQ%Ubf} zOofNbAK%Ny-ydYDxN)50P7;5A%G>g~< z!{`A4Uf#~X2Mh6KAPMRlGxO?8B9}j~G&bX9^;^k)AmKLcpVS)aH4YlK6o;up!}M_p zTbf0rhi!ewS|zW+bNwaHfCp3lo)M!93@>pOMOr=il6&7^=9O|d36BU*Yd}ZW^{B9y2gO;Bb)?XY3l0vlet9*a~MRfFD);JLyZ}rBjsYF;Esi#Cq%f| z2S-O7Fc=q}eV@>@L6x{pHmnEMXe+gp242#5j~3Cwhn(Q*~Vp-9xR> zv9WzndH1;m?oBw5_oj(oc3$jGK76#dzC8d=^;^5UyU-k^+u~%N_E-JkQaYDFM(;NH z+4m;fsq#nD>pw;DumjO1A*GvEc;}Doc;e5FC;VI;2aG`d>&Ni7Z)loJs zqvUZ){{n!iK`y?qj!*tdLj0ci%Ve*O04HK(@S?x$+UD~Ya1KVZ(IN@ z0Dyvz7n#4%;xJfvV?jdw+xAYqdv7F_&7GK~+8j#Sm&mxuS8|2p=xD1D$brh!-5L&K zq05N8kk?Xg5j=nc`L5I=D1uHl8QtoY=B?}7!<04O*iY?WO-t<k=b=AFokA^nLYbOL!vczV2nEwNE_Li8V-!#xyYR-qrb%;<5uV?N- zhfG<;yMcsx>(@US7#R^e=pyL1@S`j7g7SdHzi;~aY`27yOQ1b-!A;JDn{`FLv7j~( zdTx;gU)oI$C{bvLZ&lsCiXxb+$MvH`v0&XO^Kjl?W2~kLf0Sji5a!}!a8>@*S=Kns zayxYWom@0luDG;Ul>e#JXU{=$=#Gj?NK;dNtsR{y{&{+Y{;o%koEI#wuO18%7X&2Z zT0%)^*I%8N5*Pn!x7h$0*|^8L`EfB)bb8%Qm`fn=$+l(|PY8Fs%Fi2evaz%5lcoW#*cKKRFR>nL zaaZ`A2AY{=4B6>E&-!I3TVM74&h7`=_SL)3=kTyGXoh~lInc*hn$Q47KuAK;0u3SC zGtR>Vr^-AK0MiRV)5#%w2Dnj}85!PqTxO>Sim%(YsM1Ln4P#?EaFkq6EA3-|yv_WX zUK*!BSmMf8Z~!Un@qNz~w=g(73<>wMV%}tp57pJ2AUpss3rjkDz`dbTlKVdY{d+Qq z$*x_$F3g(+rksB+jT|gy`;;;*Yk3Io1RGme%zOsz-q=?saZQMScE_vTGKm{&rK(Tf z=uk1p1>-&Gyo8Ga9YFyUcx`_DJHCX2NZq^t_g<#6l&(y)}n#LoY-7ZS2xLyoeKq> z#l=NBCMFeqeJT!4PD(mDNXCc}C_KcxO9T`emK_BnV>D=q@(;ahaj;o%#PbgyWY9!z z!$1)PF|>tBeO&kjZLro~fSOs9j#44mU$mZ4e$ZfY$YZ`cj`q>k^za?Gc-Z|ms1wTf z$%?=BQQ$Jqf0i5`i9UN;tbk*wN5-lIbtFJ1?&Dts((i&FB7U^i6+Y&3+jIaR!=&V7 zC5{9(PEMO%@sogn0Ekyqp?m;Qq2$tSC!5_7RxU_nVB)XkeM#sY1HkXvwQF<_Ig7L* z)B*U#ZRdNKCkA(gKpV0V`g6SBh62|41wP<~aH@u>aDaqfT0=vlJvb?-;PyZb~~si?$55qGXs9y*Lb?{g{pi@XwY7EJ?&7OF%mRiY)%t><`Nt55nBIPM z!mQbb1{PYuJFVLb9sE?ZEgE)I1^r@v#=VQZ5st;?`1uqKHFMBS_C z)ms$-dIp8W&{%%@fj;8ya9yraIH^$=dHP_fmmXS?vCGK?*#7LpfTvKMgI9zR39_QY z#mDCm7S_wZ$Jdhs3W?a*SetL7-}pA*#zks;w{s@49mA`oJh?Hu8dkkdk2OD4q>$@3 zv5FM6i^<)>qE)v!1W>Uv+NP!qQPHI8aW*D2`UN9Jj<=!4`nI5eeoskbG{j9Yg5}1h`D9S8);EXwbv@?P;PGD zP5pOZf!_K)ULTJ29mRNuiwG=}tu~aDl$CMd4tKeuZ*x&2Pv3!l#C__+U$^UW!^6Yu zDLvj9Hpj=udZtcC4}`h6T9F^=t7WSN+V1XKo#k)K@cm(v4ZqQ5?6PN~q_p~?X9QL= zpbX%~iwQJm;upxcAmS^_@%Avd(^xy~gft8R?ueN7vWY%PJ?UJD2&>NmqV#&JxR9yBgp4d=YJ70TU!kOE-JNvNW;DSn zRT%JXxF6JJO4HNHIWJtmgDMRLA+G)M8?X~X#)xjZINo@#;JmP~U~?<;JyhYmIa%_n}2jkUCjxzqzQgqDK*lXM+TD_x1*Hn#&G zMBX~vy@eAT<%RAbeR}iz2mYoj_pjCMts}=>${;tSp@(iR_*-!#H`mhOnz&V)Erra` zm*@2joU^yI3}R#vTPsQK@9y^W^|9P&Dr#8Rgq@^z$YFe27m#;=G@;_Ad?`5&JrCLH z$>}L(ov*B{2s^m;7Uy44IN1tT)qIEnPE%4G?n^=YNSf&A*;&gUi;Gg)W{zNulp~sG zrD+ldw_qzEaz%ceZb)2Bsk-f(xeEcw$;tS?RU+D~d($1x&~6VO)+%{mfEg$~rJM64 zYlOncz|Hg4@Lj^^xdA9e!M%*BPsYZI*QyjjRn5@-2}t_1QiYoC&Cdfg31v0YD6$gVzC3S^x*Zl0yLZ~EnD|(nS&@+M z!3hfhSq6)FD1pQpcYeCCxy7kdt!J5y5-;b318phC)Z5CuW6kAKO4fbL!i%g};hwe6 ziuC<+`|_(2fOC}*Sx0+zm)OcXcx=C6n|g|_fpPuUWh`0JzTO&kc88aZHwwQ(iw2~o z-;=t`7^JE8<3E^OHXG;Q@{-n>gaTozxbx^+tk}8{gY>1PrGz}CB`PRGiqT^#GkrU? zgWQ14t~b@owS|hRw!?x`JN#lC4fRTB<+;v6{KC!zARdnqbX*>GFjR`={6?~jU&uUo z-|`Dj8T{?kIv$$CRgXZ|Z->z#Q$REU)V39&jo`#MCqX~8uyzo8cpONIv$!$MYlUA#%3s$HS%k{1Pc+|nzAUY!3GX%x0`1=bl zc_Vb5X)52UA%|FPnUuhyq|CfwkPGKzZQPui5v$%FS!FB4!_P9ggTYr`Dp^8#ue_py z`T58_cXtZ7BM0dv0nM$im(A_b|DN}%1!4<8_)Jd1jFi8Liz9=VY0vS5dg9Z} zOtJjSD^$Yt3tD02fYo`F3dfJ7C2799*;lh06FAlHj~?E>BowxBw{vdtg(wow zS%MrLZ9$5)VrF1(|Hhn(3L69TX9x&<$mAEb?**1<&H0CGuU=B{CA>B$Z`cmE87aCN z>0~AwaJVwW{2`-Hio=F9s5t04Yu@A?la$|Op^IwR#w4?3DAC>n4ZNT~w?-G=ZrnG2 z9=K?PVtv8z40?)aUzHm-uv~dthrs>-y2L8eAc)?8;$rfFslyELktQrFpciy0LEYcr z5yeY@g|;68>BJjMucdW8s&8%c%}i%2TKqBUfH*(+d^o;Om&Cl(c%>Ar z-199Xh9M^AW+^TCy8OY{A%5Kqc8@t(c&`fPMsL(>AA#y!SkEOeojh*WEM4$~9Oo}n zXLoT5v&>uf&TTx6t&+(hReLA`9VfFtf41OpP=U%E#E*|*Z*p;s^WJO+M%SZEel9W;xf7}kK1(Q^|lESC$y!jym-+_>c0bMtvZg7Br5 z>e{&JJ!|0UBw46H24$W*$dBBviU|}ZY9_`IhDC#x+8)gC<9~T3$u9WfM2v|5+)?5U z#EJcmFYO1MoD8N{@N@|+aEk0E~o<~i|Q-q3fM$#B}c!= z$7|e0=}4{O;wxXUv$wxmY_wK?lO^!cG)y!wXbNX^s(?>`6clt>#sy&lJbU{z^XHi9 z78)NL3!lF8+v~#D(a|_`H^>7WW)f=DZN`bX-H%3^cd_SZCC+R8Q zya>m_$c^_gZdk7+SD5%wXKrx&en$CXH{zqdMGoB?uc;izKrHX)9~cm66HXC_$9ct& z)`Xp6$|l}>l~q+afF45t7=Zx$MM;2;1LICzbJkkP* zeBY}`;KMZmJ4rIG!trM`0EusOGw=CWOF}aHb2xti;uHugyi;q0xJ3Rf-#PEU2!`S& zW_f^(m)gu~^gmRC+f2=4EUg_Kx$oa2WWYI46KzOW2D=2PU;!PBP(D+^=`btz=f=j@ z7fO-w@ejKBo?e7fa?FzY_V3>nyqq#hz6=-^H*r?772WioOgZWe+Lc5$Ti+qBD}2G^ zfBqDn+ZE^c7LTpF($mQya9QLMTo12E`uLjf6THf&Z)|7J-oA}eU}bR7M6x_6W`1HX zN#gXCzqMD-yk_aN^$IG%kOi4F_&+q9FMx75Ca#CL6^JLmQUL-YCl1MTJFp=HF~8Q4 zDnu-{wzkF_Nvi_8BP@eUi;HvX6BYIYw)gMfH~uif1H{1LeBEl_$nMfk7{D@3M+uu^M5@L#u3wqLq@S0VqmzDCS=(OwKWR>ReE-$eI;QdF)an%Bh+_Xnd3ZT zKA|uuPGS-fsO^vn&|-_}430|PQdd*skdvDdNXUc>;Ts1yR^B&Mb5}Mle*=Xs7NGLj z512te!hQ+}&-~R}gwXm129z{3VX*!?ZABm>Vq<4-x~rKJBP?5IkC2yLVZnJ6dR3U} zk_3bbPy)Lj$(jgRI1GAB+Qp=6TsoO^?1T@f8BwJNn-&B;hgQN@SrncPEU5byn$yKG z-gsAQZ!|RKU-Tp0X!FPQ3%fMc=jp#dcvTYIF8nB#y8i)L<2?M;4a9(sgvn#F`EtsB70WG|Df@l=FP0MuC|I24K1`MX_r`4JtGeTjI-+_-pruHBCn@6bb2zU1P zPz!WlBs3sCw2~!ke(2AgH0SF-P;XilZ-9t0<9ObDq#OU?bZ1%cdI5ni4WzukvtF3+ zmWyc>lP;tE?aXybV(pB7SKh|@p`5tf{N_gOmBl8Z6tGf-&d-=KW1O})|07NgGU3rDD)ss@ug;a|G zOGTNB&IwhNDm~h`g)_*8l#pXKm}3X)l7Y3dj5@J&$qT{r4}; z_k`d@#k|2;TI0rzr*VlMHa4771GsZcWB)KLN4ef1g8mkL~Ocs;(0MkD=fb zA?&_?R7fEtqOxA#hqfRektzS@p+t}!-Cuf~Tg9|WgJ_J`w~{$U$ctcKRBG6Erm*{0 zKgxeaAMo%b_}lM=QXl;P|LHRR_JY(u{}e*@7vg$i#oY z7c)p)LMgNKIE*QS^f>1c_W%)W`g&<|R6}%|?Yn!M&5U(Aif!)-68_btz{knj1*ABv zThV87nn9WEzqj&T9?SLHrTA5P?=Qrf^SEcf!}~iOFlzk$c6Z`Gi{qccPOLeY9=(bk z()ihdh=Oxe%e+W)evX#6zoXcwLffb{nVljC(tR#65G&qbrf=|_S+aou$C{Udskgh4WHdyteq8( z$=l`lzoFWrpnZIG;W$t@A>RA?N9Fw0K(Ys~ZdeD27Ycj}ei*$fzHVR@@k_^O_J&7g ze^rE~f-F+Hb14GXUvo_rrsdzo+1^;hR^AneCKIHb`?fOFlAFHZ>uX)UY57SR>${Ix zC|T%NZ{fl_{N@1%E#b%RRXKM@
4pEYpE-f!VMIF4Gs$NA4T!|aFZVJu7fpo%wS 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 QN8qKUd0gX}nq}bs12=updateStickers(); } @@ -56,7 +55,7 @@ void StickerSetInner::gotSet(const MTPmessages_StickerSet &set) { } if (d.vset.type() == mtpc_stickerSet) { const MTPDstickerSet &s(d.vset.c_stickerSet()); - _setTitle = qs(s.vtitle); + _setTitle = stickerSetTitle(s); _title = st::boxTitleFont->elided(_setTitle, width() - st::boxTitlePosition.x() - st::boxTitleHeight); _setShortName = qs(s.vshort_name); _setId = s.vid.v; @@ -91,23 +90,14 @@ bool StickerSetInner::failedSet(const RPCError &error) { void StickerSetInner::installDone(const MTPBool &result) { StickerSets &sets(cRefStickerSets()); + _setFlags &= ~MTPDstickerSet::flag_disabled; sets.insert(_setId, StickerSet(_setId, _setAccess, _setTitle, _setShortName, _setCount, _setHash, _setFlags)).value().stickers = _pack; - int32 insertAtIndex = 0; StickerSetsOrder &order(cRefStickerSetsOrder()); - for (int32 s = order.size(); insertAtIndex < s; ++insertAtIndex) { - StickerSets::const_iterator i = sets.constFind(order.at(insertAtIndex)); - if (i == sets.cend() || !(i->flags & MTPDstickerSet::flag_official)) { - break; - } - } - int32 currentIndex = cStickerSetsOrder().indexOf(_setId); + int32 insertAtIndex = 0, currentIndex = order.indexOf(_setId); if (currentIndex != insertAtIndex) { if (currentIndex > 0) { order.removeAt(currentIndex); - if (currentIndex < insertAtIndex) { - --insertAtIndex; - } } order.insert(insertAtIndex, _setId); } @@ -121,7 +111,7 @@ void StickerSetInner::installDone(const MTPBool &result) { sets.erase(custom); } } - cSetStickersHash(QByteArray()); + cSetStickersHash(stickersCountHash()); Local::writeStickers(); emit installed(_setId); App::wnd()->hideLayer(); @@ -195,7 +185,10 @@ bool StickerSetInner::loaded() const { } int32 StickerSetInner::notInstalled() const { - return (_loaded && (cStickerSets().constFind(_setId) == cStickerSets().cend())) ? _pack.size() : 0; + if (!_loaded) return 0; + StickerSets::const_iterator it = cStickerSets().constFind(_setId); + if (it == cStickerSets().cend() || (it->flags & MTPDstickerSet::flag_disabled)) return _pack.size(); + return 0; } bool StickerSetInner::official() const { @@ -285,16 +278,16 @@ void StickerSetBox::showAll() { int32 cnt = _inner.notInstalled(); if (_inner.loaded()) { _shadow.show(); - if (_inner.official()) { - _add.hide(); - _share.hide(); - _cancel.hide(); - _done.show(); - } else if (_inner.notInstalled()) { + if (_inner.notInstalled()) { _add.show(); _cancel.show(); _share.hide(); _done.hide(); + } else if (_inner.official()) { + _add.hide(); + _share.hide(); + _cancel.hide(); + _done.show(); } else { _share.show(); _cancel.show(); @@ -334,3 +327,589 @@ void StickerSetBox::resizeEvent(QResizeEvent *e) { _cancel.moveToRight(st::boxButtonPadding.right() + _add.width() + st::boxButtonPadding.left(), _add.y()); } } + +StickersInner::StickersInner() : TWidget() +, _rowHeight(st::contactsPadding.top() + st::contactsPhotoSize + st::contactsPadding.bottom()) +, _aboveShadowFadeStart(0) +, _aboveShadowFadeOpacity(0, 0) +, _a_shifting(animFunc(this, &StickersInner::animStep_shifting)) +, _saving(false) +, _removeSel(-1) +, _removeDown(-1) +, _removeWidth(st::normalFont->width(lang(lng_stickers_remove))) +, _returnWidth(st::normalFont->width(lang(lng_stickers_return))) +, _selected(-1) +, _started(-1) +, _dragging(-1) +, _above(-1) +, _aboveShadow(st::boxShadow) +, _scrollbar(0) { + connect(App::wnd(), SIGNAL(imageLoaded()), this, SLOT(update())); + setMouseTracking(true); +} + +void StickersInner::paintEvent(QPaintEvent *e) { + QRect r(e->rect()); + Painter p(this); + + p.fillRect(r, st::white); + p.setClipRect(r); + + int32 yFrom = r.y() - st::membersPadding.top(), yTo = r.y() + r.height() - st::membersPadding.top(); + p.translate(0, st::membersPadding.top()); + if (_rows.isEmpty()) { + p.setFont(st::noContactsFont->f); + p.setPen(st::noContactsColor->p); + p.drawText(QRect(0, 0, width(), st::noContactsHeight), lang(lng_contacts_loading), style::al_center); + } else { + int32 from = floorclamp(yFrom - _rowHeight, _rowHeight, 0, _rows.size()); + int32 to = ceilclamp(yTo + _rowHeight, _rowHeight, 0, _rows.size()); + p.translate(0, from * _rowHeight); + for (int32 i = from; i < to; ++i) { + if (i != _above) { + paintRow(p, i); + } + p.translate(0, _rowHeight); + } + if (from <= _above && _above < to) { + p.translate(0, (_above - to) * _rowHeight); + paintRow(p, _above); + } + } +} + +void StickersInner::paintRow(Painter &p, int32 index) { + const StickerSetRow *s(_rows.at(index)); + + int32 xadd = s->xadd.current(), yadd = s->yadd.current(); + if (xadd || yadd) p.translate(xadd, yadd); + + bool removeSel = (index == _removeSel && (_removeDown < 0 || index == _removeDown)); + bool removeDown = removeSel && (index == _removeDown); + + p.setFont((removeSel ? st::linkOverFont : st::linkFont)->f); + if (removeDown) { + p.setPen(st::btnDefLink.downColor->p); + } else { + p.setPen(st::btnDefLink.color->p); + } + p.drawTextRight(st::contactsPadding.right() + st::contactsCheckPosition.x(), st::contactsPadding.top() + (st::contactsPhotoSize - st::normalFont->height) / 2, width(), lang(s->disabled ? lng_stickers_return : lng_stickers_remove), s->disabled ? _returnWidth : _removeWidth); + + if (index == _above) { + float64 current = _aboveShadowFadeOpacity.current(); + if (_started >= 0) { + float64 o = aboveShadowOpacity(); + if (o > current) { + _aboveShadowFadeOpacity = anim::fvalue(o, o); + current = o; + } + } + p.setOpacity(current); + QRect row(myrtlrect(_aboveShadow.getDimensions(st::boxShadowShift).left(), st::contactsPadding.top() / 2, width() - (st::contactsPadding.left() / 2) - _scrollbar - _aboveShadow.getDimensions(st::boxShadowShift).right(), _rowHeight - ((st::contactsPadding.top() + st::contactsPadding.bottom()) / 2))); + _aboveShadow.paint(p, row, st::boxShadowShift); + p.fillRect(row, st::white); + p.setOpacity(1); + } + + if (s->disabled) p.setOpacity(st::stickersRowDisabledOpacity); + if (s->sticker) { + s->sticker->thumb->load(); + QPixmap pix(s->sticker->thumb->pix(s->pixw, s->pixh)); + p.drawPixmapLeft(st::contactsPadding.left() + (st::contactsPhotoSize - s->pixw) / 2, st::contactsPadding.top() + (st::contactsPhotoSize - s->pixh) / 2, width(), pix); + } + p.setFont(st::contactsNameFont); + p.setPen(st::black); + + int32 namex = st::contactsPadding.left() + st::contactsPhotoSize + st::contactsPadding.left(); + p.drawTextLeft(namex, st::contactsPadding.top() + st::contactsNameTop, width(), s->title); + + p.setFont(st::contactsStatusFont); + p.setPen(st::contactsStatusFg); + p.drawTextLeft(namex, st::contactsPadding.top() + st::contactsStatusTop, width(), lng_stickers_count(lt_count, s->count)); + + p.setOpacity(1); + if (xadd || yadd) p.translate(-xadd, -yadd); +} + +void StickersInner::mousePressEvent(QMouseEvent *e) { + if (_saving) return; + if (_dragging >= 0) mouseReleaseEvent(e); + _mouse = e->globalPos(); + onUpdateSelected(); + if (_removeSel >= 0) { + _removeDown = _removeSel; + update(0, st::membersPadding.top() + _removeSel * _rowHeight, width(), _rowHeight); + } else if (_selected >= 0) { + _above = _dragging = _started = _selected; + _dragStart = mapFromGlobal(_mouse); + } +} + +void StickersInner::mouseMoveEvent(QMouseEvent *e) { + if (_saving) return; + _mouse = e->globalPos(); + onUpdateSelected(); +} + +void StickersInner::onUpdateSelected() { + if (_saving) return; + QPoint local(mapFromGlobal(_mouse)); + if (_dragging >= 0) { + int32 shift = 0; + uint64 ms = getms(); + if (_dragStart.y() > local.y() && _dragging > 0) { + shift = -floorclamp(_dragStart.y() - local.y() + (_rowHeight / 2), _rowHeight, 0, _dragging); + for (int32 from = _dragging, to = _dragging + shift; from > to; --from) { + qSwap(_rows[from], _rows[from - 1]); + _rows.at(from)->yadd = anim::ivalue(_rows.at(from)->yadd.current() - _rowHeight, 0); + _animStartTimes[from] = ms; + } + } else if (_dragStart.y() < local.y() && _dragging + 1 < _rows.size()) { + shift = floorclamp(local.y() - _dragStart.y() + (_rowHeight / 2), _rowHeight, 0, _rows.size() - _dragging - 1); + for (int32 from = _dragging, to = _dragging + shift; from < to; ++from) { + qSwap(_rows[from], _rows[from + 1]); + _rows.at(from)->yadd = anim::ivalue(_rows.at(from)->yadd.current() + _rowHeight, 0); + _animStartTimes[from] = ms; + } + } + if (shift) { + _dragging += shift; + _above = _dragging; + _dragStart.setY(_dragStart.y() + shift * _rowHeight); + if (!_a_shifting.animating()) { + _a_shifting.start(); + } + } +// _rows.at(_dragging)->xadd = anim::ivalue(local.x() - _dragStart.x(), local.x() - _dragStart.x()); + _rows.at(_dragging)->yadd = anim::ivalue(local.y() - _dragStart.y(), local.y() - _dragStart.y()); + _animStartTimes[_dragging] = 0; + update(0, st::membersPadding.top() + _rowHeight * (_dragging + qMin(shift, 0) - 1), width(), _rowHeight * (qMax(shift, 0) - qMin(shift, 0) + 3)); + + emit checkDraggingScroll(local.y()); + } else { + bool in = rect().marginsRemoved(QMargins(0, st::membersPadding.top(), 0, st::membersPadding.bottom())).contains(local); + _selected = in ? floorclamp(local.y() - st::membersPadding.top(), _rowHeight, 0, _rows.size() - 1) : -1; + int32 removeSel = -1; + + if (_selected >= 0) { + int32 remw = _rows.at(_selected)->disabled ? _returnWidth : _removeWidth; + QRect rem(myrtlrect(width() - st::contactsPadding.right() - st::contactsCheckPosition.x() - remw, st::contactsPadding.top() + (st::contactsPhotoSize - st::normalFont->height) / 2, remw, st::normalFont->height)); + removeSel = rem.contains(local.x(), local.y() - st::membersPadding.top() - _selected * _rowHeight) ? _selected : -1; + } + setRemoveSel(removeSel); + emit noDraggingScroll(); + } +} + +float64 StickersInner::aboveShadowOpacity() const { + if (_above < 0) return 0; + + int32 dx = qAbs(_above * _rowHeight + _rows.at(_above)->yadd.current() - _started * _rowHeight); + int32 dy = qAbs(_rows.at(_above)->xadd.current()); + return qMin((dx + dy) * 2. / _rowHeight, 1.); +} + +void StickersInner::mouseReleaseEvent(QMouseEvent *e) { + if (_saving) return; + _mouse = e->globalPos(); + onUpdateSelected(); + if (_removeDown == _removeSel && _removeSel >= 0) { + _rows[_removeDown]->disabled = !_rows[_removeDown]->disabled; + } else if (_dragging >= 0) { + QPoint local(mapFromGlobal(_mouse)); + _rows[_dragging]->xadd.start(0); + _rows[_dragging]->yadd.start(0); + _aboveShadowFadeStart = _animStartTimes[_dragging] = getms(); + _aboveShadowFadeOpacity = anim::fvalue(aboveShadowOpacity(), 0); + if (!_a_shifting.animating()) { + _a_shifting.start(); + } + + _dragging = _started = -1; + } + if (_removeDown >= 0) { + update(0, st::membersPadding.top() + _removeDown * _rowHeight, width(), _rowHeight); + _removeDown = -1; + } +} + +bool StickersInner::animStep_shifting(float64) { + uint64 ms = getms(); + bool animating = false; + int32 updateMin = -1, updateMax = 0; + for (int32 i = 0, l = _animStartTimes.size(); i < l; ++i) { + uint64 start = _animStartTimes.at(i); + if (start) { + if (updateMin < 0) updateMin = i; + updateMax = i; + if (start + st::stickersRowDuration > ms && ms > start) { + _rows.at(i)->xadd.update((ms - start) / st::stickersRowDuration, anim::sineInOut); + _rows.at(i)->yadd.update((ms - start) / st::stickersRowDuration, anim::sineInOut); + animating = true; + } else { + _rows.at(i)->xadd.finish(); + _rows.at(i)->yadd.finish(); + _animStartTimes[i] = 0; + } + } + } + if (_aboveShadowFadeStart) { + if (updateMin < 0 || updateMin > _above) updateMin = _above; + if (updateMax < _above) updateMin = _above; + if (_aboveShadowFadeStart + st::stickersRowDuration > ms && ms > _aboveShadowFadeStart) { + _aboveShadowFadeOpacity.update((ms - _aboveShadowFadeStart) / st::stickersRowDuration, anim::sineInOut); + animating = true; + } else { + _aboveShadowFadeOpacity.finish(); + _aboveShadowFadeStart = 0; + } + } + if (updateMin >= 0) { + update(0, st::membersPadding.top() + _rowHeight * (updateMin - 1), width(), _rowHeight * (updateMax - updateMin + 3)); + } + if (!animating) { + _above = _dragging; + } + return animating; +} + +void StickersInner::clear() { + for (int32 i = 0, l = _rows.size(); i < l; ++i) { + delete _rows.at(i); + } + _rows.clear(); + _animStartTimes.clear(); + _aboveShadowFadeStart = 0; + _aboveShadowFadeOpacity = anim::fvalue(0, 0); + _a_shifting.stop(); + _above = _dragging = _started = -1; + _selected = -1; + _removeDown = -1; + setRemoveSel(-1); + update(); +} + +void StickersInner::setRemoveSel(int32 removeSel) { + if (removeSel != _removeSel) { + if (_removeSel >= 0) update(0, st::membersPadding.top() + _removeSel * _rowHeight, width(), _rowHeight); + _removeSel = removeSel; + if (_removeSel >= 0) update(0, st::membersPadding.top() + _removeSel * _rowHeight, width(), _rowHeight); + setCursor((_removeSel >= 0 && (_removeDown < 0 || _removeDown == _removeSel)) ? style::cur_pointer : style::cur_default); + } +} + +void StickersInner::rebuild() { + QList rows, rowsDisabled; + + int32 namex = st::contactsPadding.left() + st::contactsPhotoSize + st::contactsPadding.left(); + int32 namew = st::boxWideWidth - namex - st::contactsPadding.right() - st::contactsCheckPosition.x() - qMax(_returnWidth, _removeWidth); + + clear(); + const StickerSetsOrder &order(cStickerSetsOrder()); + _animStartTimes.reserve(order.size()); + + const StickerSets &sets(cStickerSets()); + for (int32 i = 0, l = order.size(); i < l; ++i) { + StickerSets::const_iterator it = sets.constFind(order.at(i)); + if (it != sets.cend()) { + bool disabled = (it->flags & MTPDstickerSet::flag_disabled); + + DocumentData *sticker = it->stickers.isEmpty() ? 0 : it->stickers.at(0); + int32 pixw = 0, pixh = 0; + if (sticker) { + pixw = sticker->thumb->width(); + pixh = sticker->thumb->height(); + if (pixw > st::contactsPhotoSize) { + if (pixw > pixh) { + pixh = (pixh * st::contactsPhotoSize) / pixw; + pixw = st::contactsPhotoSize; + } else { + pixw = (pixw * st::contactsPhotoSize) / pixh; + pixh = st::contactsPhotoSize; + } + } else if (pixh > st::contactsPhotoSize) { + pixw = (pixw * st::contactsPhotoSize) / pixh; + pixh = st::contactsPhotoSize; + } + } + QString title = it->title; + int32 titleWidth = st::contactsNameFont->width(title); + if (titleWidth > namew) { + title = st::contactsNameFont->elided(title, namew); + } + (disabled ? rowsDisabled : rows).push_back(new StickerSetRow(it->id, sticker, it->stickers.size(), title, disabled, pixw, pixh)); + _animStartTimes.push_back(0); + if (it->stickers.isEmpty() || (it->flags & MTPDstickerSet_flag_NOT_LOADED)) { + App::api()->scheduleStickerSetRequest(it->id, it->access); + } + } + } + App::api()->requestStickerSets(); + _rows = rows + rowsDisabled; + resize(width(), st::membersPadding.top() + _rows.size() * _rowHeight + st::membersPadding.bottom()); +} + +QVector StickersInner::getOrder() const { + QVector result; + result.reserve(_rows.size()); + for (int32 i = 0, l = _rows.size(); i < l; ++i) { + if (_rows.at(i)->disabled) { + StickerSets::const_iterator it = cStickerSets().constFind(_rows.at(i)->id); + if (it == cStickerSets().cend() || !(it->flags & MTPDstickerSet::flag_official)) { + continue; + } + } + result.push_back(_rows.at(i)->id); + } + return result; +} + +QVector StickersInner::getDisabledSets() const { + QVector result; + result.reserve(_rows.size()); + for (int32 i = 0, l = _rows.size(); i < l; ++i) { + if (_rows.at(i)->disabled) { + result.push_back(_rows.at(i)->id); + } + } + return result; +} + +void StickersInner::setVisibleScrollbar(int32 width) { + _scrollbar = width; +} + +StickersInner::~StickersInner() { + clear(); +} + +StickersBox::StickersBox() : ItemListBox(st::boxScroll) +, _save(this, lang(lng_settings_save), st::defaultBoxButton) +, _cancel(this, lang(lng_cancel), st::cancelBoxButton) +, _reorderRequest(0) +, _bottomShadow(this) { + ItemListBox::init(&_inner, st::boxButtonPadding.top() + _save.height() + st::boxButtonPadding.bottom()); + setMaxHeight(snap(countHeight(), int32(st::sessionsHeight), int32(st::boxMaxListHeight))); + + connect(App::main(), SIGNAL(stickersUpdated()), this, SLOT(onStickersUpdated())); + + connect(&_cancel, SIGNAL(clicked()), this, SLOT(onClose())); + connect(&_save, SIGNAL(clicked()), this, SLOT(onSave())); + + connect(&_inner, SIGNAL(checkDraggingScroll(int)), this, SLOT(onCheckDraggingScroll(int))); + connect(&_inner, SIGNAL(noDraggingScroll()), this, SLOT(onNoDraggingScroll())); + connect(&_scroll, SIGNAL(scrolled()), &_inner, SLOT(onUpdateSelected())); + connect(&_scrollTimer, SIGNAL(timeout()), this, SLOT(onScrollTimer())); + _scrollTimer.setSingleShot(false); + + onStickersUpdated(); + + prepare(); +} + +int32 StickersBox::countHeight() const { + return st::boxTitleHeight + _inner.height() + st::boxButtonPadding.top() + _save.height() + st::boxButtonPadding.bottom(); +} + +void StickersBox::disenableDone(const MTPBool & result, mtpRequestId req) { + _disenableRequests.remove(req); + if (_disenableRequests.isEmpty()) { + saveOrder(); + } +} + +bool StickersBox::disenableFail(const RPCError &error, mtpRequestId req) { + if (mtpIsFlood(error)) return false; + _disenableRequests.remove(req); + if (_disenableRequests.isEmpty()) { + saveOrder(); + } + return true; +} + +void StickersBox::saveOrder() { + QVector order = _inner.getOrder(); + if (order.size() > 1) { + QVector mtpOrder; + mtpOrder.reserve(order.size()); + for (int32 i = 0, l = order.size(); i < l; ++i) { + mtpOrder.push_back(MTP_long(order.at(i))); + } + _reorderRequest = MTP::send(MTPmessages_ReorderStickerSets(MTP_vector(mtpOrder)), rpcDone(&StickersBox::reorderDone), rpcFail(&StickersBox::reorderFail)); + } else { + reorderDone(MTP_boolTrue()); + } +} + +void StickersBox::reorderDone(const MTPBool &result) { + _reorderRequest = 0; + onClose(); +} + +bool StickersBox::reorderFail(const RPCError &result) { + if (mtpIsFlood(result)) return false; + _reorderRequest = 0; + cSetLastStickersUpdate(0); + App::main()->updateStickers(); + onClose(); + return true; +} + +void StickersBox::paintEvent(QPaintEvent *e) { + Painter p(this); + if (paint(p)) return; + + paintTitle(p, lang(lng_stickers_packs)); + p.translate(0, st::boxTitleHeight); +} + +void StickersBox::closePressed() { + if (!_disenableRequests.isEmpty()) { + for (QMap::const_iterator i = _disenableRequests.cbegin(), e = _disenableRequests.cend(); i != e; ++i) { + MTP::cancel(i.key()); + } + _disenableRequests.clear(); + cSetLastStickersUpdate(0); + App::main()->updateStickers(); + } else if (_reorderRequest) { + MTP::cancel(_reorderRequest); + _reorderRequest = 0; + cSetLastStickersUpdate(0); + App::main()->updateStickers(); + } +} + +void StickersBox::resizeEvent(QResizeEvent *e) { + ItemListBox::resizeEvent(e); + _save.moveToRight(st::boxButtonPadding.right(), height() - st::boxButtonPadding.bottom() - _save.height()); + _cancel.moveToRight(st::boxButtonPadding.right() + _save.width() + st::boxButtonPadding.left(), _save.y()); + _inner.resize(width(), _inner.height()); + _bottomShadow.setGeometry(0, height() - st::boxButtonPadding.bottom() - _save.height() - st::boxButtonPadding.top() - st::lineWidth, width(), st::lineWidth); + _inner.setVisibleScrollbar((_scroll.scrollTopMax() > 0) ? (st::boxScroll.width - st::boxScroll.deltax) : 0); +} + +void StickersBox::onStickersUpdated() { + _inner.rebuild(); + setMaxHeight(snap(countHeight(), int32(st::sessionsHeight), int32(st::boxMaxListHeight))); + _inner.setVisibleScrollbar((_scroll.scrollTopMax() > 0) ? (st::boxScroll.width - st::boxScroll.deltax) : 0); +} + +void StickersBox::onCheckDraggingScroll(int localY) { + if (localY < _scroll.scrollTop()) { + _scrollDelta = localY - _scroll.scrollTop(); + } else if (localY >= _scroll.scrollTop() + _scroll.height()) { + _scrollDelta = localY - _scroll.scrollTop() - _scroll.height() + 1; + } else { + _scrollDelta = 0; + } + if (_scrollDelta) { + _scrollTimer.start(15); + } else { + _scrollTimer.stop(); + } +} + +void StickersBox::onNoDraggingScroll() { + _scrollTimer.stop(); +} + +void StickersBox::onScrollTimer() { + int32 d = (_scrollDelta > 0) ? qMin(_scrollDelta * 3 / 20 + 1, int32(MaxScrollSpeed)) : qMax(_scrollDelta * 3 / 20 - 1, -int32(MaxScrollSpeed)); + _scroll.scrollToY(_scroll.scrollTop() + d); +} + +void StickersBox::onSave() { + if (!_inner.savingStart()) { + return; + } + + bool writeRecent = false; + RecentStickerPack &recent(cGetRecentStickers()); + StickerSets &sets(cRefStickerSets()); + + QVector reorder = _inner.getOrder(), disabled = _inner.getDisabledSets(); + for (int32 i = 0, l = disabled.size(); i < l; ++i) { + StickerSets::iterator it = sets.find(disabled.at(i)); + if (it != sets.cend()) { + for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { + if (it->stickers.indexOf(i->first) >= 0) { + i = recent.erase(i); + writeRecent = true; + } else { + ++i; + } + } + if (!(it->flags & MTPDstickerSet::flag_disabled)) { + MTPInputStickerSet setId = (it->id && it->access) ? MTP_inputStickerSetID(MTP_long(it->id), MTP_long(it->access)) : MTP_inputStickerSetShortName(MTP_string(it->shortName)); + if (it->flags & MTPDstickerSet::flag_official) { + _disenableRequests.insert(MTP::send(MTPmessages_InstallStickerSet(setId, MTP_boolTrue()), rpcDone(&StickersBox::disenableDone), rpcFail(&StickersBox::disenableFail), 0, 5), NullType()); + it->flags |= MTPDstickerSet::flag_disabled; + } else { + _disenableRequests.insert(MTP::send(MTPmessages_UninstallStickerSet(setId), rpcDone(&StickersBox::disenableDone), rpcFail(&StickersBox::disenableFail), 0, 5), NullType()); + cRefStickerSetsOrder().removeOne(it->id); + sets.erase(it); + } + } + } + } + StickerSetsOrder &order(cRefStickerSetsOrder()); + order.clear(); + for (int32 i = 0, l = reorder.size(); i < l; ++i) { + StickerSets::iterator it = sets.find(reorder.at(i)); + if (it != sets.cend()) { + if ((it->flags & MTPDstickerSet::flag_disabled) && !disabled.contains(it->id)) { + MTPInputStickerSet setId = (it->id && it->access) ? MTP_inputStickerSetID(MTP_long(it->id), MTP_long(it->access)) : MTP_inputStickerSetShortName(MTP_string(it->shortName)); + _disenableRequests.insert(MTP::send(MTPmessages_InstallStickerSet(setId, MTP_boolFalse()), rpcDone(&StickersBox::disenableDone), rpcFail(&StickersBox::disenableFail), 0, 5), NullType()); + it->flags &= ~MTPDstickerSet::flag_disabled; + } + order.push_back(reorder.at(i)); + } + } + for (StickerSets::iterator it = sets.begin(); it != sets.cend();) { + if (it->id == CustomStickerSetId || it->id == RecentStickerSetId || order.contains(it->id)) { + ++it; + } else { + it = sets.erase(it); + } + } + + cSetStickersHash(stickersCountHash()); + Local::writeStickers(); + if (writeRecent) Local::writeUserSettings(); + emit App::main()->stickersUpdated(); + + if (_disenableRequests.isEmpty()) { + saveOrder(); + } else { + MTP::sendAnything(); + } +} + +void StickersBox::hideAll() { + _save.hide(); + _cancel.hide(); + _bottomShadow.hide(); + ItemListBox::hideAll(); +} + +void StickersBox::showAll() { + _save.show(); + _cancel.show(); + _bottomShadow.show(); + ItemListBox::showAll(); +} + +int32 stickerPacksCount(bool includeDisabledOfficial) { + int32 result = 0; + const StickerSetsOrder &order(cStickerSetsOrder()); + const StickerSets &sets(cStickerSets()); + for (int32 i = 0, l = order.size(); i < l; ++i) { + StickerSets::const_iterator it = sets.constFind(order.at(i)); + if (it != sets.cend()) { + if (!(it->flags & MTPDstickerSet::flag_disabled) || ((it->flags & MTPDstickerSet::flag_official) && includeDisabledOfficial)) { + ++result; + } + } + } + return result; +} diff --git a/Telegram/SourceFiles/boxes/stickersetbox.h b/Telegram/SourceFiles/boxes/stickersetbox.h index c57e32bfd..0f766cd59 100644 --- a/Telegram/SourceFiles/boxes/stickersetbox.h +++ b/Telegram/SourceFiles/boxes/stickersetbox.h @@ -106,3 +106,136 @@ private: BoxButton _add, _share, _cancel, _done; QString _title; }; + +class StickersInner : public TWidget { + Q_OBJECT + +public: + + StickersInner(); + + void paintEvent(QPaintEvent *e); + void mousePressEvent(QMouseEvent *e); + void mouseMoveEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + + void rebuild(); + bool savingStart() { + if (_saving) return false; + _saving = true; + return true; + } + + QVector getOrder() const; + QVector getDisabledSets() const; + + void setVisibleScrollbar(int32 width); + + ~StickersInner(); + +signals: + + void checkDraggingScroll(int localY); + void noDraggingScroll(); + +public slots: + + void onUpdateSelected(); + +private: + + bool animStep_shifting(float64 ms); + void paintRow(Painter &p, int32 index); + void clear(); + void setRemoveSel(int32 removeSel); + float64 aboveShadowOpacity() const; + + int32 _rowHeight; + struct StickerSetRow { + StickerSetRow(uint64 id, DocumentData *sticker, int32 count, const QString &title, bool disabled, int32 pixw, int32 pixh) : id(id) + , sticker(sticker) + , count(count) + , title(title) + , disabled(disabled) + , pixw(pixw) + , pixh(pixh) + , xadd(0, 0) + , yadd(0, 0) { + } + uint64 id; + DocumentData *sticker; + int32 count; + QString title; + bool disabled; + int32 pixw, pixh; + anim::ivalue xadd, yadd; + }; + typedef QList StickerSetRows; + StickerSetRows _rows; + QList _animStartTimes; + uint64 _aboveShadowFadeStart; + anim::fvalue _aboveShadowFadeOpacity; + Animation _a_shifting; + + bool _saving; + + int32 _removeSel, _removeDown, _removeWidth, _returnWidth; + + QPoint _mouse; + int32 _selected; + QPoint _dragStart; + int32 _started, _dragging, _above; + + BoxShadow _aboveShadow; + + int32 _scrollbar; +}; + +class StickersBox : public ItemListBox, public RPCSender { + Q_OBJECT + +public: + + StickersBox(); + void resizeEvent(QResizeEvent *e); + void paintEvent(QPaintEvent *e); + + void closePressed(); + +public slots: + + void onStickersUpdated(); + + void onCheckDraggingScroll(int localY); + void onNoDraggingScroll(); + void onScrollTimer(); + + void onSave(); + +protected: + + void hideAll(); + void showAll(); + +private: + + int32 countHeight() const; + + void disenableDone(const MTPBool &result, mtpRequestId req); + bool disenableFail(const RPCError &error, mtpRequestId req); + void reorderDone(const MTPBool &result); + bool reorderFail(const RPCError &result); + void saveOrder(); + + StickersInner _inner; + BoxButton _save, _cancel; + QMap _disenableRequests; + mtpRequestId _reorderRequest; + ScrollableBoxShadow _bottomShadow; + + QTimer _scrollTimer; + int32 _scrollDelta; + +}; + +int32 stickerPacksCount(bool includeDisabledOfficial = false); diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index e45797acc..bf7d794a7 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -28,6 +28,7 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org #include "mainwidget.h" #include "boxes/addcontactbox.h" #include "boxes/contactsbox.h" +#include "boxes/confirmbox.h" #include "localstorage.h" @@ -53,7 +54,9 @@ DialogsInner::DialogsInner(QWidget *parent, MainWidget *main) : SplittedWidget(p , _cancelSearchInPeer(this, st::btnCancelSearch) , _overDelete(false) , _searchInPeer(0) -, _searchInMigrated(0) { +, _searchInMigrated(0) +, _menuPeer(0) +, _menu(0) { connect(App::wnd(), SIGNAL(imageLoaded()), this, SLOT(update())); connect(main, SIGNAL(peerNameChanged(PeerData*, const PeerData::Names&, const PeerData::NameFirstChars&)), this, SLOT(onPeerNameChanged(PeerData*, const PeerData::Names&, const PeerData::NameFirstChars&))); connect(main, SIGNAL(peerPhotoChanged(PeerData*)), this, SLOT(onPeerPhotoChanged(PeerData*))); @@ -91,7 +94,7 @@ void DialogsInner::paintRegion(Painter &p, const QRegion ®ion, bool paintingO if (_state == DefaultState) { int32 otherStart = dialogs.list.count * st::dlgHeight; - PeerData *active = App::main()->activePeer(), *selected = sel ? sel->history->peer : 0; + PeerData *active = App::main()->activePeer(), *selected = _menuPeer ? _menuPeer : (sel ? sel->history->peer : 0); if (otherStart) { dialogs.list.paint(p, fullWidth(), r.top(), r.top() + r.height(), active, selected, paintingOther); } @@ -160,7 +163,7 @@ void DialogsInner::paintRegion(Painter &p, const QRegion ®ion, bool paintingO MsgId actId = App::main()->activeMsgId(); for (; from < to; ++from) { bool active = ((_filterResults[from]->history->peer == act) || (_filterResults[from]->history->peer->migrateTo() && _filterResults[from]->history->peer->migrateTo() == act)) && !actId; - bool selected = (from == _filteredSel); + bool selected = (from == _filteredSel) || (_filterResults[from]->history->peer == _menuPeer); _filterResults[from]->paint(p, w, active, selected, paintingOther); p.translate(0, st::dlgHeight); } @@ -461,6 +464,9 @@ void DialogsInner::createDialog(History *history) { void DialogsInner::removeDialog(History *history) { if (!history) return; + if (history->peer == _menuPeer && _menu) { + _menu->deleteLater(); + } if (sel && sel->history == history) { sel = 0; } @@ -549,13 +555,26 @@ void DialogsInner::enterEvent(QEvent *e) { onUpdateSelected(true); } -void DialogsInner::updateSelectedRow() { +void DialogsInner::updateSelectedRow(PeerData *peer) { if (_state == DefaultState) { - if (sel) { + if (peer) { + if (History *h = App::historyLoaded(peer->id)) { + if (h->dialogs.contains(0)) { + update(0, h->dialogs.value(0)->pos * st::dlgHeight, fullWidth(), st::dlgHeight); + } + } + } else if (sel) { update(0, sel->pos * st::dlgHeight, fullWidth(), st::dlgHeight); } } else if (_state == FilteredState || _state == SearchedState) { - if (_hashtagSel >= 0) { + if (peer) { + for (int32 i = 0, l = _filterResults.size(); i != l; ++i) { + if (_filterResults.at(i)->history->peer == peer) { + update(0, filteredOffset() + i * st::dlgHeight, fullWidth(), st::dlgHeight); + break; + } + } + } else if (_hashtagSel >= 0) { update(0, _hashtagSel * st::mentionHeight, fullWidth(), st::mentionHeight); } else if (_filteredSel >= 0) { update(0, filteredOffset() + _filteredSel * st::dlgHeight, fullWidth(), st::dlgHeight); @@ -579,6 +598,142 @@ void DialogsInner::leaveEvent(QEvent *e) { } } +void DialogsInner::contextMenuEvent(QContextMenuEvent *e) { + if (_menu) { + _menu->deleteLater(); + _menu = 0; + } + if (_menuPeer) { + updateSelectedRow(_menuPeer); + _menuPeer = 0; + disconnect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData*))); + } + if (e->reason() == QContextMenuEvent::Mouse) { + lastMousePos = e->globalPos(); + selByMouse = true; + onUpdateSelected(true); + } + + History *history = 0; + if (_state == DefaultState) { + if (sel) history = sel->history; + } else if (_state == FilteredState || _state == SearchedState) { + if (_filteredSel >= 0 && _filteredSel < _filterResults.size()) { + history = _filterResults[_filteredSel]->history; + } + } + if (!history) return; + _menuPeer = history->peer; + + _menu = new PopupMenu(); + _menu->addAction(lang((_menuPeer->isChat() || _menuPeer->isMegagroup()) ? lng_context_view_group : (_menuPeer->isUser() ? lng_context_view_profile : lng_context_view_channel)), this, SLOT(onContextProfile()))->setEnabled(true); + _menu->addAction(lang(menuPeerMuted() ? lng_enable_notifications_from_tray : lng_disable_notifications_from_tray), this, SLOT(onContextToggleNotifications()))->setEnabled(true); + _menu->addAction(lang(lng_profile_search_messages), this, SLOT(onContextSearch()))->setEnabled(true); + if (_menuPeer->isUser()) { + _menu->addAction(lang(lng_profile_clear_history), this, SLOT(onContextClearHistory()))->setEnabled(true); + _menu->addAction(lang(lng_profile_delete_conversation), this, SLOT(onContextDeleteAndLeave()))->setEnabled(true); + _menu->addAction(lang((_menuPeer->asUser()->blocked == UserIsBlocked) ? (_menuPeer->asUser()->botInfo ? lng_profile_unblock_bot : lng_profile_unblock_user) : (_menuPeer->asUser()->botInfo ? lng_profile_block_bot : lng_profile_block_user)), this, SLOT(onContextToggleBlock()))->setEnabled(true); + connect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData*))); + } else if (_menuPeer->isChat()) { + _menu->addAction(lang(lng_profile_clear_history), this, SLOT(onContextClearHistory()))->setEnabled(true); + _menu->addAction(lang(lng_profile_clear_and_exit), this, SLOT(onContextDeleteAndLeave()))->setEnabled(true); + } else if (_menuPeer->isChannel() && _menuPeer->asChannel()->amIn() && !_menuPeer->asChannel()->amCreator()) { + _menu->addAction(lang(_menuPeer->isMegagroup() ? lng_profile_leave_group : lng_profile_leave_channel), this, SLOT(onContextDeleteAndLeave()))->setEnabled(true); + } + + connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroyed(QObject*))); + _menu->popup(e->globalPos()); + e->accept(); +} + +bool DialogsInner::menuPeerMuted() { + return _menuPeer && _menuPeer->notify != EmptyNotifySettings && _menuPeer->notify != UnknownNotifySettings && _menuPeer->notify->mute >= unixtime(); +} + +void DialogsInner::onContextProfile() { + if (!_menuPeer) return; + App::main()->showPeerProfile(_menuPeer); +} + +void DialogsInner::onContextToggleNotifications() { + if (!_menuPeer) return; + App::main()->updateNotifySetting(_menuPeer, menuPeerMuted()); +} + +void DialogsInner::onContextSearch() { + if (!_menuPeer) return; + App::main()->searchInPeer(_menuPeer); +} + +void DialogsInner::onContextClearHistory() { + if (!_menuPeer || _menuPeer->isChannel()) return; + ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : lng_sure_delete_group_history(lt_group, _menuPeer->name), lang(lng_box_delete), st::attentionBoxButton); + connect(box, SIGNAL(confirmed()), this, SLOT(onContextClearHistorySure())); + App::showLayer(box); +} + +void DialogsInner::onContextClearHistorySure() { + if (!_menuPeer || _menuPeer->isChannel()) return; + App::wnd()->hideLayer(); + App::main()->clearHistory(_menuPeer); +} + +void DialogsInner::onContextDeleteAndLeave() { + if (!_menuPeer) return; + ConfirmBox *box = new ConfirmBox(_menuPeer->isUser() ? lng_sure_delete_history(lt_contact, _menuPeer->name) : (_menuPeer->isChat() ? lng_sure_delete_and_exit(lt_group, _menuPeer->name) : lang(_menuPeer->isMegagroup() ? lng_sure_leave_group : lng_sure_leave_channel)), lang(_menuPeer->isUser() ? lng_box_delete : lng_box_leave), _menuPeer->isChannel() ? st::defaultBoxButton : st::attentionBoxButton); + connect(box, SIGNAL(confirmed()), this, SLOT(onContextDeleteAndLeaveSure())); + App::wnd()->showLayer(box); +} + +void DialogsInner::onContextDeleteAndLeaveSure() { + if (!_menuPeer) return; + if (_menuPeer->isUser()) { + App::main()->deleteConversation(_menuPeer); + } else if (_menuPeer->isChat()) { + App::wnd()->hideLayer(); + App::main()->showDialogs(); + MTP::send(MTPmessages_DeleteChatUser(_menuPeer->asChat()->inputChat, App::self()->inputUser), App::main()->rpcDone(&MainWidget::deleteHistoryAfterLeave, _menuPeer), App::main()->rpcFail(&MainWidget::leaveChatFailed, _menuPeer)); + } else if (_menuPeer->isChannel()) { + App::wnd()->hideLayer(); + App::main()->showDialogs(); + if (_menuPeer->migrateFrom()) { + App::main()->deleteConversation(_menuPeer->migrateFrom()); + } + MTP::send(MTPchannels_LeaveChannel(_menuPeer->asChannel()->inputChannel), App::main()->rpcDone(&MainWidget::sentUpdatesReceived)); + } +} + +void DialogsInner::onContextToggleBlock() { + if (!_menuPeer || !_menuPeer->isUser()) return; + if (_menuPeer->asUser()->blocked == UserIsBlocked) { + MTP::send(MTPcontacts_Unblock(_menuPeer->asUser()->inputUser), rpcDone(&DialogsInner::contextBlockDone, qMakePair(_menuPeer->asUser(), false))); + } else { + MTP::send(MTPcontacts_Block(_menuPeer->asUser()->inputUser), rpcDone(&DialogsInner::contextBlockDone, qMakePair(_menuPeer->asUser(), true))); + } +} + +void DialogsInner::contextBlockDone(QPair data, const MTPBool &result) { + data.first->blocked = data.second ? UserIsBlocked : UserIsNotBlocked; + emit App::main()->peerUpdated(data.first); +} + +void DialogsInner::onMenuDestroyed(QObject *obj) { + if (_menu == obj) { + _menu = 0; + if (_menuPeer) { + updateSelectedRow(_menuPeer); + _menuPeer = 0; + disconnect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData*))); + } + lastMousePos = QCursor::pos(); + if (rect().contains(mapFromGlobal(lastMousePos))) { + selByMouse = true; + setMouseTracking(true); + onUpdateSelected(true); + } + } +} + void DialogsInner::onParentGeometryChanged() { lastMousePos = QCursor::pos(); if (rect().contains(mapFromGlobal(lastMousePos))) { @@ -763,6 +918,18 @@ void DialogsInner::itemReplaced(HistoryItem *oldItem, HistoryItem *newItem) { } } +void DialogsInner::updateNotifySettings(PeerData *peer) { + if (_menu && _menuPeer == peer) { + _menu->actions().at(1)->setText(lang(menuPeerMuted() ? lng_enable_notifications_from_tray : lng_disable_notifications_from_tray)); + } +} + +void DialogsInner::peerUpdated(PeerData *peer) { + if (_menu && _menuPeer == peer && _menuPeer->isUser()) { + _menu->actions().at(5)->setText(lang((_menuPeer->asUser()->blocked == UserIsBlocked) ? (_menuPeer->asUser()->botInfo ? lng_profile_unblock_bot : lng_profile_unblock_user) : (_menuPeer->asUser()->botInfo ? lng_profile_block_bot : lng_profile_block_user))); + } +} + PeerData *DialogsInner::updateFromParentDrag(QPoint globalPos) { lastMousePos = globalPos; selByMouse = true; @@ -1708,6 +1875,10 @@ void DialogsWidget::itemReplaced(HistoryItem *oldItem, HistoryItem *newItem) { _inner.itemReplaced(oldItem, newItem); } +void DialogsWidget::updateNotifySettings(PeerData *peer) { + _inner.updateNotifySettings(peer); +} + void DialogsWidget::unreadCountsReceived(const QVector &dialogs) { for (QVector::const_iterator i = dialogs.cbegin(), e = dialogs.cend(); i != e; ++i) { switch (i->type()) { diff --git a/Telegram/SourceFiles/dialogswidget.h b/Telegram/SourceFiles/dialogswidget.h index 89d0f008a..eaea775e7 100644 --- a/Telegram/SourceFiles/dialogswidget.h +++ b/Telegram/SourceFiles/dialogswidget.h @@ -31,7 +31,7 @@ enum DialogsSearchRequestType { DialogsSearchMigratedFromOffset, }; -class DialogsInner : public SplittedWidget { +class DialogsInner : public SplittedWidget, public RPCSender { Q_OBJECT public: @@ -59,6 +59,7 @@ public: void resizeEvent(QResizeEvent *e); void enterEvent(QEvent *e); void leaveEvent(QEvent *e); + void contextMenuEvent(QContextMenuEvent *e); void peopleResultPaint(PeerData *peer, Painter &p, int32 w, bool act, bool sel, bool onlyBackground) const; void searchInPeerPaint(Painter &p, int32 w, bool onlyBackground) const; @@ -120,6 +121,8 @@ public: PeerData *updateFromParentDrag(QPoint globalPos); + void updateNotifySettings(PeerData *peer); + ~DialogsInner(); public slots: @@ -130,6 +133,19 @@ public slots: void onPeerPhotoChanged(PeerData *peer); void onDialogRowReplaced(DialogRow *oldRow, DialogRow *newRow); + void onContextProfile(); + void onContextToggleNotifications(); + void onContextSearch(); + void onContextClearHistory(); + void onContextClearHistorySure(); + void onContextDeleteAndLeave(); + void onContextDeleteAndLeaveSure(); + void onContextToggleBlock(); + + void onMenuDestroyed(QObject*); + + void peerUpdated(PeerData *peer); + signals: void mustScrollTo(int scrollToTop, int scrollToBottom); @@ -147,7 +163,9 @@ protected: private: void clearSearchResults(bool clearPeople = true); - void updateSelectedRow(); + void updateSelectedRow(PeerData *peer = 0); + bool menuPeerMuted(); + void contextBlockDone(QPair data, const MTPBool &result); DialogsIndexed dialogs; DialogsIndexed contactsNoDialogs; @@ -186,7 +204,9 @@ private: bool _overDelete; - PeerData *_searchInPeer, *_searchInMigrated; + PeerData *_searchInPeer, *_searchInMigrated, *_menuPeer; + + PopupMenu *_menu; }; @@ -242,6 +262,8 @@ public: void itemRemoved(HistoryItem *item); void itemReplaced(HistoryItem *oldItem, HistoryItem *newItem); + void updateNotifySettings(PeerData *peer); + signals: void cancelled(); diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index 51a3d2dcf..bd11940e5 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -30,6 +30,7 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org #include "apiwrap.h" #include "boxes/confirmbox.h" +#include "boxes/stickersetbox.h" Dropdown::Dropdown(QWidget *parent, const style::dropdown &st) : TWidget(parent), _ignore(false), _selected(-1), _st(st), _width(_st.width), _hiding(false), a_opacity(0), _shadow(_st.shadow) { @@ -1195,15 +1196,19 @@ void EmojiPanInner::showEmojiPack(DBIEmojiTab packIndex) { update(); } -StickerPanInner::StickerPanInner() : _maxHeight(st::emojiPanMaxHeight), -_top(0), _selected(-1), _pressedSel(-1) { - resize(st::emojiPanWidth - st::emojiScroll.width, countHeight()); +StickerPanInner::StickerPanInner() : TWidget() +, _top(0) +, _selected(-1) +, _pressedSel(-1) +, _settings(this, lang(lng_stickers_you_have)) { + setMaxHeight(st::emojiPanMaxHeight); setMouseTracking(true); setFocusPolicy(Qt::NoFocus); setAttribute(Qt::WA_OpaquePaintEvent); connect(App::wnd(), SIGNAL(imageLoaded()), this, SLOT(update())); + connect(&_settings, SIGNAL(clicked()), this, SLOT(onSettings())); refreshStickers(); } @@ -1211,6 +1216,7 @@ _top(0), _selected(-1), _pressedSel(-1) { void StickerPanInner::setMaxHeight(int32 h) { _maxHeight = h; resize(st::emojiPanWidth - st::emojiScroll.width, countHeight()); + _settings.moveToLeft((st::emojiPanWidth - _settings.width()) / 2, height() / 3); } void StickerPanInner::setScrollTop(int top) { @@ -1228,7 +1234,7 @@ int StickerPanInner::countHeight() { if (i == _sets.size() - 1 && h < minLastH) h = minLastH; result += h; } - return result + st::stickerPanPadding; + return qMax(minLastH, result) + st::stickerPanPadding; } QRect StickerPanInner::stickerRect(int tab, int sel) { @@ -1461,6 +1467,8 @@ void StickerPanInner::refreshStickers() { int32 h = countHeight(); if (h != height()) resize(width(), h); + _settings.setVisible(_sets.isEmpty()); + emit refreshIcons(); updateSelected(); @@ -1512,7 +1520,7 @@ uint64 StickerPanInner::currentSet(int yOffset) const { void StickerPanInner::appendSet(uint64 setId) { const StickerSets &sets(cStickerSets()); StickerSets::const_iterator it = sets.constFind(setId); - if (it == sets.cend() || it->stickers.isEmpty()) return; + if (it == sets.cend() || (it->flags & MTPDstickerSet::flag_disabled) || it->stickers.isEmpty()) return; StickerPack pack; pack.reserve(it->stickers.size()); @@ -1710,6 +1718,10 @@ void StickerPanInner::updateSelected() { if (startanim) anim::start(this); } +void StickerPanInner::onSettings() { + App::showLayer(new StickersBox()); +} + bool StickerPanInner::animStep(float64 ms) { uint64 now = getms(); QRegion toUpdate; @@ -1976,6 +1988,8 @@ void EmojiPan::paintEvent(QPaintEvent *e) { p.fillRect(myrtlrect(r.x() + r.width() - st::emojiScroll.width, r.y(), st::emojiScroll.width, e_scroll.height()), st::white->b); if (_stickersShown) { p.fillRect(r.left(), _iconsTop, r.width(), st::rbEmoji.height, st::emojiPanCategories->b); + p.drawSpriteLeft(_iconsLeft + 7 * st::rbEmoji.width + st::rbEmojiRecent.imagePos.x(), _iconsTop + st::rbEmojiRecent.imagePos.y(), width(), st::stickersSettings); + if (!_icons.isEmpty()) { int32 x = _iconsLeft, i = 0, selxrel = _iconSelX.current(), selx = x + selxrel - _iconsX.current(); if (!_icons.at(i).sticker) { @@ -1996,13 +2010,13 @@ void EmojiPan::paintEvent(QPaintEvent *e) { ++i; } - QRect clip(x, _iconsTop, _iconsLeft + 8 * st::rbEmoji.width - x, st::rbEmoji.height); + QRect clip(x, _iconsTop, _iconsLeft + 7 * st::rbEmoji.width - x, st::rbEmoji.height); if (rtl()) clip.moveLeft(width() - x - clip.width()); p.setClipRect(clip); i += _iconsX.current() / int(st::rbEmoji.width); x -= _iconsX.current() % int(st::rbEmoji.width); - for (int32 l = qMin(_icons.size(), i + 8 + (_icons.at(0).sticker ? 1 : 0)); i < l; ++i) { + for (int32 l = qMin(_icons.size(), i + 7 + (_icons.at(0).sticker ? 1 : 0)); i < l; ++i) { const StickerIcon &s(_icons.at(i)); s.sticker->thumb->load(); QPixmap pix(s.sticker->thumb->pix(s.pixw, s.pixh)); @@ -2028,7 +2042,7 @@ void EmojiPan::paintEvent(QPaintEvent *e) { float64 o_right = snap(float64(_iconsMax - _iconsX.current()) / st::stickerIconRight.pxWidth(), 0., 1.); if (o_right > 0) { p.setOpacity(o_right); - p.drawSpriteRight(QRect(width() - _iconsLeft - 8 * st::rbEmoji.width, _iconsTop, st::stickerIconRight.pxWidth(), st::rbEmoji.height), width(), st::stickerIconRight); + p.drawSpriteRight(QRect(width() - _iconsLeft - 7 * st::rbEmoji.width, _iconsTop, st::stickerIconRight.pxWidth(), st::rbEmoji.height), width(), st::stickerIconRight); } } } else { @@ -2100,27 +2114,31 @@ void EmojiPan::otherLeave() { } void EmojiPan::mousePressEvent(QMouseEvent *e) { - if (!_stickersShown || _icons.isEmpty()) return; + if (!_stickersShown) return; _iconsMousePos = e ? e->globalPos() : QCursor::pos(); updateSelected(); - _iconDown = _iconOver; - _iconsMouseDown = _iconsMousePos; - _iconsStartX = _iconsX.current(); + if (_iconOver == _icons.size()) { + App::showLayer(new StickersBox()); + } else { + _iconDown = _iconOver; + _iconsMouseDown = _iconsMousePos; + _iconsStartX = _iconsX.current(); + } } void EmojiPan::mouseMoveEvent(QMouseEvent *e) { - if (!_stickersShown || _icons.isEmpty()) return; + if (!_stickersShown) return; _iconsMousePos = e ? e->globalPos() : QCursor::pos(); updateSelected(); - if (!_iconsDragging && _iconDown >= (_icons.at(0).sticker ? 0 : 1)) { + if (!_iconsDragging && !_icons.isEmpty() && _iconDown >= (_icons.at(0).sticker ? 0 : 1)) { if ((_iconsMousePos - _iconsMouseDown).manhattanLength() >= QApplication::startDragDistance()) { _iconsDragging = true; } } if (_iconsDragging) { - int32 newX = snap(_iconsStartX + _iconsMouseDown.x() - _iconsMousePos.x(), 0, _iconsMax); + int32 newX = snap(_iconsStartX + (rtl() ? -1 : 1) * (_iconsMouseDown.x() - _iconsMousePos.x()), 0, _iconsMax); if (newX != _iconsX.current()) { _iconsX = anim::ivalue(newX, newX); _iconsStartAnim = 0; @@ -2150,7 +2168,7 @@ void EmojiPan::mouseReleaseEvent(QMouseEvent *e) { } else { updateSelected(); - if (wasDown == _iconOver && _iconOver >= 0) { + if (wasDown == _iconOver && _iconOver >= 0 && _iconOver < _icons.size()) { _iconSelX = anim::ivalue(_iconOver * st::rbEmoji.width, _iconOver * st::rbEmoji.width); s_inner.showStickerSet(_icons.at(_iconOver).setId); } @@ -2160,7 +2178,7 @@ void EmojiPan::mouseReleaseEvent(QMouseEvent *e) { bool EmojiPan::event(QEvent *e) { if (e->type() == QEvent::TouchBegin) { int a = 0; - } else if (e->type() == QEvent::Wheel && _iconOver >= ((_icons.isEmpty() || _icons.at(0).sticker) ? 0 : 1) && _iconDown < 0) { + } else if (e->type() == QEvent::Wheel && !_icons.isEmpty() && _iconOver >= (_icons.at(0).sticker ? 0 : 1) && _iconOver < _icons.size() && _iconDown < 0) { QWheelEvent *ev = static_cast(e); bool hor = (ev->angleDelta().x() != 0 || ev->orientation() == Qt::Horizontal); bool ver = (ev->angleDelta().y() != 0 || ev->orientation() == Qt::Vertical); @@ -2213,7 +2231,7 @@ void EmojiPan::onRefreshIcons() { _iconsMax = 0; } else { _iconHovers = QVector(_icons.size(), 0); - _iconsMax = qMax(int((_icons.size() - 8) * st::rbEmoji.width), 0); + _iconsMax = qMax(int((_icons.size() - 7) * st::rbEmoji.width), 0); } updatePanelsPositions(s_panels, s_scroll.scrollTop()); updateSelected(); @@ -2237,23 +2255,29 @@ void EmojiPan::leaveToChildEvent(QEvent *e) { } void EmojiPan::updateSelected() { - if (_icons.isEmpty() || _iconDown >= 0) return; + if (_iconDown >= 0) { + return; + } QPoint p(mapFromGlobal(_iconsMousePos)); int32 x = p.x(), y = p.y(), newOver = -1; if (rtl()) x = width() - x; x -= _iconsLeft; - if (y >= _iconsTop && y < _iconsTop + st::rbEmoji.height && x >= 0 && x < 8 * st::rbEmoji.width && x < _icons.size() * st::rbEmoji.width) { - if (!_icons.at(0).sticker) { - if (x < st::rbEmoji.width) { - newOver = 0; - } else { - x -= st::rbEmoji.width; + if (x >= st::rbEmoji.width * 7 && x < st::rbEmoji.width * 8 && y >= _iconsTop && y < _iconsTop + st::rbEmoji.height) { + newOver = _icons.size(); + } else if (!_icons.isEmpty()) { + if (y >= _iconsTop && y < _iconsTop + st::rbEmoji.height && x >= 0 && x < 7 * st::rbEmoji.width && x < _icons.size() * st::rbEmoji.width) { + if (!_icons.at(0).sticker) { + if (x < st::rbEmoji.width) { + newOver = 0; + } else { + x -= st::rbEmoji.width; + } + } + if (newOver < 0) { + x += _iconsX.current(); + newOver = qFloor(x / st::rbEmoji.width) + (_icons.at(0).sticker ? 0 : 1); } - } - if (newOver < 0) { - x += _iconsX.current(); - newOver = qFloor(x / st::rbEmoji.width) + (_icons.at(0).sticker ? 0 : 1); } } if (newOver != _iconOver) { @@ -2263,7 +2287,7 @@ void EmojiPan::updateSelected() { setCursor(style::cur_pointer); } bool startanim = false; - if (_iconOver >= 0) { + if (_iconOver >= 0 && _iconOver < _icons.size()) { _iconAnimations.remove(_iconOver + 1); if (_iconAnimations.find(-_iconOver - 1) == _iconAnimations.end()) { if (_iconAnimations.isEmpty() && !_iconsStartAnim) startanim = true; @@ -2271,7 +2295,7 @@ void EmojiPan::updateSelected() { } } _iconOver = newOver; - if (_iconOver >= 0) { + if (_iconOver >= 0 && _iconOver < _icons.size()) { _iconAnimations.remove(-_iconOver - 1); if (_iconAnimations.find(_iconOver + 1) == _iconAnimations.end()) { if (_iconAnimations.isEmpty() && !_iconsStartAnim) startanim = true; @@ -2645,7 +2669,7 @@ void EmojiPan::onRemoveSetSure() { } cRefStickerSets().erase(it); cRefStickerSetsOrder().removeOne(_removingSetId); - cSetStickersHash(QByteArray()); + cSetStickersHash(stickersCountHash()); refreshStickers(); Local::writeStickers(); if (writeRecent) Local::writeUserSettings(); diff --git a/Telegram/SourceFiles/dropdown.h b/Telegram/SourceFiles/dropdown.h index c2d0404b3..1d6e77e91 100644 --- a/Telegram/SourceFiles/dropdown.h +++ b/Telegram/SourceFiles/dropdown.h @@ -348,6 +348,7 @@ public: public slots: void updateSelected(); + void onSettings(); signals: @@ -391,6 +392,8 @@ private: int32 _selected, _pressedSel; QPoint _lastMousePos; + + LinkButton _settings; }; class EmojiPanel : public TWidget { diff --git a/Telegram/SourceFiles/gui/countryinput.h b/Telegram/SourceFiles/gui/countryinput.h index ff6c7e234..457c177e4 100644 --- a/Telegram/SourceFiles/gui/countryinput.h +++ b/Telegram/SourceFiles/gui/countryinput.h @@ -151,98 +151,3 @@ private: ScrollableBoxShadow _topShadow; }; - -/** / -class CountryList : public QWidget { - Q_OBJECT - -public: - - CountryList(QWidget *parent, const style::countryList &st = st::countryList); - - void paintEvent(QPaintEvent *e); - void mouseMoveEvent(QMouseEvent *e); - void mousePressEvent(QMouseEvent *e); - void enterEvent(QEvent *e); - void leaveEvent(QEvent *e); - - void selectSkip(int delta); - void selectSkipPage(int h, int delta); - - void updateFiltered(); - - QString getSelectedCountry() const; - -public slots: - - void onUpdateSelected(bool force = false); - void onParentGeometryChanged(); - -signals: - - void countrySelected(); - void mustScrollTo(int scrollToTop, int scrollToBottom); - -private: - - void resetList(); - void setSelected(int newSelected); - - int _sel; - style::countryList _st; - QPoint _mousePos; - - bool _mouseSel; - -}; - -class CountrySelect : public QWidget, public Animated { - Q_OBJECT - -public: - - CountrySelect(); - - void paintEvent(QPaintEvent *e); - void keyPressEvent(QKeyEvent *e); - void mousePressEvent(QMouseEvent *e); - void resizeEvent(QResizeEvent *e); - - bool animStep(float64 ms); - - ~CountrySelect(); - -signals: - - void countryChosen(const QString &country = QString()); - void countryFinished(); - -public slots: - - void onParentResize(const QSize &newSize); - void onCountryChoose(); - void onCountryCancel(); - void onScrollFinished(); - void onFilterUpdate(); - -private: - - void finish(const QString &res); - void prepareAnimation(int to); - - QString _result; - FlatInput _filter; - ScrollArea _scroll; - CountryList _list; - BoxButton _doneButton, _cancelButton; - int32 _innerLeft, _innerTop, _innerWidth, _innerHeight; - - anim::fvalue a_alpha, a_bgAlpha; - anim::ivalue a_coord; - anim::transition af_alpha, af_bgAlpha, af_coord; - QPixmap _cache; - - BoxShadow _shadow; - -}; -*/ \ No newline at end of file diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 7cb850fec..f360eb16c 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -2943,7 +2943,8 @@ void HistoryWidget::updateStickers() { if (cLastStickersUpdate() && getms(true) < cLastStickersUpdate() + StickersUpdateTimeout) return; if (_stickersUpdateRequest) return; - _stickersUpdateRequest = MTP::send(MTPmessages_GetAllStickers(MTP_string(cStickersHash())), rpcDone(&HistoryWidget::stickersGot), rpcFail(&HistoryWidget::stickersFailed)); + cSetStickersHash(stickersCountHash(true)); + _stickersUpdateRequest = MTP::send(MTPmessages_GetAllStickers(MTP_int(cStickersHash())), rpcDone(&HistoryWidget::stickersGot), rpcFail(&HistoryWidget::stickersFailed)); } void HistoryWidget::notifyBotCommandsChanged(UserData *user) { @@ -2993,9 +2994,6 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { const QVector &d_sets(d.vsets.c_vector().v); - QByteArray wasHash = cStickersHash(); - cSetStickersHash(qba(d.vhash)); - StickerSetsOrder &setsOrder(cRefStickerSetsOrder()); setsOrder.clear(); @@ -3008,21 +3006,9 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { if (d_sets.at(i).type() == mtpc_stickerSet) { const MTPDstickerSet &set(d_sets.at(i).c_stickerSet()); StickerSets::iterator i = sets.find(set.vid.v); - QString title = qs(set.vtitle); - if (set.vflags.v & MTPDstickerSet::flag_official) { - if (!title.compare(qstr("Great Minds"), Qt::CaseInsensitive)) { - title = lang(lng_stickers_default_set); - } - setsOrder.push_front(set.vid.v); - } else { - setsOrder.push_back(set.vid.v); - } - + QString title = stickerSetTitle(set); if (i == sets.cend()) { i = sets.insert(set.vid.v, StickerSet(set.vid.v, set.vaccess_hash.v, title, qs(set.vshort_name), set.vcount.v, set.vhash.v, set.vflags.v | MTPDstickerSet_flag_NOT_LOADED)); - if (!(i->flags & MTPDstickerSet::flag_disabled)) { - setsToRequest.insert(set.vid.v, set.vaccess_hash.v); - } } else { i->access = set.vaccess_hash.v; i->title = title; @@ -3032,21 +3018,40 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { i->count = set.vcount.v; i->hash = set.vhash.v; i->flags |= MTPDstickerSet_flag_NOT_LOADED; // need to request this set - if (!(i->flags & MTPDstickerSet::flag_disabled)) { - setsToRequest.insert(set.vid.v, set.vaccess_hash.v); - } + } + } + if (!(i->flags & MTPDstickerSet::flag_disabled) || (i->flags & MTPDstickerSet::flag_official)) { + setsOrder.push_back(set.vid.v); + if (i->stickers.isEmpty() || (i->flags & MTPDstickerSet_flag_NOT_LOADED)) { + setsToRequest.insert(set.vid.v, set.vaccess_hash.v); } } } } - for (StickerSets::iterator i = sets.begin(), e = sets.end(); i != e;) { - if (i->id == CustomStickerSetId || i->access != 0) { - ++i; + bool writeRecent = false; + RecentStickerPack &recent(cGetRecentStickers()); + for (StickerSets::iterator it = sets.begin(), e = sets.end(); it != e;) { + if (it->id == CustomStickerSetId || it->access != 0) { + ++it; } else { - i = sets.erase(i); + for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { + if (it->stickers.indexOf(i->first) >= 0) { + i = recent.erase(i); + writeRecent = true; + } else { + ++i; + } + } + it = sets.erase(it); } } + int32 countedHash = stickersCountHash(); + cSetStickersHash(countedHash); + if (countedHash != d.vhash.v) { + LOG(("API Error: received stickers hash %1 while counted hash is %2").arg(d.vhash.v).arg(countedHash)); + } + if (!setsToRequest.isEmpty() && App::api()) { for (QMap::const_iterator i = setsToRequest.cbegin(), e = setsToRequest.cend(); i != e; ++i) { App::api()->scheduleStickerSetRequest(i.key(), i.value()); @@ -3055,6 +3060,7 @@ void HistoryWidget::stickersGot(const MTPmessages_AllStickers &stickers) { } Local::writeStickers(); + if (writeRecent) Local::writeUserSettings(); if (App::main()) emit App::main()->stickersUpdated(); } diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp index 4834fdcba..e5e395c19 100644 --- a/Telegram/SourceFiles/localstorage.cpp +++ b/Telegram/SourceFiles/localstorage.cpp @@ -2608,11 +2608,12 @@ namespace Local { _writeMap(); } else { int32 setsCount = 0; - quint32 size = sizeof(quint32) + _bytearraySize(cStickersHash()); + QByteArray hashToWrite = (qsl("%d:") + QString::number(cStickersHash())).toUtf8(); + quint32 size = sizeof(quint32) + _bytearraySize(hashToWrite); for (StickerSets::const_iterator i = sets.cbegin(); i != sets.cend(); ++i) { bool notLoaded = (i->flags & MTPDstickerSet_flag_NOT_LOADED); if (notLoaded) { - if (!(i->flags & MTPDstickerSet::flag_disabled)) { // waiting to receive + if (!(i->flags & MTPDstickerSet::flag_disabled) || (i->flags & MTPDstickerSet::flag_official)) { // waiting to receive return; } } else { @@ -2639,7 +2640,7 @@ namespace Local { _writeMap(WriteMapFast); } EncryptedDescriptor data(size); - data.stream << quint32(setsCount) << cStickersHash(); + data.stream << quint32(setsCount) << hashToWrite; _writeStickerSet(data.stream, CustomStickerSetId); for (StickerSetsOrder::const_iterator i = cStickerSetsOrder().cbegin(), e = cStickerSetsOrder().cend(); i != e; ++i) { _writeStickerSet(data.stream, *i); @@ -2669,7 +2670,7 @@ namespace Local { RecentStickerPack &recent(cRefRecentStickers()); recent.clear(); - cSetStickersHash(QByteArray()); + cSetStickersHash(0); StickerSet &def(sets.insert(DefaultStickerSetId, StickerSet(DefaultStickerSetId, 0, lang(lng_stickers_default_set), QString(), 0, 0, MTPDstickerSet::flag_official)).value()); StickerSet &custom(sets.insert(CustomStickerSetId, StickerSet(CustomStickerSetId, 0, lang(lng_custom_stickers), QString(), 0, 0, 0)).value()); @@ -2827,7 +2828,11 @@ namespace Local { } } - cSetStickersHash(hash); + if (hash.startsWith(qsl("%d:").toUtf8())) { + cSetStickersHash(QString::fromUtf8(hash.mid(3)).toInt()); + } else { + cSetStickersHash(0); + } } void writeBackground(int32 id, const QImage &img) { diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 1fb04b95f..d0c7bad89 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -3688,6 +3688,7 @@ void MainWidget::startFull(const MTPVector &users) { } void MainWidget::applyNotifySetting(const MTPNotifyPeer &peer, const MTPPeerNotifySettings &settings, History *h) { + PeerData *updatePeer = 0; switch (settings.type()) { case mtpc_peerNotifySettingsEmpty: switch (peer.type()) { @@ -3695,18 +3696,15 @@ void MainWidget::applyNotifySetting(const MTPNotifyPeer &peer, const MTPPeerNoti case mtpc_notifyUsers: globalNotifyUsersPtr = EmptyNotifySettings; break; case mtpc_notifyChats: globalNotifyChatsPtr = EmptyNotifySettings; break; case mtpc_notifyPeer: { - PeerData *data = App::peerLoaded(peerFromMTP(peer.c_notifyPeer().vpeer)); - if (data && data->notify != EmptyNotifySettings) { - if (data->notify != UnknownNotifySettings) { - delete data->notify; + updatePeer = App::peerLoaded(peerFromMTP(peer.c_notifyPeer().vpeer)); + if (updatePeer && updatePeer->notify != EmptyNotifySettings) { + if (updatePeer->notify != UnknownNotifySettings) { + delete updatePeer->notify; } - data->notify = EmptyNotifySettings; - App::unregMuted(data); - if (!h) h = App::history(data->id); + updatePeer->notify = EmptyNotifySettings; + App::unregMuted(updatePeer); + if (!h) h = App::history(updatePeer->id); h->setMute(false); - if (history.peer() == data) { - history.updateNotifySettings(); - } } } break; } @@ -3714,19 +3712,18 @@ void MainWidget::applyNotifySetting(const MTPNotifyPeer &peer, const MTPPeerNoti case mtpc_peerNotifySettings: { const MTPDpeerNotifySettings &d(settings.c_peerNotifySettings()); NotifySettingsPtr setTo = UnknownNotifySettings; - PeerData *data = 0; switch (peer.type()) { case mtpc_notifyAll: setTo = globalNotifyAllPtr = &globalNotifyAll; break; case mtpc_notifyUsers: setTo = globalNotifyUsersPtr = &globalNotifyUsers; break; case mtpc_notifyChats: setTo = globalNotifyChatsPtr = &globalNotifyChats; break; case mtpc_notifyPeer: { - data = App::peerLoaded(peerFromMTP(peer.c_notifyPeer().vpeer)); - if (!data) break; + updatePeer = App::peerLoaded(peerFromMTP(peer.c_notifyPeer().vpeer)); + if (!updatePeer) break; - if (data->notify == UnknownNotifySettings || data->notify == EmptyNotifySettings) { - data->notify = new NotifySettings(); + if (updatePeer->notify == UnknownNotifySettings || updatePeer->notify == EmptyNotifySettings) { + updatePeer->notify = new NotifySettings(); } - setTo = data->notify; + setTo = updatePeer->notify; } break; } if (setTo == UnknownNotifySettings) break; @@ -3735,25 +3732,28 @@ void MainWidget::applyNotifySetting(const MTPNotifyPeer &peer, const MTPPeerNoti setTo->sound = d.vsound.c_string().v; setTo->previews = mtpIsTrue(d.vshow_previews); setTo->events = d.vevents_mask.v; - if (data) { - if (!h) h = App::history(data->id); + if (updatePeer) { + if (!h) h = App::history(updatePeer->id); int32 changeIn = 0; if (isNotifyMuted(setTo, &changeIn)) { App::wnd()->notifyClear(h); h->setMute(true); - App::regMuted(data, changeIn); + App::regMuted(updatePeer, changeIn); } else { h->setMute(false); } - if (history.peer() == data) { - history.updateNotifySettings(); - } } } break; } - if (profile) { - profile->updateNotifySettings(); + if (updatePeer) { + if (history.peer() == updatePeer) { + history.updateNotifySettings(); + } + dialogs.updateNotifySettings(updatePeer); + if (profile && profile->peer() == updatePeer) { + profile->updateNotifySettings(); + } } } @@ -4593,5 +4593,80 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { } } break; + case mtpc_updateNewStickerSet: { + const MTPDupdateNewStickerSet &d(update.c_updateNewStickerSet()); + if (d.vstickerset.type() == mtpc_messages_stickerSet) { + const MTPDmessages_stickerSet &set(d.vstickerset.c_messages_stickerSet()); + if (set.vset.type() == mtpc_stickerSet) { + const QVector &v(set.vdocuments.c_vector().v); + StickerPack pack; + pack.reserve(v.size()); + for (int32 i = 0, l = v.size(); i < l; ++i) { + DocumentData *doc = App::feedDocument(v.at(i)); + if (!doc || !doc->sticker()) continue; + + pack.push_back(doc); + } + + const MTPDstickerSet &s(set.vset.c_stickerSet()); + + StickerSets &sets(cRefStickerSets()); + + sets.insert(s.vid.v, StickerSet(s.vid.v, s.vaccess_hash.v, stickerSetTitle(s), qs(s.vshort_name), s.vcount.v, s.vhash.v, s.vflags.v)).value().stickers = pack; + + StickerSetsOrder &order(cRefStickerSetsOrder()); + int32 insertAtIndex = 0, currentIndex = order.indexOf(s.vid.v); + if (currentIndex != insertAtIndex) { + if (currentIndex > 0) { + order.removeAt(currentIndex); + } + order.insert(insertAtIndex, s.vid.v); + } + + StickerSets::iterator custom = sets.find(CustomStickerSetId); + if (custom != sets.cend()) { + for (int32 i = 0, l = pack.size(); i < l; ++i) { + custom->stickers.removeOne(pack.at(i)); + } + if (custom->stickers.isEmpty()) { + sets.erase(custom); + } + } + cSetStickersHash(stickersCountHash()); + Local::writeStickers(); + emit stickersUpdated(); + } + } + } break; + + case mtpc_updateStickerSetsOrder: { + const MTPDupdateStickerSetsOrder &d(update.c_updateStickerSetsOrder()); + const QVector &order(d.vorder.c_vector().v); + const StickerSets &sets(cStickerSets()); + StickerSetsOrder result; + for (int32 i = 0, l = order.size(); i < l; ++i) { + if (sets.constFind(order.at(i).v) == sets.cend()) { + break; + } + result.push_back(order.at(i).v); + } + if (result.size() != cStickerSetsOrder().size() || result.size() != order.size()) { + cSetLastStickersUpdate(0); + cSetStickersHash(0); + App::main()->updateStickers(); + } else { + cSetStickerSetsOrder(result); + cSetStickersHash(stickersCountHash()); + Local::writeStickers(); + emit stickersUpdated(); + } + } break; + + case mtpc_updateStickerSets: { + cSetLastStickersUpdate(0); + cSetStickersHash(0); + App::main()->updateStickers(); + } break; + } } diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp b/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp index 57904985c..b1d00fb1e 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.cpp @@ -21,6 +21,8 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org #include "stdafx.h" #include "mtpCoreTypes.h" +#include "lang.h" + #if defined _DEBUG || defined _WITH_DEBUG QString mtpWrapNumber(float64 number) { @@ -150,3 +152,11 @@ void mtpTextSerializeCore(MTPStringLogger &to, const mtpPrime *&from, const mtpP } #endif + +QString stickerSetTitle(const MTPDstickerSet &s) { + QString title = qs(s.vtitle); + if ((s.vflags.v & MTPDstickerSet::flag_official) && !title.compare(qstr("Great Minds"), Qt::CaseInsensitive)) { + return lang(lng_stickers_default_set); + } + return title; +} diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h index d240b34e2..290c7716c 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h @@ -368,7 +368,7 @@ static const mtpTypeId mtpLayers[] = { mtpTypeId(mtpc_invokeWithLayer18), }; static const uint32 mtpLayerMaxSingle = sizeof(mtpLayers) / sizeof(mtpLayers[0]); -static const mtpPrime mtpCurrentLayer = 42; +static const mtpPrime mtpCurrentLayer = 43; template class MTPBoxed : public bareT { @@ -990,3 +990,5 @@ enum { // client side flags static const MTPReplyMarkup MTPnullMarkup = MTP_replyKeyboardMarkup(MTP_int(0), MTP_vector(0)); static const MTPVector MTPnullEntities = MTP_vector(0); + +QString stickerSetTitle(const MTPDstickerSet &s); \ No newline at end of file diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.cpp b/Telegram/SourceFiles/mtproto/mtpScheme.cpp index fb6962cb5..627f9d69c 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.cpp +++ b/Telegram/SourceFiles/mtproto/mtpScheme.cpp @@ -2082,6 +2082,31 @@ void _serialize_wallPaperSolid(MTPStringLogger &to, int32 stage, int32 lev, Type } } +void _serialize_inputReportReasonSpam(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ inputReportReasonSpam }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + +void _serialize_inputReportReasonViolence(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ inputReportReasonViolence }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + +void _serialize_inputReportReasonPornography(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ inputReportReasonPornography }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + +void _serialize_inputReportReasonOther(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputReportReasonOther"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_userFull(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -2966,6 +2991,36 @@ void _serialize_updateChatParticipantAdmin(MTPStringLogger &to, int32 stage, int } } +void _serialize_updateNewStickerSet(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updateNewStickerSet"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" stickerset: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + +void _serialize_updateStickerSetsOrder(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updateStickerSetsOrder"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" order: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + +void _serialize_updateStickerSets(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ updateStickerSets }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + void _serialize_updates_state(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -4052,7 +4107,7 @@ void _serialize_messages_allStickers(MTPStringLogger &to, int32 stage, int32 lev to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 1: to.add(" sets: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; } @@ -4970,6 +5025,19 @@ void _serialize_channels_channelParticipant(MTPStringLogger &to, int32 stage, in } } +void _serialize_help_termsOfService(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_termsOfService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_req_pq(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -5229,6 +5297,20 @@ void _serialize_account_updateStatus(MTPStringLogger &to, int32 stage, int32 lev } } +void _serialize_account_reportPeer(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_reportPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 1: to.add(" reason: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_account_checkUsername(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -5457,6 +5539,19 @@ void _serialize_messages_editChatAdmin(MTPStringLogger &to, int32 stage, int32 l } } +void _serialize_messages_reorderStickerSets(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_reorderStickerSets"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" order: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_upload_saveFilePart(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -6835,7 +6930,7 @@ void _serialize_messages_getAllStickers(MTPStringLogger &to, int32 stage, int32 to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; } } @@ -7058,6 +7153,19 @@ void _serialize_help_getAppChangelog(MTPStringLogger &to, int32 stage, int32 lev } } +void _serialize_help_getTermsOfService(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_getTermsOfService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_channels_getParticipants(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -7305,6 +7413,10 @@ namespace { _serializers.insert(mtpc_peerNotifySettings, _serialize_peerNotifySettings); _serializers.insert(mtpc_wallPaper, _serialize_wallPaper); _serializers.insert(mtpc_wallPaperSolid, _serialize_wallPaperSolid); + _serializers.insert(mtpc_inputReportReasonSpam, _serialize_inputReportReasonSpam); + _serializers.insert(mtpc_inputReportReasonViolence, _serialize_inputReportReasonViolence); + _serializers.insert(mtpc_inputReportReasonPornography, _serialize_inputReportReasonPornography); + _serializers.insert(mtpc_inputReportReasonOther, _serialize_inputReportReasonOther); _serializers.insert(mtpc_userFull, _serialize_userFull); _serializers.insert(mtpc_contact, _serialize_contact); _serializers.insert(mtpc_importedContact, _serialize_importedContact); @@ -7372,6 +7484,9 @@ namespace { _serializers.insert(mtpc_updateChannelMessageViews, _serialize_updateChannelMessageViews); _serializers.insert(mtpc_updateChatAdmins, _serialize_updateChatAdmins); _serializers.insert(mtpc_updateChatParticipantAdmin, _serialize_updateChatParticipantAdmin); + _serializers.insert(mtpc_updateNewStickerSet, _serialize_updateNewStickerSet); + _serializers.insert(mtpc_updateStickerSetsOrder, _serialize_updateStickerSetsOrder); + _serializers.insert(mtpc_updateStickerSets, _serialize_updateStickerSets); _serializers.insert(mtpc_updates_state, _serialize_updates_state); _serializers.insert(mtpc_updates_differenceEmpty, _serialize_updates_differenceEmpty); _serializers.insert(mtpc_updates_difference, _serialize_updates_difference); @@ -7536,6 +7651,7 @@ namespace { _serializers.insert(mtpc_channelRoleEditor, _serialize_channelRoleEditor); _serializers.insert(mtpc_channels_channelParticipants, _serialize_channels_channelParticipants); _serializers.insert(mtpc_channels_channelParticipant, _serialize_channels_channelParticipant); + _serializers.insert(mtpc_help_termsOfService, _serialize_help_termsOfService); _serializers.insert(mtpc_req_pq, _serialize_req_pq); _serializers.insert(mtpc_req_DH_params, _serialize_req_DH_params); @@ -7557,6 +7673,7 @@ namespace { _serializers.insert(mtpc_account_updateNotifySettings, _serialize_account_updateNotifySettings); _serializers.insert(mtpc_account_resetNotifySettings, _serialize_account_resetNotifySettings); _serializers.insert(mtpc_account_updateStatus, _serialize_account_updateStatus); + _serializers.insert(mtpc_account_reportPeer, _serialize_account_reportPeer); _serializers.insert(mtpc_account_checkUsername, _serialize_account_checkUsername); _serializers.insert(mtpc_account_deleteAccount, _serialize_account_deleteAccount); _serializers.insert(mtpc_account_setAccountTTL, _serialize_account_setAccountTTL); @@ -7574,6 +7691,7 @@ namespace { _serializers.insert(mtpc_messages_installStickerSet, _serialize_messages_installStickerSet); _serializers.insert(mtpc_messages_uninstallStickerSet, _serialize_messages_uninstallStickerSet); _serializers.insert(mtpc_messages_editChatAdmin, _serialize_messages_editChatAdmin); + _serializers.insert(mtpc_messages_reorderStickerSets, _serialize_messages_reorderStickerSets); _serializers.insert(mtpc_upload_saveFilePart, _serialize_upload_saveFilePart); _serializers.insert(mtpc_upload_saveBigFilePart, _serialize_upload_saveBigFilePart); _serializers.insert(mtpc_help_saveAppLog, _serialize_help_saveAppLog); @@ -7693,6 +7811,7 @@ namespace { _serializers.insert(mtpc_help_getInviteText, _serialize_help_getInviteText); _serializers.insert(mtpc_help_getSupport, _serialize_help_getSupport); _serializers.insert(mtpc_help_getAppChangelog, _serialize_help_getAppChangelog); + _serializers.insert(mtpc_help_getTermsOfService, _serialize_help_getTermsOfService); _serializers.insert(mtpc_channels_getParticipants, _serialize_channels_getParticipants); _serializers.insert(mtpc_channels_getParticipant, _serialize_channels_getParticipant); diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h index f53568ead..6b0d1c3a1 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.h +++ b/Telegram/SourceFiles/mtproto/mtpScheme.h @@ -205,6 +205,10 @@ enum { mtpc_peerNotifySettings = 0x8d5e11ee, mtpc_wallPaper = 0xccb03657, mtpc_wallPaperSolid = 0x63117f24, + mtpc_inputReportReasonSpam = 0x58dbcab8, + mtpc_inputReportReasonViolence = 0x1e22c78d, + mtpc_inputReportReasonPornography = 0x2e59d922, + mtpc_inputReportReasonOther = 0xe1746d0a, mtpc_userFull = 0x5a89ac5b, mtpc_contact = 0xf911c994, mtpc_importedContact = 0xd0028438, @@ -272,6 +276,9 @@ enum { mtpc_updateChannelMessageViews = 0x98a12b4b, mtpc_updateChatAdmins = 0x6e947941, mtpc_updateChatParticipantAdmin = 0xb6901959, + mtpc_updateNewStickerSet = 0x688a30aa, + mtpc_updateStickerSetsOrder = 0xf0dfb451, + mtpc_updateStickerSets = 0x43ae3dec, mtpc_updates_state = 0xa56c2a3e, mtpc_updates_differenceEmpty = 0x5d75a138, mtpc_updates_difference = 0xf49ca0, @@ -362,7 +369,7 @@ enum { mtpc_messages_stickers = 0x8a8ecd32, mtpc_stickerPack = 0x12b299d4, mtpc_messages_allStickersNotModified = 0xe86602c3, - mtpc_messages_allStickers = 0xd51dafdb, + mtpc_messages_allStickers = 0xedfd405f, mtpc_disabledFeature = 0xae636f24, mtpc_messages_affectedMessages = 0x84d19185, mtpc_contactLinkUnknown = 0x5f4f9247, @@ -436,6 +443,7 @@ enum { mtpc_channelRoleEditor = 0x820bfe8c, mtpc_channels_channelParticipants = 0xf56ee2a8, mtpc_channels_channelParticipant = 0xd0d9b163, + mtpc_help_termsOfService = 0xf1ee3e90, mtpc_invokeAfterMsg = 0xcb9f372d, mtpc_invokeAfterMsgs = 0x3dc4b4f0, mtpc_initConnection = 0x69796de9, @@ -465,6 +473,7 @@ enum { mtpc_account_updateProfile = 0xf0888d68, mtpc_account_updateStatus = 0x6628562c, mtpc_account_getWallPapers = 0xc04cfac2, + mtpc_account_reportPeer = 0xae189d5f, mtpc_account_checkUsername = 0x2714d86c, mtpc_account_updateUsername = 0x3e0bdd7c, mtpc_account_getPrivacy = 0xdadbc950, @@ -529,7 +538,7 @@ enum { mtpc_messages_receivedQueue = 0x55a5bb66, mtpc_messages_readMessageContents = 0x36a73f77, mtpc_messages_getStickers = 0xae22e045, - mtpc_messages_getAllStickers = 0xaa3bc868, + mtpc_messages_getAllStickers = 0x1c9618b1, mtpc_messages_getWebPagePreview = 0x25223e24, mtpc_messages_exportChatInvite = 0x7d885289, mtpc_messages_checkChatInvite = 0x3eadb1bb, @@ -543,6 +552,7 @@ enum { mtpc_messages_editChatAdmin = 0xa9e69f2e, mtpc_messages_migrateChat = 0x15a3b8e3, mtpc_messages_searchGlobal = 0x9e3cacb0, + mtpc_messages_reorderStickerSets = 0x9fcfbc30, mtpc_updates_getState = 0xedd4882a, mtpc_updates_getDifference = 0xa041495, mtpc_updates_getChannelDifference = 0xbb32d7c0, @@ -560,6 +570,7 @@ enum { mtpc_help_getInviteText = 0xa4a95186, mtpc_help_getSupport = 0x9cdf08cd, mtpc_help_getAppChangelog = 0x5bab7fb2, + mtpc_help_getTermsOfService = 0x37d78f83, mtpc_channels_getDialogs = 0xa9d3d249, mtpc_channels_getImportantHistory = 0xddb929cb, mtpc_channels_readHistory = 0xcc104937, @@ -843,6 +854,9 @@ class MTPwallPaper; class MTPDwallPaper; class MTPDwallPaperSolid; +class MTPreportReason; +class MTPDinputReportReasonOther; + class MTPuserFull; class MTPDuserFull; @@ -935,6 +949,8 @@ class MTPDupdateDeleteChannelMessages; class MTPDupdateChannelMessageViews; class MTPDupdateChatAdmins; class MTPDupdateChatParticipantAdmin; +class MTPDupdateNewStickerSet; +class MTPDupdateStickerSetsOrder; class MTPupdates_state; class MTPDupdates_state; @@ -1196,6 +1212,9 @@ class MTPDchannels_channelParticipants; class MTPchannels_channelParticipant; class MTPDchannels_channelParticipant; +class MTPhelp_termsOfService; +class MTPDhelp_termsOfService; + // Boxed types definitions typedef MTPBoxed MTPResPQ; @@ -1264,6 +1283,7 @@ typedef MTPBoxed MTPInputPeerNotifySettings; typedef MTPBoxed MTPPeerNotifyEvents; typedef MTPBoxed MTPPeerNotifySettings; typedef MTPBoxed MTPWallPaper; +typedef MTPBoxed MTPReportReason; typedef MTPBoxed MTPUserFull; typedef MTPBoxed MTPContact; typedef MTPBoxed MTPImportedContact; @@ -1353,6 +1373,7 @@ typedef MTPBoxed MTPChannelParticipantsFilter; typedef MTPBoxed MTPChannelParticipantRole; typedef MTPBoxed MTPchannels_ChannelParticipants; typedef MTPBoxed MTPchannels_ChannelParticipant; +typedef MTPBoxed MTPhelp_TermsOfService; // Type classes definitions @@ -4503,6 +4524,46 @@ private: }; typedef MTPBoxed MTPWallPaper; +class MTPreportReason : private mtpDataOwner { +public: + MTPreportReason() : mtpDataOwner(0), _type(0) { + } + MTPreportReason(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) : mtpDataOwner(0), _type(0) { + read(from, end, cons); + } + + MTPDinputReportReasonOther &_inputReportReasonOther() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputReportReasonOther) throw mtpErrorWrongTypeId(_type, mtpc_inputReportReasonOther); + split(); + return *(MTPDinputReportReasonOther*)data; + } + const MTPDinputReportReasonOther &c_inputReportReasonOther() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_inputReportReasonOther) throw mtpErrorWrongTypeId(_type, mtpc_inputReportReasonOther); + return *(const MTPDinputReportReasonOther*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPreportReason(mtpTypeId type); + explicit MTPreportReason(MTPDinputReportReasonOther *_data); + + friend MTPreportReason MTP_inputReportReasonSpam(); + friend MTPreportReason MTP_inputReportReasonViolence(); + friend MTPreportReason MTP_inputReportReasonPornography(); + friend MTPreportReason MTP_inputReportReasonOther(const MTPstring &_text); + + mtpTypeId _type; +}; +typedef MTPBoxed MTPReportReason; + class MTPuserFull : private mtpDataOwner { public: MTPuserFull(); @@ -5564,6 +5625,30 @@ public: return *(const MTPDupdateChatParticipantAdmin*)data; } + MTPDupdateNewStickerSet &_updateNewStickerSet() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updateNewStickerSet) throw mtpErrorWrongTypeId(_type, mtpc_updateNewStickerSet); + split(); + return *(MTPDupdateNewStickerSet*)data; + } + const MTPDupdateNewStickerSet &c_updateNewStickerSet() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updateNewStickerSet) throw mtpErrorWrongTypeId(_type, mtpc_updateNewStickerSet); + return *(const MTPDupdateNewStickerSet*)data; + } + + MTPDupdateStickerSetsOrder &_updateStickerSetsOrder() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updateStickerSetsOrder) throw mtpErrorWrongTypeId(_type, mtpc_updateStickerSetsOrder); + split(); + return *(MTPDupdateStickerSetsOrder*)data; + } + const MTPDupdateStickerSetsOrder &c_updateStickerSetsOrder() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_updateStickerSetsOrder) throw mtpErrorWrongTypeId(_type, mtpc_updateStickerSetsOrder); + return *(const MTPDupdateStickerSetsOrder*)data; + } + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); @@ -5610,6 +5695,8 @@ private: explicit MTPupdate(MTPDupdateChannelMessageViews *_data); explicit MTPupdate(MTPDupdateChatAdmins *_data); explicit MTPupdate(MTPDupdateChatParticipantAdmin *_data); + explicit MTPupdate(MTPDupdateNewStickerSet *_data); + explicit MTPupdate(MTPDupdateStickerSetsOrder *_data); friend MTPupdate MTP_updateNewMessage(const MTPMessage &_message, MTPint _pts, MTPint _pts_count); friend MTPupdate MTP_updateMessageID(MTPint _id, const MTPlong &_random_id); @@ -5648,6 +5735,9 @@ private: friend MTPupdate MTP_updateChannelMessageViews(MTPint _channel_id, MTPint _id, MTPint _views); friend MTPupdate MTP_updateChatAdmins(MTPint _chat_id, MTPBool _enabled, MTPint _version); friend MTPupdate MTP_updateChatParticipantAdmin(MTPint _chat_id, MTPint _user_id, MTPBool _is_admin, MTPint _version); + friend MTPupdate MTP_updateNewStickerSet(const MTPmessages_StickerSet &_stickerset); + friend MTPupdate MTP_updateStickerSetsOrder(const MTPVector &_order); + friend MTPupdate MTP_updateStickerSets(); mtpTypeId _type; }; @@ -7318,7 +7408,7 @@ private: explicit MTPmessages_allStickers(MTPDmessages_allStickers *_data); friend MTPmessages_allStickers MTP_messages_allStickersNotModified(); - friend MTPmessages_allStickers MTP_messages_allStickers(const MTPstring &_hash, const MTPVector &_sets); + friend MTPmessages_allStickers MTP_messages_allStickers(MTPint _hash, const MTPVector &_sets); mtpTypeId _type; }; @@ -8786,6 +8876,37 @@ private: }; typedef MTPBoxed MTPchannels_ChannelParticipant; +class MTPhelp_termsOfService : private mtpDataOwner { +public: + MTPhelp_termsOfService(); + MTPhelp_termsOfService(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_termsOfService) : mtpDataOwner(0) { + read(from, end, cons); + } + + MTPDhelp_termsOfService &_help_termsOfService() { + if (!data) throw mtpErrorUninitialized(); + split(); + return *(MTPDhelp_termsOfService*)data; + } + const MTPDhelp_termsOfService &c_help_termsOfService() const { + if (!data) throw mtpErrorUninitialized(); + return *(const MTPDhelp_termsOfService*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_termsOfService); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPhelp_termsOfService(MTPDhelp_termsOfService *_data); + + friend MTPhelp_termsOfService MTP_help_termsOfService(const MTPstring &_text); +}; +typedef MTPBoxed MTPhelp_TermsOfService; + // Type constructors with data class MTPDresPQ : public mtpDataImpl { @@ -10403,6 +10524,16 @@ public: MTPint vcolor; }; +class MTPDinputReportReasonOther : public mtpDataImpl { +public: + MTPDinputReportReasonOther() { + } + MTPDinputReportReasonOther(const MTPstring &_text) : vtext(_text) { + } + + MTPstring vtext; +}; + class MTPDuserFull : public mtpDataImpl { public: MTPDuserFull() { @@ -11082,6 +11213,26 @@ public: MTPint vversion; }; +class MTPDupdateNewStickerSet : public mtpDataImpl { +public: + MTPDupdateNewStickerSet() { + } + MTPDupdateNewStickerSet(const MTPmessages_StickerSet &_stickerset) : vstickerset(_stickerset) { + } + + MTPmessages_StickerSet vstickerset; +}; + +class MTPDupdateStickerSetsOrder : public mtpDataImpl { +public: + MTPDupdateStickerSetsOrder() { + } + MTPDupdateStickerSetsOrder(const MTPVector &_order) : vorder(_order) { + } + + MTPVector vorder; +}; + class MTPDupdates_state : public mtpDataImpl { public: MTPDupdates_state() { @@ -11914,10 +12065,10 @@ class MTPDmessages_allStickers : public mtpDataImpl { public: MTPDmessages_allStickers() { } - MTPDmessages_allStickers(const MTPstring &_hash, const MTPVector &_sets) : vhash(_hash), vsets(_sets) { + MTPDmessages_allStickers(MTPint _hash, const MTPVector &_sets) : vhash(_hash), vsets(_sets) { } - MTPstring vhash; + MTPint vhash; MTPVector vsets; }; @@ -12696,6 +12847,16 @@ public: MTPVector vusers; }; +class MTPDhelp_termsOfService : public mtpDataImpl { +public: + MTPDhelp_termsOfService() { + } + MTPDhelp_termsOfService(const MTPstring &_text) : vtext(_text) { + } + + MTPstring vtext; +}; + // RPC methods class MTPreq_pq { // RPC method 'req_pq' @@ -14287,6 +14448,48 @@ public: } }; +class MTPaccount_reportPeer { // RPC method 'account.reportPeer' +public: + MTPInputPeer vpeer; + MTPReportReason vreason; + + MTPaccount_reportPeer() { + } + MTPaccount_reportPeer(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_reportPeer) { + read(from, end, cons); + } + MTPaccount_reportPeer(const MTPInputPeer &_peer, const MTPReportReason &_reason) : vpeer(_peer), vreason(_reason) { + } + + uint32 innerLength() const { + return vpeer.innerLength() + vreason.innerLength(); + } + mtpTypeId type() const { + return mtpc_account_reportPeer; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_reportPeer) { + vpeer.read(from, end); + vreason.read(from, end); + } + void write(mtpBuffer &to) const { + vpeer.write(to); + vreason.write(to); + } + + typedef MTPBool ResponseType; +}; +class MTPaccount_ReportPeer : public MTPBoxed { +public: + MTPaccount_ReportPeer() { + } + MTPaccount_ReportPeer(const MTPaccount_reportPeer &v) : MTPBoxed(v) { + } + MTPaccount_ReportPeer(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPaccount_ReportPeer(const MTPInputPeer &_peer, const MTPReportReason &_reason) : MTPBoxed(MTPaccount_reportPeer(_peer, _reason)) { + } +}; + class MTPaccount_checkUsername { // RPC method 'account.checkUsername' public: MTPstring vusername; @@ -16982,14 +17185,14 @@ public: class MTPmessages_getAllStickers { // RPC method 'messages.getAllStickers' public: - MTPstring vhash; + MTPint vhash; MTPmessages_getAllStickers() { } MTPmessages_getAllStickers(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getAllStickers) { read(from, end, cons); } - MTPmessages_getAllStickers(const MTPstring &_hash) : vhash(_hash) { + MTPmessages_getAllStickers(MTPint _hash) : vhash(_hash) { } uint32 innerLength() const { @@ -17015,7 +17218,7 @@ public: } MTPmessages_GetAllStickers(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { } - MTPmessages_GetAllStickers(const MTPstring &_hash) : MTPBoxed(MTPmessages_getAllStickers(_hash)) { + MTPmessages_GetAllStickers(MTPint _hash) : MTPBoxed(MTPmessages_getAllStickers(_hash)) { } }; @@ -17565,6 +17768,45 @@ public: } }; +class MTPmessages_reorderStickerSets { // RPC method 'messages.reorderStickerSets' +public: + MTPVector vorder; + + MTPmessages_reorderStickerSets() { + } + MTPmessages_reorderStickerSets(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_reorderStickerSets) { + read(from, end, cons); + } + MTPmessages_reorderStickerSets(const MTPVector &_order) : vorder(_order) { + } + + uint32 innerLength() const { + return vorder.innerLength(); + } + mtpTypeId type() const { + return mtpc_messages_reorderStickerSets; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_reorderStickerSets) { + vorder.read(from, end); + } + void write(mtpBuffer &to) const { + vorder.write(to); + } + + typedef MTPBool ResponseType; +}; +class MTPmessages_ReorderStickerSets : public MTPBoxed { +public: + MTPmessages_ReorderStickerSets() { + } + MTPmessages_ReorderStickerSets(const MTPmessages_reorderStickerSets &v) : MTPBoxed(v) { + } + MTPmessages_ReorderStickerSets(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPmessages_ReorderStickerSets(const MTPVector &_order) : MTPBoxed(MTPmessages_reorderStickerSets(_order)) { + } +}; + class MTPupdates_getState { // RPC method 'updates.getState' public: MTPupdates_getState() { @@ -18271,6 +18513,45 @@ public: } }; +class MTPhelp_getTermsOfService { // RPC method 'help.getTermsOfService' +public: + MTPstring vlang_code; + + MTPhelp_getTermsOfService() { + } + MTPhelp_getTermsOfService(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getTermsOfService) { + read(from, end, cons); + } + MTPhelp_getTermsOfService(const MTPstring &_lang_code) : vlang_code(_lang_code) { + } + + uint32 innerLength() const { + return vlang_code.innerLength(); + } + mtpTypeId type() const { + return mtpc_help_getTermsOfService; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getTermsOfService) { + vlang_code.read(from, end); + } + void write(mtpBuffer &to) const { + vlang_code.write(to); + } + + typedef MTPhelp_TermsOfService ResponseType; +}; +class MTPhelp_GetTermsOfService : public MTPBoxed { +public: + MTPhelp_GetTermsOfService() { + } + MTPhelp_GetTermsOfService(const MTPhelp_getTermsOfService &v) : MTPBoxed(v) { + } + MTPhelp_GetTermsOfService(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPhelp_GetTermsOfService(const MTPstring &_lang_code) : MTPBoxed(MTPhelp_getTermsOfService(_lang_code)) { + } +}; + class MTPchannels_getDialogs { // RPC method 'channels.getDialogs' public: MTPint voffset; @@ -23627,6 +23908,65 @@ inline MTPwallPaper MTP_wallPaperSolid(MTPint _id, const MTPstring &_title, MTPi return MTPwallPaper(new MTPDwallPaperSolid(_id, _title, _bg_color, _color)); } +inline uint32 MTPreportReason::innerLength() const { + switch (_type) { + case mtpc_inputReportReasonOther: { + const MTPDinputReportReasonOther &v(c_inputReportReasonOther()); + return v.vtext.innerLength(); + } + } + return 0; +} +inline mtpTypeId MTPreportReason::type() const { + if (!_type) throw mtpErrorUninitialized(); + return _type; +} +inline void MTPreportReason::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != _type) setData(0); + switch (cons) { + case mtpc_inputReportReasonSpam: _type = cons; break; + case mtpc_inputReportReasonViolence: _type = cons; break; + case mtpc_inputReportReasonPornography: _type = cons; break; + case mtpc_inputReportReasonOther: _type = cons; { + if (!data) setData(new MTPDinputReportReasonOther()); + MTPDinputReportReasonOther &v(_inputReportReasonOther()); + v.vtext.read(from, end); + } break; + default: throw mtpErrorUnexpected(cons, "MTPreportReason"); + } +} +inline void MTPreportReason::write(mtpBuffer &to) const { + switch (_type) { + case mtpc_inputReportReasonOther: { + const MTPDinputReportReasonOther &v(c_inputReportReasonOther()); + v.vtext.write(to); + } break; + } +} +inline MTPreportReason::MTPreportReason(mtpTypeId type) : mtpDataOwner(0), _type(type) { + switch (type) { + case mtpc_inputReportReasonSpam: break; + case mtpc_inputReportReasonViolence: break; + case mtpc_inputReportReasonPornography: break; + case mtpc_inputReportReasonOther: setData(new MTPDinputReportReasonOther()); break; + default: throw mtpErrorBadTypeId(type, "MTPreportReason"); + } +} +inline MTPreportReason::MTPreportReason(MTPDinputReportReasonOther *_data) : mtpDataOwner(_data), _type(mtpc_inputReportReasonOther) { +} +inline MTPreportReason MTP_inputReportReasonSpam() { + return MTPreportReason(mtpc_inputReportReasonSpam); +} +inline MTPreportReason MTP_inputReportReasonViolence() { + return MTPreportReason(mtpc_inputReportReasonViolence); +} +inline MTPreportReason MTP_inputReportReasonPornography() { + return MTPreportReason(mtpc_inputReportReasonPornography); +} +inline MTPreportReason MTP_inputReportReasonOther(const MTPstring &_text) { + return MTPreportReason(new MTPDinputReportReasonOther(_text)); +} + inline MTPuserFull::MTPuserFull() : mtpDataOwner(new MTPDuserFull()) { } @@ -24507,6 +24847,14 @@ inline uint32 MTPupdate::innerLength() const { const MTPDupdateChatParticipantAdmin &v(c_updateChatParticipantAdmin()); return v.vchat_id.innerLength() + v.vuser_id.innerLength() + v.vis_admin.innerLength() + v.vversion.innerLength(); } + case mtpc_updateNewStickerSet: { + const MTPDupdateNewStickerSet &v(c_updateNewStickerSet()); + return v.vstickerset.innerLength(); + } + case mtpc_updateStickerSetsOrder: { + const MTPDupdateStickerSetsOrder &v(c_updateStickerSetsOrder()); + return v.vorder.innerLength(); + } } return 0; } @@ -24764,6 +25112,17 @@ inline void MTPupdate::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeI v.vis_admin.read(from, end); v.vversion.read(from, end); } break; + case mtpc_updateNewStickerSet: _type = cons; { + if (!data) setData(new MTPDupdateNewStickerSet()); + MTPDupdateNewStickerSet &v(_updateNewStickerSet()); + v.vstickerset.read(from, end); + } break; + case mtpc_updateStickerSetsOrder: _type = cons; { + if (!data) setData(new MTPDupdateStickerSetsOrder()); + MTPDupdateStickerSetsOrder &v(_updateStickerSetsOrder()); + v.vorder.read(from, end); + } break; + case mtpc_updateStickerSets: _type = cons; break; default: throw mtpErrorUnexpected(cons, "MTPupdate"); } } @@ -24979,6 +25338,14 @@ inline void MTPupdate::write(mtpBuffer &to) const { v.vis_admin.write(to); v.vversion.write(to); } break; + case mtpc_updateNewStickerSet: { + const MTPDupdateNewStickerSet &v(c_updateNewStickerSet()); + v.vstickerset.write(to); + } break; + case mtpc_updateStickerSetsOrder: { + const MTPDupdateStickerSetsOrder &v(c_updateStickerSetsOrder()); + v.vorder.write(to); + } break; } } inline MTPupdate::MTPupdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { @@ -25020,6 +25387,9 @@ inline MTPupdate::MTPupdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { case mtpc_updateChannelMessageViews: setData(new MTPDupdateChannelMessageViews()); break; case mtpc_updateChatAdmins: setData(new MTPDupdateChatAdmins()); break; case mtpc_updateChatParticipantAdmin: setData(new MTPDupdateChatParticipantAdmin()); break; + case mtpc_updateNewStickerSet: setData(new MTPDupdateNewStickerSet()); break; + case mtpc_updateStickerSetsOrder: setData(new MTPDupdateStickerSetsOrder()); break; + case mtpc_updateStickerSets: break; default: throw mtpErrorBadTypeId(type, "MTPupdate"); } } @@ -25097,6 +25467,10 @@ inline MTPupdate::MTPupdate(MTPDupdateChatAdmins *_data) : mtpDataOwner(_data), } inline MTPupdate::MTPupdate(MTPDupdateChatParticipantAdmin *_data) : mtpDataOwner(_data), _type(mtpc_updateChatParticipantAdmin) { } +inline MTPupdate::MTPupdate(MTPDupdateNewStickerSet *_data) : mtpDataOwner(_data), _type(mtpc_updateNewStickerSet) { +} +inline MTPupdate::MTPupdate(MTPDupdateStickerSetsOrder *_data) : mtpDataOwner(_data), _type(mtpc_updateStickerSetsOrder) { +} inline MTPupdate MTP_updateNewMessage(const MTPMessage &_message, MTPint _pts, MTPint _pts_count) { return MTPupdate(new MTPDupdateNewMessage(_message, _pts, _pts_count)); } @@ -25208,6 +25582,15 @@ inline MTPupdate MTP_updateChatAdmins(MTPint _chat_id, MTPBool _enabled, MTPint inline MTPupdate MTP_updateChatParticipantAdmin(MTPint _chat_id, MTPint _user_id, MTPBool _is_admin, MTPint _version) { return MTPupdate(new MTPDupdateChatParticipantAdmin(_chat_id, _user_id, _is_admin, _version)); } +inline MTPupdate MTP_updateNewStickerSet(const MTPmessages_StickerSet &_stickerset) { + return MTPupdate(new MTPDupdateNewStickerSet(_stickerset)); +} +inline MTPupdate MTP_updateStickerSetsOrder(const MTPVector &_order) { + return MTPupdate(new MTPDupdateStickerSetsOrder(_order)); +} +inline MTPupdate MTP_updateStickerSets() { + return MTPupdate(mtpc_updateStickerSets); +} inline MTPupdates_state::MTPupdates_state() : mtpDataOwner(new MTPDupdates_state()) { } @@ -27495,7 +27878,7 @@ inline MTPmessages_allStickers::MTPmessages_allStickers(MTPDmessages_allStickers inline MTPmessages_allStickers MTP_messages_allStickersNotModified() { return MTPmessages_allStickers(mtpc_messages_allStickersNotModified); } -inline MTPmessages_allStickers MTP_messages_allStickers(const MTPstring &_hash, const MTPVector &_sets) { +inline MTPmessages_allStickers MTP_messages_allStickers(MTPint _hash, const MTPVector &_sets) { return MTPmessages_allStickers(new MTPDmessages_allStickers(_hash, _sets)); } @@ -29383,6 +29766,33 @@ inline MTPchannels_channelParticipant MTP_channels_channelParticipant(const MTPC return MTPchannels_channelParticipant(new MTPDchannels_channelParticipant(_participant, _users)); } +inline MTPhelp_termsOfService::MTPhelp_termsOfService() : mtpDataOwner(new MTPDhelp_termsOfService()) { +} + +inline uint32 MTPhelp_termsOfService::innerLength() const { + const MTPDhelp_termsOfService &v(c_help_termsOfService()); + return v.vtext.innerLength(); +} +inline mtpTypeId MTPhelp_termsOfService::type() const { + return mtpc_help_termsOfService; +} +inline void MTPhelp_termsOfService::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != mtpc_help_termsOfService) throw mtpErrorUnexpected(cons, "MTPhelp_termsOfService"); + + if (!data) setData(new MTPDhelp_termsOfService()); + MTPDhelp_termsOfService &v(_help_termsOfService()); + v.vtext.read(from, end); +} +inline void MTPhelp_termsOfService::write(mtpBuffer &to) const { + const MTPDhelp_termsOfService &v(c_help_termsOfService()); + v.vtext.write(to); +} +inline MTPhelp_termsOfService::MTPhelp_termsOfService(MTPDhelp_termsOfService *_data) : mtpDataOwner(_data) { +} +inline MTPhelp_termsOfService MTP_help_termsOfService(const MTPstring &_text) { + return MTPhelp_termsOfService(new MTPDhelp_termsOfService(_text)); +} + // Human-readable text serialization #if (defined _DEBUG || defined _WITH_DEBUG) diff --git a/Telegram/SourceFiles/mtproto/scheme.tl b/Telegram/SourceFiles/mtproto/scheme.tl index ee1e79698..db9481ad0 100644 --- a/Telegram/SourceFiles/mtproto/scheme.tl +++ b/Telegram/SourceFiles/mtproto/scheme.tl @@ -305,6 +305,11 @@ peerNotifySettings#8d5e11ee mute_until:int sound:string show_previews:Bool event wallPaper#ccb03657 id:int title:string sizes:Vector color:int = WallPaper; wallPaperSolid#63117f24 id:int title:string bg_color:int color:int = WallPaper; +inputReportReasonSpam#58dbcab8 = ReportReason; +inputReportReasonViolence#1e22c78d = ReportReason; +inputReportReasonPornography#2e59d922 = ReportReason; +inputReportReasonOther#e1746d0a text:string = ReportReason; + userFull#5a89ac5b user:User link:contacts.Link profile_photo:Photo notify_settings:PeerNotifySettings blocked:Bool bot_info:BotInfo = UserFull; contact#f911c994 user_id:int mutual:Bool = Contact; @@ -389,6 +394,9 @@ updateDeleteChannelMessages#c37521c9 channel_id:int messages:Vector pts:int updateChannelMessageViews#98a12b4b channel_id:int id:int views:int = Update; updateChatAdmins#6e947941 chat_id:int enabled:Bool version:int = Update; updateChatParticipantAdmin#b6901959 chat_id:int user_id:int is_admin:Bool version:int = Update; +updateNewStickerSet#688a30aa stickerset:messages.StickerSet = Update; +updateStickerSetsOrder#f0dfb451 order:Vector = Update; +updateStickerSets#43ae3dec = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; @@ -516,7 +524,7 @@ messages.stickers#8a8ecd32 hash:string stickers:Vector = messages.Stic stickerPack#12b299d4 emoticon:string documents:Vector = StickerPack; messages.allStickersNotModified#e86602c3 = messages.AllStickers; -messages.allStickers#d51dafdb hash:string sets:Vector = messages.AllStickers; +messages.allStickers#edfd405f hash:int sets:Vector = messages.AllStickers; disabledFeature#ae636f24 feature:string description:string = DisabledFeature; @@ -625,6 +633,8 @@ channels.channelParticipants#f56ee2a8 count:int participants:Vector = channels.ChannelParticipant; +help.termsOfService#f1ee3e90 text:string = help.TermsOfService; + ---functions--- invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; @@ -658,6 +668,7 @@ account.resetNotifySettings#db7e1747 = Bool; account.updateProfile#f0888d68 first_name:string last_name:string = User; account.updateStatus#6628562c offline:Bool = Bool; account.getWallPapers#c04cfac2 = Vector; +account.reportPeer#ae189d5f peer:InputPeer reason:ReportReason = Bool; account.checkUsername#2714d86c username:string = Bool; account.updateUsername#3e0bdd7c username:string = User; account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules; @@ -725,7 +736,7 @@ messages.sendEncryptedService#32d439a4 peer:InputEncryptedChat random_id:long da messages.receivedQueue#55a5bb66 max_qts:int = Vector; messages.readMessageContents#36a73f77 id:Vector = messages.AffectedMessages; messages.getStickers#ae22e045 emoticon:string hash:string = messages.Stickers; -messages.getAllStickers#aa3bc868 hash:string = messages.AllStickers; +messages.getAllStickers#1c9618b1 hash:int = messages.AllStickers; messages.getWebPagePreview#25223e24 message:string = MessageMedia; messages.exportChatInvite#7d885289 chat_id:int = ExportedChatInvite; messages.checkChatInvite#3eadb1bb hash:string = ChatInvite; @@ -739,6 +750,7 @@ messages.toggleChatAdmins#ec8bd9e1 chat_id:int enabled:Bool = Updates; messages.editChatAdmin#a9e69f2e chat_id:int user_id:InputUser is_admin:Bool = Bool; messages.migrateChat#15a3b8e3 chat_id:int = Updates; messages.searchGlobal#9e3cacb0 q:string offset_date:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages; +messages.reorderStickerSets#9fcfbc30 order:Vector = Bool; updates.getState#edd4882a = updates.State; updates.getDifference#a041495 pts:int date:int qts:int = updates.Difference; @@ -760,6 +772,7 @@ help.saveAppLog#6f02f748 events:Vector = Bool; help.getInviteText#a4a95186 lang_code:string = help.InviteText; help.getSupport#9cdf08cd = help.Support; help.getAppChangelog#5bab7fb2 device_model:string system_version:string app_version:string lang_code:string = help.AppChangelog; +help.getTermsOfService#37d78f83 lang_code:string = help.TermsOfService; channels.getDialogs#a9d3d249 offset:int limit:int = messages.Dialogs; channels.getImportantHistory#ddb929cb channel:InputChannel offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp index 54daae714..c4b8d6994 100644 --- a/Telegram/SourceFiles/settings.cpp +++ b/Telegram/SourceFiles/settings.cpp @@ -104,7 +104,7 @@ RecentEmojiPack gRecentEmojis; RecentEmojisPreload gRecentEmojisPreload; EmojiColorVariants gEmojiVariants; -QByteArray gStickersHash; +int32 gStickersHash = 0; RecentStickerPreload gRecentStickersPreload; RecentStickerPack gRecentStickers; diff --git a/Telegram/SourceFiles/settings.h b/Telegram/SourceFiles/settings.h index 4c0267edc..02f401e5e 100644 --- a/Telegram/SourceFiles/settings.h +++ b/Telegram/SourceFiles/settings.h @@ -195,7 +195,7 @@ RecentEmojiPack &cGetRecentEmojis(); struct DocumentData; typedef QVector StickerPack; -DeclareSetting(QByteArray, StickersHash); +DeclareSetting(int32, StickersHash); typedef QList > RecentStickerPackOld; typedef QVector > RecentStickerPreload; diff --git a/Telegram/SourceFiles/settingswidget.cpp b/Telegram/SourceFiles/settingswidget.cpp index 4b3b8264a..a68ea3554 100644 --- a/Telegram/SourceFiles/settingswidget.cpp +++ b/Telegram/SourceFiles/settingswidget.cpp @@ -38,6 +38,7 @@ Copyright (c) 2014-2015 John Preston, https://desktop.telegram.org #include "boxes/passcodebox.h" #include "boxes/autolockbox.h" #include "boxes/sessionsbox.h" +#include "boxes/stickersetbox.h" #include "langloaderplain.h" #include "gui/filedialog.h" @@ -156,6 +157,7 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : QWidget(parent), // chat options _replaceEmojis(this, lang(lng_settings_replace_emojis), cReplaceEmojis()), _viewEmojis(this, lang(lng_settings_view_emojis)), + _stickers(this, lang(lng_stickers_you_have)), _enterSend(this, qsl("send_key"), 0, lang(lng_settings_send_enter), !cCtrlEnter()), _ctrlEnterSend(this, qsl("send_key"), 1, lang((cPlatform() == dbipMac) ? lng_settings_send_cmdenter : lng_settings_send_ctrlenter), cCtrlEnter()), @@ -269,6 +271,7 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : QWidget(parent), // chat options connect(&_replaceEmojis, SIGNAL(changed()), this, SLOT(onReplaceEmojis())); connect(&_viewEmojis, SIGNAL(clicked()), this, SLOT(onViewEmojis())); + connect(&_stickers, SIGNAL(clicked()), this, SLOT(onStickers())); connect(&_enterSend, SIGNAL(changed()), this, SLOT(onEnterSend())); connect(&_ctrlEnterSend, SIGNAL(changed()), this, SLOT(onCtrlEnterSend())); @@ -515,7 +518,8 @@ void SettingsInner::paintEvent(QPaintEvent *e) { p.drawText(_left + st::setHeaderLeft, top + st::setHeaderTop + st::setHeaderFont->ascent, lang(lng_settings_section_chat)); top += st::setHeaderSkip; - top += _replaceEmojis.height() + st::setSectionSkip; + top += _replaceEmojis.height() + st::setLittleSkip; + top += _stickers.height() + st::setSectionSkip; top += _enterSend.height() + st::setLittleSkip; top += _ctrlEnterSend.height() + st::setSectionSkip; @@ -706,7 +710,8 @@ void SettingsInner::resizeEvent(QResizeEvent *e) { if (self()) { top += st::setHeaderSkip; _viewEmojis.move(_left + st::setWidth - _viewEmojis.width(), top + st::cbDefFlat.textTop); - _replaceEmojis.move(_left, top); top += _replaceEmojis.height() + st::setSectionSkip; + _replaceEmojis.move(_left, top); top += _replaceEmojis.height() + st::setLittleSkip; + _stickers.move(_left + st::cbDefFlat.textLeft, top); top += _stickers.height() + st::setSectionSkip; _enterSend.move(_left, top); top += _enterSend.height() + st::setLittleSkip; _ctrlEnterSend.move(_left, top); top += _ctrlEnterSend.height() + st::setSectionSkip; _dontAskDownloadPath.move(_left, top); top += _dontAskDownloadPath.height(); @@ -1040,6 +1045,7 @@ void SettingsInner::showAll() { } else { _viewEmojis.hide(); } + _stickers.show(); _enterSend.show(); _ctrlEnterSend.show(); _dontAskDownloadPath.show(); @@ -1058,6 +1064,7 @@ void SettingsInner::showAll() { } else { _replaceEmojis.hide(); _viewEmojis.hide(); + _stickers.hide(); _enterSend.hide(); _ctrlEnterSend.hide(); _dontAskDownloadPath.hide(); @@ -1521,7 +1528,11 @@ void SettingsInner::onReplaceEmojis() { } void SettingsInner::onViewEmojis() { - App::wnd()->showLayer(new EmojiBox()); + App::showLayer(new EmojiBox()); +} + +void SettingsInner::onStickers() { + App::showLayer(new StickersBox()); } void SettingsInner::onEnterSend() { diff --git a/Telegram/SourceFiles/settingswidget.h b/Telegram/SourceFiles/settingswidget.h index 234d1563d..08092e1e0 100644 --- a/Telegram/SourceFiles/settingswidget.h +++ b/Telegram/SourceFiles/settingswidget.h @@ -138,6 +138,7 @@ public slots: void onReplaceEmojis(); void onViewEmojis(); + void onStickers(); void onEnterSend(); void onCtrlEnterSend(); @@ -242,7 +243,7 @@ private: // chat options FlatCheckbox _replaceEmojis; - LinkButton _viewEmojis; + LinkButton _viewEmojis, _stickers; FlatRadiobutton _enterSend, _ctrlEnterSend; FlatCheckbox _dontAskDownloadPath; int32 _downloadPathWidth; diff --git a/Telegram/SourceFiles/structs.cpp b/Telegram/SourceFiles/structs.cpp index 4731fd57e..b7c3bfed0 100644 --- a/Telegram/SourceFiles/structs.cpp +++ b/Telegram/SourceFiles/structs.cpp @@ -807,12 +807,15 @@ void AudioCancelLink::onClick(Qt::MouseButton button) const { bool StickerData::setInstalled() const { switch (set.type()) { case mtpc_inputStickerSetID: { - return (cStickerSets().constFind(set.c_inputStickerSetID().vid.v) != cStickerSets().cend()); + StickerSets::const_iterator it = cStickerSets().constFind(set.c_inputStickerSetID().vid.v); + return (it != cStickerSets().cend()) && !(it->flags & MTPDstickerSet::flag_disabled); } break; case mtpc_inputStickerSetShortName: { QString name = qs(set.c_inputStickerSetShortName().vshort_name).toLower(); - for (StickerSets::const_iterator i = cStickerSets().cbegin(), e = cStickerSets().cend(); i != e; ++i) { - if (i->shortName.toLower() == name) return true; + for (StickerSets::const_iterator it = cStickerSets().cbegin(), e = cStickerSets().cend(); it != e; ++it) { + if (it->shortName.toLower() == name) { + return !(it->flags & MTPDstickerSet::flag_disabled); + } } } break; }