summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorLiang Chen <liangchen.linux@gmail.com>2023-09-01 12:09:21 +0800
committerDavid S. Miller <davem@davemloft.net>2023-09-04 06:52:39 +0100
commit151e887d8ff97e2e42110ffa1fb1e6a2128fb364 (patch)
tree89755d42a91ace824bd8bfda2d634ba75820ce69 /drivers/net
parent817c7cd2043a83a3d8147f40eea1505ac7300b62 (diff)
downloadlinux-151e887d8ff97e2e42110ffa1fb1e6a2128fb364.tar.gz
linux-151e887d8ff97e2e42110ffa1fb1e6a2128fb364.tar.bz2
linux-151e887d8ff97e2e42110ffa1fb1e6a2128fb364.zip
veth: Fixing transmit return status for dropped packets
The veth_xmit function returns NETDEV_TX_OK even when packets are dropped. This behavior leads to incorrect calculations of statistics counts, as well as things like txq->trans_start updates. Fixes: e314dbdc1c0d ("[NET]: Virtual ethernet device driver.") Signed-off-by: Liang Chen <liangchen.linux@gmail.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/veth.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index d43e62ebc2fc..9c6f4f83f22b 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -344,6 +344,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct veth_priv *rcv_priv, *priv = netdev_priv(dev);
struct veth_rq *rq = NULL;
+ int ret = NETDEV_TX_OK;
struct net_device *rcv;
int length = skb->len;
bool use_napi = false;
@@ -378,11 +379,12 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)
} else {
drop:
atomic64_inc(&priv->dropped);
+ ret = NET_XMIT_DROP;
}
rcu_read_unlock();
- return NETDEV_TX_OK;
+ return ret;
}
static u64 veth_stats_tx(struct net_device *dev, u64 *packets, u64 *bytes)
2[I9[Elnn3۠Pff훳l2"_A.:Yų2/"DbwIeyL/Um<0}3vP"N;oazBhv9(tD zf=9c(ġaR~%=?X?Hj fXhD\;q '-w}6kY4H1quZO iu6 ;U%,Ԗu\J34mh`4,mi{ X:+`6pntL"))!yu0noÄĐMǝ$C LXg#5;?3yPjV dTjFFm&9Ͷ*i6>HŽՖ2`띣nYKӀp aH^Hf[N'"idD3Ff蔵pzj[T@Ҍ[ sS`YNdE5C$;LjˁSvH9XE5#ExH^,+xaj$md2'3զZ7<g{{xlE\\}nHNw6Xl=G~4uѲ^yNo1ǓT{j;Rոe}馎hGKgHZ:"-(Yiiag2+*[ doJRKK/}Jn/R`RYY=tN}1˪vl%)kgTwz֘:C|mkg8Fa g}D"nKVJNueMF# YVo^`bAF["Z1wsnt.+]1]Ngi*siz%h# 㢰.Q#Ni-񿣅_p+뾇#a}jٺiZxwlb#yRd:葓>\^^6O8XyEv.gs? utJ047ѣ9K,ްj;  << Dw&wf_ `N[,KF")b ܌ `(d<ْpWŝǹw&WFU01l^ Bw*;Ot*Lċಔp<( bRf)xO]dhyr K:j[f:s>. 8090f==nuhXs.0&MCb~"Jg] 26nRH U]+a@` lF_=*igSQ!25_Q,N3};3zMrpc^,DB[Px{n<7.-\T~|,}ː`Qhc4r䭐~a4 \fqAX9SU xSBJF `^" 0?u1ik8]Pu.B iK ]=t8C [`pI b&0Ӧ@VtdrJ/+~Y3_z:W c|д-cU;Rds@Mk'P[ k7t #d"F\s>IѣY%Ҵ׵B\43rkc^ ĒKBd,/QM^7|RY32^/Bs Igt}^+ Ѐ4Ę2!" d ! m7Xa~AlIfcblVI7@ȲL/6l`v- \8HZbt;ztԠQU% EI S/I/[c> 5I1,/$2JvW" FbT^ZHi.`%"*J =n?N%] \( zPhB_?MX9&y@j!ekG=@f`$pTpʂ";APcMiP =yvMdL QpŐum6쿽ݕg[)5 v͇mP^ ,yFeFX>NRVzYb+eVg$[αӦJDj\}tMMU#'﨣N.,-'=k'?\}x[1486H^N09gqv'[f0uJNdVX m+|c?Xnu^Ɩu'G3X[vpzQ\un-Y,,-jXpo3F(g -o3ӼYM(}.|lUn&=rN|ZϾ߾|]q|WW ]_d}qX]o;>7fDG}"=Ǎ#yw@ht5^j Wm˪ރ}kEO7ߕ-u7lWcB g@cñ첪Sfۻ΋-w!..Fg>Fyhg/E-)S.0ajKݡJXx⽎ח]Ϊ#pזÿ UCu|mf1U7 M)h>?[\mЫkSU?<|v 3@ďC .@rԐ㷣>ժS_#oՙׄPPӦ)6DܡCےs쨖s T){)b079)"W]I W8#⇬慁;z3p՝tz19o>u.vx+XK $?B@>h9mLZC̖ej*+klv@ϱq֒x$ofBMI,i<nd"R;۲̫ZQƜ*VK"̻ݒ}3ߊWU=3Fʥ !؛ࢰќ6+_y|/ %CZ@*-3e(|i}ǜV+<_ZRq5۹RB1@Ӌ|VJEOxʀSt4\ "Ll)ii" ZF1XLa7mcan '?t6KD h%BKRL!UD,$'gGeߤ3)?Ser| x|7UQģWK! % _Ax罏M\:1}=%fTgThBc$+ɶFdRJs'g|qo?yOݍsutU(H('ƀ;SпF\>GE ^e(Am4@~`>#|D@HTcD.y|Vvlӣ1:IvwO8g$ks?> htb:J :۠!bzcQ˞o頠wK, <.t/-)k<~NX«푈? keE]QI7^Uw-]{.A[ܴ,ڊHn,žiC*޲W0< 8ZJ%k"aSca >ucL`UK+mRPKXXdUgf4rB;Ր) *E7(ߞKkZeisF!})prgGVVpȿ9bP_pTp+isWGBmtT9k"8)7NQ ൭]JZ.1 l1s_gAe<ͷz`%[ oes;4鲢^/_PΎ曍 vxgĞs>_<0'9VKPϰ8(R؇DXYGzK\GΪPXVx >#~[r/{A 5c:5x](2hkd!—,U}ۙ%/%Q8ꭷg.7/[Y{?N7W0,wqk0{>d_`:4mg43Zu{ubQadq KZMl FEIID(  5TDA6g޹_XHܨ0#t{{2XnV7@_m{'G7t} 'G._˳ o/ 6DN{J)˃GTr -`7eN^cd~QkHݫO DX@%"?dt-n;EA|jk'9oouuVQE0]}g{N\ HW@qrFK8!$v:8 a}_u4oL\|+. (^i)E6Ïz5QHjKփmԺ4x=`OCвo!=<rX~B D~:WL6b<.U{sP>b?\|{HYFD<{ d'V⪁*5Q) =dk; "=[:>[B|bZrZC B/>~K\VIB4-B<=iЎ\B",*rasidFvN Fe:T";'1'$4R`P@@ǩPܒñe;%'}mIwq~}~n>D m~}c!Ut GkSVL٩ϳd~htU]}oOnv;2Ai,$\%Y7bDC / ÔìАd_jZ|}"WQ1%-Xw]lCOwB i6;C lPzc(b7?,$ 8 -U._>S~&aÂӦ $݂. {n .Vs}b]:|k8s5}N5-Gy}۟`фӇ=dY ]j) âQâBr֫񞪿LmCf'{{0+{,EQ,xjK[?npʼۥiBclje,8\BP wAB՛$Ώ0-,vZ|O1US@Dlaڠ6H8F.x}hC/7pIP4CPşpƝ;$$%3q798= Kc(`R56A l65dy1,YVM~ :=GRf/dhLlI($p !"% QZxGf"x?T gmnTqJ OKM11;v@y vQr!d_r2aFJ V9&['3?бiH~*xz+9I^oavoxTyOMX@Ep[>OL;F>LIKi q+oW?}iL.ob:muZ~Nv]~n^Z+A?{/ wo ^o;ut~* (cpF^Aw%mz0_$wQA|5#"6 ̤WFOA3) E ꕑ8: T7YZm:YŲ(ܐa;N:vtSvqz:LEGGUjV[,TʗʵLuClf+=c5fT-ۻlq|ݢ)]‚T7sV$Eݞ-dfHMu[mJV bݹڭ@_\ݎMj-m۠τo8ƷGoWCg/ >v7ל=Yt E](F>2w}oT;šua-x:7 B Zh{>ǑgX(/ =G^`h8G2@}e1Q`~Ac0Ecu-'?ܶGw~+UTbHnvǩt!wk՘ 0hHq3G 6\Xhp8LB7 a>'e2n#KFѡJqP40h[dE@˦@ i{tu@~Ϳvmy뇳Iؑ. J;;~&10U8Es:hX R?7n}[V7QVOG$ ϋ1e3iL X%B<Ur$֏Z|f'<ϪCŗ ;&,eOW?'ï0˃-wI${*XyX,# yCxEQ<{w<({I?wR\aߦ)c UIE4Ȅ!@zҺƖAf. {8~,CcA=4={]j/tN=8{[f?uyv wH>7 ',.ma+|jhpQ<4Q~|{^]8kMj@fa:[w6`~Iml&Ox^4:5 pﵢW'KHAu질WD] @GB0RӅ^euC8JcuYc@ bfu!cِ D߾+wx/:@|Q"]HT idO'fL o BÚC-fA;la䈝 NY]QOx,O'k `%Q;m:6zDhQa@ C,?SހPJr6^#K/+J*` ER %?g_f)nl% aD!QqsaSbcjmC? rwwp_DAvD]KL%޷ onXq &ڢDs`Nϲx!FL: |Bހ$tEzCָ6ϋҷ؋Lpz?j}|Ri~f0q)^ʠ*y^VKqnwEF=v & M ki~|)GyFm<;!@7K=~nk]|;Rk!7u\S;sjR 8U{.މږڼ#= N;+|DT '`v3Q[JR#h H8 ӽ4@ *gH%;ɸm<_]PD.hP[vY0,Fh: )p:F=J(VKDu"=' ^t\gۖϣX%F2 g?kBUT&W2z=ǤU1#3KҶr"aUzFèsq5J]~3L sUa͠*C=<1':3;pՕ.nG\PmO~2:땞|?)e W8gvjk9ˇy(\0p{m's,\5m `d_r.=sJ;|Y/.!m1w AP`Q&6;lC|P*z"9:cˆyp UҔՀL|-on0$$DO'i?1Q{iEǦ5 >2 DWbVPll 1 1ق vDiNDRG@[rmB؃G]hUE${‹i Kmz=_ׯ(b4g\U&G]"ut# #C3z' {Y4}iO\9쨲ElE} k"s#yrzEanQ?@EB-xNְgHB %=e#fO;n5<74 cnq(琗75X+Vt |o]df"|uP->➲ųib~!nx]|_tڪM7VH*ۑ.Q1t*8D!' 9uf/ 2#db$]=yk%  ws]THkU3A'K~Br"rDyEkbp#~Zn^ 9B'T4`'N]ߐU$aB-ˡP*RsoQ?(ǡB 4wd5ꇯ::@Yk:56jY,F ɃǕ Mzk4ÃFG饰qv`4]1dTp?P !YJKM6[I&2_&BW'ߡٰdD:z-mR8< .# DH&Azռ-,=Z\eLKP6˜gcna'O|щN*4X\pxˎҩ˪dE%#UyovNB~^ۆ9OpP^ߩo=h5lFaD9U~3"Lsk;VE3V#%Zd b_ۧ >J-b:mbw ͭ2\Qaw IM-1mI녜=u*:WNnNPM4mu)^5%Km;#{ X`x $hp `(98ɥlj8h_욵Sc܃C/xɼPtԦ۾G+|(o%s5-61a@SL-S!d"^P~E9QoF5]pA$}$a黮. oA[:l?!a={J*mBO*:z>L u)\q|wl ި{+ǫom; Y؍ Y7NCVU-{Z燪3TE躎R|vJ;8+#L9/@ 7cA^p#g0 hb&a[=SQA;GiiaVm_f!7&yۏ%@A49T0%-y.w%HVlş{`(٨qAa>Tbj?8lut ͮӖ7MF*](ӛ@?̈7*cB5 2൮S``};ppp9Z4siwш9kqOgk} .X@P&e0vPGsj^@x@2Z2Z6Bsvz烤/ofP=brHYoݬ 3fa$G @.GH|ڣJ[ `"ݫ9>< mW>-n=Ϟ1i2^6LS])DB )`9=^UdG'BK"vfWUߚ&+ls-㊑ ^T̕?4Xd&frfDNͪ-e⮊ SHP12o1byX/rr7HW({9< #blu,$Y íSZ ]4*gQD慹URuyN^"g{ݶC4#:abƥ~|u>?o9qZir 滠v"_fӫlboJ9(v$)mݫ0BH)P~ѨYnO͊mHW tAx@o5e^4)gh#$:k_F^pCE%YH)"^|ʤNx?pj` %RM}Z ꗞ.7[ x =ʷJ:vfhjL$"=@8sd0O-A"}'%ګ,Iંѳ 4=CZ @lb,K M/q&@Z|\G(߰SNM$Sܪ[A^H\ک#a;+il5pvxY<+n8u&9h_!,gp ]QEp @<^?6>Iik3*p&z[Z=hÞ>sViA'vǡyuu(No2VASE0vDKq/)0*9t"(MدT'[H__A#1ֻ$O;s8"BɼtsLO Mׂ }*ώ"DO߿Ƹ8.`0L! rh 3gPr09lP`lfvHU&6mjiysyfq nCzH(p NWS:}ttc=4ۇk+Ǯm) L [ 3_[X]L ,#P߻ο*F5lZͷ_v;46`p,>ôШ6^kC#W(8] 4.N$z$f,.U`$SWć+m_MWmB*hM9v6gcw|pDlHjxA4% (I `!N^uڋ uAJ!}и^!&. .7'<,z^HObKќMx h6A^SUnw:ʨ3%R>,#yB>1pL-\"u~Ahқ ױ6fsm;B5̣a[*UJmߕTwȅ:wW#V:7Ymu'[TMf>" fxy5^Tts_ց~rj ^[$m1(Ss!X}'3&>0]c$Ah1qqR|5'wn3O\^ bx~[3Fsa>c%}]s15p愥*{ 6u2oDBo!xX A{?thkEᾬ8s\|c{~G(9&p\:yfw o|rtMz߭75bIr[ULq"%h4'7dOf1ɗlzY_Pp5F;5۝ackA/~!уǫW:ΩۚF𐖇~-$xk..gAi&K7is٩,Ah" '~&Qiߙti!ܯ"VX6I&8Gȭ'#khnѫ{oYtuOKƫ D5OKlE~E$/0 -u]Ɗ֚pz/Ri;2Л`lDɽYh(4Alð~Zmx:OQvq$Lvx=m_~LϚ,]z11ƲQl˺/%NT`Y$Ȟ:ZEL.B?DgSgxalՅ iΰHZ5'3#~pW2?n5.@JGw@ƻ,>zMFMrU뷘=Lk#ưJ^3r |%o`;?0R|Ayfx?Xv}@zo/x*ߪKCG!cA5}a+Be$Vfr^]UAdށxggO ^DJyhN-dYofHb0|wmHt w%jqjEW{^ IWfCS4rnX5>goP_(G3(eB65ŚUcAS8]+s0 pn0?9GQGpq]tLS;o xo=NqѠlm{_?yWJOmB[uu9uW!t|e}|yͲ~,];qG-|l$ty8.D>"ɸ~9k+ޜ,&Q0RC3)Dw`1*XGMFX zMgJa{`iu~v2 Z- +otct*aK +>,+9ƣLY!?uim{V#=C=(hԃDiX5|^yAԐZ?ِc|׫[&3K*h0aײutC:ACkg!I 7dT !qƦI'a.T okQLh0i.(`X̹e]Fʵ% .hoZ.fYGlf2oPƅ52PPR\Nx)ra5ƺV][3 4ZtGЩeD]ˬrZPi)P<>pd _[Ϊmz+nJ&L6v uDždU\,fk/6 vnN&Z 7e\c^+jq>&"88w(&&5pk"LY6E%)I vőĦqZEr4>^ X^@!1kHb~u2jIkjW1gNVRH>:rб@n?qhLih*XY,a _-ˈ ~\Ph0"V/1>K|$>dW6%UzV6B;ΰLf*NHJJ{JG벅̛*7UPcpW৙Pf>K(\Y/Dͥ#̽p^O67Oh<ѩf+fv d9|UT jg1'M>,&0kz<ۡ1ko=Qk˪oo3xA7 pMYU 8_W뮺@/%s|$&_l4Zc't@G9^>T??׎"_{:F(S˜]ɃGq~\3>l:wHOGu{g/P`v[މ3Q)ꞹrO BD޾CI,rb9F;0t`2[wdӲ6HH'l$ĉ8ApS|J^1UTrqu] YFg@8c bO:va.˓Y4Q^@" = (4 08珋f^Mpk? j <u<8}`pMAQQk&vBIVX %yYj2"1a,#afT*`|n@wζj!yB3T}TzTOf{!n  DC. kJQ?'DZB52]$|Z 4hqKz*P898:^N3nj=Nڠt2G;g.xGnkԼk.ndR`TB}{f&;+ )kqC{݌}yˆp|Hr^q SJE guq^y^|j%#uΊ8Vߨ %uǍ`d-WeAT.g5y's%>s ,Ɣ8ӱ[C{@?v>GSXS6}NsIODk+e>Rg[QBL? u @JɃe!$GFA'g˽qbVL^<@UPGu ssh۫@ݦ.JB&nx8I+4Z$FB<BFv/!)V]"^X8d]嵄)'DnnRF5@LV2d!2m;_ C٦$ȁcCPhP镟~V,TNџjmpUH(YDY/eAI0;$߱e6g 3{QT@ ]F0UEF@5ލ̀{M~ k0=nf(yΔ} LܘqClYfllrG(׭#.RjJLqL>ĉ}t4"d\"NLO}wFyd2t&tN'y^MZu[H]jPSuʭ {94%^gMco\:-N8:Te`=`;.<k<beJ[́ !X)~N-&i`O1ӾX3BIP|Y>XfKT+渚zXUJup Wڔi8?JM<ez(W!ye9hV,s[C >nfxUb4 űa_A\ZC!Y{wע6Cv.Rb|[B_}hM˒>MELћi5XS:Oy[dՅBAG-s;Hfr!i>FQg>.is;eӲž-+=W-Lw6UユMlwcSi٫D/:Bd"4g~s->M:t]պ:?$WԏNspRg9d#?,z _kIf} ㎳TkeAbdK6ٖ\3|uOOt,}SF&T~]K}2Dӱs:tn鼎\o ekgB{Z^O<|8RIVap/;;Fr!výVz6mt͡~hf_x)uFzt~_Y=9γĉ$%| 2xF,Oktma!~#䊄9@r̚Ȩ* \#hci% :e3/}ԼI^:V\y-&t=fӽ뱜@[mZ(iC-8fObc;fWK%eg"P,*( rice`;$>vWS]1S٠"?wSj9#Fϻ~ot?Y\,K{qO'9]Ýh9*VYىl+Ig/m|zoQt{Bo}Z=톧 p s-Pcm Vm9D\|Y7jFB4ym5fSaAwə^p'=;Ml` x'#F2(! mKFg*ZAҔ) LE|E6±= fGH5+];xc;y _ ~r>VٓOTrP!D%3 2 :)SW 9ႈN@Vg]ϪH)W͆<2U3pgfϴ+h"4=5B b?|ɬ=k') A o=0T--hy ku_E/(,uG` .ՁXZlbF/@k j")5|U DUGtJc%1MRiHGUdSI*v.SLIoG|]-j`QOGKRfUŃ(~؊P4tlP$; xM]|(D;p <Pij}Wr)D2a멁5j(cTA<7=|Ҟ҄xbOhfd̆P!Ť$^'۶Y1ݩ2 :_z2T_Ĉ>luB_<=>ן_KvkrF XQhr#`t~]ܨ C44Q`~ݚ.4![&˝"AdG-*\g[T;W"Xc ZQۅc^f%MZV[YvX`Alp aa](7\{TcuBdB%(DmH& LlXX|O\]%3O$V"<&`'qhwsf7y8ۓqbQSޟA_c۾(A",AHVgGY7?|+u" Zs;v5 G%PE2%M/Cg`Kh"-3kNnsgy?QXd)׭nTXEQz!Xc{(w;%at>u p98(Q;⢤&ejW<uvA F{Q*'q0(ŕO|-հ1QBjuhUnUj tȁ NDodap;`# @jg`8B߫;?jq&.늏Rˆo]JOUVYSuߛd ѬF T(#:@q awAZ2u >JisJNf!-E D A4y1 wu{%qX?4b7.d_FHb:xX-  / oA` B ;2S6MQK\EUDbؗ9g].pcM)G{xX}B{TN$@'rmt OzY$\+vnZ \Xߜ€}%FQz5L"Eue'k8U׊J,xţobV9 {yUt_S2WX؛w2FaôwfF5!j!.S#~k [tr}_VԲK|ژԆ/Iأ01Qr+!O}L\}ywU+rïQ Wf'y)2w'tVJ-ѦL&o4C Z+$lc=+LF>TI!x9%7 @xEVV`W(D[Dxl7ٺ'sֈ]e^,L1wDн>dO4WU|8kzRf Rkeσ?7~%ֆ8;Z!gK_s?9ޘ p$bFl?k|Ҩ*B=νxRCUe{Se엵k3I{0ke7f_lC.v2; QQ(=%zMNV$%f]7<*M8 ']gSk qp+;thKAC*EqxM ysכ,>.m6&KbZ V&;' |?6{P IKG,κ3NX)h|x`K]Sh*mDL& [}nC6JcAsR<(>vmqKfx ClLݟN^`;YuLͷ4+zuUy"C8ш VD{c雩Y9U;h9Y[HLw n+棬m1C㔐@k(4zD3*54)I* [-aiVJ d>"u^W<_fc^yB, #W#JsPLȉskѕQQ|8^1J*3t,䇦2bp\ޓg< rT,֠M*֬ڒE@Ms 9&"rg1|Ā3?l ݶ6.nxH>Q6^]rv_܅{YY2[E?hzÍA̓1{3D45M2T4܈AB("'N},!PGT$(_!7{I J ?_fٓUv?:*:TM4͔҃NGe3sI1U<:QZ!CG /)߱%!9݋{s]/(AC,/ot( 2D2{JHjdSIq1[U>qѤ>M(H!k)73Uz`X$F Ʒc%A΄/%BlanBrcp`Fz5.O>Y߸ ߛNy%J{i-դ9(T{-~Wkv)1q]uvUB"17y?%Zb!}3"PDy$ O:+d^H`yD_-"2'T@DMCAGZ+bc_ Y1ɯr3o0>V^^?qXl9@;bow l:G]u+:7*[WP fcPmvp$QM.(v^\? 46@~ ?1M"$EWucXR5BȱhAX9%X6 = {,$EY^w Pm6+@s5]Ot5!H[Ǹyo/n䥡(mDDU>]qp^HR<ѥsmҸԂ:<$.]O'(at6J+2ÏbWbFmd{" z^o[;{wO/8>/i^6i杇djM[Ré0bLڏ$_U~8 vvIb=;)8~t3pr {̘hۀ܊ܦNc\]ZןZXI·u*mtŦdnaƃd!3nW.~|sܥ!"HkXXf#$2xβ50:g6gw؆FtC ECkf~}sdR=<"⡞YZ[{ss$=5[ N$ZKEif֐U;-{ik G_9ad9^M|Tg%$nq \6㕺8nJSE)pcTZ^>`EKL;:Ö?fk%Ut;; `F=_]z`NB'Btq&)% <̃H/KЍYȸIS&c4d -X${c)Cʐ$]>({©5o<54AiOC($C EP*ABޘpWZ>Q;R>;_7:/y3MF͂P l a]z|DZMn{T:W#Ysݫ {bּ?KNC'9g =T|N`)sɷd }#8+ wW=4d(},?v\y^?:>0V UZ#>gm~8^1̪2F*"fSita HqzutSX\G2Rp\T[eRPh]J~"WکDm{nϡ,Nr> , k5v<)79ScC{<- Yd#%#u .JiG\>/wR;g 0S 멻V.DiCQB71 F;$अqYJ։)_(m¿]ٹҷ22 ܽOoߣGs֯ x Ȇ4؜4,ݹu%]ϚsrpO2|>%Eedpn̆P?N6\jjD |hgZueb$!{6oj~ ~q3Im =C< PXYHc[0:;#Y?ג>hycVaaȱxg]Fa~X4Vx&9b8:,N)gmHz;L ^>n}Ŧ헔jx2NFGwPo`n Ao<dB8@;P" Lf#6-"52Esg={ScÏ:۳@coPMʧէ7aR/%bhҗId%ɂYy}WEV_O.vX@%6"[$ږxjR*+ I.|2g#,7s`[ ;pw,7؟.rt28YxA >}19F}n&i09@iw'a _o(=&0E&^<0b,xft P1L륾on;R1sU`|Mv֗;l $;0* T v@Nd>;u:ZtPn_t~–/Ԝmq#U4_W 9 HDԇ Ivڜv3K18E!Wj7QU~xyQq.5}. M>6szŵuߔXkU0qE >A d)YXkd߮X{'3 -L lQ x#ps olH@,\}gjmCRߙGP"iǶQg؟7m,SWL?!0*l4e2oU;>zDA!\wMj9BK,)q'c3u D "\ >NNfw7ћ$iڪ\”#q@ɃQH)t&9vfVqVafj4XQzɃ[Xʎ,zN+/ON+*OArCLO+7{Y Z!, 26mjA[(w)7Y1V #fw280 zׂ_LFn$5:%/&9ysH_=6Ykq4'"5Ld{^)lW^KfW]_T||zqiuptGl,Zo֡" q szw؂MhZ:4VhXl~U>T/q xGQ_#hhC pa^ deG}$w8C% łMRTs*a,Ű) tr‰xۘf=1Axd~ Ev #|qژ; ~е?Rsy߮?њH[q.O:=HQ݃'F@9:8|䭿%ijV;b- 2 \FU.n3a23gJ-ǣ(5&N$l:֨6ZolZ:+'L>=9MiB9H8%񛛜&BC쎱zӕI`pۯj (hέFә9ٜ/ FTpgT:kBz}i݄%d*D9b3&=1f1gn/{jQB v*v^h^J𠤺\3/ X,Ba? \Fdm}0~FV1av!k=1腶ptNݴ6}DnkWbt/w#hs^b?p]rz ZE1z**<۽}¸AH0rOѲC#I_ K&v$ FJ%سCضAB )* ;mޮrQ|?K[!Tr`ci,X^%A3$HO9At'OԱc^*<2q= feUUWyk;Efx!0V ުsō+`,%3xJ\K^riꔓP& qM$". F~D/K_K5yJar :2M@٤ۻϟ4No~*|,S8 Vw8^a"bD1ȺDS l$ٴƜh#F8MQT,2q#j!DŽ+d\ϓq8qd1EZT/afٛ򝟡qGg: 5 s>z!mEwOb~@ _wp?KzdEEq$3ΎW+G>^7f1Ξ^^lQlޚY&ΗRV8&8f Li xԵoU9&Zͣ}3WƉGuߊmk3y:?G9XMv\m]t9;汼XrqUivoqsz7;E"f6YWRs{VBYt=|lhq .0OģEИ~~@-ۂ`~>׎8 T&,ObIbMzQ\'JU01R9{8,99mJuRlnucJAR,w4=ڗU`C:ͷѝvSX,X˯ɅUI+ݬA9k!0x 2r7pV*|Ĉ@B<>MifwSx[-%_򶶗O2; !vUoF^"Υ:VxG1{iӅ8T+TD֢+pxO7Զy]N=< LlqIxPZ,SܒgƤm`}zwh֝;m?NǞ]\cNM]Gty "4/s;K@.c &IL@|rbGy~ C϶㫄Y e.,+dֽhꗽ|m%ռnAXxA{x' 32OT,½ȔD/I1w8M^ tf:5T(b5QaE?'f0Q6T"/e6O_|Req$S+W'%LM83\ziF:5=wVq8 з\oc1#[z#ļi%=4ٸ+&3W2?[{ŔZi83a _V`&\;5G]fZmo&yrpq ;E[2c6 E#.5ўy]ӝ(ݖ,x.R-[7h* K+M=Kqʄ1`9w;6Mu4ɾOkwv*7ij֯%w:> 1yAm3[o9^ntOT8빭g 9'+.ymvWKP} J947ָg'֞1DO?gAQӷOK˱xD4 fg# ghZ'L؞-kZكSL&zw4pѺO˥}5qCS.}1Msh;mu%紅vz8-E\M4ޝ1=+gwb'sPw' }X(qNg4 nB~;qi;XD` eCJm;X܄Z\5|3ٗ1GsrаDE"ωQb-:7*rrf `H+ #WNJ,!{z6h&{SIwb}1\$ޡ(\P|hf+"}:7ynf=D$-zx 13 91¸A h8)[22?tӓn=SDfz(VXORÅr?5Xq?+q>~u>NrKUQbxPb6Fy^%@u~s9%m2/O#b&Gq z9Z>.{`hӓ֯D KYQ'u.-EUbU`Ȍ46MM?9/(:w|x+>"[D>Qt^ uI,_) sdDEZpT$)TyPbS~ D|/)W'sDs8}tcT\uPi;}nvxg0ZZa(&cC"^ M֦:'1Pp֑ߕp,Y@c~ gz+l#IYKi1ZlL n՞v+zO);y`YUXNJeoytaGϷSe{۝߫S+Zz`Gh@9` 1_w`7q0 '΀!Áj9T` ;Рg=N9tWz- .ѲH(J9 55`.;c܍4эXC!N/a4fp;A L*1OQfQrgvpUmaKlīP?լdd 5I3e!FŜl54@;ƇqWh})3Z Rt?Dig($4&^c9Hr.%9NPP)`i2ǡjQ*lhT+"K[ dD9or T9ʰU/)v 1. hԿ =Ss$]浗-[g!r|^Xq.%NoǙh~>vපc9U5BO{q LGep~DHE0e;>1:ARI455.4#䡓WBH`6EєC/+JwՐ6#c5^wٗnC0d)=чqbPeVqB[%7X%${4Y"+ߡbʉz6I}yVR]^xǕTr{5ubAl11ZH%`EPaצ[j 7ϳ2Rc/R9}\\.gj( &F78)U]Zf.#c+ۜh5!>"0^5Q~Z2eCұ|*K1c+.:voK~6a6y͑ӹHd<3?-M!$Fe֗LK)GcaAn9i5bFU#ƛ6݋&Í8s$|3Jj,L_cmfd'z݊FGv/+ljhLM̺ p\?Zu2[?{3.qfzr_5wbxUUQz3|+#?Ut^- y[Csfd#5xiSLhF-SE@=QXTDc(.HbRX<dDt&v u,\5m(2"!S] ׽ m8;(6`;ɛ鞛ЂSifDԅ~@\_ GΪ9~)t4!;h6ddgފ2%JᤆއYT+[JzQq0WTO}'iL< B!TgoY6oY5?>5OY!9-wQS=(ETBv+_(ǓA륞5zA?ߘ5o~3 !.fRda$ ɮc qAee#GD‡G>582.ζL u0K_0vOtzM#xôY@įeTG䞿5YgAn0nVNHOqLmin |G"0)@CSg90OE{8H_D!e6)ޢzC*F^Ud}I)9=jLELdohPE3P/3! O>lckhEKSutNYn3w\8 ;Q^1:ncOb^k]L v"6$ZM#]|,ښ+/.˚-ܼkSl=?h'fC댅z f(Ǎ\))Lϡ;j|9zξ8z3km DVNLP}fap&m SnL.kN[,+u(e$1S. s}7>qs8/gZ녟_q.VN4=A9~ϙs24l",^l'@:u9MS7*ZxtCXȤaDDҋ|;E#[a,|<@ COt/J}ui*h`( i?LT^~_=GJdY"|e|lP"y_Pϯ64&MKs}ﮝ"[!EGϕw3>%eIn?iaegys s a,P<}Ι47t3%Ywд[v, NRH]ku^R3'3 Q&V@S.s2t-$ b̄Dg/+pqnEF!ڼŸӶ/u 9D?~..OGn,~!xíBXPy)+HCTy~rvݶGDd|j )Ӆޟ< ! }!\`m5<1cݘ'Z9 ,\.E諑{t(l,z".4&= :o "bg^, dZW*5TY=HOsX!5=$"}` G[}aT%VI2d쿸0ӏ9=;xf?P@ahaLSyð8@+H @ rU LyQ)X/َH)D)JIO`Pa%}jp)v$ =0~ߟRgWndب"S|` _05['YfwN]@F^Pezr^~v~?^Cs'FGsG3aX+R_ЏmPjq6OL%N#&({ESHi]NKΘ-6pߗTw?>_vK09H'?12e |>Q4U}^5_yM3E:YjQsb߫ݯow=xN+Yt5]sḾ߮]{}47P4HK_!6xfvd^o ۔E zq%Ϳ@`p/E͇7 "5w1U0}Y[?"e+Njl@v+!.FUC^{[>94|sC D>Si7~ 1382/Su'dBË/$kKf*ąіflϣ j9t?Cljn߻~sq*:e_Nc5ٶh><ܿ~⪗k@'*95?.Y0 ?1YΔL D ͐0:|*ph譧]kQtS`|=?ӟ 9z_rgnYLDsL}]{ƿqu4|>H'~,; ;ow!=ags_Pt;vɩR1@GB~wq#*2#Rz0?٩(~Y4K+̗&^GТh p(׀vJVr!6J]!U4~\@)%4 O 9ټ[1K'Qx7=`ahtK'f, lb~#0x lLG_K-lx! HԈvLL ӷ'&nw鞧ng{- yx3?ȷZ4wmF^-LU@c)8-Mԓq;lrpQe,'qlҿǾ\M'o]J>Z:WzY#W@tl.mNꇙ{]3m2U.\{ҭAwc1~r7Uy>_J@3[wqߪS],Qc3v/;>3/d;ܣ$E~}-UӚt#c_FtC{ew؈9f.{?SPwnU#>@(:0$m|m>w~>r> ;ƹ,p=*22tHy Lu @<]6{5E_{v_tG4=y ,(]sUpZQfOT kg/c?F4DvRr#sNyлj H)mUo?79p^nO! />K alyJ=Q1n#On#0߸A~ s$\9swzF rp%fUx}X-0Y'V:PT>w*8X-kq?6=7 ;atQ8V2>cH̫,V_|7:>XI[rf[@MQsS+AtU7S"ӟv ߷˛g]Jé%Qǿ]؄h_*lGe޽4QjocA/nϷdmGv0XS}C20N_-m\mKۯuGŜOu1{kU5Ē4k/qtÀEU&CkV&q`+m=_s.}]|m$[lKWÒ6:\^k?9fy9*p܅"MB, OWĨ,@huޟ37o e0b>IΔ*RvleXP ^!w`iotJ(DSz5VɩK }.{Z0YV̾8B))?W괔Zd,ʏs?`f>.zo0gL$4D͖ҋxyz_y,ON|-{<;> s{@SV(W}d+8 QG7y=kol3 W~z:ͳVwRuC40` EխsDS }ۤNVߩC؁>dW0_:L= @4myH볂 ¡]YLƮsSn'7"ytGz%@c!6z#*Q6ApR~Y<-#llɯ" Rj8t0#[a(DMYxT*䐀}=+/m,rW Dck)b9>FOx1#/*K ev81jS-@3N 0T3<kƙU=C 4#Z8mAvG_P  `_S[(R1ՈZDDTR. Ca|p2I1-|/Ce>Xx@8$θ1@[$FҪ`l"#6(&܂' fg @ڬn[M$!dvutF&z/503j^yvH;Go~: (kavODrX䐈uBώ]=:lo9_g P<8K= %IU>y%̃;F>e|[pL01`=@dKmBַޘ" 9+DYc^G96q)] b|tl#!\dc"R ?jn®ӧB77L;j>?4>Ih+z}*))2!1:L72KȬM?'0(y=ƑvKzBx$U3?nх(T>jls%\%=}sPi0 EI^([!5i[E\TH ='y*cb2wc6=xjW=&1JηcTD 4' Cy:*q"40[B2XRD@fƻL {xcsBsbʺ\ #/t<ciɰfA*eٟ)ʢZթTu3%$!G u'ns~6~{6&[y(n5?d૭9aڐ$m$m:7(osh3r#hUW5*sS\`\JE\#IԜUݙYfFE 9CEeu"+*挫]>Kxh}<L4:J> !0U\JD2]ΈUOo i)8Pԣ[v`E5XTU$2袀@$UIE"/)˹"p:hȤZ:hBWםz&]5'ZN!J!Oʤϲ7I=D`rOedz*.װnpo׍[GFhn-,-koDmzI:NMT!YڲʢoVW:a-W;&d%tj}:2oLv(dȦBg]7)p-lyuh7f#͇sW!U}oaF=D_MZ/T9Fm/CYȽ˟k6.6z(g[dj Ѭ?4!A-P]N=l\ 6qyܠu(yǟ5e B PRJE \0AIVW1DZ"h0S'?3^Fuҍi_#7LIzF9vwٻ*@h@ 2nQ# *ٗ^us5ƄLĆF놼9 pI& eތDbاN!YP=?ȇ^kciow8 784@KJkߓX߆8uY/;ybz[鳹k}7i A p@2oM|'}#D8plK'z<ǗPbB/+eڎ<|FAqQ>CfNj,.݂-jۖ.LخP 1)(#j:Ŀ{˕50U^YV9*VB3a['5#]^o ër;1A479' u(e!vw.P\6Il `_jv_"yKp=Ɩ/q~+i~8ysJ .`Nibue_@ksSs-ј NDx0q5賄= {L+R_ u-CD ? }c' IxSFhLqoUK-o2ts"A zA"8;Y~O!UͳCkhkVGޠzIPpZ:`T_PB99n2'hO">y!B*ɱo ^".En 7vn((->}C=K cUO8DuE?MT_gȿ~ }Uu!\Q8{ջTBx/ OóaXXXڱ0?e# Rt98|o;R< .,:n!`$@5 1F r,{s߾JiT KxjJٞ@|S=00 o?h<4eA;:ؠL5sٚnv`$=_8}C 2@0ûvSm=8]6%:=Y|6T&bI'a _8$' f`$wm.unK37˟# =>t^н!$x+aҋuˎWx,QJUӢ|1/^# :‚::swŠ,K, QTXzN)61uƺx zzZey <ָrhqށ r@CWO#M-!k  j5z4j(qh9H^1 ` Be]fuz%f qϘ?@edU},NvipatRlRG >pۤMMwMVǃƆvxoqv{8+؟C9ɯ[0 dj *(*(*)((((F(J"}uvw<xvr@)h6?z@3 @zǿ̠arxbqS]!$oǙ%gl/h/n&i- ^0(/<٘t I&7!w]Pww)> )Τ򽳅rmu|k["Rd!BJ`*fFi**ZB$ ` a@ٻqx\j"Bd &&qhVbXQ?5 4[Q 4I@RK1%%/l1UHR!HR-sIYi4TLLM@LP""#< 0iv:bT.SÆ9_cu;\@w?r` Lkc HT裝p;Zvo̕niAnXP2?MFEXlo`ET%h\,sgJOu5JMؼ ۂKa q Uv_]zr')1@9 լ\MM4#n*(5/C2"rF̪Qd=8˹Fq<a{s <M -1eڣ0%VP&\ cH2u=Z]-\%vۏ^C&=\R}Rv?4\8I@ka0/xE؊yn:IcdpbPU%}0̞8N}P5l}d+a?C^HBc}\v |=@,s Q7ur x#ԠL]@ m~%Ru0 }2GIxӎOb>!8 ZM>vhϘ󣻼ĞbwVr@3|[Ӭ4*I&VϮI%O67&m9H [2C}v#3x$w} *fI%v2m8FIZo+]id[m;EWx>xT(ʹ tF""0p HS DB)f@d%@&&d *T@40L^DD(u" ]!Mh@9 Qx@J 1İ T@輕C($y"R!AdR p!Uy [=_P$3K b.`#ܓa@x3dF;; ^6ڣ0k6~;xcefО9$ M˴=9qώȗM $ۤ10n>_=npEKo$K/l?uF)ڂkXE@C`j;!ЈuwQ,nM 2Ǒ =ʨ kpDM%֤8G?{؃':0ʞ3cJí89u\I5#'_`4x'5T ]NqsVf7tۓ3["}Nμd!Z`(=]Y?Yn#f|!ą$CXHIBBXU bH k]8*„!+0rӪ!IگpZIWh5>Z6!8,RX!1Gn{L\Z͙36άqk_ ^">_Y񲏵Z]Nt-t/evm&m:ObKy>nĈK*wܾ=CydxN(3n~i DĹmrqU% PvQT u*'4TiVƋ#%%oH4:ӣEf',W<#B4OqT<\+ioHhy57fLSVdÒk788}Qv~KT4!vt! c5?gf|YFDI J6:|fnUfi{W.p7':v)h:;#iׂحq[O_w$N޺1G|tdWΟ>?T_뙾_~Pѷ;]naUrZhSI8MU3³c8=l]!昲4ێ/koKh-??&uxä́n~^bmdoo#aGoݿRQUSMɿ;ֿ?|Ak! D@0(%D)|^Y{Fĝ݂u5 5, ٤nqo%HM VS$tI N9q`雎&-W\ƹ@<׊y\Zׁ?=eΫN)kB70YJc6Q \$ )أ4 oCyߗDB  |b."L/=lk MUB"]o!> yG\,A, !Ǩܨ2'䋎 dMǿI{]`6KPq(n}a|$ly#wGD)jbԶXオvd]Pcpjgz6> F Uh -mp!WD6/qus2 jyJfbOsٛvu2w;vs=[;0;0R">qD?Osq:Թ OAC`P>rxgގSRmza;f;;K{g=bևAF J8 v@QC&{pvtOJUXt{ o 9j+雫&EA !/8;v*ٕ+׊/3"^ͬpr:#  !KC5} \M%ѽ[EDDP"pg /kC:MnE8=O/5ibJE]*@N#}kyuﭞ62t qs/W[Uǩt$tJ~gg}7Nô$&T&Fvƾ]<7Nn`k8`D C}|^Ɩ!L_+T 劯~u%{#y&-sic\lRFNJ9Lk ,dI=% M J?-L\z;}pwQӓ닋5\dURb]dYS`s+s1)P>pA7Qϐ~ O>2kvf Pܹ{ (4څχ !W:Z׉AYv9jyzI`u"XĬV1).Š ;xCWFH`B&PbeNz;wH~?)R@7qcO3D?]YXKT?ۓ Xcs~Oɦf,gjDie"PKrX ,5HVΏ[e9GWQM3֢sd@H_> ?ptb4z[LB a˥h!%bR5K4c20 KA2e ?ɍP.~o#O#g]>,t2@_\5 @K`ۊ VX|?Kǩ:Y$"$~9yqPSJ(`|{vUC矣_djPZ8u=%K[L^8 'tWI\Pֵ&2:Z=,ĹۿrjVjxW\YD*J},;×>Ku(q_{|r00'jD=ӏ8M?vC󪂑3&/TkO'q >Js+A@CJ^`گ8[Q@i~ -cC3)GMP?y8HQ4|Q)t_VėPy`[o6f.`l4x W)AY9ߤ6_.r/'bznsyT;oYZ#Ha `Rtm13 2"*))BQSW(o^QعxvcV $6 "hMxH)`JPR>U0Qp;>TT1m}B0  ^#?80Ϩ'-nΏ1IJ!)rv#EXD3ws]eqsֵ2\᭽&/]es峫/I9 l$9w}uH3k(cALg6΃&;iRj)ɼQy=F8d\[:ewm]fܲ+A+7h])^}p#mo rΛ#ʙ9_o\G DBLI7J|`")I"`i5 0M +0z9=hGx8h@*PXdCA!)tƣ㙏 !ɲ 6bMZGLJ1@™_USa F^'whQ3%L.Fހ׬GUQSs"pDCf.1(l>{aJPHʁ?aGu액(`z:'mAzZW@OiO8.*"(KNӲ?:S7%z֨d.Blz-Z.">ʃm[|Hf\I"x4+ Af  Mf_X x~=D뎑6,<pC qpjM>Ѳ2HADě]#50Y6 *plۮ-aN:Į޾=GC(9|זegc\uQP[B@wPt޾HbzUӪw#м-١1.wH?r/hDS