summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
AgeCommit message (Expand)AuthorFilesLines
2020-09-23perf script: Add min, max to futex-contention output, in addition to avgHagen Paul Pfeifer1-2/+2
2020-09-23perf script: Autopep8 futex-contentionHagen Paul Pfeifer1-23/+28
2020-07-03perf scripts python: exported-sql-viewer.py: Fix time chart call treeAdrian Hunter1-0/+4
2020-07-03perf scripts python: exported-sql-viewer.py: Fix zero id in call tree 'Find' ...Adrian Hunter1-1/+2
2020-07-03perf scripts python: exported-sql-viewer.py: Fix zero id in call graph 'Find'...Adrian Hunter1-1/+2
2020-07-03perf scripts python: exported-sql-viewer.py: Fix unexpanded 'Find' resultAdrian Hunter1-0/+1
2020-07-03perf scripts python: export-to-postgresql.py: Fix struct.pack() int argumentAdrian Hunter1-1/+1
2020-06-22perf flamegraph: Explicitly set utf-8 encodingAndreas Gerstmayr1-3/+5
2020-05-05perf flamegraph: Use /bin/bash for report and record scriptsArnaldo Carvalho de Melo2-2/+2
2020-04-16perf script: Add flamegraph.py scriptAndreas Gerstmayr3-0/+129
2019-11-13perf scripts python: exported-sql-viewer.py: Fix use of TRUE with SQLiteAdrian Hunter1-3/+9
2019-10-07perf scripts python: exported-sql-viewer.py: Add Time chart by CPUAdrian Hunter1-2/+1331
2019-10-07perf scripts python: exported-sql-viewer.py: Add ability for Call tree to ope...Adrian Hunter1-1/+43
2019-10-07perf scripts python: exported-sql-viewer.py: Tidy up Call tree call_timeAdrian Hunter1-7/+8
2019-10-07perf scripts python: exported-sql-viewer.py: Add global time range calculationsAdrian Hunter1-4/+109
2019-10-07perf scripts python: exported-sql-viewer.py: Add HBoxLayout and VBoxLayoutAdrian Hunter1-10/+31
2019-10-07perf scripts python: exported-sql-viewer.py: Add LookupModel()Adrian Hunter1-0/+9
2019-08-29perf tools: Remove perf.h from source files not needing itArnaldo Carvalho de Melo1-1/+0
2019-07-10perf scripts python: export-to-postgresql.py: Export switch eventsAdrian Hunter1-0/+51
2019-07-10perf scripts python: export-to-sqlite.py: Export switch eventsAdrian Hunter1-0/+41
2019-07-10perf scripts python: exported-sql-viewer.py: Use new 'has_calls' columnAdrian Hunter1-2/+8
2019-07-10perf scripts python: exported-sql-viewer.py: Remove redundant semi-colonsAdrian Hunter1-12/+12
2019-07-10perf scripts python: export-to-postgresql.py: Add has_calls column to comms t...Adrian Hunter1-0/+2
2019-07-10perf scripts python: export-to-sqlite.py: Add has_calls column to comms tableAdrian Hunter1-0/+2
2019-07-10perf scripts python: export-to-postgresql.py: Export comm detailsAdrian Hunter1-5/+10
2019-07-10perf scripts python: export-to-sqlite.py: Export comm detailsAdrian Hunter1-4/+7
2019-07-09perf scripts python: export-to-sqlite.py: Fix DROP VIEW power_events_viewAdrian Hunter1-1/+1
2019-07-09perf scripts python: export-to-postgresql.py: Fix DROP VIEW power_events_viewAdrian Hunter1-1/+1
2019-06-25perf scripts python: export-to-postgresql.py: Export Intel PT power and ptwri...Adrian Hunter1-0/+251
2019-06-25perf scripts python: export-to-sqlite.py: Export Intel PT power and ptwrite e...Adrian Hunter1-0/+239
2019-06-05perf scripts python: exported-sql-viewer.py: Select find text when find bar i...Adrian Hunter1-0/+1
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to Call TreeAdrian Hunter1-13/+56
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to Call Grap...Adrian Hunter1-13/+56
2019-06-05perf scripts python: exported-sql-viewer.py: Add CallGraphModelParamsAdrian Hunter1-32/+41
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to the Branc...Adrian Hunter1-19/+83
2019-06-05perf scripts python: export-to-postgresql.py: Export IPC informationAdrian Hunter1-12/+24
2019-06-05perf scripts python: export-to-sqlite.py: Export IPC informationAdrian Hunter1-12/+24
2019-06-03Merge tag 'v5.2-rc3' into perf/core, to pick up fixesIngo Molnar1-15/+1
2019-05-30treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156Thomas Gleixner1-15/+1
2019-05-28perf scripts python: export-to-postgresql.py: Add support for pyside2Adrian Hunter1-9/+34
2019-05-28perf scripts python: export-to-sqlite.py: Add support for pyside2Adrian Hunter1-6/+38
2019-05-28perf scripts python: exported-sql-viewer.py: Add support for pyside2Adrian Hunter1-7/+21
2019-05-28perf scripts python: exported-sql-viewer.py: Use argparse module for argument...Adrian Hunter1-6/+15
2019-05-28perf scripts python: exported-sql-viewer.py: Change python2 to pythonAdrian Hunter1-1/+1
2019-05-15perf scripts python: exported-sql-viewer.py: Add 'About' dialog boxAdrian Hunter1-0/+59
2019-05-15perf scripts python: exported-sql-viewer.py: Add context menuAdrian Hunter1-0/+41
2019-05-15perf scripts python: exported-sql-viewer.py: Add copy to clipboardAdrian Hunter1-0/+217
2019-05-15perf scripts python: exported-sql-viewer.py: Add tree levelAdrian Hunter1-0/+4
2019-05-15perf scripts python: exported-sql-viewer.py: Fix error when shrinking / enlar...Adrian Hunter1-4/+10
2019-05-15perf scripts python: exported-sql-viewer.py: Move view creationAdrian Hunter1-3/+2
tm*nI3Fjss40<{pPoP@?+xt_3dD~F)~5{!GfiE1K j93SsC-VGЉ 8Զ:4 (ɂHKLl?84AR]^cdFq.#o.<ڢō:Ȕ2Fs]׉Wk๹!ōP䷩o >rJ.Vp`8. 19Z'.L@#G n%[:PWmtˢS'X[LOTqe;@~IyeZw:/#7B61O!<@\kK!h;/@ƜEp=ĵwPq@cW<#G}U-vI훯R$y@@ GJYr6=pNy:q`} lT};8S+N͖o!Qc ./Tk/]=WpnȪk.ĂSd6^/.\YpD2Ԇ9GH1.vQ]}~y镓}}V6EZ#o~@av|I9XwK>ev%)$G j/@= .osz}||N&"J~IAQ嘽7AM鎘?vX? ;$y՟3]nNOSw-0!?rki1z/ctaDBbTuu4iN9>P}ζhGD۠ax7+jC!h1J}h/չ[[8{lH^]_}c u ~a9hONAn[7Zr:`xB&ms0>M.Ni0Z>$TMRc?neV!M­,EL))&pa .ACրYXFu<@8d(|~׼U:$p^uA:q@WL7senVd'! 8-N[c`DEe OM{/fV<@[\v4xg5ˌbJFZ8lN=OX. h5ն(7J+ $%1Rm9qF#yoa.:<@|ƬQl g"@ ߭`` <`X=bɮH"d$BX Ҁb^" 4B7نJfPsj\;33UxּJN|(_PW\ -߽Ttj43U06G61`NF"?QD \̩\b,^c~sNh4Qo5Pl3Pʂ v3;vy^-AI|)Fx4S> $GRavk`+C~{-\,A@ATZ}E%x?|G 0*^*҃j<# DAS9X*QpaG`m6!xƗƭR*s QR(o+0˜r;y^12zy0f{i-%F ^|hc,PҠ?ĈAap?aB1C%952=('"R˷J?ˌ>2.F{Dw,sSZ̪*K%*!\F"sMҞo10e7ssBRy`CQd.jO>k6k9CJT2'3\ᘌRcLĈEHTѧ@D/ԏ!ŠR&a>l`]4bF'VgïAny۹?kV7PQ:BɆt\;SR} $Cr7}_1'TUUGER u_}@[Du &="1YhŀcSv1+.Nq-U=akֶYL]-~}Cfk"l \җ\Œy{nnJPxқ¬o*n}i\_T-QURl r_ƍ+,ưMJ8 tJ?nj4m^ѷ|ZbO{&~p-W ^aWG:JX뱥x'܃+4s8G(:)g}0Vs %ѐ-̓l㻕#[כl^ PSn˜vG,F}QcƆ@Eùxa`Fe^_LRƍq0?~.-ٜ/ćs +& [ k%7o`x]pJ5_sZC޷j4g2z=֨/A$/cڮ7\ɞ:`5.Oתe5:@X C{C=fkY.5m뵢+!|ͼ4 i Q&! |g !5fBԥGyve-vohsٱ- UR I;n8(>/ԏNPC˟y%dG}{ f7"0N!غVQl(++wFґ X" דOEU@ 2=$DUqhq^xJeрZmzŹ f8-xasf1\6*3x/AY>}}MIy5s#Zzfk4;JdWmtVn-7[B=pL\\5  ̰ӘL,JqweSlj\&o=k$2Ra[+RaMd3.=j=Lhh4زc'2-'X^2-47|3kxKJ˷ aF a#ۺjp$qպޫn47@ӂ֝ɓWRUEq͟M#c!(4YpP (DE!X*6MdOotDifÉy -B4ܡū/&(Ք*3}L^,?}`߸J.FU n C0 m/wDc6ʵ'ǥ7dC}n!WVC熏ט/hpbV`IX=&m~*>PMMV .%x޹!ʫFAq ̍J>~{1~ov,<A I/^ѾTs`STMY? ƀYnH`k>8K0WjMdAYA̘,fæ:v:wܠ-V@ڬWhظ<;WG_DTIǣG{p^ʹW_ӈvc V `kirldos|e6_Pqj;b?DTi~ggIybhI.@ѐjSaV+*${3n@C{ 1A}' g꺂8h |!S6@Pl(h3)JnUƇT#3Ai %aWχCO0>˰ s>pMC*I$5+3?T#+ 7vskMő ETSx'yR; YkƬ{@Yތ#l`ެc9%DDD`X qenpmª0= dCKΠ+1A y o_>vhba9Dqn]Xmt~~=𒣞dO3ߌأAH dl :^^b.rjPSx|3,Mms']4Fhh!(׎p*ҟIq_~JkU@"<)EV7AćfdrՂDd>ov8P|}i@;Ѧ%.m|\x=J%!: ؏gd[jeHjZBSp;҇pE Ɍη GLi0/g_J avaʼn q_}YT,M"0vU, 9PxG)WѶS o5M(8!4:me!wp5"Eۓ}lS;<\yq\E͐ zNyc^b{l~ш.}}͒dzet@7`2-ZMcԺ.\>btYR4o.{O=2V" #x:ccoUZ}ȷV ]#AfS\8!gysDzjD=li=?='(SaLG;J]o_vWPvqʖ&SvMco[QWGl@ RјdYnjLȽP꫰@Qo'2!< vnzj,򣜎h2?.)nS~R3F5}!eS9+0wZ=ښ4eħ j?:c'{1[!FK~i?r>j黀r;MRRr9z,;enhbX ~W._}3 ~%oM6+ grr"$ohy,;3ȘhI 0B?lX6#LÈ>:L&"F%>^ZY]ws;p/Sc:5{ &f~? Fy붃";l6 7`!Q8B~Lȩ= dݩD{8@<<. Ć0MwtQˎC0 BR8ivo Ž\`", {4CZ$( T_cӖ F2S6X9`? > D0>5> ?;~+Uʔ{w#ZDX1X+ q[e_ƭ.$ȹs4 M'8΀,Ml_ruVvw<4Lkj0JPRgj! Fh@@3؂E_ofFFyCw7v;#._2vR G}6势\^l`sf_RnN$l|}m MR{k}Ӱv"L-}Ro:AMp4" n;ӹ#9i1?cn8rd.BvBfU_ q_ *\ZF, PG9 C );LA10?ڴqy C:x5؜m dݵ@[̮Z>ҘBP7QxDi0h}kLvH6;6GLޚ6C뽮igF][k7Moa9?f'7B('njÚ]A{8Sm mV+5:X͖@pp.^Vj*+'K+q   W> Osb<]\{J\B.#l{|Mט^Tޡ(^CyD{D``"9<yc+#{ʨ})_iڸ)b 1<1r}T:]ȫsD"C!-r#ʐT!<{yG[go:+^wSRtiչJvPRfT溶G%i2[a%'' xї_/!t婥nz.u[E*\.ރTD e980UGs9e.(G'6Gowm {GQn97 W(Exek~ ޹UF@Wsqw4#8{XBg/$yLR ૌwv#sՇ\d33]1tiH^*QDHl}. j*Cg-pj ܛ,/E2HV+^\/'aԊ@1 o>à5f\6oqop <@hIrEjW6%DA+n"Ŏ"z$G4aO{f~;.;nN˕-k0*ū8t-gLkx6`>J$_&AWYt>쨝ΖK2Y];)\)iX?yymYלoO-)X>7}056i4[]t$-LB^)X+K1̩nuCs'%l(ꔋ8PY>Ů4` P4-& zh{ݮc*(6? U lo:m|X.ҢB&xPfQ y'M;0sޏ}#]m@i5hç:Oðn a5iJ7,s`Kpu.?\6gR80CƊheY 3ڥh{:mn6#mv¡yQ "o,j(2n;޶ܵzp]p~ 8c 15J2@TVr H\\~ HM6̌r+Y:UhQJ#HH7:Zq&#Z 6>0K kJol`UrXY!lWf(aj90.v)W}s!Ǫ=_<^#F29$d:𧂸ˇOzEt<]8C%_%vV4CKp)(1?d!gD䮂N ;Q.;\;>R u;JBGLV9Dq僺 ``SD5=3Pk;ԯg-Ağ;X.r4w/C* >-aJroՉ 2L z/RrI{g4{4n϶͓'6>}%P =?֫ ֖$ _o9.:9 "x,~g\><;Mn]/&46|'똒[i'~d!c{/uC$Oi )30\i!:ǹHq񽓹;KͲ (8tHbGivLD9UEDIDVr))9Ž0A;e /0#b@i( )U|;4Ce wNZ#ോ#Z[@Fd0ʽt N6Eͱ5؏IT V.[,(?uS/KDߨBl!5$;qQUo6;la i$ Ԭa)3}jEmF^SjFeo}xa.L-]I)Qgf`%[Ӕo<g[l &G%Lc`6( Ǫ6h pyHxg;+z*r0e:SٙC9~v D4"#83:a. U{CJN̚Ab JB*RtS R]kVCyV(eR*۟t36'nςRPe-Bg_TW(跉!͗ "sM#_IQ !0d8oo<׿'z&$D쾯~42NLwOs(?A k48"ؤPa!p)F%j9ڬLcёLցxi+U}X3 'C}q`*%;_łH9ٖT'XRDc~D_/ IϐDpU|̳YoT>6~;%oN+Stgzrig/C`yK9A3P?_K#.\&xx\.do=ώѮ~+9Ib [L@SBtc]5pYE0wѬ|G1r=-470 {*vm:Ǯ- j^zswO1ug/spфP9QX OKd˵RX)9~eu:p+^S߭Y}ew˲ONl_x|SALPA ^FHU{\0NѴޣX COd X{| Hr\7dH bn|jڅlP G/qR;2eOUaPۛDcB(5~%u~y:kTjW bvcRI 7z=Ac.OlȆbk1&]wOeǕ|:BGLgW۪C :@8$^"Q=Y t;:<{ ?^=d5磴;~7? (2ٸ<, ǹAdΆ׏WAǿg c~OE\wԷ_ކF02UDG_OC^Ij V\[K(羬z PV%װEc+ #J`QG=.=*tph-;;dA!e<%+Rld=6шs:GXp7V| } ˼~^,_=~֌BH٨%z( Oe:BdAV gнb0E9XW#ZҤxN dՌ/ _' 0ڄfg /wDi~Vpoqg$K.8c#鉊Ke ?_HÛ4Ǹ^Ű]ߤ@Lx}iAlC=h"'l"W x\h2WNC b] ڳ>UDt2iIN):81=Hz ;w2 (-٨=AoC 5_hDoGhHh/pݱڣ`avCEZ!VEyUޭ,ACE1h Vlbg; !xEYd1:\4=bROwݩڣ!$Qvp/nY5#|΂bEq(bbпuF#/G`[l"BDoũPS袈I^{M%Zg;zo@P'.h)Q(m %|̱%JqjcfABPs"6['6xb_v/}S\%O`:cCwS>9z^=0p W# o` Tz@yMìV>! !J$ӹ޾kݴtM5x[uðD y5ULJ(ۆ{Y m_|uҮ`?IVP {yC zrZ|3 3_Y{ۭA0fN@>ub@RHB>1C$P3wq \΄+%ˆ^0`"@PG}ӍΩ#$GUd@_9ؼy[k?_A+el F0ǿu*U9r8c =6=$HZjf2[}f=i 95[jnl22ԬB[Q3(:G_ @TV-kk2760kppT̷]+q望VW!~ #eY.{Cگaɲ8czӧQиg DNac8/B8R˔v$uIϥ~ 0>P"j`XO~2<&Hp@ݶL$zK4Ul*f֋Ecl@H-p Fy mgW ?&9ee&h{;C&dռ[xݳI,`a|[u`gzZ}R^J)djcACZq5Y@sHU# ~+ǪaѨPv],YZ8! ZJn[1;)֞trM0%疐7 < FA>= &dAz*q&OX!D9U!ee+XGsPUGY@YcO#0! V,4tSڵ862"BH7b%݄X}zէeXR2+8BxcG* +do<̗~ T|\DeC;x<#_v9)OU+\XF͵U20_W^u;(4L-6YAE,ߴp&9"V~d4}>qaQ]dn-vZ$׿Z[:W֢mV{Fn !߅sP^0QoF>[jjcʊM_-Ъ!!P$U$1m3'^_]-e%qSFU0kADlUPisԔjwd磁6bpqB7 ZI.5WCkUبxB\)|C ˡԴM\'y.TʩFaqTҔ)+qyHvS +25ŽT`"5(pZLoy h$V

\ߙJu8dVԋZ8&E\I\y1Z!s 34#{295NyFpւHiB5}]s6^f3&SD,1 s1xE59qb Fi4($kJ`t1m&ڛ3!UקрV v [TH ~N5Qgv>Eua@ sMFUz"j u ۧR =+C N@Q#,Bk٠V6θj8ak1Z7>y]ٛc?}.噈l:kvN0o!ojvvkgǬ55dEلuDoJr(/G {rYpN>KȌJ7;Ǣ>gA t#!$F$Oi0ENz%bi {(F1J %C*fCń!a^DpB+(#?`lleÄ8s5/О) c =i[l%VS*l`nզiXTPCHuN0dNZIY!oi9T K3_?~t33GiWbDK@iKon]F2ƙ﵈? ZR~titF]I N *Ϡ -HV?3s&9[`}[%)lErÑK_Z9GʃqMdTD40N,wo3jцǯo_?>mݤ`a;f cNd JQH:H@HѷTy68=i>~u&m~!걮LH4%z㮒|V5= =QQkb`ei  MФ_k3+3U-tY&!F|s&wɪn̄IKlj;7)'0>i(xju3r/x {Q#L/x$H8Mjw]1?G6|ѤC%wרj~Yu@݆frhi @pzrXIDx߃ nZ;D~3{9=% wY7`\s/}䒘+}ݛisܺJ \W_48,_ywL=? Mׄv>幦QnQ`P53N\lW^Nm^u+g:Ask6|1jL€lz_hMоݠ!8/)2&h= )̾4+ڣ^Z ĭg;/ÇqUEw1wNju:x[" 6QHha7r{8( {Y3# L^|!4"[ H}`JDR=Jb2Z;]qApqˍQOC~M,1F  r-7G^Ƿ1njOBfr `\W QEuf!<hP6lUо{ R$A)[Dg@^'ro0%w'[‡=.&q%\ Uz8?\5;ml;s)Ըs %W;b*-aNc3`@n$!ENE84a !Yă31_ăeH7̳hk"48($9l3 E$ ~;o$YJ{y5$ 7@I߇8# Hdȁ Cdop<` $a #c4ƪ?GԾYB#(t,!{fBeK'ͮ:y!ŏc@   P{ .dh@ǂi"tZr,&/Kla * $iS9(D=II ޱ˾]IATs{I<xO:(# S`ه5N#s)d@~9 0d` ^c4t(݀Fe~׺YK`ˇLhv^_}!4t 3^CW,1r=Jz &zB 56 2`?c ¤ {9l递Y{wUFc7GX3rkR}ߪQ},$+]R0zjwo!zFeTFj 8=u+Uf"59HAGo`fWp䉖#irKbܴK$''6xQs8 FRsƁaO? k}]0[tRB^bC.bj)y-@zI?`]_#r- RJeT 4U-'C 1QqDnzB^?Y;޻@\L[>V7'uR<1`;,Ut`H2]FV]K筇<Rw5H牾>  QY+]Y$1&@ق5j5g_p(Iq{/gnca~YD =%ZϴWWMyF7pݔi2ޣ?r|װ`ꢍ񤬚9_d;+Eg`v3}BşgXqBA:Oi-> tE8ArGj?\! n/u6˽-:q]TW η}@i|I ء,GsA|˒_M/Tv^BC9 {vRWCNp:XÉy(~KM|l\dY+J(8xmbHc~gqdG񱗏DUUtmٱu&q{qPn9Zb_~3(I#e7]\dL"* "7,w3TȢ8unbs; a#\:Fa`(̂&wՆQgM!=> $1 W8/GOAQbURM;Nfdw`Jbxݾ5ۦg2w ڣp:P1M  ! }{iq H6z,%Мwn[=dtRm0/,2𤷼l{,t RuG#U \[.)10qA2Hr\oOxz(@_B|!@> e3d ?1Ą$L8캡COjC$qP Cj'c^x:N"<\z((:MNohE"yT L&9 s' pP}+$}xvٮuU@!~8U)8 e, \!qjOΎln r eqa“A`*ހ~D4ɕ6/.}u Bhd8zRpŢ@)o;έqТ'E=@Qj910"?<; F84y yȭ- IjAZu3q р`RУ ynk#cW-'9kh Ar\Co6lt L@mbwb]e LT%N* R2Jx1<A(L8oa-l.!DrKi^͸۵3>qCK檔i=%۸ 綝7,p6Hv+єF+.Syv㾷p6vX70oaƫNpKu"+|2!i%xp 7=W9}N ȁJ5`0ȪiQK(IyS}H,v|P/~[O0DH祩c1@pG /3Q}`F!L H8Xw03q-Hgar;ٸ`d P)EZM* $os߂Ϙ>tpxwF9xpC3H * >G[P oT ۾wQ5BpZ3>I8yƁs".~k.m ֫=ϊ m HD@a V9҂wcε9tpYLN8-5|Xt?anGr9ox̃M]]pͧ+;f*fF.<=Dֈy5< $78s` ]+V:F|K?d9e=#īV]!%b L rX\ևAT 4<+Up/ {kQGĚḁ9WQXWY ( y 6 ;1i#}WeBGO񁨢o}u)[=:r I,pzW|ipkh"GH!2@lM=xL ;zF8Pgb wpc88[G!X P3Y;7#xbM!s\fUj !! N,V>N ˗cBxO՚@D/=S(M]ld%.[4? ȬB GN`{s0x"pym=܋AMXql3{ʵO սq``ᤆN2 ]K"hmcCvVhi${6k9RlRXʀl@T$MbXVփ"H-5PD@Q͵^%0˷B7Է;U UUzU8f3D՛i kC| {W2ϙ;v:۝Ӌ|-n.B08F'V75US` YpHIA}Ar}p߱d-h8P_ڸBp,cڪZ D}/5NywK}opabl2HL]\ՋGB p.D0f2aIRyQSH6ytgp%(sq͆W{a;9]y,yx6  ֨iL$;tz~쑮ZEDg۞)p<3Hs{441pg,pn MV0M.ё-g ^6͌lp- }gÀ#ۥ$.i"+8 `8p myxMJ|z}T Ljg ?/:dAv;QK=wJ_m1Gns[T['G;vTv=ތn}J_׼ݸ2!LG~'?j:K>:_qκ:3 c/bhH6қ4sG2JB6 -,V'͑ "8MQ`qXRש||F+)7Zb_r^mHq ~H,t?-]5C||G:w.sZppbD0f. I$ſ0) d"e_Gij",!hm[T&:[ AiSMB%z-_Ӂ\Cv}!?۹OA/8Kh5 7Z^|oߑb<I7 \7F6#Զ˽/֡+ mX9  A3or~Oש]/MҵeA*_ѷcp&&yfwugH ]w\a Qq!5Jk.ogX^_YHkB+D`Nf%w8BbÇYEz.v `s$D LDR  (#6Ј33!m^ja'6$Á{{WҜvژMZ+|7CrY0Z}e wQJXPU-bm"12&)scwˇ\!90NE*M ]w.zBӉ@X18!Dp6AД7&Wo# w"@ccyà@ H;s+Xɺ{ XkJgpbsTb ,U}lԠeC<Б 9=R BM>WpBQUREh?LEܠ7CJ &@n` " (s$vB3PqJhV3Rvlg{'ok??;.ʐ@_YMx 9NicM2IJ sRR5f/ΥY*ua@yd9au0kat%bAURԥWTDM2<;aj\!Fı,n'hS*eλLƩ@4u/t1/7c< YGĂ6_tYp,"/aϣ:ln7>\`Ss]ֈ]|xȀ6cqQR)m4 7bXUنj]h"ޚ7.r 7\o$m8z H6v' Ɋ,c971? d;-jژmXq΢;0qƝ*B8 F߈,6̼STICEo9~%(`P&?M#g̪΂=<8/=Perz[{ uG` A*b fPI;cL/ qv^HX"[&T!) rlL n -xz0旕W|rJp1s5d@s`3u,7 ռBN~HZ9bs&6ϝc6=םòjȡ%E g(]pu =6HQ Bzb/vl; gv؇B#^szmsD=ЩqSB9/c 0C"LdeD[f0Q֕@9lS۬p@CBPHΡR:;-xZ$9H@R֩:Sz MO`朎PM;f~vwx#,`w%4@1i$GȸHWC'dggӑO#B@bc9vѰWN;@,!`:S^xJvCn!24DBfyr\ED?|pa@B2ft7zJ8aت6χL (w-؅= EXH^!Tu{gp 5?a??zxtyѝkail:-3im޾+awVɮ+H+ՏIpW9N\f׹Jtƌu92}ZdVɥ3{=_ٔĨ<}6=? !l.\\z|)v"awF+h7Ʈ.?_9ZntQC,tf~ϩ<\ GA1Tr|1F_{~rX+IP?"癙?GY!qȳ5_Ϲv @Xbj (j1B݇SID4mƹU QGh*$[/9vQ~A@ ѭA6 ?g ~/ekR[ 9_;3$@w3[ ùOAw_.u|1嶺8Lqx?'FW9Q԰YWƘ^nPŖC ~4x)ᖉAUH1 X #UG<@D0χ2p/O˪ŁC`g FPb P[xU>N5~a=z\?wm^pʃ?e-aހ0_2/[ʣ\ū}(v^ͽ㘅yJ Go:E{vajS qjc 9?'a{yyA`p8jǧw:`E0]ψ٪^a Y߷vB6*|Í7}|6EuyԿ'nGJY5@.k\Lq Ń?Q @= .QqR *?daPSm$scCޜP'i<^]&Ɲ _a!Wk90+g1xqgڿ_}wvRXm4Ng (g[}qWfОo~(EZW` nBQwT OXnkg=M ?ִl!i>hpȋ\?rxVX{, SoH~CE^x$)a!0Jmϸ EQ˕aN\ɈAxO@kmmmgr쟔aQhQ Bi̚+Y2 K .(:P:\-r :ZவF@HW4m}7x_>o ?e^qVCpqyz}Td=vM.;u$;AcNxtoG vehf}7z f-{?S`vN@fUψ*G% >r:>\>#~V#ў,*{F0Էs/XfDƃVu#Z9q߸8Bsm{śdw![5f(qV'vn[9mDtsQCDϭϷВr 4ryT[*Ie9 >K˙|)`'c 2 |>K;k ~xܵ e{_!Ls:<<^v|udy)aFW ՗w)mDd-b87(Zgz$x^M/@U~;|u2BHzqya8ܜ`kO2:ߊe<Μy)pߺ 0}ܾ>/\rKB=J۱C1-`*$KYƄrG W_̼n?N{B2,IO87"]G_7XMǓ3ΚC|3i40)T;zpԆ/x]>gRT/KZ'@c=O'lj03m+=eBL{K# X䈜veU>.pw`ǖ{AX ůvSaAs@">h(h#UV!][ {{7wdSȿ@ވ= |8y(2۸s`5}ޟE.KzX;kTy'~hKxJk&{3:(a!ѳ>D/%/٢`vEB%N1WO!/wV }>o7n~'n=[5 B's"S;w)Ӄ=&#+2L!t'O\ 7d-[{Jo,. +QNz{=02yͩU Z"Y}Tr DD%8R;>@+*8a@el{2 ,"mϨ.v :/Mt^9 Hl%ZY. J˔6О{,BQ# wCW&:h&%‘^@CŜeCP7?OV=4^ӟn䤂P"$hW(ùeo!5 &ETiԽTNBN|<. ; ;16Z\vb&o1RZlDAwbK7⩯BL5۲'+nꁢ,DP"t:R׶X&<ւJ QtqM-(܈3&տn¹A8]e v^b@Ow]}ENJ 0t.7$@R$c@ +"Dk㎨-9^~Lo9Qh[>uwᨨ̚\N{vXץf#r@kN[1?m^!Qr;,"Hn = a:^ەzSd[{Fɳ&.Lmm" 9DaFQ?w2D=Ӆ"=+;O}6'`-a]p߅_7?30_em*_N%3TfN E-roPmav8Q!j+O;;`Z4zj,LN\z"*e[MXJ2/Ti-> -p{2*b©dv^OhN"8X׽QjX!qcxVGl(eS<8՗B/2*4š;|]Y mPS@R ][yBE<&$)'8&7@V:Lvu4Bꆫ7KW~,KX VW:K:#j◳(9}S(z=p8P6 m"S"R 3v u@r\HQ.N*dK^]oQ_v<@E'݂'@i6⤈&AгZa-zhxk2,,yG (޵9UV=VS춺*krxU{C"6U/?ⳤx] #t1\i+./mx>8>̀v5?y;`!~4!ϊ8Ƒ[\Doq:l7]=XNs6ۮn0D3\LUPUI2CkMӑ^Q`Ͽش-v,t~&n:9l1ۊ/Rjw+hs>Q(0~^wmӫأz'%LV6 jq#sяvVc.\\|H/^:@Q$oUE,d(p|>p ^5$GwI1~2Gφ 'k%\@,}?a/Vx3_!-fLy jAqD$rQbisDquN|fŨ4Ti@4=@w=" Dg 1ꤋ-rGF+lPM Qu^>#gȸ_.w#CNκSIR&j,{5o6o[購k^Xgk_#ʬ(a ZNpZճsDQѫ\5,(6a[-66TozI:NMQB1}ʂOhUѿ_׻l&d%tju#&ϧF;+6l6Ys]~VQz̩S0M\ R~tH[A_ oEBڼݓ8vPT7Gcn?˃oWA0/R)e7[+ZOuvlYc LI ,YY*!q)}*qxq2LFCpb;=]ֆg3y)0H0w} &5#+S~Ŀ|~ϹuEl}T~3͞.hAb%%A?*dsBryqG+gd1 u4X0;|!A5byQ;y:nyaA~wi Uj 'G JtլW:B@.$aaUaEmQq |atHۗ|_%0&,YP}G@D R?ߏiQA%l}^oC|lyYX@ed(|X(*xZ8K_3wu9Zqe]-| jm"ވ7B! H{Wi }޳5b M'BCU/_sI|v=Wjʛ)S&ۓ[xtC@]y,eR4y#U{${?y446WKKh}I=9sH=' ]hҽRADA7UosD+Lt(}G7"T'q\T8mu"I68RWݛ:؃ֳkdͱ$LgگU'';q=p `.1LB0|))w| C eRL X(  UiO/DK?/Yv\b<8ÚUTe`FXYvV1W6bš!^Qc=e .4JIG_CX(4['DF ES"$k|˛DVD "I$6a؀㭭1Y4{ }}?On6Ѱs@~'o^sOx4~CW߿wO O ߇bA{K>;7}Xt`T>=U>xc˰O1!aGoB[u=c[ ٬~gek_gZ.<9`Ψ5I4~v ksp~E= \?/݇8lGag/?G+Hqx\݋S)xn۩><(쳮d|wpf f4 ds}x^QYϜ/[g2~YZUWP`)Co{&OzE 8>xޫ0 C3>wbsyx>c^RvfÆLHJo {''wacE| 90@g4FH53.|*iM "t׍)CmN): U:!I,EBChE<8pΤ6+0l볾VQ5FcI&*%wz Ff_?zV6DWYjK:F&??GEpX GKʡR\,s[g b((#}܎EϥQ襖ie}0nՀ$H-VDjxl8>(DׅZPK#;hqMg@M $^3 X8Ca;tG`sBi=H > 6~x?Pq=MpDɑ/Ӯ.6o|\L+MWDA{Vvq/\+d4Z3/Nxt`Y`$53̚b3&{%[K 4$U `t֣ϛҍgHΚWڽC "p@eNŗ`h`ӥ޾ p@j)NN574i}b|_:XޏW=`ps9"E㐧& /@n~U&x|yk S86𙆘KHdȖY1اK&1hҺ3Y  ;:f Mð7kCYx@5a /v@< v¹aΚ[CXKv&Ċ(vn >7|.sZ0!z ;3r+@,AߙyW2ζC! J >8j&]CUue Bp71F;orj,?o:])E.xʽdgY%tyc`n44,( R5!I,*"K6Dv5$7 t40 St#(ˈag8D`lScވL +Q!!\7w1|R tEe=cTקҏp"կS Q/k-͜mi1bNle 9be3^e.}8`7-p8UՋVT<|w한v]Z3S(.Srl[ai A zw׀wvk{[mL48V7 ϴM-ۖC=McK-s/A"![XAG[z?cI NFz}-! T:_wu-oL_E^H0M䓘f b+üli=ݤ#E2N>Øl8ȏHAD}&’+ElS몋ɐ^Of/[c `žus ۭYnhJVL~/ڪP OS_a0TڟC{ڂ(Rezt_͆àx@ܣǝ҂[zn_{. 6i>PQbCY8<fX@D:'.1{ZCUib/'J>('uTG\F{®3w7-^o{+<|h<~zD=/YF3 B[EK.gc?? vW 8؟|}(m۱2 2\~h!fO,7G͝7T- t@%)7 5u 9RW~$! 8}ŵ:dDtx5ϤqGop/ҍhA0υ#ZY!p TnG }Sʹ>he9 :Tٌ8A@I$| =|:hnTf=!ϥ2vT@Arb;JitKɏqnzӋ%z_#,P1x!ϼ{vvPkܛC¹ӧGA3FΗ[)\Y>Ω̆=YYci>y\t0%?BGp<;w!g@bQP؜ XL>N>ߨH_~-@ bhӠ3x2)-PI - -z#sn-YFdRp6Vd@yTIxej05^t$I1׶P!(W;a=aLňy֗f4@rt4>ùv =\XPrM t^@dd&ٌL[^}s@ #$* @UR#0 TDUUPDХ QR0HDPP 0&_NJF @``!b)X^R ,Eh%NH" _l$$! ) B) Bb"jbPDQ>8ۈ@;*VL 'x!v=;uxԔjj֊Kt1Gs,PD:Ẃ8 TǸ*IY{5[,G*<~Χqڀ&r S5O*0a݂Puf[[;bi:GxmZ;~fk=y0LL4Kv=:>a3(IU ?ynln=M@m.M[slTMajm{RYfMyA2LX6VU>N(ࠐkMHMJ7B@RMk5Wx( l:wO4֙_x#Ð5͈}{8Ff@\D  S %!Q<_4 NE+nKrAfi$ mFNe>ezGÿ_SӜcs.i-jĠbPUN;L iS;F&JGNO 0n>7}BwdM.ﰱ³2$KBf\&?v /mBDDP!@ &7y'eQb'! XӶn-eˁ@wջ74 }@ HCK~m^jxu G9< ה x"t:RD3/xvC1BAt PN%kw-GEsa)y IU]Iֲ^6q7uF!\<_3OڱEkkFbh,f~0d% eD &$PL%2!;;]2{7bn(n\=uE S3HU*:uuƾD&g%ׂL-L?xQF2NP\K;!ZSK~-+>S9Vpsku++hNl 22ݓFf,]hAf;* %ZZfv=OiPxi 2kJ.q`!BD3Knv8ծmv,Aۢ ! l p}P/¢E@?"-jv(k5x|&L邤a`/=*bWka\>R(G";_ q 9޴I dbBBb1DA #a2}--ROl] ԇH/\D7Z9%T`@J|bҾ9X䐄'Yn<3[[ƒ.[ 'w |K}0PpSW+/,;)=Q>YN6}W9o?]?/'ȇ+3~kmݸDiDΨ(8b~dUe%Sw`e"bB̐΀o<+1:}M޿וK/脍q!֍Z%_Oj7=!n_OQ?PbRo 2,q,Mw@3Mgu?mT^>1$"} LyF7"[xL-iӾ;ÃKg{&V!6: @Qc!/1.:T|KȾĊ3>[v L V"UV z9u r6}@Q(VT[zG+ VgP3=O-$*۹ɣ`{6W=:♙)+3˭{]`}|K\o3)n oq=M^$@|ADmg^3 d%@w9~u4<\g|E0ȆmSY]$P, e%gzp9[3e@%&$ͪ-CExlzy0znO< .eG3}g\}l~$ 1r2BkWl /`Հy3zVCeMʀ=Ϲb%zd{ ʉz*eME]߯GD?gx/D4LAI(M袙kJ.c~94~/y`72`,T%%x:)S|_kUu4g(PH!읛g] DvŸ’ֶ>Sv#fS|]ceuTom׼,Xyu_zڞEOx5_DmysXoPXrdϫJTĄ`R)O`[ !zـQ>IN]'>L0'W.r_͐EtCpX^i裃FQ{z(qxA\GS* H.&[x8b`s&֤YdO& A @1_݌F6a }9Ѷy 4+0J~R)²}U^Pc`E]@Ea`F@LY}쑥/}f dSE!sOSOoDUD~KkQ櫭 48 lơm&FR70׆r JI2'1Up\LNdZupFymļ0S NAfW8m6f! ) Py퍾|wywD8Q`_ [Oj X\8BOE׿XQwf}=_/4>,zQ^c1yxgb$څsuwgsB>ӶY+CfJ-u()5)جQ=Яr6>9J{JG