ConsensusClusterPlus/build/0000755000175100017510000000000014614331505017061 5ustar00biocbuildbiocbuildConsensusClusterPlus/build/vignette.rds0000644000175100017510000000032514614331505021420 0ustar00biocbuildbiocbuildb```b`a@&0`b fd`ayũyť9%E@J/(M,6u !%E9DZN @ UAT .ּb4]R RR@g;<E T [fN*ސ89 d Bw(,/׃G @?{49'ݣ\)%ziE@ wConsensusClusterPlus/DESCRIPTION0000644000175100017510000000137114614331506017473 0ustar00biocbuildbiocbuildPackage: ConsensusClusterPlus Type: Package Imports: Biobase, ALL, graphics, stats, utils, cluster Title: ConsensusClusterPlus Version: 1.68.0 Date: 2020-4-24 Author: Matt Wilkerson , Peter Waltman Maintainer: Matt Wilkerson Description: algorithm for determining cluster count and membership by stability evidence in unsupervised analysis License: GPL version 2 biocViews: Software, Clustering git_url: https://git.bioconductor.org/packages/ConsensusClusterPlus git_branch: RELEASE_3_19 git_last_commit: 8fac382 git_last_commit_date: 2024-04-30 Repository: Bioconductor 3.19 Date/Publication: 2024-04-30 NeedsCompilation: no Packaged: 2024-05-01 03:13:10 UTC; biocbuild ConsensusClusterPlus/inst/0000755000175100017510000000000014614331505016737 5ustar00biocbuildbiocbuildConsensusClusterPlus/inst/CITATION0000644000175100017510000000104414614231274020075 0ustar00biocbuildbiocbuildcitEntry(entry="Article", author = "Wilkerson, Matthew D. and Hayes, D. Neil", title = "ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking", volume = "26", number = "12", pages = "1572-1573", year = "2010", url = "http://bioinformatics.oxfordjournals.org/content/26/12/1572.abstract", journal = "Bioinformatics", textVersion="Wilkerson, M.D., Hayes, D.N. (2010). ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking. Bioinformatics, 2010 Jun 15;26(12):1572-3." ) ConsensusClusterPlus/inst/doc/0000755000175100017510000000000014614331505017504 5ustar00biocbuildbiocbuildConsensusClusterPlus/inst/doc/ConsensusClusterPlus.pdf0000644000175100017510000077305514614331505024406 0ustar00biocbuildbiocbuild%PDF-1.5 % 3 0 obj << /Length 1703 /Filter /FlateDecode >> stream xڝXK6W(˗^%is(Pha̍R ڻ$h߉IQN\*Q2ֻ60a %C^(O7yd%% 3%W\D^&լl'٦e  {U&G΢UgugKyϵ3R&s:[^[gC(/j_HOݷHc GC`xO`fIpqŐlf'Xht7֐ʼn΢e´a=j7ܑ8b$-:2R ƓnCMۨ2V6,^xNd&8O{{DlGK3-h0 T/*qMǥ7wDaXliE5@ɀu`1VK So;a!B0B]؋ƅ*K`R iDI^x oE;,>-kٍ|(tCx>qm:i,WH[lWΙe 3ppgYEwƺO.lyᬪUJHVOR׌׼ }1*KKYJ*jvV:ܞD.#R.f3iv:D1j*{nHfdѦnBY4,bЊC}4(1 q{Gfz l'@sB: eu֤DoK$C/m]$gP(_aKX'[و 1[atJ'%$|xKǞzPD!3;e[tϚ1, +1TZ9Ą-CTM`Zú bv'8Ͱ *j01]xZ}qovuY=AKi(OJl{0a8\r\{Jg' ĞV }@~!B!'W.czK8XKuwbώ̸wnw '!y3CBo!sq5ov㖟V3L}C*bZWQD@>F۷F#^7 1hAx vO)teNXpG"\7^zAk xnN%+x(7b.xem"10 #"~{ y$'~siV j|{ endstream endobj 15 0 obj << /Length 2035 /Filter /FlateDecode >> stream xڕk ) "%)ؤ= m-r8p-zMDCno;mty|04rܿ2)+Sor!ݼd^ne)tvrg;qp^fUn74ycA~f_ֹ+trp\B) 03}`<'71>,:w[K\v|ץBWqZF>ljO5 ;iɅA ݧ3s|-@`X:ʆe]}c4iHeN}e=uM'X^:\yV ޡSyAB`F,zKi.?O ?ܚ[\N`s"B~v}4O/˔2pp](wIdD}bt ^E7[LVbs4SE=m)xBqgNsytCDݺ-nKy~:0[KRC>cfX^p{tGXnr}^1E<#8( ljՂ\I@]v.畀HIU Gb Ně,ٓݺT@z |]/ )3^$BXxÿBj|]O-15D||wzQ}yj6{tetEY rTdQgb9+RbXުG^J uSI!Y*WU M˾UZ5XsH)Rt^(S6N(E*a7Bq٫A Rć#2' f(R_צ4uukĨL"+8Y'?8ZGq&B_e45S8ML w N"["$VSY iϔc{(J}u׬U|x sB!V0%Uj sۖ[~D?tHLcxluVf;RV]_nL."Ό;x e JCϓ;t(-<9a͹!@[U=R0if|8 ĦcHIڀ$ WouUy wFFayyiM[Flyf舸F'Sy ry@Ld +L[wcΌɰT?pDsaJ߆ۅ􄡦CRDϼJVPQxe>m pMǽ.,s8TxyL*Q]{=(k7 9 5hRqTw(m13/mk]>"8Qo&\ ?$VJ_yP0U^c,ld_DQQ$;`j/[Nlx|AM2ae.<~=ǓQJ%|eZѽOAR}7|_ߧ'18C2,bu[\.BtP3[p&"Q^_`=Kr-/Bq%2zEmMFWut0_0cDu&QQ0xO;wuy!X}AĄi/Z=zF4r1"~ؑĠ;SFG.嚇/2;S;\_5F,(.(=8M^U3B?> stream xڝXo6_a/&e`U=~`$"K(5;i[5mИw/;͛w~6˼,f?A%q:h)f[GT+i "Wesu#?sv&1$RtnMJ%12(U/\}B.94I[[6lɹE&fP?E=cG/Jkl9.hi{YXGpXsD{,sQ`'P O&0GTb'" T E4 CQe%ʉߡf9q)Mac?ޮJE+Yʄa4D/*9}Y?2I22}b%[My_ ^ח'#q(;ZCPV9d]`Fˆq1fXSg:{ Ի!Ƣ艼rvt݇BǢ\#*:}$5攬ՠ:xdAW@C[_D#s"p]Y?ָu7pf^":5Q&/`[5-aByp?ܶo0Ǿ9B1#\\p^p gӤ%MSnY%ib5uCA*9Sִb ކP߶(ԳxӎN^eqPEsA <6D2`ٞ?N1ξ~Ybw;#F<Qh\G? rG^|9N!:]1聪W43.p[X Gc3j sH{4N郧c'sm%s x]eUXI_Lܓiz' W*jIS mK'.`eJh:K1cK7+? ^.΂DB3ѽ17--%:!8mSm`xo> xHn_Ҡ5ݖ"&0-=?㎴u9:fV&u $ q$-"rwGAs(Q0, a(h NJ̒q(>ofF1yP- 1$Wgk::rMޞ{z!vHNMże3j6`}z&7݉ZM΋:=)f*<;&a.QIfl`_֢A^tz6AlB+JBge$;01+ӃUDԁ̭OyIBidV[I+ ۪C+sn.q"S~2`7ːj8$cN}D 8g4A-РN(&K8`/:ucjD~8hO׏RGEߞI!_pRiBZ;DTyWV,fenh:8}Ł(xB]+xyAd))͛dh endstream endobj 24 0 obj << /Length 1085 /Filter /FlateDecode >> stream xڅVMo6Wl-Imm](5zL"T F~gHIhzů7fHϫ1VJyƄ(3Lv5/|vk7j^Kaλ6v6T{}ӹ;v>rVll!D?=cZs9#G+heKq7`e fa`zW%fTRɾq}ia}D {F H]ˠhR$P'Јd^uܒ{T;$RAm(E]Wvq!`V`()mW7:lI]u>ף;sW7r^.bc\׷!!1n3"Xy:^!'vJ^ &F?kx8.ixiI(%4b6XGhir#'ЁU PqBsz%52ϪR衬YbV"TjjEV&B6XdYm 'Bp*2ʫ.U$yA@m> stream xڅVK8 WVh<${ rk{Pl%j[,OfG`LR<7O/.XQyZUTexKlF͐&BKRd+v,=)$NNMdx֍©N&'ȁCee1k ^mX-cg,viNɷ?.fYZgwqcI <۪ؠk 9_拾QW·D`׈4C5W?A2l $F{@yxGT(~?wZs0nʼnXMYmFIw52Ê2Ft8-^]͊-H<4 rV%M'EV„Y,I^RwAtSp'\TfGoc$FQi dE=LNvxCƎ/oyzED2YʴB" G?:gL\Ƈ؛{JyUo2 ;a\,|;LR[yc: {]]UU3qG#Q<|AϢ?[n;ϿD>^)c>][K=DlHDA$6d#}b>#A pGU7",@?W*V%d!Fd"+>3qTr,JɾTR*nYe;OQ={A,RDaU"&(!6WM7 *FZ{0.`:HԛN /0gu?N.Yᤈ> >> stream x{tw( m ј1V*_ 60\Ճ2@'gsրN(֢8Y2K%rX)ј^o[y=jzOBfJݻw|PJ\S0qD]/ @=Yo׮]3gδX,_~9gn2./ v f0̙qǛL&ͶbŊ---ӟFm28quֵw}tΛ5k֎;Nם ?ѣG 3g9[[f`0̟?8p`g͚uȑ;v\s5Ç'Ѩv|8~'rJmkҤI?6`(..nVUU=z޼yJyM8TJY`0 _WL0`0ѯn|Rj߾}7pC߾}m۶lvީ|R}ɓ322 630ާg{gϞ?;222Z,GjX,Ԉ#9眶Ǽ[w}d_e˖ hε}O3f̈hC=|EHIIv|nn_F?_2 7tSEEE쓝>}矯*((2ŴiӔR)))w~wo~sҁݶСCmӵ7Wh4>޽{wG#Љkii9rRj~駻w5kRs9v؉'RfyÆ zRRRR=hߙJ{vh$ъVPPаgϞZ)5th4ztԂ > 3bĈShghJIIYjՇ~xWjÌ3f֭V֭Rj֬Yhk(Nvo?d/ z<"~߃o+PJ 2$ tභSJ|'ڝSJv7nܸm۶kGW]]}^Z_|1eʔ)S|@ $??_)էOwu];@+Ѹq#G{KWZuСlٲe˖-'N~֭7|vٲe۶m;;vNoގI&i,))nꫯjђѣoo}ر>lJ)ác>v}WmlܸǾmoCԤ.ZHݳgWj֭k׮v߯KOנKѣСC^5jݻjO]766:t(zذaJVԀO|zAMiӦ1c ={(N8]]; w'v,mѫW/m1jԨvQJo̘1|5\ӻwK.ÝꪫRSS;8஻Ϟ={ԩm={R#F 2$Λ}pҤIbȐ!]tQśkNzѣGǑ#G,o۱c._|[uVJjRヒsȎoV[w^M>ů7|->V{sxt.Bmci (qͦn޼YyY)(ڞ.G>|xذaVjmm㏟} 6޽J;FZZ[[_qZnx~wJeev.,{y>`0Dѷz_;Uǵöm6eԗ_~o߾8o>|pmyf%4 555?YK#FPJ=C;wܻw… ׯ_; 6lOӏ> ˗/_zRE<|ȑ#G/766feeiO.)222Nhljjv322 KFw~H/+++--ݼy9sO-^_bŊuX赴yCS[[[oծ5u]m1?fyܸqJ{޹sniicǎ՞]`bHr^?mܸKR/}>}۵X,_}v0u]ΎFx!>GFv$%%%Kڎm6ǵ' ;y;Zϟ1jj#mkܮ]>A{pРAb1+'d'NL0A{k0wܓ Ǝ?z쩽\$|mkb6O L:O>q\W]uNmw̘1v/yp,\_WsTYYh"֧O'xov%K֮]{W{7pÖ-[nr-Z4tkvӦM?k֬ʸq^oAARk֬QJ'55Xb͛Rwqǐ!Cg̘*))?ǏߴiӤInjS^^Zlٟ竮d23f͚5^ziY=sYtĉ>L)5`+Z[[ظtғw NA[nNpdgg|{キ1%%%8 1Ajƍnرcg뮻t I@ACC ---Ç9sf$@P\4E@( Bh@P" 4E@D~'ɧ} H\^jYRܿ΄>}Tw{M\4E@( Bh@P" 4E@( BhI{nvz݁v8 Vkccރ$3hg;MMM ND~ RSS{E@( Bh@Hf)))gK84E@( Bh@P" 4E@( B%U :c@L&'AP" 4E@( Bh@P" 4UQQa333hۭ+W^x[rh)x޲֎;-ZiӦ]vUVV: 9[֜TXXXZZzӧOݻܹs׮] S]]fV>ڪuVWW|qH @`0M&S0m9믿/[:  9jP(d6c[O>-b4O;4c' 9Y,Zm,Kl￿馛|>߶m,\ψ!%%%J)9r饗9rرcK.;wÞ8$'xnw8s\J)QUUue-X`ԨQf{k B{஘d2?{.%@P" 4E@( Bh@P" yQ({=A " 4E@( Bh@P" 4E$ ݞYTTFn^b 0`ܹMMMzM1 9E"⚚[VV:pmo|w^|sv@HNV5''d2ƶ/}N2F9;@$:ͦVk}}}lkԨQG)++ ֭8q>#v&7`ZZ6L`0e6ӧl3f4c'8fs(֡Pl6Ƕ}W^ye_}W\qw4c'4dXjkku X,ԩ.v@HNNWWW777*|>_8+z뭽{?~^;vÞנ$'xnw8s\J)QUUu 7޽{ҤIHd„ ˖-{ؓ3{v<.+&>@!8@( Bh@P" 4E@( Bh@PݠA} H\^zO584E@( Bh@P" 4E@( BhIngffEǟz)Cݺ -бE"⚚[VVzZt޼y: 9[֜TXXXZZ2 ))))))Hgy'u@rljKΞ=_~gvx% _0LKK&) ;_}3>Z8fs(֡Pl6;^6Lg|xhbj@ `Xzjy)4t:~uuusssIIInnRaǷl2ydFqYYYNr)WJ}G\r#/ގ]1 $W/fCtΠ@( Bh@P" 4E@( Bh@PJW^ |]3h@P" 4E@( Bh@P" ***v{fffQQQ4mgϞ'0ra&"H~~~qqqMM-++mN:uɒ%߿u(W^^nZsrrRӦMm :kUJ-[z8l6Z@ Я_ٳg{キW^:  94mm2`l7ޘ7o֭[z{rv/ގGaaWL S-]]3h@P" 4E@( Bh@P" T"pР>$h{4E@( Bh@P" 4E@( Bh@P@Ҫ홙EEEh_nGyD ;ۍ|H$??79r ƍ7mڴ[ѨM詪б[֜TXXXZZjllٳg^RRRRRR sv@HNuuu6M[[־}.䒁~7:  94mm2`l￟4iReee}}}$)**iNhl6B!m fslkرg=z+**t@rX,:X,?񏪪*mݣG={A$'KJJrssR>/۷o_~eKKˋ/x=2;h4z<\.RpTUUݻwܸq.kz{rv/ގ@FzBh@P" 4E@( Bh@PJ>c@z{4E@( Bh@P" 4E@( Bh@HZv=33(3?X4D󋋋kjj^oYYYxElq"Syyj1Lشiolq"S]]fVnCC… {9=F`ZZ6L`zhРAz/ 9P(Clm\O>3gix%+@>Ų~zm,KlkÆ 7o.++kjjjll4hCAHNNWWW777*|>_8^n]0O 9P(Clnw7޸{)S<g|hbj@ `Xb[<999{9Ń@HNNWWW777*|>_8>q=%Z_h4z<\.RpTUUN0!8GyDaOx뭮Խ{.%@P" 4E@( Bh@P" T"f7xi]3h@P" 4E@( Bh@P" 4UQQa333hۭkfee{.zM1 9E"⚚[VV ~kw^t8g4T^^nZsrrL&Saaaiiil?> stream xڭTMs0Wp3AA6gS;-kjѤZp$N;Z]!> xHREu*J37lib!xm X`Ek@0YU*U4n^<Y&49BD&c8BfFۍ':7fjc%t+,o;R#_,]cRKJ*^jC:7ײJ^2"S̹ê҂= qjZ>={~oɩtϥ7Ǜ!˞=:9w/!O  RymOqȱU˂퉣8<PooPr%咀jqumC[dձ`F bE]{^PaPfKK$V)n]7@61)15De Sa,Ԓ&3v h%kC'_.t0q'!T >L#`Wo,K o<3bI@2CFl].K Y\BkABX:~+@%<k+'-rlm#[l}7Krҿ5 +&acS_  ?iyVFkZB o 4rC=!, g|rtS;/B endstream endobj 26 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 14841 /Filter/FlateDecode /DecodeParms<> >> stream x{tVՙr'\XPb;-eTBryihGՙӵ8]:cT*XT Ū=\ !~ɅKH9쳳oϛW=g^>g_DF}۷_qKNksrr>SvQ\\\\\m6ëo߾}ѢE֭ʺ~_ 4(7-+t'nǏohhxWo߾nݺ4TsK.)((KKK盚|/}z^^^͛WQQ<_YY9gΜ}…N VԖ-[RRRƍ̙3Gu׮]RRRF?????8//oܹǎs\bɓsrr{M7 !ƍ}v!DqqG}>;v￟RPP xSRR O>o߾^z^[袋+cVZunaƍw2dHIIɖ-[Le£mĉBI&]s5B!C444D"뮻N1lذsK[oE"!DzzzFFĉSSS?O#ȡCrrr,X0c !e]VWWׯ_O6Mq+jBc:_|bٚSigyyyGB3&;;[CE"oqB &D"+W2Dx:ׯX޽ꫯvw+{mO<9z蔔~[eX;<馛~a̿t#4a !F4drK^}_~MMMHW^q[U!ĦM"s='1cF$,5jTUUU$Ǐ駅?񏝋:-_EihSiSSSkkk#رc-D"/b֬YHdڵwqo~H$R]]4N B۷{?8qDCC@G"m۶'--_~ǎ>|.**7o⩧)w7n(((n0ٱckIIIB_%Ǭ,!ܹsZZZ3?^tYL:o߾Æ 5jԬY~ႂ%z'|I;wK-Ç;ck7okB !MO6m֭Hy^);;hjj>_\\C=Bӧҝ;w !~~͞=[:+t~׿effyyy~ڣivD"!DG322N:SNwieeeo?3K.ݵk3hѢS;qtEy';P:}_R\V5kx~zƌgΜiEGAAAFFg:ck/3f˖--ڴiS=&Ml2'OkM<76l_a2rH!ĪUڄzkAA+xmŊN-XfMX/_ֶp‡~ܹs[suXƍyddd<V6tumٲwbÆ jkmm={kv=|k{Xs9ɓo! vH$]1bĈyeff !7B/RqUWE"?OB޽{/X`={ڳgO]]]߾}SSS.gŕW^3g8~aaѣ;~>#G:˗G"UV !fΜD/^,(((3gNVVڟ9s&xBڵkT'OA8K,y$D"b~}nԄ kW$F2=ps疗;766Çəhȑ9993g\d@kNq6ͷ~{nnnQQo}饗 !^z%簱c^Z@?B.СC>[oD&M$xG}}T0a%!X>hTpƲ"-:th]].p)w]"|^X|[9w\uuu$+8sÁ<E]tu]]t?$}`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@Һ ݻknݺp®Eghnn~Wl4IZt]]pwvuhPϞ= յ m !ӻ AhRtqk׾ g TTT<# *@ 6n ˉ+. 4X,E K@a݌3RSS8ܼlٲuuuK6m69xΝ?OMzu|+BvՙfK@vmpV5 4d6wܼϔ/]ܺD@21bĈ#b,qLhK۷%ڳ>ΊD"rH(hR7|)Szn$_}UTg=z4--7ߌ,$ 4`A=pu%@bX@2;u_fffkWX#o=z?_\\:,Ã+++'Nhxp]]]EEEz{}yޭ-k5vmW__b;vHXMhá~i"J7DRRRQ8lsKz㵵6mjJss)K7g^6K^DڵkMv 7!}ѧ~w 4Ѝkœ&M2?;oQ4guB|k_Y@lg…?|'W:=Z__~v%^`}{7o~MWE 0 |BY4.E M6m͛7ϟ?}x/]Q.2k֬ &lݺ5==+@J^zu]wvuE.Н;+Ijj%K܇gΜ.[R];wŋΜ9#uC.hHMM-((мڙݥ^:jumRz6nܸqF珞8W 4`{.55՛ycݿowտ/v!v뭷z}'*,?W^ׯ+t£}AVݻ-[ۤc;XW裏?O>dO=TϞ=;<;lllt,\fj@]뛚ƍo}kɓ'Æ [`2yǿ&8:yĻ*++.]UWokkkkk~Uʵ^{ُ?xʕ>l/7eoHo2}ɒ%}ill,//뭷Ξ=ۿ3gƣ?4wyG;Z_|ENNԩSkjj:555}DZon_gϞ袋L"=?dȐk֬ٹs߹ӧO뒒믿7ou֥>|xͭ^{IG׿{?:ԯ_Oܲ?AhĠA~tu-o(8|M7]~g***g&W??;&`'$?4hp߾}uuuii;VXX%'N馛LQUUݷo_uuuCCCEE333?~|̘1#G,+++**^SzD"EEEz^z)ڭ  4!?'NXlYsssIIIYYYwq#u_r_;>|8t;LyӧO3fLYYw=iҤŋˉD"SLy/aޅo{8q/o~ӳg{キpĉhw1Oz޽+W/--}w9hРܒ'_~ҤIjhh7l0q]v/v^ݰaøq8PTTS^^;`M6=y*##c֭dڵW_}uÆ ;uO< RWx24?ӏ?k׮}啕8q"//2''"++ѣ999u~ǎѣsLeeeVV։'***rss+**zqԩC9':-Wccceee^^^yyykkkkk}2229ܹsiii噙Ǐ?}tjjӧؘVVV6jԨ;wM !ę3g8={566JII9yd]]ٳgwޝwނ/FQVVҒ':ujss?b߾}H$;;ۉz & > w'N\~?яͽ{>p@mmmkks?uA?B8?=z}/njjJII)+++%Gٽ{w~ DEEEΏm̙W]uՈ#˳.Һw?CzS;%H$u(0Kvm v*A|{\'bvD`)h 4X,E K@hR4`)h 4X*8F ̽yE]4$RtqhR4`)h 4X,yo%VBƓ <.KjVh}ez)?(&xOTVUh&\PO_W17vD`G n࣌U}d\Tߙ&{7 :(Z?̍Sݤ#0|ykw W|-Du"K@Bőєl8)&IzW +iQMt-q<}j\y~rU#u~ ҳa"hT#hwP' | iCbDu-rc7M1h)ACҁB|&b5L"_7hr=Xߗ6 Bi ABAK "@ӗmo{$c F^Ke߱@ {Nk4ڟ%Ua}[s-O81&%(ߦc,dh|~AhRa>U ʗ2f29nf3$W/0xV\Ǯ(n5FN}YwM["Փ΍G /(}Wv#Z q+#h͓.MmT ʨvl]=e38ʹrT4;m7B*Givz;x)g_%kX%oX(e5&4X,<]J&u\1hE@o$)ރ&9Fbl0;^;I'PJ__}v$M #K>9sڋ*0?<|ΫwSOz&8&>yg%%Џ:M"8fʇғNM# G {O.޽U˜UHKW19Rw9Lr*sIL#3A㺉)h]ZQNg59IM4,3Ɵ1RxJM9,E }^TҜ'%QM0ܩYDrhx&y;I)xҀ[٤'5o!U14.1O\]A9hx`BABA74r'Y]YD'# FJS47>¡JI? ' QX]HTٓ4yh^e LV(_>k18,E };Zy$`4Y3ފ*sujjVH~wsl,|PΰCsQe/&RBGe.8Rs({{4DM:^/D`G.;r$mLI$tMR:1~+$M^:4bdB'ƲOR=p0ڭs0PD`H$u[oU髍MfT W.IeޥH<>%xhYݶإg0YaC:A K% {ϥZ$1_b{9&COmL;hQ*Kj1M4sqH߂r/`}o/*D٧dx%B }nLnNQ y$ʬ&(Ld;%q3}RpSrUV} JNQ M9brG Q熒.^R4`wqzq )ofML̹V#I|zbƬ7M>I 룟w,>Xl'RO [c9TfC4\#^R]pGylkEui͓4ʕ)}Ye&#liDaT2\Pyˡa4C>^hB]nABAd-4fQIK+L;cWr}rhhNW>O8_COY#cBV+?=%mC Kå חc~T0'%{TN'㏖^y-rLނy}sJ)WhRI/woP7pxd8,A^TL&E올^q)CoMhEpFIJ{F~zeM]Zcr-+෡-A{t[D`)hT8b!#Gb*eH v}te &{nrբ~?F/!@rfN1Ì4`,<t06}e\&bLUgXՋ}]&a>nzץ• % ZD`䉠4!3#%8jRI@-u:ݲ&E>qMfTJE#wi`-\K:ivB K%OG1ٮICroW$qex~|PދJ]%IQM~ [x7x]Z~_Q <B }pt ~LN&3)_;$82S a4 ʅ*m& W1{IbyŲH3gAƲybD }ZTdͱ/0eOL%<{'*}!I$<$Ā~rڟV&좍ĭR=…s}ws19s.(srťo3@z?@ K#/4t{ؚS2oYI٭rI6=銚V*zQwF5fvH}JއvVj1ti 4X*%tubbV!FZH&h:~uǷ5K@o"w yٲ JPl75<\Dq:B K~{R~Cʁ;CiO3;Mdt#FD`dhT:UCzG uxLRsHGyw m))ҏM)h2Pɘ]x!K>WϱW> |LT{ G=n$v)UI 4X,.fO#,L){0֦Ǣ~#.) ,:&$@sҫJo$S1sԖbABA'Rt(>FGTKcWSR:oFJy tAhR⨯?f<w^ p64X*t LX$x7ABi !,E #)膔8[yB4X:L~VF+""KAێ\f7t~+Γs|8sq ^R4`)8%':_TIYΓr(SN1OB ">`xDͧ!LQ.TQP^EmF)53f_D`)hT8^fܟ@iA+Q)6K%*$<큉q#$D`GЅ"=+HABYN0!7F쒥TiTP?x!K>NMc BJPA{zd;CYyv=t"h 4X*]IO?{gh(2Q:y践0 qۉ,Em;bg鿚ؿ>e.:h~W&C1H"h4Kr쬧JF$Kۿھ>zʥʁ "h 4X.PRβBXdLed%#EW CD`)"pPL~)o*%\.B6{LS7NU4X,ELn!);} ,|H>&1Eߦ\y/gPE›AhRn;J硛g|}n&rTPL/,mf(uH3ʌ{ 4X*tcc)w2 _IFKnN'sev E }]X(ӻ.thG[jENٗYMAhR+ % K}|RׄH*fXPD`GIO;$WU9hwBxL K@L ioDTߢ*Xɺ_^/;3t=Ù4X,.$1SJf.~ AMK%xO,:^v ltB }M! ]%fHyރfXO Je.̓ wĈ,E^EA\> 5VPW Z.VrZF K#??% L5ZʾAWQNp].RW !K>NMcLuJ!r8}8{\u=̇4X,.܈ $qV&4XvcNB.RQb)8'4X:1tb )㨶XJiCXiϷ2AR4`wq$;~DMĖ;7LvOk_OJR{D }:9`- 7F6cL\)Ls)oԔ?3i+Ʋ"h 4X*]I?HHPS8-;rְ˟fOKPh=))M_=q K>NABB2n~V4υ}UZut6ɞa2yN}V|ABAwʜ >SN#WQP%%]AhR&VjFr>U'M*~D5TnA }4;ͼJDeM)SJCh2*w(iڟbI34?&Uw8Lf'*L]WcB KD"CL>H|B̙s&[oKʉWs/x̥ܙJ\" \GzR[潷?Es2-h~oM=\&5zrq(,V+4X*.e>\}laD0씧H/̯2a3FvӼH|U#ſr\/ *'7 aA'vm 04!>sوo2}$,E }G7fҬW5{?Iv"hT#褧_X墊%MiVŶ.Y/ ZJ9=K"h 4X.a%(RI)> }oUefQ ;4X*t!F5?luRVL?HHR"K>ZNtmyu-)a,E # 7fd>\rtq"KAfaua=@f'jjN/D`)h]@~ѐR΃ݙ$wAMiJB'A$rD`)"p /&KP/pWN+(\0ވRDf3郎j1sԃ#^Q,E v1ޮk c4ah~-Q Ӡ$RDжs!701n%qzE K9*5?``9^)i4XH Y$Rn9oʇQ.W NA$:ɑtmC&ZBAhRhh, }D|ʱGjDABAԜO^l0AI]\8l7Pʳ!YQn41KGWqS5 b&,a21=7ߵ-e5g/"hTJ$:R4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K@hR4`)h 4X,E K endstream endobj 27 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 16522 /Filter/FlateDecode /DecodeParms<> >> stream xy|T?3$! Y%dID@+֊>,,O}|(Ԗ>/_)RYP|JŲ%! [a;e~z99˙;wfL>?"3{gf!*33ѣG8pV}}w_uر#G(^ȑ#/׿FDDL0_NJJ} t#::z߾}+p>k׮SN-,,eee%''wuΜ9q\~;??v\YYY ._~O?tBB­?q֭&Mr ?r۶m#GMNN<~QXFFƧ~j/2dȦM\.i-[rΞ=rvi-w9&&16l(--}g6o޼k.g} !x>16bĈc2ƺw^UUv0z5iҤ(؇~vKJJcÇ c-Zv_p!666""bƍcݻ"%%%22rڴicƌa͘1^Qb 2˖-'LƘ ...|G6l޾}{cK.-++OHHHIIa%&&vȧz16k,7L˵n:*))ٽ{{@;:,337d=PTTԦMx/jJJJmm^f oJlUctcƍsݟ9cnΝ{%K0.\/[ƯFQDmu~yVZZv ?^z5cln{ݏ>ovϜ9q^BFFcѣ^(//2h}ȑn)<<<%%ʕ+‡L:1|S'|8qĈ .x v]رccǺ\.؆ 볲rrrc<@LL clҤIyyyMMMĴ40tPﲸ;sss{5` $%%\.cbǏQq/zݺuc3nط-XKK cl̘1??>f̘nTN,Xءu?g}իͿoo&鹹IIIƠAS'^|Gimm%> owڶn1f8 F;Ż#ce碣?W_]bE~~~xx8clwyq0=-\=)6ZR;v?>--'?ɒ%Kƍ\RRRddk׮akv<8''gСÈ#6o˗/WVV-[Ι3gm[rW_}555522gx[ne޽ ywc+W{k׮1VX h xG#G{czqc}:ujtt4c>p5==_3FvnKLL>}i:vsԩ䰰|ŠAlL>hS8q"cl˖-n{ǎv/]1CF2ƾ anjj˗/O~9sn/ c,55ڪ8 8099V@3g%%%M4^]]=o޼[o566vȑ}hUn;3t;??>11155't>~w}˗/7hb]WW7cƌ[G~6dȐ;w /ݻwSSӅ ?\sOSvwwC\ns7 cs>hMhMhMhMhMhMhM!ݻw\rĉ@aaŋ}T8h]L0!==;wܽ{/[r?*^z=#ի}W8h]TTTm_7o^dddbdUU~3T  4.:vثW/+**PABMtWSS3xල---wu+htҒag͚*@Sh4.e[~{Nw?pnڍPss-Qn[+_?7lwϏ?7ڽGm_O'Nԩeosv$G^ܺuyz.//OX^\\;u]ڧzvtt po۶m'O\lYFFh ty  `:u:s {䭷j@~+g}6&&@lٲqynGD[RR#/=z~ӧ;vg5@|vڿӧ"7' ecGۿ[\N{1c~ɒ%\@.++Ό={9u hN:M6͙3gٲe~hNϞ={mk=ydaaa ?:nݺ1chA gϞ7n\Ϟ=]RTTcǎXnUUՆ ǻTgףGl]ͺkjj?~a> -1cƬ^z{v<E̯\tO>+Vo5}ٸqcssҥK[[[chKzz{9v;vS%j=zY{[7wG{DEETTT$$$8\EkhOx҉/ٳ̙3˗/{]/q??l_|_t>A ~"$Xx90Ckkʕ+KKK-[6{}>Y<6lٲ^եK{>7|饗Ǝjժ]@ {1&MӥKɓ'?s+[n}RSSܱck׮)F/^7olEEž},DQSSӷ={ۿ[uu?>sLIII~a޽sssg̘Q\\ؿ$[;8:?[L{ر__|EZZڬYUVrhCnȑ#SL6lYDDČ3@UG?ё#G>czC]]wܱtR]ڵk˗/_`ACCɓ'.]}D7oިQjjj־}x (**zGf̘ohC3fڵk~[%ڵk_y>uPttk6tPw}wjjjCCKJJJKK$<<<))??x_QQ|ec)+?LrÇwV*//ߵkWYY٩Sڞr>ܹs|A||<ݝidҤI&M*//y7g̘ BG577ǹNڷo߈#?ޭ[Ç/\PUUէO>>eرOwԩS{={lڴ_7nܔ)SW\yĉ{fgg:{2dȻ[TTf͚3f{ʎ;|ׯojjڻw3p\Ǐ?~}}}tttcc]w裏va%%%o֬YΝ;{~_\bmXb۷o߸qkjj֮]=nܸѣG?7_xqĈ~t(4'N`]v>//0..<>>0&&--- eeeEEEqqqEEEW\С?(&&[XXءCްO<Q]]]TT_PPRRRɏ9}tjkk .]jii9qDDDӧ###SRRcgϞuQQQ/uѢEW\9|ssscSN֭[||ܹsc׮]mjj3n3...99_0""ʕ+aaaPTTo,<}?16o޼~vN0!111&&f…~k׮ yyyNJLLLHHSg͚ս{;UVV.]ֺ\?~16vfXnnN8Q]]myx`ر}]xqLLsss+**#6a4P*D1d&RN1?j_ ѪVNɫga('GAB~#32rqHgf!YE,DB 0HiV%(a:7&B:HOG iv!t(L8E $ޔ(a 7şq6btѣABb#B7_lh,At "hM}]]0Gm^4'jn4> ?zz.c<:< !RqM]K4t\^ ^R%12rBSOB%ͅS)_%"lNG~mkMxyW8E:|4@h*8\4+|t.T*)RU֌ Gz'z{R JY=}|Do_!Xc`5G,?|itw1<,D :>uʘyȎ^" HCK:Qf'7'(4je_2&|X!wm~n?4aʖ-b]ldj{#v:G;4>yrU;oc-Dt(bv󃂐Σ*=*YA4ޤWc PLr}} ꡴f21GAh 4B?lw_LW͇9m:ĞR]ˏBeUzE5Q=]@$t "hMl Xm${cTX3 ЈP-xt|I £ $9 0S:Fob+j/mZۘWgyӣu=`"hMTwqdzxwm?;?lXfSãcl>3g jй8tW&ї tH79[:;idD! `?Ah*#vgX =Ic%"GyˈUvA#~=(!]I(4Έ?mOR=4N1!I4?6o($>=i}$<8ZEe8"hM}ӝ)ʧ}6V'i;O#wU HA{ӥ.}֑FtpjNg~Ba\Z%At]Wt&4@SA!PٴI|r)\\}R* 9ŏ֐Tx4E0yG=- h4j 6Rk=|$gJ!KX}6lBu*aJ~[#]DfSAh 4+gPyNE|I{6U֥Y^_V"=H Z0(HG?Ah*#*VS#yϛؠ[,%TR&AJTx|Q$!D1 |lBiuj1[*+$V?Ah*#h:mi`m4-܈4t)J\8+G iGI)5Wdٍc{4@SAa5HHP[e$v㶱ax2! c_)>§G7KO(K?aK_&I2#|\҄rřH}'Ah*#ÖJ234V2'q:W^G 3y@_E,x[0ǤM@MhyEP]KG 齲)[PI/TVٳ{W:OXC ZJ2 hM}G\ucb³1~#tjQbV{NK &=$-MxQz0KVY N/:(P.Rz](u ]U暨n驤{c[ Ahv]۰]z0HQ}bNO<d5'@-BH.ǦJTSABi BjMF,(`5SЌ/o TAZZ#R'=ܑ'e5"݊TSc.\\J9!LnPaRkdrtKt ]FM̿zvͪdD l՚ȣ 4t84@h* ?sc`(<\Kx U}̩)kEx]V 9tHH%Kt tEK W`Z%'1WϪt$!cҟ4D AB*[a2rbC]xf']n`c࢒؞3n %̙VO}յ[J" ʾ3 8 4>NH/&3~I HIO{pyPǧ٩DTv*A:LxK}M ӯBVI,HfasCS7 ҉z;4@h*8 D*8 ^uc0#}ziT2Nf{(tG9z{Է2Vϛ%wY+T$N t "hM}]YSFc!յ̫l z 'PHh=&34>UHUL4@h*sq0@x<(>JӉX~3ux5!"RW=!T<龢6(&]쭝L̲=zf(l@E*{JOgDB/PE4f.QM%u7KoPeUƹ*i@XBhaA$Ox oJ4@SЗaVez>G1)GԧѼOVk@S2dެ@`,iZ娼(>0*]4$dtV> P7&2!hMCw߭f l?,wizP-}FtT@:z| 4AKJPe, 6z0iv*6%$vA&ċm_/#1&Z @Suǃ}6m>XfD'X2␦f{4Hh~QeH74Z_*&3^& .jtnAB4H=CiS$&ȷzrJf ?ٖ*Y?"hM!֝z4;OQ>n8DB/"ou*{zGيml>'k"lϺC hMCw*4"}QO2UR0nV},C#4Z_!4eA*s*^EdA4+\7aoe⁳Ah 4š/4W ixêmkBt!#;dT>.z4GJc zaҷlT hMCw*όd)b_Bǎ q ,Pea!_TS]:NELtiϒUwySU"hM!1wJJJ*Y[!ug}Ix}cBm@-i=4;P! i]<Xszpiˑ$ _n|GC )4BT,:Fa7wՆV]7qj4'=ibw-DW{##0)4\3iFe M=$TɈiu/ #x 4|twx4AN:fq4z}kbDi6;ݾ)cr5; 4A닞ť3V8*Vժr]* ů埨ө>h v "hM8EҼèPe9vI8EeN[V+5QGLםp"hM!]P$O;ym '҇P@ )4j]Ύ>תޭjhNePe1)i_MsC1%aUl Mد_:I> ?~!TGUU]:j=d5pUKde1v2'1JBhNlo_5KX)27 #}]HKb.mO:>!TG4!.%!N #;~K~i+eل1<Ҕ.JŤ!pibmh'QG]o;~/[Zg@@Sh4r݁WgK73hx7LTz>2`.Ge:6x4B|0IG7H2\-sCĤI:Ah 4o*Y;? G3}=o* " $)oBb*HWs2"hM8 :7tA.cg.V%%?f' "h!$ a˵'[Qg{$YI7ߒSAh 4š/tn𝯯B$^ Tjk>F@SH%!F#!"h;swS謲g $Ӱ=lC )4B3zJ7*fg6K8 4A_6" IaD!Pgp"hM8 $ jN?\#F;R{4Zw90T~3cl> >> stream x{\UU?u "] fN>=w{أiL5.zsu'KfS)%(x U{|:^)B,*--ĉ'N馛&N~#E䤦.᭷z !6mz]ڹ@W 0Ï9W~ꩧ}Z`=A=P^bccΓ'O˗/0`n;vmr͖}Ȑ!ͻr }0an޽ٳ 񢢢3ftڵ{˖-khhpǏl#Fsl3f_]o<::_~g3g^ts1cDFFv??!#F8q!$55?W_>|6-66~z͖xڵgvf8p@[(..ҥKN>,֬Y{=OS},!nBl6[ppa"""!+WT8,,,,,;3f !$==]Q={$%%B^~GGGB߰7I#/^|j[_WWf>c{EB6m+hd݄4ڐu];vܾ};EWeʹ)Q~jU !YYY/!L4IQ}B R\\(~G}֭#^(mh6/\G3g>~ɒ%.\p?|SLٰa@ .Ql^`?899׿6|𨨨^zҿJ:E2ZQѣGB~i#hpMJB)@R֜űk.:.^h;t芸O>t2͚]iiiw_kᾲΝ;IfCml'Md0EZk˗/744h˗k@ PL`a=z0 xB )4B )4B )4B )4B ),YTUUj: Rt:WVd|@WBJJJ6n(o>󒒒@ 4"99;?~|+"I& hIhIhIhIhIhIhIhIhI$+WBLq95ʫUC HH\sssZ5<44wѣG{XÇR $@Rh$@Rh$YR;pO?ݣGis̙/"""{B &ZJ|իW;u$>lllDm"hfcccŧBHhh*~L믿~7O >S>* 4Xsss߾}Ν ;+8$@Rh$@Rh$@Rh$yW]v>U^^GEEE}JQN:qO>w >`yGOO>F 9s$$$xj7-So6Nk֬6mo*(,.>)ϐ:ξvuci~cǎܸ۶m PX|MǎϜ9Dimm2dH@kټy3!}" tKKc=6fɍ{]w^=ЬY/]t -̃E"h=ǎ6FkK@͜9ngo]\~_l6i~golQQƍlrh 8p;w+qh;~ /СCi#GׯsY{dڵii 4uqĈj=m&&&23~_hK.M8W_Jm84ڀ#>g텅hڵ+$lhh(++ۻw/sp 6m;5+**:u*,((5j!t;vɿoPքLG,_gukhh ;w>SONKK[~}jj 4\KK˔)S6lؠ=8i$qqq˗/L߾Ș8%=}tXX}(JTTT\\\*(׿mCOmQ kΝe˖q=YM9@LFF /0rH˗_yu˗[ZZӃjiiqo礠ZpCۃZ_NJYfͺujjjbb8mXv8O>drr2}K/WVVYWWWG'u555UWWBBBBΝ;y> X#˚1cm !}gL@Ξ=>|'FAopz&66bٲe _~eAپ}e֯_ X 2e }bT) }Ξ=[M [RRsJW\yG;?ϯnq:III+W|']ASjnn6mZzz,4`K,ILLl{<(((##9~w}]͏niiINN޵ks޻zj@d۶ms:/rkkkcc#!D*h?A{*###66 o֭[{ݶ(Ӊ ەlۧzu,633333S&::U^_=88foܸR__> c۷o޽IIIW\)..n͛@+s̙3g{׾/w@/3g=߰ah斔tԩSt(oF0arvիW]fիWCvF?^___VVVRRrܹO?ԋ5^z1ǫvp½޻zj/,@UVVԜ:u[n<&&sΥ&ثZ__p8N'mnݚ誹nHIIʢΏ=Xqqqnjkk-[F,**b.XreLLLmmm.]~VSN ;ﴶzezԩ&L())y 敐pmvmڃPuyȑ3glnn trr;ydܮ:[M7l{i&ˑt:O>Mǔ^J(5zs544744 4m@Y}^{m*-++k޽ݺuSs΁#7Msssm׿iMMM111QطoիnjsiYVVO=\uEQ)B;[ZZvyվ踸 11clР'|244ȑ#aAPNNΣ>j#>CoT-0N!.6۶m/_lۗ,Y7|S+` ?&<<|С_E9DZc͛vΜ9m۶xK/._wo[?ᦛnn3CCC~X>񼼼S9 V|mNNs==z,^x͚5oogz߾}qqqIII[l6Ъx_~|m6[jj#<ⷪ[ѣGaaazzԩS2ڵk#GٳgffAZ[[GލڴN:>}zܹ.\X~=3Gys˗/ߺuk&v{ss>ۻwSNK%%%ӟ"##89s̡Cf͚ /xX%w}t eɓ'ժU3ΝKo~=ziTKJJ[l)++J߾};}sϞ=~ޑ:::zΝ4x_fʁرaGͥQΟ?_^^>k֬˗>|W\7={d:C222 \};r9s̙3?o,XBu֬npCw}oۼy¢ϟ?_TTo߾G5ԩSQQQG=ztVVVZZ],J3f̱cdž Lɡw#F9vXpppddY7ٳzРAӦMϞ=k׮̬~wuWn6lP^^~Kj͂w}wj>ûwﮫSfxxxBBRRRKJJԷYRR~4/..NKKLOO/**(--ׯ_EEETTTrrq"Bș3gٓ۱cI&͚59,//ώ=z7NwΝ;#^bEUUѣVh tR[[{ܹgy2gΜ={FEE X"222==O>'Oӧʕ+ կ~E)**u:yyyN,**ԩSuuuaaaTTTaaaPPPCCCeeeHHHQQQTTӧCCCkkkvSZZZNgyyyhhhaaadd$ݑŋ(((P"::t.\%***//ptؑߪZj^TTŋW\QCtڕֶ044p\t)88/mҷ@'^vܷI/TVVU[[[WWԽ{wdńSNuڕ~S))):{lkkkxx8zK.444 OWJJɓ'N!yyy})//ѣʕ+ !%//Mp&!B}gΜ +..mFDDGDDDFF755UTTDFFY&$$ŋ]t),,lhhٳBV\q3??G'NUfSSӰahGv^^^޽+**.]@Ǻw޽p'O$?pt֍Fh/^7憛Ϛ5ﮮ;vwz4}syhkmnW8oX ?oq3#>C@!111n_zú IhI JKK6yUW7h>߁ݒ>Te(O~ݽq%a@`„ &Lݻ744x>.A4@H 4@H 4L? u'$\s|mFB!.#LJ_͆ ]cǏ gܹ.Q q-[*VkAm%ZܘK >Z,6"hI>ۉNs@0!ч̙g䖠F5˜C2!S8kKV\ɪЃFj<pd#3xhhrss?@ӆR 4ذa&O\]] sC !Aop:0)3m/gs-ͥqH#].FT0}-urvntyҥ`@RABbgyPNaB]= Q0Oq#qkjKg>~2ڙy̅‗ŤW$A )Gz-A/8vb,4qϗǤ7H >Uqo8w ?C )42}3NqClw.+PP#S i31md!"1}"hI>f?_:QiL6;,E/8=(#<™sϪucf25%043N{P<=NLW KH8DB )wq+ spn~1p;% N nC )G4;G[H 8_vқrFƌġGn q?%̘!5V"hI>fEƉT:+z32Z~9㙩=/ 4@H] ?fUxxGjL/&[ZF s)> r b>L#0p[AHj4fIH!)18t;Cލp)_MbfIb$ow@!#h&?Oiw$7lK@~1&c>qh-[7O.rq}瀦9uz ?F~rK} 13G~͝x4@H] qNwnr\e^ p?˓g=䣗v0駧nE;%.v8m ӧmwemÌlF #h5&IFȳ`|-\%^ s hI bG]1Ɉ`e #h$W-H;hB7q5~r?O Vs>@R>0{w{A۟-ZHJ3~s]|Lzsofw9!hIfDD `/ӀɎE浸\-<@R1HhFR3'[/3^ʠ1~rŊq f4w~ 4@H]zՒΝ}1;C22や fm&)/x/ ]N kikl n!#hAB3%w#b0ғ KiL\=dsi&dCfr1s[jM`~_C s<@RUf RWs0RDŽx_qɼwȄK2oF'ÜCUcdnK^h}rB )4N f20ק1 >LxHfp\0츯"1χ9G5sGU?CqFPK Bf^C )DЖ!r/4~S7 ͎ƭjc@zVR2wfN`Iۃ̇)[HqWti" 4@Hʦ(JR\L}"s;qCߤꍷp/apOH/,`Jv_/bd>=A_ޏϘ;xounB8s&!mFOg;ŝo拻a9jm$eTVxBrܬoޘ6 ČɂWG0H}-&6qB3t4) i=,]:Htfހ6gZ=n̜#xDОC )LwKā_rmr[JkƿLfȷI/m`AH 4LQVF|)Ƚ\{n3d{xR`Iސ#lE.qYh|Z 뷘b?9zpX2YL-H~bdo"hI>|4X}3)B,#8ѾUC#٢w,#n{On(nj: y7FS_ٍ@Rh$\(dp#xpuGCw|H.lnhw),F}ܠfӛ9'=Gzs/4/$AH 4Lšebv`¨E@EH4j6wmx5- f)1qݿ]UISÛ"hI~%>`w=r*#_iIO}#n1%h\AhoYğ3wJ<@R։ QXdߵ"DB )tqƑ0. *<㣻t  ό>k$vQҒ})4A p,$8hMo7֛pw6p`|[[=@Rh$.80HhR̽'GGץѹ]$."hKCO\&3wn[q7^1wB-$Ll&J_'!%gӖR5Y ݮ0AH 4lS,c:.,sj|c{]$eZ <>%02leٍAqyu>@Rh$e.1wd> 1rRs u"h&n3&w30^3H݈ <@R։!ɀ%I}>XL$nhܞN~|4@H:] @%ĬdFy/ -:ɺYWGGw!"hn4KIH\hCWGmo=T@R։_r:ګ3W1ydM9;PA΂xޚ{gd-#Kv!a3ڊ33Zg8PAH 4AwXs$z={qVF_\2&{k̬s{Gnm2+ "fGuiw%tM {`[AH:f5шL&Ȱ8ζ;x)B'CS/3}⏂Rb|FF\Bx:DN 2'R7H%?šL9-)A0nZg}PO-q!hI kB=VX ?D2}`"4=j>`,0#DB )wq )́踟, efI7ABkC )G&WGp"hkC )Df$u'%e hIYM@Ιc08 ҍ$e82h|.B1/7ui bgB )42}8p?>T;.(D2} `"LL2]BAkC )DFV̌:#I9AH 4?t#l͜"hI!0 }Vi,X"hI!q+1}B )4B@f֝`+v4A3$ "hIMQ@#B{ni@W&*@]9`-vھ(H40H$7b@D2}m_cwǎ#2#uό}b$@Rp8<-tn #h 6˺_dT4@H]hn =C )42}3NM7G YAl #>$JB!#h 0bj.}} 8H4ASF)t=[j3 4@H]JBu)줅Y_Z$eZ]b|+ri֗l#km|:,C )42} ӧABitmI[;JB!#h=!%:v6Χ@r$eh`˫1&ٵg$@R[IED<;.#7vOB )GF`Y*FdfPC$@RP )#7IX<@RAB38[Q#>]IA!#hf:mx!fFzk QL.t#t{7'5q[;u]F6YB )42}GYُP1}b/gSO.Ⱦ CVnnD2}T!pr)62hd ]1O1c%H 7"( |t /1G;{ "hI8=:v/poTwna#D^{ s;R&\55%"hI>f 7n䜣y.-Ԟ#l'n/H90%*H8,(U/><<H#nWύHX! =@R-4`!Y7dPk'ڪ9sC`bIeX!7Du)8Ked}FpV 4@H]]703?>JѻE.޻;qfJUoWan!,WiKTPsW1ZK]̇fݸwqA.Ծ;wL!HoA )G &ㆨ̐wɥ+z㓮k[#zW9h>y o'2R匧.#AHʦ(J$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$@Rh$_B5 endstream endobj 29 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 14749 /Filter/FlateDecode /DecodeParms<> >> stream xy|T?g> %hE ^UA\h^ *׶"( RNBXo@Yv~<䙓3Y39s _Y $7>|p)S=zT˩222bccccc/_꯾u>>> pu\ܹsDFFF@@СCKooo^܏ ֩zo6g͚Eׯ\ ?~7|C ?|ذa&ioߦ;v,111(((44tܹt{AAARRRppphhҥKigé.^h0FMo CRRe999aС/d>>]vITRRB2񞞞W^yE// L>r}ԄO4pBNuBȨQhO={!qG1 #G'7$h4G}4!!2vXIHBƍoܸAo2BBB!a={ĉ=!ga>|9 ݻw|Y&L2s---h=_Jٻw/E $O?D1BΟ?/IB%I:r!dذa$Dze˪6l@Yz5('OT*!ӓQFBVZ%IҎ;!3gΔ$??I]F8=Cll,!$==]Qw$I/_իW=BBB*++蘘sB}]M1}YZ3wpBH|||[[~ -ZO222!'O6 n!?O!sѣGvvvKK !,,33B,&L5lذ3gKfFwywޑ/ٿkOu5Kb鐎{< .L2ү_?BH[[!dҤI}٤I.]$IK/z7Mz=<+++33"ۄ̞=mĈw4hИ1cRRRƎkl h=qc$d48E#!4S;w9MnݚӣGBȪU&L LhkO,!̞}1>|x̙aaa+Vذa޽l6ܷ:$iȑ/^\j=<<ƍo>4&x{{7СC%%%Р 8|p{{;!d޼yf#F M?~$I s+** /~A{\1ņSݽ{qqq4uuЖQ/:t(}Ik/IÇ !3f̐$iƍٜGSwJ裏Buuu:薖Ze˖+VB-Z|r#$I_}!o߾wܱT1fZ? po:sƍE9swY|CDUI>1cN0ȑ#t{vv̙3{ٷog}͛6СCC 1cƖ-[rLcnhhXpa```LLݻHپ};mԨQ*&w}---崋ȷ~,2@K4n8Bke:tK8~:mfZ%6?'?d{C-_qe˖]tR7^());w.m_555k @HѸi&:\Ph$4 (4(--=sLPPUQQA;ZCCСCp- 4o?~կ_T'\(==kh}?//;*/9Ѡ@PB4H$#F 򦦦{Z{`qq1] Iz;r @PB4 (hA!@ @PB4 (hA!@ @PB4 .0`@tt fgg?6WTTdÁ`wByӧ;rUB4 (F"P+))rEիJO>{?~|۶mgvU׬Y㠓#@DEE=*;wrA @PB4 (hAa s}ܷf/$;o޼psΒ|~[ֽinmmMNN^v̙3S@5T)))A'ɩNMMu[ZZƏ8hX\FN/ruZhgϞ5Levvɓ' txꩧ̙㠓_rݻvrٓ㠓>SBHXXK-c[[[L}omݺۛ{履~ڻwo~V߃N*p嗕GqtBP/Biɍ7޽X$mٲE~Y__/|\Qn @MddҥKcccϝ;縚ne!ʿN/QW\Hiߩu~a lΜ9AA?pk-EGGGGGw$ׯ_Ka ׯٳO>ܴ4Z8k,Wsq_oA-((hرK,a_z%EAqƊ+ DxW!-`@Gp555O<!dԨQ?!dݮjx,^8??Ϗ|ն6B7NFK4__Np|r]իW}|P~Y___XXH'Aedd,Z]#))FgBHZZڠA <4FBv:**uE뜇lz߾}}9rduu5m׮]3g:t+4c fŋ}||p}uBI:޽{.]yf'Zg"""uZML!!!=^^^rhii9sرc/] @ƌ֖tj_\v7ߴnܸݻ'w=BFq؝;w>\Q RgZZ9?yqǷ#55555UPSS#/Av…2oocǎܾ}[nEԑׯ?C#\t);;ϯ%<<>suY޽/]b :̛7o޼ynݺuٷe2󋋋?c=薖qرCիo񆫊ԩt??򀀀f{!@[XXشiӦM/-X9Ο?SOM4)33333*,,۷ʚ7oݻx ڵk=zؾ}{kk$I?UWOMM}'XXXt+**:qDHH #G Ξ:u$Iǎsu71 [n:uJqڵ+W<إ??DC=C&OqFȑ>}ܹS_yy+ǬY6n鞋-joo h߳gOIIɚ5k\]G^z%VCߺp Н 1bDW6O\~=!!VfggƮ]o.ZեǏӷN:UVVF7ʊO:傂8;0 'O !?M&S[[;kmmm<ȋ/8f̘Ѝ 2 = '=v|痔$''skf͚U.\HYٳz{V>}:#_v~!8ܹ3++k۶mܙ#""͛o;y3 fyGʩz)琒mڴh4}V'==ĉAAAǏկ~e[y\+;;(64*[gw앑ѣaaa<ڵkN3'OLKK1bT/d:rȉ'~[o9p'[uTjj+Wݻ,`W?)} )dnJOOrJQQQJJѣ5ߍ̙3gΜ/~ .tr!@ٳo***:wܸq233?%%%>>>''W^}捻=111t}}Ο?W___RRK7~={6!!… Cmmm-((9r$ݧ322xСCˇ r常b뛘8Ǐ>|ݛRUUիW1c̘1#555##533sʕF-++>|8-OAA߾}-466*oʕ+/҆~☘ѣGggg߿h4677O2c+W93}Nz={6''+WYYY_~ŋKyO]]ݟҏ?e~~Ν;wO;vիK,ioo0aBLJSN-[L &,]/K^^g}O=۷lRZZykŚL褤$߹׿uiilnooOLL|ꩧ䝷nZQQqȑŋGGG'&&N2/HOO߽{Eֲ;v|G<}۶m[`KKKnݺdɒj׮]QQQk׮̜1cFDDĉ}QU/VZUQQ1n8'_tnn.!1;;;???000//:(( .v֭;wL7n۷oWVVzxx} *tU X{Ar劗ם;w JJJF#իe^^^{{{SS͛7rss^ڳgOHKCWxWFcBB}2CΝl2BH~~djjj*))3f ݧ,//h4˫ӓޗ| !MMM7n&=S^^ᑟ뛛{Ν://H_uVnnn޽ n߾BV^;nܸ!CȷYZZ啝]PP[UUUSSc0 xM2??Guuun(,,_d;ƜPRRb6[ZZf3!&44/^|xff&!dɭZ/333gϞ=mڴ5kݾ};++~>`ZZΝ;.\HNc$əG;vLeJ 6l)=0wڬ:w`` }vZTTTSSӱ}ǎ/p Py.[-54_8qb7l0qD';Bw3L6V^g?ǫǏ?SxaK3]]{y"倵~%qŗ]]Bٳرcm>|իWcyҽz54 (7vڙ3go͜9SI^}M6ٵhCw_\9p _ou̒-'駟"@#cfq_Νr޽{C4E7nXvrIgB$駟^~EG8`Yf|O@:]``W(}#ᰰYqa.C$.`=4-*rVw[:N|t:lg};&bWAƸvpAVɽظ7xzjǷuXWW4*xF*4 (hA2B gcj*!^.ݟr:!ȋύY9^K|~奙fzQ抳gs}9)sEJd-g裏^|mǷڛܽ~ԩS;F={>E: 4ꞓޗtzxaaaAAAhh(!S `\r~MOHSTL}>L9>rvLɽYv7TSSeP{A4_QQQ=f?\XX @N8qΝ111 .trP!.{=2CWp?ϼŭ4G-r=ӐȽ4w͐[Ch]7ҿWZ5`^z9ȠN>}qhtfA ;Q&L: RF{\9zǧԦVJcoܸtM6=z lٲe˖-ڵkIII|]9h5~lr(1(Yo&ɥ0c@kUpɇ}jz)SM_2'VIkIb˗/wQ (hA U=rm8l @PȠN.n"&Z <[غ/II\Q~eItP @Pr*YO@qt*0,=ժ606UMKsg!Zʣhi;VNDb4whsay 2dŋtrZRW>Z#gp>džG⬽ RUH*2$ת)>WҎyq~WuA #9+Ec\..*LsAYZUeLˢL4=䷿%K8➜هnLIQ+9h @P}#!6q'.m};q7>+f6=D]4tAr/ \IKm^, cBRL2=,LSaWa(7ceHw޲垓6CcZκӄ @PϠeZFsԾ t-Tri1ɑr2iϘ1G6޻\RA+A} ['Ws9]#݌/mhSYnCQ-.bTs: @PB<[YOX.|KFhfU!2h5 r}9qOiiX[j .fO!4A2ͫw: daȎ @PBA-Sk^@ w72hA!}-e GwNlT7,IR2|t6;fTyVMߡ- C (d$]Y4VKeӪLO$ʝJu鵘{ڮPO}*w.lyfȠ (Tq~WML=W<ٵ7Wnp8f-mCY)!7iSenRK=UnJ >A 1w6i%ws`{q8ߦ8TɣSj0"긹64*}PeͣOfۙ3XC'B@!68e叔nVȸ}:(s[S*WŭNҞ_ 4 $ 9]OO*K}ԛ)- 4MJgOQNc wmbEI(qɒ\d eպ~hȠ:h}PLpL~Ǥr4J6t;-p}0 ẍTC\ !sqPZU_4KK4*p8-츏/ջϡm{To6qvP=FB-]訮w @Pݫ3Xg\k eS8M|B,4ʸ̗#avVBc iA duL;3؆~1#V_NYK8Y_!4W}lX*),cvѥ6f=ᴬ;tY~qAb ̏MA?HA{e؆ɔm~LK#Q6̵]&~L!82hA!@ UR49wpe g~#Z\mPTciR-U%`_Ƞ8N&.:?_Lz.f{FkN3xnK+!xjn 4tA֒:rkQ-fLsnCHO9PEo/KOͬ8eVh*X se0 N+ӲDem]? 4*nYH_KbIY˪J3m-xU%6âN{]Rbܛe0uSZ1 ;9$d͆y!ܶGQ;,aj$8rgB (hACXC4LsKeLٸgĨέ4dHhc>mdJK7ʢr;2-#v  @PȠAۗKl /jj3MŜR.ڿ)̥K-c#0'vp` 2h}u4SʭTUꎙq+2<L:g2TZ&sLyd;b|.noD},Qt!40>/g%$m$ִTtXzgXXjw2-u6x0sqKš}~ 9ugUr-:dB#Gi {Th9#IiX0aTA,2עkTWzA!4Pš3Z׉;|;L@G, =[ NHOKW#7H*`zs'$a>UVC,5*Yݿ[`dB7;}.i/ڵNNޓ.mWo=g'-;VNЅA u`բMn@}WgṊfL-],82hA!@ ULN,nuhL!z=|~܆;桑ЅA 颛^9 kMcg~zu dB >BTN;@mP$u. @PB8NNM(kk`+fi/e"rWȠ ZR;483;)2^Q)dB8ty&PGoYET] @PȠuYOt5y.]f}S,KM4qO*x-Sci(6SO̙4/?9=UoǎFB @PBTpaJ@Ar<ܧikqd3Z=i&k]j`UWqJ4 4AK%Qob%L}PO싞V>*`iaoӡ@ (d ZjU5PKK B<څA @P7ytl-Μ[N2hA!fx]fG?^S)i_}SXzɥ,Aӣ[)P~\]oc>3W"2hA!@ URhT}M;:n%%K9P nzg>QSΏ!T.4^}rk !*7D @PI\]'LN֔9D[ۚ˥Yv> PfV59i p+A @P`3[(!2hq);u̐8(!4P!:ϝ%>&Vp?Ƞ Z\dYddYYey tgB (dТcycdlvAkO8w$@-4*qqyB#bC (dRf7lvL6.%MyV"N.\Ƞ Zt4u];tiT]W] @PB>hymnu8`dB-.eF%f4 2hA!@ UUڗfC'/MfnUwᱪǡDd-8dB-.n#>n$tܙRv7! 4A O)g5f2hA!@ U` TK^iͮ;C (dTQS Z{ƳLb6,8dB8ĥe$FvEj*!'wA mkVM xB=9l @PȠEas`^Ai͋:vU @PUL.k?2;};s6HB;gR6C<ꔎ/;^+Iؑu#A[g]Jr%Di֬*kn+c2_i6k_3hc~!4uhX:rrQKQKۣD.FiTȴiyHWܴQ:"g:iFzZ*TT#!8dB8ĥRo ?2̻}}˘gvnO8yJU4.:EҪ{ KnGRKFB >6HB]@ (tϿx0U(f]QK]nfg);l=#;/ }Wnf'8dB>0L~rd[:Ʒ:Vpw4L Ƞ (7ZE6ntu!C dKa4v}?"dB#@C XK7!4P}ɕwTLȠ }I%w㮐nv. @PȠ ;kh0A @Pp.-bw @PȠBK#RA @Pp-.CP+. @PȠ/4 4A8,ZpȠ (Tq8.AfÅA 4C6 B. @PȠ2A~*C (hA}qU@ꍄ@2hA!pVʱc]T4*K}~fp>dB }iʈ. @PB4HmM/K^b$hA 4 A @Pp%-BȠ !wsf2hA!vtpe6;p!dB8=в  mx4A8S&ҽ!4P}iĈ9^\4A8nvA 4z>hT:2hA!@ UB4A8%\ & qoȠe$edB4 (hA!@ @PB4 (hA!@ @PB4 (hA!@ @PB4 (hA!@ @PB4 (hA!@ @PB4 (hA!@/- v endstream endobj 41 0 obj << /Length 921 /Filter /FlateDecode >> stream xڝUK6 W(T\>ECNS;-#sךål -'Nс  (|,cB]L֚0.#BIJ GаYVPW>ܖrAVcVgkx 7"$(*wlRh.Iw\|v&u+tE!!˜dl'7*tlcM棋wx4 G;<};D@:C~koǤB|Oַs|Tw F*l@zxxM6>+'շ9AjRK]TN:Q$0d4Fu(z d+95WEvK^bQDߠ 5@iMq=gwJk0y[|u%ukp)˗\P1nfvb(%U'5ոk33Jàub[Ǥ`{._qq8c(̔:) l=kZsQ<,tA/̂K;;p0CUƁ` -ƙ&ɧ|r2aV§2{NL6kBe4ti;MлXήO؝aEe,>Φo0 D($CWSԧC*…E'Q x7z@ VJ콛NE wFTc47 _^}wAfN̊yI/rxfXx3*~h;'}hdS[[X%k X`(]=hC9rڱ=Ecq|hּ9"oCEjpd7'#vjE* s*$@<^_}_ endstream endobj 33 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 26976 /Filter/FlateDecode /DecodeParms<> >> stream xw|TU${#@B H"˺ Ȣt]QT ,v,6z3cB$3ɜ?ƙw͹}|VVcUUU5TOd:u2g޽2_~JKKM_ ƾ{Æ tsF1~xI&n m!MFo߾@׮].L[TT$Iȑ#Xb$I\.wppHHHO>)IRIḮ  T@;; &u]Q C#NtT={}␫޽{7\s-Iŋɓ'K;v~hYlٲС^$wmJ窪*I???R@{$髯2$I;v233%Iz7y晜xLڿ`ƍ8-f\~7@BB;!o`ҥ-N%X1!4 Su]ڵku:̙3O8;9rKIIIAA@///SP*@޽.\WVV /ۚ5kulܸرcG~~ϭaŋmڴtf׮]񀋋ɓ'O\UUuȑrtt;wO?i$I~iӥqQQ;SXXعsضme2ٔ)S-V`0$$$ݺu֭[]]] dh [rYf9;;ϟ?)M\\\uh"NgzUpC2Fn ى1hA %ZBAP"A,hA %ZBAP"A,hA %ZBAP"A,hA %ZBAP"A,hA %ZBAP"A,hA %ZB]@Ôn߾U Ա7n]smے dBAV^'oe 0`֬YBСCwr1-`D@ X(Ђ J -`D@ X e˖_Cx Jլ5 Rz~֭/B%0iҤW^y%''lɒ%T B\=s9s_ھ} ^|UV5S Zs$\z5tKqqqqqqT BfeeennnnnnFP\~C]i!!!-Q gC=v3w-`򪩩1=V(r%&&^CnxQ]349/.0K@GFFX8---""B&]kܴiSAAA(Uz ^.N΃޷o_eeon0.]:}Af <7yf-C=x𠭭mRR?`Af< \wK\wkRAʧ)?H #z Sac)h)u \-p<s"ArϨtsrhAy[ Ђ &QeGwEB ssYkB-]T⫔+D@ UTX2BD@ UxdJBЂ %dr"Z9U\A X \wH eem'Z8:S*E@ X""EI e+/ E i𩱩.Ђ $d#-Ђ \pl\˹B .MeAKx֢7-`k["^,-`Y\ ~K h Ah96C2^ tV;H,a@ Ⱦ[2FQb5Q]k ^{tK@y UAh^F#Ԥ* 8>;a]*#_(쁋< hA>CWt^}<>^M4~?17[Je%ϕ (Ah:FTos41pҟ]%6;[zw0rOZfh9_P\j\eq-3#Hj]I|<ٞdyRDT{p_(++v-gg>Όq* Tg2ݞv}S:KPB*IT1Խv#˛] E 06}nzN )_IQA̸8_tŲdž45-BӗS{ajjQK˩m=qݟH `5H`p,cjxB7qj6Z& xp&=q!F,*b y0 .7{ -MQHhx:[*E@^`@.Rߓ F0|fo<݆[WS3'5dX0oܰNI2c-괺ԪS(ܓqsνPvwN+b;[cj/z7N*TqtrABJ tӭ !=VG~oXv21HjvS \#ǎ¹=֞F塞$G{` B;9*tqI*9VOQrTG 685Ђ C{u IT&/Q8'3x:cAs8rQDnÀhޞ0ɡ4'3Ia A^X5o՜!w;#PG_"AhY"4h2dD6 ]غQV˾ $_ `##6I=ϰNx42qa/]yi{{K_"lo,`Ɛ^9>) <=lMD ~LT\@]E2[Pq! ~] ImNhO$Јr $s?{8BJnLHg=1aDPX%>gGml0Ц?- TQBu +Yl}{qcq> ٥Iz#Y$t ݁İ?bH$OpDZQ}}pao`?+Qa ~o&bCF0TD*e2du/}q8u+2ie"+&  НG2b껖5hvrn+i[I;Ecѯ'c)WEO 3=y΍]hK3?>  QA_vcps8ué v.(u 9Ia2J,%RT781LI:3 [M,3Ϝ:Dv~c"&*R*PJIz0ʃ1|Ђ ܘAA[ނω8}$\궦s"wp4IG{i]+1*0"}Do#㸮<8F ؟([V*6V4qg x0ҙ^2l_hT"A/AyqP&N#2{\wJղαr9P %! "|qwl"S|IRjL_g<݂ry@Y5gURrX &>7/lāhAhQDy '׽ds=,H'%y\(Apw8+^6mNoA2M3*+@}e2ʣNm5 .p\z5ukC'V .VPZCi YelK# ēz%gƩBut9Jv29T^ A'}(ol/*$ Dz0֍!n ] fUm0&Mtґ#GN:uɒ% .jYYԩS曁>S ,/ AUN 4h3d/PA!r\qcðo}aWr&r8 +qW4/Ўt l/-c䦐Bi)^MBMby䔓[An '_W|\7j-1"s'yb-6v!^B lFN[٪"2\^LY 츸qqqW/Iڵk jժ{'Q*}tGGG77/'ٶmիyaaaQ*HZtW`@W44fu4q ;|m0w#ͷJ%H-N_Y@B(#ү.qwͱ1!Nw]S 0>C8XGZ.J6%ɦ2lp"ޓqn va@ &M4KA^^^555 B.^Dٳgϛo><993f̘1<9w܂Y(U rG.]!/(cqtp!ߵc 5Gu?yK.Z N/gܡt {(1wHhM Nr1S]n $ &v!wЧBO-|`BOo:ÙYE"_CFF[tdd+L"""d+?[l{;u̞=_.++EBK4ϡG_ })Fj4N!iav8w>Pv7ڲN %9<ǎsFohMvW:j; Jt "6P9K!9G>M#sgBҫ+ԻMH*Rk]Z9=yŗZ&ah}|Ǐ,Y$::Zs&y4QCumF$[OlݰqþpNĹ򇴨R2JI/l!g8WD`hG\'RplӨE yyAڋqtExwBqG%Jհ]54[9><WsmUmRRSO=UVV6lذ :t FkM8<111))9jHңT'QNpi8wgqطMa0rdr0+7ld]{鄗3A$|)q-|*@y\Հ#v'.Lp݌JWFj= W:uYU@׏,TufϞ={fhkQAu U djaTc8a߮mDz1g8_Lz1d]^w^NPGl D,An?31^5j۟h:\dC%?԰[HG_s.WTf)Xr9Z I&Mz] m6tW:8Y?v Ij5dpbreݽ1]#1%>-% d#WD-b\,^8{ǝٻN1[+Y_īLr" ?m*+czF<,o ,Gx ih3{cCn 18D|1{/p@J&`kC|0{'`ըOr,Eg){ Qsu5%\?=HLs|bR1r$G\yvEiQGukm=9pC;j|Y~%)ȑlv'^N  /'&<%<BwAqw" G-XU~i2fX9ކI3gr_M^vv[@hdD(5ًUž8u9{/ṛZg VʤP/20آSoKT8"/B8riK@>|g%]*~aމ.xכi"ﭷkyɓ]mnjԩh2fS6&p!v=fW,2I-t>E61; tK+JjTG9D)+ 'IX/`$5bSԤNt %O&:ӽejhy^|ܥܞɨBb;տS &>r?;8NpSF^%2JH/&d< blW:Ў^Y´rt!q=ν@? # p|-;MXOi5Vj~7P!A~qGֵmo=/ME^Έ8~q]q1t75<*̡|* Χ2Ta,1.MNKd[Xk(E73dhɈb m2[܆&]#-q=sdx:=CHlϽqhaX*Ӓ\8Ei+mQ' |ȟd;YV=% J 6!7I 훶)d}+.se`3uYbOjng* )NE}xMmvA9$qNGs$B<։m,>c-:~D>J;\xefK)W$u$&xЙsfY?Da&!ΝqhMmwBUmS~F2:OzFM;ˆWz%?;hjt9%{&Cv]ķ1p*VC_ãNt5wav1q"LkꛯnF5{}> %GJqc@n g~$W5dgԜ)J6)a=!ӓ @ DFm]!Y{ !<6>ݍGp<ʹ&N.pwRh=pK?~/ ~ٓwg-+4Ib"-b0϶p{Dt\ƅ7[J9ª^Sy>ݛzFrGQk&mְ$%ǪkgG XmAz~ÇINQyY-Cަ~&c^dJVP s | y F~Ke~N%w'18gS3"y4DL[bQ`K5WBqGo-pC V\Nǎ ƨQLbʚ;ˣl5ekPb3.Į].GAȣѾ*5E]~w~Q1D9bgjZ,S$9~ sg#lC*\hOxMۗ%K>8SD!Il>.<֟ѝ7}?L&pͪ2&MwF8 XTz}4U:ЍW/܃С+|u8S@; F݄cS8Ii~[;X3"(%4|Nt[pcj5[oΚ5LfZ0*ɞEZwPfV줼aɃda=T0/3z*u4reriJ+[x+3JJ6%K3wM-Jt*(^N26Z[x 5tg0iou~2(=ĶQf"\W`Gb=߼U 7pHc2w.wm@t} )zҕjM+mJ>ҭ+?EcҨͨ\՟vRуě%峨EL6-鬎$,^xy1w..lD@ߞ6w(7| ͯdV>E]}$gyo90N5&Ihx\({Hc:}Shߞ%KxI\}\зQ G \CdV_`+z{]5R>c ~Af {m][R577e"qc_հyL7{60fgK%<uaO(flYx]֬Ag$^|DsdD@T_aj?}-AU'H ,ᡶ>, 6z"ᒽ{Yqr⩧7sdD@Xeez =XoXw!~vkY\W#4dI+8l#8|%i ~Gq~~mmٳpN$z_ͼ7gȖjҷHc#h+`yF( e/OtAwX":ubr{m7hB"U3tDFV;ɫ3Jjx0O3M8L_f?ȇHJCnk~88p8z9w1c6LlWH.ΧCukl?U fӃ4lU}?Bk|rf=ӴF#~e CVZshsNC_i/dEQjra)[seFYr]Z7EosW$@J f??-NZTm.xϬ Z:KP|͑U?J7.3 iB-3%+yC{j5oɿ'ֵ&-ɪZPߧiQ]otmnb3g7N0$i3ۆ;ݒTjOx,]i!=3x=||]Pg]c |\i(Zkæӷ3-ٖ@U3*ɛ)7sWd?[af+:+7b۠0˙<w%xjмؿ1nZ/*N^`Psc[|}#fm4KTmc4z ke؁${Z&E~8H@:|4|öxvX1uXGqwgB^|w+j27kkFA/p6Gțc 'Ne;]eJ/]YiD_fb]-kVȨeղYwkj,y/dfh?2=ecVPUŊ>%%{/ 2BYo@Wq@c?Fnyޚn7T><?N.Yc@ Fvs8O7}s-ŚLJ'm&D[dDuqZ;Hfw'6`00b˖1f ?X]@d%sqrw.ق 꽣J}Tz>gOGw@H2THuei3pvfyȆZ/4? hICط'ۼ3'Y0ĩgX[HF~vTj6'nRͣO [ 7P7ln郭xJs?BHA9od>*Y/ǫ=}yij5s'L—_{ˊZuwyתR>j_!)*F}VJXßmqu"Z:4/O()o7T:t(11'PT׼?zhoodgg7S @O娌2R"ݻ?jηj; X1|x+.dwBر 筷ߟ;y-Y`0L4W^)++[dկJ4rӧ:uv&䟄]OFii'~ i!fa"fڲвU%ܸ;m#5f6mg9w f%5͛7wxϞ=111W}DcNS3ϙ3gMU6Jg +$Σ OI_!z\N24QumMt Yr=-uK殥-:~\zQ^֮T*s=ϟo7tvvv\\ꎸk1ӃM9i$IF,ew>ݯ3 o錴'$ڹ<Ƚ?쳤e ?,n:2$ZVVV FQ(w߭\7ޘ2eʾ}??rk^x85Jϰ6xD-Tc.s=K殥jy%vE:mV}}:;C kqIϫ.`_ܩӧ>'xi{ggs$4;1J-jz}Ñ+l܌&Gyś1l)zZ'w!16nd Vz3K?uFjQsӚedŤI,_.:[ FOPJ5U<.lܐr0s?0c]÷FShs7_N#ѩS8H2VX,bE H2yY),_tNJHgdZ@{oyyp"bGrUwxח']L%I:g3f 7]VȪ8:c [>`+= dkijk?/d"Vl :m~؟YWJw؈V7RîΈvoZZrƎAV]`~VЧ ~S8lM$gK@ں15gsё|#;u<ŋ_رFVdq.{m2hSČS|16w`-bFYٳc3w5I- vS8 ̺P3QNg(E3FP(1G!.ÇE: W+ND#18HriΝch?XP C__ˏx1-`pR:G?n-UW+#a#ʃQ.:vQ(عW_,\]UUu>Ŵ) Nn[VG ~hG^2lMFP8 d2 rzƨ&YTƗdz殥ڴ{ߟ={`1o>7~5G !/Nu7Q,efV?NصKn7 %I:qnP"&0Ls o;~"CBbE"ZgиïuUI/q䫪΢ZmE5"KYJUҒRG$W"9XX?VS">?63;$BJD?H 'c2郭[ag't G G?pjͥ7? ?a zI1)0St#:[yc2A L6b<)hɴSlEWod_~?U8!8R] q*ñ ~3q \ |9JKx]0p1WW$|ߒq.tW X>+ͫ4M/:Qh0oG^BB0{64:_edd8;;O>e˖ӹ [d @xu{‡7 >+]/D[[8BرX/#t 2<9`ǿ{߻vk׮@"FN#9Z4R^CxC\bWIZdOœ?R!, ct̟/t2T3V\9u;wܼy3g?~\xt< 7w Nw6 MQ1v٠q Dq1F?/B!HA'$$߿3fsUpj@ߗ]7n0M;pzw"c^|-Ə:~Ĭ[N_}푂.)). +++JUtLodX4`"Au a28GA%U3F4zw ooo7Έ Z\p'ʣcZAj̓/k[=4R|w)q T,C`^,_n ոqc޽VZBuxmmm;u Ph^Y ϡؿ}QNCHA>UjEPBpjx :  ^yaf#DHA?~ȑ/_.[rҥqU{0:<Ǚ+ zp-zt)/Ξ?"#5޽{ڵsuuuvvHJJ裏WбHY 4:{AϢ46?۷W*00pg\ʹo߾3g&''hbժUz(j2dΝs6lX9K[שSɮ$) A0;ke챀ЉDO.G8q˖Nc,=ڱc^z5kVDDBl2$I3Up6~FyXdu V€o&7nO$'c {dä}ն3xwwwckggAGOF;6Aq Al,^T4L 鏵vpݻw;vժUB'p$~n+tSTNksh*t"h|9M3BfB2FgΜٱcGǎx qTɐI);Q0fB'\ѳ'6nL&t cTRR Q۞θ 8^.tj@TB+wl O^I l' ;K`pgbb2(? ?mTTTiiv"5k^Up:w#=HZ3 Gf .Dj*k8CnU}7|P*ٳ.w$BQvm]=*E)ǃuD&v~۷Ѿ=X {Y'd23I͛7o<18FTp1igS K3EMx{9HJK1t(22ΑHD$^Ї84` JrlHW|v~)SXLb#vEݞhƃYceM0g[lv+a&,[)S;BG!*OmN`cQ50R?JJ\P|9wB" Z4(Wk /D%  ysl sN:sL<==v###ϟ޽N:Y?o4\4`E<7 ݯs;p7+V(|l+9]^.\ϣf͚f}+AR@unB'2x4k>!Wx|Ɔׯ_ m֬Ç\RN_ڞ:u),,O8QO$I\컁 K{6A۹R4l± B~"""rrrÇ Hz)hJ5x?855U./^§M4i I| 7'ge ,=X /,tz&M|r6m"tttM~ǟ{n#ŏhS 22\TǬY>G On-Z#hIII>III)YfEFF%wSVhx 1A C+W0|8|}a|1 ~w:tHJJ*--6Rˇr lmmJeFΟ?^zOyr ϝ;ge4'Ojnj ?}^a@cNXW8׵sgȆ|I@@KDDD@@] vppR477)[rJWW^{-+i?7KKKXZZJ}N Jr-8kup+|:RaP\C!tcԷo߃*Vmg 8hРk׮ 0 ''}7nC@KA{xxHLLtwwxט]vm޼YV8pC^˫Ǐgdd#qdaq1Rk`iţSTض _}v-r21:tСC_x??a.]dggGGGTKj?~\PlܸQT*ʤ$KKKRx;520&7^uDElق33܉#DRfffQQQSL𰶶1cvyOHObc畒n0}:GBDzyf[[[='N:Tu)i\uVC,2t01 xMs8?欲벲ܔJ Zhvl:r6Ǝ/ 6qc󉌌~Wu,JÄl0GFX愱DgΝC^P(p!&NF˘aAW5<3 GBΟGh\4D`AL6L`&t ILDϞYI 60M FkPκ.]`fh39 \k5х؁=ss3x"1! c" FF=NNBg"駟}#Gh yij +7T:o2XAAZCJ~M^.[>_.Ds(Af W;pZ 4:۽Cmi +X~* }2dyۇ1c1gj[Jh۶={Lz:u! ÊO,|U+ؽZ +&&SN,,,j֬)tƂ~dɒ={Z[W06VBb1p aBCNC|L<=g?}޽{;wtOXOT;9fGXUlW^:Um۶m70a„ t*'j:`4n SDυ$;XmnVXϯk ӧcG=~б b[d':hs'Zpq#W  +v+-̋7sgv1t,t&" +PfB,M|6mBz0ʡm Wd +!n5jTLLLfͶlꪇƂ.k`;G%ZXKB9mSiӦ٨B/tzСlhz=cƌ]v}嗳fڴiޒ j_Gb$yb#nEEXs"'Ç㫯&t&F>CGS5]ÇkԨ1bgKDq9iPyq&*tSy31e ڴAl,6of;n]z9$$cFD0V!'?ec-|zs?|`shpr¡Cط-[ $(''~8pٳg81Jfpj)t(QRopwǖ->&vvڭZ}/yvuoAZSX0cǰ? *4gaxBD"dF]lu3 1!/HIAj*RSq6nFFqރo- 77 2 UŸq8h^N:N%)!)۷TZZP>\]xȐIz55 0qw%ggY9SpjK54+H$^Ѕx5xpè : \M{T9GZ2ZưahNРD$z)%%x%\˗ 4i6m0f Z+~}AUcccz|޺zHSXkp2\Ab"p"h]Q#4h N֭[weC,誹y?tܿHNFR22P6WFh{eK24:$)h߾}N!e,r&~6!:j5cڢfM4l޽x{ˋыaA?ŋt 99P(p6ΟG\23I̞4i"tJ" 4sػ{ 9ߵA>GvhZD$}F_+Wb"!/[[G̜mQa|UЧNگ_˗[YY=v߾}3gLNNnѢŪU|}}Ο.k`k ԭ GG4hmai)L0""=J*[>dȐ;w̙3gذa.\Gg(-ȑݨ)HtL6m^{ю;f֬Y.]R( sv&"qtJJOJJk۫W/xwww{ F/--U>6*PQQn"=Bh(uDDe)ʲ%v=vU*pݑ^rӳrs;[KVF/p_{gT*mY#777<<̙3;vرc/2hРA[8iҤ*۲SmDEq="3GobbCė'$$Xb=`b,ZѶ-쁟~ߚjR]tΎ~W.]]~q?tѢEjZ{Nf͚;v $/1c`OGtH/mff5zh\ޣG3fhw}׮]]bP(j׮$: >FZ }ݨWnaAAy}37ǫV{'")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA ԩSNNNaaaϵVTSSSrŋ+R6m+R)))>>>>>>)))_KDDZxQ\nkk}lkk[TTT*˖<}mݻwoڴ³gϺ#3襠߿}T*mll*L>}:w\nΝ;Hlrlj&&&\[1z 襠t钝R.]]~qBDD0YTTԔ)S<<i-=L_ -,'µDD0MD$R,h""bA HXDD"ł&")4Hmӵkמ;w/R':uJ D4MQQAt/??VZBнbSSSWhZlY'YYY)FK k׮BнO?{Atˋ/^jAtO/߿At,;;߶mAxHXDD"ł&")4HDJ-LMMMM%~AfffһbUevE+yyyVVV"ҭW8AbAA$# ȠI(HXDD"ł&")4HDJT*%vB($77W$zu #^NNR:^r#HCj]PP0w\oooKKK;;5jxyy͙3XhUrܹ͛שSqQQQڅEEEӇ^z ARRRBCCRRR֭koo߭[tUIvvȑ#۶m;cƌ;wիW;11QhU%ZA{QRR~/7NhUk]6<<رcB'ҙ'Z=BG7xq&Lԩ͛7۴i.t*5jR>}ŋ}|| P(BBB}UC#-GWsi4f͚J'7f̘;&$$dfffff֪UK@hUPTTh~v*Q\UeggP(4Mjjv߿ ta{HQF/ȑ#773{'M$l$]Uի?#F>}Z&d2L&t*i߾? څhذJ&_>\XXʕ+BG*n>y!C}||lmm߿xΝ(???ӽ} 2cǎ?c:u EPPJO033wuuuݼy>Oyf>}jԨQ~={ꌌݻwmVt/n׮]#F]F={ܹs{o}g~"Q!RSRRrCƍ%0VzzѣGkmm $**:h4+WlܸQ,:h>|՜ڵku]C k׮Z[[=z?Gbk  ɓ'cR/Hw׸_G]9 ]xqB=k/#4!H9k/z1R+h R/Hw׸_TuR;1rȜSj/Q*K.Yf^T 5u֓0ZR+h''rw T*RUT 5Yl٬Y 3%##CHR;!{tBL0_~iڴic$#h R/Hw׸_tȑ6l:R+h^ ]~A*`AIAI HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4H*ɓmڴ3sss$MTY͚5[b)ȈI[n_~xxxaa!;vx{{;99߹s :u":t @R;99999͞=[jnٲa޽[m;ֹsg틜""ڵkN***3f̈#4,YDVϙ3SNfZ{nrr˗ܹcoo_N:o߾ѣU&&&IO+K~֭[?ׯR٫W/GGGFxɓ'k_pرcaaa%YYY5kTϟQR>WDGG9rDRivڞ={j޻wVXЏ??O?-{emAWܹs...:ƒUtWWWcLzꙘhT(.00pԨQ󎣣 [hѢE޽{ܿ>JoOZ_?33ݽlA|}}===۷oߠA~7IXTd2٭[cccwQ~4\V6===,,Ǐ믿d2ϝ;wܹիW;;;Wr[jZ611)O{| 㸸}<ޑ#G=<92:,hn ڸqrĉSSSs3gΔ~' 057s۶mo֭[d2y~~kS\\OzǷOKK+,,\nݓV ^z+W W^m?Yr_~ȑIXT⋞={6ms񞞞Æ {饗233/_mǎkeeլYMi&$$QFk׮9rL&)l;~z5oIO~N:{͚5{׬<omڴԩo]\\aÆq1);FDD#h""bA HXDD"ł&")4HDMD$R,h""bA HXDD"ł&")4HDMD$R,h""bA* ^ endstream endobj 37 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace [/Indexed /DeviceRGB 253 44 0 R] /Length 5180 /Filter /FlateDecode >> stream x XTejYiKii䪢^2ei^f6#mYx)MAfej)fn\%K)yE1uPB Tofz(o/7mZs ľKu߿C~RQ.zQH՛9oMRu>?6r^߸ӇDWL-J476rRNO?bͿU:|)~xW#% F_Ӧ5@N(ͻZVm^2^Qw?EWe~3{iӚ[ B!B!B!B!B!m*SQWwaND/||||=}NX>MUNf~ew86Se[u/f{eT.TLn| ﲶ"<߫ G<3fyj?K_C ߚcÃ' cD$/F]b. |1Q_$Ũ/F]b߷z5.u%| L8{II|U~Ui#?_C׿W/yZy}w[/^ 0EؾRUdHU}]|~lOi̡@R߫}fgߕոA9}tl8({~ ,_Up_GRRT7ySGGo06;K:~>޾ӠE :ݡ48S2瀳}]?tKRvlcSNlhߔ]B&i<ڥ9oO.@z]8*NKNK_-׿z^(c_ZQξe=AؗVDofK_o/fb ߂sRF{ymI'쇇mZ{׷AF6ZrVbfCF'tIP9е7%%eg~SBזsq |^t;|%s-Y_|8A}iηxim\V*oIRZ;N͗5]tηгVlx|okF^Z|+kE'y[N{W%|ҫ;||>KT_zy|-פ=5}i{ZqzzzcVAZՔ/—a×oDZjHGҀ{st[-w k:|뮧ë^J4w(j.s[g6+H|av}7÷Zط'*Wߗ[W+G}춬Bd_W!|D Qf"ʺ4bco'}˼Kko(fΞ'2ccN+HV~ lkqi[##Z;ߛ+7F_ Fj0z_;}|de9tA5S=ӟk\LLYhA;&痊{<fEZw|pbNyNrD1|iT|op{_WZ7A|k{CǮ3{}Mi%dƣ](,]8*NKҐ?{]b[O/Z缾;^oK cTK#Yᛗ(01nZ=tER0J\AڿGsoރo>h6Z+uۥnu~owR }ؗH߿Qݜ2ץdirӥ I9߿as_o_K#Crq_|ӗK*/EpVJ_/_RZ_ԸI _󗌾=ع#[JQŷMdni$+|1sB92.3O' ƗHz~<2>ӝ/} 5;M!Q0.̖FjϟscH[IͪnacGH LCGzHX-xZ3nPt_Ǘ+'$Ld׫R._ &n|iVu?m]Oqe4ҭ^2I./͌׸|YЂb3]8*NK|,dE)6Xh_ 9Qe7sLW)|4lFw]i mks4u%Zy|,S| | |y>ER_iOՆ^)\}yl|-"9})s8'ow~?gz`ξo|tEn_g%O*Wߌ )t=wS_IqYԾWɞ(wܾtSt/]%Ӟyv:yt8Kumg{`t3/ ~/'GߛϿ{/c_:_ƾ9~k*<3_dKy3l+_ OJK~9ZRN_JRB@>_ OK jm;pwB (r~Qܦ÷vۇs-|,|oc.H1Φ!%|Vھ#mxk#E>s[>laydSMؾD'SJlwP`oń of1pRоUWeWljL}圿Φ~U`_I篳WmnR_gua ;~y: }_#e T"}=L=u4ik:ੋM7eocq~<#1u?_V>תxix괣W[e1%oϗ%5~3P@K|mz ЇK% [e~9*Y}4u?_VJK[xH%뾃l|pbNyNrD_h-" 5@}k~n3Ѯ[8Gq|-|>ҾK$G4֮0(N˽5?__<ߺޗ/r{/rs_9|$[ArW|9wڡ&WNy/N:p$ڡc[Uq.= _9j$کt,_{u!&n}w KIg_6 vmO@|9rn{P |9\__˛էmT_^i^ѿ/Ӵ^yDq/Y|qf:wĊZ$XaAc˷+|fl _.O—+#r婕[ֆC#J7?]uA ~uˌu.21ٛtW.l ۚ_&D]{cL= *z?"|ˏ մkE'ˬ+;?gݻ*Kޫ{r2-PeX}?3R˴Ծ\_?hU /| _____B1]j^[]7SmQkϭ\k4z ^|aC/| _mT究pEC|՛L/R/!B!][ʞrHZ_ՙ췗(CuV'{+s:6s=:mYXXʞ++}E{~H(W=G&ڠ֯}-vQHw'*?mo˺Ϗxyiٽe@*2a8uv@:۲7xٌz`u4'U)S*Ky܍\#{/"]~4Rw..w).*yo*ˈxv}E{.5]CUHNjSo> stream x  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~o{< endstream endobj 49 0 obj << /Length 1002 /Filter /FlateDecode >> stream xڝVK6 WV FEnNS:[-s-:__l9dt aGVE㜖 QҌh&'9dUg%y jQh3b'' cvң-'ndL`D5qRHA>O_85j Z(aV"psAtT5?l匹8WbƄ zhwY5 ?zqmtla=ewt9󂑏W#ga5ƛ?М?/UhΧzsO(s҈])fnrX~)WM~Ӱ}d ?"B\ٚ9Ki.$bͩpL,L>ս!R.0A,?ZR.}c#QSbR{ kp5\/WL:I GkyƗSϱ(jg<ܸNR{`٧ .k2[6y9%Yiϥ"pL'ʌc5j -Lˁ2t `s[0]_%"_Hbw6 5438-wX]֬롗%eq>g;5)q )veI%zi<(=dT a>c^azb4RQ]t%Q<+C㴀mpnϤZ2*W FȟԠ;8}%j ]6W#Lk&(:#.p]" rݗepfPG 9\AvPhtmڢbh_ZR.Yf˿ќDuP $s@@="VQwUצk=3u@a>B5c!ͷs=j$b^Q,گ %¿jKx\_|I_ҕW<<."dG.â endstream endobj 38 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 7341 /Filter/FlateDecode /DecodeParms<> >> stream xyxT{„ld! !(DPv6 4TPKE*^TZ(xբD-(e" (&@`aɾ{#87לs1|=1FY=4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"аFuuS\.99ھ}l6[׮]~CCf ;'g?D4q5׳缞G0`z< Ϸz OA"2`e˖UTTlm۶y 6dddDEE >ܻTWW?;w>|=zh׮]{YV\٫WQF?~ܻGX`f[ubֽ{^{-%%%99'hii9MvWDFF8w9녟ڵkE^8rȱcDM6;vK6쪫cn'++fWTTݻWDtؼyѣGOؿ`l=ZDn]vyED~_{Fno߾W_}fKJJ:ysꨨ3Arc̐!CD$55+AifذagyƜCÇHJJ7k/|慟;hXcʔ)߲eKYYٙ_4i҄ 1_,\0((hw}ɓ'󳳳7n{uu 6vƌ?|˗;p̛7{LIIyg}g=s+W>v}ƍݺu[h#cy^zumϞ=M%! n;hhhxꩧ?7sGIHHذaÌ3ϟv{`o:`4.qR"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R[=ŭz am} /J*RG"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"3k֬IKK***zG믿[g͚UVV6xoO>$33oӦS]]mP٭9r_}cH tDDDDDZ~WI&,]433qhy 7׮]V~ \9sx<'Ν;w{:::‘x=sL3Q4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"V@Z=yQ_+vସ4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@ 󓓓۶m;rȊ `k:tuӧOz"GwygcbbƏA'ح5jԨQ ϟ?~x'`NzZ= #qx]{sE*={^{:##rY;!2o޼?σI[8p7WUU]uU-z"GZDM6m4$q@` 4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"VXf_jj5|GЯw[=w4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"9Ѝ=S9SLyWt@o߾aÆ]yΙUV[=,;vիE|ĉC ʺ$ǎ>}g?utMK.]lٸqۡC ?ߌ1wvY= ,w={z7|⪳oKNN1bՃOwcƌ񽎏={vQQQXXXB毼+W.^477GFF_>##@{ァoN2r,Zsuuu@=ڪ9ȿd@4\4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@)s?Va_}\I4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) Jfj#GZ=nEIIEUVV@777WWWZ=$n0m۶Ç/))z"GvK,9~x=ƏoD|1hРիW{_O:599266ک ;輼O>:88UV!!!֎~@;vlر{x|xDDC8nÇ9vȐ!o?0"2yɓ'[=$4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"V@}|DDn18;@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP*0}o166633󫯾zG}w;v뮛>}?Vp}ǭ[0a<3VO;'%%qƍ3X=#]UU3/?~?0ƍ2eJ^^^UUCܹ5l6 ^[^^n:3o޼CFFFZ=h'|211q .z"G`+Ϸz I4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"ORY4)r;tV5LDи]]EaOUw;*~M%;Enq{w$" Pͪ KYupӡ||im($" śݍ5"U"\Z<7N6*1"PT']t "\9|ק|U'r?(Mv4] ?oEeEK|>kkv9XMD>۴hInvK}'l][D/hqy{c+}}Yxdί|˪+unont49׾'"y닏]%"/mHDJJ6KO\UP(" lir:[Z_|qRDּ|Yfő/l/r: WlaeEo_l?go܏Dd{t6~=ٶ}m{|GK~YDnW}MOT:ۭmߵm}MUW^&"[1f;oH#V9h{} cLmɭX!".xk}SDvmdP/"r:6OxܫE%VCljn>rvt9YvUmU&qUHMA]KCD?%"lm:*UՊɏӜT)"u-'YPTU;kEJO,ԭb\}Ƙ 60ƌ53L2/׿mYf̙Ƙoa<1fɅk1̝;wU~Y1_}KK˞={&MdyGNaÌ1gZr9s1]w***zG1=о}1/ի}-[6o|]wcx;vrq}| ;hP@R"4(E@) JhP@RjsY=Epv'%%o޻xRRRGZZZPPnѣڵkddoU};wp8O_u嗷itzW]r%ڵj۶mrrׯf ޽+"""Ng~\.Wǎ|bcc;u]%"!!!ݺus:ݺu w\.SN:v4Ƅ^qUaaan;--r%''V_z饾S]~gϞo߾n;99966ַ*!!K. ڵٳgHHtmַ۷VEDDttիu6w.+%%%&&w'%%+"".s8{ իJMM>*TѧO]t:tŷE]c (E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@R"4(E@) JhP@(,,LOOz hP@v'M3x|饗RRR}Hqqq~ aÆK.d̙"xq 0 ::zȐ!Y>㴴o Gؼ镕ڷo_iiihhݻ'McDdŊ^zSvoҥK?߿cLAAAZZ1ɓ111.wȑ#z^k?<~̚q8_}Uv*++O8ݳ}GlW_}ucccllllll\\wA;VDz꩹s疖N3p,y:uTWWwyG :{'Op8f͚թSlWLLfVZ%$$xlժErrnԩSYYo#G{ݻw=zןy t"и|'N1cY{?ֽ{nݺ 8;뮻:vxM7׿OWXnX`Av>%Kxxu7޸"1 ,^xڵ-z;q Jkvʺˬ><xJhP@R"4(E@) JhP@R"4(( endstream endobj 45 0 obj << /Type /XObject /Subtype /Image /Width 480 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 5517 /Filter/FlateDecode /DecodeParms<> >> stream x}pIy A^Z\h J]Q ci^;eLJ^/Ԗ- vaJ#Kb PyH $9pAsrZN y9x~Iit@裒~=7߬2eʡC:4nܸ[o?\paaaC=}/Q__?k֬}^r%/Nd…&Mׯ߷$IN֙h~>uh/z7^s5=P3?7oo^tE .1cF$%%%sݽ{oݥK?I?~|xg/Қ5kf͚5uݻw'I9| ƺw^ZZk׮:t(I^zuG=ztYYihټT*;wnky[<4S[/@vu}޴iӋ/XQQ4>?p={׿^lY3wvw=re˖}ᇏ|Qs]w%Is_t2p+W :ꫯ|wcǎݳgϋ/XXX%N?{>8^T+g׻Ӟ?E/vWi䥅݇ ?mчWt;/]eڗ~-f{/ ~y2:;.W.W^y;bĈAzҥKz٬ KJn._vo~cǎ?яrV3*Z2|Is@dU$馛n$I,Y띚~h @%AwQPNI%y:>@|uvϖL8z]֐NZz?IC:/u/N68vE]i[8GO8vithΎvd쒞 s?Їk8W>tkuh (@EKeܯƼiaOk"Aju-ҥ'|j؍^ػk{]UUUVVV___VV6jԨ$I*++o7_jk- mݏ8vYOWV&ՙK왻5ڣǙJ RD9@7;r;1˗/׾vm3FP~\XmƱ4 [ҕ.uMv+mKW8_Hxc+#bǎ;q^xaNK .lzw\ m(oKv #b_yYf >h:uԩS|͹iƍGĦw۷o9rdQQQmmi{pv5#b3gwT*uwwtnѫoHqь7ܦ~=Ek.xhO~򓳾Dw৫I2: *?z"ؠ Vاh <9ݲ=K/8vq+nyp{Ʊ+.+gED6e4hP{knllNJ (Jh (Vq#n4j@ [aIis_^K td@\&N8a„ 64>S]]}N??ǟzηCczٝI8cƌiӦ啔4\L5kz'A%A 4@P @%A 4@P @%A 4@P @%AewhlW_}b]sn<4vŊ ,hzGݿwв;4nܹӧO?mrժUׯozxe;49s믿~ 70p۶m;{t8[[[sرgϞÆ ӧO󅅅M`nr1@ݡO%K^{t:*tPzO=+..,((h< L=zZjŧ$ɢE.]pΝ9XcLumܸqʕM4*-----mzx7bW%3 7iҤ$I/_ZKtDٝI8}ܯ@ ,Jh (Jh (Jh (*Cc|3 G۷zh4*//VUUbWhC YcߐoɆYnf,v&=F]vӧOÙ3gfD#G)$+/J.-59?%;'IһyuЂZ=+씗̯Zp ZP~=:'Irg'5f$I-/=qڿ)N䧥8| 25^D] wN>78ܧK$IfHUI]7,I~I˨+*8{Հޙ_pU^v8V$I./ 8ܳsa$y3w˓$:44(pRP$ohdKzJo_I?=uO>G1a„իW3Hs={vN뮮]ر;hzfѭ(@G\hCJh (Jhx≶t׿k۷oذag}>Gv9gΜ˗w/o\{Wkkkߎs|̘1/mv-{ùS]]=mڴ^{ꫯ3gΖ-[ 7ps?]jkko6Ω;w_ ȲeV^}5k֤yn^oq|A9R_ჳ5ym?}&M$|s=:ujNϓϟ_TTtGΝ{MRw_oܙ1cƴiJJJ;p|@P@"a 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P @%A 4@P v{ endstream endobj 52 0 obj << /Length 1939 /Filter /FlateDecode >> stream xڍXKs6Whr)5MԇgzhrIB#*A@vˢzl[FlHh: ٺgGfgxMGNL SW~t ع'̧zdyԜf?12U Rp2IlTxU&:lpdv4O> <ںȶ)SŹ8l1' G =U9&v[Fgz˧1bL"֞]3ٖgxA8>y ,J4)R;ߴ2)n;$ZpQ2WrpX\Ӈ}ZDLs$u tD$@1R ښL(ua끉2}*^_ W4Cׅ4*lYD_P6S?0-ʴ֞ fy8]"),4[zޓUs#%ay |8p&%a8AQ@xI6R;}SK)ЕURXgFcE˔ M_ԩdp+swX6^>_tpCLa#UDq zv^ó/hP܌4o& ;'=Sp) QiUA'5Ԝp[˄{u9IXe:<{sGJ[D%\$]@cl vtģ?Bxy g ZAQc*Χɑ *zd 'a. LvP0TadI]}23S<|JaOOORV !r2 'RJ ñRD?!q#[ADI*dtk7>;o\͌6q"$H}8ܾo0/ɄX}k̍&V_jʸd\.&(UBzJ*В `so(#Y,!w$uAikaG$MtZ44 d kO]$ ۏjN0Fz,Ω^S,ټ'| SˋT:RlTED+~wT3E=J4O8 > stream x |e~'MdF^J "Q9_87jD] 4z4wVs^|VC+Ʒ4'z\y$,ty3lv>;ϼg7f#*qy T_a?fmhBڴt5MzǤG_[:#u6U,jIoEl+v\tbsog% ڃ ki/=p]o6j~nV:K5lm&7OEló_R=a8Y_IVOlH++fHKc)ڷhWwV:KߢZJkN1bnԋ d}MTض!:yUԍ,"Vhhޠ l{Wې9]=JNջl&tv؇i+K}ܡKNZd+GMt5-@7Foo%mg=a_6;dd|0NJ6G7⥍i-@E-7nF(T_G3~YPQ_ϩy:g"&y1G:ňj~g\A':y]{VofD+}'UT$mh-s ^6[K^WTIJ9٩ύrM9de7*J[^phߔto*_$@;~%CvI/l~ǯ%9e#K8byBd~i~cu1$'w ߪb$藝 d?ݣߌuQ~o~ݕ߹?>d|fg͔߻PUDxz;>_ ¯8!sתXxu fzoZR3 MWX<9fQHHؤ{e^______U?}d5T80ĎwHJ:Z~:yv(_X{V//zRE~~~~~~~7G}R_5G[*ht U-ijHg?ZJ2G=bF T>~ӧA̩^'5lQ'b6룅9] eS1Q}זNxHݰM1|yh+K9#!C{ǘ%}~[P -G,wcߕ_)GLT[n2RALT[9$}oB1Qo4B&/ /_~4RT|D}d[Qˊ~񹪪fJN*~ _Lҋ_6|eJF>;+<~]s0'ܮbv|YY$9uP߸IeheYW*{A>xvѯpg-+-_EmYdsGVJ` _Oʦ_su]m4R/~hAm5.~y+m/¯Q˯xOWڨg/A~߸=8i)LI¢8hHU:bW~aϊolJkv.g R=6v~8*+"(=LB~KɯyqRe⿃%S{$ igHzMk+.~f^Nq|mVCn~Yd5__)J&^ga4ǯ{dךA /@CE8_dLfo\{.WTFف7-@}8s/ۯ9~ *˗_96d_c[RR+,s4;_ï=05;'ʹl,sHT7։ov^JWXYK߿0~.~+3#bۚ_,sTB4>+<~ݯL~Qݴ_`}\+(:~Q8 NߐPկ(W/:[fu ueկUib_ K,~L~uwKpqtJ~Me2*ᔪ{&UqWx _IPg7%]k? ./ʔ 5~J3.-&fޯ4~G3 UkW^!X,Tvee:yalS_ e-t^W* B9>AvxCE"ݯ*_ߕukG;b#_>%ܼ+ï"~]~ ~sƯt077ڏ~7~}~*IyWE~~UGc ~s/լ7~͓YGC"WA,D_5~~~~~~ך_h)*JeQwU//65^}@~3eE0j #% WW b/~~~~~~~s9-U3Ŀ=!wNA~A"29({,d#`vgb:#7}Ĝ+,mhBڴt5MzǤG_[:#u6U,jIoE|??~Cwv-̿A{pa#s/Ч6ڗT7{D?\7ji+KEn6Ӟ3~aZ/V0$'m}fE3Iwth[i+KEoQd-Yt&nԋ d}Uaͅ=fTgk{˒RLss32ŨLDOsDn\{ m oaJV g>vqZGYD%C{_Ikɽ4KBnCHH7|7qf*I/R}qWoUU%K:t+*Үo|zi~ak~leWA;v7--gEE;95}0 q__8iHns#xtiɯX1.oML1e ' ?zҞjR*DoN;Z5mnYCw@<ɯC+t `gq}hI;`}į8[7/~UWTveo > stream x g,#`a{Ϟ5{℄Έ+Z1ER+T\qFBZuDYݽyEDDDEE%$$$%%edddeeUTTTUU544455utttuu>Pwpp NNN...nnn^^^>>>~~~AAA!!!aaaQQQ111qqq III)))iiiYYY999$>///?? ~.---+++//BUUU555ֶή޾AD"GFF{ף(jlll|||bbbrrFOMMMOO 02]YYY]] \p8/D Px<~gggwwwb@}$$BW/L&onnnoo(=Jht:xg? 3`=38/ʦ;2dX,sp>x<>ȑ endstream endobj 58 0 obj << /Length 1976 /Filter /FlateDecode >> stream xXK6ϯ0CdVdkͦYn nk[/L7﩯M!$V,UQ}M2?Ktu{ U(NV, =hk j A `jK B!uS| aX]wUo7;Fp* ˍ_o V0)놶<#Pnk,$4&78݅6]ޛj0}2+=V-zۺS,Uv ȫЗǢ1gAD/ 봕FoviK:Ѭ܋.{,hau q- WWqkH$grǀ +û*{i$l|sWqňb1Q}uVė,EV*q;( GyZ||Y3ۤsAi(Nmq\wFm<.:; PC1j|7FRm8-zc\?l;o$v(C PMBmzS'*9vs@&RY `|/Dq59I0,M&碖vX1N@FT0}\CeއS)1VۧiDW: 9\UuT]@Fm<֍=էPIRB$P *#"6_i by/Gv~9ygBʊxTI^ pfv5rԃtr''c m+Vb~ DT|HH:XrJ]:4Nu/I+iI5mtIיڑOMp NR 1[{ Z-d{H*m& pR\idֲYF9d(kAQ[Rg÷=-&mBƂun,KʂP4l!qk #}.5VQ͈QMε &ɌKB7j5 b"P0&f㭒 ρGSIT!ȑXe7B:G,:8 ?C󾴈|\JՃ!R% ug_ u7G̥R??"YEbo DEI\`%]i932>ALeu 4s0p-)99\q> stream xڭXKs8WrLSGl:YLg˙ ,M@F챚}Hο>~8I£8TUSjZ'A, צQ{7ms_.\x_()x{kJ-=N_$̼6eyMekѶBE_(~Vj4Q^ ֥`g3ן^wC7ܡn?7@©Q<}80z(kSi:,\@''#=㯪O8=*0//ݵ5wx;g䭭 ˶nmG fImxF7~%풼Lnڞ:Qbk5QLVl6 z`j2[?EE}*0b\pj` &1"a=> {}FSw ũ÷.w{ApB"َ #dvKyCBjZn (˃\qk6Gy 0g!ҽ2uK4כq23b! OfdEtCTpYiZr5@3``LVJ}wY/x'@D( 0"P1@nqH4S+G# L+:ABV:gֶ+(Xk9ψY+ҌU='%tAҁ+3H2(@|KPA%,hg {ݵ OfF Z^qq՝mY!uzX/ %LB<JR:(h@ D$Sh`#TEȅc7 ^dWV@%>e[\U?z@N7TkqMws.VTM#1 | Dў-؟?%8ڧ/aA+y@PB"&ϒ)?S#\u3dW%\BU[9cJ`w(BtOqW`#'; :a>tg5bM45 QK]/"BLVW&U9ߚ4+(ۦD"z2fH%SGHDB$<\IFUAI"dbEP9B?#V끶k>8@UUvߣq. +v@c % nzeV$[7xSukˡBgJƷ\_ ݏ@+"VihrMPb(MgO}Ыp5%j` ۹ iGJsz ۫ rAy D.5xSR5Ev&|q qAHrq,Y|۹>p52Mכ~u9Kgy.|Rxs>&R[> stream xڵUKo0 W9@ٱDZ]WJ"Ԗ I^?RTfi Kջ^q]fH*.|Q2^g|i?:M_omJ IcՠպYU%>r6 K2jV:{C+=Nф OZKIq~@֪$enStv Uh9KY^2AGUΨgGNd =,NxʄnI6vm.l8m+[$}PxM94|}?"e eFNϩ" h&[j.V'[kUAG.Zti]euŬ3S& oH#o-`T1_;5j&^W8!á ^p4a&钑;X/P#Lpfǥ5Ud[HjGw:0]7f;pa?4!_Hqp .ɤfwr4rv7T2uT6p H)#GW6W/ endstream endobj 65 0 obj << /Length 170 /Filter /FlateDecode >> stream xՐ1 A E]8;v N!he!Vjih{9GdQސ<~~ ~p\p/J^[ѠL}V[9J2 >2tȖL ŒB@.Y*t}4Ik\7B> stream x}бN0[#[w7kѮ)5ڂ,HY1FuE1$̝`ڳ$] ciiǒM6jT%0`t)ߚڣ0R7 A\tdC@f;w75>/G% endstream endobj 67 0 obj << /Length 159 /Filter /FlateDecode >> stream x333T0P0bS3SsCB.S# I$r9yr+q{E=}JJS ]  b<]CfPLC(~ŎB1PX ŀD@!;7UӀj (PEqzrrco endstream endobj 68 0 obj << /Length 101 /Filter /FlateDecode >> stream x3632T0P0aSsCB.crAɹ\N\ \@Q.}O_T.}gC.}h1\. 0 u'.WO@.y9 endstream endobj 69 0 obj << /Length 138 /Filter /FlateDecode >> stream x3531V0PaScSsCB.K I$r9yr+Xr{E=}JJS ]  b<]V0RP %B٣P?bP8(.WO@. endstream endobj 70 0 obj << /Length 165 /Filter /FlateDecode >> stream x333P0P0b3SsCB.S3 I$r9yr+q{E=}JJS ]  b<]A ?Q( 2%O&b Pk!: @'@q%vՓ+ 0( endstream endobj 71 0 obj << /Length 152 /Filter /FlateDecode >> stream x3331V0Pa3cS3CB.SK I$r9yr+Zr{E=}JJS ]  b<]ANi Z@5`NWiffI3i04?(p\\\wG endstream endobj 72 0 obj << /Length 199 /Filter /FlateDecode >> stream xuν 0+['0~I훙G#t =猪!ARG4!3vYW}؟pRP>@}vD?YM)C?mFAh0Wp(Ԇ&R_GWRM1|w5F ]5IW'C{p:V# \ 8.y endstream endobj 73 0 obj << /Length 191 /Filter /FlateDecode >> stream xڵϱ 0H- Lj3:9::(:O'dP{^CEĐ<%$Q`c^ c4 }p̀4]Pf*[1.h&GA}1t@%c55l)1(*zúg ?q[넭Da_=@M 4Bڐ3'`a`Ot턀 endstream endobj 74 0 obj << /Length 184 /Filter /FlateDecode >> stream xڕ; @ )Bnb*#X٣(9BKY#X[?MbJ]-(9ktRSZ*KJPUtH(>> stream xڵ= @FR2'p$!v-,J--o d3<6{A\Ƹ+ [΁Di,7P3P#eƸ֠5->E)tDL̔Z&U!˧m,Jy"LXI?嵏]&^-VgǞZn$̴ɦp h endstream endobj 76 0 obj << /Length 191 /Filter /FlateDecode >> stream x]ν 0S:w#>mб N(Q3 \'3ʇE)rF2:Rߥ}ה$S2{Z|)/&QR:tCuňC:DvG|iFyV;tPo07{KxN. P5 ҂5-Qle endstream endobj 77 0 obj << /Length 264 /Filter /FlateDecode >> stream xڅN0 ]1Drop @ZUt`b81# xlB$7bBb"~??;㺧j|ƶoE]p3A{)~=\SvK;rJxP0w4{\ .c9N]"Yp&Zmm1B`XX 212sP)HrL51UW[$tUݒYņ'r endstream endobj 78 0 obj << /Length 157 /Filter /FlateDecode >> stream x3530U0P0bS#S CB. I$r9yr+Xp{E=}JJS ]  b<]3$;d%YH2$@A6W  H$r  WH endstream endobj 79 0 obj << /Length 122 /Filter /FlateDecode >> stream x3235V0Pa#SSKCB.#C I$r9yr+r{E=}JJS. @-\. 0!("3#! F#.WO@.Nq endstream endobj 80 0 obj << /Length 198 /Filter /FlateDecode >> stream xڵб 0J-}TZV Nj}G!̝:w'dfiYNf6\`w4=]/tbMf u~CQӈ*SKc;[ȩXeٰcF:ԋ!1H޿B !%ԉ=ۈec'l_ق0aOP endstream endobj 81 0 obj << /Length 105 /Filter /FlateDecode >> stream x3235V0Pa#3S CB.## I$r9yr+q{E=}JJS ]  b<]3GBqzrrW endstream endobj 82 0 obj << /Length 188 /Filter /FlateDecode >> stream x= ` C!GhN"  N(kyo =7:8pӺ.fϣRv39;6X|6|GB%%9 " 4Drr{EfV5 RגS^r_,IQiN[)%[y/ [> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]1` g$m7>0`l@"$'W  endstream endobj 84 0 obj << /Length 176 /Filter /FlateDecode >> stream x3137U0P0bScsCB.C I$r9yr+r{E=}JJS. @-\. 000$700cA2 \ i$ ?l 4b>.d!p!dr~$_\\\-in endstream endobj 85 0 obj << /Length 193 /Filter /FlateDecode >> stream xڭп0$ h[I;`A3>#02+hMK`#8c1qgaSQH-1A9O=t1A*õA]OPöJAy)Ir&~mk]{77xܿf}N$nC&L-, endstream endobj 86 0 obj << /Length 144 /Filter /FlateDecode >> stream x336V0P0bcsJ1*26" \.'O.pc.}(BIQi*S!BA,? DM}?`@8P$` 4'Apzrr8W endstream endobj 87 0 obj << /Length 187 /Filter /FlateDecode >> stream x%= P7.BBBQy[Hθb2+$+]n: 2/*NrN7rZmx]9]bJV9q*> stream x3634Q0P0bc#ScCB.#K I$r9yr+Yr{E=}JJS ]  b<]0<z @?bT 7~`@400cr pR endstream endobj 89 0 obj << /Length 149 /Filter /FlateDecode >> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]30??@5J2"0?;lA*r  endstream endobj 90 0 obj << /Length 199 /Filter /FlateDecode >> stream xe̱@7&`8ɚ( BX+ RK EBɧ"8qaZ=y$/$I+w良`=,g+b*qz;D$K.&Q~8-x)؇% Vd.hUAmP[0+|D0|D] zy^֐}bUc\6??#Zh endstream endobj 91 0 obj << /Length 236 /Filter /FlateDecode >> stream xuαJ@9R,Lop'p=pSZY՝pE h({]#ZFcf˳朻Em%a⹐QWthMB{[ݝx|A6%ڭy*M\K&#d!#POI* MD // R2h``R̓m\Ջz=@>6m8}F}:1Μ> ,Ef]O sSq0iTxj endstream endobj 92 0 obj << /Length 245 /Filter /FlateDecode >> stream xeϱJ@YR &^SZYZZ( W$/%E[nnY|,3[%t@{!4?dS5}{e ݹ5nyyJb"fo87a L{kqEoڛA IsLlL;q6,)"pk'a 6jTvMt%yp7c%^ +~o endstream endobj 96 0 obj << /Length 149 /Filter /FlateDecode >> stream x3135R0P0Bc3csCB.c46K$r9yr+p{E=}JJS ]  b<]00 @0?`d=0s@f d'n.WO@.sud endstream endobj 101 0 obj << /Length 244 /Filter /FlateDecode >> stream xڭбN0 `:TG_ҖpCL &`J~> Uq,ĉ_]"hKZ_=n ; Z0+5RaK~5C%'>;*\ $U+u+}e'}^ܧ_"dj_V˿*'1S9}q2.Wl9ɒCТfeDE3vgZyٴfȅ endstream endobj 102 0 obj << /Length 197 /Filter /FlateDecode >> stream xڽ @ p؞:jotr'utPtnG#tt(K>ȟK'S7xp> stream xu1N0E49BM,)@T@"萒(9K. #3?pW=w<~(ё6[;ϝFOْSxϟ_dw7qB#h%^J"s-,&ï& M ugTi: d)ȧֿHee_3 Y}ETԼ4rs$jYh%t;#k} endstream endobj 104 0 obj << /Length 127 /Filter /FlateDecode >> stream x3532Q0P0b33CCB.cK I$r9yr+[r{E=}JJS|hCX.Oc`'\{0 ?0%\=Rm endstream endobj 105 0 obj << /Length 170 /Filter /FlateDecode >> stream x1 P t*d |BB`A'qRGE> stream xڕ=@ #0e't$$RheaB5pJ 6&Wd^狔cy9ƹjzPRei.;-+RGN R[&U|H-+֤|Z3/PDx"_  {MءlQ5򃠳RkD0qM]Is Fk,Uel m*:9n endstream endobj 107 0 obj << /Length 172 /Filter /FlateDecode >> stream xڽα 0@εIG882:Ht>85g<G5oHYc\lːIN͌Od>"YJq&S"EE\-u׋p*X&.EZ7-}K7-^D_~417yi endstream endobj 108 0 obj << /Length 227 /Filter /FlateDecode >> stream xM=N0j K.Yo?)@[%h(pGH"1&+Ai4絻RF.x/~-O_yUì o[^fv'^TGnBe*TRUCQf4.,B"tF) F#a~̇ Lͥ2~"1e`9Cf1YD5- VM4kcЇA-ʭ endstream endobj 109 0 obj << /Length 177 /Filter /FlateDecode >> stream xڭб 0+ 4%q- ftr'>#t =/u AIn(ƚ!kxB%N_C!Q-$Ft9_Ռ$h+3;tA|y=8ނM?`|ҋ-xI ,vQOzxE:Vv܄#Jsk|jVmx endstream endobj 110 0 obj << /Length 165 /Filter /FlateDecode >> stream xϱ 0]r cptBp" hX ;;rpcHQT2kv%d‚ϧ˞L%SrPE^ />" _*?_^ӗw/ķ=yD-L@@+z]l endstream endobj 114 0 obj << /Length 199 /Filter /FlateDecode >> stream xڥ=@PL ȟ b&ZY+hxJ d)-bߛy63f%gtx0e5$ jOaj:*yAUlQtєg&̛}Nr 5r^ a2ʮ`i`r_zH&=| z)3WwFHH endstream endobj 115 0 obj << /Length 203 /Filter /FlateDecode >> stream xu1@EPLL 1D+ c&jQ8%gdB-^6gߑ;dO\q~ƨ4 Py*^r; SrPEqbtLR~3&0 > stream xU @ O Yxw8jotr'utPQ5I-$f2c-Z)+GZv*C@Hx=Π9sT/Ԩ"kF㇠ZFQ"7!\LŮ{kw; #e%(𮈻i^/aTtY!)y@,=l M>k endstream endobj 117 0 obj << /Length 167 /Filter /FlateDecode >> stream x313T0P04S5W05P0PH1*26(Bs<=\ %E\N \. ц \. 30߀JNa!?#I0#;xI#> stream xu1A50]c&k%P)DRAhQA;C_ V:F:i]yYm)5КԸI T:"$a"X B$֞?!#rljtjCsehx. MO {}RmU@#C3zT endstream endobj 119 0 obj << /Length 203 /Filter /FlateDecode >> stream x}Ͽ 0[дtj3:9::(> stream xuн0[xDD'㤎]GQxFB1K~\q4CCM1x "֡ΐJ[1𥎁ޮt=x= W3ƼVTQSc6CC55Q>Rp(s5Mے`_==?ͥGrJ"ZSZ endstream endobj 121 0 obj << /Length 107 /Filter /FlateDecode >> stream x313T0P0QеP0P5RH1*26 (A$s<≠=}JJS ]  b<]P$ 0,) endstream endobj 122 0 obj << /Length 151 /Filter /FlateDecode >> stream x313T0P0W0S01U01QH1*26([%s<͹=\ %E\N \. ц \. | @ v:QAA=N ?@J@#`p`\z> stream x=1 @ER~- g`#8RK EJ4RZ(ޑ'̨i> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'E@!ncr e endstream endobj 125 0 obj << /Length 124 /Filter /FlateDecode >> stream x313T0P04 f )\\@ IrW04 s{*r;8+r(D*ry(0|`??0 ? v'W a* endstream endobj 126 0 obj << /Length 118 /Filter /FlateDecode >> stream x313T0P0S04S01S06QH1*2 (Z@ds<-=\ %E\N \. ц \. c$! b\\\ϊ> endstream endobj 127 0 obj << /Length 102 /Filter /FlateDecode >> stream x313T0P0"3#CCB.#)T&9ɓK?\ȒKCKW4K)YKE!P E >'W $ endstream endobj 128 0 obj << /Length 137 /Filter /FlateDecode >> stream x313T0P04S02W01V05RH1*22(Bs≮=\ %E\N \. ц \. QqC=C=2p\   \\\8 endstream endobj 129 0 obj << /Length 205 /Filter /FlateDecode >> stream xmj@_<s>QiZ &z(BNM9$7GG$f+`f`'TE‡~(=iDEI1E2HQ]%0 T Qm} WG?pj26N`Ԟ}}gvjPhCLQmQ +I.I7y-q endstream endobj 130 0 obj << /Length 188 /Filter /FlateDecode >> stream xU=@`6$p.?`# b&ZY+h+L9 Gذ nKfQ!!^CUdx[a> stream xڥ=N@Xi=B,  * D)S&\7GH6.DIi53oXk]꥞Z\ޤY\jw^%{"e;xIVV;RoN>`a}x3 HVmHb&oNhh:+Tp=q::Ϥ>F_/C21eya:#f`x!7<=c endstream endobj 132 0 obj << /Length 208 /Filter /FlateDecode >> stream xuн0k#xO `D`qRG(}FBЄĤ~pE.-K =zh.wStlytGN_NgL\kZZo-T c ښ[ۺ8Rf_yOwy_6|pdmA&:QV&ҘP$> stream xu @\z'H  ԩCtEh>уhkeͰ;Sr#&ttBpvd31[%OюWtOh9qh璳8"hre)Q5VzV \4 0i:ul3%Rk-Le00JKE|}xB endstream endobj 134 0 obj << /Length 186 /Filter /FlateDecode >> stream x}1@!$pBBEHaRK .G(.ZHI%ψ$ɧ)) EQgLs$"ܢvKs. yF R 0RG5X-؝X͠NPSϐnilbEO&4>=VgWX(9nn endstream endobj 135 0 obj << /Length 193 /Filter /FlateDecode >> stream xmA @'.4Z̠Yjei7( q 3o~f4\G3C|:x ҹ|pb"Q)PHK9OeJ5jPRn|-`Ys.9`6.?g[@K۴`Uf lvi)ʡJ渒/V endstream endobj 136 0 obj << /Length 156 /Filter /FlateDecode >> stream x313T0P0b3SCCB.c I$r9yr+[p{E=}JJS|hCX.O0c? &p`Q"p@#`p`2QpOar IVR endstream endobj 137 0 obj << /Length 239 /Filter /FlateDecode >> stream xUϱN@ PK!~@ZK"" & Z> stream x313T0P0bcSCCB.c HrW0r{*r;8+. ц \. 001 `LAȃ=`Aԃ:\?DԡQ?Q \\\[ endstream endobj 139 0 obj << /Length 242 /Filter /FlateDecode >> stream xmбN0?`閼A' X*E"LSad`y^o+dc$sT@|89:]NT8V4)[bFw)/=e3ynr5z z^AH ^_kO mb2{ o)޼IPX5`j5҆uiSy 9i^Z&WW9+ow }:难{{ endstream endobj 140 0 obj << /Length 194 /Filter /FlateDecode >> stream x}ν 0+['SV8sh}>B.E$$q4MS;Q)+!׾28^0+Q.zŚl s ,5yofJNѭ>THA-I?6*<+1vL{Ԣyˡj endstream endobj 141 0 obj << /Length 244 /Filter /FlateDecode >> stream xm1N048IUeHZ()XA 8WDAr)5cHœ5\+.U͵CT2,.[ҷ\/eL#93\SaXw>:@~^M:_6;~qLǠVrﻘJX&{ب#Izc&4~g'.zw'ʗ EJsY#袥} endstream endobj 142 0 obj << /Length 163 /Filter /FlateDecode >> stream x313T0PaS 2TH1*21PA $ɥ`bU()*Mw pV]  b<]HG#13acFT0ca``?p`L> stream xm= @irYV ),J--mM8mR,dgbF)MidPaly&T'͞ Zh = vA͒#Kv07}> stream xU; @? ` A+ RK E[7GQr)h1/t)ZEyɗϴOC-*2gd6:%Smx],vKȬqzjHHHC,10\qEqRc,S4EB訵H<,l)o e@)]X!uE{/^q endstream endobj 145 0 obj << /Length 212 /Filter /FlateDecode >> stream xuϱJ@_RG> stream xڕ1 P q(dGx9OA ZN⤎m֣xҘ!$!'3N*Φ|INY>-KNɗ[~>^W݊SSNNT D'Ҡi!4y;쑷Gwp{cjCe s]ؗʞZ."US9©-KI endstream endobj 147 0 obj << /Length 218 /Filter /FlateDecode >> stream xeαJA b > ]vj<-,J--mo||ybCBdy-j /;~2xxD-+j.KtoOԬY:ni0s #VH|ěFo;s+lq΅Ƕd,6ɺY'=alp +%D7p endstream endobj 148 0 obj << /Length 196 /Filter /FlateDecode >> stream xm= @'X#MXXSZYZZ(m#Xo[fa5B&x#/~,+E³N|n-f-nKn!R7 !Hꇨ+U4jdcޑM-孍@l_ "j~' f&74.WHe4A o \s` endstream endobj 149 0 obj << /Length 181 /Filter /FlateDecode >> stream xuα 0+ zO`RL'V08iGE7}4бC1:n83d3dftJFq> stream xmαN02Xŏ{H.X*E"L0"5)oG1o`ŃsaA t7;/%KGvA)N v=4GOYScs W,6+"< .L)'rf;GpaF]1P.;a?2yWL ǹG9^jo.G82TJ="b> stream x}1 @49IH,-,J--mMoL2LvY~ Gc 0G8 q bɁD9쎐y Y|=,9 ܂IѱË_ꪽ^cf8y/>_[;bPsfm]vҨVi.oVڷ[eڏ2t6 endstream endobj 152 0 obj << /Length 156 /Filter /FlateDecode >> stream x313T0P0bcKS#CB.cC I$r9yr+r{E=}JJS. @-\. =2>gg`zp=a&f?qA|.WO@.J endstream endobj 153 0 obj << /Length 205 /Filter /FlateDecode >> stream xڍб0# $ hA%1!ALd08FWxX`|]ۑ5]2hH}sBK&rjиjO(6d9(\G.zQ(ښd0 Ԅ9F"Z ,EIIQx %U4d]ԆG mQMSe[p )yX$>A&<5NX endstream endobj 154 0 obj << /Length 230 /Filter /FlateDecode >> stream x}ͱJ19X&ywl 'pVbvb7[E(6W77V80/̤mfRɾ@f|mcqw<︼Բ\vgt|y,/䲖ꊻPLdK?t4g1:Vu&*ޠw#¦%{"oOp($BJ(D|p0hs^>۹3k¸ cԤRP5y>ZsY endstream endobj 155 0 obj << /Length 154 /Filter /FlateDecode >> stream xuɱ 1 ኃG0O`\op Njh(bl-?崚aUÓ+>$?*_5o3z  H1D>1Cf$t cUIa.<5Ga D"JLKL`` ?:R endstream endobj 156 0 obj << /Length 194 /Filter /FlateDecode >> stream xu @`Ń0yVq :fNSuPY7|;4kuhgd4GO q^ͷ=@X f܂x>] C)C 6h[ }POmwj؊n֬GerۺInOs&y?ͅ_[*o&+jIhiKx endstream endobj 157 0 obj << /Length 180 /Filter /FlateDecode >> stream xm1 @ )xnBVJBBB"^do)BBbFST@F R/r@)Z?K6A}cE- ol}:X}"j&xovV$GC* ~f endstream endobj 158 0 obj << /Length 198 /Filter /FlateDecode >> stream xm1j@Ep!fsZ1d"W.B*'e h{A (&E a-]{^ҙ|Xr8}Rݒ;=K}A~qIג7j$2%32 ]hzdLs_Lä_Yt:wjh^H;FU.o%mZ-/LRz endstream endobj 159 0 obj << /Length 230 /Filter /FlateDecode >> stream xuνN0:D%{:&KmȀbj@y?BFi>@UJO򢸑Lȯ9Y^.wv™/}UI\ |~|]=%g\.7B>@T*ƒvPU> stream x}1 @]RVBVb(9BʈqvEy03L8I38Byrj5tكL@N0ހ)PR+IFdޒjIWZE,& *>`۰m$jKaj` U endstream endobj 161 0 obj << /Length 206 /Filter /FlateDecode >> stream xU1j@Eq!fo Rd\ l`W)B$e\vG)U8Mb3KtkZ>iyW]VGmZ[wy|گѧZg7}'8l"M !#T ppP\`~ԅƲꌀEwKr40À0=O%AnRZA endstream endobj 162 0 obj << /Length 176 /Filter /FlateDecode >> stream xuϽ @ nY ֫ 7:9::(>#tPCÑKm8r#:&xAk%5ጙC%k,ƭvd9%hr%HDbfRA#JA;=LVi@ &!`nOYo .n R endstream endobj 163 0 obj << /Length 178 /Filter /FlateDecode >> stream xm̱ 0H-}SV08ͣ7#tP> stream x==@!$x.d@ b&ZY+hq%g+̛@.Wy!5||4gN>0U(N$#;NQ=_;!EFg ꚮ~3 |4ؚ4#\Y]gr1WOL$ǭ#bVO endstream endobj 165 0 obj << /Length 197 /Filter /FlateDecode >> stream x5; ` %79m`A'qRGECGEzcokB>bw!ܗ&QvGlE/rPPMycEQѷ(5ҕ;i?͒5-7-ǫy! ^P+́<$r4+n "ID>8q?U endstream endobj 166 0 obj << /Length 216 /Filter /FlateDecode >> stream xEαn@ PGNO_KH@b!`b@L#nvH0e`'wgFJ)S)gG, 톊!څTVK:V6t՜b%71w%;]ͮ:$δ & nKoW1]ЋputF@uFjM0>ɏ) N6#0˾ j5>[ endstream endobj 167 0 obj << /Length 224 /Filter /FlateDecode >> stream xMα@ )iBy` A++Q);l3j:-(#IorNjNӜNP6hW%OR9Q[Qv$QKRvrM`> stream xu1n@Џ(Vf\^PXJQ*;eDv mGt .4#Jنc^"U4aY:m_ȼqy1'ˎ2%'PU2| (2w(ڦE-zD6BF{DIڝ3?mgDj # Arf#rNN,t']c^al оWqi7 endstream endobj 169 0 obj << /Length 170 /Filter /FlateDecode >> stream xe10 PW"y#' MKUJȀC X)GQz U 8eSI< e 15ߗ rKIr5JvDYPT)wK@1c5 0|2 GAw= /t:pZi|m˸иI Pt endstream endobj 170 0 obj << /Length 229 /Filter /FlateDecode >> stream xmбN@CA2 <əXg"WYBh<>%aKK6eg]B}}k{oxⷊ>.6-\WT<*#Syc]nyv@6CG'=D",2dfFz-mə1:;_w1|4t4hn7)xM> stream xUпJ@YR,LGȼnb.r6?` A+ RK E*-GHEq[E}\I)rVɢB+~ziRz>yzu^%k+snv#r69MD^HjO@IGJ3&`MS |08oF xo2("~B9~}B@BTB_Cmc1aH9ԝz xk endstream endobj 172 0 obj << /Length 214 /Filter /FlateDecode >> stream xe1j@[4'JT@!* q"JR n+s.*70‚,̃0ir$CdKyyωf^ˊ$9GlӃlKZhYqb~OC~OxCH7L-VhPjeL hA؀&jΨ\5әcts÷|*f endstream endobj 173 0 obj << /Length 224 /Filter /FlateDecode >> stream xuϱn02X%{D,Q*5C%N@ծu͏GCvaOoQϚGhI 5NXYQ39^pӢ>PB"m+}~|QovOdPoP2Gp=AΘ&n > stream xm1N@ D'JM_C~QH@Q%Z6T({-SD1Q Ѽcgqwm݉>4,mFG K=\ۣԻ3mm; d plFar&@GPي>pOc({zUAL/.ީ8|ks endstream endobj 175 0 obj << /Length 202 /Filter /FlateDecode >> stream x]; @GR2͚Dp A+ RK EBRZ㬺8N(->GCW;]@G5v*\ jwR] endstream endobj 176 0 obj << /Length 251 /Filter /FlateDecode >> stream xUN0/ɋ @Td H01NͣQ=X1bdoݿꯇNVknӟ/b+C~g7A~u}N7;yq'rTL6lq#T%TӤE jU$T;xؙVpya"Q1|r9@af6Mq@R{ ͊Ie,yZ,[Q?_Wu endstream endobj 177 0 obj << /Length 241 /Filter /FlateDecode >> stream xuϱN@K5 E+uM0bcl <Yumչ>*epUy> stream xڝ=n@raisq:K`$\ %E*PR$JZ|̳҅Y}7>'t*D<ũ$/LJ6k36K$lʕ|n^)=B#5QPDW:%#Jc9уr4vh| }*qlz={[#3CS5=97 endstream endobj 182 0 obj << /Length 224 /Filter /FlateDecode >> stream xڝ1@EPL $&ZY+h+pJ "θL&4ٿv<Fq0!liza zlza:m+TM܉JRNIPhSh50O"gRE4;hhZz&/z( ɟ|{=eo }⁝vw]Svˎuҹ?࿀ykxB{ endstream endobj 183 0 obj << /Length 105 /Filter /FlateDecode >> stream x3634R0Pb#CSCB. m@ $ɥs{IO_T.}gC.}hCX.O!'W ( endstream endobj 184 0 obj << /Length 96 /Filter /FlateDecode >> stream x3636Q0P0T0P06T02WH1*2 (XB$s<,=BIQi*S!BA,\\\5^ endstream endobj 185 0 obj << /Length 291 /Filter /FlateDecode >> stream xڍ1j0a  jR'YbHSB;u(ڎZڭؾI=JIqT`$/VI~k,sOxym ɓYSH{dsf=;#ҍkTNUD38L41裵>+*bT)?d C~yE}QKZq<8ZTb+Ώ1ܼn NqA(F.gEㅸ$ > stream xŒ=N@ M!$)fE"T (AKrSXؓ,=S$_> stream xҽ 0-}V NlGpPz&M@ᗄ$$BgK|<p8s93d-!%_Vve9rȑx)QTŔxe4GzMa)["ei=AikLM!Ch.TC#ig^woJ-$KHWeN'Q<6?K endstream endobj 188 0 obj << /Length 173 /Filter /FlateDecode >> stream x3731R0P0b3S3 CB.3rAɹ\N\ f\@Q.}O_T.}gC.}hCX.O@>`AJ3Biz(m4?f 43+F3| @3hf4;`+hz~v1HiP~ r ϐ endstream endobj 189 0 obj << /Length 300 /Filter /FlateDecode >> stream xҽN@P\2 p Xg"V*4Q5&*< ƙ`Q{,̿,OsL1Ǔ 3/)7(r^L<k^gHVAƇ k4#g̫`Id KD-XHTHQd[;'n1i/j{;_ZX\?b. 꿫Q_%5tIs&AciUݠhNN SӤ#vPHDH&4MnLϕO!|&%Ig] r endstream endobj 190 0 obj << /Length 104 /Filter /FlateDecode >> stream x3137R0P0aK3 CB.cS I$r9yr+r{E=}JJS ]  b<]lQ3\=i% endstream endobj 191 0 obj << /Length 278 /Filter /FlateDecode >> stream xڍMJ0. o Hd8]ʅjtBQ讽WM0ϼW:(yĚt+ܲfshsat}e^-o.V?^RV T+xi[D2h; _Џ.#ğ Gf ,D# H_W3H| gQPMAP]r:)8P]ʂiP]͂.Yc႒4<]:l_@c0ώá%+/]z endstream endobj 192 0 obj << /Length 185 /Filter /FlateDecode >> stream x3735V0PasC3 CB.3s I$r9yr+s{E=}JJS ]  b<]co100U@  P3 v,f[=n/O~085 )cpzrr\ endstream endobj 193 0 obj << /Length 251 /Filter /FlateDecode >> stream xڭ1n0: w֠4YDH!d̐h9 G`j1RaKd}22yPD zIP"eDݓ̛ ŖdbQQdoiSEN܍WƩuJ3dkYAW fuM<7'Mn݀ASwMR \So'%uvrCh2<>\+#_2ocibBר?i h endstream endobj 194 0 obj << /Length 162 /Filter /FlateDecode >> stream x37׳4T0P0bs3sCB.3K I$r9yr+Yr{E=}JJS ]ry(D11o``!`G0 5#Fʨ e02`'\\\T. endstream endobj 195 0 obj << /Length 232 /Filter /FlateDecode >> stream x}ϽN0Jl;Ta?pۜ7kBjikVb7/;8jC'_o6RsS-3[&0`Q0|T*M *pӌ_2 $Lo1ÔJc4|ݜ~82;eSz)<8`͊N9y{2hl endstream endobj 196 0 obj << /Length 229 /Filter /FlateDecode >> stream xő; @72M4(SZYZZ( h"8P+q3z ;MVYmcsd4ٟ9ą!8~̸+fܒ^ ke"e, tGd?˄b$U5Ҋfl$*lMgn CJhVʷ3Fip endstream endobj 197 0 obj << /Length 214 /Filter /FlateDecode >> stream xڭ1 @E'l&G\@7E1#BBBQRgEv>'S &3!3c4#NqRdn uS:]L> stream x1 0yд*N`A'qRGEx 7бC=q(8 vي1&]lwqy,N1y 6n_pa8&:2)љBztUUN+IZ^>j$qIMMR'*mse cL@I 9Lwni endstream endobj 199 0 obj << /Length 226 /Filter /FlateDecode >> stream xu=n@gbi|eYGH@TDjh> X VyyD%JC80/*v[ dvջ\/_Gvxv+١hJʞ2Ն(W FOFFl@&%`}b zdeL,>2~dgygL[41Ƕ hKyJ BasQ D endstream endobj 200 0 obj << /Length 167 /Filter /FlateDecode >> stream x3632V0PacsCB.cK I$r9yr+[r{E=}JJS ]  b<]700P?aA<$AD0H0 A6b#4o@ endstream endobj 201 0 obj << /Length 281 /Filter /FlateDecode >> stream xڕ=N0’!sHE"T ()@`)<؋$'{Iן5-5tA-ukZw75oZOv3RpC/^Rk-=ԣ/qZqg XxqdWjIpnIUi+W%KK"5-CiK #;A58E, k΢SvYlK S^`%*#G4dPɲ1:^.eiiC%>+^ ~ endstream endobj 202 0 obj << /Length 167 /Filter /FlateDecode >> stream x3332Q0Pa3 TH1*25\Dr.'~)PKW4K)YKE!P EObPFS@ >? uBP?(lԁD(.WO@.Jm endstream endobj 203 0 obj << /Length 131 /Filter /FlateDecode >> stream x3634R0P0b#KsCB.#1s<L=\ %E\N \. ц \. 5 7?D # P?P1?H{pzrrD endstream endobj 204 0 obj << /Length 220 /Filter /FlateDecode >> stream xϱn0 HrObB*L 22*+cc" F,YϲA/~o:ϜuʰXoiTYp'3d|6dFcLxsr‘"?D+c~DRdZ+-ЭAR.ZT7rBʰU. (]«],D> 4Hsz/iNW^`ص endstream endobj 205 0 obj << /Length 107 /Filter /FlateDecode >> stream x3634R0P0bc3KCB.#S I$r9yr+r{E=}JJS ]  b<]0q7c.WO@.S endstream endobj 206 0 obj << /Length 209 /Filter /FlateDecode >> stream x? P C!;Bs_ZA,T;:9::( n>'GoqQzJcߗdڍZE5eujh}OSXcu4vB{%gQh@&lJ2DxbΪUdK 9T`P+XU.> stream x3332Q0Pa3 ebUej 䃹 \.'O.pSS.}(BIQi*S!BA,C}?7T10@ 6P?|'W [ endstream endobj 208 0 obj << /Length 213 /Filter /FlateDecode >> stream xڥ1 P #B[SV N⤎h=JбC1&E\|>?dј>c &tA$GOX4 "4 %]/#d5#MJ[h6%y=\0`..Y尀AK<@\@Q#6-WQwu;Sw ?kBKn&j״1a>7k.sk|]ŏf endstream endobj 209 0 obj << /Length 227 /Filter /FlateDecode >> stream xڵѱjAY,i|tNWbe!V&e->B|-XDTX>euڝLJ+Hޗ,ה?8G۹)ϲYo؎^$e;E*ɒPS݁T+(5OT@u%BMwF=poH-eua~nl]Tȇ`1)6AbXi DA O  endstream endobj 210 0 obj << /Length 161 /Filter /FlateDecode >> stream x3137U0P0bcSCB.cK I$r9yr+[r{E=}JJS ]  b<]oH?1"~`? L7?bl'W n endstream endobj 211 0 obj << /Length 223 /Filter /FlateDecode >> stream xE1N@ E?b%790;"E"T (AKq%GH"4o4v]_+^sk{w6[{T^o(=fKdJ~|Q_stgj8UR:EZ ʷcVG@VjU'3rع: Fg u1vM#bj2;4@* endstream endobj 212 0 obj << /Length 173 /Filter /FlateDecode >> stream x3135S0P0R5T0P03VH1*26 (@ds<M=\ %E\N \. ц \. Xv8'=3,X w'C=`?`A<7@ ? r  ,t endstream endobj 213 0 obj << /Length 166 /Filter /FlateDecode >> stream x+@i*6#06&$  (D@@/G[58"e9P!Zj Z)%eʡ^Rv3:N[|LuM+C]MD ! a9PIcУd/-x>o;w*!aVB78\ d endstream endobj 214 0 obj << /Length 216 /Filter /FlateDecode >> stream x}=j` `-A䳋M)PH !SڱCC |'ꫯo4J$QLS<Üh'+v 3v/ز^e`7O$e7e*Ɋ*#3Qs;*ؗ /@ih#2+1@[|iơy(sG=ַ G#ʳpH endstream endobj 215 0 obj << /Length 126 /Filter /FlateDecode >> stream x3530T0Pb 3SCB.c I$r9yr+[p{E=}JJS ]ry(000```` H0@,0%#zl'W  endstream endobj 216 0 obj << /Length 266 /Filter /FlateDecode >> stream xmбN0|G/qCyfίF0t^ߟlߣO;O$9 1!rHdڈ4f&pBl9{Ð68,ִ/vKqbҷ+tي%+NC7"EB8сVP #RI*h~j:Rᕤ[Il`Φʗ'& endstream endobj 217 0 obj << /Length 258 /Filter /FlateDecode >> stream xڅN` {@ $g%^Ltr0NzGh< @= icu]RHRb)U?XHUw>5?1r~geΛ{p~z< 7g!ґRUcR;Q2QP:X Ja2m0{tƔyl[J8 XϠ-AvHxiOzMYSgčV6oGbǝ2ClčLU[ϟ]~(6?d endstream endobj 218 0 obj << /Length 216 /Filter /FlateDecode >> stream xڭбjP r7DpI *NJ'utP-4|-7_խmzޏs/{Ck#ґS]ŲdbkFR̋&1 {*|ZL4XL_m̛3ul󇚴] I@BI /s'sABNjAOB/#&-'5o#Rԑ endstream endobj 219 0 obj << /Length 253 /Filter /FlateDecode >> stream xڥ1N0 `?uGx^:bF4G  Gءj]&`>EIc;Gy:r>fG}=~@{M;vyJn-2ЀL]_~EI-jV8Yz&? }Bs훃$ShjMM|wSSYN-Nm8NZT2f5JD 2Mr[μ̐51= x_d endstream endobj 220 0 obj << /Length 264 /Filter /FlateDecode >> stream x}пJ@9Lso &p6p` A+ RK EGG#s&~lvf IYI)A+ A+~ub)u?{MZցٷ~sy*h[nB@""^H1j$eLЯ; tY;suVfL5*}:;8CDx:H:n2ffuYrViL=݁z!mN@Hö h+y- endstream endobj 221 0 obj << /Length 214 /Filter /FlateDecode >> stream xڥ= @ )f.@LVbh)SuvVqvF? "j )iØ 1 Q%S:N[TِT#Zr @gϽiKs13޴镻pabgZ]  7SDA ѷ屍ݼ3fR(Zt~sW/89>? endstream endobj 222 0 obj << /Length 290 /Filter /FlateDecode >> stream xUN0D7Jɍ?!H"]Z:HPQ *AHX>mJ=N:'y8].7n`nػi:> stream x337T0P0W04S0T02TH1*2 (B$s<Á\ \ %E\N @AhX.O??}r Iz endstream endobj 227 0 obj << /Length 275 /Filter /FlateDecode >> stream xڅJ0顐}Ͳ º=ɃxR(y{(3itG&dfd^QAeE-Wt_g5G ZQmj_*Kz}y{Px[Uo @<9uf8g:&hFO^|IN{?,''Oi%_M ?KӴ L z@;u32<ی+٦ JfW-ƽ<%5ߒ uP:N}m endstream endobj 228 0 obj << /Length 155 /Filter /FlateDecode >> stream xڵ?AAWl2#dK$P)DRA98b|3z8*qq!lK,f!+zS/4qhTQy~1} 3MP u|f*ez7"ȅ``_St endstream endobj 229 0 obj << /Length 261 /Filter /FlateDecode >> stream xMAJ0)]fa/sm+"BЕ quBQpG ihMIyM:dhOsj錎Oi'a?bKE67xK/lﮨfGO8ceID``g&@Y953ؕ#˙ fW<@ Es>(R :$V.bA*3J ʘsJڛ?&JI_B)Jr&| eDX#d? endstream endobj 230 0 obj << /Length 212 /Filter /FlateDecode >> stream xM?@oH1\@ȻNbjະ)+P $`Nog7)SdgFA/}q7`o:Ph>ggiLjaDGIſ|:w/Hxx@@6/cGP!R^!'TH3=,њR;gXK%Hs$h%Ƣug+> stream x]ο POG@] b`955DS5f&>$)5}6+X8!C %jPfJ`Rjן旭Zz FB!‚_C4KhEoM> endstream endobj 232 0 obj << /Length 193 /Filter /FlateDecode >> stream xm=@!$ S $&ZY+hfx=%-l,f&LC9QQф)LLs IK^nGՌ9owT p< AZ-@:hM,љTY(P zG߁ؐIavU.R8Uk Z B endstream endobj 233 0 obj << /Length 236 /Filter /FlateDecode >> stream xEοJ1YL2/ٸ{y[Z]!Vz ({h_$",I曯^SE 5=:|zӊ%+mmvssAUn @E2 Ȩ1JAE8Ab„rg|FÄ d]2Gd3Kꖂ''Bǥx`:!s\I`~zNx /[_TdW endstream endobj 234 0 obj << /Length 229 /Filter /FlateDecode >> stream xUϱJ@7^~@gfaŁuSne!Vj)`̧S"@-Fa0a.wӪ,NJ~CW5;;׈7vu{)%۵ܗ2{z- DfJHG"|Z֦Û)`tfTvh"?|@QZ計VШ@01E-e҃nO;`DhI|Ud" endstream endobj 235 0 obj << /Length 187 /Filter /FlateDecode >> stream xڅ1 @R,L^@ܹn),J-m5M)Sq793?<~Qq̇.6Ҍ􆣀žIgK]Gj!oCv^a JH˸;%BX[O ԎgU[kM4FF~xϕӁBT hњ~; 9 endstream endobj 236 0 obj << /Length 248 /Filter /FlateDecode >> stream xUαJ@YXrM.A\8O0Xe _|XFlR,3m/ʽe4ݜg4/6G,r|{eSVgrvy~L9]]c"-"46"n"ja g\ô 꽅}abZvLRȴWWqz=A腁=AFZp2Ǥ>}m1fxԑ0S!9TxR^ endstream endobj 237 0 obj << /Length 172 /Filter /FlateDecode >> stream x}1 @bم #BBRPQH!(9eٵ(E!/I )txAM )e8E!Q,LF.vQīI m%;L>?9:^j7N=j AvG ) E endstream endobj 238 0 obj << /Length 266 /Filter /FlateDecode >> stream xUAJ0?dQ^`0v:B[La.]WRU'GQ2xɢt|MUG^dy*W',WOxقt,ErHh,Z}> stream xUϱjP? 9/Pc0$Bj;u(ڎV2HQ#dt`]8x)?DxgDGNx/4/)|8Yb o7/ K7Sd蓺@7=bTEVӊUш?I4M;@AmQSuj#S}7~9`^B 詤tU endstream endobj 240 0 obj << /Length 190 /Filter /FlateDecode >> stream x=ο POG@]A(AAM T EmB/fo#AB߁;ˁ.=t谿6;)#ɭI;~=7~.ɄO.;gJ +92 = Y5"$*GE1_kMAێfb)n! a!"t5}6)G endstream endobj 241 0 obj << /Length 182 /Filter /FlateDecode >> stream xU1 0_:`/PMCv(j3:9: U:zI!78QL#NN"# ÈDkg%- lcdrE,_ω#+h(  0RGC:k3dV4P` {@1gy9xΡoi|KZCf1.$n > stream x=ͱj`27h 6] fԡtҎ*:H|(V;QX\Fje%E)MT̂k1RvO1j}H9S B47Z4^7^;r<ȇ0)z!Be,; e__=FʼW|/Hd endstream endobj 243 0 obj << /Length 178 /Filter /FlateDecode >> stream x]1 @ )tMBą-,J-+GQrBt |(1%2EϨR.#ʒ;baPI(\4 ^nrJ1ʒ61E[4%o!Au4x@u/YqDwk;ppjhWO: m 837ġB endstream endobj 244 0 obj << /Length 216 /Filter /FlateDecode >> stream x51J@o";MBuS,he!Vj)x9a)BpSo\^]s-_Tܴ\ZKӶ5w1S WT##M~!J& zt9Fauޝ"Ya b&91ĐMJ^-}?9:o,Uێ;VF endstream endobj 245 0 obj << /Length 216 /Filter /FlateDecode >> stream xEͱJ@R "y/Iv"f!XW0bBKGGGe,+SS_l8 .K6R;s6iy~]Kف͖%S+ek.(c{AzDjUW>snVn-t +ʼ23;_| J%r,cQv$F)XF\@7-=sJ endstream endobj 249 0 obj << /Length 358 /Filter /FlateDecode >> stream xڕӽN0:DG_)R)`b@ $G#d~*;r9=?ӹ.J}EZ?M8_ԶVٽ{k.Ti_d;WbcGBDLMLt}IhB`0 rʪF7 nL;qJrc ֭ÀIvάf?"#spb̉x&/!BlB =ʯE^FU| Sծ6sQbBLAZn.ؗ/Q> stream xڍбN02Dŏ{HBC;F*E"L 0v(}%g媗N+eJ^{>AˁO2lC^>?߸>HNjNIB:H(uZJ3\vgy .+=3a 6cƜb)aj6׮e).UecDm\g!]frUʷ?7㆘p endstream endobj 251 0 obj << /Length 305 /Filter /FlateDecode >> stream x]ѽN@; G`^@YDruM0XF;Q(1~V_27ܩVEVrg*\Yܾ۲ʭ6{pee۬u_6]f[RO:1*RݓFoQ$H4RHw$@$şOځnvf W?O;,@>$-s0 0s^}Yp(ԏ2H-+_Yv|_NL endstream endobj 252 0 obj << /Length 248 /Filter /FlateDecode >> stream xڭ1N0Љ\X&G\-*ҲH@Q%Ů@h9J2Ed3c' $J,M},tIg6^,9^i{wpעy 2ޏhvwWd/zvOɳ+P+g971jz\#: bzPc3ʾ[<ʩ Yez5BTrdVbb\sNUoo|BP#QJ\nBm endstream endobj 253 0 obj << /Length 183 /Filter /FlateDecode >> stream xڽ10 P#$/i+S%(`b@Lp4#-CEoy>Li Hi, ĥn~ 5 e t܎(Im%;+(5(kFuu'E֏%+SlOe> stream xmнN0> stream xeнJ@ )2/Ey),J--GG#Lv߲_C8PKә^=~`drzymVwn{Mݎ<*/gf8 iq: 4rtӴ/ɾ\RnQM >Jcd#渒rZъ| LZƨG1Qޟ -"eY{Х{h]2hV%[@URmK٢Doz|_eŧ endstream endobj 256 0 obj << /Length 230 /Filter /FlateDecode >> stream xm;N0\DG\X E"T+*r 9&- 6Ix(>4cNj :=&~rU- c^_9iSRq@;p [ ;O6ߝ[+~ ?4tY·;M}s")z33@"F9LF?sxQ ~G endstream endobj 257 0 obj << /Length 250 /Filter /FlateDecode >> stream x]1JP ) h6`XW0XQr;36d>ns9ҟSǯ Fn$n0vgnw7qN6< J]a ՉHӐPg*W*Yejgh!S`ہ?^auDZR}\|d[jM0K T˙andWKvMouWȷ Җd endstream endobj 258 0 obj << /Length 222 /Filter /FlateDecode >> stream xڭαN02Xŏ{p-R)ԡ XIG!q Nɺo˂2r8*7W2ͨ*W -'m5e{lzA0Pi/IHQ 2sO0P1rgvyH4È R`FB vw'򑼟0OZ U endstream endobj 259 0 obj << /Length 278 /Filter /FlateDecode >> stream x]ѱN@!L#0/@b&HaR+h{O+ƙ[9)YaVyYPNtVЪEIpYJ1Exu#-KnYuGoﯩlCOr3VJ],f=nT-?ѥ.h&H>VOZb&Q83U(#Q7؁FWkD:?0(%h4nUZ)懿4s2k, ఛDu7>/p/ endstream endobj 263 0 obj << /Length 189 /Filter /FlateDecode >> stream xڝ1 @EL70s @BBZZ( 9Z#XZ:IVt« 3Or#xjBN%7nt8SjImYǤ+]'RzΚT;l@TJ @ hxjze/ ]a;AdD/ak+?iTRS" }G@ endstream endobj 264 0 obj << /Length 188 /Filter /FlateDecode >> stream xڝ1 @EL/ :ͮA"EVbE$Nxg1q߄l">h.!Ǧ^OXRcR 7'e|ޏՌ5ٔs@ th~//iKxO`LГtIVx?>(=Cuڕ/@RriniMoEBs endstream endobj 265 0 obj << /Length 104 /Filter /FlateDecode >> stream x3230W0P0W52T02R03RH1*24(XCs< M=\ %E\N \. ц \. a0C \= h endstream endobj 266 0 obj << /Length 102 /Filter /FlateDecode >> stream x͎;@PggwAxJ!* %>Et300 UjrR豆iqA 5Tv̐ɩ p:_thq_h endstream endobj 267 0 obj << /Length 130 /Filter /FlateDecode >> stream x-ɱ 0 g 2'0-k3:9 TGAEfڢ|7lXU:x@='e; m;P=fpq}kw+*\ǣҟ;ZFy2ddL*R!sBY ,P# endstream endobj 268 0 obj << /Length 164 /Filter /FlateDecode >> stream x3135R0P0U02S06W03RH1*26 (Ads< =\ %E\N @QhX.O8qs憺 ꛛn 10`` 6P $RR  2d>@nr TD endstream endobj 269 0 obj << /Length 131 /Filter /FlateDecode >> stream x-1 @E?^ xЙmV"RP:ٙ&Nwo\%红V\xA=y1:nwՇ Y/ t4M22DT&2+<*B# endstream endobj 270 0 obj << /Length 94 /Filter /FlateDecode >> stream x3230W0PaCsKCB.K &r9yr+Xr{O_T.}gC.}hCX.Oz 0X [\w endstream endobj 271 0 obj << /Length 153 /Filter /FlateDecode >> stream xڅ̽A ɉ̗eSH" ͣxwN5gvZ88Kb񀷲>7TzOoײC _.)k̓<j*zP R.NO|[ƧmdSL6e\6NdV;x* endstream endobj 272 0 obj << /Length 101 /Filter /FlateDecode >> stream x3230W0PaCsc3CB.K 'r9yr+Xr{=}JJS ]  b<]d7`= 1S'W fp" endstream endobj 273 0 obj << /Length 140 /Filter /FlateDecode >> stream x3230W0P0W54S0P06SH1*24PAS#Tr.'~PKW4K)YKE!P EA 30` Px҂!Փ+ &, endstream endobj 274 0 obj << /Length 107 /Filter /FlateDecode >> stream x333P0P0U04T03P06TH1*25 (Aes<LM=\ %E\N \. ц \. Aj-\\\~, endstream endobj 275 0 obj << /Length 94 /Filter /FlateDecode >> stream xM=@PEx$^!R { T߱4J2:*54`ƴ"f@BJJ7"i endstream endobj 276 0 obj << /Length 122 /Filter /FlateDecode >> stream x3135R0PT0T06V0TH1*22 (Ces<=\ %E\N \. ц \. 5 5g" 1*Êl*,,0'W /67 endstream endobj 277 0 obj << /Length 351 /Filter /FlateDecode >> stream x5J0Eo Xb6? Vf`T AW.Dԥbe|B]w6H{-O&79,Lylʹy7]Tr$:)zSQ/w9z槞PgS@="m͢"{tS_\L:eR@5Rl# L7^ Z7] gO.Py&#MYY.IgϞp?GTl]fb& endstream endobj 278 0 obj << /Length 172 /Filter /FlateDecode >> stream x3134V0P0bSKCB.# I$r9yr+q{E=}JJS ]*c<]0A?  @CA2@5@D!dPICd \\\^ endstream endobj 279 0 obj << /Length 175 /Filter /FlateDecode >> stream x331Q0P0bScSKCB.S1s<L =\ %E\N @QhX.O g``~?`g N}`o`F¢0?Q\\\ endstream endobj 280 0 obj << /Length 208 /Filter /FlateDecode >> stream xѱ@?Xf!FHJ"BJ--|1}_aau=΁egM]p,+qeL?&wXis)|›p1$Myƀv3|-{Pe!,GpPghFdPCWT-kCj( gf"{![ޗAftC endstream endobj 281 0 obj << /Length 235 /Filter /FlateDecode >> stream xmj1 ^=;Od-$AhO=Xބͣ{N"Q6>fB&?N'izmf4Z||DJƠz.rM/T%V~rEP@X8 \IU{3bY1Ez$'i=Sː†LBp6Pu 8:R [49޲&&Z'XΝ_%m endstream endobj 282 0 obj << /Length 209 /Filter /FlateDecode >> stream xڕ00#pO`Amd3ALd08Fgh< @ڴ_e4f, kӄqH2@5(xEB3 i3 5C8ZA/:L^pXpkFbIF2qUNCE>_c+vdn&~VP endstream endobj 283 0 obj << /Length 260 /Filter /FlateDecode >> stream xڭѱJ@? LaZ 4ܪ[-'BBRP̛*y+uvg!B#n;MG4Zly\Ѣ瞚-Sӟ-5#%_v^QdRPDZTRR OԵ@*(AWE],RIR57P&?2oƐ(~#FLg5=dF#zvL;mf&,mXJ[a # }R:%e-vvS=U:霾es endstream endobj 284 0 obj << /Length 194 /Filter /FlateDecode >> stream x3331V0PaS SsCB.S I$r9yr+p{E=}JJS ]  b<]Bc``D@.0L1S?UB7@`JJ=SP (<9P@=mrC%hAC!@ y`> stream xuб 0  /0 D4?/iLsqINƪ&v)9 O44FQ5o3j ioKk2 DdFLƤ1(C8^QDɰ|p1۽."byҀ)gk׿R?U~ endstream endobj 286 0 obj << /Length 166 /Filter /FlateDecode >> stream x353R0P0bSCSsCB.s I$r9yr+s{E=}JJS ]  b<]d `6`RAI68؀L2`%Hv0)"G'!P5Ⱥ AJ$ `G@%\=Mx endstream endobj 287 0 obj << /Length 254 /Filter /FlateDecode >> stream xڭѱJ@?l&yM"&`p` A+ :--7`kMg+ & XKf]{t\)pp{ =SuV=UvT]j__Z]>5(6S`-̗oնd IS03aLlB".!1Ox&pcJ&HۅrI)ܔ_,v0{ltT颧 endstream endobj 288 0 obj << /Length 125 /Filter /FlateDecode >> stream x333P0P0bSKSsCB.SS I$r9yr+r{E=}JJS ]  b<]?T b78) s)hb y.WO@.!7 endstream endobj 289 0 obj << /Length 106 /Filter /FlateDecode >> stream x3ԳT0P0aKSsCB.#3 I$r9yr+q{E=}JJS ]  b<]acW3v\ endstream endobj 290 0 obj << /Length 165 /Filter /FlateDecode >> stream x3133W0P0V5R0T05WH1*26 (ZBds<M=\ %E\N \. ц \. ?@"000=o`#?0o  0X0`ao`27Áq \\\` endstream endobj 291 0 obj << /Length 243 /Filter /FlateDecode >> stream x]J@Yr̡@&A[sjsɃxj= Qj(y=HДeDz~,//Ue7~_G8"Ǎ;ΟGΗoKWn6^D8I F"!:+2oa[87`d`+hLMfp&byiguf0~5jRryd* Sk_ N9Lxods-5P endstream endobj 292 0 obj << /Length 140 /Filter /FlateDecode >> stream x35ԳT0P0bKSsCB.S I$r9yr+r{E=}JJS ]  b<]d3 eR/i& 0 d`L?`@!\=Afl endstream endobj 293 0 obj << /Length 244 /Filter /FlateDecode >> stream xu?kP{<0p '% ur(vtـ]G|X#y=8. [~< 8:İ˵W|Ք.1wQ@jH>yo瘣1 ý 8hFx]*18yTB,a PM 2< fep\$I5+zG4VY5D NZ@fW'coQ! endstream endobj 294 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/.0fMN?Sge!VjihkR\AKT֩$EuwM1f``w%=.>jRWRkRnKO/VSYZR7T@fm큼0 {düۘ=4]L3Ȧa@bli@T|`MLjb4L1dtFW$G *.|ؙtI6Dc endstream endobj 295 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭ08#^@D'D::htGxWm~_LyxJsNgo(I5M7?/&~I#K CԼ*x1F%)dB 񑊅A8EjGU(Nk4, ~j}> stream x3535T0P0bS#SsCB.K I$r9yr+Xr{E=}JJS ]ry( , LS? 0adT Y;PCuP7 .ĵ'W K endstream endobj 297 0 obj << /Length 221 /Filter /FlateDecode >> stream xڕѽ 0𖂁#x/i*U ~I(}JK "&HrtF*8 q0Y Ȁf4  ״ 2o@.08BDu uf,HW lf(ze~ަ_Q@6+L6elZv,XKP~EԺe֩N=v< endstream endobj 298 0 obj << /Length 256 /Filter /FlateDecode >> stream xUϱN0 )K~h{=B @!Z̏F%Psw|J8êt0r^jE>U KWk=?ܻbuyJz_uEk?ƌ!fl#>3Z;@'7x &&ȖNm9R0!G/aEFD+E$ьMX^>a-M=:upǴ-i}GA^{sywָ+=# endstream endobj 299 0 obj << /Length 150 /Filter /FlateDecode >> stream x3Գ4W0P0bSsJ1*2" Fr.'~1PKW4K)YKE!P E?<@0g`A bP>T*L`)`J+F Hʃr Wr endstream endobj 300 0 obj << /Length 191 /Filter /FlateDecode >> stream x= @B\@7JL!he!Vj)h9G,Sl3X,fuVsmnFlzl @Hw4HH/I'S>[ِ҃C#^(>l \3X~ZPCAJ'BEH?4u7{-'ROr%xVݙ÷C qBszxa endstream endobj 301 0 obj << /Length 240 /Filter /FlateDecode >> stream xm1j0g1> stream xu1K0W v8b vtr@?')ΝCMHH^K^Y/PX.8\> stream xαJAYL"y.p1bLBASP=p2E8n@,ofgɌKWR+s8 5srzJ 5W7Y ~k%vTZ^{cٳUoC0˖*STB`ζ&%EQ0b43e}"_馡}l endstream endobj 304 0 obj << /Length 204 /Filter /FlateDecode >> stream xm; @ . Vf.1L!he!Vji(X({8Qښ}i<"Ńf{Qj{T3Qes:.{TŘ4 5E&6%/_x/PAP02g0yp&dBw:+0}ATyM6Ӣ5l.5iK|T endstream endobj 305 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0R5T01V0PH1*21PASKLr.'~PKW4K)YKE!P ETD0S$00|`A; 00* ?8Q"I&PMb`߁q ̍:]'W ckA endstream endobj 306 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍA `'?(   AZDjX.̣y҅Tcu 7f: 5P L % MBb%_/#jƒ&Ύ҄Z{Ue5TƩ-ՇW6j@-OӉ;*`{^[bTd7 wSZ= endstream endobj 307 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0V5T01Q0PH1*21PASKLr.'~PKW4K)YKE!P ETz !HԱ` |P=iu D)ph<krF=A?0`> stream x]1 @\B/ 8M(+Tr!bI q23;9nvdC)lGUgwIBf6$32d@fr@&m)2ϩ\^sϵ2HQRQO5QJrh MTrL@V@ endstream endobj 309 0 obj << /Length 141 /Filter /FlateDecode >> stream x3236W0P0bcSKCB.# I$r9yr+Yp{E=}JJS ]*c<]70| C`003a`\=&[ endstream endobj 310 0 obj << /Length 237 /Filter /FlateDecode >> stream xڍJ1ƿ00 v^@9Å+T[}> stream x3134V0P0bS CB.C I$r9yr+r{E=}JJS. @-\. ?&iNa`D~700n?D䇁$7 \\\y endstream endobj 312 0 obj << /Length 122 /Filter /FlateDecode >> stream x3230W0P0aCS3CB.C I$r9yr+Zp{E=}JJS ]  b<]0@A@8~? q0\=(CE` endstream endobj 313 0 obj << /Length 150 /Filter /FlateDecode >> stream x3236W0P5Q54W0P05SH1*22 (s< =\ %E\N @QhX.O  P?`E6?gc?P~.WO@.W endstream endobj 314 0 obj << /Length 196 /Filter /FlateDecode >> stream xڵ1 @Еir3'p.#BBRPQr0E:? d37u.{ʧHrCqJzƁGz$15x2`ts [R?L3؂rkm;x3HKv@%.oԐ nn**ɍ@ÔDr endstream endobj 315 0 obj << /Length 108 /Filter /FlateDecode >> stream x3230W0P0aCS CB.C I$r9yr+Zp{E=}JJS ]  b<]?0! ̃`qzrrƂQ. endstream endobj 316 0 obj << /Length 177 /Filter /FlateDecode >> stream x33R0Pa3scsCB.3 I$r9yr+p{E=}JJS ]  b<]?`@=:773n? Da`N``` O7Nszrr#߈ endstream endobj 317 0 obj << /Length 147 /Filter /FlateDecode >> stream x3134V0P0bcsCB.C I$r9yr+r{E=}JJS. @-\. ?00`D~70n?D䇁$0I.WO@.e% endstream endobj 318 0 obj << /Length 188 /Filter /FlateDecode >> stream xڍ1@E #0e6 &naRK v9GTd)HN^f̦ǚ95(EqߜR{cRkI ? ldM*H&g8^WSQdHVR!J*- i~ nN/ookg$AH> wlzZIK endstream endobj 319 0 obj << /Length 196 /Filter /FlateDecode >> stream xڝα @ HByuj;:9::(>Zp"]qQ |CB?2ܓ1G!#I:Ramd$V$fO"tٓH$R^K6ʯ\UW0/%>T5*4hy~> stream x31ֳ0R0P0V54S01Q06WH1*21PAScTr.'~PKW4K)YKE!P E0a<|?`0?> stream x3635R0PacCcsCB.# I$r9yr+Yp{E=}JJS ]  b<]3P?n3 ~o0ah`?PszrrjF endstream endobj 322 0 obj << /Length 195 /Filter /FlateDecode >> stream x=αJ@Xf x{`TSwZ * W6`"8%Gf|q~K.4pR^j<> stream x363T0P0T5T0P05TH1*22 (Ads≮=\ %E\N \. ц \.   W  @ @,?(fQ 0pC sC3=;?f.WO@.uH endstream endobj 324 0 obj << /Length 153 /Filter /FlateDecode >> stream x3134V0P0R5T01Q06WH1*21 ([@ds<L =\ %E\N @QhX.O `J`pB`왏I@.WO@.1c endstream endobj 325 0 obj << /Length 183 /Filter /FlateDecode >> stream xU̱ P#k[WJ' rjj Ɔh>`Phj @ B\Q#HEldȗ$"Sg3:.{|LVkRj_ ..X ,g0i) <p&A=j|c(vk]b=(ԿOI |F? endstream endobj 326 0 obj << /Length 233 /Filter /FlateDecode >> stream xU=KPs Xxv(zb`A' Q|A7|~Lx`7UN?8g!Aj"z$r~nhdHڙdrO/$GcHN* WUP6Aߴ45q " bx%tq_cGŲh;L t5<fOk2|+ZlECd(IBY_ endstream endobj 327 0 obj << /Length 210 /Filter /FlateDecode >> stream xMν @ )(> stream xUj@Yi nZ$sSEGQ|x I;=F(N8^D!qiIs ǔB3I-1QYAg//74gZv* 0ÿ+]SCE@QsϰF,IqSn/'gCb^mmjg`1'>ڟK endstream endobj 329 0 obj << /Length 183 /Filter /FlateDecode >> stream x%1 @@$|'0+AA),DQI:IUuO)Fh~!;:c̐ېዬQ֑)HpIH]RY#H[m(l2Oe-?uC endstream endobj 330 0 obj << /Length 188 /Filter /FlateDecode >> stream xڵ1 @EH!L#d.ͺB` A+ RK EBbGRRl6Pt+ǬƬ5$Ii;Xf$#aI,Dv$f,I(K~ |[jWopG!SE /zO6x+ӸY~uд` endstream endobj 331 0 obj << /Length 121 /Filter /FlateDecode >> stream x3135R0P0bc3SSCB.# I$r9yr+Yp{E=}JJS ]  b<]0001; aX*6T?0'W N endstream endobj 332 0 obj << /Length 228 /Filter /FlateDecode >> stream xmαJ@o"0M^ป'pWSZY `eh>J+5E~;Yct_^iC-/+9u'Zst }{} ,, %s'l"aAZқMY'W Tc| endstream endobj 333 0 obj << /Length 235 /Filter /FlateDecode >> stream xu1N0ЉRX`3',ZiY$R AE GQr[0"OʌǓ/^ҟ+Vɾݭ%+yxb>F:iy-29Q EPE6fLV&b&e6fՎY (y/ifU _ cBԨM>y2_ |Ǜjh endstream endobj 334 0 obj << /Length 188 /Filter /FlateDecode >> stream xڕν @ + At-('𮶵kotrP?Q_ I+F!=ړ,o)$G$'KROt8oH&{$S^zVSBĢ iAf1h.p;`Z \2oߛy544` endstream endobj 335 0 obj << /Length 226 /Filter /FlateDecode >> stream xڕϿjAna s=b!j WJ!`R nGG8̜EH:_1;dySpnyΟ9)_6[d?9oR&[}";YL9#;e銊Һ„pQ*+j .+xs7xĕ\ }rR /:tKuNTc'ې'jiT2Dׂ+X endstream endobj 336 0 obj << /Length 243 /Filter /FlateDecode >> stream xmJ@O"p}dXW0 j)h()SDm>{uuVZjG+9}Mjag"VNbkx|JV+-*@ Ps&[ D>#E@rI~2> stream xڕα @ HB}Ѽ]`A'u(GQ|TZ?$w#3ihdȎhC!s8cТZp*Yz?WS2f5wHPQY 4a:B@ 8 1n -SQR-8 d_Ѯ+J_> stream xMJ@Eo[8м$AB`B]W҅E ;#Ǜ*y{wquLZZj}%OR7KmN~&wlֺ₲<>H\i%Jo*-o])L O[ `;d1a3X`LpM6{{xSHp|tO01l6 i4,e3zwgRS@v伕+c endstream endobj 339 0 obj << /Length 237 /Filter /FlateDecode >> stream xu1N0бRD@\lBTE"T AKr!e3 gi_'aE5tB 2(_pӢ&1^_v7T]M=[b.'0S2*(ٌ`&p B!t 灼__Rc%ɞ 6{6C!Ic)A?XZ1IN+OVqY- m9 endstream endobj 343 0 obj << /Length 192 /Filter /FlateDecode >> stream xڅ1PDPl Ċ1D+ cmq@IA;WL0 v xlagnEt4'g'Ty!n{> stream xڅO; Pl {I*L!he!Vj)h-G,-$q̃T;LNuihuɗV'/2O4Ĭxq7 $$M | ,G\W{F9^ـ"J[|rY"ֱ4nT?pGrjݬc_e*[M* endstream endobj 345 0 obj << /Length 114 /Filter /FlateDecode >> stream x313T0P04W5W01T0PH1*22(Bs<=\ %E\N \. ц \. a`?r 5ez endstream endobj 346 0 obj << /Length 116 /Filter /FlateDecode >> stream x313T0P0V5W02W0PH1*22 (Bds<=\ %E\N \. ц \. c``pzrrlI endstream endobj 347 0 obj << /Length 104 /Filter /FlateDecode >> stream x313T0P0UеP0T5RH1*26 (A$s<≠=}JJS ]  b<]'W * endstream endobj 348 0 obj << /Length 136 /Filter /FlateDecode >> stream x313T0P04U54R0 R M F0\.'O.pC.}BIQi*S!BA,???PP'W ,5 endstream endobj 349 0 obj << /Length 99 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EA0XAՓ+ ; endstream endobj 350 0 obj << /Length 157 /Filter /FlateDecode >> stream x313T0P0U5W0T0PH1*26 (Bds<=\ %E\N \. ц \. @#HD؁:Q'@&> f0d82>3 df Dpzrr@: endstream endobj 351 0 obj << /Length 107 /Filter /FlateDecode >> stream x313T0P04F f )\\@ IrW04 s{*r;8+E]zb<]:\={-= endstream endobj 352 0 obj << /Length 110 /Filter /FlateDecode >> stream x313T0P0V04S01T06QH1*26 (Z@ds<͹=\ %E\N \. ц \.  \\\A endstream endobj 353 0 obj << /Length 103 /Filter /FlateDecode >> stream x313T0P0W04S06W02TH1*2 (B$s<,=L=}JJS ]  b<]0 szrr$~ endstream endobj 354 0 obj << /Length 218 /Filter /FlateDecode >> stream xڝ1N@4QY AT (Ar 3AzWJ_kN|y9H/vI'Zun8-)\ؙBwoVWg)6r}Gݚ3J~ ZTMa.)- o̤/`tR27V֯ifhh`+-RN]dvg9 endstream endobj 355 0 obj << /Length 123 /Filter /FlateDecode >> stream x313T0P0bCSCCB.cs I$r9yr+s{E=}JJS|hCX.OLŘN|? ?*f endstream endobj 356 0 obj << /Length 194 /Filter /FlateDecode >> stream xU-@%&c 迨 P$u[GEev K1h8&nL؃-;CFXA_>pi ?!&+R"c(ɉ(N+ƵGSroW\"Ϡ+tIߣmśh5| dXB]/qs| endstream endobj 357 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bSCCB.cs I$r9yr+s{E=}JJS|hCX.O0"370`H؃@`?#^^Q`Cƃ-Y  f $700 F"b\\\wN endstream endobj 358 0 obj << /Length 191 /Filter /FlateDecode >> stream xm= @ x Ղ?` A+ RK E[)S,;h%Xfh< }:ex\T:8^pVQ>EmqF;)C}FE$ sXBט^Hȃ@?|bezYETZ_q-`R!a~K<.Kj/\ endstream endobj 359 0 obj << /Length 187 /Filter /FlateDecode >> stream xڝ= @g"#Xraˀ!N;GYg!BR@[]/w%ܔ|q&?,Lƹ+x"ҡ@yRx -0遍~*?umֽr!0e] EӐ`%Ж*sz endstream endobj 360 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍ1 @EIk9 n!he!Vjihh%GL2Φօ}g?ofǜlS>'t#k5?;2{Zd܆L]rBC\"iJzD=[5/jLAOQ~ߏ@B_Zh4J5Ϋ^RMuZ9uEJ endstream endobj 361 0 obj << /Length 193 /Filter /FlateDecode >> stream xڕα@ .<} L &`qRG;[pqᾤ 5)+H+9s<^&|XLפ*L,r0S⺡MNMC $z11wx!"><Zi&N?>cH RaH'c ˁ:ѴmO, YK endstream endobj 362 0 obj << /Length 201 /Filter /FlateDecode >> stream xmPE4K BBrmM>}}V́;ܹiԥS=T'u9&a+NFF⻥OK+ VZ[( f#2;܃J>PDCv@Z }•cC 7'* 4u.7mp b2rcZI_ endstream endobj 363 0 obj << /Length 154 /Filter /FlateDecode >> stream x313T0P0asSCCB.c1s<=\ %E\N @BA,@Az H?*;&p4Aka[~ `1.WO@.^ endstream endobj 364 0 obj << /Length 253 /Filter /FlateDecode >> stream x}J@#E`}!k.p` A+ RK E#U(y[,gǰzqꜟJz`;볟 Z.(wk~x|ws%{/xv4lnfxYDdItSn\#7@efd=`El6X4jB*`f}E_h0bj1SL̀,x>v*!*:MƢ:?-y%ۧF@-7> endstream endobj 365 0 obj << /Length 161 /Filter /FlateDecode >> stream x313T0P0bcSCCB.1s<L =\ %E\N @B4Pe,B @d ?  B~oAd $?HzI8'W z endstream endobj 366 0 obj << /Length 132 /Filter /FlateDecode >> stream x313T0P0bcKS#CB.cC I$r9yr+r{E=}JJS. @-\.  @x@@?C1;}pA|.WO@.O) endstream endobj 367 0 obj << /Length 169 /Filter /FlateDecode >> stream x͏= @_#d.͟ B Fp !VbnxK q\`eW񊉣~2c!GOj .mO1dXV|-M -X endstream endobj 368 0 obj << /Length 198 /Filter /FlateDecode >> stream xڝ;@%$p.H)L0VjiVW(x[_~0E_cƃ=2b4gA ΄Sp)-8lsQy endstream endobj 369 0 obj << /Length 115 /Filter /FlateDecode >> stream x313T0P0b ebUel䃹 \.'O.pc.}(BIQi*Sm`Pz<7,{\W endstream endobj 370 0 obj << /Length 171 /Filter /FlateDecode >> stream xڽ= @[&G\@7!Q1#X^,7[n8ȃW3r9Al&]'-\,cx܎` s0 n ==Cbq1 SeKvI'mr/)T8R`5zf endstream endobj 371 0 obj << /Length 155 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O$$PD2`$ȃ@H&?:7 q.WO@.ll endstream endobj 372 0 obj << /Length 183 /Filter /FlateDecode >> stream x}=@XLvNBLH0XF[٣Q8ab^2}KJ)*%Kw4 +@@)juE]VQzB[_P :9o.A@9(dq%7@'a/=ߵG.^Tyh p A!\\[>P: endstream endobj 373 0 obj << /Length 200 /Filter /FlateDecode >> stream xڥ= @g fI"SZYZZ(ښͣ[.(wS|7q4HRYs_8 LWCNv?$#(%p:lHj&5pGٌs V,S*7;(&A]t, -GT@8=F> $_ȥF<5ޯ endstream endobj 374 0 obj << /Length 158 /Filter /FlateDecode >> stream xڭ1 @ПJuj!Fp A+ RKAEh9JAqc![̃I`4-ØԈmjw쎜{Vky\Y\/|9êe_Hx+5C8#$RC\B"xo<Iw endstream endobj 375 0 obj << /Length 185 /Filter /FlateDecode >> stream xM1 @4!s7q5@T0XErr,,2ԎgDM&rv=pr^ًYMyaoY!RrGB7 }KD#"eZSW!("PB Ca}96A=> stream x313T0P0bc 3CB.cS I$r9yr+r{E=}JJS ]  b<] @AH2`h AA~[@ Lx:B endstream endobj 377 0 obj << /Length 148 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O` $0()D? d=H2cģd> endstream endobj 378 0 obj << /Length 186 /Filter /FlateDecode >> stream x5= 0W:oN`B`A'qRGE7^̭ ء4ؔ? ,&Q@>0[}pb*Q)QzܟvI>>yG:J^]S |-,ZHZX:^<r[C准qzb&gaQ$L endstream endobj 379 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O `?aC00~ @2?Dv`N2~+ߎ #ȏߏ`` ?G#g``?A6 H@RՓ+ ɝm endstream endobj 380 0 obj << /Length 203 /Filter /FlateDecode >> stream xڝ= @_L#8MLRL!he!Vjih'({!q-6߲`}t!'<8 91 ũ piNfqJf)c2ot=̜w{@^m W÷x: dTLdO_'X`*w]!WҢqz9KU" }}d endstream endobj 381 0 obj << /Length 141 /Filter /FlateDecode >> stream x313T0Pac S#CB.# I$r9yr+Yp{E=}JJS ]  b<] X큸7001;j?0FJ endstream endobj 382 0 obj << /Length 222 /Filter /FlateDecode >> stream xe1N1E*i| .-V Ab $(UAݣ(>B,?kWEwk.i;O%/$=iI^>$nF6x0ڄʬ ͎X⌾T~fGvlgOȠ<|HTGǂ+ˇD5WTL3*=2,<8h endstream endobj 383 0 obj << /Length 226 /Filter /FlateDecode >> stream xEнN0 J^ @ZHHCL @>ZlDZTe}9W|Qps}ů}PYkP|N#5[ Sj~??ScNzDDFM&4=:4WL hLVښQ5A1;,wKi sęǐ dw;-y"ͧ\ۼ>[z3Vc4 endstream endobj 384 0 obj << /Length 181 /Filter /FlateDecode >> stream xڕ=@!$p. b&ZY+h pJLh$%^5Y (xTHN)74 U[QcL uMĄB9ƛG3a(if M( /#`cV2OZ˿Z;5t endstream endobj 385 0 obj << /Length 207 /Filter /FlateDecode >> stream xڥ= @4{t&)!BBB,xxqFE惝}ov)ZRGk;Sʱڬ)Nюe6aܠOi(Zb>$\Cǹ.5Tº)7 P \)'ߘ'-,e$9ґ i `AY ֚ G9-c endstream endobj 386 0 obj << /Length 241 /Filter /FlateDecode >> stream xm1N0E"4 @TE"Th+)S ͓=3uE5w|pWs/ 5gFGn{n5j+UknS=6@! `dHp糢0g0p \ύF<'"DMbLz[Zj6]*7DE??(jALP5ˠGԡ(OY*G@BR栛 5pI endstream endobj 387 0 obj << /Length 183 /Filter /FlateDecode >> stream xڕͽ 0+- h NB`A'qRGE(}zWEq _~3#)';#I~C"cQ8|Q iT5t] '`010%p1 iBt*Rt 2;nB)4_T+~Ѭ.:\M endstream endobj 388 0 obj << /Length 213 /Filter /FlateDecode >> stream x}O @`qM>!zI 0XɧSW؈p w3s3Y:'sÄ1P{~s8Ӵ$4'tcot=w {* (D`D:y#jAԠBQSQ]9h@9׆mƠ3/"-PIoәn ժ?|R3{6nR}Zn endstream endobj 389 0 obj << /Length 245 /Filter /FlateDecode >> stream xm1N@ Ema|HBbE"Tj`&GkH 4أnv+4rVISJ{!Orݢ~9^ꖋknR*.PI^((`)3Sژ1+-:%8p'?, \%ᔀ^ÊH"4)MP9%7Hi/! GdL!n&{| JMc_u|_!r endstream endobj 393 0 obj << /Length 267 /Filter /FlateDecode >> stream xڵ=n@Ǣ@f9Al%"C$SX+V*;eDIpJ zְ̊շy^O=JftॽEzKIzWQ+DXQ:]L@GjQPizV8Jy<_oSrJ^CoCK(vRਾB,|.WKuɡ`DuO6KN6_i JGT+ɭ KPJ~ s uy endstream endobj 394 0 obj << /Length 258 /Filter /FlateDecode >> stream x1n0` x'b R"5SS۱Cd(9BFcWGRZ}l_Y1S#=e}EeEzYNzm6|<>I/O^捪ko?n>CK(I֪ov^سs`'rVr\w I˼ދ/np=g?;ؗ= 13rً E7Z1ӌk kmgj.=WMs endstream endobj 395 0 obj << /Length 349 /Filter /FlateDecode >> stream xՓN0 ]uPU"D$02`nyMNIܻEJ8v?ϊ xc\=83,OݣZ*ƲR9UZ_Jt79f^! 5Dň6X;ЖuH@cN.|͎r.m@γۯF|=Mb ִ`]Üb{)$U2ئ' ÄcW|rƬ,e9sOx^cfu=z.{6S1;Ae&oVgۛ`_#7ğ)NG YmvM٭f !&\oVW ?! endstream endobj 396 0 obj << /Length 325 /Filter /FlateDecode >> stream x͓N0 @PK?h Hכ*D$02`~J?c&rNldH^؎{U.+,p'%ΰ:ޠ%On _ K,!C#44~d32DCĚZAO3%,Fb= _&g2dFLdt^c;ȓhMZE=p8}ډݴ1Mt=[liq<3Mu;oϚ0qfUȱ:ؠqZwѻ$D#BHI!ihD W xkD endstream endobj 397 0 obj << /Length 290 /Filter /FlateDecode >> stream xڵӱN `H&GJkNM3NIM{4"Rȍ%) ~ٜoK<+>Lcuz^aہxĦqkAtwb{%>X> stream x}ѱJ@?lv_@p] !p` A+ RK E;!hM7HqfwO`vv23)Vf0WI%X8=Uk3UqaUASSbmn*Sުvm| 82"7@б, }8$tHIR2>JJ =MT;4[6R׳ā~D}~k.:6ʃHϐDJwk81ۇ=Isz6WBJI7l:ahJ7Cަ85,φkVq< /XYd|vRJJ}I endstream endobj 399 0 obj << /Length 176 /Filter /FlateDecode >> stream xڳ431W0P0b 3 CCB. rAɹ\N\ \@Q.}O_T.}g E!P E?!u?3bSWbWbWa1gXu0V6V eG,eƒ'c1%r C< endstream endobj 400 0 obj << /Length 270 /Filter /FlateDecode >> stream xڕJ@'LsL 'BB> stream xڵN0/`?BdS` Heꀘh XI-#d`stgۿ~Iy)x 5_XQ&oG\7vWEF<z{O5 Tb!ȣO!2J`@;PP<;Gg3E9c̈*l09t / inm';)),bߘ^Jq݂zlgF endstream endobj 402 0 obj << /Length 253 /Filter /FlateDecode >> stream xҽN0T"GȽu~n! & 7+Q!ʟĄd嗋l4\jU<sMo4HQ {N^Kls/dKɮꑚgʱw_ s=$p8E . (sׅ42*ȱ| ]6&ܴLpڋ_IHGN!X>] 7#f".F?^Q 3ҙ b= endstream endobj 403 0 obj << /Length 244 /Filter /FlateDecode >> stream xڅJ1g"0M!`Dy[ZYZZ(ںy}<•aǙP1|?IO :1H=>cTPc;Ocw!^_[^ʙ;V8?dmgPj\Rq :dĄ* |Vbn;gE d1o( ؁ahDBc!D[o1En %in6N:\Z` æ]H_I<?y뭜 endstream endobj 404 0 obj << /Length 175 /Filter /FlateDecode >> stream xн 0>B L*)j3:9vtPtnG#8f:M|~3z> stream x373P0P0bsC cCB.33 I$r9yr+q{E=}JJS ]  b<]0$0a aÐef0x:`P?H e00?C(v q'W l2 endstream endobj 406 0 obj << /Length 138 /Filter /FlateDecode >> stream x3635Q0Pacc CB.# I$r9yr+Yp{E=}JJS ]  b<]``0f+ɃԂ 0a@\\\٥; endstream endobj 407 0 obj << /Length 107 /Filter /FlateDecode >> stream x3635Q0Pac cCB.#K I$r9yr+Yr{E=}JJS ]  b<]0a\= endstream endobj 408 0 obj << /Length 232 /Filter /FlateDecode >> stream xҽjA W#>WZL+vrp!ET+ -vXqt;';됱j-->xsiNY-gOّy+#CYEI O$Rx%4DJʤn ׮UH@Y$߸Np⧤D@(Ax^ 9Eۄip xviC endstream endobj 409 0 obj << /Length 184 /Filter /FlateDecode >> stream xѱ@ & &]xHLtr0NUy{ጃ zw6d4JBGqlfiG{1+P)QEz@-ibc|!Pi ౮!`{.TV6ߡA_y48+po endstream endobj 410 0 obj << /Length 231 /Filter /FlateDecode >> stream xڵ0kHnЂ0 &2`A3<#02^KL%!_s{I!.qa@CT9 +@P% 7 v+@x0> stream x͒N@ ]uG_.!MBH 02<Gx۹F:.˓"J:lN錞c|,5<WO(m(KѭEGWbtK=b$(#!@5@oJ 4{aŌfJ`o}4.lO%wm_mte4](z`_TU` endstream endobj 412 0 obj << /Length 169 /Filter /FlateDecode >> stream x;0 t#' VbTD$02`nQzT dj20XY陞c+4xRps?aq@iA W<ix=   E^6ɱC:_:Wѫ}O_ /h m Ij^ endstream endobj 413 0 obj << /Length 259 /Filter /FlateDecode >> stream x]1N@4;ۊB$\ Q%ڬ\vY)yTk.拊57 UIJ/Kn6O\k*ybx[~|nXp8HDF#々~7'QȔ^;LKZ+45qj@.dtv!"ieh֔j]dV絳Su ?hgcfKxhGZ endstream endobj 414 0 obj << /Length 186 /Filter /FlateDecode >> stream x3534S0P0R5T01Q07SH1*21 (Cds<L =\ %E\N @QhX.OON2bH$;&=A$3?8HAN7PJ`$H `( E` qzrr:p endstream endobj 415 0 obj << /Length 187 /Filter /FlateDecode >> stream x1 @   fl1[ZYZZ(Zkyt {O!(VhpZ0(j. 匴F91J3FNPf4W.dI K#ZX+ސ8 w6 .n N<sUv848n endstream endobj 416 0 obj << /Length 310 /Filter /FlateDecode >> stream xڅ1N@б\XG\8M,  * D "To+l"0DQXO]yx:NbYٔOG8'M~ea חG/pl%ގqtg%Qm3 "Vϊ<X1f3j ԄMVl!ey o+ =̃Zy[coFG\{SZƛЦQ?䍉`߈=m;4M?l½};YTjĭjө IPZlklku釾2#}UJ.҆Rymaɽ endstream endobj 417 0 obj << /Length 137 /Filter /FlateDecode >> stream x3337W0P04  )\\&f  ,ɥ`bƥU()*Mw pV0wQ6T0tQ```c;0D0I~0Y"I ?&D(I"\=VI endstream endobj 418 0 obj << /Length 301 /Filter /FlateDecode >> stream x}MJ0)YؖG_]x>.]W҅h=Je? گiftߟ ChÞ6 s/\knCs%ux^ߟ\s>k o@B,D'DdZ"-,-B/63"x甙k p7q|$pF暿 dL@AvZHFӬYM5k|,ZdIeb4j`Mg!@Tt`[Bͻ.A8Ew̕bԊW'bt7}t endstream endobj 419 0 obj << /Length 305 /Filter /FlateDecode >> stream xڍN@LJlA gEr&ZY+h=> @IA烋 |gf.K xQz!eY^#[E{_o8_c#>UX>)EৣNGG#"qhfH8fEAEI=-Β%$#쵂H\Wfä hgcgݺi8iZG`s+,25\i`2[[E3)D/bZ1.8G IUuuR:X&oݴ]֯"Mߴo endstream endobj 420 0 obj << /Length 225 /Filter /FlateDecode >> stream xڽнj0 ['Pt!tP2;4qh~?G$C@Bw&,+]po1}R28^~в$IF~{͒/wu|'ܯ8&旘knLM@;&ED-tw>5 pU/jh:؊,PW+D5^ԝhma#:YVp=Dӊb~9ag/uwiS]]q endstream endobj 424 0 obj << /Length 136 /Filter /FlateDecode >> stream x323P0PP5T02P04PH1*24(YBs< =\ %E\N @QhX.O9   fv6> $'W  ' endstream endobj 425 0 obj << /Length 95 /Filter /FlateDecode >> stream x323P0PaCKCCB. \.'O.p KLz*r;8+r(D*ry(177? 'W  endstream endobj 426 0 obj << /Length 257 /Filter /FlateDecode >> stream xuбj0d=A-pHRB;u(@19G#d`d |' 󟖋;}O5\RQ`ȻO}c~[zIc%a,D!Q$mbG2bWh*^jL/.i AjS]3}`qd;<z<ĠuH> stream xڽ=0$N`!!U'D::htq@ZmIjlB-$CϐOj^gHs`[1e ,_z?Kse0C (eml dE|QbM*mhVK;-Fi,IUAmluΧl.CNZ=xں%giz@6 7 endstream endobj 428 0 obj << /Length 258 /Filter /FlateDecode >> stream x}J1 ] {-(tdibVp> stream xڍAK0 ^{6LSaNAODGaRAaԉ.x ?dJg9*9g9Цӯ'9+ezӉL/h[%=tvuLx0ȶ `ka5@!F֠%~ CnɱCȅsZnpIm1u2c!/Wܣ[P `Q P{&{6Gq.L!qvNCQ&yи7> stream xuϱJAba yh+RPK E;1 tƽpS|?;?xžjs3TC=-r+SrgkkrKyrM͒a{ծlB-`a:`u)xuwGW2&e˯ɦnh huaǨk} [ bԪob"EzONoɌla endstream endobj 431 0 obj << /Length 210 /Filter /FlateDecode >> stream xu1j0g<7 41'z(S$ MHXGQ|JW\(T 7uN3uki1}.Gq%Cf&u#U])Yϧz\R׹fi WOp_PI! I@*#f%#~,K{ǏT#,ΰq`(nYsLޖF^V2 endstream endobj 432 0 obj << /Length 167 /Filter /FlateDecode >> stream xα @ ;:'zx: 7:9: *:{G;s]!3pck8YǸh PsNA^/r9E l BuL[VeTɎdÞ@`_wV| 䈚 oafaosK endstream endobj 433 0 obj << /Length 125 /Filter /FlateDecode >> stream x323P0P0b#S3sCB.#C I$r9yr+r{E=}JJS. @-\. ? :  .WO@.P endstream endobj 434 0 obj << /Length 220 /Filter /FlateDecode >> stream x1@`CW ,I0Q ne!V*Z'7J+)Shfe=1fOA2∇n'MxӞ#슓U|<)dg9P1csK^4Ї g Z7-Vj]p azկTP)*ܨF7́ ,a 0@ A/vP`iCiyA_ endstream endobj 435 0 obj << /Length 110 /Filter /FlateDecode >> stream x323P0P0b#S3KCB.#C I$r9yr+r{E=}JJS. @-\. ? C 1cqzrrp^ endstream endobj 436 0 obj << /Length 159 /Filter /FlateDecode >> stream x3534W0P0bSCCB. HrW01r{*r;8+r(D*ry(0a@R` `$@z ɀ a/ m?C&\=?qjS endstream endobj 437 0 obj << /Length 209 /Filter /FlateDecode >> stream xڝ= @GR2MtbSZYZZ(ډr2EH|((v̛ݝGa_ endstream endobj 438 0 obj << /Length 218 /Filter /FlateDecode >> stream xڭн0 p[*y#4"t7p  }4бCHpH'n[~8{`zz9> stream x36׳4R0P0a3CB.c HrW06r{*r;8+r(D*ry(0`?l(g?6g u@lC{ pP endstream endobj 440 0 obj << /Length 213 /Filter /FlateDecode >> stream xMͱN@б\DTd""R.HE) h!kfg:[\ꗺXS)Ks"Z;׌oY2=7Ro0ͬ&a8YZi4 %:1X[z83L̺E[y!8}?+O2dWtm8 \\ղuY endstream endobj 441 0 obj << /Length 160 /Filter /FlateDecode >> stream x36׳4R0P0R5T06V03TH1*26PA3#Lr.'~PKW4K)YKE!P Ea9$luPفX$N#Ccagc{  00?r Jm endstream endobj 442 0 obj << /Length 246 /Filter /FlateDecode >> stream xeɱJ@; $p M!澀dF 1` A+ Bv362e]X'qι>giF'5Tkè;.:TQ݆UwG_oTZSE%yB7zȷ CD`Al`^Ѓ\F&i!Qڤ5#+]VڂQS"w)͊S28`?ah֌+.1%t}z= endstream endobj 443 0 obj << /Length 207 /Filter /FlateDecode >> stream xڽ P FҡмVn?`A'qRGE7f}>BŚނ*3$|9VuQۀ}+5͞1%kTڤ|18Ux*%V738 \A&rOP deyܿ>X ?c\%#'q(IfNĴ) endstream endobj 444 0 obj << /Length 259 /Filter /FlateDecode >> stream x]J@Of!"." E0pA.Z v |˝gH0??pNNmnҮwYUϹ勧7wk"nssa q[{_AꭅBaD4%;>#p{%*édlW]HO˷df 3ÂױtK҇FoMfl=o,"E"pLΉ~WhFF*4& !3DWZnvj endstream endobj 445 0 obj << /Length 257 /Filter /FlateDecode >> stream xmJ0'y h[ 'i((ysƙ$;dfjj5u=5mMrPٿf~jg6wW`G*`Z@y`5@N08F  xP f͡HmVJ[\8 )qYTN KJ8L3#ęgDUk-2gB8&%1Dw>vq endstream endobj 446 0 obj << /Length 206 /Filter /FlateDecode >> stream xڥj@@CkB  A GAẸMb/hffӱZ'd?$u{<l(潽x3\h*fTK> stream xڽn@ 2D@ހp\hT$R3 bF"1Ti-rUO9$fo=> stream xڽ=j@W0LsDZT)+' R(:J&xݑ:y;v&DZgЦ3p)ڱ ,rHYH|I'$%nlkcLCsb@D$*cz$Xp3C0_^")@lR{Ö;"r{H=ϩt.:/d[%K*e?#W~'7  endstream endobj 452 0 obj << /Length 398 /Filter /FlateDecode >> stream xՔN0/y  m KHd@*bFHݒG2vjEb&C˫R\b"k?Q.;V<{gw4γ^|}~lv3vQ5@dֺȴG`̷dQbB\"dW '1)Pl$b.D9hbYp>bP:`VES`tLt93)| bv GNs@9dSL8:p 1¸ ePQJngCʋ9R@(o!DEiMaZj$M؟|hfjcÕ[BK^~i+8j endstream endobj 453 0 obj << /Length 233 /Filter /FlateDecode >> stream xڳ437R0PaSK CB.s3 I$r9yr+q{E=}JJS ]  b<]>@?7@Y - DBX`,v8bƪ@3nfd_b?̰⇇<`,x> stream xڳ436W0P0bK#K CB. 3 I$r9yr+Xq{E=}JJS ]  b<]" ` )dQe21 8pfAfiA&iΔg22Ge^L0 @ Փ+  endstream endobj 455 0 obj << /Length 287 /Filter /FlateDecode >> stream xڕѽN0> stream xڝJ1'lq0޼fpVb]hy}-86L /;q5%QwFO-kHfr;r +ZoyaC 2i寙5z>%k<&r,`vd+q3ߒ1^+ \oxE<@G*q/|Aoٸ=,8U(`ش fA-pڟڤPj"{mI倷YR endstream endobj 457 0 obj << /Length 142 /Filter /FlateDecode >> stream x3631R0P0bcCKSCB.#1s<L=\ %E\N \. ц \.  30oAr 5 T @;af f!`` ȘՓ+ > stream x3631R0P0bc#CCB.#3JrW02 s{*r;8+r(D*ry(070o`G1 d endstream endobj 459 0 obj << /Length 207 /Filter /FlateDecode >> stream xѡ0[*#pO@@ %0&H@! $h%#L"uDKzz٢"\1CtAݓSi֫u{СuB U|0ۀؖB%/Q@Px_Qv؁ʲ#rO ^7\gpx'A~^ɼP/nC|U endstream endobj 460 0 obj << /Length 249 /Filter /FlateDecode >> stream xڭN@ }K!~5*1#ܣQ3T9l Iɾ5TUEš^+:pP3/F *-=UT>cKxii$@v#W@!'=r48 E\)GC B1:6b:wZK??"Xi=1wfbpY4?]e[t~x# endstream endobj 461 0 obj << /Length 185 /Filter /FlateDecode >> stream x? P ,dМVt* ίGQzN:xȗ@ iDrj* CDJbCbqNjILjn߮#r)o̙-S/XSeFԕ+^+k۪d%A3vX}X~ö"7iӊ^Ds. endstream endobj 462 0 obj << /Length 281 /Filter /FlateDecode >> stream xu1N0G\o$"-D $(PR[mr⛐#Lvq v '33n"O'5sj<=x/5j֝){S^˵)x|1jSn衦t8z[d yDbDΰt=ZbM΢yqPje^5X*>YY:#BIj!MlG-ƨH]$?r>Pc6A٠~I"vfD7(0l@/]3wׄ endstream endobj 463 0 obj << /Length 191 /Filter /FlateDecode >> stream x3531T0P0R5T01UPH1*21 (XXBds<L=\ %E\N \. @b<] @>dF"ّH~$RLڃz0D2I@D1aL``n@'03H~`c1(l@A(8\=~@ endstream endobj 464 0 obj << /Length 203 /Filter /FlateDecode >> stream xҿAr $7/eQII\!R Q,'s0eQ"ܟ3?(%V U Вn(6Y4n+|א<>ȭh\ E&tj8 endstream endobj 468 0 obj << /Length1 1379 /Length2 5902 /Length3 0 /Length 6848 /Filter /FlateDecode >> stream xڍxTT6"̀t "90 % H()] JZ߷f=繮=6;1#Re]cK! M(o;> EGm*(4PhyB"!1)!q)  J DxHT콠]F+#}=N(to\ n8p tQ`7tE= `A(qFܥݐ'9n>7 0#^`Gzn? Lȿ @`PDxtu@ gsBBJ'W"(w=psBN|P|{/= @{Cahj{C<( 54mV;*#pW*P0ツ@᎐_c8z ¡<*0hmN`@()&&*?}@΂ ;3#@(G{(Op:8BA( wv k> ;k4p῏XPLr*)!|’~I1 @HHH .. g{>#VA$jO\ g.=`׿( /BgWݑ' ۻAahz*Eo9/nD٣ՠwB3__v(R v4@//p AGC ~ 5Ϻp؄EFDBhU:}~ (G!nP'Ahߚ} 9H:exe"71յ$hQ3glGJv54#O *"y/} Y(@ao(};}frD9M? =J6d$¶L5z @r(='aɠG+wa>da[C [>$I 44|MPꈣa5܁"'Eڽb5~Z,#)ɹZ-H %s$VH,;3EEyT++Ŧb4t-ԝA_X`.5>1_Iӱhb鱸yZe ?n}1u`;dIMn=Gjƣ*מGtr''cR~ 0ɚh&B\hB:owR*B1xR3Vt`[*$w {ݶIr8Ƴ.zlWǩmKV9[)PadK^a${׭ ņ 磌2_Ovroh4]c; K Eە? PƘZ tyBϾY]H qn;r^HI@F̹!)Q!MmBU~)Tx. i߄k/QY=i%mRw?>e@^ 5* Ue [_EDw-kG*m8іWN#[I,gG, Tun7lִU 4}i)v9;ðһN%|qQ)=5 ,Kf+?ۇ) OS{ҘreGlUu=d֜M=etpH9};PhF/j$ӕ*RԼ4l^&/us]|Ob 765lkW!",k; $NX}_`ja/TL%Y1Lz><7lZ+ְ'3.E4O-l P'NU(K9I1 iFs7Vg>OE W'(J1{N~z 񏚴!Uq~&Y䟕>;xz`1) T>]Y|1B$ZFv}W}YU s0'+ԟ]1e=²Zbٿj_؞yxj3ĚTقl#nÝb/؞spqa*ӘP:q;8_Q$KLIt eWX?1uQAn-3=50P0!Jtd?Zh8_IWq̎Vsh_+ Tm9>m_m}-?Gyp*f:%ԏ-1mL2`_yD!vFAv+/iUF4 Յ@(wR(ܺC<+{hC7v}ƘXH66︇:T-l8rV~ok&x+!H`Mm$5]_xib:6GG]|̯yAcJ rn+4pn9r''+PCĎ-(ɹ,".\̛,_-l+6d6,p-N/1o_ač3o+~j /#HM\b&;}T\ԗJxr+Ew`o^朑juΎ\4Pn;bU $('<-ȷn*TNzUǵf6e5V& 7[(=Yy$BPMӛ^yD'yoZAx@[-րͱtZOעޮ.*nD5n 0LB|E1m5GeNôɧG ۳oI~$Zy%H=?3vd܀ĬBK9Ka>K^_z5s`*:GDB. ሳNNIU0%Q\xH轧Q_ ʕrl?9LFCmG z.=s/*^1c=w)j#b0_*aQRP񜯳)GMOHvFE(ܵXLVo03m7A3望ɡVQ~=#tHٺ!NccIբv$Y'<۵Ģ"%jN3 󔲶7s˫:8!f^}2u 7)8iPݝS9 <ˬ?HT=;Bg}x@`aѴr]jcYiPY7[<#8[8}1F\ OA znO?<`y20"2:m}'Εz6e'}nIyg@&J/&UQ:Z8ٸOˌEx]h<NV,G9M`25Hx暣e(@fuEAJ4QMpLc_N}LN;mfaMRƣۙrDc]"rZ~*z:,X%xt \"c/1Oc46zU. :(P>Y]"`4[rCY߫>AZ jI^)cg(~; 3}j9+aRV3G]jSض?fIS{pi'sIvㄸlXAG'r䡺ydlr ~s=ēv]ڨc_')c0dr W} [JUճOTWPSKN ٮ^R} ϕuTqXTe2bj0eK+;>_˼=I['DrSFJG @29/֕fscpȵe&-⮟j)iێNhvByFd2} /^ME铧j_M/ X_iGFVuL[vU\xPGzlFi'W\7d\Iq0_f)>+NiH5xf ڴJcп;lr*Z 3:y\ߩm+jB{p յ 5ZbkF+PLClݑHew*4q.q(R`u=aWH)SK\$/dkm,H{?WwfED~>1B94sRImuJ)wb, 4 XLw[TX֛/Rd,bܽIm|󕭍qPzlC؉W/q6__zxvP0ĠVh!Bc{Ik;_:gnfizo9r|Uq|V+5V1S:{mÙp -LՔ^ABzmeZL@`H(qHEo5iIKukFSdh߭O}&qʢN8}$lQO8cP\KXXi˅U 2Qrc=no9jNLF$đ΋%f$efo;NKjA9żO6,^*th3Ҿp9)x[CJͲFzv }a!V35],|ˋIpý[V9~)l`eYѧFv\ I}序7宒k|>l3]JWCzq, ^cIl?P(߱{ss!Fg̠ NJexގ6/hg[箄I{}n1Gy+9M&w߼a8Igj>Tfd7ݣUEGHz&w8e|񹏝1{[hreu%+p'~*8EoYk-h×tgu0s@--Jcvrmz[T|`3iRY]j97hc4TܐPTVnCga7_}oҪ,9W/,L'Yd5_=SkŦ _fZ#x^7$~5˚0M}dv[0U;zQyAշ̧Cc[޳?|-ӎwg\(\#mbf+i'0C/t7G1mvRa4ud'y3"\V{\,Tnƾ CFo}f0¸"k d#*j{oVUK5M,KR|3);"мYO0> stream xmUMo:W5?$R. d9M eCkmCp;;w~>|3E_?O]5߶w]Occ]=~?}Oyh9%?۹׬B|Ɯ>);vw%g43>\ 6 EJ78 1{~`W(-;]%=xe_,b+-O;q\L}UI--=BKE1p[! Mߊyu>.N5K)Wb٬8i[_uʕMzQ)V(Txޢjy!Z2P="Zd0\ÃGR\).2*Шa!U,H`+j.5Nα@VK-x%3%AYӀzΚ>kP#5m0Woþj.ZT$X/)n)#Wo(oRZ $Kp4Z-b\1ܰJ P"GXQi/8k^Zq:Zs9dB )sL-7xJ`aɽ)f$1 dъcCZC<73JgznHȰYɚTa,_-O87}KԴܗLloK+gJ.GZyVc48Wt]:P~`rZq.n1] S/Pu7Ue:?&?!d&1yHn5)yғBx#1ޞ]Go׏M?X endstream endobj 473 0 obj << /Producer (pdfTeX-1.40.22) /Creator (TeX) /CreationDate (D:20240430231309-04'00') /ModDate (D:20240430231309-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) kpathsea version 6.3.4/dev) >> endobj 11 0 obj << /Type /ObjStm /N 79 /First 670 /Length 4603 /Filter /FlateDecode >> stream x\moGr_1~r3'⃠<X!.\RSOU&7&yĎ&rǗI ^2"iI&SJl1\pJJ]DrAE99=ιiBU Mh񋦢H.)FOI&va DۊnHHBڂA /<"Sm8# S⨁aB jf Ir^?C#_TН// S] a1::hc^e3 iH%I{BOF3¨ C%wB1"D:Ku$ʘt?J6s) V"VtX :.$WYPeA$65 @D:)[:i,$I2pW׫iW7>Neݟno~kF|w뛿O""jI\ 'Z5~WK~Ҧv@Dhkr q bz +%t5wt5ͫi7kȇMI}{ڬm~Jo_1'9l3sfەu}|{!7=o},<$B_~/q"S@_Ko?xYÀD9+§m3hE#}k!fi}l~尯3)bCgYa{9ܛ8ߎ+Y¨9ȱ= sBCt<>ۄZ<32nv\x⎻u bl}yЧnmdXgVʩb.v|WuZ=]}fΓoߴT_צO4z|njcTWӛWןn^| }|ZDNMߪb hRCJ49\eP U5H*4.a.:I3|8שn!{b4CDpʇٯ1%%1 bً7?ts?ܽ =]B$L'?b1hEdj#WtS^hE)K(zSz"YYo7h^'7-k9d#"--M3{ ?RAo.(m0'5̘5 5oA701Xk#^ª.Hͷyh?\}ՒǤcoT[ͽ^]@L ] \-ӊaJ03h ;U`85^RJioN6g7lد*6"7f~&9 |5Ox86bK߇|U`nm,9?uDQ H.LPd@yxW FRZ$e^W|uY^;gPv`/>6z݃#y{p/qwgXOٌV/*} fԠ=bA` C[z @# G@% _CzAX\C!\% C]gu(^RBܠ.Ѓю#}PFuY7:z FS<%T $&R0PW=27hD!fՍڞ/@bA XWVdX>ySϠhѾϠ>m!`}P+,LO`ɢxٯ*xmWc*!Ri܉cN/ Kg:?kEUk"C`^ ^^2x~3oCÁ AHP~!Ya>+>z+#YqPpߵ(l-XUwMn.k'GSx0XQRq{7w Ath ;S7 şEf,8XDhEXDg1@!:VH91 J/`NX)حA~< ۾W_۳֐os+ԃ}2E.m7"g= n_lѣ5<徔Yh̡I!πH[ldu c``z}\B{!u/bՠ@uZ%R~KUP*8'[k%p\drCpsKųԁoIlS2mkx /k姸sQ3v8EbA/F r <!j.mPĚfqdqAuFYĹ+aUKXĚ\q!]*+vx5B'G*Wg|}^STxu'k1٘yI<+NJ$$n=qTV|R;NS )wr;s+=.ߩDwf@} )w^V^-X-Pb+ؐl]V6tPoi(ġIDK]ŬQW|nE i*>uͧf K.wM;3R?sFJ/;cegm쬍6^jVjVjVʪ,?gs&ϙLX|LX|+-`z,>&oasx ?eC~ʖ:&QwM{q޺Spo}+غih9DWRyСge12w6)w5 b1]US1V g+يlpb8[1F s1|bI!ݸ+EĈ C̮UuQQwة<:G}xT ʣSy4u*Nש<ʣXpB,rx>Zds@Zd+y~~̑9=f?;S>kd^4ԛ v婾kZ(J:4] ~T$t?N'֘ l`ܶ ҡi aGlraSy]Y'a險Z m*u.&<9 8}[7u [_*2r E!P4r*X(29=1,zhio/sN|fY9A֯ h(k`D|s12eZkS/gC- ñE' ?bҰ59|#`=:y+A{!ZDk\hkqM#/\ݾtͧ]w~=Vr/F/JCJS[&5'//0ZG@1]rrD|w/u%!tn55I' J~^?8#6 "8{W͟?^c'9鞣~*Uuwꦪ675;5lj>5~sN FlڦN*Z\WY^^bVo_!HEp( endstream endobj 474 0 obj << /Type /XRef /Index [0 475] /Size 475 /W [1 3 1] /Root 472 0 R /Info 473 0 R /ID [<8B27D41DE1F367FC779AD0E39D3CC600> <8B27D41DE1F367FC779AD0E39D3CC600>] /Length 1423 /Filter /FlateDecode >> stream x%wpE{B`  @ !4AAM@(]ABSPQHstP.Maϼw{>e< y^_-E3D4 E}Qsm yB{5E5QI M Fs+@bo/W\\^>y͆roZ8Q'( ;?L)e[Ix0* :wnpYXrӥ_TpYTq~~eqQU%E _U7 r<4h [@pjqČw|M@HCTh!@KRjBR1hӃeDY D#2WCSKCRYTU߭6[BZ?`z^T}@B  #\ҫÐ0t [3aIAQ7a[^ Fxř*p&~ / r0E:Y0|fe.Ÿ kX T/E9XòxX X +UaM 3ߚZvd*wyب$nRol[r V%l[=خFzw4dm7`gJwk{4Sq`S݃o! [mqX-qk DW8 >"?^2ᢖOeI8SΪmT |έYpAw) .>2QbT¿+9;5p[Y9|~je/Uo{Gp?nx,GO<H 9LrR(E-fCY^B|,CD(H3X(qXaRbE(Vxp(1 J Pl++G^9]]| Uj@u=C#Y ²$ўsFkk:}/-4*Fl:SiX9N7Âz4Q"Y kƎ@ KE6Un$D= _ Kh[/e*{jY{奃BȮNPg6ua/XWwt-mPrzrY/֛-d}4AWU6@H Kҿ!`=#87l +✍R=pX:gT䉜\J9('S8Pl_ZL| ?5Uaa ,⤱j׫Kk*Ej7`p[[7VKl61ndzGmeUMEnm "vEUv(;Tݚ`/2{_ASsAN;t3E#E{m]I~vήqJ) endstream endobj startxref 257950 %%EOF ConsensusClusterPlus/inst/doc/ConsensusClusterPlus.R0000644000175100017510000001256014614331505024021 0ustar00biocbuildbiocbuild### R code from vignette source 'ConsensusClusterPlus.Rnw' ################################################### ### code chunk number 1: ConsensusClusterPlus.Rnw:37-41 ################################################### library(ALL) data(ALL) d=exprs(ALL) d[1:5,1:5] ################################################### ### code chunk number 2: ConsensusClusterPlus.Rnw:48-50 ################################################### mads=apply(d,1,mad) d=d[rev(order(mads))[1:5000],] ################################################### ### code chunk number 3: ConsensusClusterPlus.Rnw:55-56 ################################################### d = sweep(d,1, apply(d,1,median,na.rm=T)) ################################################### ### code chunk number 4: ConsensusClusterPlus.Rnw:70-74 ################################################### library(ConsensusClusterPlus) title=tempdir() results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1, title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="png") ################################################### ### code chunk number 5: ConsensusClusterPlus.Rnw:77-79 ################################################### cat(sprintf("\\graphicspath{{%s}}", paste(gsub("[\\]","/",title),"/",sep=""))) cat("\n") ################################################### ### code chunk number 6: ConsensusClusterPlus.Rnw:84-96 ################################################### #consensusMatrix - the consensus matrix. #For .example, the top five rows and columns of results for k=2: results[[2]][["consensusMatrix"]][1:5,1:5] #consensusTree - hclust object results[[2]][["consensusTree"]] #consensusClass - the sample classifications results[[2]][["consensusClass"]][1:5] #ml - consensus matrix result #clrs - colors for cluster ################################################### ### code chunk number 7: ConsensusClusterPlus.Rnw:104-105 ################################################### icl = calcICL(results,title=title,plot="png") ################################################### ### code chunk number 8: ConsensusClusterPlus.Rnw:109-110 ################################################### icl[["clusterConsensus"]] ################################################### ### code chunk number 9: ConsensusClusterPlus.Rnw:113-114 ################################################### icl[["itemConsensus"]][1:5,] ################################################### ### code chunk number 10: ConsensusClusterPlus.Rnw:125-126 ################################################### cat("\\includegraphics[width=60mm]{consensus001.png}",sep="") ################################################### ### code chunk number 11: ConsensusClusterPlus.Rnw:135-137 ################################################### cat("\\includegraphics[width=60mm]{consensus002.png}",sep="") cat("\\includegraphics[width=60mm]{consensus003.png}",sep="") ################################################### ### code chunk number 12: ConsensusClusterPlus.Rnw:140-142 ################################################### cat("\\includegraphics[width=60mm]{consensus004.png}",sep="") cat("\\includegraphics[width=60mm]{consensus005.png}",sep="") ################################################### ### code chunk number 13: ConsensusClusterPlus.Rnw:148-149 ################################################### cat("\\includegraphics[width=60mm]{consensus007.png}",sep="") ################################################### ### code chunk number 14: ConsensusClusterPlus.Rnw:156-157 ################################################### cat("\\includegraphics[width=60mm]{consensus008.png}",sep="") ################################################### ### code chunk number 15: ConsensusClusterPlus.Rnw:167-168 ################################################### cat("\\includegraphics[width=60mm]{consensus009.png}",sep="") ################################################### ### code chunk number 16: ConsensusClusterPlus.Rnw:178-179 ################################################### cat("\\includegraphics[width=60mm]{icl003.png}",sep="") ################################################### ### code chunk number 17: ConsensusClusterPlus.Rnw:188-189 ################################################### cat("\\includegraphics[width=60mm]{icl001.png}",sep="") ################################################### ### code chunk number 18: ConsensusClusterPlus.Rnw:203-206 ################################################### #example of providing a custom distance matrix as input: #dt = as.dist(1-cor(d,method="pearson")) #ConsensusClusterPlus(dt,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example2",distance="pearson",clusterAlg="hc") ################################################### ### code chunk number 19: ConsensusClusterPlus.Rnw:209-212 ################################################### #example of providing a custom distance function: #myDistFunc = function(x){ dist(x,method="manhattan")} #ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="myDistFunc",clusterAlg="pam") ################################################### ### code chunk number 20: ConsensusClusterPlus.Rnw:216-223 ################################################### #library(cluster) #dianaHook = function(this_dist,k){ #tmp = diana(this_dist,diss=TRUE) #assignment = cutree(tmp,k) #return(assignment) #} #ConsensusClusterPlus(d,clusterAlg="dianaHook",distance="pearson",...) ConsensusClusterPlus/inst/doc/ConsensusClusterPlus.Rnw0000644000175100017510000004274614614231274024401 0ustar00biocbuildbiocbuild% \VignetteIndexEntry{ConsensusClusterPlus Tutorial} % \VignettePackage{ConsensusClusterPlus} \documentclass{article} \usepackage{graphicx} \begin{document} \title{ConsensusClusterPlus (Tutorial)} \author{ Matthew D. Wilkerson} \maketitle \SweaveOpts{keep.source=TRUE} \section{Summary} \texttt{ConsensusClusterPlus} is a tool for unsupervised class discovery. This document provides a tutorial of how to use \texttt{ConsensusClusterPlus}. \section{Brief description of \textit{Consensus Clustering} } \textit{Consensus Clustering} \cite{monti} is a method that provides quantitative evidence for determining the number and membership of possible clusters within a dataset, such as microarray gene expression. This method has gained popularity in cancer genomics, where new molecular subclasses of disease have been discovered \cite{hayes,verhaak}. The \textit{Consensus Clustering} method involves subsampling from a set of items, such as microarrays, and determines clusterings of specified cluster counts (\textit{k}). Then, pairwise \textit{consensus} values, the proportion that two items occupied the same cluster out of the number of times they occurred in the same subsample, are calculated and stored in a symmetrical \textit{consensus matrix} for each \textit{k}. The \textit{consensus matrix} is summarized in several graphical displays that enable a user to decide upon a reasonable cluster number and membership. A web-based version of \textit{Consensus Clustering} is publicly available \cite{gp}. For a formal description, see \cite{monti}. \\ \\ \texttt{ConsensusClusterPlus}\cite{wilkerson} implements the \textit{Consensus Clustering} method in \textit{R} and extends it with new features and graphical outputs that can aid users in class discovery. \section{Tutorial} There are three main steps to use \texttt{ConsensusClusterPlus}: preparing input data, running the program, and generating cluster-consensus and item-consensus. \subsection{Preparing input data} The first step is to gather some data for cluster analysis. These data could be the result of an experiment such as a mRNA expression microarray or immunohistochemical staining intensities. The input data format is a matrix where columns are samples (items), rows are features and cells are numerical values. For this tutorial, we use the ALL gene expression data from the ALL library. You can see the matrix d is already in the proper format. The column and row names, which correspond to the sample and gene names, will be maintained in the output. <<>>= library(ALL) data(ALL) d=exprs(ALL) d[1:5,1:5] @ For the purpose of selecting the most informative genes for class detection, we reduce the dataset to the top 5,000 most variable genes, measured by median absolute deviation. The choice of 5,000 genes and MAD can be substituted with other statistical variability filters. Users can decide what type of filtering to use or to skip filtering. Another choice would be to supply weights for sampling genes see weightsFeatures in Additional Options. <<>>= mads=apply(d,1,mad) d=d[rev(order(mads))[1:5000],] @ If one wants to transform or normalize their data, they can easily do so using other Bioconductor methods or a simple statement. We chose to use the default settings of the agglomerative hierarchical clustering algorithm using Pearson correlation distance, so it is appropriate to gene median center d using this simple statement: <<>>= d = sweep(d,1, apply(d,1,median,na.rm=T)) @ d is now ready for \texttt{ConsensusClusterPlus} analysis. \subsection{Running \texttt{ConsensusClusterPlus}} For this tutorial, we selected 80\% item resampling (pItem), 80\% gene resampling (pFeature), a maximum evalulated k of 6 so that cluster counts of 2,3,4,5,6 are evaluated (maxK), 50 resamplings (reps), agglomerative hierarchical clustering algorithm (clusterAlg) upon 1- Pearson correlation distances (distance), gave our output a title (title), and opted to have graphical results written to png files. We also used a specific random seed so that this example is repeatable (seed). \\ \\ ** Note: In practice, a much higher reps is recommended such as 1,000 and a higher cluster count such as 20. <>= library(ConsensusClusterPlus) title=tempdir() results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1, title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="png") @ <>= cat(sprintf("\\graphicspath{{%s}}", paste(gsub("[\\]","/",title),"/",sep=""))) cat("\n") @ The output of \texttt{ConsensusClusterPlus} is a list, in which the element of the list corresponds to results from the \textit{kth} cluster, for instance, results[[2]] is the results result of \textit{k}=2. The seed option specifies a random number seed and is used here for reproducibility of this tutorial. These list elements have the following elements: <>= #consensusMatrix - the consensus matrix. #For .example, the top five rows and columns of results for k=2: results[[2]][["consensusMatrix"]][1:5,1:5] #consensusTree - hclust object results[[2]][["consensusTree"]] #consensusClass - the sample classifications results[[2]][["consensusClass"]][1:5] #ml - consensus matrix result #clrs - colors for cluster @ See additional options section for further description of clustering algorithms and distance metrics. \subsection{Generating cluster and item consensus} After executing \texttt{ConsensusClusterPlus}, one can optionally calculate cluster-consensus and item-consensus results by: <<>>= icl = calcICL(results,title=title,plot="png") @ calcICL returns a list of two elements: <<>>= icl[["clusterConsensus"]] @ <<>>= icl[["itemConsensus"]][1:5,] @ \section{Graphic Output Description} The output of \texttt{ConsensusClusterPlus} consists of graphics, which are written to the screen, 'pdf' file, or 'png' files depending on the plot option; and numerical data which can be optionally written to a CSV file depending on the writeTable option. For large datasets, graphical displays can be quite large and plotting the consensus dendrogram above the consensus matrices may not be possible. If your dataset is large, the plot option 'pngBMP' which does not produce the consensus matrix dendrogram and uses the bitmap function rather png. Bitmap is often available natively on linux systems but can potentially be installed on other systems. \subsection{Consensus Matrices} The first graphic shows the consensus color legend. \\ <>= cat("\\includegraphics[width=60mm]{consensus001.png}",sep="") @ \\ The remaining graphics are heatmaps of the consensus matrices for \textit{k} = 2, 3, 4, 5 \cite{monti}. The consensus matrices have items as both rows and columns, which are microarrays in this example, and where consensus values range from 0 (never clustered together) to 1 (always clustered together) marked by white to dark blue. The consensus matrices are ordered by the consensus clustering which is depicted as a dendrogram atop the heatmap. To aid analysis, the cluster memberships are marked by colored rectangles between the dendrogram and heatmap according to a legend within the graphic. This enables a user to compare a clusters' member count in the context of their consensus. \\ <>= cat("\\includegraphics[width=60mm]{consensus002.png}",sep="") cat("\\includegraphics[width=60mm]{consensus003.png}",sep="") @ \\ <>= cat("\\includegraphics[width=60mm]{consensus004.png}",sep="") cat("\\includegraphics[width=60mm]{consensus005.png}",sep="") @ \\ \subsection{Consensus Cumulative Distribution Function (CDF) Plot} This graphic shows the cumulative distribution functions \cite{monti} of the consensus matrix for each \textit{k} (indicated by colors), estimated by a histogram of 100 bins. This figure allows a user to determine at what number of clusters, \textit{k}, the CDF reaches an approximate maximum, thus consensus and cluster confidence is at a maximum at this \textit{k}. See \cite{monti} for further details intepretation. \\ <>= cat("\\includegraphics[width=60mm]{consensus007.png}",sep="") @ \\ \subsection{Delta Area Plot} This graphic shows the relative change in area under the CDF curve \cite{monti} comparing \textit{k} and \textit{k} $-$ 1. For \textit{k} = 2, there is no \textit{k} -1, so the total area under the curve rather than the relative increase is plotted. This plot allows a user to determine the relative increase in consensus and determine \textit{k} at which there is no appreciable increase. See \cite{monti} for intepretation. \\ <>= cat("\\includegraphics[width=60mm]{consensus008.png}",sep="") @ \\ \subsection{Tracking Plot} This graphic shows the cluster assignment of items (columns) for each \textit{k} (rows) by color. The colors correspond to the colors of the consensus matrix class asssignments. Hatch marks below the plot indicate items/samples. This plot provides a view of item cluster membership across different \textit{k} and enables a user to track the history of clusters relative to earlier clusters. Items that change clusters often (changing colors within a column) are indicative of unstable membership. Clusters with an abundance of unstable members suggest an unstable cluster. \\ <>= cat("\\includegraphics[width=60mm]{consensus009.png}",sep="") @ \\ \subsection{Cluster-Consensus Plot} This graphic shows the \textit{cluster-consensus} value of clusters at each \textit{k}. This is the mean of all pairwise consensus values between a cluster's members. Cluster is indicated by color following the same color scheme as the cluster matrices and tracking plots. The bars are grouped by \textit{k} which is marked on the horizontal axis. High values indicate a cluster has high stability and low values indicate a cluster has low stability. This plot enables a user to view the mean cluster-consensus among clusters at a given \textit{k} and compare values of clusters across different \textit{k} via the color scheme. \\ <>= cat("\\includegraphics[width=60mm]{icl003.png}",sep="") @ \\ \subsection{Item-Consensus Plot} \textit{Item-consensus} values are the mean consensus of an item with all items in a particular cluster. An item has \textit{k} item-consensus values corresponding to each cluster at a particular \textit{k}. These values are depicted in barplots for each \textit{k}. Samples are stacked bars. \textit{Item-consensus} values are indicated by the heights of the colored portion of the bars, whose color corresponds to the common color scheme. Bars' rectangles are ordered by increasing value from bottom to top. The asterisks at the top indicate the consensus cluster for each item. \\ <>= cat("\\includegraphics[width=60mm]{icl001.png}",sep="") @ \\ This plot provides a view of item-consensus across all other clusters at a given \textit{k}. This enables a user to see if a sample is a very "pure" member of a cluster or if it shares high consensus to multiple clusters (large rectangles in a column of multiple colors), suggesting that it is an unstable or "unpure" member. These values could be used to select "core" samples similar to \cite{verhaak} that are highly representative of a cluster. Further, this plot can aid cluster number decisions. For instance, if a cluster consists mainly of members with very "unpure" items, then this evidence could be used to support a maximum cluster number at 1 below this \textit{k} or this evidence could support that this cluster is an outlier cluster. Decisions such as these are best to be made by the user in conjunction with other evidence such as consensus matrices, tracking plots, etc. \\ \\ \subsection{Additional details on options for \texttt{ConsensusClusterPlus} function} \begin{itemize} \item \textbf{d} This option specifies the data to be used in ConsensusClusterPlus. This is typically a matrix of numerical expression values, of which an example is provided in the Running ConsensusClusterPlus section of this document. When provided with a data matrix as d, ConsensusClusterPlus recalculates a distance matrix during each iteration. This recalculation is required if feature resampling is specified (pFeature less than 1). However with very large datasets (1,000's of items) and no feature resampling, this process can be time consuming and unnecessary. Alternatively, a pre-computed distance matrix can be provided as d, resulting in faster computation. An example of using a dist object as input follow below. <<>>= #example of providing a custom distance matrix as input: #dt = as.dist(1-cor(d,method="pearson")) #ConsensusClusterPlus(dt,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example2",distance="pearson",clusterAlg="hc") @ \item \textbf{distance}This option describes the distance metric to be used. A character value of one of the following metrics is accepted: pearson for (1 - Pearson correlation), spearman for (1 - Spearman correlation), euclidean, binary, maximum, canberra, minkowski. Alternatively a custom distance function cab be supplied for this argument, which accepts a numerical matrix (items as rows and features as columns) as input and returns a dist object. <<>>= #example of providing a custom distance function: #myDistFunc = function(x){ dist(x,method="manhattan")} #ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="myDistFunc",clusterAlg="pam") @ \item \textbf{clusterAlg} This option specifies the type of clustering algorithm to use: "hc" for hierarchical clustering, "pam" for partioning around medoids, "km" for kmeans. Alternatively, one can supply their own clustering function, which should accept a distance matrix and a cluster number as its arguments and returns vector of cluster assignments having the same order as the distance matrix columns. For example, this simple function executes divisive clustering using the diana function from the cluster package and returns the expected object. The last line shows an example of how this could be used. <<>>= #library(cluster) #dianaHook = function(this_dist,k){ #tmp = diana(this_dist,diss=TRUE) #assignment = cutree(tmp,k) #return(assignment) #} #ConsensusClusterPlus(d,clusterAlg="dianaHook",distance="pearson",...) @ \item \textbf{update on kmeans options} "km" option performs kmeans clustering directly on a data matrix, with items and features resampled. \item \textbf{innerLinkage} This option specifies the linkage method to use in iterative agglomerative hierarchical clustering. Not applicable to other cluster algorithms. \item \textbf{finalLinkage} This option specifies the linkage method to use in the final agglomerative hierarchical clustering. \item \textbf{distance} This option specifies the distance metric to use: "pearson" for 1-Pearson correlation coefficient, "spearman" for 1-Spearman correlation coefficient, "euclidean" for Euclidean distance. \item \textbf{tmyPal} character vector of ordered colors to use for consensus matrix. If not specified, a series of white to blue colors is used. \item \textbf{writeTable} boolean. If TRUE, write consensus matrices, ICL, and log to file. \item \textbf{weightsFeature} numerical vector of weights for sampling features. See help for further details. \item \textbf{weightsItem} numerical vector of weights for sampling items. See help for further details. \item \textbf{verbose} boolean. If TRUE, print messages to the screen to indicate progress. This is useful for large datasets. \end{itemize} \begin{thebibliography}{} \bibitem{monti}Monti, S., Tamayo, P., Mesirov, J., Golub, T. (2003) Consensus Clustering: A Resampling-Based Method for Class Discovery and Visualization of Gene Expression Microarray Data. Machine Learning, 52, 91$-$118. \bibitem{wilkerson}Wilkerson, M.D., Hayes, D.N. (2010). ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking. Bioinformatics, 2010 Jun 15;26(12):1572$-$3. \bibitem{hayes}Hayes, D.N, Monti, S., Parmigiani, G. et al. (2006) Gene Expression Profiling Reveals Reproducible Human Lung Adenocarcinoma Subtypes in Multiple Independent Patient Cohorts. Journal of Clinical Oncology, 24 (31) 5079$-$5090. \bibitem{verhaak}Verhaak, R., Hoadley, K., et al. (2010) Integrated genomic analysis identifies clinically relevant subtypes of glioblastoma characterized by abnormalities in PDGFRA, IDH1, EGFR and NF1. Cancer Cell. 17,1-13. \bibitem{gp}\texttt{http://www.broadinstitute.org/cancer/software/genepattern/} \end{thebibliography} \subsection{Changes} \begin{itemize} \item Version 1.0.1. Item-consensus calculation was corrected. Consensus matrix heat maps are now guaranteed to correspond to the scale. \item Version 1.5.1. Version 1.0.1 changes were re-incorporated into Bioc 2.9, 2.8. Version 1.0.1 was part of Bioc 2.6, but not part of Bioc 2.7. \item Version 1.11.1. For large datasets, the input data (d) was modified to also accept a distance matrix which reduces computation time, and plotBMP was added a plot type so that large consensus matrices can be plotted. Internal data structures were modified to increase speed. Distance metric options expanded ("maximum", "manhattan", "canberra", "binary","minkowski" from dist) and custom distance function option added. Partitioning Around Mediods clustering (from cluster package) was added as a clustering algorithm. Kmeans invocation was changed to run on the data matrix by default. Kmeans invocation on a distance matrix is now possible by kmdist. \item Version Version 1.35.0 Added CITATION file, updated references, and man pages. \item Version 1.51.1 Breif R code update for compatibilty with R 4.0. Deprecated kmdist clustering option. \end{itemize} \end{document} ConsensusClusterPlus/inst/NEWS0000644000175100017510000000246214614231274017444 0ustar00biocbuildbiocbuildVersion 1.52.0 Brief R code update for compatibilty with R 4.0. Improved messages. Deprecated kmdist clustering option. Version 1.35.0 Added CITATION file, updated references, and man pages. Version 1.11.1. For large datasets, the input data (d) was modified to also accept a distance matrix which reduces computation time, and plotBMP was added a plot type so that large consensus matrices can be plotted. Internal data structures were modified to increase speed. Distance metric options expanded ("maximum", "manhattan", "canberra", "binary","minkowski" from dist) and custom distance function option added. Partitioning Around Mediods clustering (from cluster package) was added as a clustering algorithm. Kmeans invocation ("km") was changed to run on a data matrix input by default. "kmdist" performs kmeans clustering on a distance matrix calcualted from the resampled data. In versions prior to 1.11.1, the "km" option refers to kmdist. Users wishing to use this kmeans invocation in versions 1.11.1 or later should use option kmdist. Version 1.5.1. 1.0.1 changes were re-incorporated into Bioc 2.9, 2.8. Version 1.0.1 was part of Bioc 2.6, but not part of Bioc 2.7. Version 1.0.1. Item-consensus calculation was corrected. Consensus matric heat maps are now guaranteed to correspond to the scale. ConsensusClusterPlus/man/0000755000175100017510000000000014614231274016537 5ustar00biocbuildbiocbuildConsensusClusterPlus/man/ConsensusClusterPlus.Rd0000644000175100017510000001471514614231274023224 0ustar00biocbuildbiocbuild\name{ConsensusClusterPlus} \alias{ConsensusClusterPlus} \alias{calcICL} \title{ run ConsensusClusterPlus} \description{ ConsensusClusterPlus function for determing cluster number and class membership by stability evidence. calcICL function for calculating cluster-consensus and item-consensus. } \usage{ ConsensusClusterPlus( d=NULL, maxK = 3, reps=10, pItem=0.8, pFeature=1, clusterAlg="hc",title="untitled_consensus_cluster", innerLinkage="average", finalLinkage="average", distance="pearson", ml=NULL, tmyPal=NULL,seed=NULL,plot=NULL,writeTable=FALSE,weightsItem=NULL,weightsFeature=NULL,verbose=F,corUse="everything") calcICL(res,title="untitled_consensus_cluster",plot=NULL,writeTable=FALSE) } \arguments{ \item{d}{data to be clustered; either a data matrix where columns=items/samples and rows are features. For example, a gene expression matrix of genes in rows and microarrays in columns, or ExpressionSet object, or a distance object (only for cases of no feature resampling) } \item{maxK}{integer value. maximum cluster number to evaluate. } \item{reps}{integer value. number of subsamples. } \item{pItem}{numerical value. proportion of items to sample. } \item{pFeature}{numerical value. proportion of features to sample. } \item{clusterAlg}{character value. cluster algorithm. 'hc' hierarchical (hclust), 'pam' for paritioning around medoids, 'km' for k-means upon data matrix, or a function that returns a clustering. See example and vignette for more details. } \item{title}{ character value for output directory. Directory is created only if plot is not NULL or writeTable is TRUE. This title can be an abosulte or relative path. } \item{innerLinkage}{hierarchical linkage method for subsampling. } \item{finalLinkage}{hierarchical linkage method for consensus matrix. } \item{distance}{character value. 'pearson': (1 - Pearson correlation), 'spearman' (1 - Spearman correlation), 'euclidean', 'binary', 'maximum', 'canberra', 'minkowski" or custom distance function. } \item{ml}{optional. prior result, if supplied then only do graphics and tables.} \item{tmyPal}{optional character vector of colors for consensus matrix} \item{seed}{optional numerical value. sets random seed for reproducible results.} \item{plot}{character value. NULL - print to screen, 'pdf', 'png', 'pngBMP' for bitmap png, helpful for large datasets.} \item{writeTable}{logical value. TRUE - write ouput and log to csv.} \item{weightsItem}{optional numerical vector. weights to be used for sampling items.} \item{weightsFeature}{optional numerical vector. weights to be used for sampling features.} \item{res}{ result of consensusClusterPlus.} \item{verbose}{ boolean. If TRUE, print messages to the screen to indicate progress. This is useful for large datasets.} \item{corUse}{optional character value. specifies how to handle missing data in correlation distances 'everything','pairwise.complete.obs', 'complete.obs' see cor() for description.} } \details{ ConsensusClusterPlus implements the Consensus Clustering algorithm of Monti, et al (2003) and extends this method with new functionality and visualizations. Its utility is to provide quantitative stability evidence for determing a cluster count and cluster membership in an unsupervised analysis. ConsensusClusterPlus takes a numerical data matrix of items as columns and rows as features. This function subsamples this matrix according to pItem, pFeature, weightsItem, and weightsFeature, and clusters the data into 2 to maxK clusters by clusterArg clusteringAlgorithm. Agglomerative hierarchical (hclust) and kmeans clustering are supported by an option see above. For users wishing to use a different clustering algorithm for which many are available in R, one can supply their own clustering algorithm as a simple programming hook - see the second commented-out example that uses divisive hierarchical clustering. For a detailed description of usage, output and images, see the vignette by: openVignette(). } \value{ ConsensusClusterPlus returns a list of length maxK. Each element is a list containing consensusMatrix (numerical matrix), consensusTree (hclust), consensusClass (consensus class asssignments). ConsensusClusterPlus also produces images. calcICL returns a list of two elements clusterConsensus and itemConsensus corresponding to cluster-consensus and item-consensus. See Monti, et al (2003) for formulas. } \author{ Matt Wilkerson mdwilkerson@outlook.com Peter Waltman waltman@soe.ucsc.edu } \references{ Please cite the ConsensusClusterPlus publication, below, if you use ConsensusClusterPlus in a publication or presentation: Wilkerson, M.D., Hayes, D.N. (2010). ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking. Bioinformatics, 2010 Jun 15;26(12):1572-3. Original description of the Consensus Clustering method: Monti, S., Tamayo, P., Mesirov, J., Golub, T. (2003) Consensus Clustering: A Resampling-Based Method for Class Discovery and Visualization of Gene Expression Microarray Data. Machine Learning, 52, 91-118. } \examples{ # obtain gene expression data library(Biobase) data(geneData) d=geneData #median center genes dc = sweep(d,1, apply(d,1,median)) # run consensus cluster, with standard options rcc = ConsensusClusterPlus(dc,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example",distance="pearson",clusterAlg="hc") # same as above but with pre-computed distance matrix, useful for large datasets (>1,000's of items) dt = as.dist(1-cor(dc,method="pearson")) rcc2 = ConsensusClusterPlus(dt,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example2",distance="pearson",clusterAlg="hc") # k-means clustering rcc3 = ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="euclidean",clusterAlg="km") ### partition around medoids clustering with manhattan distance rcc4 = ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="manhattan",clusterAlg="pam") ## example of custom distance function as hook: myDistFunc = function(x){ dist(x,method="manhattan")} rcc5 = ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="myDistFunc",clusterAlg="pam") ##example of clusterAlg as hook: #library(cluster) #dianaHook = function(this_dist,k){ # tmp = diana(this_dist,diss=TRUE) # assignment = cutree(tmp,k) # return(assignment) #} #rcc6 = ConsensusClusterPlus(d,maxK=6,reps=25,pItem=0.8,pFeature=1,title="example",clusterAlg="dianaHook") ## ICL resICL = calcICL(rcc,title="example") } \keyword{ methods } ConsensusClusterPlus/NAMESPACE0000755000175100017510000000055314614231274017211 0ustar00biocbuildbiocbuildexport(ConsensusClusterPlus,calcICL) importFrom(graphics, barplot, hist, legend, lines, par, plot, rect, segments, text) importFrom(grDevices, dev.off, pdf, png, rainbow, rgb) importFrom(stats, as.dendrogram, as.dist, cor, cutree, dist, hclust,heatmap, kmeans) importFrom(utils, write.csv, write.table) importFrom(Biobase, exprs) importFrom(cluster, pam, diana) ConsensusClusterPlus/R/0000755000175100017510000000000014614231274016165 5ustar00biocbuildbiocbuildConsensusClusterPlus/R/ConsensusClusterPlus.R0000644000175100017510000006022114614231274022477 0ustar00biocbuildbiocbuildConsensusClusterPlus <- function( d=NULL, maxK = 3, reps=10, pItem=0.8, pFeature=1, clusterAlg="hc", title="untitled_consensus_cluster", innerLinkage="average", finalLinkage="average", distance="pearson", ml=NULL, tmyPal=NULL, seed=NULL, plot=NULL, writeTable=FALSE, weightsItem=NULL, weightsFeature=NULL, verbose=F, corUse="everything" ) { ##description: runs consensus subsamples if(is.null(seed)==TRUE){ seed=timeSeed = as.numeric(Sys.time()) } set.seed(seed) #distance=ifelse( inherits(d,"dist"), attr( d, "method" ), "pearson" ) if(is.null(ml)==TRUE){ if ( ! any(class( d ) %in% c( "dist", "matrix", "ExpressionSet" )) ) { stop("d must be a matrix, distance object or ExpressionSet (eset object)") } if ( inherits( d, "dist" ) ) { ## if d is a distance matrix, fix a few things so that they don't cause problems with the analysis ## Note, assumption is that if d is a distance matrix, the user doesn't want to sample over the row features if ( is.null( attr( d, "method" ) ) ) { attr( d, "method" ) <- distance <- "unknown - user-specified" } if ( is.null( distance ) || ( distance != attr( d, "method" ) ) ) { distance <- attr( d, "method" ) } if ( ( ! is.null( pFeature ) ) && ( pFeature < 1 ) ) { message( "Cannot use the pFeatures parameter when specifying a distance matrix as the data object, setting pFeature to 1.\n" ) pFeature <- 1 } if ( ! is.null( weightsFeature ) ) { message( "Cannot use the weightsFeature parameter when specifying a distance matrix as the data object\n" ) weightsFeature <- NULL } } else { if ( is.null( distance ) ) { ## we should never get here, but just in case message("no specified distance, setting distance to Pearson"); distance <- "pearson" } } if ( ( clusterAlg == "km" ) && inherits( distance, "character" ) && ( distance != "euclidean" ) ) { message( "Note: The km (kmeans) option only supports a euclidean distance metric when supplying a data matrix. If you want to cluster a distance matrix, use a different algorithm such as 'hc' or 'pam'. Changing distance to euclidean") distance <- 'euclidean' } if ( inherits( d,"ExpressionSet" ) ) { d <- exprs(d) } ml <- ccRun( d=d, maxK=maxK, repCount=reps, diss=inherits(d,"dist"), pItem=pItem, pFeature=pFeature, innerLinkage=innerLinkage, clusterAlg=clusterAlg, weightsFeature=weightsFeature, weightsItem=weightsItem, distance=distance, verbose=verbose, corUse=corUse) } res=list(); ##make results directory if((is.null(plot)==FALSE | writeTable) & !file.exists(paste(title,sep=""))){ dir.create(paste(title,sep="")) } ##write log file log <- matrix( ncol=2, byrow=T, c("title",title, "maxK",maxK, "input matrix rows",ifelse ( inherits( d, "matrix" ), nrow(d), "dist-mat" ), "input matrix columns",ifelse ( inherits( d, "matrix" ), ncol(d), ncol( as.matrix(d) ) ), "number of bootstraps",reps, "item subsampling proportion",pItem, "feature subsampling proportion",ifelse( is.null(pFeature), 1, pFeature ), "cluster algorithm",clusterAlg, "inner linkage type",innerLinkage, "final linkage type",finalLinkage, "correlation method",distance, "plot",if(is.null(plot)) NA else plot, "seed",if(is.null(seed)) NA else seed)) colnames(log) = c("argument","value") if(writeTable){ write.csv(file=paste(title,"/",title,".log.csv",sep=""), log,row.names=F) } if(is.null(plot)){ ##nothing }else if(plot=="pngBMP"){ bitmap(paste(title,"/","consensus%03d.png",sep="")) }else if(plot=="png"){ png(paste(title,"/","consensus%03d.png",sep="")) }else if (plot=="pdf"){ pdf(onefile=TRUE, paste(title,"/","consensus.pdf",sep="")) }else if (plot=="ps"){ postscript(onefile=TRUE, paste(title,"/","consensus.ps",sep="")) } colorList=list() colorM = rbind() #matrix of colors. #18 colors for marking different clusters thisPal <- c("#A6CEE3","#1F78B4","#B2DF8A","#33A02C","#FB9A99","#E31A1C","#FDBF6F","#FF7F00","#CAB2D6","#6A3D9A","#FFFF99","#B15928", "#bd18ea", #magenta "#2ef4ca", #aqua "#f4cced", #pink, "#f4cc03", #lightorange "#05188a", #navy, "#e5a25a", #light brown "#06f106", #bright green "#85848f", #med gray "#000000", #black "#076f25", #dark green "#93cd7f",#lime green "#4d0776", #dark purple "#ffffff" #white ) ##plot scale colBreaks=NA if(is.null(tmyPal)==TRUE){ colBreaks=10 tmyPal = myPal(colBreaks) }else{ colBreaks=length(tmyPal) } sc = cbind(seq(0,1,by=1/( colBreaks) )); rownames(sc) = sc[,1] sc = cbind(sc,sc) heatmap(sc, Colv=NA, Rowv=NA, symm=FALSE, scale='none', col=tmyPal, na.rm=TRUE,labRow=rownames(sc),labCol=F,main="consensus matrix legend") for (tk in 2:maxK){ if(verbose){ message(paste("consensus ",tk)) } fm = ml[[tk]] hc=hclust( as.dist( 1 - fm ), method=finalLinkage); message("clustered") ct = cutree(hc,tk) names(ct) = colnames(d) if(any(class(d)=="dist")){ names(ct) = colnames(as.matrix(d)) } c = fm colorList = setClusterColors(res[[tk-1]][[3]],ct,thisPal,colorList) pc = c pc=pc[hc$order,] #pc is matrix for plotting, same as c but is row-ordered and has names and extra row of zeros. if(!is.null(plot) && plot=="pngBMP"){ pc = pc[,hc$order ] #mod for no tree pc = rbind(pc,0) #no dendrogram if pngBMP oc = colorList[[1]][hc$order] #mod for no tree heatmap(pc, Colv = NA, Rowv = NA, symm = FALSE, scale = "none", col = tmyPal, na.rm = TRUE, labRow = F, labCol = F, mar = c(5, 5), main = paste("consensus matrix k=", tk, sep = ""), ColSideCol = oc) }else{ pc = rbind(pc,0) #former with tree: heatmap(pc, Colv=as.dendrogram(hc), Rowv=NA, symm=FALSE, scale='none', col=tmyPal, na.rm=TRUE,labRow=F,labCol=F,mar=c(5,5),main=paste("consensus matrix k=",tk,sep="") , ColSideCol=colorList[[1]]) } legend("topright",legend=unique(ct),fill=unique(colorList[[1]]),horiz=FALSE ) res[[tk]] = list(consensusMatrix=c,consensusTree=hc,consensusClass=ct,ml=ml[[tk]],clrs=colorList) colorM = rbind(colorM,colorList[[1]]) } CDF(ml) clusterTrackingPlot(colorM[,res[[length(res)]]$consensusTree$order]) if(is.null(plot)==FALSE){ dev.off(); } res[[1]] = colorM if(writeTable){ for(i in 2:length(res)){ write.csv(file=paste(title,"/",title,".k=",i,".consensusMatrix.csv",sep=""), res[[i]]$consensusMatrix) write.table(file=paste(title,"/",title,".k=",i,".consensusClass.csv",sep=""), res[[i]]$consensusClass,col.names = F,sep=",") } } return(res) } calcICL = function(res,title="untitled_consensus_cluster",plot=NULL,writeTable=FALSE){ #calculates and plots cluster consensus and item consensus cc=rbind() cci = rbind() sumRes=list() colorsArr=c() #make results directory if((is.null(plot)==FALSE | writeTable) & !file.exists(paste(title,sep=""))){ dir.create(paste(title,sep="")) } if(is.null(plot)){ #to screen }else if(plot=="pdf"){ pdf(onefile=TRUE, paste(title,"/","icl.pdf",sep="")) }else if(plot=="ps"){ postscript(onefile=TRUE, paste(title,"/","icl.ps",sep="")) }else if (plot=="png"){ png(paste(title,"/","icl%03d.png",sep="")) }else if (plot=="pngBMP"){ bitmap(paste(title,"/","icl%03d.png",sep="")) } par(mfrow=c(3,1),mar=c(4,3,2,0)) for (k in 2:length(res)){ #each k eiCols = c(); o = res[[k]] m = o$consensusMatrix m = triangle(m,mode=2) for (ci in sort(unique(o$consensusClass))){ #each cluster in k items = which(o$consensusClass==ci) nk = length(items) mk = sum( m[items,items], na.rm=T)/((nk*(nk-1))/2) cc=rbind(cc,c(k,ci,mk)) #cluster-consensus for (ei in rev(res[[2]]$consensusTree$order) ){ denom = if (ei %in% items) { nk - 1} else { nk } mei = sum( c(m[ei,items],m[items,ei]), na.rm=T)/denom # mean item consensus to a cluster. cci = rbind(cci,c(k,ci,ei,mei)) #cluster, cluster index, item index, item-consensus } eiCols = c(eiCols, rep(ci,length(o$consensusClass)) ) } cck = cci[which(cci[,1]==k),] #only plot the new k data. #group by item, order by cluster i w=lapply(split(cck,cck[,3]), function(x) { y=matrix(unlist(x),ncol=4); y[order(y[,2]),4] }) q = matrix(as.numeric(unlist(w)),ncol=length(w),byrow=F) q = q[,res[[2]]$consensusTree$order] #order by leave order of k=2 #q is a matrix of k rows and sample columns, values are item consensus of sample to the cluster. thisColors = unique(cbind(res[[k]]$consensusClass,res[[k]]$clrs[[1]])) thisColors=thisColors[order(as.numeric(thisColors[,1])),2] colorsArr=c(colorsArr,thisColors) sumRes[[k]] = rankedBarPlot(q,thisColors,cc=res[[k]]$consensusClass[res[[2]]$consensusTree$order],paste("k=",k,sep="") ) } ys=cs=lab=c() lastk=cc[1,1] for(i in 1:length(colorsArr)){ if(lastk != cc[i,1]){ ys=c(ys,0,0) cs=c(cs,NA,NA) lastk=cc[i,1] lab=c(lab,NA,NA) } ys=c(ys,cc[i,3]) cs=c(cs,colorsArr[i]) lab=c(lab,cc[i,1]) } names(ys) = lab par(mfrow=c(3,1),mar=c(4,3,2,0)) barplot(ys,col=cs,border=cs,main="cluster-consensus",ylim=c(0,1),las=1) if(is.null(plot)==FALSE){ dev.off() } colnames(cc) = c("k","cluster","clusterConsensus") colnames(cci) = c("k","cluster","item","itemConsensus") cci[,"item"] = names(res[[2]]$consensusClass)[ cci[,"item"] ] #type cci cci = data.frame( k=as.numeric(cci[,"k"]), cluster=as.numeric(cci[,"cluster"]), item=cci[,"item"], itemConsensus=as.numeric(cci[,"itemConsensus"])) #write to file. if(writeTable){ write.csv(file=paste(title,"/",title,".summary.cluster.consensus.csv",sep=""),row.names=F, cc) write.csv(file=paste(title,"/",title,".summary.item.consensus.csv",sep=""), row.names=F, cc) } return(list(clusterConsensus=cc,itemConsensus=cci)) } ccRun <- function( d=d, maxK=NULL, repCount=NULL, diss=inherits( d, "dist" ), pItem=NULL, pFeature=NULL, innerLinkage=NULL, distance=NULL, #ifelse( inherits(d,"dist"), attr( d, "method" ), "euclidean" ),@@@@@ clusterAlg=NULL, weightsItem=NULL, weightsFeature=NULL, verbose=NULL, corUse=NULL) { m = vector(mode='list', repCount) ml = vector(mode="list",maxK) n <- ifelse( diss, ncol( as.matrix(d) ), ncol(d) ) mCount = mConsist = matrix(c(0),ncol=n,nrow=n) ml[[1]] = c(0); if (is.null( distance ) ) distance <- 'euclidean' ## necessary if d is a dist object and attr( d, "method" ) == NULL acceptable.distance <- c( "euclidean", "maximum", "manhattan", "canberra", "binary","minkowski", "pearson", "spearman" ) main.dist.obj <- NULL if ( diss ){ main.dist.obj <- d ## reset the pFeature & weightsFeature params if they've been set (irrelevant if d is a dist matrix) if ( ( !is.null(pFeature) ) && ( pFeature < 1 ) ) { message( "user-supplied data is a distance matrix; ignoring user-specified pFeature parameter\n" ) pFeature <- 1 # set it to 1 to avoid problems with sampleCols } if ( ! is.null( weightsFeature ) ) { message( "user-supplied data is a distance matrix; ignoring user-specified weightsFeature parameter\n" ) weightsFeature <- NULL # set it to NULL to avoid problems with sampleCols } } else { ## d is a data matrix ## we're not sampling over the features if ( ( clusterAlg != "km" ) && ( is.null( pFeature ) || ( ( pFeature == 1 ) && is.null( weightsFeature ) ) ) ) { ## only generate a main.dist.object IFF 1) d is a matrix, 2) we're not sampling the features, and 3) the algorithm isn't 'km' if ( inherits( distance, "character" ) ) { if ( ! distance %in% acceptable.distance & ( class(try(get(distance),silent=T))!="function") ) stop("unsupported distance.") if(distance=="pearson" | distance=="spearman"){ main.dist.obj <- as.dist( 1-cor(d,method=distance,use=corUse )) }else if( class(try(get(distance),silent=T))=="function"){ main.dist.obj <- get(distance)( t( d ) ) }else{ main.dist.obj <- dist( t(d), method=distance ) } attr( main.dist.obj, "method" ) <- distance } else stop("unsupported distance specified.") } else { ## pFeature < 1 or a weightsFeature != NULL ## since d is a data matrix, the user wants to sample over the gene features, so main.dist.obj is left as NULL } } for (i in 1:repCount){ if(verbose){ message(paste("random subsample",i)); } ## take expression matrix sample, samples and genes sample_x = sampleCols( d, pItem, pFeature, weightsItem, weightsFeature ) this_dist = NA if ( ! is.null( main.dist.obj ) ) { boot.cols <- sample_x$subcols this_dist <- as.matrix( main.dist.obj )[ boot.cols, boot.cols ] if ( clusterAlg != "km" ) { ## if this isn't kmeans, then convert to a distance object this_dist <- as.dist( this_dist ) attr( this_dist, "method" ) <- attr( main.dist.obj, "method" ) } } else { ## if main.dist.obj is NULL, then d is a data matrix, and either: ## 1) clusterAlg is 'km' ## 2) pFeatures < 1 or weightsFeatures have been specified, or ## 3) both ## so we can't use a main distance object and for every iteration, we will have to re-calculate either ## 1) the distance matrix (because we're also sampling the features as well), or ## 2) the submat (if using km) if ( clusterAlg != "km" ) { if ( ! distance %in% acceptable.distance & ( class(try(get(distance),silent=T))!="function") ) stop("unsupported distance.") if( ( class(try(get(distance),silent=T))=="function") ){ this_dist <- get(distance)( t( sample_x$submat ) ) }else{ if( distance == "pearson" | distance == "spearman"){ this_dist <- as.dist( 1-cor(sample_x$submat,use=corUse,method=distance) ) }else{ this_dist <- dist( t( sample_x$submat ), method= distance ) } } attr( this_dist, "method" ) <- distance } else { ## if we're not sampling the features, then grab the colslice if ( is.null( pFeature ) || ( ( pFeature == 1 ) && is.null( weightsFeature ) ) ) { this_dist <- d[, sample_x$subcols ] } else { if ( is.na( sample_x$submat ) ) { stop( "error submat is NA" ) } this_dist <- sample_x$submat } } } ## cluster samples for HC. this_cluster=NA if(clusterAlg=="hc"){ this_cluster = hclust( this_dist, method=innerLinkage) } ##mCount is possible number of times that two sample occur in same random sample, independent of k ##mCount stores number of times a sample pair was sampled together. mCount <- connectivityMatrix( rep( 1,length(sample_x[[3]])), mCount, sample_x[[3]] ) ##use samples for each k for (k in 2:maxK){ if(verbose){ message(paste(" k =",k)) } if (i==1){ ml[[k]] = mConsist #initialize } this_assignment=NA if(clusterAlg=="hc"){ ##prune to k for hc this_assignment = cutree(this_cluster,k) }else if(clusterAlg=="km"){ ##this_dist should now be a matrix corresponding to the result from sampleCols this_assignment <- kmeans( t( this_dist ), k, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong") )$cluster }else if ( clusterAlg == "pam" ) { this_assignment <- pam( x=this_dist, k, diss=TRUE, metric=distance, cluster.only=TRUE ) } else{ ##optional cluterArg Hook. this_assignment <- get(clusterAlg)(this_dist, k) } ##add to tally ml[[k]] <- connectivityMatrix( this_assignment, ml[[k]], sample_x[[3]] ) } } ##consensus fraction res = vector(mode="list",maxK) for (k in 2:maxK){ ##fill in other half of matrix for tally and count. tmp = triangle(ml[[k]],mode=3) tmpCount = triangle(mCount,mode=3) res[[k]] = tmp / tmpCount res[[k]][which(tmpCount==0)] = 0 } message("end fraction") return(res) } connectivityMatrix <- function( clusterAssignments, m, sampleKey){ ##input: named vector of cluster assignments, matrix to add connectivities ##output: connectivity matrix names( clusterAssignments ) <- sampleKey cls <- lapply( unique( clusterAssignments ), function(i) as.numeric( names( clusterAssignments[ clusterAssignments %in% i ] ) ) ) #list samples by clusterId for ( i in 1:length( cls ) ) { nelts <- 1:ncol( m ) cl <- as.numeric( nelts %in% cls[[i]] ) ## produces a binary vector updt <- outer( cl, cl ) #product of arrays with * function; with above indicator (1/0) statement updates all cells to indicate the sample pair was observed int the same cluster; m <- m + updt } return(m) } sampleCols <- function( d, pSamp=NULL, pRow=NULL, weightsItem=NULL, weightsFeature=NULL ){ ## returns a list with the sample columns, as well as the sub-matrix & sample features (if necessary) ## if no sampling over the features is performed, the submatrix & sample features are returned as NAs ## to reduce memory overhead space <- ifelse( inherits( d, "dist" ), ncol( as.matrix(d) ), ncol(d) ) sampleN <- floor(space*pSamp) sampCols <- sort( sample(space, sampleN, replace = FALSE, prob = weightsItem) ) this_sample <- sampRows <- NA if ( inherits( d, "matrix" ) ) { if ( (! is.null( pRow ) ) && ( (pRow < 1 ) || (! is.null( weightsFeature ) ) ) ) { ## only sample the rows and generate a sub-matrix if we're sampling over the row/gene/features space = nrow(d) sampleN = floor(space*pRow) sampRows = sort( sample(space, sampleN, replace = FALSE, prob = weightsFeature) ) this_sample <- d[sampRows,sampCols] dimnames(this_sample) <- NULL } else { ## do nothing } } return( list( submat=this_sample, subrows=sampRows, subcols=sampCols ) ) } CDF=function(ml,breaks=100){ #plot CDF distribution plot(c(0),xlim=c(0,1),ylim=c(0,1),col="white",bg="white",xlab="consensus index",ylab="CDF",main="consensus CDF", las=2) k=length(ml) this_colors = rainbow(k-1) areaK = c() for (i in 2:length(ml)){ v=triangle(ml[[i]],mode=1) #empirical CDF distribution. default number of breaks is 100 h = hist(v, plot=FALSE, breaks=seq(0,1,by=1/breaks)) h$counts = cumsum(h$counts)/sum(h$counts) #calculate area under CDF curve, by histogram method. thisArea=0 for (bi in 1:(length(h$breaks)-1)){ thisArea = thisArea + h$counts[bi]*(h$breaks[bi+1]-h$breaks[bi]) #increment by height by width bi = bi + 1 } areaK = c(areaK,thisArea) lines(h$mids,h$counts,col=this_colors[i-1],lwd=2,type='l') } legend(0.8,0.5,legend=paste(rep("",k-1),seq(2,k,by=1),sep=""),fill=this_colors) #plot area under CDF change. deltaK=areaK[1] #initial auc at k=2 for(i in 2:(length(areaK))){ #proportional increase relative to prior K. deltaK = c(deltaK,( areaK[i] - areaK[i-1])/areaK[i-1]) } plot(1+(1:length(deltaK)),y=deltaK,xlab="k",ylab="relative change in area under CDF curve",main="Delta area",type="b") } myPal = function(n=10){ #returns n colors seq = rev(seq(0,255,by=255/(n))) palRGB = cbind(seq,seq,255) rgb(palRGB,maxColorValue=255) } setClusterColors = function(past_ct,ct,colorU,colorList){ #description: sets common color of clusters between different K newColors = c() if(length(colorList)==0){ #k==2 newColors = colorU[ct] colori=2 }else{ newColors = rep(NULL,length(ct)) colori = colorList[[2]] mo=table(past_ct,ct) m=mo/apply(mo,1,sum) for(tci in 1:ncol(m)){ # for each cluster maxC = max(m[,tci]) pci = which(m[,tci] == maxC) if( sum(m[,tci]==maxC)==1 & max(m[pci,])==maxC & sum(m[pci,]==maxC)==1 ) { #if new column maximum is unique, same cell is row maximum and is also unique ##Note: the greatest of the prior clusters' members are the greatest in a current cluster's members. newColors[which(ct==tci)] = unique(colorList[[1]][which(past_ct==pci)]) # one value }else{ #add new color. colori=colori+1 newColors[which(ct==tci)] = colorU[colori] } } } return(list(newColors,colori,unique(newColors) )) } clusterTrackingPlot = function(m){ #description: plots cluster tracking plot #input: m - matrix where rows are k, columns are samples, and values are cluster assignments. plot(NULL,xlim=c(-0.1,1),ylim=c(0,1),axes=FALSE,xlab="samples",ylab="k",main="tracking plot") for(i in 1:nrow(m)){ rect( xleft=seq(0,1-1/ncol(m),by=1/ncol(m)), ybottom=rep(1-i/nrow(m),ncol(m)) , xright=seq(1/ncol(m),1,by=1/ncol(m)), ytop=rep(1-(i-1)/nrow(m),ncol(m)), col=m[i,],border=NA) } #hatch lines to indicate samples xl = seq(0,1-1/ncol(m),by=1/ncol(m)) segments( xl, rep(-0.1,ncol(m)) , xl, rep(0,ncol(m)), col="black") #** alt white and black color? ypos = seq(1,0,by=-1/nrow(m))-1/(2*nrow(m)) text(x=-0.1,y=ypos[-length(ypos)],labels=seq(2,nrow(m)+1,by=1)) } triangle = function(m,mode=1){ #mode=1 for CDF, vector of lower triangle. #mode==3 for full matrix. #mode==2 for calcICL; nonredundant half matrix coun #mode!=1 for summary n=dim(m)[1] nm = matrix(0,ncol=n,nrow=n) fm = m nm[upper.tri(nm)] = m[upper.tri(m)] #only upper half fm = t(nm)+nm diag(fm) = diag(m) nm=fm nm[upper.tri(nm)] = NA diag(nm) = NA vm = m[lower.tri(nm)] if(mode==1){ return(vm) #vector }else if(mode==3){ return(fm) #return full matrix }else if(mode == 2){ return(nm) #returns lower triangle and no diagonal. no double counts. } } rankedBarPlot=function(d,myc,cc,title){ colors = rbind() #each row is a barplot series byRank = cbind() spaceh = 0.1 #space between bars for(i in 1:ncol(d)){ byRank = cbind(byRank,sort(d[,i],na.last=F)) colors = rbind(colors,order(d[,i],na.last=F)) } maxH = max(c(1.5,apply(byRank,2,sum)),na.rm=T) #maximum height of graph #barplot largest to smallest so that smallest is in front. barp = barplot( apply(byRank,2,sum) , col=myc[colors[,1]] ,space=spaceh,ylim=c(0,maxH),main=paste("item-consensus", title),border=NA,las=1 ) for(i in 2:nrow(byRank)){ barplot( apply(matrix(byRank[i:nrow(byRank),],ncol=ncol(byRank)) ,2,sum), space=spaceh,col=myc[colors[,i]],ylim=c(0,maxH), add=T,border=NA,las=1 ) } xr=seq(spaceh,ncol(d)+ncol(d)*spaceh,(ncol(d)+ncol(d)*spaceh)/ncol(d) ) #class labels as asterisks text("*",x=xr+0.5,y=maxH,col=myc[cc],cex=1.4) #rect(xr,1.4,xr+1,1.5,col=myc[cc] ) } ConsensusClusterPlus/vignettes/0000755000175100017510000000000014614331505017772 5ustar00biocbuildbiocbuildConsensusClusterPlus/vignettes/ConsensusClusterPlus.Rnw0000644000175100017510000004274614614231274024667 0ustar00biocbuildbiocbuild% \VignetteIndexEntry{ConsensusClusterPlus Tutorial} % \VignettePackage{ConsensusClusterPlus} \documentclass{article} \usepackage{graphicx} \begin{document} \title{ConsensusClusterPlus (Tutorial)} \author{ Matthew D. Wilkerson} \maketitle \SweaveOpts{keep.source=TRUE} \section{Summary} \texttt{ConsensusClusterPlus} is a tool for unsupervised class discovery. This document provides a tutorial of how to use \texttt{ConsensusClusterPlus}. \section{Brief description of \textit{Consensus Clustering} } \textit{Consensus Clustering} \cite{monti} is a method that provides quantitative evidence for determining the number and membership of possible clusters within a dataset, such as microarray gene expression. This method has gained popularity in cancer genomics, where new molecular subclasses of disease have been discovered \cite{hayes,verhaak}. The \textit{Consensus Clustering} method involves subsampling from a set of items, such as microarrays, and determines clusterings of specified cluster counts (\textit{k}). Then, pairwise \textit{consensus} values, the proportion that two items occupied the same cluster out of the number of times they occurred in the same subsample, are calculated and stored in a symmetrical \textit{consensus matrix} for each \textit{k}. The \textit{consensus matrix} is summarized in several graphical displays that enable a user to decide upon a reasonable cluster number and membership. A web-based version of \textit{Consensus Clustering} is publicly available \cite{gp}. For a formal description, see \cite{monti}. \\ \\ \texttt{ConsensusClusterPlus}\cite{wilkerson} implements the \textit{Consensus Clustering} method in \textit{R} and extends it with new features and graphical outputs that can aid users in class discovery. \section{Tutorial} There are three main steps to use \texttt{ConsensusClusterPlus}: preparing input data, running the program, and generating cluster-consensus and item-consensus. \subsection{Preparing input data} The first step is to gather some data for cluster analysis. These data could be the result of an experiment such as a mRNA expression microarray or immunohistochemical staining intensities. The input data format is a matrix where columns are samples (items), rows are features and cells are numerical values. For this tutorial, we use the ALL gene expression data from the ALL library. You can see the matrix d is already in the proper format. The column and row names, which correspond to the sample and gene names, will be maintained in the output. <<>>= library(ALL) data(ALL) d=exprs(ALL) d[1:5,1:5] @ For the purpose of selecting the most informative genes for class detection, we reduce the dataset to the top 5,000 most variable genes, measured by median absolute deviation. The choice of 5,000 genes and MAD can be substituted with other statistical variability filters. Users can decide what type of filtering to use or to skip filtering. Another choice would be to supply weights for sampling genes see weightsFeatures in Additional Options. <<>>= mads=apply(d,1,mad) d=d[rev(order(mads))[1:5000],] @ If one wants to transform or normalize their data, they can easily do so using other Bioconductor methods or a simple statement. We chose to use the default settings of the agglomerative hierarchical clustering algorithm using Pearson correlation distance, so it is appropriate to gene median center d using this simple statement: <<>>= d = sweep(d,1, apply(d,1,median,na.rm=T)) @ d is now ready for \texttt{ConsensusClusterPlus} analysis. \subsection{Running \texttt{ConsensusClusterPlus}} For this tutorial, we selected 80\% item resampling (pItem), 80\% gene resampling (pFeature), a maximum evalulated k of 6 so that cluster counts of 2,3,4,5,6 are evaluated (maxK), 50 resamplings (reps), agglomerative hierarchical clustering algorithm (clusterAlg) upon 1- Pearson correlation distances (distance), gave our output a title (title), and opted to have graphical results written to png files. We also used a specific random seed so that this example is repeatable (seed). \\ \\ ** Note: In practice, a much higher reps is recommended such as 1,000 and a higher cluster count such as 20. <>= library(ConsensusClusterPlus) title=tempdir() results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1, title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="png") @ <>= cat(sprintf("\\graphicspath{{%s}}", paste(gsub("[\\]","/",title),"/",sep=""))) cat("\n") @ The output of \texttt{ConsensusClusterPlus} is a list, in which the element of the list corresponds to results from the \textit{kth} cluster, for instance, results[[2]] is the results result of \textit{k}=2. The seed option specifies a random number seed and is used here for reproducibility of this tutorial. These list elements have the following elements: <>= #consensusMatrix - the consensus matrix. #For .example, the top five rows and columns of results for k=2: results[[2]][["consensusMatrix"]][1:5,1:5] #consensusTree - hclust object results[[2]][["consensusTree"]] #consensusClass - the sample classifications results[[2]][["consensusClass"]][1:5] #ml - consensus matrix result #clrs - colors for cluster @ See additional options section for further description of clustering algorithms and distance metrics. \subsection{Generating cluster and item consensus} After executing \texttt{ConsensusClusterPlus}, one can optionally calculate cluster-consensus and item-consensus results by: <<>>= icl = calcICL(results,title=title,plot="png") @ calcICL returns a list of two elements: <<>>= icl[["clusterConsensus"]] @ <<>>= icl[["itemConsensus"]][1:5,] @ \section{Graphic Output Description} The output of \texttt{ConsensusClusterPlus} consists of graphics, which are written to the screen, 'pdf' file, or 'png' files depending on the plot option; and numerical data which can be optionally written to a CSV file depending on the writeTable option. For large datasets, graphical displays can be quite large and plotting the consensus dendrogram above the consensus matrices may not be possible. If your dataset is large, the plot option 'pngBMP' which does not produce the consensus matrix dendrogram and uses the bitmap function rather png. Bitmap is often available natively on linux systems but can potentially be installed on other systems. \subsection{Consensus Matrices} The first graphic shows the consensus color legend. \\ <>= cat("\\includegraphics[width=60mm]{consensus001.png}",sep="") @ \\ The remaining graphics are heatmaps of the consensus matrices for \textit{k} = 2, 3, 4, 5 \cite{monti}. The consensus matrices have items as both rows and columns, which are microarrays in this example, and where consensus values range from 0 (never clustered together) to 1 (always clustered together) marked by white to dark blue. The consensus matrices are ordered by the consensus clustering which is depicted as a dendrogram atop the heatmap. To aid analysis, the cluster memberships are marked by colored rectangles between the dendrogram and heatmap according to a legend within the graphic. This enables a user to compare a clusters' member count in the context of their consensus. \\ <>= cat("\\includegraphics[width=60mm]{consensus002.png}",sep="") cat("\\includegraphics[width=60mm]{consensus003.png}",sep="") @ \\ <>= cat("\\includegraphics[width=60mm]{consensus004.png}",sep="") cat("\\includegraphics[width=60mm]{consensus005.png}",sep="") @ \\ \subsection{Consensus Cumulative Distribution Function (CDF) Plot} This graphic shows the cumulative distribution functions \cite{monti} of the consensus matrix for each \textit{k} (indicated by colors), estimated by a histogram of 100 bins. This figure allows a user to determine at what number of clusters, \textit{k}, the CDF reaches an approximate maximum, thus consensus and cluster confidence is at a maximum at this \textit{k}. See \cite{monti} for further details intepretation. \\ <>= cat("\\includegraphics[width=60mm]{consensus007.png}",sep="") @ \\ \subsection{Delta Area Plot} This graphic shows the relative change in area under the CDF curve \cite{monti} comparing \textit{k} and \textit{k} $-$ 1. For \textit{k} = 2, there is no \textit{k} -1, so the total area under the curve rather than the relative increase is plotted. This plot allows a user to determine the relative increase in consensus and determine \textit{k} at which there is no appreciable increase. See \cite{monti} for intepretation. \\ <>= cat("\\includegraphics[width=60mm]{consensus008.png}",sep="") @ \\ \subsection{Tracking Plot} This graphic shows the cluster assignment of items (columns) for each \textit{k} (rows) by color. The colors correspond to the colors of the consensus matrix class asssignments. Hatch marks below the plot indicate items/samples. This plot provides a view of item cluster membership across different \textit{k} and enables a user to track the history of clusters relative to earlier clusters. Items that change clusters often (changing colors within a column) are indicative of unstable membership. Clusters with an abundance of unstable members suggest an unstable cluster. \\ <>= cat("\\includegraphics[width=60mm]{consensus009.png}",sep="") @ \\ \subsection{Cluster-Consensus Plot} This graphic shows the \textit{cluster-consensus} value of clusters at each \textit{k}. This is the mean of all pairwise consensus values between a cluster's members. Cluster is indicated by color following the same color scheme as the cluster matrices and tracking plots. The bars are grouped by \textit{k} which is marked on the horizontal axis. High values indicate a cluster has high stability and low values indicate a cluster has low stability. This plot enables a user to view the mean cluster-consensus among clusters at a given \textit{k} and compare values of clusters across different \textit{k} via the color scheme. \\ <>= cat("\\includegraphics[width=60mm]{icl003.png}",sep="") @ \\ \subsection{Item-Consensus Plot} \textit{Item-consensus} values are the mean consensus of an item with all items in a particular cluster. An item has \textit{k} item-consensus values corresponding to each cluster at a particular \textit{k}. These values are depicted in barplots for each \textit{k}. Samples are stacked bars. \textit{Item-consensus} values are indicated by the heights of the colored portion of the bars, whose color corresponds to the common color scheme. Bars' rectangles are ordered by increasing value from bottom to top. The asterisks at the top indicate the consensus cluster for each item. \\ <>= cat("\\includegraphics[width=60mm]{icl001.png}",sep="") @ \\ This plot provides a view of item-consensus across all other clusters at a given \textit{k}. This enables a user to see if a sample is a very "pure" member of a cluster or if it shares high consensus to multiple clusters (large rectangles in a column of multiple colors), suggesting that it is an unstable or "unpure" member. These values could be used to select "core" samples similar to \cite{verhaak} that are highly representative of a cluster. Further, this plot can aid cluster number decisions. For instance, if a cluster consists mainly of members with very "unpure" items, then this evidence could be used to support a maximum cluster number at 1 below this \textit{k} or this evidence could support that this cluster is an outlier cluster. Decisions such as these are best to be made by the user in conjunction with other evidence such as consensus matrices, tracking plots, etc. \\ \\ \subsection{Additional details on options for \texttt{ConsensusClusterPlus} function} \begin{itemize} \item \textbf{d} This option specifies the data to be used in ConsensusClusterPlus. This is typically a matrix of numerical expression values, of which an example is provided in the Running ConsensusClusterPlus section of this document. When provided with a data matrix as d, ConsensusClusterPlus recalculates a distance matrix during each iteration. This recalculation is required if feature resampling is specified (pFeature less than 1). However with very large datasets (1,000's of items) and no feature resampling, this process can be time consuming and unnecessary. Alternatively, a pre-computed distance matrix can be provided as d, resulting in faster computation. An example of using a dist object as input follow below. <<>>= #example of providing a custom distance matrix as input: #dt = as.dist(1-cor(d,method="pearson")) #ConsensusClusterPlus(dt,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example2",distance="pearson",clusterAlg="hc") @ \item \textbf{distance}This option describes the distance metric to be used. A character value of one of the following metrics is accepted: pearson for (1 - Pearson correlation), spearman for (1 - Spearman correlation), euclidean, binary, maximum, canberra, minkowski. Alternatively a custom distance function cab be supplied for this argument, which accepts a numerical matrix (items as rows and features as columns) as input and returns a dist object. <<>>= #example of providing a custom distance function: #myDistFunc = function(x){ dist(x,method="manhattan")} #ConsensusClusterPlus(d,maxK=4,reps=100,pItem=0.8,pFeature=1,title="example3",distance="myDistFunc",clusterAlg="pam") @ \item \textbf{clusterAlg} This option specifies the type of clustering algorithm to use: "hc" for hierarchical clustering, "pam" for partioning around medoids, "km" for kmeans. Alternatively, one can supply their own clustering function, which should accept a distance matrix and a cluster number as its arguments and returns vector of cluster assignments having the same order as the distance matrix columns. For example, this simple function executes divisive clustering using the diana function from the cluster package and returns the expected object. The last line shows an example of how this could be used. <<>>= #library(cluster) #dianaHook = function(this_dist,k){ #tmp = diana(this_dist,diss=TRUE) #assignment = cutree(tmp,k) #return(assignment) #} #ConsensusClusterPlus(d,clusterAlg="dianaHook",distance="pearson",...) @ \item \textbf{update on kmeans options} "km" option performs kmeans clustering directly on a data matrix, with items and features resampled. \item \textbf{innerLinkage} This option specifies the linkage method to use in iterative agglomerative hierarchical clustering. Not applicable to other cluster algorithms. \item \textbf{finalLinkage} This option specifies the linkage method to use in the final agglomerative hierarchical clustering. \item \textbf{distance} This option specifies the distance metric to use: "pearson" for 1-Pearson correlation coefficient, "spearman" for 1-Spearman correlation coefficient, "euclidean" for Euclidean distance. \item \textbf{tmyPal} character vector of ordered colors to use for consensus matrix. If not specified, a series of white to blue colors is used. \item \textbf{writeTable} boolean. If TRUE, write consensus matrices, ICL, and log to file. \item \textbf{weightsFeature} numerical vector of weights for sampling features. See help for further details. \item \textbf{weightsItem} numerical vector of weights for sampling items. See help for further details. \item \textbf{verbose} boolean. If TRUE, print messages to the screen to indicate progress. This is useful for large datasets. \end{itemize} \begin{thebibliography}{} \bibitem{monti}Monti, S., Tamayo, P., Mesirov, J., Golub, T. (2003) Consensus Clustering: A Resampling-Based Method for Class Discovery and Visualization of Gene Expression Microarray Data. Machine Learning, 52, 91$-$118. \bibitem{wilkerson}Wilkerson, M.D., Hayes, D.N. (2010). ConsensusClusterPlus: a class discovery tool with confidence assessments and item tracking. Bioinformatics, 2010 Jun 15;26(12):1572$-$3. \bibitem{hayes}Hayes, D.N, Monti, S., Parmigiani, G. et al. (2006) Gene Expression Profiling Reveals Reproducible Human Lung Adenocarcinoma Subtypes in Multiple Independent Patient Cohorts. Journal of Clinical Oncology, 24 (31) 5079$-$5090. \bibitem{verhaak}Verhaak, R., Hoadley, K., et al. (2010) Integrated genomic analysis identifies clinically relevant subtypes of glioblastoma characterized by abnormalities in PDGFRA, IDH1, EGFR and NF1. Cancer Cell. 17,1-13. \bibitem{gp}\texttt{http://www.broadinstitute.org/cancer/software/genepattern/} \end{thebibliography} \subsection{Changes} \begin{itemize} \item Version 1.0.1. Item-consensus calculation was corrected. Consensus matrix heat maps are now guaranteed to correspond to the scale. \item Version 1.5.1. Version 1.0.1 changes were re-incorporated into Bioc 2.9, 2.8. Version 1.0.1 was part of Bioc 2.6, but not part of Bioc 2.7. \item Version 1.11.1. For large datasets, the input data (d) was modified to also accept a distance matrix which reduces computation time, and plotBMP was added a plot type so that large consensus matrices can be plotted. Internal data structures were modified to increase speed. Distance metric options expanded ("maximum", "manhattan", "canberra", "binary","minkowski" from dist) and custom distance function option added. Partitioning Around Mediods clustering (from cluster package) was added as a clustering algorithm. Kmeans invocation was changed to run on the data matrix by default. Kmeans invocation on a distance matrix is now possible by kmdist. \item Version Version 1.35.0 Added CITATION file, updated references, and man pages. \item Version 1.51.1 Breif R code update for compatibilty with R 4.0. Deprecated kmdist clustering option. \end{itemize} \end{document}