summaryrefslogtreecommitdiff
path: root/mm/slab_common.c
diff options
context:
space:
mode:
authorFeng Tang <feng.tang@intel.com>2022-09-13 14:54:20 +0800
committerVlastimil Babka <vbabka@suse.cz>2022-09-23 12:32:45 +0200
commit6edf2576a6cc46460c164831517a36064eb8109c (patch)
treee48909c81b540a92f112b48ddb69a03b0a23692a /mm/slab_common.c
parent1f04b07d976da0666dbc2b170634c5531974dfa1 (diff)
downloadlinux-6edf2576a6cc46460c164831517a36064eb8109c.tar.gz
linux-6edf2576a6cc46460c164831517a36064eb8109c.tar.bz2
linux-6edf2576a6cc46460c164831517a36064eb8109c.zip
mm/slub: enable debugging memory wasting of kmalloc
kmalloc's API family is critical for mm, with one nature that it will round up the request size to a fixed one (mostly power of 2). Say when user requests memory for '2^n + 1' bytes, actually 2^(n+1) bytes could be allocated, so in worst case, there is around 50% memory space waste. The wastage is not a big issue for requests that get allocated/freed quickly, but may cause problems with objects that have longer life time. We've met a kernel boot OOM panic (v5.10), and from the dumped slab info: [ 26.062145] kmalloc-2k 814056KB 814056KB From debug we found there are huge number of 'struct iova_magazine', whose size is 1032 bytes (1024 + 8), so each allocation will waste 1016 bytes. Though the issue was solved by giving the right (bigger) size of RAM, it is still nice to optimize the size (either use a kmalloc friendly size or create a dedicated slab for it). And from lkml archive, there was another crash kernel OOM case [1] back in 2019, which seems to be related with the similar slab waste situation, as the log is similar: [ 4.332648] iommu: Adding device 0000:20:02.0 to group 16 [ 4.338946] swapper/0 invoked oom-killer: gfp_mask=0x6040c0(GFP_KERNEL|__GFP_COMP), nodemask=(null), order=0, oom_score_adj=0 ... [ 4.857565] kmalloc-2048 59164KB 59164KB The crash kernel only has 256M memory, and 59M is pretty big here. (Note: the related code has been changed and optimised in recent kernel [2], these logs are just picked to demo the problem, also a patch changing its size to 1024 bytes has been merged) So add an way to track each kmalloc's memory waste info, and leverage the existing SLUB debug framework (specifically SLUB_STORE_USER) to show its call stack of original allocation, so that user can evaluate the waste situation, identify some hot spots and optimize accordingly, for a better utilization of memory. The waste info is integrated into existing interface: '/sys/kernel/debug/slab/kmalloc-xx/alloc_traces', one example of 'kmalloc-4k' after boot is: 126 ixgbe_alloc_q_vector+0xbe/0x830 [ixgbe] waste=233856/1856 age=280763/281414/282065 pid=1330 cpus=32 nodes=1 __kmem_cache_alloc_node+0x11f/0x4e0 __kmalloc_node+0x4e/0x140 ixgbe_alloc_q_vector+0xbe/0x830 [ixgbe] ixgbe_init_interrupt_scheme+0x2ae/0xc90 [ixgbe] ixgbe_probe+0x165f/0x1d20 [ixgbe] local_pci_probe+0x78/0xc0 work_for_cpu_fn+0x26/0x40 ... which means in 'kmalloc-4k' slab, there are 126 requests of 2240 bytes which got a 4KB space (wasting 1856 bytes each and 233856 bytes in total), from ixgbe_alloc_q_vector(). And when system starts some real workload like multiple docker instances, there could are more severe waste. [1]. https://lkml.org/lkml/2019/8/12/266 [2]. https://lore.kernel.org/lkml/2920df89-9975-5785-f79b-257d3052dfaf@huawei.com/ [Thanks Hyeonggon for pointing out several bugs about sorting/format] [Thanks Vlastimil for suggesting way to reduce memory usage of orig_size and keep it only for kmalloc objects] Signed-off-by: Feng Tang <feng.tang@intel.com> Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: John Garry <john.garry@huawei.com> Cc: Kefeng Wang <wangkefeng.wang@huawei.com> Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Diffstat (limited to 'mm/slab_common.c')
-rw-r--r--mm/slab_common.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mm/slab_common.c b/mm/slab_common.c
index 17996649cfe3..a2c8b937b14e 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -649,7 +649,8 @@ struct kmem_cache *__init create_kmalloc_cache(const char *name,
if (!s)
panic("Out of memory when creating slab %s\n", name);
- create_boot_cache(s, name, size, flags, useroffset, usersize);
+ create_boot_cache(s, name, size, flags | SLAB_KMALLOC, useroffset,
+ usersize);
kasan_cache_create_kmalloc(s);
list_add(&s->list, &slab_caches);
s->refcount = 1;
WCv7z'|EjK?TjMe_R!Xz]n8C;nG㇟N! phzAp&X^(|v$2PT LaD[Jѩ>N%Wmʡm`%@Q5'tq$wt~AFڗnlZcUVKջkռ7TOʂtFNdIc\+"}eWU.k꺉 e&j''9B,ps" Ý^]f7YG9i'/pmdGWnQĮXxoz`ݩ>%|1\,$/i1HD6.0oZ;$7Yi8Aࡋ~83Fp y&6aD}= 63Co.ya0gB/w.j^EkɻhUrnJ1aUn4 I`Л%&G*($>ntOU!4a 큧d"Y#}|;WZ@(|=}!Sbdϓrb3FGYR,Ӥ2뜒|1*ONտk.tW6۝S;/^uf٨[E`M sp~gWUo]T}~sЪV nq+yՒ䬒b t+gO7^rcrѲH)`A#"txLөwY2gEFVtF72&n5^wXt(_HpPxd¸`ezى.iԻ#0x4ЋQ ;.B 8C. 5zajb4g#&>UD(亍j^%9%'2&݋/өOZ5ڕFQB;=eĮ)jX"Ԫݭb)I3)Zh&Owpel{#Kq:Y?-#!Pz"jQušiMiZ% pCp^ ]2 7؋]Viw} 蹌MQ8k@ge>æ8>*JJk]8 1't .(Z,X$0%r#=m|mj`c$ըP-VĔKV 'v1 W}..et}E :l]r|jW8- 5SIuNL{LGI)˥'+@ ^IN"r 3;$HpuNLj&ym;\_xd0s0w'9kgMAFdؘULsժ4 6P (/+rH8OBڐTb׉i^ U:P~gQFw8hu]#رlyOjp ~UBE,tYzXy?H*'>KKcܨU'B_X]'IGo^r*Y,<PnSb x)NW+7dm(1-PhJen){w}V||w~F!|6wECE|Io#M, {W}*qˊDyr mmO/:n%ST٬Vn psea: Co(aC$֢Y}6^N+ p,Nb??لDy!~/$PuE*hyб HDG6\Fo=fvس wyk'O;wp`" Ie߻tHΨցSnGԒO[FX`/ಃl^ydr WtE)Hv)=UCX-fY{ߝ"4j~`ǵP헞DL " 'r`qI/bQ4ވwӽX1_l,kmS2sU%wQb!e$F3 FǫpUwbӖÞxg:. EB UX6LKrU~-hzX Flヾ\!^h 2@Fz\Sˍr\N:N<[4F=+ њ#:t?[\Zԟ\t*):p?^|0+wy7ߑsDž|%rv2?<f!u(O\>m{T\4&Y jdIwɸ%lW5T;nGsXY2E\Ob4qc==l& y}C1\#7F >F9!CU* {4G/jɦ5+'$ K6 Տ.jv$_%o*#58~͖4>(|44{jܢR yE2]g%oDGcEM㡡V7%]T6w|xb"8ݝO,C\"V'L"cOrw:RʜŁVP~GX4~ %p5׎۠+N,[@`3 =6iR$1Cf``Ykրg&9$&)a(O?kFpLw xO/.׵;Fn-b2fAV'8(ǡjq<ͧ"22:瞸ѩujn=>XXF3jn= #MdSi)`B03a! 00)Uy>`$6Ԋm!y+t볓1@ Tzmi@wOJk`gT6lVTY6}}fL_y^ 8j7s.[g[hCH)^\pn9lHbO)b-a:`q,Rg:>۞Th%uPEr#$ǂvHfb[0L`6=]ބiC.*inUu,H(#4ʧ>+ǮC8Ȗ<*K U6)}!gBS(z@h6GrMnm|1z |NpMWo4i|keփ<_ϻҸ. E%4^PڵJ_븇 n'e'A=-!]x=m4+]u3&xZV$~O0sӚE%݉}L2Q=أ7oMLθi'5U_ڪUuR#g2*M5VZP8r$-uJڗ TM,A@EO`GHUڹ(<gԑ;@ECpY&jJ`F&^jp>k'0^~OʂHQc:t@)wu3OdTQ-1ʬ+:KuIt.WhHH2"#+"\'_c]#.:51h+aяrz5 ◬91T8z0:,_/}kqIru>D?KoRh˅.2*ZRu ̭vDNUAjMWoIjb q3΀Sҫ~ ì?Sk|J/rh =1CPSCBHe<]KIJRЅS:5dU #CP#{nv&T5[Mz˲ODvDb>8%{2P,)!VƇUUn G ll4+8Gta oK>|Vp }]uT(Mlq] -uYƚk=]XKoy/iE!esL"g#Wt>ODm4v**"774`cP6}5GǀV/'1D, OEXr02+{rJU Xv'V64UNWPF'm[ @ոZjPvekvAa^ߕd;P'@>g6Ig6EbExp$87Wk1Y܀oo~^ZR.KBq\zf?fJjhş8Km~SWMQj; ~ vuYk<7Y$YMɄJ5v8)sl6+<3[dF+ ERvlmj{EC g(=P'XoF#'Gҳ6!=x kB4}`8œ{-KN)E`ȕ0!K.z(pauߓF@H[ 76d0 vRVk/oej>6FN$ef4RdVۊ?k}z!hL K$WE 3^GJ9l=-5QQΊ%T{*>$- <B'\Rs+VNNP2Oˌl̲6zoU<,s 餮@%ϙ|&ǠQW\%7&ߨkn9 ĨxI00>be8GA,x+ pE:^]&֣C.)-_(ٕd39Ty.WJoy-$ӈ~K/s5tfW0b$ЉIZJoZO1J$3>7 G g辝hG8EIJtm[z"TKmȖn7R'iOQF(+|._{Xg,ٕWb!jn1cXN(74U$y:I3Jd~Oė/qIϝ7ڝVvĨ+#|T- ?/`zb}B0iq/lO]obJj]"2bH-/`WOe9)aQF%eҝ8aH|Q5NCbہJş}u ;$>˂T>ܓik #W|쮡ZooXW>8,rTD UpsYˍ藃Pb_r^$L#dUr#2cnl⵹S,_ #j.+3tc ѩ! 74Agd@o! Z5j6^!i r$ꅻ#ଋS,ΌEa-Q|U0SEppqקuw9ifȏa%4]I>U!-<+5hr'n*ޢ~Kh?޺$^o øD&:8kЃ3W+Os_rNS"#,GT4(T*; *zQUYhy)P$_-wjl mf)c;>UQrP(K!8^O?Ɵz?>84ӹftDᐕ1H,U7ΫXG_tŭrA)LgRWRQ-$ c12F~t|ߟmK_ATf͐=UNi\/X̅ F׆v=_^KfV _V|XomA8ک:eAۈQ,e9l\EokS4۠a kB~B*O:\5JPַ93<1^;KF(IOff;"C O,2@b-IHivzO@&wo%<`-@lc&~VN>awd׏CWr:ya~)6kyEz3# )}` ƨ f)9*\mncŐfb1OR'TڼV!8Rm%Zҥ|5v~0R|[l-.I;-H&58-P`hCYʃ +yLim0AʝCtik dIGťDvmFjmKz؁A`yO.;5=iC콅?uX; rfbѠ(0J& <*23 {A/0[SbPmykwovn ]-M42Q|VLx! y_b{Bei/M CdL3EIIkyb\\6FPr~]΀eO&91M[>2)۰y ppSׂ"MX.ދ6Fpb@85;ysY7(ZC17E>8H(l:lq,m I6^Pӹ~i9\Lݾ6ꕜӞHI(#a˶3l! 6`3Z zpѧ`'5m}5Oɞ#&Ճ[7U@8ͦ&?GvYB}j"w˂jLLĸlMGz z]; 64TgcE=}u Γq Hx3zh>Saz2"-l BrWL CM"HA4z"1%q͊i,!\)$ȵz,͢佸^O rnʘXv5}ɥ8:qHr{ȓ޾zQן!!cY-a,P4pA+͐n>MFr>*QVk|&-Db+$#e7m7ϻ`/RH@(e #Kr'F xߓMQRO{450gJY&d|dPWUm-pg4wZW jp{` ~ ͗a-`9W1C%Ǭ&5A]|&3BM>8[͜Ξ9\O/[J MQZ>i-=qS,_fv.Rjr_|#Dz.oA1or'c;Dw6'{ uG^[ő:yU'2EaRi+I| [_FV8|%13N\뙧F^cWҏ? 0@ْ >>z8 "lgD9'kgkzG0En7:e/0i%͓|m= a" zأJad'R q@j6<.-ŬVx}-V%g] O`f$]{ź 02?U4*eozSA]rwBroOtX Q'kPꢓ.ٝJnUBʌ7t,w@ MpIo5M5J4]D-eYօ+ޏΞjTzЭx},(;peDgBD"ҋ5\a5a壎}{ &11>?$=mqsmꯩ'-%EY^w&KMV|$sURfha/0,Q__KB|WR>z0qK㞀b=\+E.gaq &[xBW =_OGdt3bdXnpّ-;GJ!'C)[uCVZvNʺ {4.W6ߠ? +ʼn;| ؗ&-$N0";Dw]^kiɺ1)c? ++xq8  >Z z4ޞ)ySy:ZuisV!_30 Zjd8HXFeIYG/"70 HKn'AyXHL>LWrҹ`ہSVGuɩF;W+rDqJ-nrsN8NR[VއQjy\ j>9i Z!zmM2lN$A2Ow !. 49L",#&+<,藞zn)Oi#8g637nw\^2RpB|*iiAe0Rq:ݮ)v5:ڸ\Y ߌԚ_ %IL5TGWkZ >[yOKȃC2 o[nlq% t;Ƚx̖ > O8 wl 3ZJ^` 8?媉/ nJt.@[ݰΥۛXKd\-1-]UPcistDZUs0Jt WbZCfҚpH] 1i4!_^'Ro$gpIQyh=>+zTk LǣQIq\s߲AcpF3|5بdRO&`nb|lEC5I)\-^Ljǵ/!Y-C ݺs,'F_'&J=GpmceڝJC O.RJ*PTL}W-V @5`"Գgܾkw9<6 ~1iG3&pkgfsZgDfPwE`ӎCA}5ŵI ~};4zu?|SY }' IؿY+'%/^{ xAV|w;ohh/cNT%jN㳮`f[Q:ioa:dž)>0h#1'ƼZU2.MnKN0+璈 R ` ϡ{wltL.2SWC-mЖ wx7!1dgJO~9JPߓā=MCi!q&H['ZFjdP p4i=:rׄb?81ʵq֭UV^o2Tݺww0gj4Uju%Q}ݴij*톺 :N3hGS>eU P3hߑ$$hPA<ĈadsO !6 8,8Cbuآ-2s> ?#=ei;b(*+u\W/tw79te`㯘VwTJ qު5ҡ)#nmEM慤!Ij[1i설PQkWԵ ̞8p4)c~Kkם@@H .E\7f&<JZŋb3,c 1'mE1?^YoUhn6Py%QYz^EAe+Xӷmonn<~6a_H Z#Y[t[p9GPCO&o[>ĩ,m %2/Q`Yɝvj(:)Byo3={ҡ|SѻU&#*]$8-mj|h)hMVJ*0Ҫ/nGHr0{_=,ԗ`yfp[|J FZN,`!]f'z6RmW`q}л:Pj8P>zFTaĵ=jLækU}5^j6 H_g(Nڻ6,bS|aP0Gf|^A75 J(ds#6͹2Kٛ" KOr +R0TȠȲfA(j@0b>H!ˠ3'%ifeՐt+ ^`7/ td[YhhY) &r;P$&IV'뗓I\``{ !L~o2^p6νM-Z<H2*F I^MaџI%Fn߀'P~)]!*#`f#a'Ž5a}Ư=qIѬ2tѸ&a &`p!qY7?:A/EȔbsfY0,З8[;̺4\UP+>\6ڋzCR:uD3䒆Ft{^:e!Mm&Z!`FPM&G}LmNW'R信Ox(\jG,"ܥ{x.81: %QLu5ANfXjN9l(  ʝďs;38VWȖliIhsRjo U@j{2tP8MU0G7M+zr>֗(,ess]wLwfQg!ƣ3_4@豚eXHݎΩ筱I/ϑUF*6[yS"R_1ў7sNdvQRvc.eL t;=]2g 7d#dyTM7d~jtlcJ,=<]ndMeQgyN _!iDzx F$ Gc^O: 6uҤ(F ڒN;~'!4MwD H/SPtB C&GzA`\UwV\Ffgȭ[{˔&{šjgc-l- ڄ,UZb-5WNjp"P EZ*FnYdD=K|^xqM;SȞ6W\?2 GSڭil,xAOƭ|[f{9 .F zf4 QLV~;.$bU !ʽENJ bԆ;ksذ8‚ʲ-6\ݺ$kQm/0胮߄=Jn&%N @AQ ȭԋZ3@kB(le,6 يr㽺Ro;m}c%8v(]i j^ HБ4jȸ0@fLh_3Z-Cu Z>Q\bTg$ I`,ts@16%QXpw3bwW-_ǂV);oBjW-Ȭܘvld~yo1O5SjoIxث@7Y'8 u^, YCq${bRG˘ð rD@]Ϻu"/oء&Ѳ5zȺ# 1v,7;&x2tgZH"@j[.2DrTtGb qZ-ɱg \ 9 ,кPW˻,%v<ȂURA[0@PgƥK'.Oj|qsD[$f [406٘c $-U+&f3K!A_J=_~#ڑ`|K 0c^'piIUYW&JC5v ɏW@cZhQߋvNUlclR=W׷_f}u1jw$ڵġL`N%5fg̅ pGvj]!7&u KJcLVG|*1`SKw4?Љ|3,@P 06qmX@ Q#x^sbHfCϽ{>Eǟyr(ˋ`ߧd&`SB G?\zmP{On)I]GǛQ}PUٗxC4[j4ה F?Ō3N$MicYn-soM!)Gsp[G>-Hki^@A> x[=9h.-3Y-BdL04צÐ'+`Bht@K{!]U-z)zR'9Fm#Gǭ%^iJՎ ]ڭ=m׮] ~>Vdsjv*]%i SN^p[6۔.sX`~PlwiyD>}q wILV||qLo%6;^XB˷z{G\B7˘|e<(zڒ`P x$ltkEdV݈gd+g@]p.%ʞzS9#/ѡ45|ALcCƒmA~[I] RZ:@ a\ctG.6uZѐ Fw3TʨT9mkH;$p)lB{ǖ_*oWn)µb]MYX6'ݑ5 2>Yš W^G<} O%]QdLkה貑F٣+ "VQ#K%'NYSrURNRS~f&7&NiC˩e"O1enoYGNNŜ`J7=>;-kYj4P=Sr23J~Y;O[v)HoJi+}pgly k(wHa&=#' _?.%V!<~JoL.lHN٬Нs =!<ɍ%V~d)\Xx; q儲dUi.oyz!ЙcXQ7Ipa'v$HK.C1B9hyg?P& OQGvF -CU9KBa5zxg-y4E&-$p!:8RmRTO8AD tot 3T)>`0:"oUT૨QU9i((QCȟ RnDvM+3r6UBԪjM@]?K[J璿JdI340p gFCtQšM ~Iwl[3QLQH-Gat%'S8:ɷ=K4XF] j4WLԷFVDkz x=k}Gpcepu+$B"@ah "[u'#;{&570Iࠦq6f['W#Z=;!V}޳nH%i 1Vvqx"1yJkuB/}ZH߀ -@-AdbӦ:k@䭋m}tR~60ǝv3!RQL "'*$4*J :ReS-2R`i$lZǛm|IPtA]2+a+ti;d dmLs)#0hUj&[E hA"6沏7fxf3<j ]msr.ذL{5I%%SӔBra=^q zb4̈_7_2}"OȌ7~|ߟFJ]`/_ÉuqoajjtVdɘHy e )SB?gwԆn% \s5L;C5j̿&IEai )* {;l50{lmtb3Ig >jYSI bKH&$F[m? L*\0~ ?O2!fg~/=ʷ vX2G_)lKFS.CH~tp r[EǯI1od5:79҃z>}+hj58A; shLJ9;|G KFl!BhzwOu)j K/\%߿ ɉh{ڑ\Xl}Zݢ9 rיŪӵ+[9#[V\Uc$6ΖR`r ^ ) fy;aSڬM}RA9B.6_&Oq2W+tk ٨_ g%Oҫomt[B(YϏӑD)dl={i6g#wΠ\HzVM*d1R(y3wHG5zBUdUJ pg~!aHH^[V ۨ?{ػa-'&A5zPn![n#̹.6kՖ0S?K Mm眏1'ǧbCĵzYݽ6hjŽd#`e4 ,'NSQ/e4rl2a)dvgC.NF(.fYWٝo(G3RHM[:Ѭ7j {̘I/3Z$NwSM?j7Zjme]]X q&Б@_@_z. st=}@;ywW6EQ(^t}\7ic+ݏH>'nh YAK[\+ZtWOnbJ-`zQ9kuJHmɗ0"nKhk:ۜJ<$]\nKZ1;s 3/ }@ '0=2]BU-5=+MsZ6,5'KlX0*`aB!zG>%􎲠=@q"hl"JeL 깟)sZ!DmGexӟH-5Gpp #x2p[;E}e"\>b_C휟v;ī-Zи:*6.B+f:q3 RM8c/ Z `xl9߬rGQ4#3nUUc4 җchg㔡Ϫ"y'<&,E(Z`+W]lWL-:t 0zy5ڥj2*8?J"X2 y{;VIlf: *RjIio'ҷfx[`ޡH5ZA;:_l+ Lnϯo'{*F)M%T$̎PL ę~*xGjˑ*Ҡ\E gjI՞>Vd KFaJfzaHhJjvx 8CJAMz^SCHJkRO$5='ڇ|,G.7IلXgᭋ?'9{/^>V\(Dw{D!" -0,(o^\Wtyi$\h K7{8%F8kV,e9U"pB25v(`P_FpT?-&NbbŔN ы8^#gĝ8Yx }k{H޴VX^?9|z+pv3=U7U!iYBm:ϙn Ʀ.4%~q\Pz푒C#=Z^ۚBaѳW_c%G3ʊЕhGs,A; }MJSKv6>#]w(U}B?!S]i/[gz ^)Gp7x\qha@fţD{#rޠ)ECCo,Zieo$Dn-ŰTc3 $ڜ:mgrIq2/#SЀ^ #Qb'i= lmT"B5而/$).G"2uR7h īТK;dA}5{_7Ǝ DZ_8p}am H <MF sLL..! /[8GfL*!eiuV)tWqT՛z9D=TNzW-ƃ:yDՉ S¯% ^sڐ/`Q-0Sc#F@{r彸thm!FodJ ÃV 3ZëQ]=9t?uȚ3*&G)*Y̩֪昤Zdtm@3+P  h4)ŴFFы ??pxݟϯ&<_! |@kJvΑ`K}4.2ٜ9f GN3ad,] PTZ; tymmI =I oxDGp~ë?Jp! r> ,jk"8\0ZiGib݃ӿ?8"ƗLWD"MaCI#5܂r,GrPgvU^`PL^KwuĨF?9rQCE"Aqjhc-1K[lJdۙ{;Wv;j6ki0mb ;&:Z f|!NCm\fa0\I>W3gi{ZEp Ї|qn4%ҕ{$OydYMuJ`i# ῴbx 6),ΉB:AQԅ&zUE (A!'_z=bjlQTt1`qc#A}5WU>33B/OO[)nL'kARjyo  ̾]Y,Frc[-z%)`k+y?Hei=z _ufaiG9MۢM삲dת$[&z[HHQ2wlL&g?9(f.HL;{E~eYbH ۊ:iПK{V-ڛ;IboarfFVTkIˏę +%T:zsաPhChcA*=DubqLp&7s$9ibk4(nh#7]kS _j7ɠdÆb/{1>g.tu IAR=\+*em, zp# ?aAo\{dG796-an&0ǪVjU܃R ` a&&2t+m-Nc7 BT/U']%mdH~4J;"ff@ck)֙+P dحv7vFhhE^CuġezYi$3gtiR.-dÝt7k]E)j(dFȞucen3g#lJ)cn9 &i<>hvu{zN~YW%69x{O>ЯIWQEG{[wgtB7,B@eAY_+n6M 4u޾e'ArDRx*R|D:~ @vi~Qa~Y,a1 gCNKԔ\1JA4sI8;ˊnM:,u  ,v\"쐽/N@Зa5ߜǟzD{3=o!Gg]'.6 # .O[? I`d;.C=2OV(MDRxP JWI]qp''y#f VD Whl?Lf?n ^UunzɟyL6Էl&齌# ӝ)n악P S;J>vLwMˑr Itǃлj#˯ﻰRt j6ZXH giFh3)\K]oe%>e}]Zvg~PaӋŀ~+CZ+IEWI0%+G>n` T~t ูVשׂѸL4G,ʙ  **k;[u3_loxі.tʗ}F,rW[lzR,F)Y7B Z/Dr̨ޘS&ݒQZagB+`B@ڭ7tD#9Ů"\R{ԃz>GqHX QmԄ8ZG5|lj5 5v_u"o[QfK]1gj;~5޲h] l2~}`l⵭`~Ikˀjo&|nUq'!d:EPJ%(-\&Aiu>uɃh(:zwai&wXÙ&]+34sǑXX]9r $;ʿсɺ**QB_Epy΄Öj}nKCN"H]G'>Äf}:-j:OMV׎\VnB.b5JEvN[W$4YcٞGzZ6A Rw% Fdo7s$L)Kӫ*@IƦ̝+ r!gF&k Ťw~7Q_vEy/b߰D^fS~YdC.9_[Omq\.F{(,CT $/  `aVg8Sw='iT$FƱ:g+˯] rA ܐ OJ93E#]®aLXP% Ǝ4 [/r-) Dt -ƴQ8EMMV@I33>rѶFbJ#Ksׇa @fi&́OLWf^w@-ϯa%΋Rh:9' &$B, 0ҳZ{M;~w >ᴛ7TZsE֐u!;AI+ ;W6Socř!656 |8_˔F*l_`{B̎4J]f0*1uJBv'(ϧ1hgܪ=0 %jHi(z?p:ٓ1stU5&8]TiбEpTonjt7{+Y1ndѵ$!ɳ)ӊaeEAߑ'C-[SXbȦ@n6էg#&jJzYnL#QAnr5lvh'_yO<6\l1XΑ!+qjБED7[o! !IMռ_ 9ohkG+ %`E|:T\sZ"/g)nl-XDk >#3)t;.Wz^~kY7 .m3]P>i0 VVA*J[Ud˓O}'J&kwL>P8!گ4he'&C[J | tT?Bx!|VÞL-T `)1455ˀ NB ܂vf {R'\n4<82 @33]1Kȁ?N@{JfĚj׶gښmG`iӴа@.%jVjbY;3 n]m|󬓤`hhY R`+w֣㑁<=G&h w/t:,y 3Me :2x6XK ϵ['Brfn 5c O\W )r}CѴH0<"%eӺVP/C.7_?|wք,$w4ݗV';}TFyJ5v{҃ZWZ%orBYvNV0\pZ0G!Ѹ,eBn oUiPd/z^iHMX3'sT>]3CڢTǔOא8WnŭrNn@QR.yPt*_+Z> S"nH֑]@v?}JMyf~Uod܊;~jWNK vjҩ֪~6wj#2M_kj*&%<-fw;9+[kZ ϱ'˿8N'a77` :ѐFīj }|ǣnVݳlwΎQ<۽CrDS҅|[2ZGnTd=k%lZ7l8_ \ܴSYVYIkՓ\J]ZyԡsSD ! yR΢rv'! :Ί9 $wB3eb5${L ]wvV3RSSL r,&!$Eapzci^'OhH:^/S:*M0:W%F){FC*G4aᗜ:[f:1:ZZ2fGQQ]pv5G m\g=tmNrGܜ %C2HOeϞt ʓCѳ'[oզpZOeXӈ^m,r&+ As0gըr @ޢ_@ľA==π+Ri!΍K%,-\?Co渓я{ۨܽ_7 ga$5eykO"il/=|&|31 j<6L. r֭E/m.4Ꚍ'ә7$K$#uUܨ֖TRmuLnnk8"R {zuH8ҭ՞]+4s,WAO{|qb"}m^Ώ^=%3JǬ- ~oO&{Ydy`GRz5 ork/#0@c^MAlKlJMRzhNI7'nr#h OJAoiycd5&tQgTH(-zXǪ>P[Фx>h'u8*vʋfBFUSvɒM3f҈;M(iND zD6zŎ^d"x{}T@l'/&Ͻ5צµWN(Z[ȲUUw1$yɼ#߼]!+"كSBMr*ržqO֒cjWz;^)L*N#lu-FΓjH\-a;2/d !!fm)u?;4'^q>]}_݂Ij[Q.+ߡ'G(=\'yʬ2_DY欩 r%e>Cd5Z_LLc7r jD/۾WqٹO}߲!V48M(Q:rmZr Rȟ{S"w$=/ݏ7zr\VހkSK\̵6Qf mRi_b2lN+E tʈӞcX9HU&ԅf;$+咹-]C܋msԨ%=+WM}4>FeI 5б:zc#g4ܗ6\і1aco"fk@-g{ϥ֒zJޛJGɡwWz,:؛h5监 {_JHXJx=FlA7#" QzkjҒ3ʈkZ mM.fcnH,gl8&r(Hďd@[Bo0;bD&zF4'?pIb7 j"&&ݐj }< `J CNrf!ƄdeQY`N??Ҡiͻ >#$wϐJeAVF&PŹKr6:B˛z: ݓ,h#:@ #57MyE17{ֆy88kvW nw%vWmxFp%=2D 2V$L뵯[sŎ)9R@Z*wg59,Qv>8>\:t:EsL{Q}xxUaqlLy:w ĖbI`Oq\ɗe!]SjdސK둓%Cj! 6 &8LwIpd:w x,~.lWd8ǸJת6k$XYMzHdmlr{3U&inuuS]iU/fu!X}{ ;fѣR6di4U3lmjf E*E>RytŇqSP. 4緤0ɂ&CȖ)Ejq=mM:vh4|ScJ?hx@:7<-lvZ 绸ϮfZXZrQY'UAm)=ηwgj$hg*VƋvy_ZJ^段 ;CJQF)CXJ (0YD NaAL+߰}ɂ p=e^n6,@^DlCp.> '`F)a(HzK|ґP3llߵj?>;a"$ M9"€]z ..2cBjK~IȻf3MӐ';3M4LpPkOhLRhឫNӁ+Ƙ3Y$7{(4u*tUb<`J"J%+7d<2bt抚Ehy9PmȨ {KQʥZcTS Qq$uK|Ҷ04QHB6njҠԖ,BlyLpU_f{&̺1sFWO;Nެ':5̊GtB,ͧӪ4.mNܺ6rL*1StpKZ;d _LvҒ۵\"Lk-똞e}6yi2>Q6"Y{'r3,kP\)_lDH9i]m7nuMglɄH<?YYCU : u%ChIzPd_NxMuo>9 GZruB|zٓ i g.\Pd`䄪Ře:3~7qH($Cf SWgmqȓG bkCoUgǵȔY0Vt 8v-b.8}~PU5})$X*2cF<"euc.sX+٘IQ;T N @b&5k, JXVXR8a?xQVq-ޒR_)D"\ 2fmQEh-rWvBx#$&7daQ%vfs:܎BR1Ӂ?p rwيQSR )Ir⫔r$ܶL@"^Om,8}2$FXEأs(/uHfg?n6Z (ֻ&7ӝ5n R UjjR' g(VmɔџՐG\r ?}3~ 1\P=3o˿e[Me:YGPmڋA|UE`/j.'i+ oqG_!_K|Y zs)ǽcA?v+i@k5R*5??B:~WUM4jP֪6IVM^ɛQն0";zi*sJRxQ '&Kv0OÒlGp5|00];mk<8PHWϜ@n0< d=rqwi)mRasZըjFܴ,#IOgkF`BBi:J4 I9ڥ5a7k~.'X>G_cˋ,OSi"}ө $v2"|'͍3:u4R 0II4'd;:̟)?-L0|$"lLAENh]GUu^ڿX͈?g_!VS// lS,50jj-AwX|mW~DnF=m"4hTr?tڤX׻mJ"jx%9(pN>Kp(G9sl3 2L &VO@8x{>8ʉ)-g8]1fj^(-~"Y- _@ Mh}WuТɽP zvɶw*ő`_`,u@pާP~W##awxv{_0>kZQk-%R}TlқȥDqqNOR[|޴.$W$dSb7UCA.K~-h]߳[hqOY6ÛۅGƮC,I= KlH'QHtD?ՙE:T0C\?1eWֆl&su|4Q92qlӨj:r # nMU&d$mæ7jNXjrtgD,;7A{Zۺ6\FJfFq ezCd#~Iv VɈn4qhQ M Iᆐ|`IП 3ЮE%3x`H2&v2J㔙\Qk4W-Aj1z[5U^ʧ< eoRRZo[qD,}!!O'ed?'čKgHe%{ S9g 3gTi3]zac[I~;xb4/٫ _IbGc9!$pH 3Diy{kAf <~I}>l5fbc%}<ޙKǣf9lY`^DV m]ƊT+`gl 律iIP3עrX93zX`ާ S5/M&d+s.o#-dl.ݵ#7#HqRٴt~UfɋtA)i-\5,=ӡ9 +Kz_yRzdA(,•\|tS9S&TuƽZ9٭4շ}1>l}QUlY3QPj-2Njw-5lVGުUe@B1VԠn*ӬxLӸ:+p 'ٰ<DLa;x+3MZ~jbKs|ddNߐK$S,$ƛ"l2շpb,Lҁ_8X(#>boqۙK~͖ͬtMD!󖇵P'X$)tXdQPm/z1#CE,Mc\z##_!GIUW5nmI򛖃a55 g("R5%RcHbܔIu1:Ҥ8ZQ컘0WPZ훚 (F q kbDonѥvm䤈`; f4~A74?_@%e-%zaMktx؈ H0t~}'IaFOIZ a|#{rM\'!2k = 7_L2{{A,ehvs{ O)E)~CRҒ*^ګ2;k6$_NVkr}h zS/n.ťG铒`Chһ&\zIi0%(x&y2[L;/ 0U%΂'| f4s6WdtICLJSMr;]IWf- ΀BE&pj[Q䄒bd?5[ ~' v{C`,"R6y(y6J W'k\!.Ў.1-F+nG}!Sxo+>ځOBO v5xlc l5=4~9UT;'{Y˨Z3Ll]25@P]5͆ +5Nia4_I'CvgOjs5HZ =RʹNo%w)6ee|k Ů<Oµ߯LaitOTf ԟd-8Y;Qٯ;&nsU)5`3`@ӌ ~F&{ a7?==I,`GHveCh̢{$œZLxKmTmEUG[xhk&KH`yϡqmSSZ{[WU9": 9 W4*j]d=k,{tH ѰlcU *PnQTc2,Ԩͯp)'s"z7NTΤkXd}oZ1NMLb&>tmˋ o=C5In(S&6w\9Mͭ 5(:L^fI.I4XZ̉ҩ 2'}{Ny*+of[䦒I &_[@ _LtZ%YD[SFyi2y"=P訯_ƾ1N?D11(37'y7:/! )~\g "hR'Mi:EQAzlPgTW&`2Qn:zUuw]5 9"aj6P8%3+7^ .`vw16O4\98!xCA75"CNFDy2Ma O҉5~Kզԓ!{ F•Wzd}9$ ')%Zqe- O/.SSpKlH\]VSi,LnzZU^mЌOt=~Wxӹ,J>! eYcV0sl6xR_.4hڵ6,W7W2םO O=8F~%[HҊve[ȥE4s\HW/dgj-LasZpX:rɷД{K7 #G[=OtqL6L~7 sE5:/V0ޱiީNJ[0;h0ã[nw a2L_јAfE&o'k84uO" /Wy-2ɖj'7)! a{y|2 d-;(|Y]eܮLځ_dghC/1 Okgl䍓3$L&#wm%2Ek BG섻_c?ҴL tnZ'p.}Z:睆6<YصD --1%<#ƻE|bO+$+2dHp*. <ӱ.S;\Idž7 tZy:h)3[演B]䈼ϡϤ6G6=5]Tz5%wƹqgZaB%x1]&)P@Z 7Wmt _q,Ok.6>Z *ц~nF2);ofsiبf=2k" qI3\\*On7=yV:Dd1 'i͓'*"yV_DbN\(ǎ[&o1[4x ^@J@)5ޓ\C!v+ٞDL2hzY3!O5ޡs躻q4 65ڤRS |~2A)cc܃S k22I e*i9*W7r<<ZDru%k;kOT? F-aKb1[8dZ_w \a$ *t o=螭h[PjVgrQ!i^z#It'e l6Zb^2* Deb+K7p wH8:+c~aXbKf>`-3"M090[2}T:zkkWrH`hUI(}&(ĖZ=j'tch'`3m'D+\DLbBHڌy~uŢyYu9A݅0YP󛺪qiL> TKF?h$b' +4|9 ~.,$ `'ْ 9y{mlklLjbO%r={u\XR ) I~?yFi&MWE#ek{f-$F}6뒐yA5ot{0g1W*tQԁR]yJN ^S4812+IIN8g9E\UZ#哶 I#j @YWvXރcyۮ.~?*́ pF'_Y:'f{ -pRE&> 3-NSɕ^WniHo? Œ0 +0^ND`xX/ktBȢGqϣqfT?Y nf~y5;>c#؀X[gRʿeJVp[k54t!zcYLTF&t 3NaŋL)xnr1pU Db|$ю1fJ' 1(k*PEA]<9NqМQ`]+u7$a\D[z0͟ ^(-kz–~%iǚG)iwgQF!Ws,l8[Æ>B,͒|J6n=}!d*!tpҠBNiw[ur*U-vUpz]Ĵ~ 諪61b@L=$9|/ZC9R2Q85c5$U<jԨ*Ìw}ȏ=Eq4`ݧsXUncK?imd-_=i-g}Ҭt~ffWm j>V45Nǵ3S[1D8+;iJr*`eEg<}es 8E6ñ Q)ېU9l^W1qC3Yn쭷QdT._KDV-2pW-l&bTl9;Ȋ_A^)̈́Ef+!,(u= tߴtk>oJx"  U~I`} P.aϲ}S^%Ʋup^Ad0)PWz==;<ϢyLn/ok];Po3$,9;jto{qUdg$oH`4C3uf~`37#@=NfUqߕ$ӹw88Bg gHͰ{st]MJ5 ±>]z ՃTΚve_qQ/Z%.利ܹ~xPrhOOaݱڝvB@}Q6e"6VZ5Uo'u&K˟52ju2VOQxB?㏎Ro`\ )wtŤKj7 H#-D~uwY1.PYc5*@%Hm!+ɣPX [6w3乥-X=,J_ "[H{!iES[ۅXw&GybՁJ W'6!-Ł߽Sl=mp%f a' b(!~9/I-E2Zw>swfMK1U?wU%obb&3$pMQPKwon> P~j&M{Lȿi %4*Jo\L?֛t Ҟ;q'i!3NGd[55Ct|2&IJ:gjy}TJF~?*EE_AzTߙo5& E4Dqz&W了,%Z*^φK<7xUt{(eEEhǘ1dkz-"D`oR *w=htѻt3B?-Kƣѹ <Ʊ|ElOmZyi^Ƅ?b#d%nj6M^@ bz@$OUW Ek$ ]Ek\ZߊƸ_4xA ̈Kә\TzƟmz!cE'!_\"#1^O(^N +k~/r>H=:A[lTM a+*&%.CFshF"&3(ޥ }Zf#r| nGL}F5ӁZH19fjD}ԗ^,'>9Kyc`Kӓk! {y2 bn#^h97ɭ([C͹ 4$qӃҍycN̂?s\ˇ~F$$_pLı`#p^#ܯ3w)>DInG"+1_<89Un[Ӫق5Y]>X]{|] k?8Gִor0z"5X9'J7H*- *Ξ/j\@Թ+nՍnʻ\̕sQC211e"ۤ]f'{u0@4(;N&rmmN(]XV:$EfHb+ʜMkIWeH\}dǡu$;g^Ot핺Oqw$ܿ -r'2_ C^'KSȩvNe(5WIdS*E`9w8joI>oD.g$D2f("]}x/?gyʧOw}1}/V`QdOoIz̼fS`/;ɩ^D߸ΞLB*_پ.}q!p;ҕ{z=_&G=EmL0&pBӧ 4)x^F"/A2kZ1gX|Vpԟ?1V1/7ӟڶ Q*' d2ZAQJ{Óړ3J; v yӾtwV!`h<@û\98I b ")> 4#CsU&%KjBA+Ewb8is5Wk-Tq;%p֏ F53NzxX\ImNǍ3GH8Xb,#{ŗrVz2Ojt=.[ Sk%%Ю J܍9P~aG t`Y%ʉCWŠonfu-qNXCHd &([-W4߲Sd 'Meƣ pe]4c|8`a:9"T+J쵀K}$ \:t!-*UxHr=Xg:'i-pgGzf镄&zQ̝2*_ xwƽ7"Ixv𣗩cS>М}T>VL#ĆsNɅן[* ioY5mklw+g:Fnd8-XO>T}[PE]ViϞ@d\]"&i8 >e( m" ~t Eϐ/1mO-RmT t"'4W?a7be>+V+&gGuԎTuؼ7FK1Q0Mɽ#Dɜ_, F+V13:W 2A/DQnva'FeƓ+c8r<>} ncu> 'J)^ ִ/,J'v+J` m. OPi &"dS XÖD؍h<(K&'@pJ% pWy /HG9:lY.2W:4T!'9>k70ҵ(=%y>-?~F9"Yd4G*V≳hO, Ȼu $~ KM_ qd?bxpNgcژ($ 2(f?+g0C/q_2 Y? >$c݅m \Mz"aZMq #W[aGQY:T^hld.Whԣc?!O!y[0`lndVr_pwC՜ɈHn໔g=]v*qq2MLfƒPeRmhJ&~S[.y{Y|a::mZ:cQjNϟ4~%Dv?Ó(eq=:lӬ?K;\cc!7 GFs$r-];33esHBy /(ZqX,5םqK_3A,_B'wx=tr+"ytXSԶ#H3rBEA`.11]RE`==@d3R#tgn`L yGv{wI*Ν2?Pdk?s\ó2G4NmYt N7); k5}.-3}2Ǥ`xh.M˚mC+ž*ϢҒAko Mp0 ttwnv}1?3=]'1y4 O!aIL&4^gNe$)|D1frm!PYof4ZHIIT ѺUҵduɮ8a+zj3]u= pOa !5<##z+.~ j҂T $?=6r0 (P|{74ٲ4A6dbftp5.L﹨gsX$?H7&J4A1,_,1z/@\rKaZ˳ Hq-ğ1jmLYፇ}8x) *7j,,'rM>%Syq5PW2BB&^`H1[.(VV #PQv܂|w'VO^&'ǚDs8ʌ.\V!Oi2}ٓɥ|0RJbFe; $bN6pbL24<{:XOO8JrE̍B3q8lޫVʟ8O{mBge,\$wvܾN6;Q'Qr%^u^LߧWa*S8^{ut+=Ͼ>5Ϻi! #R@CB֧G@Nl&fE:ӃA~>N␦V!VuCǀuY2lYOL'=MQ,1׍|9.K,RsXSB_IޟDwiԙFus"Sv.X胔IiT]w_:֫؝FO8%, D98+;ru֫kk0jD =y(P<KՌEp4YzCGh@gBPpxҦ{z5l`sWkV>q& v9Q_a$¤\x`x0u=[F?W 2d0/ۃYA mC:ۤ&[dȩvI۹ݷmz#it2hP@:,qTjtk<jihCl@/R ϧΤT$BFFZd 27VE7Nsz]ϻ+ .L4)) mi%y$܇ҮV3FфQt4~&1r2#N]6K/Y-[`Ce_HBcq5`&FV84[fj泫;c$A{Bmm>mʧ *gaN2I./{YY `|є <U%Aoq6%,Cv+VT3.<ctLqQx\0ř!a@DLpTuCF{Hi0V'-^'l.(/īW<|8'Lj-S0*>(Nr6^| Ejao4مsKTX3Ct),P] g9<L.-qӍ`BbzgQlVG {+CW0>|;oggŝM%G%J9BZdɪr\%  LMA2@q4%xIdeRׯ S&Zpb<( : `Di\ >PbU (n AB/qt0zX)YZZE3#IGᅯTy9=a0!Jb(߮9ҏ{=5ilFe:fXЛɪ{q-Me#V;?cb5_tl]pn,~W3x&Zq_#)@OkD#D{ cvO%o=9{w-)|5dxc &f tĘi {w| :s9cOG+ۊT?1޴[cpZkbh\nS Ur{oH2¤0Y`s/Ûs5G3tlFz$UT0$C3A_v H%o4ە_8~?+p_?cTjP`%݃+ѓm5ny1/$Ic32aIQl;Ԇ0JYW:،!2V‚\]S)@ALZq[sڡOL/-tӘ$'wydߘqvL{FaJozOkC{d>(I5o*Tv3'̥I'={2#̸F:(]-/+{FB'z9Ҧ4H/`=N~ ڔ΍+Έ4^ lbr:YdaPTSG 0Ё(`r<})BXR_nrЂn>!*aPu]FtDyPl7ʍ_.&un6^QN:l/N14Ͼ^批' |7fzS8fqd ?Q ]Ɠ%U~_u$iD_ ' I2$+̪UFBR4R*"ġ?sos_^3w@$u%R)`o">$H0;]s.8 /^ԣО\HC隣xxt&03a&_L mC|I9Zۍ +V(+S]hS ښ#xs#,)6@P7\8ƻl^U|8s( `3#v^DG 0XRdK+4zEn~ӢX 5!e1t9^ǞQİr6cӥya@r#~3AoQ?|I9vKS^JMڬڑjqSY$[9iNp>;?@&I4>p\Iwd8:j"?Q;fZRVN5I2I{)`<&Ignm$ ojѵ,9 Lc멢@-5Fe ґoѩMPN}?v/g{σ?V廾{669|Q|>(qcf4 {>_{GX;GkY`m#j)x!Pw]?Jay觕9@ms*: pQ>lC0CUC(|,J=?|͖/x_oưg >nWۛ" XwAp4hv lq. ~Im%gW]U컬`^нە6`$z-mi䭕>sOg_;d,,|;1L q]a\G=q4]_;y趁B =yL\ ^ke@' H[[R5nI(Yym3;Ku73arݗ4F );su6Ni6OPm8ƾF4fVTC1ܔЩ ]S7&Cn ?wctod? t6^]uuKbd,.Ja—~%[U0&wAC!8͓R?JJNKjaNExlCU=+b7 iz=߭{ȱ$k"^7_ 0 *%iܣNJcL[5 w 8nKf)s[w9Cvk(>e`09H=(ƛ I扃PFF;mgQ,U* A<'Q>8%ُ.ne$ܘ0%a^4[K ̣Qxbw{FPי/DY> X+6Hk?߈}:fuf틻m;Q(Y B޻=i>^QPD1DA|^Զ?n%Q1Sߨy|r~(T*k'4FqeZ.F{D}" hLx İyr, @MދI[nq:%@䂎GX%uD'%ލ|ITgI%^a2]2s)|OU3XHxE!6HbG`;7BQ Ň>cBGF ;^­V l4$u Fek2Zr42bz3[_(+@dl$kUJr‚#|C CH?`(i&Ά|x!ڵڛᎨ$+B dMLQr)]^K!&C#KϮa I;7SB2u_k &bc蘎B<ю%)u lDv^YVsUoԴ>i:'Az뙐4 ?k" m\6r&$!6kܐYe%^`!K[kC3!eq=@:<<N . c_. >R<qrqUٚj#AZdimLThJUYjNGk-s/ ~8):yN2/|Pžjs9xaoN|@2$FqG`Kry_/k3^8s@{^B؅aWwǟ?}j~z8kç/{?ֽ3Kb^u:8LuzVhYF\WQ9@Bď'7 ;CAyy6T҄a:RϠrMf.%̖9p1\a߰S{0w &̚uyS~2qGNm]q",,z>c_뵭~Iw&ߗ7;?*ﲰLCc$4Q\;~&|㲈u h8=#|ǰpҍ%TtHT3m=?Up<]Ei,l4&cɗBYM_zMaGf!,D<%X'tMl?щT&ˈ]/9)` Nm :?~K-\i#M9KppgMEl?2M22ř!|cnHgsVk֔~` /EF3Y4{~ 5#Qx0".%