xtable/0000755000176200001440000000000013457057763011552 5ustar liggesusersxtable/inst/0000755000176200001440000000000013457046162012516 5ustar liggesusersxtable/inst/doc/0000755000176200001440000000000013457046162013263 5ustar liggesusersxtable/inst/doc/margintable.R0000644000176200001440000000074713457046154015704 0ustar liggesusers## ----include=FALSE------------------------------------------------------- library(knitr) ## ------------------------------------------------------------------------ library(xtable) x <- matrix(rnorm(6), ncol = 2) x.small <- xtable(x, label = 'tabsmall', caption = 'A margin table') ## ----results='asis'------------------------------------------------------ print(x.small,floating.environment='margintable', latex.environments = "", table.placement = NULL) xtable/inst/doc/margintable.pdf0000644000176200001440000014465713457046156016267 0ustar liggesusers%PDF-1.5 % 1 0 obj << /S /GoTo /D (section*.1) >> endobj 4 0 obj (\376\377\000T\000h\000e\000\040\000E\000x\000a\000m\000p\000l\000e) endobj 5 0 obj << /S /GoTo /D [6 0 R /Fit] >> endobj 8 0 obj << /Length 1972 /Filter /FlateDecode >> stream xZmF>ai/tRrʞ&vxǣ(=o0cOsI`)=~/F[Gᅜ"y{'9\_K%v6' -WitHpi2ZwCQ _{s 3&!ʬɋ ha>$]!*x<ޜHā{#oYlӾv:f1_qYoBCg"@<l& BIx`,b̎ߔMPH ~91"daLef3F V H&q/BrbE&>wN~VA=(2 Bi@5FákS˜W_%KB.ڜ6/_x0!xmddc?/mZVGj q91ܩXV36[ -zV\ZY6Y@°3YVln-z:/Z6;0䩝>o7{,b-L;^RFIڇ]=!6MwXm*ճدyG7s7m^L}=#;oNb`=W0 F NS.\U`|RTl,l0*,kaBQBX {jUUR?U8"ꄻY5T'j am.wiUUcRdsC1f8i}[km 죹(jHfSL}i?L89CK^62TN2'(/%ԫt63 Ġ/6a#SHzYw%9MVw 7 yJ]yD2\ta +-ޤ@QNUMFS$`^e:JzܻjE7?ݨD0! a&/ިqFWB 뤷EƜ5$C؎轞rI i Y :.\QL1Dl-vG0}4f{RQ57ĈGaΗrk벪/g,ԺK xPG/xr{L"fheZWt=ף@O@Mk_$qCf'aW]b%0hWϩ"YaRBq-phQ_W脼2G19.A*Wh"+(;Ofr#DE>iF_ `#og_i+Xٙ篊*ia?zѫ祎N91Scó0cvυ_qٗB%*+c8vڳ;7qGv_ 1zIq1}NLU{{퍮)w%ꠒJ<*ќ6ړG MÄ1 AU|p|)]? F_ٮϺvT<:پƓx'ẙ)+(Ϡľ(_)~<5}_Wx4 endstream endobj 6 0 obj << /Type /Page /Contents 8 0 R /Resources 7 0 R /MediaBox [0 0 612 792] /Parent 16 0 R >> endobj 9 0 obj << /D [6 0 R /XYZ 71 762.843 null] >> endobj 11 0 obj << /D [6 0 R /XYZ 72 720 null] >> endobj 2 0 obj << /D [6 0 R /XYZ 72 720 null] >> endobj 7 0 obj << /Font << /F41 10 0 R /F45 12 0 R /F42 13 0 R /F51 14 0 R /F52 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 18 0 obj [602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602] endobj 19 0 obj [602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602 602] endobj 20 0 obj [605 608 167 380 611 291 313 333 0 333 606 0 667 500 333 287 0 0 0 0 0 0 0 0 0 0 0 0 333 208 250 278 371 500 500 840 778 278 333 333 389 606 250 333 250 606 500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 500 553 444 611 479 333 556 582 291 234 556 291 883 582 546 601 560 395 424 326 603 565 834 516 556 500 333 606 333 606 0 0 0 278 500 500 1000 500 500 333 1144 525 331 998 0 0 0 0 0 0 500 500 606 500 1000 333 979 424 331 827 0 0 667 0 278 500 500 500 500 606 500 333 747 333 500 606 333 747 333 400 606 300 300 333 603 628 250 333 300 333 500 750 750 750 444 778 778 778 778 778 778 944 709 611 611 611 611 337 337 337 337 774 831 786 786 786 786 786 606 833 778 778 778 778 667 604 556 500 500 500 500 500 500 758 444 479 479 479 479 287 287 287 287 546 582 546 546 546 546 546] endobj 21 0 obj [611 556 722 778 333 333 667 556 944 778 778 611 778 667 556 611 778 722 944 722 667 667 333 606 333 606 500 278 444 463 407 500 389 278 500 500 278 278 444 278 778 556 444 500 463 389 389 333 556 500 722 500] endobj 22 0 obj [500 500 500 500 500 500 500 500 500 500 250 250 606 606 606 444 747 778 611 709 774 611 556 763 832 337 333 726 611 946 831 786 604 786 668 525 613 778 722 1000 667 667 667 333 606 333 606 500 278 611 500 556 611 500 444 556 667 333 333 556 500 778 667 611 500 611 556 444 500 611 556 778 500] endobj 23 0 obj << /Length1 1850 /Length2 6767 /Length3 0 /Length 7765 /Filter /FlateDecode >> stream xڝtu\k׵"%H7C *H33t4(%% )H "ݍ}y?澯Z{4aQ@Ѽ|]&!Tyudׇ@|VV9=qB"`6pr$]WvxqDp?e! }](@,BAA a ! ( D@d蠝,G|VYfeDP\\`@Yl8Cțk|o\h=HFJߐބPP>8ynp,/(p}K`p|(]7$ CЎ0W |2\0nW:WV{&O%#pń@A#_Jp( q?0 9GRGpb]{Oo?mow`t__ߚ_#Vp~{T:Yu=? ;pܮrr=3S7Ya3]_DneP 0WX@Avw}C`p,~GLfi MGKy%|#_kMZ߶iC Kq#2izޥ0aCP\0SdJGFXPR[o)&vE;>܆H__'DK&ҩ.ӜGrpXu(n;~NF:phJ2Je-?}B M%r3U HWdNXL"H2m 1.Ni? ;u%:1*͛ ^&<+8t_v};di } 4B _P RvSwf 8`I=:,Ų`Q"R'cid?n˦akB#]> [Z"HcD{-٧6s4t[͹iKO}OO/}%ΰ>W}?Tu."jQS>23ԧ]}(s*{bN++3W6#x3.gϋ5e[*J-\}j.fE8x";pNuFW1"sZZ=shu"Q2x/m\%`T4kJ VN{+ wKp ܞr7ّ͆Ʋz͜qMۼ'Rg+У\f ! Of_%2څ| ZcЋ.g'Cf-7I~Ό Rvu ^Y~}ARAߤTBb}gLsZJd+]tBr !6NHbe[}5L'Ͷ$w;ɾdd]̪K-uzaG aMk̎y2"Ӱ-Tt"Qj mX!dhz=]UGۘay&h=|Y*Rfq9}[s"2ж Қv1{FF*i&>_*3q*sQΫge~ #)a#o=֕8ȷ ~H|s5bZd(w*ו-.z=]_Wv]vڭ\YLWM "N;auLdhݤ WupYz(v+3- Z#֟`)f#7"$42@rf.ĕ~'Z&UO6p~r<kasbح{K4pq00#ւj]cŋb{[G69<| FO$mz^SdoK~m13^)ֵF^2piKģc.p}9v[gKiZq.+/¸i}E״%I*D^vҋKmp g" z!iD^ز@4Ku=3e*:Otnnو=;vh|qpbVS(SC5߇^rzx Yw{N^RO͢NIg BM[Tc+#^t7 z? ГLwE瞔#@!H;H Զh"+ )|Pvv!'ZÏ.α"n8h;Af [9!EJ{hYt"LlpTv{^6yin?&>ʘV.n*ܯ{Wb1%NG'Y,06!imRUMm@v7$T N, Cfp[x[L=$6xƍXl|_rAEԧ6pVaJNO".05vyd%F gR6I\n|RXтH<2)ڛ2#t79ALT&]G,T/}Dj^=$S5,R]ʯHMޢ>xM>a+T,`]܊,''x+?Q@{Z {̤Dҳ'R+Nxt F^H<.\۫KwﮱP+Kpo1RˡZ~+Qa}T~M_su\%u@3]ʫ kuj.L1GLeǯ1s% &'~],ZvGI]9K8P1ێsma뙻62VgӽNN|5|fٹr-?U\qiݺNh#M'^?M~1lOȏv[>$ٚOY!i]^8~۲f'௲b܏XT+#.)弿-ONʐ̞][ ۯ9!YH:j|v{:OYWwfܰSwNhUsz5Y3?6>xaj^YC|ܳL48>orc i ΰ,^`#vLNOx8o5[}z0!D9EzC1{Nr { I.NB'M7Ik nouM-Fa~- =@Css=#Nԛ嫋D51ˑE @zc(>֡uZqIYZ@"] Re#/ב ~Pꯥ ȟc12M"+w'ƽυ̟z#y뵇o|>u.>=CL[!*2瑩g 5 \w"!6wW.]ѹ#oF9xJ@W-Whs7:ArxGRb@G3Ȧg3/:Q/5~ƫ$w q8f?{ݵ 'KQg(ϭ<2kNքj8-aߘU+^?PJ>36mؽl~.y}(߆7̌3"9T,Y%BϺI -u,:f/M/>E0iy"&Saȧ:`Kbv$9B[i`3JRI2r}ߏ>xjX >h΢>E*3ӑV%-\peIo#~5I0*ea$4D :TİPSX,>ñiM=5R.$O3!͍Knf7}@&oDG.|:%~W> (W(%Ⱦ/ }&z@2SX;uJݐrEΪI{i^c.GӐ+f"Qmh^PEtx{:ݑHNܘܞjlE_G͞g/Ơ8V v+\??37ƵF/Tݥ鷭˪h(8be>Md!?{#JU~mK%AJaYXayV.7Z1;Qk>V#"cHx\`]!g 9y@qn%)ZTNQIS+pJo|NG%qH0lf} ]wPM0Lvx1WkL*O@1#\8o>O_¦*5kp RXɀIP>\I}+YY<w鎉\]JoI tfaYw{./0tR2b&w3=pvVA^rwuʠ3/7X2 k̡ 'EG Hc]C$/+|vp:PHJ)ݱi| %)>5}U_d^`"歹s2w kg6RL_gcY[tԕ)4L0P2 >P>~0ItHNZaP;V*nݭBva,f].7Q bjmf«jVי@&rSt}t{ (8$;:u7[Ç&u1EЇ(3rj^:S1_zlf:V#6?=pHQpЙw3 x)zR4z8\s!8EcB('m#s/'։)EK[S+YR#'\+}@POCx]dD퀕ζ-|гX g>ze8Պ|I_EW{KG\0pځ0wÆ;&Eo(q~}̮GYƭ(9혯LҠk90㕴G&gsw;Xӯ0>6jj-c jZ* 3.DBA00ȵ}&91c[P PLc>|Hy烕YGY:$z#ʺz vV0t?yALFM `vĹnobTGێ>qwGm0=IQho3؋KCNND';YQ)lw3Ɵf%oJEL&, 9NT|WD vQ;kAjKN^aV*5$N\,̭x/#_KpE8:R$B ,DtKy^|ތ& a7U+Wkmsyf~q2mB9FÁqx.?VQ󲋵:/0%r )+O_t0ՉasV?!!lq3O}mq.[e0]x@Z-9d"ź"[YIyiPSiUR $rƖR<ǫS՜!2Ën/̮}yr㖘]+'A&Wpx0>1W1@ X/*:'D MFWLY *;ܜؚp3qTvf{a6Zx). endstream endobj 24 0 obj << /Type /FontDescriptor /FontName /FRMHDR+TeXPalladioL-SC /Flags 4 /FontBBox [-166 -274 1021 943] /Ascent 487 /CapHeight 682 /Descent -6 /ItalicAngle 0 /StemV 84 /XHeight 493 /CharSet (/a/b/e/five/g/i/l/m/n/nine/one/p/r/seven/t/three/two/x/zero) /FontFile 23 0 R >> endobj 25 0 obj << /Length1 926 /Length2 2321 /Length3 0 /Length 2919 /Filter /FlateDecode >> stream xmy:ad*sCDa TԱ$)m@$eԉB ЩS$,#4d,0s." L*a3J 9CZx#](P 084@a]px)Lg~1>bINK"`w} X@|0ص Zs/?2@pq%6hWL(0X;5"zvCdx{7gX+>?n0Ӕth"Gp` DBIBR"~!Dh7sE[AJ')`󟤬D$( {~b= =~! {+`=x >ғS W~!qAI&(-/!ߟ=11uu"@QaJW}H$,}qb)X4h }6-%-\Ɨ٭i"'Mm7+#kۮ_1~beqx7u"Wբf}3ӉWf5 R] i %}[:=w5d-X Y72Wiۛ~=7LX)}/^[r5#)ZVJGˋ$_>;E퉘, 3 *\t𖡬³ 8>I*jܯĽV=_OgYF*#Gk0I!M1*/F]!܈. /v@^qxQ̝b̧sFL%&b`bޚ:E"KL g|.չk,F;~u}`%,Sf5;NU_MfPJ@$^Vt4g1wP_KCYV3j9jbJ254nOOd I(tGRL.ս }Yf~䘅 $8,ElZc;uڒU32MᵛNQVEJߘ}$p<5Ivv>-t؀}ݫ*s˯әBsKt3mz82=?q=w]nO1 YDsSCd3t*s 11Q x'=:ΧÙzyx%52b t ߔWIq1 -BNh.٭X+7).(H1OV8#Qu~$/Z2j) &jZFHH~4ĦW'Σ?C Í\8%0_ށ8}r]*b_c/ĊRƂQ9.[vRz&cA_ H Ν?_O'S#Nsd|yX;8}ŭM:Gz̤]QRt4qK\rn5n 2VBMrkAꛋNKj9]RtqZ<̬:!E$!|TKܺrL1}/cmO;bmϰ=\zOP^Q;SYa70MXrΥΈ{wkuu ?]aV=zd0뉸~Msz j˜'wޣYցwROepj̫\BJFmx(L߃!Z&}.3Ey{)^!x`buL &/eN͚)[k4`u\˓2nr˩Sb:XC[3&oޖY1jE ޮ;a+i1w\ػu1Ћ9!VO<*1ygJTdYߚ 8Z%s ^7sz}Cǒr<#Y^4ݑ:]'ȯbv}i-)~a [;澠h6Tp5^a@z%(g\tSjyYhrf#1 sI_`[xθne-^7Ƴ E aa0# xl^ 4[ŭĪ?M:z\]SϘhU gjte{`Lڬڄ zDzJGWZɬ&T7ޢ Aa4cL?qBɘT`駉'!zl} \Sx9~-<JGMg< Kk. \m)"h {ӭ'i*jo$q3 g,|")H1]wo^V蟽#x<[E=+?Ż.mk*d sZ:32|`i+^1iHA[5?.YFFx9x ;_%?őah20o5QDEg&A=^T쳏 < endstream endobj 26 0 obj << /Type /FontDescriptor /FontName /EGINKD+BeraSansMono-Bold /Flags 4 /FontBBox [-19 -236 606 928] /Ascent 747 /CapHeight 747 /Descent -197 /ItalicAngle 0 /StemV 201 /XHeight 547 /CharSet (/L/N/U/a/b/e/i/l/m/n/o/p/r/t/x/y) /FontFile 25 0 R >> endobj 27 0 obj << /Length1 1489 /Length2 4474 /Length3 0 /Length 5356 /Filter /FlateDecode >> stream xڍTy F "1H4@t=2Aӑt:8$hzT0X3sLAP oGR]G(N }ADÈ+=)npAA8n BG:e@8GDFe!I zD#sIbxG$6ؼQ۟u>ܨ0SC u8% %~("E%)S$.#%$DЍc7+vvYT@๟-#'47jW8&mOo7W T?Wz?[gp`)m^(&Wvyg-ӗo;ݔhaiLY;:`cf /Kx{ӷ%nLYTk '@T"TTvK]N-;ko>kL<^%eK 0\f{:f o[ ...TUaunS e3PPIZ[lyHyRMq\Sb﯇M _bUSs7NV̶>F76%_2Mnm1X9M,CIu5 ¯ќzϜk`JZ$>ZզJJf p țR5k MY11\XoQLguo./$L8lBluWiƌJ{۝|"N H{G1q:+ཐݕ|?8(q D$@4L&w%e/]F |a >z6֟y cmɱVT tMǟ_wY!kpwn (^y(i>ՐiIc15Xa1a=炊b);C9d@+W<ܕS#ۯd^NfvWJ΅wh|YM5 I-eUχZc cT71ZNl\} C d~޽ʼnN2<.|A{ɡ37"Vpnk zȒe]"/|5;Wn#D)R:8;pFɹֻw5N ^{u{87ᔨ^,D,8:L׾ )F_Y1+" -vkHüӗwo% -lĐI}TMG~nu=|az 0tH~N , )gGOŚ?rFHsO N7a޳9sɔv vXdzḿo|R_b轳;kGT?X}m^8Z{F1VGVxOPl?$3d_o.5l _a8߉WlLZN^/,{ c7xN5-ߛUvѥU=~$E꜅ v :`HdJ@8v?cadh5c\)}@J8.hGkOǬu1l`}d+$S]ҞrA2z*5āCdO6I+bq mOڛhYډݲaf8LPr3pqA=ZUI~0_$yN$ȫ "(,1_ }-b]^W]T*#MX`{bXS~K?u9҇,ޢ!\G2gh㢍REv`&~[݁+xGkkâ=Qd]!^ T$b+wcφN6N zԨ , B?L/0tdqi^}ȝ28 bc(ŎR@:w p_rٻi9uqgrRXLPߤ ] W.]\o.WGҖ=59V;'4C3S:xYMoaO* y;%$2NxHv]C7/Q#FVz$] 3m *Z그ys(-$Vާ\5c^ө,ݕA&uwL_?ٰ+|+W؋y)V8l=i>$8yw|Q~p'r>PP5SN(wo&OHWc1)kYem ^҈fWZnM,mN쯐X;3 ƚ.>Q6`u/P}Bjk:Ld6=xdX9AOEr䬳i2SdjFǑ?')|BXI($*츼'| f6n~{2?ZA ^3nOCdƨBG2UovqX .Z3Kɖ4v#nX w/eœbΡCQpحdfͷLa;~ we *oD2\GV' M7D7UZ>Ю'ʼetWlEfq>ffz|? ZnK\M3Qߴ$RM2OSƓ_tELa2vq\tƝy {J/\Q^11Bw F3- [mf2Nν^lJm)&<&/MPO"(OfN*s3_ hlيzfrJ^8k+71űFe]%=9Fƹ={6Cbtnv5xa_)Zk'kڒ}Uc C"3(tNYBAwyNgp \~RvQ8{_do8y3P49Ģ6;Os<^8OCFq;*6\յW}'A2&1wO>j<b I]-:A"ﻎ](cvjR$o+Kf#؞+@} ['ϓ$+{v"&y[L-C0g }d5P'ǁVM;cOWb&;\벸i"_ho|ڙI> 9pSd4rsagEgߛTBwO*GԠǻ(j>T+K jw4cSNz!cnjCZQBhw:Om*vx'vJ:uM Nw.D zG-NF"yy"ȧTȉeKk tmdA.S-Ju9 6ZCː^b]+8eISW\zû|' -w[2q(${p5 mxeF5TZYוR.}|vl-BOV6W~Vdɘr"NyCpQ[++,2Ws\ӄk!ײ)5}MǔH֩՜w(Ԥq" 3AeP۷V}νe=tAԭ碧oCzz ST#!Gw/JOn/kZ[6r!yk/7>qR!xe:W>3 w ?]iAawz ]ƴoφܳqh\VsE;/⮉RzHPU<_5 ߶w 2Y FEiu endstream endobj 28 0 obj << /Type /FontDescriptor /FontName /ZKQLUU+BeraSansMono-Roman /Flags 4 /FontBBox [-5 -236 606 928] /Ascent 771 /CapHeight 729 /Descent -222 /ItalicAngle 0 /StemV 201 /XHeight 547 /CharSet (/A/L/N/U/a/at/b/backslash/braceleft/braceright/bracketleft/bracketright/c/comma/d/e/equal/f/g/greater/h/hyphen/i/l/less/m/n/o/p/parenleft/parenright/period/quotedbl/quotesingle/r/s/six/t/two/u/v/x) /FontFile 27 0 R >> endobj 29 0 obj << /Length1 1616 /Length2 16358 /Length3 0 /Length 17190 /Filter /FlateDecode >> stream xڬUPe[%q(ܝ w;N.EΫsn߾_53s#+62P֙`hmmhba'Kdgckfq:[ي:y@(`憣{8Z;bzt0P}pZmB_oT@5 CASJ^@-!   .FY c`jҜb 9 N@cۀ@\t{go.&k7` vNNƎ΀YD?,v#M])__^gC ['3\F@-dak_ @3CGk_t/[{ߨ hm7fp?&.s: f/ C;[k QoJ D Or-bm-ohw?,K6?Hu?H9m_9h$n4Qp66ZӿvU[-@|*V4?\@[D2gSRSja(E.Asx3spYX9f7!@3tvph-V FiQv65;`EQ݁p+vƼ?ks'D{CKT WosWׄ04N|y,K;ŲI^Bݠ=d+Ayu5/v3WE8sDO8>2jpldxo6'7$Օ=(SeL=ٖ)voMeZNV%Ly>*<ٿ=`lNF͇5c+T5 P|U{%,y= ^3}8{W'f::d a',4#\7KMB{#!bRE -^qr,X7~ b٘F Kt"i9~."IqJFЛKU`>o¦Ռ"cYYAYƊ5!ZjtBtt-Ʀ)l aV@iV^OldNM(d)E o'/Zjn Nrd\ĸ+qT q\avx=,£"DSXڸe}":yqFp Ҁ +h-b2|Dm/.HoBVI@YD=(xS xLd/45?wEms!4_<1I WԳzm1B/B" n?pP>)T/тbҿ8F<[bs *U#[7Tw s頑ؐOyh>nu(cA3 2_DP+gݿy\fv| YjSX$>6+QbA Qe*gGY!?uXn}ɦM55(߆/MCWbt.UK c Q?c<7} b ҉MBIM#LYJ۟S;7zL"␘Wny_9Tn$4ipFhbPeCAۖԣԅ[=t-G{*,ɴgC jy" &\'+ΓOjވPٛJ~b IǾSxceє"Kʎ%j֖#^ҹ@xg8~MB (Q,yLC&q^H: Skd>̝vx,Nܫ4SR qbHɽ:/GZR~`,UXCq oHпV'{ OJpyHcz80ѯLkv. y~&5fL$63<=} lۜK#Q/vٜ7Jz5l̉7m,#cb]"7k`::;/N;l1x^t_ĹyAX|%?eקJO}S.Z1.E &)zjХ3{sc QPഓ`'W۸ZX;C6Cp >-iPFEd 3- o9;Wѓ^)QA*Fzya#C4,e_5EBU"JgX  \*~Ed P3. rMFTTywQ߇kD# ĬbͧH*dN D2{s >]9meO(;&ff co]|sf5 CʰCL\nm,?^1]\8:#R[R"VTبUa(r*쓰B ^AU jԞ  O{m`d]YLI( L?{{!;wtxR5eL_|33MWWZzQeІ)Dp9 Er*OuCy9.{}+fd ĪNȐ?ŊV_2\^JA9k7n#-\EYN9=E?n-t@qچ/M;@HXFc@4\N2La HdQT'TŖ5̷)WpeH1EL"I1-p?R%YB?|^u,wCtG\Fҭ@Ca4|Jx]-CzzBT]NճQNP@a᤽ܒ>5{$ pzKEwҦEJ`j *#S [BwT\6'C2 *0#ߧ`r|%G᪻Xn0">EJ+5It\_*$'aHM/NlZ|ZRKc|d;=WF^UGL9+馪#j$/+&^尾.sD"tx yHETL&.%H^AQ1}ďa)9x-M%פe`# TS1u{aT gQX3w۟WO0$ $WZk19jtu3~QfEaj,mZv"䂁50^ۭ\v[WcW;&L)fD52FmBAxV|28L~kw4\mOZtA*a$ڰaP#TT3bBQġ|Ái'ybM|{OOWq']8V#Bniu/ ^`qvrQ+qS̖#kw @Iۉø6;APXL@]זuUתQY|y+8OԳq7!ϴ!B=$ϟӡGR1-f{uH;_s4etZWDžf{>_F|pf" zHQ)m;r~KR4mϻmoafܚUAQڲ=t;޸Wu tlQqo{,@RogEQKvY8Bӱ898;u S]_>؃j,Eܰ;qs-mbeeAGd? vN5@02&P04j }Y zUPEl^8 -x/2u%O `c8*w>o67Z:pg[vWG46l+U"8/aNbr9l&^C<)7u_FEp]E'DK`B/8SĒ2ש7ȄR5z7b-A涋,RDROo#rϸ{ 0lJN()Tv 5pUc3fye~-f<ޤ&b,aF/ ]l͏3vJe[gzb,hبBId܈_EP{KJۑ})lj:Z_]lMGMm L.A7HٝUy3|Oڮ̆R˜fY 3b^&r,QaK#ʏauBLOW_2h§il>j|_5>!o~mZϰ[i!&H2(|{#IԪHw䪌r8Go&OyR؅5T,7\,H7c7N$ [ ԃE} w2-Clb$6C7?/@03J+%aa {8C3:Ѣ4RF^O: dTh?[H2lB5CۓwDcs9+z.H9^!:X+LQ^7S#X<X`Ӗ%ƌSMD馠E{L+Q08)KY^ 2nEY|ULgʿ,9TpWdZɝ=)6&V) w,[ 'FxF( f&4Vwu_ 걬L47R?U֤:˾cÇ,ucL=$Z\0)*ǹJa}txvR8Ge m__(QOڡ%UӤeqOlauǵ\L27Xo3x@8tNSEʵ7Fi\w9Zbʨ//w,pAV檢x|D&04 {ʼn%>8]Fxf_ٵ"li7E4x,KY+rlM8,$+\8`͘w`Zo+@N{11Ū,bJU+~nkҶ~SuڡR8UXaTڄ?V ^w>{W1rlj[|m)dg4P^ܚ 2粿M+BΊS4Nu6?NVwڱ3ro^.:(Qn0JBrR^~TK9;X 8 0lcXe55@P^Ϩ}3j+UZzƂKŐc7&%gW&\'93z@Cxh0gk?;/s:uQxz8$>hݤ+u -[Wz^-4!l-x\9!s:./}nҌK㍌7#t7:.,@*ܲ*R,](Cw#cl.cRP;P꩎#!!]eWC.]['Qp-'PsF#~LGYl7>n^Y%Ri 3\n7 5=x(KprZIb]5r!q!<:!iO՟1u&;cZ$beyjɇwv'ym|*q}v#u&`Mui. Kz̈g%| fDF;6&J=tg8_^yxe }Ow)+۶H:Ag5͓Pj27̘y2p&jvʑ"xuO UW,n;卩W{X3~F$5o01.ٖ'F,x$T.?[:-{\\D(H{b ўFQ,eTQD;@?N,xp_E@P`&ϢwwC zv G MK'K/J\nOca;ڵtϫSiyP2Na>'sOE%GU.Ў75``{FS%hJ&^ 5Av}UlU7Q7-[lFt pzJщD3Mm=#kn`ٜ~!N Wvһi<,;Y hb<;z-q؅ᎏi=i) i 62\0NT\zz?{͚o9lwsc ?**$Xn\>y;kGCyLM'˩(-eYTg `>f%3:8^R ۓ tpkƗ#*.  = .31̊zNy cÿA*&UQ cAFqڣ Gܾi-򫭔eȥ)K$܊(yG#5F:i01ۇl;|?D7(`5mkK*( $>[+ bi&SdWI$$2_ Bכk;.c!AmzWA*Use[25=Wt~Vt^/ LfQ'qh^ Zyж* ~s!Jy1#E2F,XEj[BD׊5WZ$2"e [0z]P bcO;7W( ]E8"(k[9GAa^ǫWAY9MRQFkeO .zȨcң}HY"QdhUZM1;]"Xr 5~[#Zr`rc!Ѧ#4bUqBbY#ޚ8z\Jגt]Sw}Kl\/\Zj(ꀮXrm%*]cb-{䟵Z/컭U[R ['56nwQwczJszI!? (=zl6u8oykGJ9^]Rn־=z @bqfTr_b\b5`/,-~^Ňq6W&5wwt f4\  QVO۬0ί0Xqx7Lo@17$zd VʿsJ9EM&¨]]5$Lof95L[%]΂ҪHD;|0㡧xffʓ1FZ]6FY_9(>_f{I( ,9 q2 #UHmEdp\2KATܮ" ED?}&^v 2~ٱҊ)-sQ֚P Os ؼ:%(o+e%M b",l/z'5)MZN2Aƒ3k pH9ȹ;́OI mSG24k˗hP06WjuC~.C"dr {\{R-$xM}L;A,,"Ke%}RCЦ!/,)>c 8.02ꤝi;]3M^KC _d8q6A4hSU!9$HrI!R$c gv&L|]FzϬ5 ;/2L?ғ3_T}W yXJ.`˵?A<>~eΘ0Q[ -ƂG]r=~'9$aq5L{ }hzM~E'u2L] UBnLBm>"n77 [,P կǴc3 0aROJ画6"pTTsTz" IVREPğ{ejLxrA HiC;%5B`,YR"_O WKl`9bH+/_e?|gG5v"l";02fԂrt I~],'!C9h\n^7*bBQ%cf ð9'زGЍ= erĜN][rّ r6# x X, b haY vQP]34B%~tsS &/` %}tƪ񖏐|)koDxY n2v;@%W-Uo։/ȳeΎΓ[&sh⾆r3KӃ2.U?{|tqJJOsՕlV/M`$03׶{.}3%=C3y7Vu >+~x|,C OTYg4>U0Bw]UĊx@M0l@ ʼBVH !eV~h̙`Ή"lKġq nӜ6rFѥ*`hVnYbVxMQI'˻YVP(8EB.];ѧh4jFeNNNJRn1zR%t :hxzi1{͡7e$6֩>?IK4hЬۦoһSj9#&@^hKP$O80ѣ_y9OJT-uL7c/H\p1,OXsZ_6_v\IOe$L'  Jr,K _èLÔI:̖Te.0]gSt̩`OH=Zpa.2Oc E(;}q%r@oXAA0T+ ?7zN6znA?edrtԣ]/_0t2SDM͗ M$jлlIڭ)lT5RKƏFT9%Gv2*Ni ((?fWOEzɡp@zG5פd@)%9"c"O( Բhi 0:XPWn5G2| AMaBsf̘Z=T8dO,i βz49ӥ@Y N4L`e$ᆙVidX8(qY}pTbu;({uXKك~E`v ƬԯC50Фb_kj3\uwγHc`\}o0M ?u'DrE.Rg#1)}omju9vy5Y+ժ1:1qWt^4ӇJ"Nߎol9s&R/'tTd85;0@+2m+s"I踻`=uWb=\:p &U^Xj;pŝJ'W yguqVi`HdPqq74i&cտ+2t5w-Uk}u1 ¥υ&uӈ\KFd^ wOI. QʮXTK|t ;~V b1LMM¦k{4>mAx| niӃU#֪SlΥ?h_؂:gIP kTW2uYv 5Cg9j>lH?;ai{q}ӣy: &XG.y <~E7-q`cc2u+uX60RMk[*&dW2 01%6^l6P\ܚV{>)WVAFb;^K4|Y柇 `9{ !ŇP8jԯm(ĊBC:∽F;4e7ৈts{󶜏]ۮq֮p_uCtaDh7}i$yM#itz^/}"kZp*PӎXffwN[:h; +Xy#/[!<53->x Na投-U8bb|O ?iMNs+CQ&4:o<7Fz4 6y-9n˔LKDw =wkuƤǼ><# s"\vBzU忍&~CnT9 ܀Xw#HJ5˘(P]NIU[ *mG9IvATMijw[)6} f-saM+\G8j@9Ls(*bη@Xw| X+Իy?*=YԭfG5q4-\l ?eƭRuC!%tq:ջ?n|e76 =%t[ߟhDLdgXAwGo>?LnL0naIY0R_b/NrXݫ,BZ_ eJ[_v̴ .okuk6t?iCEc OT]Q"gD)ƥe^wrvGFܴ۠ɡ/LʔVd.?:咪("z?VUjE @PYMwX [p~ۉ2m9u{0uM3pE|$ a\z W"|ЌӝGjP*2AБxvKWSCWM>?ztrZ] M=E-ݘT!S[֘Oi]J-M T.O^gWj3K}5@ g?g2pfFPڝs6/;ldz;slͤ}kKIJDiߧZ 2CL¬ :wxݗ"]ś3Iz{q;;5a5-JaoWJ8U91VRhGainh~7Ң-/1x*Y}t[0Gt K->I R$RzUn3&h'k,Zf,6xߖn+¥),DuX}N3RQ;f1}/#{V4 ~n-Akyk7?2fK:ziIv{& M ;G8vNgYYdXUCA֖K7q 2޾m]LJڤ[OjJ(M m2Ioל&,آ c']$I(X9d&IBGBG<[ӊ*#u%OH+T[W_zғ"m+UyhEjK1PBpDBSiÄ0*2MOx1mtrP4(ЃiA#̀ܛ|N잸A -{K`혛V́3k t2WxAA&"P>YFށ ~OV po`0 l'TCWuA6j0ݑ!9GlJGgPWX+RFdSwZ%Bq%6h"Lj$RlT`w9L'*pmXyiߵR1iyұS1gLϪr4xl#*y^}Qa;)h&-e7 oJBG3}e_žS]s0&) OZQ^@_ <6ݙcADỳEd:==5~B;sP_-Cw6J&F(C!SrT&G)m&qNb5|]Ğr*Hlֱ !q= )@8u(v^0;51͚dZ^*o{'+&+[ڸfQf<={wR*EMtMr endstream endobj 30 0 obj << /Type /FontDescriptor /FontName /XEWZVU+URWPalladioL-Roma /Flags 4 /FontBBox [-166 -283 1021 943] /Ascent 715 /CapHeight 680 /Descent -282 /ItalicAngle 0 /StemV 84 /XHeight 469 /CharSet (/A/E/F/H/I/L/M/N/O/S/T/X/a/b/c/comma/d/e/f/fi/g/h/hyphen/i/k/l/m/n/o/odieresis/p/period/q/quoteright/r/s/t/u/v/w/x/y) /FontFile 29 0 R >> endobj 31 0 obj << /Length1 1620 /Length2 7598 /Length3 0 /Length 8425 /Filter /FlateDecode >> stream xڭweX]6 % 9t )(338 "%JwHw4HK7|>uu^qfjrˀ``'ۛ 0Ws{YY6G@`PysX (63@X l윜\vX_{Yiif\ͻ'FYP: ݖXՈ|>Hȇ#ؐyHܹ5' a-HчŏYP~(F,<)wzV2Jhd|\Cg8; Y7k"L kyL@ jf\!տJ};|."W>*.:IaڬH0a[!#_8)L޸;߾* adcZ?O,3& ن-<d"F#ԮSSa%;ЯHfK7kQx{`<uh9=w ^YlBVp9{ їzi˺u9]fO0"u%XIIf9/'E2N gJ/tk 'qrP[$þR1Z4ۜs.SۘԟXZ֕\gnSڥN:DS1W͚D3>@a>"εȍƬQ[\W"!8SIqa;(P%].\jXE+J);[&ŬdMgQ[xF S㼺MV[;AP|@iwEʋc$|`RYu{kaJ[YpQ.^sf;QY<`3j9])D/lk뾖wHuiWJ%l*EMD ڹµ+Ғv?yk2_Uh0 -"ud|-,퇔Xkv Z|w% }]g3$џP4Asf5CӖKdπ{ e'c!{bq暄 ZG9z6ЛDZLdgHAr 0#ҌVCoZ&=%eHګjsk1* }P}IRKREs%M@\+U}3?Q7/vh[ b236"ڎ(0 :-j,Re&>3VrJ\\L >" `p#w]9!"޻Xmlv15ㅵCɊx\AoILg3~?u1ťGqkHȑ]blHD+ ̋8`ok@y/IVOjϷw49~5^-yzQy> QEO-CU+ۇ3q󁊤t.2圃9(+Tԃ>@=N&\8/- ƘMBG(p;w[Bls6r!,R綾Aq.ą> op9=$#Ÿ1ͩ}*5xZ᩺jdoΥr@UoBDnn \|mf 8ුw֏ FYR2.3d֡ocǧhPڛp.oM\GP$y8 CA@PFҹ=$oO"צ aTwig)`#fuO_/g=Of[7O0it<%?ӽ1V?==eAFZhL:fߒu=_^T5~7<5;LWPm dJ +{&Elb]:̋A}U:ďk 'Ulex~Ud5HwC'{;?6tq4asfƲ ]RK -o9M:0Ew7f.AfKvyRfMA ^%S"WQQ5=umGmdw/[cvsOsxyN$0D&%j岍?Eq{4-qr}iύWHcָy94Bi'v.:6u!3qI*l5`b)k?9%n80wo9ˁHTjE?u9RؔbaݲQW| t'EJR8/Y4ymFTa~RHo;B>h358IE%¯W*Q>w7`Cs%KI zKP򬍻ӿ{VW1n]3^(͚g͵:Z!k?XMlAVş*xXTh=jw׮Tˤ:eVU8ShkO{mK))> yq V:QSnӻ!cܡ諆LJs3'_ ?XsHk'r-cSY+K$LYB_~maa1Ba]x '׎fw݊;snXB"w'Il4*,ף. m9G,.ycUM!M4ǿ}4 yJTP) 9=cV /z ie{*] =$\0XGH^,Srn!cu|1U+Qʇ^ Vmz1F6(]B'dOD8Dp(QOzЯ_df47 VhRfJ+ >~- ?N`<@(5Vmhe7^ M2lML,R-b>`{uQicS]ImEhr?Qp%FMȳ`xe( noÆhv?GxR+W*򹕺UF\n[ d]KC.CG%{+b37G$jF$dq?+wG=2)7+ϞziRs+zܙ:tsF~<1kzt~RD8J&gj~{4!k~zRjݦ߲伉K阵5'R l[:{bsG^ \ ^5ed~ː;mBּ伎O^rP &y,BpKGWf_D)kqĉ~VUL kGc_qYo8OvnFO:jnyAONUe{~+_N2ͭzUI j>u$0幈5&*3fs=+{"KbWϾJ rT֐F=Bs endstream endobj 32 0 obj << /Type /FontDescriptor /FontName /CWMNOL+URWPalladioL-Ital /Flags 4 /FontBBox [-170 -305 1010 941] /Ascent 722 /CapHeight 693 /Descent -261 /ItalicAngle -9 /StemV 78 /XHeight 482 /CharSet (/E/T/a/e/h/l/m/p/x) /FontFile 31 0 R >> endobj 17 0 obj << /Type /Encoding /Differences [2/fi 31/quotesingle 34/quotedbl 39/quoteright/parenleft/parenright 44/comma/hyphen/period 48/zero/one/two/three 53/five/six/seven 57/nine 60/less/equal/greater 64/at/A 69/E/F 72/H/I 76/L/M/N/O 83/S/T/U 88/X 91/bracketleft/backslash/bracketright 97/a/b/c/d/e/f/g/h/i 107/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y 123/braceleft 125/braceright 246/odieresis] >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EGINKD+BeraSansMono-Bold /FontDescriptor 26 0 R /FirstChar 76 /LastChar 121 /Widths 18 0 R /Encoding 17 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZKQLUU+BeraSansMono-Roman /FontDescriptor 28 0 R /FirstChar 31 /LastChar 125 /Widths 19 0 R /Encoding 17 0 R >> endobj 13 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XEWZVU+URWPalladioL-Roma /FontDescriptor 30 0 R /FirstChar 2 /LastChar 246 /Widths 20 0 R /Encoding 17 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /FRMHDR+TeXPalladioL-SC /FontDescriptor 24 0 R /FirstChar 48 /LastChar 120 /Widths 22 0 R /Encoding 17 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CWMNOL+URWPalladioL-Ital /FontDescriptor 32 0 R /FirstChar 69 /LastChar 120 /Widths 21 0 R /Encoding 17 0 R >> endobj 16 0 obj << /Type /Pages /Count 1 /Kids [6 0 R] >> endobj 33 0 obj << /Type /Outlines /First 3 0 R /Last 3 0 R /Count 1 >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R /Parent 33 0 R >> endobj 34 0 obj << /Names [(Doc-Start) 11 0 R (page.1) 9 0 R (section*.1) 2 0 R] /Limits [(Doc-Start) (section*.1)] >> endobj 35 0 obj << /Dests 34 0 R >> endobj 36 0 obj << /Type /Catalog /Pages 16 0 R /Outlines 33 0 R /Names 35 0 R /PageMode/UseOutlines /OpenAction 5 0 R >> endobj 37 0 obj << /Author(\376\377\000D\000a\000v\000i\000d\000\040\000J\000.\000\040\000S\000c\000o\000t\000t)/Title(\376\377\000\040\000A\000\040\000M\000a\000r\000g\000i\000n\000\040\000T\000a\000b\000l\000e\000\040\000E\000x\000a\000m\000p\000l\000e\000\040)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.14)/Keywords() /CreationDate (D:20190421225645+12'00') /ModDate (D:20190421225645+12'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4902 (1.40.14)) >> endobj xref 0 38 0000000000 65535 f 0000000015 00000 n 0000002450 00000 n 0000049878 00000 n 0000000061 00000 n 0000000145 00000 n 0000002242 00000 n 0000002499 00000 n 0000000191 00000 n 0000002347 00000 n 0000049412 00000 n 0000002400 00000 n 0000049579 00000 n 0000049244 00000 n 0000049074 00000 n 0000048905 00000 n 0000049748 00000 n 0000048509 00000 n 0000002616 00000 n 0000002818 00000 n 0000003216 00000 n 0000004166 00000 n 0000004392 00000 n 0000004703 00000 n 0000012587 00000 n 0000012870 00000 n 0000015907 00000 n 0000016166 00000 n 0000021641 00000 n 0000022064 00000 n 0000039374 00000 n 0000039718 00000 n 0000048262 00000 n 0000049806 00000 n 0000049936 00000 n 0000050055 00000 n 0000050091 00000 n 0000050213 00000 n trailer << /Size 38 /Root 36 0 R /Info 37 0 R /ID [<421B5FE7CB1C070048A54BA760D082F1> <421B5FE7CB1C070048A54BA760D082F1>] >> startxref 50714 %%EOF xtable/inst/doc/xtableGallery.Rnw0000644000176200001440000005020713341601440016542 0ustar liggesusers%\VignetteIndexEntry{xtable Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper,height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{The \pkg{xtable} Gallery} \author{Jonathan Swinton and others} \maketitle \tableofcontents \newpage \section{Introduction} This document gives a gallery of tables which can be made using the \pkg{xtable} package to create \LaTeX\ output. It doubles as a regression check for the package. <>= library(knitr) opts_chunk$set(fig.path='figdir/fig', debug=TRUE, echo=TRUE) set.seed(1234) @ The first step is to load the package and set an option for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") @ \section{Gallery} \subsection{Data frame} <>= data(tli) xtable(tli[1:10, ]) @ \subsection{Matrix} <>= design.matrix <- model.matrix(~ sex*grade, data = tli[1:10, ]) xtable(design.matrix, digits = 0) @ \newpage \subsection{aov} <>= fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) xtable(fm1) @ \subsection{lm} <>= fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) xtable(fm2) @ \subsubsection{Anova table (one model)} <>= xtable(anova(fm2)) @ \subsubsection{Anova table (two models)} <>= fm2b <- lm(tlimth ~ ethnicty, data = tli) xtable(anova(fm2b, fm2)) @ \subsubsection{Anova list} <>= Block <- gl(8, 4) A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1)) B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1, 0,0,1,1,0,0,1,1,0,0,1,1)) C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1, 1,0,1,0,0,0,1,1,1,1,0,0)) Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449, 272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334, 131, 103, 445, 437, 324, 361, 302, 272) aovdat <- data.frame(Block, A, B, C, Yield) old <- getOption("contrasts") options(contrasts = c("contr.helmert", "contr.poly")) (fit <- aov(Yield ~ A*B*C + Error(Block), data = aovdat)) class(fit) summary(fit) options(contrasts = old) @ \p <>= xtable(fit) @ \newpage \subsection{glm} <>= fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial) xtable(fm3) @ \subsubsection{Analysis of deviance} <>= xtable(anova(fm3)) @ \subsection{prcomp} <>= pr1 <- prcomp(USArrests) xtable(pr1) @ \p <>= xtable(summary(pr1)) @ <>= # pr2 <- princomp(USArrests) # xtable(pr2) @ \newpage \subsection{Time series} <>= temp.ts <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) temp.table <- xtable(temp.ts, digits = 0) temp.table @ \subsection{Flat tables} \label{sec:flat-tables} See the \textbf{Details} section of the help for \code{ftable} for a description of these tables, which are flat versions of multi-dimensional contingency tables. They require special methods to enable them to be printed using \pkg{xtable}. <>= data(mtcars) mtcars$cyl <- factor(mtcars$cyl, levels = c("4","6","8"), labels = c("four","six","eight")) tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) tbl @ %def Here is the \LaTeX{} produced: <>= xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) @ %def And here is a basic flat table: <>= xftbl <- xtableFtable(tbl) print.xtableFtable(xftbl) @ %def This illustrates the \code{method} argument: <>= xftbl <- xtableFtable(tbl, method = "col.compact") print.xtableFtable(xftbl, rotate.rownames = TRUE) @ %def Booktabs is incompatible with vertical lines in tables, so the vertical dividing line is removed. <>= xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) @ %def \p Row and column variable names can be formatted specially using sanitization, and row and column variable names and labels can be rotated. If special formatting is required for row and column labels, that can be done as a workaround by redefining the data and associated labels. <>= italic <- function(x){ paste0('{\\emph{', x, '}}') } mtcars$cyl <- factor(mtcars$cyl, levels = c("four","six","eight"), labels = c("four",italic("six"),"eight")) large <- function(x){ paste0('{\\Large ', x, '}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) xftbl <- xtableFtable(tbl, method = "row.compact") print.xtableFtable(xftbl, sanitize.rownames.function = large, sanitize.colnames.function = bold, rotate.colnames = TRUE, rotate.rownames = TRUE) @ %def \newpage <>= # ## Demonstrate saving to file # for(i in c("latex", "html")) { # outFileName <- paste("xtable.", ifelse(i=="latex", "tex", i), sep = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = NULL) # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "center") # print(xtable(anova(glm.D93, test = "Chisq")), # type = i, file = outFileName, # append = TRUE) # print(xtable(anova(glm.D93)), hline.after = c(1), # size = "small", type = i, # file = outFileName, append = TRUE) # # print(xtable(pr2), type = i, file = outFileName, append = TRUE) # } @ \section{Automatic formatting} \subsection{Suggest alignment, digits, and display} The functions \code{xalign}, \code{xdigits}, and \code{xdisplay} are useful for formatting tables in a sensible way. Consider the output produced by the default formatting. <>= data(mtcars) dat <- mtcars[1:3, 1:6] x <- xtable(dat) x @ \p Now change the default alignment, digits and display using helper functions \code{xalign}, \code{xdigits}, and \code{xdisplay}. This produces a better format as shown below. <>= align(x) <- xalign(x) digits(x) <- xdigits(x) display(x) <- xdisplay(x) x @ \subsection{Shorthand notation} For convenience, the three `autoformat' functions (\code{xalign}, \code{xdigits}, and \code{xdisplay}) can be applied together when an \code{xtable} is created, using the \code{auto} argument: <>= xtable(dat, auto = TRUE) @ \p Similarly, the \code{autoformat} function can be used to postprocess an existing \code{xtable}: <>= x <- xtable(dat) autoformat(x) @ \newpage \subsection{Math-Style Exponents} If you prefer $5 \times 10^5$ in your tables to 5e5, the \code{math.style.exponents} option to \code{print.xtable} is useful: <>= print(xtable(data.frame(text = c("foo","bar"), googols = c(10e10,50e10), small = c(8e-24,7e-5), row.names = c("A","B")), display = c("s","s","g","g")), math.style.exponents = TRUE) @ This option also supports the values \code{ensuremath} which uses \code{\char`\\ensuremath} instead of \code{\$\$} and \code{UTF-8} which uses UTF-8 to approximate the \LaTeX\ typesetting. \section{Sanitization} <>= insane <- data.frame(Name = c("Ampersand","Greater than","Less than", "Underscore","Per cent","Dollar", "Backslash","Hash","Caret","Tilde", "Left brace","Right brace"), Character = I(c("&",">","<","_","%","$", "\\","#","^","~","{","}"))) colnames(insane)[2] <- paste(insane[, 2], collapse = "") xtable(insane) @ \p Sometimes you might want to have your own sanitization function. <>= wanttex <- xtable(data.frame(Column = paste("Value_is $10^{-",1:3,"}$", sep = ""))) print(wanttex, sanitize.text.function = function(str) gsub("_", "\\_", str, fixed = TRUE)) @ \p Sanitization can be useful in formatting column headings and row names: <>= dat <- mtcars[1:3, 1:6] large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } @ %def <>= print(xtable(dat), sanitize.rownames.function = italic, sanitize.colnames.function = large, booktabs = TRUE) @ %def \newpage \subsection{Markup in tables} Markup can be included in tables, including in column and row names, by using a custom \code{sanitize.text.function}. <>= mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4) rownames(mat) <- "$y_{t-1}$" colnames(mat) <- c("$R^2$", "$\\bar{x}$", "F-stat", "S.E.E", "DW") mat <- xtable(mat) print(mat, sanitize.text.function = function(x) {x}) @ % By David Dahl to demonstrate contribution from David Whitting, 2007-10-09. \p You can also have sanitize functions that are specific to column or row names. In the table below, the row name is not sanitized but column names and table elements are. <>= money <- matrix(c("$1,000","$900","$100"), ncol = 3, dimnames = list("$\\alpha$", c("Income (US$)","Expenses (US$)", "Profit (US$)"))) print(xtable(money), sanitize.rownames.function = function(x) {x}) @ \section{Format examples} \subsection{Adding a centering environment} <>= print(xtable(anova(fm3), caption = "\\tt latex.environments = \"\""), floating = TRUE, latex.environments = "") print(xtable(anova(fm3), caption = "\\tt latex.environments = \"center\""), floating = TRUE, latex.environments = "center") @ \newpage \subsection{Column alignment} <>= tli.table <- xtable(tli[1:10, ]) align(tli.table) <- rep("r", 6) tli.table @ \subsubsection{Left aligned strings with column lines} <>= align(tli.table) <- "|rrl|l|lr|" tli.table @ \subsubsection{Fixed width columns} <>= align(tli.table) <- "|rr|lp{3cm}l|r|" tli.table @ \newpage \subsection{Number of digits} One number for all columns, <>= display(tli.table)[c(2,6)] <- "f" digits(tli.table) <- 3 tli.table @ \p or one for each column, including the row names, <>= digits(tli.table) <- 1:(ncol(tli)+1) tli.table @ \p or as a full matrix. <>= digits(tli.table) <- matrix(0:4, nrow = 10, ncol = ncol(tli)+1) tli.table @ \newpage \subsection{Suppress row/column names} \subsubsection{Suppress row names} <>= tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE) @ \p If you want a vertical line on the left, you need to change the \code{align} attribute. <>= align(tli.table) <- "|r|r|lp{3cm}l|r|" print(tli.table, include.rownames = FALSE) @ \p Revert the alignment to what is was before. <<>>= align(tli.table) <- "|rr|lp{3cm}l|r|" @ \newpage \subsubsection{Suppress column names} <>= print(tli.table, include.colnames = FALSE) @ \p Note the doubled header lines which can be suppressed. <>= print(tli.table, include.colnames = FALSE, hline.after = c(0,nrow(tli.table))) @ \subsubsection{Suppress row and column names} <>= print(tli.table, include.colnames = FALSE, include.rownames = FALSE) @ \newpage \subsection{Rotate row/column names} The \code{rotate.rownames} and \code{rotate.colnames} arguments can be used to rotate the row and/or column names. This requires \verb|\usepackage{rotating}| in the \LaTeX\ preamble. <>= print(tli.table, rotate.rownames = TRUE, rotate.colnames = TRUE) @ \newpage \subsection{Horizontal lines} \subsubsection{Line locations} Use the \code{hline.after} argument to specify the position of the horizontal lines. <>= print(xtable(anova(fm3)), hline.after = c(1)) @ \subsubsection{Line styles} Specifying \code{booktabs = TRUE} will generate three line types. By default, when no value is given for \code{hline.after}, a \verb|\toprule| will be drawn above the table, a \verb|\midrule| after the table headings and a \verb|\bottomrule| below the table. This requires \verb|\usepackage{booktabs}| in the \LaTeX\ preamble. \p The top and bottom rules are slightly thicker than the mid rule. The thickness of the lines can be set via the \LaTeX\ lengths \verb|\heavyrulewidth| and \verb|\lightrulewidth|. <>= tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE, booktabs = TRUE) @ \p If \code{hline.after} includes \code{-1}, a \verb|\toprule| will be drawn above the table. If \code{hline.after} includes the number of rows in the table, a \verb|\bottomrule| will be drawn below the table. For any other values specified in \code{hline.after}, a \verb|\midrule| will be drawn after that line of the table. \p The following table has more than one \verb|\midrule|. <>= bktbs <- xtable(matrix(1:10, ncol = 2)) hlines <- c(-1, 0, 1, nrow(bktbs)) print(bktbs, booktabs = TRUE, hline.after = hlines) @ \subsection{Table level commands} <>= print(xtable(anova(fm3)), size = "large") @ \p <>= print(xtable(anova(fm3)), size = "\\setlength{\\tabcolsep}{12pt}") @ \subsection{Long tables} Requires \verb|\usepackage{longtable}| in the \LaTeX\ preamble. <>= x <- matrix(rnorm(1000), ncol = 10) x.big <- xtable(x, caption = "A \\code{longtable} spanning several pages") print(x.big, hline.after=c(-1, 0), tabular.environment = "longtable") @ Extra features of the \pkg{longtable} \LaTeX{} package can typically be activated using \code{add.to.row}, as shown below. <>= add.to.row <- list(pos = list(0), command = NULL) command <- paste0("\\hline\n\\endhead\n", "\\hline\n", "\\multicolumn{", dim(x)[2] + 1, "}{l}", "{\\footnotesize Continued on next page}\n", "\\endfoot\n", "\\endlastfoot\n") add.to.row$command <- command print(x.big, hline.after=c(-1), add.to.row = add.to.row, tabular.environment = "longtable") @ \newpage \subsection{Use of \code{add.to.row} argument} The following frequency table has outer dimnames: \code{Grade3} and \code{Grade6}. <<>>= Grade3 <- c("A","B","B","A","B","C","C","D","A","B", "C","C","C","D","B","B","D","C","C","D") Grade6 <- c("A","A","A","B","B","B","B","B","C","C", "A","C","C","C","D","D","D","D","D","D") Cohort <- table(Grade3, Grade6) Cohort @ \p The default behavior of \code{print.xtable} is to strip outer dimnames. <>= xtable(Cohort) @ \p The desired column labels can be created using \code{add.to.row}, in this case applying two commands to ``row number zero'' while suppressing the basic column names. <>= addtorow <- list() addtorow$pos <- list(0, 0) addtorow$command <- c("& \\multicolumn{4}{c}{Grade 6} \\\\\n", "Grade 3 & A & B & C & D \\\\\n") print(xtable(Cohort), add.to.row = addtorow, include.colnames = FALSE) @ \subsection{Sideways tables} Requires \verb|\usepackage{rotating}| in the \LaTeX\ preamble. Sideways tables can't be forced in place with the \code{[H]} specifier, but you can use the \verb|\clearpage| command to get them fairly nearby. <>= x <- x[1:30, ] x.side <- xtable(x, caption = "A sideways table") print(x.side, floating = TRUE, floating.environment = "sidewaystable") @ \clearpage \subsection{Rescaled tables} Specify a \code{scalebox} value to rescale the table. <>= x <- x[1:20, ] x.rescale <- xtable(x) print(x.rescale, scalebox = 0.7) @ \subsection{Aligning fixed width columns} Note that using specifications such as \verb|p{2cm}| always produces a \textbf{left aligned} column. What if some other alignment is desired? This is not really a problem with \pkg{xtable} but with the formatting of tables with fixed width columns and different alignments using standard \LaTeX. One solution is to use the \verb|array| package, defining new column formats. \begin{verbatim} \newcolumntype{L}[1]{>{\raggedright\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{C}[1]{>{\centering\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{R}[1]{>{\raggedleft\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}} \end{verbatim} These allow for very sophisticated cell formatting, namely left-aligned, centred, or right-aligned text, with recognition of line breaks for the first three new column types. If these lines are included along with \verb|\usepackage{array}|, then the following is possible. \newcolumntype{L}[1]{>{\raggedright\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{C}[1]{>{\centering\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{R}[1]{>{\raggedleft\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}} <>= df <- data.frame(name = c("A","B"), right = c(1.4, 34.6), left = c(1.4, 34.6), text = c("txt1","txt2")) print(xtable(df, align = c("l", "|c", "|R{3cm}", "|L{3cm}", "| p{3cm}|")), floating = FALSE, include.rownames = FALSE) @ \newpage \subsection{Table width} The \code{tabularx} environment is for typesetting tables whose overall width is fixed. The column alignment code \code{X} denotes columns that will be stretched to achieve the desired table width. Requires \verb|\usepackage{tabularx}| in the \LaTeX\ preamble. <>= df.width <- data.frame(One = c("item 1", "A"), Two = c("item 2", "B"), Three = c("item 3", "C"), Four = c("item 4", "D")) x.width <- xtable(df.width) align(x.width) <- "|l|X|l|l|l|" print(x.width, tabular.environment = "tabularx", width = "\\textwidth") @ \section{Suppressing printing} By default the \code{print} method will print the \LaTeX\ or HTML to standard output and also return the character strings invisibly. The printing to standard output can be suppressed by specifying \code{print.results = FALSE}. <<>>= x.out <- print(tli.table, print.results = FALSE) @ Formatted output can also be captured without printing with the \code{toLatex} method. This function returns an object of class \code{"Latex"}. <<>>= x.ltx <- toLatex(tli.table) class(x.ltx) x.ltx @ \newpage \section{Acknowledgements} Most of the examples in this gallery are taken from the \pkg{xtable} documentation. Two examples (\code{add.to.row} and `Aligning fixed width columns') are from Stack Exchange. \section{Session information} <>= toLatex(sessionInfo()) @ \end{document} xtable/inst/doc/OtherPackagesGallery.Rnw0000644000176200001440000002125113456572257020024 0ustar liggesusers%\VignetteIndexEntry{xtable Other Packages Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper, height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{\bfseries\Large The Other Packages Gallery} \author{\bfseries David J. Scott} \maketitle \tableofcontents \newpage \section{Introduction} This document represents a test of the functions in \pkg{xtable} which deal with other packages. <>= library(knitr) opts_chunk$set(fig.path = 'Figures/other', debug = TRUE, echo = TRUE) opts_chunk$set(out.width = '0.9\\textwidth') @ The first step is to load the package and set some options for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) set.seed(1234) @ %% \section{The packages \pkg{spdep}, \pkg{splm}, and \pkg{sphet}} %% Code for supporting these packages and most of the examples used in %% this section was originally provided by Martin Gubri %% (\url{martin.gubri@framasoft.org}). %% \subsection{The package \pkg{spdep}} %% \label{sec:package-pkgspdep} %% First load the package and create some objects. %% <>= %% library(spdep) %% data("oldcol", package = "spdep") %% data.in.sample <- COL.OLD[1:44,] %% data.out.of.sample <- COL.OLD[45:49,] %% listw.in.sample <- nb2listw(subset(COL.nb, !(1:49 %in% 45:49))) %% listw.all.sample <- nb2listw(COL.nb) %% COL.lag.eig <- lagsarlm(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample) %% class(COL.lag.eig) %% COL.errW.GM <- GMerrorsar(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample, returnHcov = TRUE) %% class(COL.errW.GM) %% COL.lag.stsls <- stsls(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample) %% class(COL.lag.stsls) %% p1 <- predict(COL.lag.eig, newdata = data.out.of.sample, %% listw = listw.all.sample) %% class(p1) %% p2 <- predict(COL.lag.eig, newdata = data.out.of.sample, %% pred.type = "trend", type = "trend") %% #type option for retrocompatibility with spdep 0.5-92 %% class(p2) %% imp.exact <- impacts(COL.lag.eig, listw = listw.in.sample) %% class(imp.exact) %% imp.sim <- impacts(COL.lag.eig, listw = listw.in.sample, R = 200) %% class(imp.sim) %% @ %def %% \subsubsection{\code{sarlm} objects} %% \label{sec:codesarlm-objects} %% There is an \code{xtable} method for objects of this type. %% <>= %% xtable(COL.lag.eig) %% @ %def %% The method for \code{xtable} actually uses the summary of the object, %% and an identical result is obtained when using the summary of the %% object, even if the summary contains more additional information. %% <>= %% xtable(summary(COL.lag.eig, correlation = TRUE)) %% @ %def %% This same pattern applies to the other objects from this group of packages. %% Note that additional prettying of the resulting table is possible, as %% for any table produced using \code{xtable}. For example using the %% \pkg{booktabs} package we get: %% <>= %% print(xtable(COL.lag.eig), booktabs = TRUE) %% @ %def %% \subsubsection{\code{gmsar} objects} %% \label{sec:codegmsar-objects} %% <>= %% xtable(COL.errW.GM) %% @ %def %% \subsubsection{\code{stsls} objects} %% \label{sec:codestsls-objects} %% <>= %% xtable(COL.lag.stsls) %% @ %def %% \subsubsection{\code{sarlm.pred} objects} %% \label{sec:codesarlmpred-objects} %% \code{xtable} has a method for predictions of \code{sarlm} models. %% <>= %% xtable(p1) %% @ %def %% This method transforms the \code{sarlm.pred} objects into data frames, %% allowing any number of attributes vectors which may vary according to %% predictor types. %% <>= %% xtable(p2) %% @ %def %% \subsubsection{\code{lagImpact} objects} %% \label{sec:codelagimpact-objects} %% The \code{xtable} method returns the values of direct, indirect and %% total impacts for all the variables in the model. The class %% \code{lagImpact} has two different sets of attributes according to if %% simulations are used. But the \code{xtable} method always returns the %% three components of the non-simulation case. %% <>= %% xtable(imp.exact) %% @ %def %% \p %% <>= %% xtable(imp.sim) %% @ %def %% \subsubsection{\code{spautolm} objects} %% \label{sec:codespautolm-objects} %% The need for an \code{xtable} method for \code{spautolm} was expressed %% by Guido Schulz (\url{schulzgu@student.hu-berlin.de}), who also %% provided an example of an object of this type. The required code was %% implemented by David Scott (\url{d.scott@auckland.ac.nz}). %% First create an object of the required type. %% <>= %% library(spdep) %% example(NY_data) %% spautolmOBJECT <- spautolm(Z ~ PEXPOSURE + PCTAGE65P,data = nydata, %% listw = listw_NY, family = "SAR", %% method = "eigen", verbose = TRUE) %% summary(spautolmOBJECT, Nagelkerke = TRUE) %% @ %def %% \p %% <>= %% class(spautolmOBJECT) %% @ %def %% <>= %% xtable(spautolmOBJECT, %% display = c("s",rep("f", 3), "e"), digits = 4) %% @ %def %% \subsection{The package \pkg{splm}} %% \label{sec:package-pkgsplm} %% First load the package and create some objects. %% <>= %% library(splm) %% data("Produc", package = "plm") %% data("usaww", package = "splm") %% fm <- log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp %% respatlag <- spml(fm, data = Produc, listw = mat2listw(usaww), %% model="random", spatial.error="none", lag=TRUE) %% class(respatlag) %% GM <- spgm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, %% listw = usaww, moments = "fullweights", spatial.error = TRUE) %% class(GM) %% imp.spml <- impacts(respatlag, listw = mat2listw(usaww, style = "W"), time = 17) %% class(imp.spml) %% @ %def %% \subsubsection{\code{splm} objects} %% \label{sec:codesplm-objects} %% <>= %% xtable(respatlag) %% @ %def %% \p %% <>= %% xtable(GM) %% @ %def %% The \code{xtable} method works the same on impacts of \code{splm} models. %% <>= %% xtable(imp.spml) %% @ %def %% \subsection{The package \pkg{sphet}} %% \label{sec:package-pkgsphet} %% First load the package and create some objects. %% <>= %% library(sphet) %% data("columbus", package = "spdep") %% listw <- nb2listw(col.gal.nb) %% data("coldis", package = "sphet") %% res.stsls <- stslshac(CRIME ~ HOVAL + INC, data = columbus, listw = listw, %% distance = coldis, type = 'Triangular') %% class(res.stsls) %% @ %def %% \subsubsection{\code{sphet} objects} %% \label{sec:codesphet-objects} %% <>= %% xtable(res.stsls) %% @ %def \section{The \pkg{zoo} package} \label{sec:pkgzoo-package} <>= library(zoo) xDate <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 as.ts(xDate) x <- zoo(rnorm(5), xDate) xtable(x) @ %def \p <>= tempTs <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) tempTable <- xtable(tempTs, digits = 0) tempTable tempZoo <- as.zoo(tempTs) xtable(tempZoo, digits = 0) @ %def \section{The \pkg{survival} package} \label{sec:pkgsurvival-package} <>= library(survival) test1 <- list(time=c(4,3,1,1,2,2,3), status=c(1,1,1,0,1,1,0), x=c(0,2,1,1,1,0,0), sex=c(0,0,0,0,1,1,1)) coxFit <- coxph(Surv(time, status) ~ x + strata(sex), test1) xtable(coxFit) @ %def \end{document} xtable/inst/doc/xtableGallery.R0000644000176200001440000003415213457046160016210 0ustar liggesusers## ----include=FALSE------------------------------------------------------- library(knitr) opts_chunk$set(fig.path='figdir/fig', debug=TRUE, echo=TRUE) set.seed(1234) ## ----results='asis'------------------------------------------------------ library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") ## ----results='asis'------------------------------------------------------ data(tli) xtable(tli[1:10, ]) ## ----results='asis'------------------------------------------------------ design.matrix <- model.matrix(~ sex*grade, data = tli[1:10, ]) xtable(design.matrix, digits = 0) ## ----results='asis'------------------------------------------------------ fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) xtable(fm1) ## ----results='asis'------------------------------------------------------ fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) xtable(fm2) ## ----results='asis'------------------------------------------------------ xtable(anova(fm2)) ## ----results='asis'------------------------------------------------------ fm2b <- lm(tlimth ~ ethnicty, data = tli) xtable(anova(fm2b, fm2)) ## ----aovlist------------------------------------------------------------- Block <- gl(8, 4) A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1)) B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1, 0,0,1,1,0,0,1,1,0,0,1,1)) C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1, 1,0,1,0,0,0,1,1,1,1,0,0)) Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449, 272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334, 131, 103, 445, 437, 324, 361, 302, 272) aovdat <- data.frame(Block, A, B, C, Yield) old <- getOption("contrasts") options(contrasts = c("contr.helmert", "contr.poly")) (fit <- aov(Yield ~ A*B*C + Error(Block), data = aovdat)) class(fit) summary(fit) options(contrasts = old) ## ----xtableaovlist, results='asis'--------------------------------------- xtable(fit) ## ----results='asis'------------------------------------------------------ fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial) xtable(fm3) ## ----results='asis'------------------------------------------------------ xtable(anova(fm3)) ## ----results='asis'------------------------------------------------------ pr1 <- prcomp(USArrests) xtable(pr1) ## ----results='asis'------------------------------------------------------ xtable(summary(pr1)) ## ----include=FALSE------------------------------------------------------- # pr2 <- princomp(USArrests) # xtable(pr2) ## ----results='asis'------------------------------------------------------ temp.ts <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) temp.table <- xtable(temp.ts, digits = 0) temp.table ## ----ftable-------------------------------------------------------------- data(mtcars) mtcars$cyl <- factor(mtcars$cyl, levels = c("4","6","8"), labels = c("four","six","eight")) tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) tbl ## ----ftablecheck--------------------------------------------------------- xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) ## ----ftable1, results = 'asis'------------------------------------------- xftbl <- xtableFtable(tbl) print.xtableFtable(xftbl) ## ----ftable2, results = 'asis'------------------------------------------- xftbl <- xtableFtable(tbl, method = "col.compact") print.xtableFtable(xftbl, rotate.rownames = TRUE) ## ----ftable3, results = 'asis'------------------------------------------- xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) ## ----ftable4, results = 'asis'------------------------------------------- italic <- function(x){ paste0('{\\emph{', x, '}}') } mtcars$cyl <- factor(mtcars$cyl, levels = c("four","six","eight"), labels = c("four",italic("six"),"eight")) large <- function(x){ paste0('{\\Large ', x, '}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) xftbl <- xtableFtable(tbl, method = "row.compact") print.xtableFtable(xftbl, sanitize.rownames.function = large, sanitize.colnames.function = bold, rotate.colnames = TRUE, rotate.rownames = TRUE) ## ----include=FALSE------------------------------------------------------- # ## Demonstrate saving to file # for(i in c("latex", "html")) { # outFileName <- paste("xtable.", ifelse(i=="latex", "tex", i), sep = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = NULL) # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "center") # print(xtable(anova(glm.D93, test = "Chisq")), # type = i, file = outFileName, # append = TRUE) # print(xtable(anova(glm.D93)), hline.after = c(1), # size = "small", type = i, # file = outFileName, append = TRUE) # # print(xtable(pr2), type = i, file = outFileName, append = TRUE) # } ## ----results='asis'------------------------------------------------------ data(mtcars) dat <- mtcars[1:3, 1:6] x <- xtable(dat) x ## ----results='asis'------------------------------------------------------ align(x) <- xalign(x) digits(x) <- xdigits(x) display(x) <- xdisplay(x) x ## ----results='asis'------------------------------------------------------ xtable(dat, auto = TRUE) ## ----results='asis'------------------------------------------------------ x <- xtable(dat) autoformat(x) ## ----results='asis'------------------------------------------------------ print(xtable(data.frame(text = c("foo","bar"), googols = c(10e10,50e10), small = c(8e-24,7e-5), row.names = c("A","B")), display = c("s","s","g","g")), math.style.exponents = TRUE) ## ----results='asis'------------------------------------------------------ insane <- data.frame(Name = c("Ampersand","Greater than","Less than", "Underscore","Per cent","Dollar", "Backslash","Hash","Caret","Tilde", "Left brace","Right brace"), Character = I(c("&",">","<","_","%","$", "\\","#","^","~","{","}"))) colnames(insane)[2] <- paste(insane[, 2], collapse = "") xtable(insane) ## ----results='asis'------------------------------------------------------ wanttex <- xtable(data.frame(Column = paste("Value_is $10^{-",1:3,"}$", sep = ""))) print(wanttex, sanitize.text.function = function(str) gsub("_", "\\_", str, fixed = TRUE)) ## ----sanitize3----------------------------------------------------------- dat <- mtcars[1:3, 1:6] large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } ## ----sanitize4, results = 'asis'----------------------------------------- print(xtable(dat), sanitize.rownames.function = italic, sanitize.colnames.function = large, booktabs = TRUE) ## ----results='asis'------------------------------------------------------ mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4) rownames(mat) <- "$y_{t-1}$" colnames(mat) <- c("$R^2$", "$\\bar{x}$", "F-stat", "S.E.E", "DW") mat <- xtable(mat) print(mat, sanitize.text.function = function(x) {x}) ## ----results='asis'------------------------------------------------------ money <- matrix(c("$1,000","$900","$100"), ncol = 3, dimnames = list("$\\alpha$", c("Income (US$)","Expenses (US$)", "Profit (US$)"))) print(xtable(money), sanitize.rownames.function = function(x) {x}) ## ----results='asis'------------------------------------------------------ print(xtable(anova(fm3), caption = "\\tt latex.environments = \"\""), floating = TRUE, latex.environments = "") print(xtable(anova(fm3), caption = "\\tt latex.environments = \"center\""), floating = TRUE, latex.environments = "center") ## ----results='asis'------------------------------------------------------ tli.table <- xtable(tli[1:10, ]) align(tli.table) <- rep("r", 6) tli.table ## ----results='asis'------------------------------------------------------ align(tli.table) <- "|rrl|l|lr|" tli.table ## ----results='asis'------------------------------------------------------ align(tli.table) <- "|rr|lp{3cm}l|r|" tli.table ## ----results='asis'------------------------------------------------------ display(tli.table)[c(2,6)] <- "f" digits(tli.table) <- 3 tli.table ## ----results='asis'------------------------------------------------------ digits(tli.table) <- 1:(ncol(tli)+1) tli.table ## ----results='asis'------------------------------------------------------ digits(tli.table) <- matrix(0:4, nrow = 10, ncol = ncol(tli)+1) tli.table ## ----results='asis'------------------------------------------------------ tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE) ## ----results='asis'------------------------------------------------------ align(tli.table) <- "|r|r|lp{3cm}l|r|" print(tli.table, include.rownames = FALSE) ## ------------------------------------------------------------------------ align(tli.table) <- "|rr|lp{3cm}l|r|" ## ----results='asis'------------------------------------------------------ print(tli.table, include.colnames = FALSE) ## ----results='asis'------------------------------------------------------ print(tli.table, include.colnames = FALSE, hline.after = c(0,nrow(tli.table))) ## ----results='asis'------------------------------------------------------ print(tli.table, include.colnames = FALSE, include.rownames = FALSE) ## ----results='asis'------------------------------------------------------ print(tli.table, rotate.rownames = TRUE, rotate.colnames = TRUE) ## ----results='asis'------------------------------------------------------ print(xtable(anova(fm3)), hline.after = c(1)) ## ----results='asis'------------------------------------------------------ tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE, booktabs = TRUE) ## ----results='asis'------------------------------------------------------ bktbs <- xtable(matrix(1:10, ncol = 2)) hlines <- c(-1, 0, 1, nrow(bktbs)) print(bktbs, booktabs = TRUE, hline.after = hlines) ## ----results='asis'------------------------------------------------------ print(xtable(anova(fm3)), size = "large") ## ----results='asis'------------------------------------------------------ print(xtable(anova(fm3)), size = "\\setlength{\\tabcolsep}{12pt}") ## ----results='asis'------------------------------------------------------ x <- matrix(rnorm(1000), ncol = 10) x.big <- xtable(x, caption = "A \\code{longtable} spanning several pages") print(x.big, hline.after=c(-1, 0), tabular.environment = "longtable") ## ----results='asis'------------------------------------------------------ add.to.row <- list(pos = list(0), command = NULL) command <- paste0("\\hline\n\\endhead\n", "\\hline\n", "\\multicolumn{", dim(x)[2] + 1, "}{l}", "{\\footnotesize Continued on next page}\n", "\\endfoot\n", "\\endlastfoot\n") add.to.row$command <- command print(x.big, hline.after=c(-1), add.to.row = add.to.row, tabular.environment = "longtable") ## ------------------------------------------------------------------------ Grade3 <- c("A","B","B","A","B","C","C","D","A","B", "C","C","C","D","B","B","D","C","C","D") Grade6 <- c("A","A","A","B","B","B","B","B","C","C", "A","C","C","C","D","D","D","D","D","D") Cohort <- table(Grade3, Grade6) Cohort ## ----results='asis'------------------------------------------------------ xtable(Cohort) ## ----results='asis'------------------------------------------------------ addtorow <- list() addtorow$pos <- list(0, 0) addtorow$command <- c("& \\multicolumn{4}{c}{Grade 6} \\\\\n", "Grade 3 & A & B & C & D \\\\\n") print(xtable(Cohort), add.to.row = addtorow, include.colnames = FALSE) ## ----results='asis'------------------------------------------------------ x <- x[1:30, ] x.side <- xtable(x, caption = "A sideways table") print(x.side, floating = TRUE, floating.environment = "sidewaystable") ## ----results='asis'------------------------------------------------------ x <- x[1:20, ] x.rescale <- xtable(x) print(x.rescale, scalebox = 0.7) ## ----results='asis'------------------------------------------------------ df <- data.frame(name = c("A","B"), right = c(1.4, 34.6), left = c(1.4, 34.6), text = c("txt1","txt2")) print(xtable(df, align = c("l", "|c", "|R{3cm}", "|L{3cm}", "| p{3cm}|")), floating = FALSE, include.rownames = FALSE) ## ----results='asis'------------------------------------------------------ df.width <- data.frame(One = c("item 1", "A"), Two = c("item 2", "B"), Three = c("item 3", "C"), Four = c("item 4", "D")) x.width <- xtable(df.width) align(x.width) <- "|l|X|l|l|l|" print(x.width, tabular.environment = "tabularx", width = "\\textwidth") ## ------------------------------------------------------------------------ x.out <- print(tli.table, print.results = FALSE) ## ------------------------------------------------------------------------ x.ltx <- toLatex(tli.table) class(x.ltx) x.ltx ## ----results='asis'------------------------------------------------------ toLatex(sessionInfo()) xtable/inst/doc/listOfTablesGallery.pdf0000644000176200001440000041457413457046153017710 0ustar liggesusers%PDF-1.5 % 1 0 obj << /S /GoTo /D (section.1) >> endobj 4 0 obj (Introduction) endobj 5 0 obj << /S /GoTo /D (section.2) >> endobj 8 0 obj (Single Column Names) endobj 9 0 obj << /S /GoTo /D (section.3) >> endobj 12 0 obj (Multiple Column Names) endobj 13 0 obj << /S /GoTo /D [14 0 R /Fit] >> endobj 19 0 obj << /Length 335 /Filter /FlateDecode >> stream x}IO0>:vGVT! %RM{&[ p~7[3GJ'әLK_h+m@!J9{[< ҆AFDjEuR?>JP8hYUoV(> endobj 15 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 592.104 168.398 601.015] /A << /S /GoTo /D (section.1) >> >> endobj 16 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 568.249 216.261 579.097] /A << /S /GoTo /D (section.2) >> >> endobj 17 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 546.331 229.047 557.179] /A << /S /GoTo /D (section.3) >> >> endobj 20 0 obj << /D [14 0 R /XYZ 88.292 815.122 null] >> endobj 21 0 obj << /D [14 0 R /XYZ 89.292 777.26 null] >> endobj 18 0 obj << /Font << /F17 22 0 R /F18 23 0 R /F19 24 0 R /F30 25 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length 1502 /Filter /FlateDecode >> stream x[[s6~8yX >3ٝvҝilm-f__ 8`HdȲ;A>Pv!9 p=H<nC9`[ FDv1aoVCy 6$\-\A"0$ռF0Z$$5,r H#)?%"NjL&e*F ¡M5s$nYBp{v ŭлj'߆3>-{ZŴ$״|=9 }X@{鰀7Z@>ZPNhvK}Cxs?~.q𩜭8 4eQ|8A0ut\6=Ve\ӔVIӆbx/^_å9:GGph!#\N݂u,h-7>q5먇NwB_=`ֹ^d_~EG0}B},} SZGzb_$$0 B#k, t*[b!7$OabTSlmrhM鑟Ti)tY==${HIX& c-$wF(ίgp(0mAVM!vPKͽP*Fr\]fvcF6Y$}<2 nr 24]> З;a27嫨8,eM!rVmg#fBk?'AuG5.ϛ,ڑ{?N 17[꺗ވtW_+[ʊk-y~&4h2Ѽ;/$徒WvfH*L䶐!?R5yw5bn endstream endobj 29 0 obj << /Type /Page /Contents 30 0 R /Resources 28 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 31 0 obj << /D [29 0 R /XYZ 88.292 815.122 null] >> endobj 2 0 obj << /D [29 0 R /XYZ 89.292 777.26 null] >> endobj 28 0 obj << /Font << /F17 22 0 R /F8 26 0 R /F30 25 0 R /F31 32 0 R /F32 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 36 0 obj << /Length 1104 /Filter /FlateDecode >> stream xZ[8~ϯ>l]iխUަ} IX%dNm  ӪB0Bݾn>9 !h=eJs_߀EQJ Gcymٸ ] f8Z ڢk}2xSt&d\,bȑs=X^Ƃ VfĪ]vmF NT7ո_ܘR QH<Pwh[888\*?lG̵Gcmk~d4|լ$U~x(wAh.kOׁb6v`i!G]Ԛ ^R~0.W:XYKlcDd{Y\*N{@zzZ{@LPiw_D_~Ot/Zˈ#1?)g< endstream endobj 35 0 obj << /Type /Page /Contents 36 0 R /Resources 34 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 37 0 obj << /D [35 0 R /XYZ 88.292 815.122 null] >> endobj 34 0 obj << /Font << /F31 32 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 40 0 obj << /Length 966 /Filter /FlateDecode >> stream xY[o0~ϯ>SD˪vMڔ$!)Rnu~r% ùA26$/-+ 㾂p~I7"0F$ gx́0x`qExߺ8s"@ lKPH#p9;bn]NxO$GGϟg WNcp!8( vdޖC>=Qs #Gaֆcv57ذ#\Nݿ;O;瓭v?,ߩ?yAiBC:zS7 =%rS/QrF.,ad1ajXDo7ca/gؕD[DOvWA:(S8_D!O;+(ffF{RD!;a(;;PCYo&q2l%&j -M1H @V !`5UȤVDuZғF7aa+á Ͷ@!Y1Cq=l]Cl m3/ ݉+ fWms/vc7-`+c0R|Q"7*ӱe#6L})oeHH{394~:BI>pn)6ZPJ[ʸs ]SGcH]LSG͎iH=\ O1Exҁvnț54T7+w:d㡻n|XdO[qRkLҋ͞_Yfh0mVYz_m,STQ#yUnPnPelWSuM(FvNΤ++֛E m *o׵~ 5OwSԞV\$i4>a%+qh%=U endstream endobj 39 0 obj << /Type /Page /Contents 40 0 R /Resources 38 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 41 0 obj << /D [39 0 R /XYZ 88.292 815.122 null] >> endobj 38 0 obj << /Font << /F31 32 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 961 /Filter /FlateDecode >> stream x]o0_a>m/I=} .NllH 0&}ι;@C2\^׷r }`^fE԰ |)!ޤ.!KTI=~ί(̅F̡smRI9MQ=3g.̚ < uClg+G9,;kg\KR/|Hԫ^GzͿϯR*#\2W :I:R.H)uwIs y:q;H\gz72g2Q]Ky2|HYR`ԒQ $B6+],~縋_)y0*^*Rp__c.fA7\t-`JՌƱZz V[e<ۻV}Q@xep~ XZܵ<;*k;=TfYb(j?Srۭ^UcoY8ziL϶}eF*i5~8jT RVefkA۷!x&P)YİmM9U602Tdv }D0t/{^:?ҋН"tKKLUH/; 0% endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 45 0 obj << /D [43 0 R /XYZ 88.292 815.122 null] >> endobj 42 0 obj << /Font << /F31 32 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 48 0 obj << /Length 797 /Filter /FlateDecode >> stream xXKo0 Wаzˆv ܼؐ :?ɒGqz)")$ !'wFtYKs$^YWh0"ȓ0C e9 @P8FַeKFS@}dBꜜvP= *:AXg鲭{;2 -sEzI >Xtuh|!j0Mgqa{!M`D'̦`h*( *hB[Xsb`MV5r8Iqp;gQ>h 1 2-W`xA 1r zɽ &R ^NŊJ(i4LqHA >Qy lAʋ||n_z%! ԥDRqIZ܌A[MM endstream endobj 47 0 obj << /Type /Page /Contents 48 0 R /Resources 46 0 R /MediaBox [0 0 595.276 841.89] /Parent 27 0 R >> endobj 49 0 obj << /D [47 0 R /XYZ 88.292 815.122 null] >> endobj 46 0 obj << /Font << /F31 32 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 52 0 obj << /Length 1334 /Filter /FlateDecode >> stream xYIoFW̑!v ZYE 89-(W$oR$rm9 9yHv@:7# eH+5h2C' ~L&y1_d2i.0.ҭxudV14bSny1d&"Γ͹E8: B8mH@u WtqgKK?E9C5pQ&0+ +߮YqhDۘBBu Ѡu7յ&@E+Od:FMf oeh`Dٖj }.uLȦSIB` 0![OcJr|X;k1PԴb]c@BaK)-76>/b/vW<ϻ55# / ߬B(|TYC!bt<\ ""=- Z/q"Ph̃oXx3nzyP<QiCy+Lڨ[[]FTI?Jp^HP̀sÄF}P QayÈ#Nz"/`ac<6-be ovJD)0Z jJV;>se'r*!UNfruE< r6fATxxai7EɿW(1Ժխ}k-7ी`1[#$p) endstream endobj 51 0 obj << /Type /Page /Contents 52 0 R /Resources 50 0 R /MediaBox [0 0 595.276 841.89] /Parent 54 0 R >> endobj 53 0 obj << /D [51 0 R /XYZ 88.292 815.122 null] >> endobj 6 0 obj << /D [51 0 R /XYZ 89.292 777.26 null] >> endobj 50 0 obj << /Font << /F17 22 0 R /F8 26 0 R /F31 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 57 0 obj << /Length 1853 /Filter /FlateDecode >> stream xZ[o6~ϯ T,V nK3t@V\c2d$v&h"Q4/y4B*B+7/'OբN˗fo]@b5Lܒ˗SEA*!yF.Nڤ{ϺKtv &g&'ͩIFC4Mq6xv 2{&:ma9!V\E;ܧq *V}\,gb2]QEfևp6kmHHW>ƕZ"$ m b'30ݥĒ'$RtQdN)?1*j}6A-Z)jgP HHYySk%)(ئEONe!A~~v@iadVW{ rà +lBcVCߓ"NG:2P@ (i=2M]^}# nQ_5>4Mj G|ӄR`S}>ts] &pd.KQ5i Y9C) x6)yv#eT2Bt8RfΧ# ˷w n~On#8ciE-=0;Bofޥī͛7#bxsxfa8 q3 z]dQj\pn]mܕt6)&_2?lA콃ލ_x^wjc1XMyo[.矲t4l;cػ"gin_3-kWL9լ`\U?;ս1%ЭvGFFo.baϾ%$WSã]`Rs(@JJP h%d4,u} ?~ѭHŨ27)غ&VQR-}y9<:r|Y/[:'Q/BvS+ZU/bae#,Բk [K޲;4%@h0Ei. 9oDN-4>DM_8NM8|nz 7G:p ӼǦ+2'ާue彘gyUnR$=+ִ:gY{w5Ps >,@C_2Ү Z*Tym]kYr3] \+* TO ]!tS ERC$]K͝8Ct|TZ rh mNE@QZ ̧ErX]5,PU qe6,hRNگNxIPP$4]4,˥Rw^HP=T {O0$l!~pDw#- pf]7ψE^ 􍌊y(%ZBl!vt^E6*E|,Gr?Tq5>ZiN'o$i룖ac+`]'$R endstream endobj 56 0 obj << /Type /Page /Contents 57 0 R /Resources 55 0 R /MediaBox [0 0 595.276 841.89] /Parent 54 0 R >> endobj 58 0 obj << /D [56 0 R /XYZ 88.292 815.122 null] >> endobj 61 0 obj << /D [56 0 R /XYZ 283.842 172.547 null] >> endobj 55 0 obj << /Font << /F31 32 0 R /F14 59 0 R /F17 22 0 R /F30 25 0 R /F33 60 0 R /F8 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 1313 /Filter /FlateDecode >> stream xYIoFW rj:r MRIŹhY[ RITlЋfDy{㈑1aMuceXk)3zg᷷Q3"ǖZljՎ2%^a(XxRKϧ_;7Ӌ9ϮƃOo{NMUʵ**οNjt@oeֶ**FUQHSZD@ 8u*N ;TDPAS52[7T@m**npjd^lxiEܛdap(4~?|9J) h`UeZTВHIC qN։z'" BPWe3X|rNGI%o0]vXdUe_ԍT6{f1l gv[DiCxyρSl܉l T>AVPcBV@-|N"r%ͺCi+n+Yo%[U <٬֥VRT"NVz\N^mM-ڦ+w`vFet1 u&-My҂''KZe6GΈ 5'neq\$e&ꧨ0H ~,Ǥ(F3$:6v\6d X3ەZi0t!8DO\QxUSi[ɫd_2dNTFaN3;;^sEX? J̃S*ۡ:EL^1 0 ɐ;c&HWq =Fj܈VTyH-LoF5oe7560L #6:ힴE+>]kt*!:p°#zF7]@{FN)3iTǍN0Ku^)W2ES9b':sң:}<{QT%Spf_}8n X_)ԧ7I X{§KvG_̊z(> endobj 65 0 obj << /D [63 0 R /XYZ 88.292 815.122 null] >> endobj 10 0 obj << /D [63 0 R /XYZ 89.292 315.212 null] >> endobj 62 0 obj << /Font << /F8 26 0 R /F31 32 0 R /F17 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 68 0 obj << /Length 1135 /Filter /FlateDecode >> stream xXKoFW,rjW\)@m)@KLT\$V 9x\qvvfǜ-g/Fy4cMo -ƁMmf5.OhLD)o'Fi6(ODgӗ译 u |}ы##`&NRjN[MiEmKc՜3TY͉[<y:ru(> endobj 69 0 obj << /D [67 0 R /XYZ 88.292 815.122 null] >> endobj 66 0 obj << /Font << /F8 26 0 R /F31 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 1461 /Filter /FlateDecode >> stream xXˎ6+df~IZIN\@bk\~Ֆ_CR%[3=@YX({Ȍ0ӀUגOoTXbs2ٯPpkEd &,iݥQÏ_ƃ 1‰Txˊzfd9)Bޒ%BP n[-JeD@=9&l8rRL|"kMy~. LTRʖ'p3`e^+HrڵXF0_R6S<̥Xe D&Bd'<)1# Hk&$C^(PD1NS(`UXE ira7D(EҍQ8gmx0ňdj*Ɉsu?yNUϹݯ _Fj,z>)Aq5"sG>B\HdCCnjS+ޮ2QfyޖٗQ̭>f;0Gvcu9N*GlmC] 0~ TB\%T ,m`Y^Lp$S{Փ \1kVT#z 팤MUoͧ 2Hf*`.Jo.a].kLJsasd,`,XOO/ڑpYHj NM9_$:ջi1q)'yw_QlUjRba'Rf4y4;Zioezf1F?fW%T(we' 4i_bǃ!?f_ ͱ`! F##-t6Y/Vv({q4!"CϖE9,g;lW8$:~n뼜fqHZiS." ~N&- Mh ߦMllBAQDTD֑,lF=(G p!lnp> i,[948r%.É5 Q:H-OA-Uj%f:dPD pSWOB z@:wz@)Dgd0t2F? PGB\Ny Mv]7EB[ Ss$ECߐ!l\t7"!T0.XOȷ5' Φ}0 BU'5rzITupuU |dL˦Nr%Ev('ҰWcHt*CȎJ|Q"Y$I2R8N5Ƥ:dD{aA@|Ixh"YdGAN"<~H0"r|;), yViH0%SU-q.Vb/+DI@'RB< )!$6O&%*QjZ章h7u_:U`fT endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 595.276 841.89] /Parent 54 0 R >> endobj 73 0 obj << /D [71 0 R /XYZ 88.292 815.122 null] >> endobj 74 0 obj << /D [71 0 R /XYZ 283.842 285.858 null] >> endobj 70 0 obj << /Font << /F30 25 0 R /F17 22 0 R /F33 60 0 R /F8 26 0 R /F31 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 77 0 obj << /Length 1394 /Filter /FlateDecode >> stream xM6DN6P~(5iǮe#i}FdE+)[ X< 32#/84dtO-hB-?9 B>?j2t0&90z{==cu;( LeF&[¨p|,;Cx ?80j,#5e֦.{Co'O}2aVȏt]PIF5r@DБ] H YF15r@d<(:292<ֆYO٭nWm[y`Xsj{IYq /8qAPTj a QUSvjL6rMةF6KY2dgaSΒ3*(7 EyVе ʍA1vV*1AQ \ΨoMFQ=Q  \Q6r񿓱_ KԬXn]? ouJ.۟+Y+}[[IC,U"!)#RFbp̫Ԃc }N *x\wk'rYPg\ Ax"n$)\wYOWͩox7s!cz{ w7%d05 SP[qV(W&]-` W 㰿U I;L]@@8h_ R3#BT ?wԏ|ziBdk#DIgE`.%VFzCZLk7"-D'6@m])_jrX?iiHJC$NKͶÒt]O~)oW> endobj 78 0 obj << /D [76 0 R /XYZ 88.292 815.122 null] >> endobj 75 0 obj << /Font << /F8 26 0 R /F31 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 79 0 obj [511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9] endobj 80 0 obj [500 500 388.9 388.9 277.8 500 500 611.1 500] endobj 81 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 82 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 83 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4] endobj 84 0 obj [575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9] endobj 85 0 obj [272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8] endobj 86 0 obj [514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6 514.6] endobj 87 0 obj [312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7] endobj 88 0 obj << /Length1 1883 /Length2 13733 /Length3 0 /Length 14904 /Filter /FlateDecode >> stream xڍP Cܭ][p . n ;wfUUWuT5*1H΅ `ffcdffPtWOrr.*d]m,lN^.^ff+33 x@7KS#@ O!fdin~j [ tپhڛX\<'5/;#֙\nbP9@?(1S,,P7sq:K󻋫) ~;@UFdc*pyOg`fi|gtpL08ۿ݀6@w?S$Ews6qtpqft#a,ag*fok sq#?qK'{=j4L],]A2ټ\\#abj?,9z;;i|-@?@7o"x dniOw1?N]c0>av6b&qIIm (x3ppX9,,eT hWv(cgf_AEy=ff/K#ߌ$]mlSG}]]wC}C&? -jocu2. 3Β S%K dlǃ``af?3~T{ R{w򾤦 ?ghgx' 0w\&?D".6?]0)-UF<л?d7# 7|W}.qa0wu=5A{r?}N ҿc7dw{2%?@ 7п{7w~ qx/?x_& 'пv=FysϷ/ۛ[w׊3MRi0x/9}s}DIt+2҇#A}#L}֞l28dщH !ϋF5dx,E+7RƽG`X~ s Cz^`O|9. (?ongs'߈e}Oc؊u6Yc*X{pqup!oǦ)ESeKFo,pE /$i)81dwc些d:hL*(`C(J̒FJ ,^UMw$L `lweq>?|`NKC-+~83+2X; *立:7ēRaKqwňnS- VaOΔ +[R3U0 +(YE6l3:) KvYЊ9)H%J:A61pj@(+p8qEߏXKH<] bK9D+i }:GҗxyaK ed&lA>iFEZGXyY:iXmxWm7o =W KeX~D`':層x FG񃰛uK+WENe&_b'9b&G\Ki2iey!AҊllw>pnII$QGU"A"VڦS?Ǎy٨W\ W@mQNv":J$Q}lu?D T3) ,B;L O5gx6C;La>:#LQyǶB#AbAai'mZ L&9IʻB}Q*rwGU|udmBbe_Y )ia9~ Y4.2׎JJR*\=z} C>N\;fcP[+b=mrN<]@uH N&şkqnhبJRNp~ dM[MMGr:G|㕩~"Ś}$16:աH1 g{NO:XGb+ E5&2ۂ32oԦNg(zDBp=2C zF6T'(='BV҆ϴ]5(݄) ͬNGu=&` p^:\"1IXu1xb]$ZKj|5 cd"4 ݈ŧ .$deW#Cꉩ*sOٙc-xhٷt Q}b'5t.q@qՓ'b߁$E4XĦd3t)d|L)'Tv`ĪVްOo։4PNK7T\ҹyF0T4hN3 R#5:~biQPHQb[lо ԁm J@g]qj>1G&25vFk{+= !9呜ԥ7#sz$oт5'Oe+vIW$gKRFx ?8DmF/VAtKÕr1HY2AV?%BhQjPHcB܏ܞ|ȱُhgV-'bxE*7uG?ȋvLЕpCaNPϚL9k D/M@΁W&/.?ZJ1\}`jY<2/~M?Ƃ[mFSG}f|q--WyYOE_r)1)?SNV3gGWVw=EfMCYp3a4 %B \_ݞI t}!iL/kA9J @tȗ}~ [&Y׬ʈfRRl`0F,wx4wZHtʰ˼B̙U^.;e.Gvcb&o?%}y Ͼ"KX$[n/Px yנxkp6Ɗe `d`cW1CɃq{0TAQ]*`-<j%\C`}џP4ٗVQUIo} ntB=)<\^~};'C1ߵjc;Ȫ'꿙ݾ 6}ZD. dCW:j U7/E+0:fdOL1"DI۳;\K3MAcWlxGya%M~=ӀF*!D-)y$ۺSE٥ s9 awJhNݞ#'+z%d5'tym O⑝ Hb@|3AAcG V\_2f?$/6 jHQoZbʔh d r `E#J2+:s,M%vd77t{߷/i^'C(G¦u5 L^n7ëk]D$W$ Meg~g TTp]猅a-ǒIkΔ|1PUy @ԵN6xt+^N!cs6P*k;BJv,ـ"=v֧LYϲ}֧(ynju#]ebkm։;wՓpg]+CUL.[qgd1i1*Tw%#:naOOeQI-ۣ%6K9*gרDӨ%':-6A)ck+( Ӈ֫''krm14XD x)M6[Η'2ލFU׹ %ȣ!>(4(vznT8qAtնIqkߘK|l+ǣMiUu8{k73Ra(+cGcp}.yZOqD U.憰My! RZs^ tR>fNR +@ǕX[9&·4X7Zzey 4%*L!!l֫J[yzíp()]Y4e"DG;Su,ό_-FjbqPüTCJ/ ɨ ߳Ą;^&ub'J_@C|:jqt!e*惓%1oXA@nrGd:ڮa8ڝgSӥ+j^T hxO^#Ɨ@qi3rNrv&Yc&NsE,& \*DDOxX.[$FQ2ސ}י2=Wz$5dxn0 @TW:'6[Y.Q'bef~<3 zb}wMCLT4LcٰZutGgKqv^Jnm?}¶̍&H~ EMzÀ<dyo"yS3Vx+L!\򳮀WhR>cuXr$Ёu[-ٓ Q퐦 16ek ړf:ቆ95E!k袕@`l_7CSRE-.)6YlzOj)$ cni.}fxclBv?T߻Ĭ3ؤvb;;//c#_uMPXF"R eC% FKz·?)"ϵ5Iⲭ|15!Mxi.`5󕱴nTI}Z&)52 =Ae!|PG7tLD9fU9>/!;0?ɿ`{ gW 1UrAYCjO&z-T;sU̦Hڳ>RDM+:?P&9Ymf+eIp `'(J4xvP.Y )%Oj~hZˣ-$Ԫ﷍\V$&y萾e(z[繼ܣ43:*h_]_oh=x4c^j !=h.Bnm8T} %12YOL'D9OACK"2 pfķ95$\Xɕ'Jgj4'"o|P cCFFcM^EhCJ7r5UHwPֻ~P$ HP[Ou~O HK鲎HHy\m&z8Ho!4xC9[R# oV5U5!z89 T!^Xd}aKB)݋é7M`}@6'7/*y|>u.7H1(~]U*rHWeztOd%G4?!QK+V SVJ32"` 63 Q24Sp k fD2džV'b)G*l ":/*{JW ?D&aXMMr"m/\m][\9rZˈ25΋3߀xTZ< \G5|Rn[JÍ#ͼEI ,FOإ#oJGW -\<;]\Fh߄FJ}4zs86-9K)[ъYsιUiv; ʹnŚ8ʨݾp{4$?DX H$uk4, Q垯 !$}fۮ.As 4Dm-ߺiuzkFIf@ &ZzI:0Ϝ_O|[ 'ʦ̓jQGWꋷ飩|xݤ~k*ԭP08O}آF%E>*&ܷ~'D#8&؃Z> r/>r`CS}IJ?6D2CԺRoF *Qcy\i|IZM_"TT{􇚁L!'(C{Ÿޯu`b<Ԙc@mc_6HC3HLnЂ =+!gɧ\@_!Rw 9'fL) ,kȵ~D!r@^H5[`KlrHISͿ5Rȃ 4%˺MVǞ|i$DAʥdr_W= 9C.#D)C{Dp{r'W6ǫlGQ6a;^ 'RzceiOXcOg_un|iV5U-. KteZYYAc``hң+wT|[PgoFmJ &jc|} J gZiAG6uM?Gz=)`U˪jaяiX3r:ߺTrc"0WISg6E$tEy6_i}u7cPǃ٨~aBCh3{ F}v<ShB罰m *Ltg_5Lc_v}S:+LeQ 8e>L]d_NV&m %yvC"c>rI|ݿiТK_S3M3;up_H$od6o9ՀXkR }}~"cSM@CP=>z: O_,Xۜ_taLm/OUúvC83~;kijhC3X2pf7JPV.[ޔ>w[vs#Vui@A槰yl;5E{C7hX˒oCd.]HYՖ<}oqUU}P-k;!jC/y %d?\nqK+?f -ҳ^^*gq75Lm7əakKxZ5tKZXFzuE>i'><,bObnmϔ8X-F`_L)3/\+6v)\-rWjCIt0;1K5Y<I# X¯j,M~猿;l=B L("xRv'Ѻ0lL^AZ)8_yf}G9Ս-UgKdI+OrjbvjXz!>[U]O[+Jx2>`'qHo愀Yorzj"LA"K('(bYjzO0y^ca "z 䊹xTC1 )?`onF~xe}ƨC_Km1֘$而,67~4CޮSvE{#N H7EGp4W۱xL + a; [<!@w*fi6!S' UIiuy$^WGnS$ bFִoYK\8aCCLbۯ)a!c<ӈ_?w+Q+gX,hPF{ɫ.Sa5.a(R0 &~%M {Jǭ 9#9hesemiD{Y GU|E<,Rҫ43c%Wp}y ,v)7ՁNCyzb]Otwfmf>|})VjE u?X \ P:1OXJιxk|Xp*-!Awz㶞nQQ bUUj@iys- InR;E9#)A2M[I*?MS̬=Ndj#?59^w``̦=oOgCXe{1[>Ol"\PI)ilcnmDVOk],35&W=)X>~nnbpvyGի(g"0}P ,!-ghcd H7:w*jG !&5›@a^ȃKU* MD?mfCNˇtVj=G7$b{ =k?1O}Ll@ړh .%릧plAcȕ;IN9O 9'\ZUj}.vhCWZ4>8UYw>95d[N}'s\dUgf-{m#K6 .eTTx`tΗY:l⬉oHe" Iֶ!l(N46,CtG4`VocmF7Tm/a徒/xk0XN16z/T$8va .nۓ5G`Gt t5["j~djV*OVy* ^+4>xaeďX+ 3AGC+Rt(,y^?u$P9'jƇ o$h`|7Ox,NKeDHd{<7%ͷr&1!@ϳKZ=,:]"䱎1QI f`gqi{4$3xu3~N]y#hڤv<#8 /&YҎ > j6~,*}; d.Q$2 XM>J6`V rAPW'_01o>cO =Ӯm].v.p q j.%N;'uDpTmy^3W&_TX)/}{}DcQ`͘Ű=+1[LNa%su]wH-eؼִ:Gh%Nin2e4hKGhFhQS|wۿFx}XJ t*yQmhZ%g1@'Ҋř Ӊ;*ͯ |}Xh} soL#ˆ}띳H'&A+C{?,rN u}[m&4hMA Hv]\R+'9 ^"glW ~8~hP5S*kSGwteU{}Y`+-"):rh]6Ж[^c֝ZPm IU^8]pbyBDb?ð+ 7$JG%>:ŋXƇYf!GђKe_3m:F OQtgݶJ7EK-{}埜nΝfYO/}QJtΖ *lfNAήhó,]SIy)>7ߎՇ׎&d@s):c;ԧJlaoTv35> k,kB?j`5nG|KpK,Vz]s>L$m5g6mG[*k*bKWftܳFwq[o .IM\#d`*&>䲊 atTŇGԑb{forǃ w0S\8uZIw*G؀@'ƻ&ƕ1\.K+qL{:ч(]7xoV ҟͤ1{(ed]}gۛ"<ؒt{U0[q %Jotg*( s2gɆX~$b@7&W J5Y `-,_5*MfkH,6J.Qݨ. X!lfߪYSk{`OHLn,$tk Ȟޜ+>]xz䗴L{|9luQMTwB!h^Zvw/l!ֱVsQ E~aݐzD+{ K&KF=ZdCz]n.o/'GٍЗIN.a5prtCHw|rYTvD9=%tPg1(;4+!>D^UMտr+Z?}7Q;{@Rz^mq 1XcV~R^:zgFhqrroS3'*B`uHKISs‚xiKeiHMΉ>L@ q@4;+\^#[uNiXػ!wJ۸C1(iB>dQ}i.oG9Mғbt}m%韜jOAIV7%- C; Æ/,£ gKn;LFI>rEd6hY{O0/[Hy3<"n}!붯MN$=5.(Ÿ lϴeXLVJ/J[5,k7M`,εm;W?+"4fSpE_ec )peόcVl! }LM'R\!L6p)4j\8F р[;N?0.N=mqJ*-! h K,qT`Ѷ.WX2%QlFbIat-?zh%-[D}A{![z^ endstream endobj 89 0 obj << /Type /FontDescriptor /FontName /DFFIYV+CMBX10 /Flags 4 /FontBBox [-56 -250 1164 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet (/C/I/M/N/S/a/b/c/d/e/eight/equal/f/four/g/i/l/m/n/nine/o/one/p/r/s/seven/six/t/three/two/u/x/y) /FontFile 88 0 R >> endobj 90 0 obj << /Length1 1855 /Length2 11561 /Length3 0 /Length 12712 /Filter /FlateDecode >> stream xڍPր<8ikp@7nCp] ܝ'e̙WuoQ|֮jjru&13{33+?@BI\ʎLMalZ qt~I_ .667??++ᅥ~$ 9!SK;x@,-_+Δ;@4 ׌@%B Z8;;𳰸1m!7Kg  qh 325@? u{ l,MAvN..vf 5;@]Ndc0:3#ݟ@SS{[9li|Vdvvwf08ٿ]6@W?KTbdiG,y=f);3 {[[IZB@Zٻyvf?0sq`ѴttIe*BGfrpp@ 4<@*`^!{9]Ag ߊ%d663dniOW1~;@uul<1YTUjo;`cp|7'-rv`{x=6d6͠l: ?jy t7D[͟z聶6Yγn(ٿn5gmN!bv6;L?C[x nciRw0ΙZ>*Nw RRc!2뀱sq^ lX_]?n"? `x,2ECQ(﫟?7!>i _ _Ú _Z ,׊llADvD#/5;5+*e{/|_7nOכfqv! _{qgLL] 'E~52E^7 {ƴ;.4CBtH_K\ٖ]&{:nm@ kWm~46ێ8mX~ 1V5l+t+q Ǟ-D7DL]׷{68p$uzRgQZr}5\n 8g\A~@ L,ڇ:\@djc)Ӓ7!k=bqb`ӎ/fLm lQ63X/j,یw>IA}x R{ɟOS_0{kw4kAMF869HXIR~q/;)q3 Op OhUPQַʰ|ZS-֚/=~L6Q0lB2]Gmx&6j@XltMd"fwKE $r5V{"W! #oqw)t|Df\yk:e\?Qu$jHobʻ1g trqڒHl޷̎H$L0sآ}Q7뻄owvT1~srFȝ+>ѹ ?8]62UM[h9bt-r$R:~=pa'YtsXJ6aڞx&Qj8$jY^<-8<7p5!v̼m2*XrW'K TPh'}CJpi}B XU%y@etq}/e$Y?q,3GRl pg'>72ZnfhM*ۺPWALO]wsGji7? (~2={4Z$('"EөE8Iiѿ'Kkvb't ";՘Y2#wi/Q*'Mjï.-izk$~ƌKx|aZi-b9 GI}|?U;2!+bG}.D%W\ x ;ꅆ vJD:4<@ofTɫ(,X~H- ^KBcP!ڒfDetD"`&XJx nhtE2uOlP[Szj|Evժ lf\5SuႪVam'FQ'{:7Ȕ@R€c`vxYjw!_:N%| FL| e)AɇM5笠m9\{wW%B8 ~$A/H hc .t{THc "*q!qxZ&wo"Wn9d| 5 iӖscz( absis[Wܔ>hUK:ɧkk!ScJst_xвE*K0KCe ̉jY@K98f|-]y;JS6ո[fYh!ijdvOZm5%[o+,7Iw7%iRkΚx =RU؀NzJ=xY0|hH$sN=!ZS,0 *V϶;O/nw/@O۔O(CC.&y-,2+Y[R}c9PHK-_`=&OsW6xӶ HAEMC|1:Q()$ ]ݱ*w^# mSwηGz,ߪjҗv<&A9Cv3o< -Ē@]Fm~ڮI{N: fG葉ci2\^HUQĈF{$+2lhhgN$-Y;͡,[/`5k4txfYBL"4>1Z*qN<ߴz^\P A2wh6m/QҟQZTs51&>VSn6܃4p㻸 ?$lʞn7w+02qX:b J;گW~>Dr kډ؜SV뙮(6mAE𤋮.Ale՟ I#t7bRiII]X1**xt¾|[4_ \{ _(;t Y*O1J]V]E9ydo>?_6*_=Zm}$)Y2Y}-hvΕث߽Esu馪Ǡ!%ϱuS|֎qJN ,jR&CR W/N9$%S3A8yu`_.I6ZC@]9틴\>e #̣4&T2eCb9`yF ~83|uğ}Un(H&^ I~F1GΊv %Z+0s0)w&7 cF@js34v8c 蛼aмF9$>p~v~h<xΔ/g-^J2|6.i;$v0$?JįOZJ™XCGWįeR1Wd%']TJʮl8vlLA 5!~8Czb$m q(%I]$w4TCؖo.dN[Yk"8*u]gni2FܛB>dlZF c|]GGcpȚ3Ftne Mƒ:=^w-{^WFm١Cw"UAӠ@|H_Q y=7{ɓc3e䶫#=}s͍}{d{-wSpW.J*jWkex c^{Y`  "~so2~B1X_.5J1~g537[\x^Լ;.|:-Sn"4G$ԡkƬ8{2]4L#R9gziB$ln|C$-4x,H8hs׈sӪ#Uqj7:ȶQ-~B/ "-XG1 L`6N+F2?Z~WxImwa"rrz5Xڽ{k@Tk{jT׼ i=vJZ_~-ޭ(c3x5$oµ|N٬r[>@(>Tܞx`6mrZ=sJ$ %39n(AŌF<4Ҧn+yg9G !oASRGk!EgJZ5w?R= /YBo|oٵ)M3߲`6׎ ij[M̰ǾwH4Ko) 1;,B_ag^ |e-{$[v( +#)[.@e_vTIzFE}mnzJfǪ]kpF7Ut6ܟ =dZI6>3m9*jK2x; ipWy! p+QLs1A01?sRء%_.aCH$`TY-w3q8 " fM.YjG#Ri'!ĭE@y܆FK~ov@& $lIJjzO&UMڭ6ظwmv2[m1;&9>\E.\<;%ErAc+)} #Ca8voB!^BФ꼗x1`%f[vܥ:7neb2Pę?oCs0j`CTp U8doͣI)&{{ov49FVe{W Y#N0n%r@'!D7jEW `%00J':I)ϒF}Z_ -O"/؀OGr1>k)sh>^!E4ṙEQ D MySZ"˹g^@#û3Xfޛi+M:-Oua4 Fws&C9_u!86gI-;vj#eU3qHUA|%H5eo#۸k7ͿݸrnɾJ{go>a˽Q5^h:͓ H1l:+G|"DXgT#D ݍpXhm.oj;}ʨQ)9q2J+6a<' 7'Q_*eu*'6y ~w^y5ֹ~ n*ʻtwl%@U$̈́yN+!D9qgs.rˁ OOtuh!M~pot':EQt"VpC-jzqMnŪ,i>1,N<]v8uE&Agh[Q I O4`L^ q b riDjݼ}bvdJ zN({e lXt"\ 3B[cekڍXG aWnC4]!P\vmhN=]L{5V߭dR_mgӭ\p:@Z"#_c@}w%\^=W][]PʹpvBЬrjf媾[]"CF3)m|2J6 t3A>y6 m!P%;F}\Ƒdnȶ5 qTeF>@#0INM>_ۍKjÕŚdxQi;f/4S񯅶Qaƈ/;<| זJFI6pFDD@^%K|Eld@ 4eRhlhA4  MS&pL~7"YoOBď+ٍ6bO3=tf5`9i НR#,1c-%\/x#ѦI^亥FeUîʄ?&rHzƥ2tB8Q})3]D`&+&r#9 ,\4) ,L%ѥ12"knZ+j`xm/vq,j1K 7+oI:MSgh8|rQ)D3?O6G V^5jK>%J߅o1BBC)" KF%.:h/w/K,kRk HF90<11]wNX!> ͖kpYwjxZ@\LJ=ߩ甧ɢƷ 7}G8`" Hq/XuWLoZ&f}A٨͒ԋ.0w?|h9N^mM ~Sc U55oC!>7JuDgH(+6+PWnTmYJc Ḳc8tcﳧeVaGX[SVEAs; E7bޞRF ?v^N~ֈ{W\!pl7/i5Ь)-"#VV> v+{"6IIoEAd YhYyB#LJ!r:JO!+ĐBE)jB1^ig)M\S=' n. ͇ۆ*՛>QMP#ΉWioTj5L_5, +|[GW)\P}^|nɊRɶ"z38 Q (Uhe17-צ~@+y4 lچM`&I'Wv(cd iRšP44fX~_ɁTY@_Otz]]ͽNS#Ѡo5*ZJAUnoHA_ l߽-@`JQIǗND̵]|$->[i0EDPޑ|v~(78Um]2fk>;͞%LوdӀ[vmP^_ qޝ4_k̀( !u(,s:Ls_콅Q/F>p90wezϱfbuH%`2S.4OfhSlfA^W . n:GYILĮ .4A#L"#f%ڶl6'^fozjx2& (UРIUG+z]c+`*5)(r᭥aKfp+),~Z ![-ú>R.BKs 3Tmn8vZ/-o|-<>Ѧ;vMF)Bv.`C,n\o5iW:ٛ@`(F )NHt;i QHZJ͠{ߓz\q!U U"ײ o}>䊝ѱ.Wɒ7L`' J?pD" H NH{U F4*'r,*ڠG(q=09҆3>#׀ +R[. >Te^Y}ՉRH+A&~#\jPi賓(!g}@-o3N|Fu5_ֺ%;$r# dk=M[h,zIa| f-zm0zwNFg1ymK!вG'} dڻ"H3J="-N19,Q* D&;S_&:vDEOOee #>1~G"A&bQ/wqQF2!ǰCt71+ 9Ȍ~D˧1=Ԧ(cГ\7 endstream endobj 91 0 obj << /Type /FontDescriptor /FontName /QBQWSJ+CMBX12 /Flags 4 /FontBBox [-53 -251 1139 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 109 /XHeight 444 /CharSet (/C/D/G/I/J/M/N/S/T/a/c/d/e/g/h/i/l/m/n/o/one/p/period/r/s/t/three/two/u/v/w/y) /FontFile 90 0 R >> endobj 92 0 obj << /Length1 1635 /Length2 4227 /Length3 0 /Length 5258 /Filter /FlateDecode >> stream xڍt 8m~6H/٢dfY/![v)0f 2[eI˛}.Dohy{뚙Hp; 8(40ֹ(A  8 x,9Cada)#A<r'%(A49kcX77$O CɃ_W :0ǃF D69! , Ww0qG:%.ܱ#?Ia^HD7IJ8 P?fLE.C Eb>ob`ccIWϿX"G*.%- )r r&0O~@ޯ>~JC`%+ vPY(%^Ð #xч៌sC}~RȒ$K^VKmD<#kq"K]\RF*Î레H w>Tί @0H,uw%?/xwYm 8XB)Y9|@PΤdeɂ o+I<8` ܢ?Łnt`:D J @Y ? ?e7&b<Ei?!?P|XC=q8s(tl $"!,\Koe{,{ʀ$(8]e6%kt:\2ͭ-Q#ABy!'Ft½+Цw82>it𫍠f7Y-79cӅsC" 7/I4ZPI umd-a68Ԭ$0 "/;p+vIm;Rԃs"2f9훣yr|>p<@̪gbF[Cd^l'?gQ<}%Q-0G4_a,vg dU@1UxiXZSD9')oX&yr tQ*ĆJ:+7Gܰ@ku03]cEײU@Y.I+MwQ^C u5:Hc<3h's?yL~ً,61(I@J{/D12UECo՜Q@,{ 5zаuGN3_Ov]H1bMStB)C,`{rsYަ\bT?6% faT@iqj|Gь &Q,;\tyc*6)s'!Qg\W,Ȏ}x)hBՁS9T5ot&&͚U⸄xCԎ }y81Y҇FL5]T U4jg[:r֡Lrw]+?I9'i4<"a\zJ[-bSWxg1M&~osƉBX~+j ɦ{J{-Ov}I}f-Y0nk k;YptUiս; <߽ -_k0-Snفi]=[}ȊU:?:C ZSP5M/.Bi;844X%3jRP:hqRwہ\0^Jz-S#W2U󖉡+~8V8<19JyV&r];A8!-}l R-7!Φin-ec4(m$^k['p;1:1onG R3Mi ЋGPTe\_B"{&#mqkgڿ46HH`q\9*@#[=zѰW8a4˝]q**vmR7 o "PbO.eE8KsX繀MzfU!ҊedN\vА>eD5ʑVCuOEfG\j̤&ɼ_:uٺ@_Wn]^ނ7* /וƳTw.8 ˬ/-_X]s;sNº#M!|M4Һ `Lܹ/fcu`XgYe;K~$= UX7˂.5+jakz"A]VƏƟ$< asoYX-(#y]&W<<ëfZPyط̵GomuvOS߲+̂լb[aAel؇ 炜sU{ :m˸&V<0iV3dmUFOoCL\yMzE✖n!vރfոu;тVVzG簝!7.[רĆguZ|A^L _(6ثM$Z]m!]q^ >*Cv\-ţ1MfҸTzYzxrXD)ѺslW Ex$(1[C2s?|7B0>6_)Kh$1P9xG(ŴٴSTŶf* Rݨ2u*t tNͣV\/qm”zyw'YsyNzu϶| ݫ><ץDdrv r> E܋')4AQfH.g:? ( {~?[D춑և.`jD/IC#鯷l<<.l۔Uss=\Ǫo?Uat?DzdOK]eM9;_ѤKSG$K\9ilԑ`"yHSGE : fzr)>FFgm ^Ceg*57ēVznFB>ϬwP/q3:4ˬFuVq߿CBZkN8d)9&[r (dh$N%>Y5Lyc \ᨇ NVkfi)Z!6]. 2{W!~x.VjDkcEcs c| V8p /Ru%uN] ,11(=[#qh%mΖykT2}뻩z}gIBvihBtkg;֗oo޲^/Ķ1]p +I|$Հf|{BZ?$-|-gm;_b`E@Bڄ,3jju ky{۽+h;<'XWh=6kۯ<~qy%||z6y rYr_T KRʪze5f`q]jb`$%bQ8k)FA=eװJ9]|+6]Щ)sSYTcfZ>k _ƛذK>$|_iŐvtACk;['"|dJŎ0ܵ:u:%/x(i',)*{1Ef#K`/bv9y> endobj 94 0 obj << /Length1 2275 /Length2 19639 /Length3 0 /Length 20972 /Filter /FlateDecode >> stream xڌT%z gk2ٶmnM5qddMԤɶmcv΃9zZ׍ߎDYAd 9202TYl̬֮v(4. 9M\e&v  `ef!ș nnmP`Ȃ.b G/gkK+46p:[8L\Lj 3kruueb`4wa9[ <]@;a=_(V.,\=Lw xOP(9e,/z{`ado{og33%Pgtt8ehbz7q731}7r 鹘9[;0XE0]p0\]Ohv/Mo`a`n s7G& k'7MEd@W333zY1^/;?G#puvS`nm 0ZZ; .Z {,~}Av^/8ݿW'* 03X9,- Re2 Ͽ87?<>fP2@g9>]_QV$fgo~ pZje\MCmv+[Yk3v@e_ }`G~pfVSJ8:.Lսfu:}VBS;z>ZzJXE,f@Bthe0ܓMB}>_>l03rCw|͑{Wpؾ1a -SWyqf(unDܵT*|2 lFR/b-~Bv^6<5+4Zb9UHvN"FDBzxnn5:i>Wxls~iW ᢔ&% Qt= oJv.NbUK]q{كLFpQW?w`A:@Mckm=5R&j E2$Q`+(}X66]~1{O#* .d~; j]:*"iMC~cMLpd`J SpDPPJ&_H6m%HIEv ?什~8P3gҷ)O\x;Us$`85z iH,B?Ù|查|&K[,j#bOkeL,g YDD,AU$S伥$GW prߪ@ X "YD,̥pio-g kVk9p BxBW\؈F#9zIWܞ,W`K|i?Xٞ5ӱ]+j'np^?Q;77+e4UU=cE3~T}P\>݇s7qNi0 O21K}JGqEhGjH$\LWT* k%B*UyZ3SF𱼉!gCx8:yߏ'72OJahZv';FPڃ6IB[ۅ}XɺPO\" ݦ7 J'cVsE}%۹qB-VOn'ymMQSN\]EOůA,͵MVPY:EHj W$ o B9\玥5$rI0ڥe)tuU} UK̳cώ:%Rl ںrTȾGQk6~Ŕy18'7a=;ˮBY5HSFMTi 7FXH]_p"5Y6$L<)\$X*X0(Cg:9ȫ/Hcn:EǸ6d7΀95mw&pJ,ǹLY`ĉ?ؼҶP'zu_V ߚǣ$av V4Ej~פZQXƣ= \+>SEn.lk,kSbB @So!u4|RQ){ÚQIwh7} aRɍG9{\ӧԸv;j;ά%өUa͗vO<[NM#xC< N8؊޹x1˜# ʂ#xe_)D, 68dJ*5\+(ň&MQ7S-i-MQv1^ҙM{E g#x1^xZueq(BrgcW[`5H3VZ}]E%M#!󝏎Q]gK pCrt  7R wD"HvYW~o/>^ {OR ZsCb=s|niX0Ej@ 7904.vY 9CXck0] 7؄bL\5x4_~L]#5 BUD8fky)x|:mk_Qnv/F0FKGWd1 < ,1Br[ 6I6;eyh0p* "%^“Fba LCBJVvR;o=V3ZՐ%ӷ]RoCZݴLE^eQ*5჉*I]e+[s|㠂P5 :f9Uptis'z΅:7:N@֚Hw :aʏcy'WQrAQT *c2;oəz%4\=9VcYH5x:T3&]?Ի/gӘ esᨓjs'* }$֗ m3L׺>aW-hyGw:__icOfI%py풄wu頻I"Pz7rs4C##1cqrFnj〸ab颜jN0[56A) 秌zGtc^%AěFޕCaBYgZ` ZoúMIf p-=I`v%u >]|Hx''g0?4FH&~FZ]]*n^ٓ=@:$V빞oYhMMcy~SZt=KXک=O +lU ץX*(z[ܣ R.MĪ<^4 x6]Z%=&v=ruxk9~/cEbĴT6<1l.'>0P3FzxuU`qQwd4.8vmWEhyd!h5lCeKO}_'NKD9=?:W~8ƅPxGdwJF{]5X3ֲDLi:l4lX'@W;y1(~ S|TaN7]|eODA5QD KCIv pDA]&{GE9.p`/MšItrņ*vh _=%0Id#pݒoxrfUM'DO#2j0,wV(#z*Ve: ?9zpuJg'x?@NaGsįOR#g "fu5Kۄm`9c}\IFc\M\L"_JXLHzg77 m˘ IS&A;qcfI~YS{eR!Bպ{1MmFyt\u&zrpQ6Ti}* Ibm-ۆ&hCĀy ~H%7b|acq[M(+d䋰eTbVBij/-՝ Y& i"fv -z˯0`d:>6lvT2v9/5$Ϲ7]C'>y0Ugc& VJY3*ݼVȝ/W,̜8:>f=whWYJ_+,SW %5_&`6zx7/zC2u)j/t!Oxon F{Q(o5`>jǔff #ޞ^ zmRe<θyq gDUoYz&JCҹ?l0Q%a${߰R5=u!I\nϢ̒NJ@Lxp꧔-wg36 :Vw/&Nu onyF/BD\? 3cl5 6[mQ+5&LI%Cj!_\&akEA-1ѢMR;v3^ЛAnv/ U~B5~PgI)k<h9Bj,x}D";Ą){R$fzP)?bׯuL4lڮCKL*-JnUdz`>)#$@䙜 89A2f>C/Xs/*C%!t˭k Rb V+#QXzɜ4n Gզ GV7v!mVXѼt 'y 63U]a| M_UCl6DsI顏x*?BonQ-uE~i$bIq2&ID7)JǒQ3edBʩEY${~/ $+sת|B[)>V{_(l_\SJ~n\`Ðԩj*A;XU@aAXІ_xG5\m>o&pTS\v7YoX9bO}@d"5?>Qُ:tUvl,N=EQp&/ H YmMe"*Kmϓ)Xm2El,PLBg͵.id^ j*[Z-C'K8pԈz8!NR(/B嵣wL@bjҜgG6N^SO-O{}nk"J'⧬Lz GMvTTC=|Cl\Fa_kL;9q4xUJj8x2 ^cpa/;qZ7T7mx_J[͔"\ > k B!<l}P{f"c˖}av)L[,%쾸M&BZ$. rB bF`ſSLΟ%:*jIShA qg6-$i5M_l=dB~oCpːAڙً$JdկQN+݁*DpGOe&|>X*QMzೌ~Zo>ChhܚEP9@j7J CunoeyK,hL͏URhw-fcפɔ^=3sjn/ITep-*[RׄxOLu:ֿzؙ~c)nHiJA8O"U -Nu6LQafͬSW= 'MjLi ݨSQ,؛˃]>2+a^6"AmNYqrZѪkss~QU=k=i2E+]6W$5vsM4{A0sl8VЌH8ߓS~VG^JCPPhth8Z46<\>ilW|tX(iU㿳vY4^)0_U.HT6D2F}BoZs}i=YaSGbyRVmLe:3\O ^]7߂it[.Q( lűb~Hv" :/q}\./՞{_hLU;r<ٵcb%bb]\G_Eԗ NZBU([Lo&*8HQpd8%uZ}h1]Ō5u3U3*-8byE_fs\D}UY4$)eb^ l;XҌ;Kzdt(:ym{H!ncҹ k.d=T#3L`% {fҮ4FX>g8V)2pLX[ /#1ӵ/3vaɡkHچ*sFvQ#t8y X;ZÙ\A2>-j+٠-J_i;4Ibެe܌ `e N9ILx]Sa/TE ?( }~`GZTFQbI#y 91T5U ch5ŭLs*!/AC!\hh=0@~M_?o"uol'$-vJt VK-M,(r16lPe>\vC2G![ J26'>?sHuk$iWe-صAD.%0Nb'Dr)ISZnD+"@+En6L`B8`6 Ԕpf±ɝ:]+@:sR3$<-‘ w-lħZ"o FxelVPhX9i){aTx]ڒ4(L>}`]f/9RYoa|W&Jܺ4Jpy_nG6H?*~;^뭲O-J T/,_PE@ ijWRMUfTr|2t"2H#1a ~^px>@(VoFl!Ra ̷,`rrDI]sMVzH^1xб:ǿY9+!k904FZ+r6B rfAg>pDdu0$延 Ef){Zg[tD"B hq1&y>?I.]RzhBHCqYnZ_+ e3%6Frdu򬞗E )GEw-@ sl?}:O^JԽXzHf,1_z@1Ђs;u!n\józ^!F2Y)q̔K&we1Kf65q~nkHJSTR!\S<S(b(\؝s? rW-fFR ڹ,,\-$}~Fnpy1RԌd1o,[DzeX|rj<6ʢUZ`n]$f~xmu"bQfG{:$U U=|<DWrY;:`g٘Iyrp/z-6Y(0`_2Te "'ŀ6{1w|3.:uTv8>HA@Qc@( AĶ5g{krq`={:Mߓ}:6rMCזζdzNۯ$]ĕH/yRʶ'PxbyQ3㍨>z? J?=g9F(˫ry)obiecHA=Hˣoo?C#_ '66 +eJ/QRg}Gy@$),H++؅͢THqEv #ݔQ(i.&ֲGC[q[PɦX_$M(=},._jZߊ%*n9Y/fUa#.3I9G4Sȧ8*ֶ.Vr]+W+Fz߆v>[ nz\#Ng}WSVbT/"C7xt_}TK0 623WV[O( f9MvC+R D ?=^#A{$ $>ef Ta6)H}Y.=E *B<aBa_dQi/B!p3\r7CO+\:b#t>-b*7\f)}3ɵbpK34L՜}_Fj~+!苷,|:{`^.THNRج7td'iZH '|RirCT ã.oN1*QX׋8@Jw2 u$nn/Ċȍdfm/ *xdX=`֡t;oQ1d$Xl[q4(>]Vl ܣ,ɖt a@cKyi$LJH% 5 p_OZ5jO^ɉǥ N;-&@\("?xEAzlqʑɵtHP,.G{)iàg#[ЇS)AA >7$q7o_!B8b4yPCx[!Y];x@|d05Ĩ(Sk ,}攒0z>Ud0>A5z̜T(ѠU?/}G+txRfcjl _{U߉\y^^Gn? n֨~y^C^ :dy, >v:C}ԏi7'1m+>@=o|D0֚=H$U^&`#(! Lֹ~r P{|F~$}e3-q"! D zB%Ù$iIzFp̚Bzokny ۴,q~\X顈L:$g{Al[У'd6cZN࢐1=VO a֙.U^}ss:9b|؏[Mt/tf93[~\hpu*VKQ9x*zi1G6mLs~Xk۵mVZ&_p?zYn ѭ"j"HS̢'#ӓ "Ht JWd}1-kGE28wW8HU͌..&00H5͙ڕ kK~ oSFbwWnz!^ YtiMcz!^+u'wF q6SY`89~7Uz25AyWJ7/LhS jkljsD᱙r@.aO|*}K~Lk9J>|\C}FCVW7#d$b.wD}h`v0~&\H27aodE?Qnie0 ,WJMEI~0pdݪ&[o(ؔqdd ݵ۲.J}oú&R>rʱRYI}%j1䃿o^7-tmT1)^=XWn{?V}}btBT]7f3}aT8+2?5;{NAStboI =FAƦDgyL ,=GĚ4SE&qD/$4cx ~w+&&|R'@]Wϼ؉')O,ɩ(Ƿה仟fW_?N*O濉~Lu}Na dgc7cT430`!q<J&ہrnٔ܆cAddki9?5"SL-.T}hy̘ J0D>D5EX#m 9^פ|*V+v@%,amCyNx',Ӓ(7Mp\Fl ORomy!kkti O67醍3{8 YanY&`Jt\ho1Q?'sE T {*KFhdN\Z|C7+Cde_W𢡄OJmN؊s4F `9{$a:")v:oiZzsϛڶϔQwjtDTƠ/vSԓK0``KfW x`Kh-t4l7۵%-Z1y-2#D'wȮ/fGԘEvX#s$ ",3A$X0 lJC+Pv$C!iU?H@@!w}Zh =&rPYնmQb-5{d,7Ч=G4ȖZoCL%}I?63WhZd>ox1ʟ"YIQB yZm9hT!bEM٪0NF9yfcȼQ} u z/T !Kw:]l][(f)|W C$yHƜ<~BLf&j' y[,yT`Yy7́  vpuF+I,Rj>6qw@⴨2 ߍ!Vz: Ş$:?Q# )bV@U\hjNJ1voH03 !Kg2#ȅPg&-ՙ4*)\޲[v38a#sq>w-&-*nIgb̊+,hch(v>N˧Gٌ=dԟ/*mN_D$$پ$GVQpnߜU"$:fHW3gE {i+;?.OzK6.[Zn9"bgONd57]ztI߇,=+ٱy Kܮe590ى|~\|G{av ;BgZ<yF)NƚQq/'%o-+`=?}G?VxFl*c^dˠA&zT~L(%Z)="Y?LpJO>J2gmRw^Kf+A`gRPVb2ae %ow=a5Ʒ"К_fTl|d`@=;b:_hbs֊3{h?w??rݖ5U'_elS}VMeo(cK"Tc*{F o/*Ҵ~ QHIJ ؜Ÿ^ۍMNMR=-W ݶ{|v? =*Vҕ6eB-6ZVPͫSS˫zמ㿡;^m=xZt#$_;g8.qnO֋>c(1iYKV^DM#D0>ˎ!kuRb[-]:O;PJ PhI'lז)un+%v]]ȸ<-br#ͨDZpezH:Y>yXMڒ|X@P-pN츨@l&gr') 2~P}.樃3# )9OH9V$g/,faт x#x {Ð#F՚p<;>)YhypVUfG8ƀ7ЪQbڦ=سqM$A3XJ3q,y\|dFH *x 7%'~U6=«jBq\6ncϏWZwe[W?VQcYK(i|dq0]aAyWX=:%6G e_XڡEu?*NԢA(hlpzG$L|W?'i_H]Ľ.`̩my@)6AәcR P{ fW&?RV/TYaN։q@t}K!|G MZBí ē(l`sb@P lWn"u-# ѯQ<<{ң. ME 5(HjG-~uiR*,%*ʳ:!uu;QjOO 98*CNBaAo 9Y1.31|YSXQ ny&lgEXR#:|Be~hLS(#eaIeR'faVnʵZmg]eL}jVHfђq@6-]|;閈7~Էo@!(n-xele '4[ҹT2#Sĕ|CBt|tpE! gRij ̇>*bWdbOBW^Wb%(b!zǧ Έ_^_M,FO%VbɵOѧ[ӳ ^e͜+B-M {`[hS0U OmHQH+z&ikGSkȥD&Li):ܪ *ehpm 0F 5Be,uȬ**4 8|sR0̞%ĺ7 n'13`$lʞivn>N8ղρR#`{%_&"3K't-l3%λiC>D4/{orьfIrOKUN͕ډ6qʊEQ{Kȇc?+NnWѫٯُݮw>FSe٫o Jx|_IAPbǝȴ?5YAr钻+ݬ JL]~.bαڬzXAV)o' %`h0ڪe$TY 5įˤ*<m ׋_ն=ieN8U{]ꚳq.zӬt?;qCʚN,WS$Am[3hm[ͬL)QW@ 7ڷf4:|& l<79I+h:!*'pf1.?>PM3l9ǹZzB|< a=\)8#|"Q y]hTc7$u?սEʋTV3[>V@Y[i7=^+xR[aBcp[r$q+-.&š,?/@&-'hޓ&#ѯrrgE2xOꞨV^V/>/ѷNIO=+".^QlYyԋҵ)JH͉Mq->׿6YVw&@`2]D5Jٸo $O ֽί!nr i: B.}&aXy\;H jĤ"4iXA* <?'^|}*)h jstf 4o%!Z}2׉5{/걞is+87HbQQ5050l6WNCr{c+\X7>B@h-5/'yCJD )-heX]Y[ !"VU}b˥Q=n\h/m7զ}VPFJI3YnpifWjFuit+$F,f(8pEȼ5 !Bm1MO\ɜPJ5TACKܙ)V%/JYpFU@Y#l)l`k}IVL 40L;cLEYyJŋ Xtb5aBh@3!I;ƝTFT0vz/kZI=p(1L1KUihd7 =%M|t*n̛qy?t6AHDyJw[&n5(5x ]0KBŀVaAįkFm\;({'FPT.)DRF _^$rպOX &Ew'FZ %-3 c@f3`:?*A/"(c2(qo~j?獉A*RY%QJp":Z/~'N.9pÎڞ< 4SYͿ.ZYτe cb32Qc!Wh^m>% sx|?G't\ZAE;9,d ;y̒${}&IV5_cѶ<$@#-Q.qw'Us%JH|rjAmqKi/ͼyOJRZܳ_gr!Z = endstream endobj 95 0 obj << /Type /FontDescriptor /FontName /XBJAWD+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/H/L/M/N/P/R/S/T/U/W/X/a/b/c/colon/comma/d/e/eight/equal/f/ff/fi/five/four/g/h/i/j/k/l/m/n/nine/o/one/p/period/question/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) /FontFile 94 0 R >> endobj 96 0 obj << /Length1 1528 /Length2 7362 /Length3 0 /Length 8383 /Filter /FlateDecode >> stream xڍT}6NHHH"KwԒIJ,KI4! %tH"" !‡>={f]b74Ru@C0P@  &2aHP0ڧ\ *b@@$Z9HԝKFÜ1m~B҂nP4 FguG0FB`PUp`Pr""^^^`7wa$IO8@Pw(EvL ` sotxP@(p``"? k6Qa ; P`7 p,FF8|'_~ R5 E00/"\OY᠎ts"0$ΧCC!cf]H/_# J{ r"$@BE~7FAE(5 ?zG0h"8 = }}h`֞(ϛ+bjy_MWOԐX@HLR +#?ku6uHg7 ϿT>ZPB'_Uoiyü0  pdV!wPs蟛uyoTU1ܵ`X! qSBuy8 5D~}kB@Į z=q!:wKMk$`4M$WzA#5=#MF$"\- *0e"LIi ?Ӂ>P @g[bi$D>ԥ:RKhצy:㜜("+x]5era]Xe罹Zd~t}/>2Q, ]+ﱇ aW6pV}ҋqXӘGA&bXn<>q;wM7QsxXٔ1FNFKcܾj۩3E)Ugm^M})z 7ר/#>Ә{Inؓ%..cuI7ٻ $ 5 Rm"^j 3mJ [27j'zsH~ZlQI^R6J˔K|!fC-+:#MXf,<j8uXVIܟ ]zfĎ0X.CRx"V[A&Y0qԩSIևĚ'Cߑm/aovg_ A 56to>RҺnNLj._λb–74,Q݊? c$iQϾ6rMOQs[yRV2_WPatTÅ Nl |{8wJAf8{+/cތ9Ql 3Nf8MSn/RjfO#m暙XW ~3[sw:^XLf4}q)_.&,O&K;gHX-׽M`e\4=Xq7}m)f}[L ݑn\{z-Kpus︀9&?_PpATOmPZZ Q}D@X0M+.ti R+] ޤ;Š_#lv9<7 jTT,ri6u MY6bUϚoLr`l;ɦ!z,< Z"Vj|IN.n(ʴUȧHI.lHch|[6H8iZG;#uo!$&M4mEoLފ:f/gԉIۨkGXC=Dt;s;.e& ##/mq'KVR"xI'YGZS.އ&<~&q\(^ ed9:aq8q$jdO8K*&8t1*,Sؓ"ԞP>QZGЗqUZy mIKU+ϗIQLMN8_'J2~z/`oBV[:BJ4+dɫYYU]]ʯZP8LF`yY2^?V y_r ,L,+r[Q{wsj?|p"=2U\QH"tw'eNY\N3w0ͬKc}-a r_׫@Ĺ}RgCwi}ԽRy3$(z@QV#B\*M6RHq#K"d6's}zÓwmA/~6o43U_`nWY"WyǿK|NUPjV%We=s'xt0riL0oAؼn 6)̀Ȍ:<  ٭-^ΨP|ƃZI[ܽ͝N*DX_Sn;Tr%?8춧v`&UB>5\4`VS6+z Q Mî T:5i^)5A9it?|iDuI(ўr{)wWkFbX>tۊZ'zվEdI*߬fۢ?P4#|oAM af|W@Zemݍjܺ,(zz EmҖ4 StD(O`yeDxctrsqꤢo0FRȯ~8̺YP"۾ӭ˾z4T[B*Ahnm/+@c̉a5x6&{QYovf)ܚxAJS2iϥ8oTy.Մqļ#+`q@8FX%{Qm!xCҐHWa![J"c%ېYq:hZNSw4' ?jz5$Ng Բe9}{1}A#ULaĞNgk!ќI<@2¢`@E" t@]N_,➹ vdTs5Z9=։ }^Q0Dx^#qNӄZl S ~م?:%oDgq1O~UBN$9$֦hdwL Y4YzūWM߂)m8 /2u?q,+首>[”Dx|; Υeۺ-MK䈖X4j}h<2'bv*98}E3JZs^bGǠgtrǷ>I£3s2ʢB?1ˆw(}~yY:ၚG#W@/7`J[bq,Џf[ۇl/WWID~Xѳx"T 6Η#S@(~'G^h`U@)˶l /RyJeA _^M]d t bYDI~;;CK896Q#:t}v|X*=NDFLF53V,dYSJ(gF$(i7R(*2-/$;4B(KFFf$+)->aK18yoDZ"Lu3 GP.Zay,䈧W9l|ahYK2XFAcXc'K<"=Z gR0.,1ڰ ayxI9a7 Mdno )1[6z!EIx {P78S:I0, !MWG4+{4O o p]ݝ&ff*mr ^f):RE:.&`# *֋l')=6fIuʫDe-X>WUC>]ђ"顥8\bOJʡLe{\v߿t$1 DlGn:(>c@ę͒A%\8W~)+ʬpSͽ2b/F }60yT"dA(0@Mg̺#|9@5G Lro/"Z&H45bjQDhCF7 7piֆd|YMg0Vі%\2jI l+ZBGg#765Y923hT k[IưT}~{)#Xc["|Lw/-x!s[Hiƻv \co+N]$J>SʫDE; >S?iK-ޓ75o<ᾁ{b*qw`hݛK3hQMy#:=U Iwas"}5Mv7):PPi4]f؅8N˧p(J=5cH"C>lCuB8dXo'](43i\dk;=2\Fgb o&rk˗:JV/Qt l7-HG=["8? H:w|ivimT^x ǧ=۽Ⱦ* 5m2c*cίq=٫vT}l7\xkVV|B^ [uӷ8+Y,:P JQyz%mbȇxh[qW*7_#u7m/?! u0)Pw 2ʶRxIb{[%Z8z|ŝ-(ʳpYA)YuW TMMӴ*=7XYHop^18,xkf i3(.'}_ZocZEaYSVJ%캿(!Q_7T12}6UV&cA7(]䋥%5`_,kIA{&yG`HQ*Û!㌢(;Q10?J}_Vz5uk(zy~/'^rjiVgsR#>ޡMz]jkmhGS #Bs)OB!$VЦۼwɀZՌ: r"q{DQ~ωr %].\0?~JR;e`R?90Ž3[(Ys\gxpfoinl'٩̌jf?Ĉ~~BЙi#/^fV7i~pV;lF>ZqNQslT}jX` NL*ԝ6J;br?k IW$-1B=PG]ns$Ώpn:gb.S[YeהWx3Y2? c'w ?ٍ`=bF}3΅ztU>{Ccn nA/5"G?>I}e?uX0mmW3YnC;#/9Eˊd-9g> "%PxCd*ؗ2.nhH72AKt&Q*?q¬X&ή"'f ƾ-3-ERF|~ҘޮҚJg%Wo!~YEɷJ8bu+)id k endstream endobj 97 0 obj << /Type /FontDescriptor /FontName /VAZKBJ+CMR12 /Flags 4 /FontBBox [-34 -251 988 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/A/comma/i/l/nine/one/p/r/two/zero) /FontFile 96 0 R >> endobj 98 0 obj << /Length1 1454 /Length2 6315 /Length3 0 /Length 7296 /Filter /FlateDecode >> stream xڍxT6"%H]"1L0!%Ҡ4JJ %%Z߷fg_wk׽gp )CPP #$* Z@0(Fe \P4U(@> DDRҲ@ @ ! Py!}a Es}=Nl`>p! 3 [ BLQ`8w1wYoooaZ'c&P4  0AP&9LQ07 8DcC<[`0t"rAp¢J'W"8w0 FpG@z r!(l< Gh(@Xpw Z G(+ ՑUAڟ ƞȟ"QHW08E.b?jBƜ$PFJJR}E~0u6Q4b? /( O?WĢ8BHgP_kl=> V~׿l n2|Bb2!) @TTT -- gF GFm$ &GƆ (>PƾwOix"9?vgO v6Q A%ևBnmƀ3t\HTB(Gk}#8n_6 /vػmo;Y FPLR c]IE 8@D`CXʃWcE:q]/(=@`( ,lၝߺ P`uBc+]1s58@2dWFM0>*?t9S޿r(T4 brΊ]f\ [ߧH46}O[},"q'4yxMSEMovɎ"bDv] xt0mCBA a n4Z)7CĦwO?e7ȒrSo'OƖV)!㰦 GD)9IMmH㤅ȣg|DLNb#n{59|Sn<`5үwHAMabsHagX3BQwxφaKeÅi/{zA?0;߽}2zekY-L Zb8:ivHPJl^JV?(4#.Ow'c@;IzQ~Nk wl-t(qMEi8~){:( U=.ExfQ |[ gE0r v&5mܢ6(#t ٵo?y} {̌\NAO%Urꙛֿ~5ojT gta&,ƤjY*W<]k`_XA6LnjZj+Ӑ~K.=^~䝂`zyu}oS&^&xjČd3Jt#䝮Tt 0ĖnUCB.uD{Hϕ|&=-n(鰹v_wr Iy̺h_׫ l-z\EJ{9ZQiTwxu,{ p6r8+4)EH{_2Ek)JgĚm6܁E|ˢ[ "Ik3"oDh\=>>GOQ9;Q쟓1;xr`-Q=]^|6Lv'$'5ݘK WCyJsԊwF(]qI=nN}T{[GwI/ЭDr6B@Ǹ5&VB;M9䒶3.=pLc%rT)K9fDOs':8"*mEƄc g2ɮ]UAȡƙUa8\oU;ַ%ta5ݠ\ۓmYA#GL"-ۙB*aW}9hL)>ٍWgRgJenwlxͳɸR&5i1 ]0ODּsTU /f߮J)51UgDۥnffb8"/ IF"k]2ݙxy9n@,ii}wr\A%oFX{ia5bj{+!B 3IDi%ƴbފ7:47jHqT I'τME/x7Z-fiV ta̖4~59y$Fe Q~"zEƪ]c" Twocgzr<]CzqEy#U'U?uUdc/f4o| V&ʺp]εD* a@սn*X;ݥ .f MnV:3̿l˽&߾i,҇ jKώ/GgxLj?,BԚR $;p{W;w`|xYuqswҺs*IT,P:4_]v$K *1VJu~N1OPm83.qo =EI6vz/jGM&<hgD"6s7RhԖ0GCr{3p` lÄT\I_a,c|d)6+);VWƹ.&bF4z"iTii1àuުG z"7s;&v km7a_뗳< g Hi0pZOV_;reǖXac 2ܠT9Vv` ET:]P+%f{ǣʬ|7O'n6̚uS$/鍯ة+lewkaBl}yEl ]ןYW|PdM֒QVr$E6՚~ʭVIFrf%1/tn< Oq*Ue\G>FW6=QzWi'Y٣|_qy||^(^xQ4C{'$x<&“cAiFfWWՠnvT )s:;] #L^~Jvm{!`Ib5O_^J5rUnmƫJ^jz8QHr&Egs%5ue׬ژSKZTKﵹB)__~(F~ϳ7d4Oaq#Md6D?x¶:DRϓ E~y_?xWvTxN}/GM7)rZ)>߬&0: p0 PzS-*?-,;\y# X X[@dH,!sbj0t:%؃IO&057ٔ~6Vup-- .yKwP%[2qhL_20ƍ"9 G SUg3_èSPK?E;lyS4E5{Uq}HBv(s\U{SRFX@1y|"nVRUQsq ^s!n5m'Z~V] ]y}&"qM,Q%]ayQw6,_`QQ%yn(bk?c]ۜ >+!c~+窉ޟU ]a˞0Q{jJjuGn4Mp>36wR|B}CWkFr>7iGĆzXT@y?w[f69ۃ0(nf9KJ5Ao!gVbByמ#ꉣ+(yD)u)jlayNJ޶2࠽xQo;lv^57 kYŮy]l,_8>ͻf;:ˉYr̂(rTOT>PHU|_ Zr`û*ҕvnC|7DB"Nύ8=c9xo;J}|PTJf&݌$4?4V<à1 Ѩ#ovқK(.6u{sWb!\NF ÜɆ2aM6Ls~W#9&17齟Λ8qv`;K&A35R) <8cV檵 Hѻ6n>-)i:3XJJ嬩}4l>j|ʢyҪIV=LnNPIw)YGKs L,X}NȦwф]YZ%M5Ok1c篪aU-pEqS/FWMK+H81# hOA1@0)g ( W5{'RU YTN5fձj*&kɀH57\FW n)x3RAҋ9!t3|k[ M`WOOW2d"@XiGiu;XɗA]z{: ]1uEN;&0nqP%CcӎDJ&t, endstream endobj 99 0 obj << /Type /FontDescriptor /FontName /LOWLTO+CMSY10 /Flags 4 /FontBBox [-29 -960 1116 775] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet (/backslash/braceleft/braceright) /FontFile 98 0 R >> endobj 100 0 obj << /Length1 1822 /Length2 13400 /Length3 0 /Length 14549 /Filter /FlateDecode >> stream xڍP$pwwwwHpXkp $xp= ~rޢ =ݳ *2U &1sGS ) `e`feeGҴcGŐpl&7@`gge4q6(1 $* G'OkK+>ft6>>?b@k3 hhfbp4='lbbvtc[@ hd=ҘV֠`w `gmt:]o 9E/_F17$v3`amH+2=?&v Ƿx7k;7ŸG7HL*> F?ҼY\!q>Ik[=Y\[Gw ks?0wubrvvIy3!c\3af򇀦O'|oe}-oA&n@o"$66` v@'h~kGַc/ 3wt(i3]o&.;+yہTU+#"޺B ڿ׆ ʎo 3\fo?/!f,O$jg/o;E`Q/}8,7?MAgz _ha/ہ,]]F- ÿ[:B7G_tNf݀dz޶n 6o9[.sOf?!-9 U3cDBّ"pS ȋZٍ:b/~mc5\I[k0fz8)*tt|0p0;>~%:M|k6@FGm)iu"ZÃUaEHA9>FQ$̘iVW]U25H"SRb5b0QGao;GyӋ:qc^2iPPW,|F_9s, jʘߒH254GDQ)IN9Pښ驟(Sȗ$&~r>YhM8ܜ#Bx pip7=Bo׋>ϱhg9lמK&m& ":8fCAlìCKe;m`Y|IJCSw.;z9^ 䤴q%"2Pd;p' 1̓YAnv#ߵ^9u)GH2<_떎vβ4q‘PhI5Kb*ve|8-D#NR\DGIɎ1d~E6>E8E;<1@Y]Z"z /@ WK!a򴹶8 G!|y _\3vp'4?Xq WZg%ȴ%6yg]z 2L-J+ ƿQ"~RkR;ױXm2[ZU!rMk+8`vt TwPv 1q3vȬ O6eD $Շ'{{Ҧ:7jv*r=G?\Qz G"GAddg!?@ǹ/!S6]])↏#?MwFRc E%)4μJ~*(΁?`.L<sעV7Ȣ=k^Y"[yC@$w~B,w!v]mETaԁ$1BϯԲ-a -d,1Ҵ,RYvK3$pՔ DЊٰsG#}3`b~cdZEv^:> XWV/q nAbU 8`nm۫"ɨż CEޟƆ5ڻЌye)TcqYÃ)Ivf6- ~=!;v63x,zozl֮q1h!Δ^&HgՄw_ONB0[BB0q/S fb.1.ˆ֗Gyﴸ>6M"wM\7_Dc6BJ=HAuޚ58䪯u݄;yZkrj;_#_Q2䵹c6SO\Gxt)_:U[vt޴\{0RL --uQ+b+;y5{:FlTl֓Ē{B|njJVfae C䰏>Jݐ^;7 =<±1r=Zb ;]57a.%/-5Ʋ5ƢGĹֽ%@vCUm D݅x} [T"0ܰnZ5:@}$]/=#X+QG:@W, r#O-SE$f9{W+7~y@ $+4ERdfdz՗W\[E5Nj)S2fc7'>EPϊ8nbV\9|¼Gbl#whU9*(bn""Q -PMڶ !;7ӵhšjE eTni5~2y^Hheu"rŜ~œ"e}-XsAQ#Պ3M`1./ iRuK|B}~HQͦYRdp\9DlTYmxw"{F%;`ooB 9Ojb ]]wSBag슜EPѼ8!ge߶n ===i6z<\6?7chV}fu3[SF*]IB"di aX߳u/ׄLGpIi‰u9T.0:Ŵo^bLk_u _@H}wϕ=U7]h9{O.\.?8v_N|XSz}b8:(nI)(vt'i}y7[F$z9}'R'QFOnb9QP0rZ}A ;B +؝iև]S`~ M)QzBP@SV+edd$l<=#3ཷ!*ODrdƖDlۮW# o;&|^:qs*X]t}8v:*g;D;JC:52N"d7֏x֡Z[^Q!*F4$(ɣNeRWmO0$fq3,+v+Vp"踋]>:2qȺaԴ h|# Lk"-t|~ZCo-/ TBUwLZ LW2gPU`g1VtzI:l݊LOϧ# -|ů_t0nECV+M rx32 F{1埭WMf&U o=快wBBCP ZH TL9| 8ͷMvup&9J /C>5i:X"<-l*X#=N%ejKE6e/%yfZ:?tĶ]$f Z\Ap|;KSD*~?gi>A23d湔vsŁ|S̨5g5A8EaRd/4@;93]{&cBw\ V}L4X(4b/=E@r5|$Uk#=nn *Ҩuʌ@@/6j{. p!v ̍MIZT:z5v]_R5v,]} >r9Vc(R9\A|x H*%[g! >4 %[&T׉<-(P @nɼS\^:%p$F k ,>^=':Ine"E7#+&Id 됒]?J<mLu*<DZ]E%قE۳.{Lf>/)(ZF_~PPv] |?$s<${"R{8 1%SdG)dYm? Hc34C#`J+3zwmmXnޅs.Qek7|b4OGq/lX0;t0N[;zEOkQzߣ.nw)L 0Jzr'йብgKCץCn`JAeY{_䯦΋ivbuDi=0 _e!!]^ ƿ\Jn"Mçd$  ֬Ua\H:AK>Yک 5^P̩g< :0R]E\ښ1lrlFSbƆ>Qv%n96Za(nu#)ųCe"708Bf6Vƕ qYG&\'iVvؽ `$:9'| ^qa Q N&\\ZIlU7ܽZAzW6!)6;h l:FCquœjD RCG}|M Raq^lG5wXd6:,A}u ײu`{a y\|,$#HaW5H7EQ ByʾuBŇ[S#uawpyic9I(2a@p ~]=y-<=+ͷ,BX]}lLzjnǂW_b8E Dl9XgaH52shCxJrj(p> k5 g Y!:y'JXfKljh?VwqӁuSG|n`|rPhj0[fᢙ%b_oG(S|d4t=}m/9},ߏәh-p)> ڎ-YwZ$sТ(S䁽Z>z}UWe}o|U.h7t5aRuM "~}àOdo$=^YIȝt;;6mXVq`T})dX4|gz9W@O%ƠDaND 'H Í~vY>!:iʐ*A?){l%Ub[:]a`̦.#uC ɳ(e丞7B?XKq^r~G  Dg;~ T IO#ߕhvW >EeEr$7N=Ut=m˱.I@b R2zxϫpi}{KB q [Jnq́xĽ~w-@IN yzX[dg>ԕnm(ÀftisQhڻΞg%rd 6?՟ƕE|'?_Thz<{ CpX5tPN!h́2d*: CxgζOC) _%62$c-tcRJ[QQ 1  @/G3j?Zńgh%ܓH톚9fY̊j Ni E\ϊ!u>Anv!ϐ;*~njfH eh-p)z_ʈ(F7k=(•-bw8wqZHE#Dz$3P [2"|4F dl+^3S PGt]Pr}N^_`:qu{C OөF[ pSܔiXRqOnꋲPSgi7 eEб Bo 2m.ڎ}t*>;r~L:(^^(Z0> vk)0sa] }Jꉮeu(@x-ԛME:2vQF]s|?2"d5=^u@3jiLn$^rp-Yj%%+2k|!khY|snLJm9 $`,i,l?K~ x\rgJٜ>%:rmo6[o3qZ׋-n[nYBmo~5/C[l0g5CrQ3NI.\>oq!ÊHPZk?0g p K'ăo/a5>El.eS(2to9,u 0iXI2g..rxX*OߘSǪ3$K=5|h jkP>F~ NÁy%p*ȟh%ήsPH AI3H\u\cjHXc@𵸎Uє[S|yyG gLN~̦LX,lACWrR#'mM̲< / ?Jb%#`uQ݃?yRζs8f4>knf9ga(ZwEr>LJ^z7-7®Y>Y͍2cbkw`Mmf: HMmm-RwA[#O&\T2 gJ\}͐ߓ{7Asr˸&A|EE㮎LT&)A͐}0T%Bol#>oަA-U| <?Y o:Ŧ]8*gi/@< 0 _-=o?2#y)sB,Q8:tjH lVk'_{mFT _i9-V6wnnŬ^L9X]#ikKdfs~u|R:qKоso:Ѭ+6u¼&JfA^ṘEڧ 1\ ̄[u%!ACoLdAsXFdL&lLA|d̀䰛ݼu>_aGN?1G Է 1 WTH)בiLM|X^d7mKQYC>箉ZݒU8^D#trwVw0pmO_w?
  • AǩixdI2ӹNG]~t7%V*OwZzUm2Ӭ349wӜ]f ~qsPcNOnpiS Pak f@ c*^~Q~'bIA"H[LR}($\-n8136XsK6vbײg!IR%l,s}SȀousBi{EJfka!QtZy>RP-K?"BuzV! 'dkꁳ~U.pc&p]|ߕX 6b~^vL LJӗ}qE%bœb uc5a~'7ӯ˫pQ-!oX% H5FX:֋,%c5%F(d06$.'pOTCd,:ƃZBs)9Q툤g14 G!l}4cS >p^ד<0V+zēNO6A'xY!za`j`sYcŏ/NLn=)M3]S`>'@6p9Ge%T^;3t<ۙFS]Upo,%n-`kJ Y"ZSQܙ}8(Oqnza kmJA&JڊBZ_C7ӏޅ.(}(a VLyxjFcP; QGU_)``R2=qί_SȤ f {h,7),s,32heֶ(Bs?5]Kk67,#ET{KJ(O,TΌ.u\Ea(]a{H7JfN:+U3VGn4-T%,@5HrToق[U@ZiQ$Q7s)<=LJ&i#M'9:@,Ӹnɂ\^165\g}"A\n ,d.z_aalIk BZ*ḿXԅQtj^qѥ[~I5?ȥ493꩸j\sENe|9OPeB6c?6V+H1r.nt/2:bӱ4! [̙99َFr{&—&"Tv4Ϊϙ&2 {b.&GviDi>Q$Zo*!omhtv~,W G%usmͮ,s=wSF:Yd5y tmeԪ¯+ ^ ѦR9LQڊ-+USJ<.SʥhZ"5PO0˹Dy0#\js|,;?lw@{ w:6Lb)/i_ޚ]2YPfnf-bfYɨ ajV$e$vbчPV^[%]AgAj%3]7Ԏt﷞o/w!ȹ*wȬ3\x(]5lgHcDC, ؎mD yho}4zjtf5sp(qe FoL(ڿjrS!n`F5Bgąe_v\VPAZ!~5^4Ivq85u&W1vRx-ެ\5_} Jn4mfB;l: |fvc@k`Cg isa}AԫŮx:#3mMC{%c s}<$uCԃ\R<"IoM+s,d7`ӗRA mx1ǽJ,oZ\3[}nGU,N-א5T0+_O8((<, ̞RȆ((< hɜMPzO6 !(gpR[RJV-IS1C;=6&f={7 w2$2zkxz6}s Aƃ@fb%;uHq fn>C46B<3DpfP+ҿzVa" |M y|βCQ ~酩!" lw?4Ӥ z9*f"L['=b,r835[$ZR_%odLQqzF{{k'ꠡ~NEqr W1z/kYI',MT bLwZq$95:jߊ}:5x1x;pQyvѭ5LSv¿ő 4Jg:n#& op!Rc2rhq xV)DPq"isn{D|2sƺHta­j?}[Wq"{Ժu01CbW؆T*!\ӨoϲLk ɔeXnL,$'<,ZN&_wO ǚ]M . >*ewPRs~/ykдf? endstream endobj 101 0 obj << /Type /FontDescriptor /FontName /XJHGMV+CMTI10 /Flags 4 /FontBBox [-35 -250 1124 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 68 /XHeight 431 /CharSet (/D/E/H/M/R/S/W/X/a/b/c/d/e/five/four/g/n/o/one/p/r/s/seven/six/t/three/u/z/zero) /FontFile 100 0 R >> endobj 102 0 obj << /Length1 2383 /Length2 16514 /Length3 0 /Length 17926 /Filter /FlateDecode >> stream xڌPbݝ[.ظCp!Xpww$%sLU[TWw(ITEMv.L,|qy55V ; <%_9<do/ q'˛콱˛@`ccaމ dg)>:,,]W)-/w- djl7vھe45ڛ.'3;3-b P:܀f-mO P9Gjon l@@;7W;3-;@UZ `eb'޿r665u0lEI9&oCcg7c7cɛ_$EoݟřdGah3ڹ8= hG濇kmgn_d33݆(o7:̿}td-~`d|l8}_ 0L ;?@;<,o `ooffog_#fזbb/F#;;(*_i፻^}4͠`@͟cd1}r.H/= ƶ [meۿ݇5f Wv1~Q; 9K@)ʢ)՗ZQwI9}TZFddښM^] kUgӖDG'x6iS"8BF5gGok.\GWd|;~)}.YYh(y<\2hF"X:s9Wxzxh"/-ύJ56n< <\"k*/28K^QK,L`$c]tqXlVx)|2U8"/қKJ+~-78 s7wQuu}z-{˔種zPGLyh«nB2:>39Վ 0i(Mܔ#uzp5m&`pz=#xkL/uRyd= ?$MKs7X@N`H)\)#Y3i<=1,{4C#p*|$t5j9E0B36ꮀΗ£¼ЁDpl"ݱIhi^=(a UbO#5*ieqsJ__Qb+wt Wk}Suzt?z D}  Фz?w A޸ߺOKs7c|hd<:q n=vdNyvu :>Feno.Ü,~NKiQo#󐶙67T8C^϶?+RVF$e}CEոE#c6>҃B}$ecX hk]K,Vp9ʼnIoEr;9XL?/p!kw}NbkuZՐ)ly$snl(J{QFS>s4}cYJoI`eF&įv?zV= a4Z<15fi0|i۸$||V/*Ÿ.{` 2I X-oٺ8sswTr{{̰ӆ73m Ԧn.= 4dX^4` {*GctJW I^C1XgARMVHe^ho=B10"kIM{ BFݙCA˔RR`?PebSAf<_0֊_;frL{wMshh\^>P0QbTUu.[g)c1kN806V$pOӑT4ޖhzTXEkei݋+]a!hה1psۗkq.%vDfm9U,e>S|xOiDuFD+;$~0#4aIp]bcIm2f @1g`NAV_qPݢ|DU3$w_ۭ(]@LFx_|Qeh>şv%2!f7z_f̮ed$ '_1]١:B -4cK1 d: !uA-n~^E&]vsN'_-/<0ɚ:cֿ}L6sO"^ Bydn<@ݩC,?Y];:^+U# V}ztSY}ᓸPΫpWN+DyTk<Ж=cs`1X`Ls^Jn &a1s)'&wM4{n8"19kkF/^sX 'pc vY\dacyp.7&3n3c& 0fP (iQŚ+^`JW^5R\y_WQ8"?Jln" vGUy +&yWz|i%1.z|'0;"J#s'XB c%WYDF ]AaݨäerOdwBE:BgNzD'>bH^ItIEp.]F53i `kcT(FA oS^JT:%NKOB/-iyƱŌQ?|N$ie kStrker nyjG-|>D c4c,L]51h#?oWAihVzI~:JndH"J 5˙~Z^_S"6)[f$4f.+06Z}Tlr-laʖd.gzp,0iI Ҋ!6L1ӵ0N\ȣtpi ʩ Y=/vP 6UD6ŏ`#ު~%w?T%լ=3,L?$2$dH,tp*28`X2H0wᲯnilV!Qm]yj ?sOkXywS%5@n=]$2Cs>v8iS[zc rl -hެjyjƩaa9SX9m/Zņ.Iyl^w?wM?-Wz*).ё(|Y5 -Äpp5(%de/2d>Sw5ɇSop*H9MBݔ'>4C4픿VEa:Iww_R|2N/Mh*, z}k< ewli?hK$D)lM֒5gvIC LXM$cLMZ*%L'dMuz0Q"fnlu{{Jnksh,~M.>}Ť,1BSQql,&_ Agq${,J/sbwRAgPp7&=}H8f{3 I/ӚW:|dF0#hj/%nǺైbH~7#uR3*Lkۯ۲hQb82ZpS*%ZE>^- >b,\2Dbl)mz[ۺA`ϟed&[ G!~|Q (8MQc1V;@L5e]M5 U9{q9BB#x"p0`|qÃX[D ܁kVnZ=SaI)ME S\S^@MqūP `Np2M]FS)>O/i5?. l@f](%4k鈏 fD(fÝ/N.vBqN&2pb0d|bn H߃sREKE%lrnVBBL.׋πŊ,Lӭ[FK=!BO3MR˔=6PI㦧ƂiPRr<u}'BP3 y6nV̢t!]Z=gg,Lx?k!{e#/diWpXc9SS8g?pnREi+#q'V[7,o"c n5Jd<ȏq\[fB"6RCuax`:~U@;0Hsn1HHhƜ!uX$?t^cOE 8՟R}3(m:338F9,pָ^Y9%,QV%QOtE$Ivϱ 2ZemO5R r thQJ!LЫPKIw/P/i|[w7> U(h@H3.D*j48r,pֿOk8] PFh6cJW;QL@LºH}t"EWk&sXIhuu/uχ211cd搿[ iRQ8W\Ly7w<][P]Z>uEq= '?=P¿8|tjDz(8 ''(^F͑Fo2TtHH*{9.sn 2O;誨nOT?|_% !X:b :.1 KT:}dqՇ{[^5*I͸e}@[s.Uq`}@lUZ:r_\:rٚ;#>$g"!Uj:M0JM8\ 9;c¤=} z(;֊?[pcxxwWrlfV9ku-&ٚg2(]0v! CհzY=z>S4R&WR8hRM /;?ďEVIuƆD;Z&ץ+(FJF:{2O1yZfQ/0YO IMXFMx~ʙGcroL~Mhq?tmSc̐ǻs8γ5^R9@=:of,J0Ϥ~߄dgGbJsvhת<J{pDE9.iU{RHd\/W dfG/ܕRNC“i07m,1f?~,s !lrUNY$-.ƝXۆ|RCM)K VT 菶lu./ufC9ÔFSfmQyc58JZ[Zj6*/%5a|{F*Pw4K'l& F:Z.ʛ9O?:GLZ#nN[&^!:-J+K"4a+2jKe~2*[! ?k|eck%͏7Cm;\duoT\!Nek=;/&|c$!5V,8>Ab9VYXzUPDPݏS$z~c؁n$R+rIB8\#+cnYHZƠr_,?O8H>Q==Ux~%/K;r cak _.[frے8 Q v,^}9 r6Ck& Y4D:TwfڲVp( n$T _LxW"q#m5i"3CmM٠g:wY{xh%z Ҭ̨#'4JM;Ͳu A_6yp R}7_ibԶC;ʰ+Py5әOzEj- R?eW5믟Fߕ;O*塬}f6A_،_j1ueyeB9h%Zms#V,&rcʾ/50H ҤfB\2ol1 { 泃ttOI{P݋3b J ˥6݊( O_$GjZVaqmL*jEӑ|p ,|eQ 4MKXЈԚ,`w@ sqmgbI{5@UsyZΉc3n_^C -8%֪[4&+-mIM{P6 tW yTFiz!(; b7/猪_q+A MqdQUs~ՓΨ#bua)f2ǎ,ֽp0sR>_eUCn7ncZO61/C.LsF,S4 jd3m?Z :5vִXCv֗k} uSW];Lm$4W%x"=,A> NTНԫ"zHcL32蜵c4Jթ)r.'jJȬJVWo66+Q Jkp:6ͪ<^Y,ᡦ#y!,F$@k,%+@4:|Xz~i0r5HzƒϙYHΤ˄^3h-xo3/77~Vf@ 8dim .lLMVRAp=xevBWF [fVؚ QGM"oTGt*D sAFs!+bc<մ[O$쉰}E/!z6&~#zר9L #$:7{-վѐN2"qw$',> S3-ec֘pZ/W"!Tjd q鲘wߠjh:ϙ-N풝>ׁ% 4J*5,_L|}>傤r| 5*.c67xUM!nzODs8qfАQu6ʈ&dL0IkPWU)KXJs. Fk.e+h>|)hވRIe"}_U[Ӥ&>& >G>/E0 ?O^ Ss BSǶ~FjS2DgZ $N7R֣*)AhrC+OSMӺ& Ix-* r>n0k%Ek0G,bÈ 1Sn{¨N,ն6rAh yڌaG5!hW$)K22?M"E{Q/mS?6˧bd=2W7!g\1TzgV[a@Qo&\`{|633^UUvEAqpf} ⣔hQp{׼NM BNx9r^_T ,0c6K?%f 6oyz S,a=yr k'ƾ1*Q:ȋ*5|mSI\*O$^>C,5Y2;VEV#W=z!$mʠx>b%~IRӞeŦ9 V|!S⑧NS,<@ 8|)4ϙ! O r@]<) E>˩ZѪ0p 2l@Ŏ-VVz@vlTQu.mj/* _y]%Ynu  : e..ԂcVnWl1޵6-blB wJB}]\7-Q0}к^]")W[;s8*pCJ ;*oٯHņ3FXW(q\[Kxqol!x$ B).i 5Փ F"q)DLȻ>zvJpz`;6/n;F zԅ:,r `̝UERVI$G͉RfkMzV.έξQ]wZJo@|GnfJ׍Ls7!e|iu;v%csN|P[`2%?cT5Bԍk& )R/{9w&bj,y?b*G 9T=žb;a65[!fBW1ύrsޒZyBG_lpA2}oЬzݜ1QVԿK_a4Xsq[`W W+5Oe'T=q|~'^r(f+Ǚ^Kڻd D]|iϝ@&\tx-=|M5R[9~[#f'"P1lǣ`|0OuR -U0wb'$~ӮW4 Ņ ..}yN*Da">>y_ R G)^Q4$`0\$j6β0 ] 3x}=6k0!B\EvҾ&d˒HN W \˼A&\N$0و -6kY2G퍩C;6 XLxyM>+v9By~u՝qPc8UU(?(f5 0w/نeyK lnCZx=ya̳}g*I._m'SDcSSr}mUUħmD'%qYch2@xUtҷj=uӨVDFkѓ<ֻ[ 2 K"(Hjs6 Q/:E'6m%-#h?2^e$IY "1rZf] *`n ʲ 4S0唲º!]&lg-ZS,3Qi6trBҗ3`QQ;&g،u#*iAdž+^{==|I rj `u0Pru E( ,odvBI@ZaEkݰۢ|*KvqgpÁbY~+EI 햤$@5NSPťHeFւL.}m rYwm!;_3c#ٹZlQʪOi;+hﹿ%^VV_%Ix?\ EpӎŸ]H6 h{ݼv8R[ؽJ!@7teX?Ƃ'q+nl|BN`XzY<*'ّ=?5rEUn/#J>.Vu u^"!(4:gAN ‡_o0 dص:~׾D$ apLV[h*XLgX Glhl[;Q*1٤{EnQH n)V©fe[9̊l}ֿM<=~sBew -\0@ X|>RQ8;g!pL/TҞ#٣T3  _b߭s-2]`l6]8}, .|zK? 1:B1ߢHNkFud)D<346;ֲnqEGv@`$dv 'hiպ:buC;At@-R _rGa~@F-%jqE1,Y*95'ާ#?Xs1:|~~TEų a6 aů?Bx*z6]T1T5`yY?T *,`kjJeF7p%t;v2\UǢFlFn=C =井Ow%k;o#Q$h*:[kVc҆Q!bwHLBaA~ywE=sS4-R[zV:ڞiMv##t}{Ax4l:k Zbp!|Cq DŷKSt:bd_LluV``hR ȼ䄼wL\ZOBZUڎj(<,< њOf﻾2h9@&Li#m@tR>Sm-(^q 7[Q^5!:dlSN`uz[v^((o(9S) ^1Em]gX}3!5Eof D_cV:7~ J; :TnwTXތq &and!=z- B=#Jm܍-d5huKs]߀#aZAi?GJ啞! +~驻܊SM}>F veA)I9SŅLR_ 6[u;Y0;86Ns?ڍ`$ج/#|sF,F(Kp'hnf |n;LAM_N<ZᰦqXcK&bpOu*Ȩ[ `blлۂ+r'h +>{n> endobj 104 0 obj << /Length1 1508 /Length2 2471 /Length3 0 /Length 3423 /Filter /FlateDecode >> stream xڍT 8TMH-lɘ.ʞؗnfB5[}zm(R -Ky~g=|9|Ε$ء4И38%``ioXGCL*ݏq k0D&3$2% XT ԴpZX,b5it-K% 7yz1>_y.tDK" A:TF@fo%䵽L_- & @P=R ` 2@?HV(VDpJv4 3HAH @RX0Hwo`oE`rGBL$h>D8= Dkc %f S  ʠ!D"D%z գc=0\ !_&CQW8bV l h>> dVgArAzô8E`2eq!?hjA\>O bX ee@f}/ĭ4_C! D`Y`h-!=!:)ldt(8E+oi05'|u{}'Ski@0**^PTBw^Z;g=SB4Q@; 5]ȯ-.V4D SX+)Od̢RW'NAkD,&4d?Col !ϿL"!z'EB c($ &kU1ǀTB0H1 a!+GF) dX!٨;$yejN'@0Q2*mӘH (4:jejbŵjiOKxp(1/*~10C_L U72$Տ $4Ҟ#őw?G[*|syFD_Dh/W΍һ>8 ϯe"XoX-ﮣx +<۬aԸVɞ"嶍m*͎vOז-Min)%^44y9"ҫn鵵WJ3t[^n<:T*_L5Oܛ<^&f~&3Rgm9^>bnd1!>OEb?W&e-N/[38at=Qs s;5 f-?ZᒌLK9ӓqU(|`bm-Lɒ3^Dҥtθk.=h2P7l#]WaoP̽Ԍݳ'nɔ8ړ8Y¼;>昢ν5JĊ*&9%-K2 Ӝ O=ֽTQ?#yBK X8[sMx a1{(|  *1cק9ίA.ZۦVRՖscH_e< !A,".|σWCp{;[N]&d;n~95aLTL.Wia,W $F*rk1fPVAQǧ/]hθCײPRpm~qɺlK *u>G1^mI鮱EF᝶ qUzn({`&U+!fd&]2iIs^Ijc uL\+m6KrMf+Ϋͷ܃z#d\\3A%ϱy5Js]|2W.629JMtˉdn{בɑQʮRpbӷ8_ :i,۶uFߋ4L >ih:d 1ɸ6eQ_[)Z\l 7yCMZخnwʮ3^l O8HbR,4MƘ:q=(sY,Dz̅A`exHWf6:pqMS\O8綖_ZΆa @͇WvMxYcq=eާRBE7^Y& vXbwh~!H ޚY*N#X+vbQ}^ߡ?3<P($)TO.1<&wDiukhwiuC;E9%[,n뉴#ңBLo6za32؋E[0$pbLKXq1~S1ELf^M|SI\bn£}fuVT?b\Iq.U,_ 6o=Vh;6Em:N9KO#$šIffQb;Cϳ9R':%/wc-]۶ϛ_8\ KQRzo!<nrǟ9ڴ2"ECgq~N;{(~ zsL]F0>*QN8JSA=135 lԯ0 xcI.9GpB7,TƓ`eU|$F:NeyOc`Ev;Wn;vUKhS7VFx n 0}Z?I ڱ嫧ڟhGZzl 3gW7a~G`rɩe.c G-Yj(# CmC- ʼ)h,d(; Yp*-=ErŠmu3Jd^`-<z4`pXnGru)BD?g/;}8pelZW<35#'u%r̷nM.sE YY/[Ԭ Zn`drPՙQ$/|Dm$kY~NkQj=Nxt+⡺gW:F=OF^窷oYozwGN{3_t޼{*Q<c^Hh4)9O*#ʉEC]AwrN[K ǾJu mM%D\(cژ/LU;9+CrέM.mro(;$=W\E77襟;&_A/k`^j|'Ԁj޾Mgsqt3zħj]}[ܴ' endstream endobj 105 0 obj << /Type /FontDescriptor /FontName /TBUWIA+CMTT12 /Flags 4 /FontBBox [-1 -234 524 695] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/L/a/b/e/i/l/s/t/x) /FontFile 104 0 R >> endobj 25 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DFFIYV+CMBX10 /FontDescriptor 89 0 R /FirstChar 49 /LastChar 121 /Widths 84 0 R >> endobj 22 0 obj << /Type /Font /Subtype /Type1 /BaseFont /QBQWSJ+CMBX12 /FontDescriptor 91 0 R /FirstChar 46 /LastChar 121 /Widths 87 0 R >> endobj 33 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KYYQJR+CMITT10 /FontDescriptor 93 0 R /FirstChar 35 /LastChar 122 /Widths 81 0 R >> endobj 26 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XBJAWD+CMR10 /FontDescriptor 95 0 R /FirstChar 11 /LastChar 122 /Widths 83 0 R >> endobj 24 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VAZKBJ+CMR12 /FontDescriptor 97 0 R /FirstChar 44 /LastChar 114 /Widths 85 0 R >> endobj 59 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LOWLTO+CMSY10 /FontDescriptor 99 0 R /FirstChar 102 /LastChar 110 /Widths 80 0 R >> endobj 60 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XJHGMV+CMTI10 /FontDescriptor 101 0 R /FirstChar 48 /LastChar 122 /Widths 79 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CYJJBA+CMTT10 /FontDescriptor 103 0 R /FirstChar 13 /LastChar 122 /Widths 82 0 R >> endobj 23 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TBUWIA+CMTT12 /FontDescriptor 105 0 R /FirstChar 76 /LastChar 120 /Widths 86 0 R >> endobj 27 0 obj << /Type /Pages /Count 6 /Parent 106 0 R /Kids [14 0 R 29 0 R 35 0 R 39 0 R 43 0 R 47 0 R] >> endobj 54 0 obj << /Type /Pages /Count 6 /Parent 106 0 R /Kids [51 0 R 56 0 R 63 0 R 67 0 R 71 0 R 76 0 R] >> endobj 106 0 obj << /Type /Pages /Count 12 /Kids [27 0 R 54 0 R] >> endobj 107 0 obj << /Type /Outlines /First 3 0 R /Last 11 0 R /Count 3 >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 107 0 R /Prev 7 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 107 0 R /Prev 3 0 R /Next 11 0 R >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R /Parent 107 0 R /Next 7 0 R >> endobj 108 0 obj << /Names [(Doc-Start) 21 0 R (page.1) 20 0 R (page.10) 69 0 R (page.11) 73 0 R (page.12) 78 0 R (page.2) 31 0 R] /Limits [(Doc-Start) (page.2)] >> endobj 109 0 obj << /Names [(page.3) 37 0 R (page.4) 41 0 R (page.5) 45 0 R (page.6) 49 0 R (page.7) 53 0 R (page.8) 58 0 R] /Limits [(page.3) (page.8)] >> endobj 110 0 obj << /Names [(page.9) 65 0 R (section.1) 2 0 R (section.2) 6 0 R (section.3) 10 0 R (table.1) 61 0 R (table.2) 74 0 R] /Limits [(page.9) (table.2)] >> endobj 111 0 obj << /Kids [108 0 R 109 0 R 110 0 R] /Limits [(Doc-Start) (table.2)] >> endobj 112 0 obj << /Dests 111 0 R >> endobj 113 0 obj << /Type /Catalog /Pages 106 0 R /Outlines 107 0 R /Names 112 0 R /PageMode/UseOutlines /OpenAction 13 0 R >> endobj 114 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.14)/Keywords() /CreationDate (D:20190421225643+12'00') /ModDate (D:20190421225643+12'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4902 (1.40.14)) >> endobj xref 0 115 0000000000 65535 f 0000000015 00000 n 0000003308 00000 n 0000134049 00000 n 0000000060 00000 n 0000000090 00000 n 0000010238 00000 n 0000133965 00000 n 0000000135 00000 n 0000000172 00000 n 0000014251 00000 n 0000133892 00000 n 0000000217 00000 n 0000000257 00000 n 0000000720 00000 n 0000000868 00000 n 0000001018 00000 n 0000001168 00000 n 0000001435 00000 n 0000000305 00000 n 0000001318 00000 n 0000001377 00000 n 0000132399 00000 n 0000133388 00000 n 0000132822 00000 n 0000132258 00000 n 0000132682 00000 n 0000133530 00000 n 0000003365 00000 n 0000003134 00000 n 0000001552 00000 n 0000003249 00000 n 0000133246 00000 n 0000132540 00000 n 0000004840 00000 n 0000004666 00000 n 0000003482 00000 n 0000004781 00000 n 0000006141 00000 n 0000005967 00000 n 0000004921 00000 n 0000006082 00000 n 0000007437 00000 n 0000007263 00000 n 0000006222 00000 n 0000007378 00000 n 0000008569 00000 n 0000008395 00000 n 0000007518 00000 n 0000008510 00000 n 0000010295 00000 n 0000010064 00000 n 0000008650 00000 n 0000010179 00000 n 0000133640 00000 n 0000012555 00000 n 0000012321 00000 n 0000010388 00000 n 0000012436 00000 n 0000132962 00000 n 0000133104 00000 n 0000012495 00000 n 0000014310 00000 n 0000014077 00000 n 0000012684 00000 n 0000014192 00000 n 0000015792 00000 n 0000015618 00000 n 0000014403 00000 n 0000015733 00000 n 0000017648 00000 n 0000017414 00000 n 0000015873 00000 n 0000017529 00000 n 0000017588 00000 n 0000019413 00000 n 0000019239 00000 n 0000017765 00000 n 0000019354 00000 n 0000019494 00000 n 0000019944 00000 n 0000020006 00000 n 0000020376 00000 n 0000020834 00000 n 0000021456 00000 n 0000021880 00000 n 0000022269 00000 n 0000022557 00000 n 0000023005 00000 n 0000038029 00000 n 0000038340 00000 n 0000051172 00000 n 0000051466 00000 n 0000056843 00000 n 0000057101 00000 n 0000078193 00000 n 0000078582 00000 n 0000087084 00000 n 0000087332 00000 n 0000094747 00000 n 0000094996 00000 n 0000109666 00000 n 0000109965 00000 n 0000128012 00000 n 0000128481 00000 n 0000132024 00000 n 0000133750 00000 n 0000133818 00000 n 0000134120 00000 n 0000134285 00000 n 0000134441 00000 n 0000134607 00000 n 0000134694 00000 n 0000134732 00000 n 0000134859 00000 n trailer << /Size 115 /Root 113 0 R /Info 114 0 R /ID [ ] >> startxref 135134 %%EOF xtable/inst/doc/OtherPackagesGallery.R0000644000176200001440000000221413457046147017450 0ustar liggesusers## ----set, include=FALSE-------------------------------------------------- library(knitr) opts_chunk$set(fig.path = 'Figures/other', debug = TRUE, echo = TRUE) opts_chunk$set(out.width = '0.9\\textwidth') ## ----package, results='asis'------------------------------ library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) set.seed(1234) ## ----zoo, results = 'asis'-------------------------------- library(zoo) xDate <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 as.ts(xDate) x <- zoo(rnorm(5), xDate) xtable(x) ## ----zoots, results = 'asis'------------------------------ tempTs <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) tempTable <- xtable(tempTs, digits = 0) tempTable tempZoo <- as.zoo(tempTs) xtable(tempZoo, digits = 0) ## ----survival, results = 'asis'--------------------------- library(survival) test1 <- list(time=c(4,3,1,1,2,2,3), status=c(1,1,1,0,1,1,0), x=c(0,2,1,1,1,0,0), sex=c(0,0,0,0,1,1,1)) coxFit <- coxph(Surv(time, status) ~ x + strata(sex), test1) xtable(coxFit) xtable/inst/doc/margintable.Rnw0000644000176200001440000000406613050750607016241 0ustar liggesusers%\VignetteIndexEntry{xtable margintable} %\VignetteKeywords{LaTeX, HTML, table, margintable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} \documentclass{tufte-handout} \title{ A Margin Table Example } \author{David J. Scott} <>= library(knitr) @ \usepackage{rotating} \usepackage{longtable} \usepackage{booktabs} \usepackage{tabularx} \usepackage{hyperref} \usepackage{fancyvrb} \fvset{fontsize=\normalsize} \begin{document} \section{The Example} \label{sec:example} This document uses the Tufte handout \LaTeX\ document style. This is specified by the use of the document class as \Verb|\documentclass{tufte-handout}|. The Tufte-\LaTeX\ document classes define a style similar to the style Edward Tufte uses in his books and handouts. Tufte's style is known for its extensive use of sidenotes, tight integration of graphics with text, and well-set typography. One of the most prominent and distinctive features of this style is the extensive use of sidenotes. There is a wide margin to provide ample room for sidenotes and small figures. Any \Verb|\footnote|s will automatically be converted to sidenotes. Here is an example of a margin table, suggested by Felix Sch\"onbrodt \Verb||. I am not sure about its usefullness in practice however. Note that \Verb|latex.environments = ""| avoids the default option of tables being centered, which in this example would lead to the caption not being directly under the table. Most importantly, \Verb|table.placement = NULL| is required to ensure that the default table placement options \Verb|[ht]| being inserted after \Verb|\begin{margintable}|. This is necessary because the margintable environment does not allow placement options like \Verb|[ht]|. <<>>= library(xtable) x <- matrix(rnorm(6), ncol = 2) x.small <- xtable(x, label = 'tabsmall', caption = 'A margin table') @ <>= print(x.small,floating.environment='margintable', latex.environments = "", table.placement = NULL) @ \end{document} xtable/inst/doc/listOfTablesGallery.R0000644000176200001440000001037713457046151017327 0ustar liggesusers## ----set, include=FALSE-------------------------------------------------- library(knitr) opts_chunk$set(fig.path='Figures/list', debug=TRUE, echo=TRUE) opts_chunk$set(out.width='0.9\\textwidth') ## ----package, results='asis'------------------------------ library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) ## ----data------------------------------------------------- require(xtable) data(mtcars) mtcars <- mtcars[, 1:6] mtcarsList <- split(mtcars, f = mtcars$cyl) ### Reduce the size of the list elements mtcarsList[[1]] <- mtcarsList[[1]][1,] mtcarsList[[2]] <- mtcarsList[[2]][1:2,] mtcarsList[[3]] <- mtcarsList[[3]][1:3,] attr(mtcarsList, "subheadings") <- paste0("Number of cylinders = ", names(mtcarsList)) attr(mtcarsList, "message") <- c("Line 1 of Message", "Line 2 of Message") str(mtcarsList) attributes(mtcarsList) ## ----xtablelist------------------------------------------- xList <- xtableList(mtcarsList) str(xList) ## ----xtablelist1------------------------------------------ xList1 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2)) str(xList1) ## ----xtablelist2------------------------------------------ xList2 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2), caption = "Caption to List", label = "tbl:xtableList") str(xList2) ## ----xtablelist3------------------------------------------ attr(mtcarsList, "subheadings") <- NULL xList3 <- xtableList(mtcarsList) str(xList3) ## ----xtablelist4------------------------------------------ attr(mtcarsList, "message") <- NULL xList4 <- xtableList(mtcarsList) str(xList4) ## ----singledefault, results='asis'------------------------ print.xtableList(xList) ## ----singlebooktabs, results='asis'----------------------- print.xtableList(xList, booktabs = TRUE) ## ----singlebooktabs1, results='asis'---------------------- print.xtableList(xList1, booktabs = TRUE) ## ----sanitize--------------------------------------------- large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } red <- function(x){ paste0('{\\color{red} ', x, '}') } ## ----sanitizesingle, results='asis'----------------------- print.xtableList(xList, sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) ## ----singlecaption, results='asis'------------------------ print.xtableList(xList2, floating = TRUE) ## ----singlerotated, results='asis'------------------------ print.xtableList(xList, rotate.colnames = TRUE) ## ----nosubheadings, results='asis'------------------------ print.xtableList(xList3) ## ----nomessage, results='asis'---------------------------- print.xtableList(xList4) ## ----multipledefault, results='asis'---------------------- print.xtableList(xList, colnames.format = "multiple") ## ----multiplebooktabs, results='asis'--------------------- print.xtableList(xList, colnames.format = "multiple", booktabs = TRUE) ## ----sanitizemultiple, results='asis'--------------------- print.xtableList(xList, colnames.format = "multiple", sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) ## ----multiplecaption, results='asis'---------------------- print.xtableList(xList2, colnames.format = "multiple", floating = TRUE) ## ----multiplerotated, results='asis'---------------------- print.xtableList(xList, colnames.format = "multiple", rotate.colnames = TRUE) ## ----multiplenosubheadings, results='asis'---------------- print.xtableList(xList3, colnames.format = "multiple") ## ----multiplenomessage, results='asis'-------------------- print.xtableList(xList4, colnames.format = "multiple") xtable/inst/doc/listOfTablesGallery.Rnw0000644000176200001440000001340013341600075017653 0ustar liggesusers%\VignetteIndexEntry{xtable List of Tables Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper,height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{\bfseries\Large The \code{xtableList} Gallery} \author{\bfseries David J. Scott} \maketitle \tableofcontents \newpage \section{Introduction} This document represents a test of the functions in \pkg{xtable} which deal with lists of dataframes. <>= library(knitr) opts_chunk$set(fig.path='Figures/list', debug=TRUE, echo=TRUE) opts_chunk$set(out.width='0.9\\textwidth') @ The first step is to load the package and set some options for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) @ Next we create a list of dataframes with attributes. <>= require(xtable) data(mtcars) mtcars <- mtcars[, 1:6] mtcarsList <- split(mtcars, f = mtcars$cyl) ### Reduce the size of the list elements mtcarsList[[1]] <- mtcarsList[[1]][1,] mtcarsList[[2]] <- mtcarsList[[2]][1:2,] mtcarsList[[3]] <- mtcarsList[[3]][1:3,] attr(mtcarsList, "subheadings") <- paste0("Number of cylinders = ", names(mtcarsList)) attr(mtcarsList, "message") <- c("Line 1 of Message", "Line 2 of Message") str(mtcarsList) attributes(mtcarsList) @ %def Now create a list of \code{xtable} objects. <>= xList <- xtableList(mtcarsList) str(xList) @ %def Create an alternative version where the lists have different values for \code{digits}. <>= xList1 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2)) str(xList1) @ %def <>= xList2 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2), caption = "Caption to List", label = "tbl:xtableList") str(xList2) @ %def Further versions with no subheadings, and no message <>= attr(mtcarsList, "subheadings") <- NULL xList3 <- xtableList(mtcarsList) str(xList3) @ %def <>= attr(mtcarsList, "message") <- NULL xList4 <- xtableList(mtcarsList) str(xList4) @ %def \newpage \section{Single Column Names} \label{sec:single-column-names} Print the list of \code{xtable} objects with a single header of the column names. First the default. <>= print.xtableList(xList) @ %def Booktabs should work. <>= print.xtableList(xList, booktabs = TRUE) @ %def With digits being specified. <>= print.xtableList(xList1, booktabs = TRUE) @ %def Row and column names, subheadings, and the message can be sanitized. <>= large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } red <- function(x){ paste0('{\\color{red} ', x, '}') } @ %def <>= print.xtableList(xList, sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <>= print.xtableList(xList2, floating = TRUE) @ %def Rotated column names? <>= print.xtableList(xList, rotate.colnames = TRUE) @ %def No subheadings? <>= print.xtableList(xList3) @ %def No message? <>= print.xtableList(xList4) @ %def \section{Multiple Column Names} \label{sec:multiple-column-names} Print the list of \code{xtable} objects with multiple headers of the column names. First the default with multiple column name headers. <>= print.xtableList(xList, colnames.format = "multiple") @ %def Using booktabs: <>= print.xtableList(xList, colnames.format = "multiple", booktabs = TRUE) @ %def With sanitization. <>= print.xtableList(xList, colnames.format = "multiple", sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <>= print.xtableList(xList2, colnames.format = "multiple", floating = TRUE) @ %def Rotated column names? <>= print.xtableList(xList, colnames.format = "multiple", rotate.colnames = TRUE) @ %def No subheadings? <>= print.xtableList(xList3, colnames.format = "multiple") @ %def No message? <>= print.xtableList(xList4, colnames.format = "multiple") @ %def \end{document} xtable/inst/doc/OtherPackagesGallery.pdf0000644000176200001440000026233013457046151020022 0ustar liggesusers%PDF-1.5 % 1 0 obj << /S /GoTo /D (section.1) >> endobj 4 0 obj (Introduction) endobj 5 0 obj << /S /GoTo /D (section.2) >> endobj 8 0 obj (The zoo package) endobj 9 0 obj << /S /GoTo /D (section.3) >> endobj 12 0 obj (The survival package) endobj 13 0 obj << /S /GoTo /D [14 0 R /Fit] >> endobj 19 0 obj << /Length 332 /Filter /FlateDecode >> stream xuN0E /L?Z HdXDih#JJq߹`+&|"wd:I Ioc=(X7^,'s}HgfzNeW^,]zk 8gFCIf Hp h"CJ]״AQHp0Ax &xTpD}>)3ޠBr?mb}ꛀ jZ >1Lg+'Z\s*R)b$D_;6/CCHAh1QhpZ;px,&?_ِq endstream endobj 14 0 obj << /Type /Page /Contents 19 0 R /Resources 18 0 R /MediaBox [0 0 595.276 841.89] /Parent 26 0 R /Annots [ 15 0 R 16 0 R 17 0 R ] >> endobj 15 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 592.104 168.398 601.015] /A << /S /GoTo /D (section.1) >> >> endobj 16 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 568.249 187.991 579.097] /A << /S /GoTo /D (section.2) >> >> endobj 17 0 obj << /Type /Annot /Subtype /Link /Border[0 0 1]/H/I/C[1 0 0] /Rect [88.296 546.331 210.118 557.179] /A << /S /GoTo /D (section.3) >> >> endobj 20 0 obj << /D [14 0 R /XYZ 88.292 815.122 null] >> endobj 21 0 obj << /D [14 0 R /XYZ 89.292 777.26 null] >> endobj 18 0 obj << /Font << /F17 22 0 R /F18 23 0 R /F29 24 0 R /F8 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 29 0 obj << /Length 1411 /Filter /FlateDecode >> stream xYKs6W`iM"ҩiښ@Z$.P(qt=H,}| A) 3͐r~E.&29"O-gUgfiSfA&Lc6)s/BxegchT[xE(uⲲ}V^f5G8A^1+ɧ*sͬdfD|8[Iu) \0RyM\b<@ PkCĖOBEQ:*^8*UnGym(*R3VJb ;֘ ͒R0GhWܠ͎w{8>a (P$ ґa4RKzK'>"Kn2۝g.8Y&žvU7<ڝg&r`%-Zg_YMLQV|aTmjn*U3nuZjbL$d7-r(C$-5y' ڔ*I!ib] -?ě]GGo$rqPYT%\q4Fo 2.4ח6}`ۉ,XŢܾowcjU)(2X4@sR%Ϸ"x]i6~^aGXdP_'3;vWC53v }X2W"+M>>Ei@v±|SZR+g8-9 DmEi#۪ gׯNF+?KeګM:xV9 KP䩳a#UXǯ;PQB?Uұo8\ԮS_[d8SގVCnq|9y?1B :ynHZUg8ƙoB!T=!y;{*sg&Iݭ9'Ϋpw+o,薶t{8}]tܻ27MjjC2,|ن|Lk!߾{݉ 0ڕCPB{E엮ŏO,w=2KMW uR_u^\Z3Ss C"D9C4AXU K.\3EЃpC> endobj 30 0 obj << /D [28 0 R /XYZ 88.292 815.122 null] >> endobj 2 0 obj << /D [28 0 R /XYZ 89.292 777.26 null] >> endobj 6 0 obj << /D [28 0 R /XYZ 89.292 635.099 null] >> endobj 27 0 obj << /Font << /F17 22 0 R /F8 25 0 R /F29 24 0 R /F30 31 0 R /F31 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 35 0 obj << /Length 1390 /Filter /FlateDecode >> stream xo6WCe,H?aÖa8kIoˉ{p, f#y:$!amǒN bLs2}`FY9Լ"`j (iΏηǖ8ФI0+b_⤼`8Z(t&t [|IW'4ug$V$:hˍo~ՒfZ)* 1JS.;%Ѻb:B8T,^+QD+=ΩSjޑXJl!};g 0ZP2],9`0 -s5h}[h FE< "%35 &3`3 .1ސA42dH bz`CDC  3̠3 .1X@$s.1HdfJ $i\3%AAbPy= *C'2Ay׃ <1ub61`xb0"1I Ʈa5`yby=\kυ~nm` O UB?!YTAFu6BP~PdZˍ,h^R<֏CD)f)7䏛{(Ē-‰ڀy|Yy߾G'S_ķeYZwMy>Co{oWreIyp[>,ϯX)? '6N9k)||l"\`xٗf:!w}i旻U׳g_}K}08r!%nZ0HGs>8zs>mwmƬM$"J}9OvMx9~sg1W:H;^rz=~K ;V:x?ugqE5XVzts/*tOTuß3q$nEvfxDS mo*#bBdq׋LnfVW ᇧ?~nC?W`{K3JQWqXcc_رdpz^7wǣ9 NCblzpttUŏtMw?mfvS7Ӳ)[~cz wqĭwwM-v Oe -tZM jcu_W6^Ul"@ (&kF@p*qڌ&Oddn@pgyWpv.d2¹pW 0hܬ:Ajut endstream endobj 34 0 obj << /Type /Page /Contents 35 0 R /Resources 33 0 R /MediaBox [0 0 595.276 841.89] /Parent 26 0 R >> endobj 36 0 obj << /D [34 0 R /XYZ 88.292 815.122 null] >> endobj 10 0 obj << /D [34 0 R /XYZ 89.292 485.717 null] >> endobj 33 0 obj << /Font << /F8 25 0 R /F30 31 0 R /F17 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 38 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 39 0 obj [555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4] endobj 40 0 obj [575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1] endobj 41 0 obj [272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8] endobj 42 0 obj [312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500] endobj 43 0 obj << /Length1 1752 /Length2 12047 /Length3 0 /Length 13151 /Filter /FlateDecode >> stream xڍTY- { ^@P[pKpwww ݃{zzzzoZ_}ܳϥ$SRe6$N ,̼Qy-f33#33+"%5rDJ ؖ ӛL f(8[X,,\Vffxb@ <#@l rD۹;X;@mL` lr0N @k*_!͝x\]]6`O4W 's 22@h5FDJ`S'W&0:8ۚorE;e@r,,@:6v@[w [35(!Dښav]@7?K$ɑv&`#Y8ݝZق]m=L-lMLhَI$-͛?23܌͙HnSoO; )898=o00v,lM 2~@~,?~fv#fU忕""`7''z;xwo)UZU?"Jۚb^gX)UcuG u~tSd ga~|W޸YY |r%<"T?Ʃ 5ACDĪqZ&tm]$ǧ^q_xYmHn07}8aJSr0 8c*CQ:}ٌ P!^N6HnܸJFJg'y1C:uX<[N/l\Ҭ"'%܃2טgliN*?hM < .)?f?DHE!̈́3&L }>68k$3 fw}ؓ묯fqv}H5SJ]GE~3r2tS3N/]drH@rqsAxEN?Kכ,*0|}`cLtŬ/^Rc94[u4ꔨ@BPZ`jm"HcMNy\Bmn5I&6*k~Kc)B2|]j=}͕nNk|[f#` #<8 t辨S7Fg+SLT3=mUl^ny},ȧL1 nFj_1);|e\QѼϹN{neq/wǐLFRfF,OUUфI{Zׁ׋#QƟx2r='K.$x>M] A,%OۓGygK.VU0iФha; ] xy|Ar ,d򟍩S\_5TdMhz[0baBfSӨl@3:iaZ ln$E?G*\;Bq>}e)O2|dvZ;)ˌ0ïr>w:(_gJ o [=祣Qtf`qC5y;ٖƈ`9W4ҝ P-k|460YQ]NLa&]k&%DNs jZ 5-FOr{p`9bٹĝ5@c[vt[J[@%G>ÈoiJ e.Y6v#hΊ|WX.S翦Wp혦+uڍz[p7s]|@ ;ksZ*VHQQ'JkǬ~$mЯ/5>tE>}7UgWl{ 5k !5KZ.Q`u,SL^7gtT6jדt&C t5FwUlV3SioRţu5Yf y[sa 4"Bf_"'dm WsSÛhSbD'.Iϲ%d  _iZ!S2g;!CˉBM# >5%Hpس*VPѨA+a<ޘܟ<4d :1bߞ\ID/[FkBS!Www/)l`u~Q1wdv?Sǥ_hS㳟$#z]C,2_0=sbSfAQ %( @Mņ|.v%Q-k]c|D|6U [ -KeP9p҆-Gă/hN*вȣk>չ;%V.p3Ye5ӹ/ |0!1f??e8QXN4xiQ ̝$t ($*!Mӆb/֝)}r[EB, M3fʒڟ(#9gDPMa={OۓuζL0bD7s"ˡϝԐ/eK%ThE}^!&#d't |S;<6(>@F7K*zyWZp\9̍rRÏLfMq G|S`]6gUI~wJD]j-Gi!ja.R eHĽ-=!}4Фm$zT++*|P ѩM={A6$B@7%Z"_YS. d/d$!!}| 6'BDfF-K2h!]94Հkl̉ut)k.$o=u^|~۳@{R,py_zQ"o~͗N0Mڜ{{-F]O|k_>l_菿D9Xq9!2%2A˲ Gj\00j٘YVccx497cPA`+7 ]U3ѹl#~}µqxE5g {Oh:T_d }Z,KbRR՟Lder@=U.s oF> ݬDԑU^6=m6C~e|&k71}u\[T8]OX <~^3'L%b" D?GgLS`%] Ptn X &C-X *yYx9vz%oY|il)ekz?e"$wlzxnÎj!y R'1F99 Sv)QxW 4BxQguO 5A NDPn(%D*t%jj4O&K_T#e3C\g%>d|XRnbm3iϪ+컞ټ 1qK*dEBTڗ!U3'[A+·v?,GwZ3ECU2`qﳦlRV?;ipWRt2R&*IG@ ,5 iXM~NЗLxcۢ.5%dR͢b!iz!Ct_)4!;<{dkY:$`+WSr! #{CH=v9Z ů$eNsfzuYA Zw5t^q٦qz⒱Kk@hY:yI.ԕbLWrF%&g *e|K@ 5w6>)ڬ^02I*w&ԫhKiɿnbcj2_/Bi^} *Rɱ3(zMuۣW͝W- "n=;/\x6k(Ĉ(v{-K%+ĤP+N>p~`wkC1Cl>UK2&c!sGNacDU f( ڵx*q&FZ)LAf&b<czkSg%Tdd oX|ezC/[!32HZ8[g^R$6hPTO:ݮ8()xIDY\_}ƶnC̞>nMMji sQ o4M;AOLʙy\'Mvu9^(͂gthL)+&KRsO$w(I߁Ewb6#8Q]e+oA{.#e%-2ݒzyb1F` @0 kH|Q/^"gaY2=3tc_Gols`@>rF~5w/GXp3{˩FR:eXE$d`T$rjv T4l˝OKA|}tL$e^ni-lF?`xͥ0rA_u>mϙ- %m3"kN#á +7[SpwZI9UNT<]JTmX b]C8oRYAQUrS Dvm&jA6FiȝS2WnS,}ƾ:Vݤ8pm??w:ӌ1ua4}~Xt|F@9ݥTqr@sud`@!y:d X>AM( Bml0 " 6:HVT lbFw[pQa6 _[gRzbX]ÙLrJ\tdY&[τ< I:/-28HvoXfb/f$H?(܏K LdceA9A .sTm[鸍DGO|ybCﵔ)*9\ؕ ~RPVR. u_L NR[!~ڷ@dv3FDA`}}tܚ# U%D"ωS Zv_<{V_NʥDAÑ{pDˉ#×<%k*Nix dej9JEs'Bt)? {l;哉;#L3?0cw1H_Lc"CDjČ^5X]ۙa^%9=% ^0eד5*}H;!m u^l&5(h}0?/8U녵tX(r,/Vw\OduHYwZԅ%J"A˓#T<}EA#\ +|qkQ\֗wԠsA'aOV*py@TN7i>߂ C80s/)JXgd1ҽھ>~K\BX*ѯtLjp^{}"LR2|*揨GL黪{`7ZTd!6ҳ>ZR",f#1Vq'7a㸧4sFXj_)-)_.2+ӫw-`6LAeά]Fl0}IWrQ|>WR`ZIIÿtXK%tgS<.ra5zF 5Mh~%D%pdOnk%R~$ b_7 ZWgI?TϾ{՛(@ `zJ /5&pc/ ;#3$%\y0kH蚺gINPVEh4=1$͘(pvGEz'7/UZ>G*3|v6%Tx;rZjc07@:f)}E 4Z!֝aGڇ^V=*;9v7 TR XļC !U*~LGWzq^"̘ۧB m r6;GjxbuOqe(5Dr[/S6n1y^L8}dbů@v|s 1h@)|g <;"۝u Ri%]xSB8;n.Q*p~᳇ӫƲ٩N*ph|pqF%?DΊ&u\j$GS*yº8C( *$?2i^Kͳ{s p]A+d5 ύeFl3Dƍ. @$TQKSíyj$[BA֜0zKܠ"RC F )5eS'g/Qdǒ_ q{oR˶-81 k :Q*,vpLbbt6_~Yx2:˳+&D烗I+$u H k{a7"U':YA *n707Fu4 Aßi r5'Z~Qeik41RÑMIDqCΔmy5eb-}b7f>5=UBAQ{a|*a |I)73s@G°t-"$+|5 W̬6/(!r&(:^;P7,#E"tV豷09% E9ܴ91W+鰆,?Yà@~}pf K)0~}`%iH;u _wh9`=E Vhٲndha4>dAzN;xۍaK#fQv<@I=a!SpvB'Uomm[/ϒ u(M⧌iƇ$@Q%o CG-ޮ &uv0{FUKGjE#e9{ad /%#]0#aGfJ(1}I<2oʪ7GLf=Ql3Q8tI&ydGe2XpoKNᗉ(P'Qc.*zp9ׁ O,V)=2ҿD %۪zs⫯uޣ$qhЖ>f h~C6gEp=<=ZEƫs@1"mWl'l7@JQ ַ,@ N`Nt=/ Doh)`,A\ܺjx[ɞoF- d1 ̑/ 7"̡ fe2:H|Y1X←-p:NG f[gm}X!Zs~tP;Vڊ+P%~(ızh9lӟsgMO<-jsZJ ƌ ϋ M"b0(eZ([(\,i܎s=x2Q'g1,q8s9d, λ]{:dCe]V+|xLRC]fе9Z'vsDJ(&P̏h+=R)eQ@x썺p+@Pyk|dN\Ev`Mbn$ -Ud}s iB? խuH~6n fpd jh uGg?|qsz0L#cF^8Gm^V{ҊyBkq.b ݴ\PFONcquxA[MVxX@JH@V0!iZti\GkRJI4ET.yuf$OI"#iU}^jN)Ǭao {\?6a-)qW$bS%;b! 2l| :9;?k/hB]kSG@^4d %W-=uTWuųj2.}=Y3-zxbBْKG WĂzuHֱ^X*Eڣn%աz2:@cP -z%Q7>W2$X2v`sBw.߅оl]dg%n6^dK'zkXvut<Զ94qs\i(x%0goٹlzk?TMk'l:>-|qZ*h _{)Oo: @iv6i#w7a< mll=1O}_K>:ns8y0{ /XR ]`jir!St~~ǔ>ܢU~ 8Bi lב !9ߎBP; l)N{ 0;dg|:L5}理Ká%HK8crzΚc`T3}Grr=M⋩L G,{IYS!BI0IlD|~.ioC =0MkX>/iioo-C^>h i{¢cX5hFG|g>+uV@MÖ~{N'$,Q@36Mn#!)ul~C=JM򍛡Sl&8jwVx7)YP8%=$:l ADbgR!VnZO6= zOsUº$ੳF|O)`nd,y X = zC_i.-7' Ps$4Zv0ɨJP۬>kG;r:VM@B#坊٧Gpf;u~lnàDvǛnYJ_BkV4ދ6)Ҭ9kS63lz? Q?IΓ z{:[5ĔAw4jQ1gyK1BNrۙaV CflbW[{$ӯ#ley/U0^XPݺeFDEUQ- h!{D {]х@V<ke:j1GFjYZӫ7ʎ>,=[+`g5OxȳfX#F ^9JŸv6zA>K)q%'QKZ+[X >\g3os1z'N^A6_/ bH2if.F|{=KUsc0e22"MĶ'*RƉ~w5rI />n)kOlφF4;B#vvy4{L-m_I(VDűTmJ Zܝ^\æI/t2Wuh鲯|eoVVK]M^b?gzh` m6|ekBP}I-Ov\!tI0?(2ml\QJ~]a -tqD5,4 TfnL:nr;LL'lNޭY(Ս"ߗfHoZq4J=rYՔ{Y_QM%ŗ 4y̾ep%"'5A aa7YJJOU" endstream endobj 44 0 obj << /Type /FontDescriptor /FontName /HKUDDD+CMBX10 /Flags 4 /FontBBox [-56 -250 1164 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet (/I/T/a/b/c/d/e/g/h/i/k/l/n/o/one/p/r/s/t/three/two/u/v/x/z) /FontFile 43 0 R >> endobj 45 0 obj << /Length1 1855 /Length2 11169 /Length3 0 /Length 12316 /Filter /FlateDecode >> stream xڍPw { Hp aAB@pCwwGv_^M3_{}`U␴t0:@]89D*R<..^N.. FFm?r F]04 ryɀ\ UEW;7/[@[P %C@p`g FiGO䍵SXpHڃa r?e, ` "f(s9`oYk& s[~ Pكjm qS`O; OZ 5G0Oc? py pwA=!7+&A-An AYI ÿsA]9!v{t̯`3d 0ӹ{\[;?dZZn8dya#{vsqq N5wmOGJ|VOm} V/ ogsx[߄ Xo P?V Cpi,vq@99YZ[)%psy\ ? _qQjO#nM_k O 3F\\O:[z? ?z=/yvuy  υr_ iC$o>F,lqss O P3Y>=*Ow R @0ixOKj c@N˓ 9 ҿE(7 rr/07 qГ?7 ?eCOQ,ߧ>U>}/|k/!§<§6ADS"難w_j=ÿ*~/|_7>m'M]Tx):?{zBX^` I `ƫ/X9g`M78 a =xsX_{Uh}{g^sdcz]Ɋ.*tJo"(2f8 g\wyTt\(P¼+։2 6Θi6AJAwb ?}F=^4oO|6s+)9~V"ɔw^nbhddx.ȉeFoht4@wu$4BcQgN+?B=i6F=WdgX[}uw쨃Y$Pm%N Lee4ya7{AghHL0e=ۚ6]l^G[qx%E//A&b/]- #1)6"mP>zwҤ%TK@Yޜ}T ܶ,vD` D=LpL/#sȝVȫ?|ڢI,0U2N%MҳGW% #e!+R I%k%>U:-Ix㮒!ncxhYOS:EwPuc2ĉ)s[Jzefsgdҳ3aW*ǘ+qU]a/\c&Geg2#M cq z<E[{*N䵮!0у@3Ǥ#2n|j* ¾X} IyO'{7/~ sf% vjT"JB'\1ۮ8T0žj_.!G]ĶqYDǪRL_m˜I nET&AAQs-]/ teI,6xx´3EGk ڔ-R֫k.T[be~3LfHXM&KߪJcOEI*v,7.=XdO-Z ~Ϳ(GH"HNB]Go#蠱)#_>#g-1)/}ˊ$L(Ah64Uc} dz0Vw%nPxп 13 noBoQ?I xZ8VS}qWI,6I,'Ų  hcSQV)l37$$O,I{^;O!򚲊CұG"VҾ?ίϋ",noh b4Dgh  z4&wJWhEi=ؖ7 G+$wQ7.mATx|߭&M\| b IM4Ƿ|ݭ[y!| qs.4 _eyt:ziq8@ U`ZMCԚohi\:YT{ML%G9*rG&/Tz*ɴCOLsw٧G#c;=TWcsgrOv3[fEٌ1i(nH{mb&PTf2mMG-kwoI\  %n>p9h#:KN}ڳRvVMP-^ zk՗>Pc/UF#Zk^${ER)#5f*t_0.7NB<''q_fRsʄRRfl$(1$fo'7ySG;dH4sڵ-P y1yT>>҈nHY}33@:FdzhXiM+DŽZ\B.Ĕ-ai>09I VCɛu\Lx9xg q&}A+#򴒕|IEuR'K:q,Ҷ#g^*Z zrZFhWiyW]o.J[Pm.d#JB/\*Ry=wUdၲթ8f6\G~SmԎWQI*rGM`2.M^"\ꔬ_!9įҠU}ڱ>fj:V*ѭ Tg@ zV9w+瓣 Oɜ2 m6G͘dHE_📽jvWQӎ+qVLӠi FE h^h9)%{_8s{(4kur}T<}öҧY:Rq @m!Ϡ^΀ bKaԑb nuKN qxYFĠ<+uFgܠx#yUZ6|GE܊-^G2P//~몇`=E#4E*}7=fOBkIyV-0~Qb ~iodf:p{: %Ku ٝ,_%^T$WHui VΒD ]D\ԭ 4#t!\pV1 ;h8I~2WW Xb6řn)dx_dEf]+M;eVd6Tƈ/!W%Ff*g="=X0vH8I_.?hn f+#P̞_rkpJz>̫ oPh 4ϲ7y`@V"c:hbT <%]+9>\1Ý"dAAM[ Bm8s7wDs~?E_,ik.`'#A.dKmq8)tvٷ':d[lL4 Q yd*yǓ WT4PLI";S^GdپoSPJ(IHM-Rʇzbjc739~5];oEHm$YbD֬VDvsz yP֐Ⱦe9E!:it|uU܄!(U7ϗXxۖz yrCL_i U$ L 6|Kd52D"kԭP7fSt!B&;\qCh-Tp"&_1߆TiSP}leoBX*11Z{aֵCT+ЦQFL%_>WO*0!47=4\ǰMrsW9a2u]d~xK^4yQ[9˺seoJ KSVmʾz2lo{-J=Q Qr;G6y'8`xx؃3( 4D2J}sâAwz@ޖ^-5rJcFL\N]ZjSXR֮% F#@-/@ 36/q6-󇟕{Qo}kMwbaS; N:cM5& wNOBeU6 HQ11#Z#nFAn'Aq[I c|rsH82ѕ/3qptNVa ;0W`/܇16IaNw|'{ym˽ӷNW9Ja#t:q}\YX:;m4% w@1҄VNnPrV* Le R[p+sD~O"\X[k8PXj5O{] +PQO;CU߮kpN gc!8B9Vר|޺,̂ &L?xq`8.1~9HV=h-)xMgUy-`%_-,T'k [|)[*gq߇knҡ?.V}'䟿hNy`ѯdBʼм4:N( xgW9':r/zMU٭,I,00*>]-DՃfqE(ac:*0oY4ݯhaeh]X@JkzG8)0Filg5<GD,A/qZ?y^ƣi^K-+c^@[$U&"*45ck-dҶ2ݶ<<*Q\ϧԫET"ʄ*fvh0}^l[?n+Z7" 贈 j\X4k%**(b4WƖW鵩Ezf*˙9/U %e?㬕*ݒsjcv׾֝ )cl};toZ9Enx)tk#]z1HCEtG0puπ;Bf%u:û:4x9P]*$Qb{8S-Ϙ+@B,Coh`: u@n t(H۸ GiU`49`@B4advo˔&fu;8 #!sCԗ' (nh(/GEӄr֓Cv7`J[k?N죉[8*4zz R =Ac^虐 r7NpRFd=pb_eS)Rp)yWfp.ԇ."O aiﺽ8uP<=w%h\5+xH{y\h6ށka.9c^1>hFǰ ك9RQP׸> <&!T $VWy\d/4!w&tt,8PC;Em%ܾ̈́Hnm*.y2{AeAc39~* ǚ.k͔A:kn3r7[߰3)QɈSeN2ݓ#H/H,s% JXvKKzUɔ~ \f0?RZɱ j_M kl$?@8#/jMscٗNf!m&;n,EchCԞHJ|_| S],*BWI0gŨ5ckԳTamC1^"in6D8˙*~',D1Y[e 5ozf},|@aO}_m9kTܕլRXdHb KʪqQqcJٷy2c!*?s^v^O#Ŭqvs qh]lF'ج4;"u ܤ,Q8R&6n3ɤjxG5r{wg]o9tfO<F.*9kS&$0 f^Mcr0 ljc\;z9Ieڙ̂wK 'jP {(*E}ܙ?[FR|&I%x=we0c~KE_XpQ -6yagHʲ6]7uQ[?koѥګsVۋ k:{ HڷҮpŞ5o(mF)d,~FhՎ$0 U #ě,><䢋|\V54󩟍_:>vroɎD9Iz(QWXj^c5_|(5-ntK:VGQY>+0}uJRun 8;QU+=jkD"K?/I*(k) 1EСZw$?`'KTYI۝}>y4EІWv0K4fn2u{ݣoPZ^nçGdz+~_hov{&duIBrgL\l+ɗ˚ٴ|A1MSul%|I>a3ѷCSu/(aĜQs][7Ġej>3ehdAj$䷦ |xL'{SA-"dwlӡjtiiAyzIX Wa]>b+] Q4m$Lsz2 ?I0K_RӢ&>~lm+v}Chz |RJ*3CҽIeW-Ԋ1/z\S5l싱J;`\_B+HLOVЦ-pK:+Z03ooך /DV6R$MtAAm!q2.BEj,q=Q-W!b  '[7C)жzBq7BK0\I;lJ?;nϠTӅD0'2"dZ>ȖFvmc,gK618l6`HbD*w-:XnA_􋰭 YZ6|$Zk4htw-9wLZPq*3MSfIP+6gYR{-EGfvɒx8/Dr[@\j:Zn Rka~6_6~ ?PZ>QYTU,Ƣs*\Qexՠ bV!X[.<|xz|d%K꜇~b >A [.^RU# ݨΊӼ׭6KޅBX:+Ax'V\,7\/ހcxã[zn6)Ɋ.`P膼CóEE81D˞ Aѹ3qM BT϶{39O|K+ `*!;F/ 482Kcoa,Pψ ||)rFppePŲ56ZΌY&[Uì8quO:Q_~Szh1d…9nm2w%qFg/sĴxx(qL# XcQbXc8Gl0Ja8 )`Uknd,Etm/ӃJ({bRl~m+Vq"bŻd {{fs_=g(e4g iOm-2w3i _SIE>y‹*%@t_9 _KVx, p2RO!|Ήk5|񁾰Xv1M`Q c#s2)ҽחZNf,fʯU ?\i+d5Ca03aȌw3MET9ܰMAnw%1 XP5Y9xQ!#&TДW#G~b_1>"C,09œE:14~6P_Enh| (Dd rF8Pfh{bOmۘf~ñ^ bufQpJիO|gX>s]AˮwQZ}n;uQ$ίF^G]yF\!xsNj S;snsfNbH`udE݅9-zݺoMHhVZu#0YGp6ziktL ΗD5Q$̺0M򂬶yxBʅ{[-,HGK4Xri@LěDW7Vq'je0'p͒™h.QJ{f9@|-~1=B_LJ )n?-Fz Lk,~8msoZNK)-JevRY=P8J0;7JrZj|n;Z$y0" ݇%Gن!6mbJ]oUH4KN${&79^m(S+E.zLP#ap r]hߚħt0s 74 V=ߝ=(4=/{R@ښ1q17yc״W_Dp K Wn endstream endobj 46 0 obj << /Type /FontDescriptor /FontName /ZGGFII+CMBX12 /Flags 4 /FontBBox [-53 -251 1139 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 109 /XHeight 444 /CharSet (/C/D/G/I/J/O/P/S/T/a/c/d/e/g/h/i/k/l/n/o/one/p/period/r/s/t/three/two/u/v/y/z) /FontFile 45 0 R >> endobj 47 0 obj << /Length1 1859 /Length2 6078 /Length3 0 /Length 7208 /Filter /FlateDecode >> stream xڍ4?nlޔuUdG{/.׽WfCV=#[߭Ϩ?;{20Qla($FD TuML,xxL_ G!Qu`p65 .Rt &-/&#`?(7y@tA C\\@LNNFW: sCl A(O k' B+ p`C<`P'i@7`G1Faw|OT"MaZο+mW -a"! C7/և2'Ը**ػtdxlffYv)[p'ju',hX|Z+v9$׻Vd!S!, zϟ,dɔL~D*ҒV-U86 d +U^NWxs2obϧ6%tC.5t Lk&iv=dӘp`4H5D}^GV2uPGyjrErv':;Lzsj@cȑ(cΚr7WtP+U6o{FF{n1EsK}S^}?l?t<؞8'$)<|?[~'NpK&"tp rk O=EU~wԱv52^kE {xKKL-X@ZU=G Ooʓi{ 5ډƁٹV;!tK΋_loH@A&FOcי熠̻DפDMmlǝZBFMR.B]!G3{K虪S+gI-8g| dUŴh8eɏ^D4{VA}+Cե'&= ^mBfss̴2-}.E"Mē%]ZfyeXp!ap%@B̀BBP=(4uqE,s{SgO m;aO0U Lȵ.G_9Z 6%*_v$vG'h ɺy$uS6|s1.Js.9llcn#~{Ojyܕk- >0V+th#|xŷ蓡7^O֬歄'##fO?,̕i#;RPZ!xO#{k rqMM W|ս*R-aKWzCaʁMBT9TE=g6vjzk ں) QrZut3}&+-%" UA\+mHk8f) pZ|(?}FVcR:u(\U8&"`1ǶbmxtvuA/f_t Ӽ32щ >&FO&#<M/PM=, &xju AqD|0?|7+}3l%LZxlCiJk4>~օ[=uDWcƜ6U|H;wIZ|YPR~.ME>/kZ~~5--BDRGڌuW!cʦN0yK>F1gi:_.@V_hf27Z0wWPP,AddPU4DsX Ή2 >⑑XoOaTb/N3]qz{vDiԆh?jߢ%޶Kɽ7rF́߶xJopsy6d6<^k>ɛ]Z |1ZxV~7Z"mx'~["LxkߏxM;M͇$M*Ry-h?QfQiK7ky؎g׬,2G?XHyQ]8ߑJ]Gz9dMy+k ´#yGƝH +?kW :zrx%,L?,G[Hϥ;W|>N$5GH 6 l\,LWa^~/1曆 4V]J)vrX0U&WB2RIȏdOtSXpJB{c-)& +8$wo~nO_4ڏ,]4IfKekV?rI/Gk+G=x;:s?Dk~דߓ_Up,w.^Za}qn)'?.(pѵ'K_]z"O-Y~YK']rm(ɤkL4½]@{6*s^$ K7\')gx/ /l69^wq᛭Y 64LWΑBgzo7ro̷V`KOZK}$T~﫸Ν^e;zt́j;avN B\*o6/\0[-Av>p3qg";Rǃ`D@ yqw)Asly#tb g^ KzkU-LwUdTHxZkڜb%vĿA#bZI42 CNԡ rz%آbɺ(c\j\NKDɆv"J@1\$Q?{VG}ĿX}fe;ukRZN575Z 9TykǷ' u={?!)xLhW+#F#*:ƪ2K?;H'B7c>WD6/> K^Di%\YJ701I C &R~a+|By:b z'dܼ BMF,m˷H\0Z0S2!/G >&Q;. .YJQi0}gB6F=4:^g#/*gjqќ$ ~n@7ϦoҾy(L@Hl&*H 7i&Ah0aFN|`(=Πm<"u] :vi5 Q6&VW%{*L,>[ON!62+o(YUВnՖi_4qfh#8"D<պufxm>&+7&q0_ E9:O DشP1 I=V۵[Ǵ Å4ic^UJVtK"ߴNܦ2ygwѵj7$jOx>ZO-m8)ިsl6k:?1_u$O o[,v JzxN:lQú>GQz9wKn{B@E^/⤳O~RN&  '2Ç:I_/7HW${fZ"a;YnM[BQ᛽(vc<=!zz0hv%:lk LvjIѵJ<\x:E '&K`wGga̢6;>TYFVY3j(suEn*0᪱ՊBZ&'|f|492)2E$nj 7,vdLꑘ_Mӑ:9S.'[㸚a. endstream endobj 48 0 obj << /Type /FontDescriptor /FontName /DUBDZQ+CMITT10 /Flags 4 /FontBBox [11 -233 669 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle -14 /StemV 69 /XHeight 431 /CharSet (/A/D/T/a/b/c/colon/comma/d/e/f/g/h/i/j/k/l/m/n/numbersign/o/p/period/quoteright/r/s/t/u/w/z) /FontFile 47 0 R >> endobj 49 0 obj << /Length1 2250 /Length2 17878 /Length3 0 /Length 19211 /Filter /FlateDecode >> stream xڌtk 6ضmΊmmܨm4664͓_tqXcd=5Y!'VR6s0J8ػ330DULL LL,pjV5.V<0u~Č]?2nfV33'?<1cw+3<@G.lea?*Sj377'a;=@h`jt *>KWWGFFc;g j:%@tvJ`lWf p5K+U]=) P(:e,/:k`f`/ݿ"`ne (J1z24uq7v7560 aeGNՅY9M?;x[ٛ#PZ&"?2 +t=M-WrdK## 9 puvS`fe 0ZXa?l e=f_>(Iqг1Yؙ ǃIoտFi{sr(pXP{eAc?dob{ 7[ۿTvV^6e7׏wXk *ͬVc=-l[F+ +Of?]*9Xu?t gjq|oc7_0vv6hb0l02;~>;8Qv_!. `/d0JAlF?(}(A,E\F?E0jqpA&r66~k8G#f?>NnDžh0A&/dh%GY~#vǵcOgQb?`c;QKǏwG?ެN0y9_B|\>B q0Z:Qz8#ҹ~d~x#?Ge$ tW[S7Ҹ}~,oO h `j]P+A;?KJML]|'<҇-Nu+Bs:-Qn;֏cAX|z5=W'_ Vn\'7.$|Iφ]Yh9ߢOS`/Xl+"AFpQce_>ż XW֌aLYnZj$82Y5=CԶ<ly>2>[Hvf 3n*O7rן`=@i dH0>K'\B&&.~q3\X 9E[4wo8FTy_~Q*B/6ʼؗ.Ȋؤ%wG" 4 wN4 pߙlUT`:h<^Ty|K%0E1MR8 ~{քTMĝخ9YSigO]9eѲ!_XQ?Nm֗@N*LX̽UpRΑf7\Uz%l-^4pۯċہTёo-=en CBw2aLH (3b/$f[oyg =ŵW¸ %~;‘3)l?TcUCM8 ']z]@Mm cz7O1\r*GJSJ6%$\

    P==o} @᫠Aݙ6O#3RLٰ}p/bi'9{v+2ښlIROÔ ;T/ O|vHrvV=$'GvB͚U LșS!iҏ7ol;ɕYx5UEʱE 6ly}zHۖ %H`@RAB|TP{԰v 5/Ld} finDڑ?xȭ37v&Rd>c$Jjb"$M6E_y]|o󞌖E- B,iikPCZ*9WAj*l/Tb8蔃|(d;{F9QM=$8J`ԒumDk sT_72`ŕP2vQiXN3!MP ZM<퐉c`8z8lP2+ցR^ϳHhՊ ٛVt\\ !'a9zB$Ojy&ϩ_4bml-{VLfb։[S~>)3c׎*4ZJƋ .6.fH_{a y岽qcQ/ʝ#Cĺ%9ɤ(,~rxFI(6^+,T4k6bA{w;nEO>S, 3 jy $Okh[Xh>΋J7׳ukݕYح< QxA@u#ZVxd/6^?HFLSKWቃ% g.^s  ?p5Ea 0m3õ2ӵ]ir8\OaT`ԅa4Mf ɳo71^+Y$8_"fM[,epBiߢ-Z%4Zn&Dz_2e1%[ ;[s4h$DpY ʻ쭲4 e#Gq^ z(z9KO17_dQaf9rDR4jHYy|'4+kǽ"N w(v!#BRɰPR3yBz Z79zz؏En]џ4hF^uG$h׬԰.c wfF!j mq50*i 'E/ڷN@%|% PuYِydhFPe dMWRj\ ,:CmʹU&KJ-瀹4F{Cdp<,x!ܱtFYƍ  _}GXFr50ƅy>/ܷ6oSН\1~\_lӤݏ^8d`|Z!%6a i:9'c¶4q pQJ5#ֻˠs@kAEGmu02Dk>1UB۰^Ļz4"'E} v1_ Ը g.e5Ⓟ214eXXZգae",QJ;1AsDR0Y`%O@\L#h͗K ($"7/{Hf+tS&NMX8eE^]",n<1\t~&J qs`P|~󪦶jĉt9,P1 P1>l0]g/;[8FmBn (}f. \#etv,F8\J%Q<*]X0<ϰ)dYᜂbxsbإ*I/hMaتFB6֏8#کRY_5-pIʎ_q+f{›cxUq( Zoyv\!dꬅ0<+Bĩ$Gy'0Wbˆl([/Qxv܂\mD?q9}]p) ܉fU/Pb'gI_ Mm$!l(29*rj#}W~GJTmְŨuߔBaRO@@awKgspdLkZN3EǥU׳mHro^y%mɲ)^Bn|}ilm0!i*\̯Y!#bR(.Θk)p{ }+S 55y6ߪWlx)RjHWk;FC͂Ҧ BR)| g@w{.,`|mrk*ab/mYZlS Ȕ`I/X7R2NJI$RP)]爴4_^[c ɭKuG)JÌ%2|l= %➇TF G ]J)j)Ğ镠tR(Slq@z4C[MTWqP %FS>֫F`FmҶuĻ_ngFO|kR' ,m2ܼȜR֯Li{_糞zN@\sxrV A]oNSPXn<_xdeHǩ/"Nyo|"TPjibTu)a!E?zO`(%d>jӢpqN8dǀFSuO}|g"V>hCՠaASdC2s3+cf&ۗ:*φb~P{ܖdOBFK3wPC;N¥ڨVn};W'3h(bwpKk$eNoO>Ӣ/k 3&'YUDY&?<^E$Y>AK^tSܷw} Iʻ l3 I:},JɷMƖ2#wуȕ:ޡbeB@%!kj>MK#b2ڴKD# zK-HHRㅌ$퐽%ی$qzo0N ϛ{FrxW|JRf6$m%b&R)6A=]%oq (0~I+SCz,e+ DOuo7Im@ʐYt(Փ sOu{1?Uk~%S/je5G"ݒ{EWMErpVcW6󒻮/3BҶh"궠l&DHMf%yc Ht`9<=Nnkyv|ZA`N8䚹vl$/Yf VJ-IpO? =Hy?7~nvj_']O]Ed[`}D|\+u#5x)W)xS<$s l$FwHEBa~sisJ1MJDVHBv׋lIc6=+%~߈s(E(> @6|DJq|3XoxGU'A )@"/fB~5D.{c YWJ0_ M^)uח\A36+Č2ѼOĶrUJ 3Lل}>b`IJ l}f2E9c&iq*廎2 &uӹк/~{=|j3mZ0J`m@b}wTH&5s8'{ANz6<+Bh]H"-MhYTd [O9cǡ.55{ee{`&ؖmNb&oJ rKqϽ|a!4'O_$gQF1eq:a %thuT\i#& OjU;+7(NiX,x20X:B\ZꗁN?^v6% BsG0  ,/Fw*fqPLgDd|BQyh( Fl+Q{j 0TU2nP ;> "yRTVr"B'mH~ lg=Ŧ|dCdkV7")VL!mT[1bJY r ᢺr=;.5@ ,@0řK:;ڹ@M,?h&8nl@ˠFǴpbl)߳KWwb%%fes>@__3&Lv:ِ,E04?zJb"D4l}ӹr93l!5sYsf#\c+YgaA\!b5ET9_i#y&Ih:ܪWcn\ߧ [̀+ t! vrqll;ni`- ㇹ4zʖŊyEPz<8|zf&"bA@0A\w@$fՀH^ZȆٰ6.Jc̣|v灭up)C߆&㊤lwqGj,{'aUb=.ͱzstQuב.ZLٚMhsf+R> *:<4N#[fע~q ؆f/? t0y: Ͽh|.u9g`f ]Z=Xm}T[DDՓš)r /a6RT^ƞ`ķ5TvU6J'< n/ԯQ ܁)Dc!; ֜ MY8~H.5yʪJ YД$ qzu!1ޙ TfUtTicΞVtM$n^8"n42SaTc{sRL~ZCݚtTKwˇI)"$ӟ)07IB5Mf륚;%  WϚx*&ֿ\,pUgn=(%, u?#9-|`[7qF7]e螡"Wa(onbp6T=yYv#ɗp\b Ubp?Ŋwyy*a<^|[yv\geH2Go0`EX2g ݈ #c?(]GPkZ?i ?PayJ;n380q(%eF  =X r{[ؽWε>Ԅ!5Z+o nά7ʜakOko8j;\I ]=#̬St#Q)nK3e˵%谎Ż ջ+`7tv2TЬj5%s )8]P3/&nyF0SU-֋ZtCT-iMS5uťJ+NftxTueGNvSE<p Ҷa?`(!u ?.# l˛"dE__# f}#]YUjvoCu0֖xzB3[_NjcN/T+Be<(S.3|$^}û 7_[!40p00J/%4w0+'űwWGo u9x]nи79'mk$V7lcMSnX,«>.rmQ-Cv!ʜu\tS,-K9}uvZl1z \vw@8x[>S#N*wv`FxWz$ə(H9cD[0| M 1lW=H)Hhj@0`e6P`R>\5TWMF9H6GWEf`B_^M1o~(-A|#*Gw׉kX^{胝`28$5s_r%ʰW b.q2$wpHQ!"5ɍ+{`Lzv-4`RDe7tA9P %k= @,r|:yxF" N9_tmZ{8ҟ3MWQBK8t*~lp2XDƾ)z%Rwt ?]뉟{nx'-e)nSP Fl#BQ|fut r-Re /Z7E_)+vɋ8d/j*ӝvz>g [zs %s!dTc4<D̐7c4T }jb<&PdgQJ,{DѴMt@Pd<9[kS (IF9 0|m@\k*o:I)8.ڑb<=\!9wfva1$"lA%ۊR;Zru;$º`ޚfIn!8.7O݅2"CnmRyi8ĪWBg,]0FZElaՑo@E:S}4ӏ&'Ӕ7ܓﴎdk}b BN\E ^~ % V8I QWf[\=.y5tW0V8%D=l+ǎ>(oƹ-Tht)FU[j5fZrպ9 I,agU6TPMWjbk?_13ĭa%? $7xze4ĭ㚻 b*]"|%''\v; 28 cETG1qzBtmm[>-38L~T ;QUMcjB"ݫE%ax3ΥC۟0$*xFlR~M0ky(mB6ߥ( QB=o u;b N?z,hrm: Q@VSNYkm[C#vMѓΎ4< MoXX1wd峩[C(F1 B578hFCܹ`!@_*~.&: wb=.=3 wyd/UZgUSIZjqrGyy 톬7%숃LY4E!$K9d6ܲC(vi($Ȯ~59h/Z| $(=RL&i5e;g gjUb֟L|-Kt;PI  8p;<̫ɟr^S&N3PT_Kn$%c7Ҥ- suw5{T~UQ8l.svW}?'?/,IKlS">.?5$}ꘙm׌9S(aKb;17Wao +MiUEwr@\U Ε)jIC%s5TV$Wk /߃v9o"WzodY_CW4(c.)`lRI-g׌j^CB?l C0i{ VeUļ *ݭ0U)hA§/yHђ6tdtx&ȘK5J 8Ӌc}ZO. =ـp;W4 cO2:I&5/1mU&6uxOP_'9Hxhmr1mE ]{0LV KM-ikn1c,sU)Y;mI{?_ˎY ̴%#.{G[NM+%xCV~0=I=Gq=Lr1ph.Pp<`$jݠT c4Z|  ɴ8jIEo|GmZ >l ,wzfkw٫QP[Z =IN( I^H8X7gd;X`beZCFttD#<<-MO9a^<-T#X35`:j[CHK7 /S{5cύwoVacibuڰ^|9S 9~Z,WU_%n$~9/`f1H$x\5IC,aϻ.=R[!&?dNEb"/q/Foyl;u\w)jO4RӘČ+ʬ870`MTP%`޳'!"VSS{W^'>͵Pԗ&`LE [ջ#nw2ţ{:쵠5š6X#8]sH̬QgǍ u;#2ǍIi^b{u*0EAy -ػ {[uApvڬ7~SWsSި:6]R>ēj Oac")*9H`vKesWp|G9FSHq.mDEDF76)zvb%á֯<o_ م?6|>}f% gU`A2Q{E\8Z>ъ4 qvq̀О]fYS^#Ǹ.MK@!c' XH /[ب -+9_ym).NFaI.ns'evWJ_ sҲ~:#t i@ ,t5̧ x Ŝ,5L<LflF 5 |W)N9"Yf=8V$+W_woǚrM|XDM&yڞB<#':rCt"W%d #hTnHnDK{ ʓ7n"9޵KKpTօY5uXCRd<ZRr3@$RwUz8m8TQpۊɓESylRT(02hC}M. th=FVXG'_'7)9< p%>==coUlL\)~RyZig %1M4srUc%[&x[%JY5ݾaI)*3yr?`h"_#0W؀\ِ =iHh"nmKɮ@,QJpx} xv+ ?]YK^_.s?j<{ٹӞ:F,&c{!q0w*{mFD43<>Z[3`9^ H_(u|c64=-PT8uxUNxQu2x̽8]B1\|O*Eer7uC^MRoU>\8 \5[`RhژETىh4Y'Wdݚ BEt-G?=DZSh$?.^xFʋQEC}r@ aPRƦ ,9ϒ0!0¿XTxK# y|t3'MIwh{m{+.K*pS,xhl:GOODXN5Ur`Q]m,cTU/gp[n˄b \ ӭ͎vmɗ&tխn\ύV0]]c-fAzߣ_ lX)0_#Gvʍ i±Lm !8Sd^2w}RfW@)s>1>χ::qI+tLPw*v)2uzP8Bk+&Fym#ݪ91!Ǔ#!r^O!3IsĐ%2fZy>ZRȓz(dob0[O jE%uL}Gm6\/xV.}D߁U2x1Y T nP(6aB찇\uL#8iVw4'$ Q0C^ߢYℐyU!{2p wVG'^RvO T߭ylҍ57i"-o6Z[[^O>a#=ڇ`D{2p<ԛ7$7Ƒ6κ.G7mgAͼ/D0g>^ei{bK|}~%\.>cDMY%X|?ۇoĊ{\VVZnބߘU}`$f2r Vr:oSM?W$&Eѣi(=~rLU4Wb3>.k%%ot{* Nj?ar4kme ~@n]0VuPTW}#^&b#&6E@6T^9: a>svyj$e6Nt-Pr~#H3 H1#>GHCfa[گ)UXLl<=4( endstream endobj 50 0 obj << /Type /FontDescriptor /FontName /HRONNW+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/D/E/F/J/M/N/O/S/T/V/a/b/bracketleft/bracketright/c/colon/d/e/eight/equal/f/fi/five/four/g/h/hyphen/i/k/l/m/n/nine/o/one/p/parenleft/parenright/period/q/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) /FontFile 49 0 R >> endobj 51 0 obj << /Length1 1528 /Length2 7362 /Length3 0 /Length 8383 /Filter /FlateDecode >> stream xڍT}6NHHH"KwԒIJ,KI4! %tH"" !‡>={f]b74Ru@C0P@  &2aHP0ڧ\ *b@@$Z9HԝKFÜ1m~B҂nP4 FguG0FB`PUp`Pr""^^^`7wa$IO8@Pw(EvL ` sotxP@(p``"? k6Qa ; P`7 p,FF8|'_~ R5 E00/"\OY᠎ts"0$ΧCC!cf]H/_# J{ r"$@BE~7FAE(5 ?zG0h"8 = }}h`֞(ϛ+bjy_MWOԐX@HLR +#?ku6uHg7 ϿT>ZPB'_Uoiyü0  pdV!wPs蟛uyoTU1ܵ`X! qSBuy8 5D~}kB@Į z=q!:wKMk$`4M$WzA#5=#MF$"\- *0e"LIi ?Ӂ>P @g[bi$D>ԥ:RKhצy:㜜("+x]5era]Xe罹Zd~t}/>2Q, ]+ﱇ aW6pV}ҋqXӘGA&bXn<>q;wM7QsxXٔ1FNFKcܾj۩3E)Ugm^M})z 7ר/#>Ә{Inؓ%..cuI7ٻ $ 5 Rm"^j 3mJ [27j'zsH~ZlQI^R6J˔K|!fC-+:#MXf,<j8uXVIܟ ]zfĎ0X.CRx"V[A&Y0qԩSIևĚ'Cߑm/aovg_ A 56to>RҺnNLj._λb–74,Q݊? c$iQϾ6rMOQs[yRV2_WPatTÅ Nl |{8wJAf8{+/cތ9Ql 3Nf8MSn/RjfO#m暙XW ~3[sw:^XLf4}q)_.&,O&K;gHX-׽M`e\4=Xq7}m)f}[L ݑn\{z-Kpus︀9&?_PpATOmPZZ Q}D@X0M+.ti R+] ޤ;Š_#lv9<7 jTT,ri6u MY6bUϚoLr`l;ɦ!z,< Z"Vj|IN.n(ʴUȧHI.lHch|[6H8iZG;#uo!$&M4mEoLފ:f/gԉIۨkGXC=Dt;s;.e& ##/mq'KVR"xI'YGZS.އ&<~&q\(^ ed9:aq8q$jdO8K*&8t1*,Sؓ"ԞP>QZGЗqUZy mIKU+ϗIQLMN8_'J2~z/`oBV[:BJ4+dɫYYU]]ʯZP8LF`yY2^?V y_r ,L,+r[Q{wsj?|p"=2U\QH"tw'eNY\N3w0ͬKc}-a r_׫@Ĺ}RgCwi}ԽRy3$(z@QV#B\*M6RHq#K"d6's}zÓwmA/~6o43U_`nWY"WyǿK|NUPjV%We=s'xt0riL0oAؼn 6)̀Ȍ:<  ٭-^ΨP|ƃZI[ܽ͝N*DX_Sn;Tr%?8춧v`&UB>5\4`VS6+z Q Mî T:5i^)5A9it?|iDuI(ўr{)wWkFbX>tۊZ'zվEdI*߬fۢ?P4#|oAM af|W@Zemݍjܺ,(zz EmҖ4 StD(O`yeDxctrsqꤢo0FRȯ~8̺YP"۾ӭ˾z4T[B*Ahnm/+@c̉a5x6&{QYovf)ܚxAJS2iϥ8oTy.Մqļ#+`q@8FX%{Qm!xCҐHWa![J"c%ېYq:hZNSw4' ?jz5$Ng Բe9}{1}A#ULaĞNgk!ќI<@2¢`@E" t@]N_,➹ vdTs5Z9=։ }^Q0Dx^#qNӄZl S ~م?:%oDgq1O~UBN$9$֦hdwL Y4YzūWM߂)m8 /2u?q,+首>[”Dx|; Υeۺ-MK䈖X4j}h<2'bv*98}E3JZs^bGǠgtrǷ>I£3s2ʢB?1ˆw(}~yY:ၚG#W@/7`J[bq,Џf[ۇl/WWID~Xѳx"T 6Η#S@(~'G^h`U@)˶l /RyJeA _^M]d t bYDI~;;CK896Q#:t}v|X*=NDFLF53V,dYSJ(gF$(i7R(*2-/$;4B(KFFf$+)->aK18yoDZ"Lu3 GP.Zay,䈧W9l|ahYK2XFAcXc'K<"=Z gR0.,1ڰ ayxI9a7 Mdno )1[6z!EIx {P78S:I0, !MWG4+{4O o p]ݝ&ff*mr ^f):RE:.&`# *֋l')=6fIuʫDe-X>WUC>]ђ"顥8\bOJʡLe{\v߿t$1 DlGn:(>c@ę͒A%\8W~)+ʬpSͽ2b/F }60yT"dA(0@Mg̺#|9@5G Lro/"Z&H45bjQDhCF7 7piֆd|YMg0Vі%\2jI l+ZBGg#765Y923hT k[IưT}~{)#Xc["|Lw/-x!s[Hiƻv \co+N]$J>SʫDE; >S?iK-ޓ75o<ᾁ{b*qw`hݛK3hQMy#:=U Iwas"}5Mv7):PPi4]f؅8N˧p(J=5cH"C>lCuB8dXo'](43i\dk;=2\Fgb o&rk˗:JV/Qt l7-HG=["8? H:w|ivimT^x ǧ=۽Ⱦ* 5m2c*cίq=٫vT}l7\xkVV|B^ [uӷ8+Y,:P JQyz%mbȇxh[qW*7_#u7m/?! u0)Pw 2ʶRxIb{[%Z8z|ŝ-(ʳpYA)YuW TMMӴ*=7XYHop^18,xkf i3(.'}_ZocZEaYSVJ%캿(!Q_7T12}6UV&cA7(]䋥%5`_,kIA{&yG`HQ*Û!㌢(;Q10?J}_Vz5uk(zy~/'^rjiVgsR#>ޡMz]jkmhGS #Bs)OB!$VЦۼwɀZՌ: r"q{DQ~ωr %].\0?~JR;e`R?90Ž3[(Ys\gxpfoinl'٩̌jf?Ĉ~~BЙi#/^fV7i~pV;lF>ZqNQslT}jX` NL*ԝ6J;br?k IW$-1B=PG]ns$Ώpn:gb.S[YeהWx3Y2? c'w ?ٍ`=bF}3΅ztU>{Ccn nA/5"G?>I}e?uX0mmW3YnC;#/9Eˊd-9g> "%PxCd*ؗ2.nhH72AKt&Q*?q¬X&ή"'f ƾ-3-ERF|~ҘޮҚJg%Wo!~YEɷJ8bu+)id k endstream endobj 52 0 obj << /Type /FontDescriptor /FontName /VAZKBJ+CMR12 /Flags 4 /FontBBox [-34 -251 988 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/A/comma/i/l/nine/one/p/r/two/zero) /FontFile 51 0 R >> endobj 53 0 obj << /Length1 2302 /Length2 15766 /Length3 0 /Length 17147 /Filter /FlateDecode >> stream xڌtk GݘFvDmiضm9zk֚koP(0m@6֎ ,̼9UUf33#33+<%?rx u5?,DA2QCwC9k% `ef=/@cHX)DllM+ژE;@ donlh 3t4Yg46'5-/ gz@wQZMjf/=.47Y;8YA)Y-_Ʋ29F_̭v6465v36[ ⲌCk_6Ά斆FnR37?c{s[GFs˿82b@++_ۃjmbdbn 4ɖI $%ow) @fL%PudK`Nenzp0t@^T/ga͍F Ssk? 7w0 OG̤*,#FoU ۸< ll6.''-U44wm'embKC 6 P~]ff7++ߊĝ,-SGohenoivr| 9hdR"dmjF;fO=5Ht+gNqx?Uߌb6V`hoo>_\m #0 %0A<&".f `/f0)Al&?}^ .{L?]g_;@8u6/?w `/d> əIN_j'8`ٚa.3|wR|o~!0}+`{edeO1m=dGo鿖s}_u?Mg?H?_2;'Gs6 7< ˻?NO`x7wxq8'hfut{OLL?w|oGr+{_ +~iƘ/Т&J߅ao ŞF ǒ}#2L"MePP72qS-LHsR˓8婽Ic}p /v~_!;)휸s?޻J+Y SگAx.fR+1ʜ!vd EpEAϚx#:b᡽0VЉKCy>:E!+I{ rwfF>bϑS^Y)tlfK%QrL~=p{*5 8t&.. !pwt@9y7%Ӛ am8m5ї;/ 9hܝ='3*mbgN0((n?Uv .0]jp<ԹY&LHq7[ǝjcA seTޓ J+ZOB<Lj?5|5bؐA..ɡŴï]ӟ+?'/ _l8evB7[]$3ۯ& :XCWʩ2?bUf;Pb~|)%_ҫ"N՞^tv ӠՉ9KDk#!h Rzj2`2<"I\ft34#0Cj8U1d~cYh'`Aa&Se$}P,U*ƪ/vڀQCŋx/y)afmr\[V.A,U.U'EpFHa:`|^5c[iiވ-8q خ Kl儫lڢؙ%Sg/tN\zҾe8NN '-EfN o4z]" 0'(!g_D{MG`C?~wG&wf*Knï?86|K8F >:6i:)~X}Ē(6?ݰ+4͂ۓW#,Đy]`A AbrwڙT!X[b~4BpHzq!E&?X9V[HAO*'Q`mT5'8qK %Pk&d%xie˒cg)}"Z*hGB*$Yhbrt7jTdr>mU]O_6tTKmiXZTYӉUx @j>^F1W>bϳ_8Bbz/n[rP'I2~qm[iJ\}s#jKhet8 d`9mKBjnGaޏx٠ʀP'{M:׍xz_eO/R?-t8gɁk>/ YĒC]|tOsbNr<],Rr^:4ؖQ ,}ucp4K9Z:J(G p0'|)7!B0:J-2Cf۝6WV~>Pc'BQpagn_|}ZHH!kkX=5${."IH35dj& [K]ߌF χ𨔵]GS*[@IM7*{.57Y-8vϛ6vcL[އȮI1*A&< eN®&Fbό.|OA6p?e~155}<,lA4͛% #p&[|¥vb|3SS Fb(2:vP_ SX"M΅&B=TNZ>l%X]8?@AWxaS0䚴o${t3mF3,c;PTRڋt)^7aqŮoEjܾs9?}!ⱟyd"*ns4(F5oCxxlwjiD: $QSnZ`Tru/Ԑ尕rKM|UIM"I@wɯߔ{Xe}{8/h)G1 QMnIC.Q" 5X69147X,̷8^٫AU?Ų{9NJlx׮>]z։ՎQ 13wTF "ȮZ|ۆ.;^%6KA' g gM>/p{HL|__;kD߂6f ݨt%f!BkJCr$#hK4 W鸧ef4ɏ' A' 7NFp}p段k+HR'G11M_>!?"? 2.Yu֑p7).U"d<k41r""֮g,ƌӷ9m*nr%UWE^& |v~zn ¡6HL:ȩ}^7%@\tpyw' 1 k,<|GcwoPC$3; D'i"իxPLp",Ə ~(ߦO{1s ]&r/ (l1bz 8`8lb y֝&;zJ}/ZVUEGr^>]-onҡXnN=9>%kDRKr$H&-˂%QvP#i_QR2y{qL}m[%wyrV'?Kc `h9IMU#ѯkN> /9g^T얉 {_6p'cӼ D`Ee[..!ӻ}Om_dR08Y+/?KTyd)3xKWQըNm; [znn6t->!i !V~d22RMtrFef6CѤ,ܐ~8P'o8N#"0 r;63-(4Q¶~(5]Y"Y.JSk*n̡ l<`*> ,@Npưv?h4gWuZ0T ?v"3~L'MZ; k.N@7Xq}|/pd:RUR"sΪ/ +X&IY%fL-9US3jW"gJ~d^ZR02:}3wB)ʊ0_4Tc6 BB)Yܪz2"Q /eg#|`NH};}MЬFZ^M0lnʾ?'l/IJ8p qԜ5Qk0hPM6;ieᛶ'V^){ԫ!Y]U (!-;lG)<@H ]p"c=_Ϻ:H}aTMQSTsT SCCJ' L0gM Zf_/4 9&#{lݟ,TeǕ+*',(i,Oc>Z c@9}+!`aê$ӯ ?L~o_RICl }(L>N^#>0E8iRI)9 3oe˾Z⁂7JTBw!,.vצ֣VH<}c9IQrچZ7͑]_lTtA O,{oD 'X30xyG4\oA<-NcҾ.ڞ]Eu@Ӥw`O5|xlBq[Z0*)[i0(2 t:z.0]B69HkyUHqEA$hBPr܌4gsTFgPM3$>~Ʌk$䗕CVsV €xb 64R F>mTK {X뤴7-nhK!UD 9Pgx@1fm+96b[ H@C f/ r&Ds)3ZR"ÂSrxT=ڐjCܬW]1rWgKrrf;ۋ6x%W){GП}ХKQP]J@:U&b7@xwܞܰiR4|q}OnÈO:O$ ,U rhhR _XBdzca4prUq k`ׄS"dsځS66kEY?M!7N%?>/gf~҃ h`*d` ]r0}jY8Gͤ+'RghϹ3yH*utePt` ErȬp#7" ~mo]AQGB nLԾZM#˜)۷(8v;BRb}pyyu^=yU(/u_N, *^8+]PB)`x#ÇI!gJ΋} \& ~Z!UϋI6>i[wG&GT/<`>(?4eս=~̢ܖ5(a+7aV&"˧:L5SHSlAG[J/}k+Y:t_oKcY뽆f+=vKӝOV7F?"]& N歁Cf;֧N稟4pg?0C~G!V֠AK-2ԟHa v|g3J`5xW?l?CW:-vHE`SPxʆv] \{8j X<tb֘\ #4b"*n$$=z C0 nrF&Ms0S:&AŊR8io1柨QFxȏ?CMHY:W)^zFA;5OMI

    AȌC*ftAEnOEHaE!14#OSַ/x:n,1*B R-7|EPycgXBRGUՁыϯc8-: =]OuhOk"Zq_ ;ͫo[oB^eʕ$u:wʥ{$g'bNdFOYD hˏjms-X,Yv˻D?30!th{]20X{O1q]osٍScڒk(|2ƢVdhIm3nCl$Sop+4y$Nk{Y%lVvyK.=Sl@W_ Ȓq'SJŭ٬:<8|4ոD .`xeK?l( UےrM2}l k({x6(9kuH Y㑟Ӳ*X={%շbbIZ:ϟ~¸׈y)!|\un'Εcǡn3cqc;ׅMȤk<5$& {w?Wj6ɛfΩ9C[{||3]4=imCI5M k9# 4߈>0qc'Yc4rN x(lվvwq5f[ØA )mz>UοgWGi(&wjh>~P!enZ8 yuⶎRQ[-/SBbҸ =,p pFM,aXVeJ3id(8qNgxnc}8 \\3?ڴpP)YSvV f\($$˔ڸ9e/d$ -k z-47 |(rBKB {x]t9l¬mb>}ԷVXyv*v]PY L@k!Qcebtevs+E "{JDvZe jQ>L"CF QeUH;^97!. fcG@'u8I;ZW+U٨]IQ=l9coJ뙖˾|!EM79&f2%";v >;!nD-~s/:[m屔a8<suSN}Ϝ r)K$Zyq^ E%[m*Aш|2cag5FfMi^^9,#cuUDI&R za4c(G0l!eV ˜)CۧS>*lHK+i˭ !s/!Đ O9ZUsC-7,ri8 nk!>}/b:!:/MdJf)o\g|*؄cc|e*8:A RS?|#yTbھ-sJ p)dre/|dps͍eMᒈaȬ~ׇί"8z6 ώJ]j}Bڋ p ?%Y" N(Pɭn!¦J;>QsDVtˑ"T.?):v7^'K =PiF3O}dAv1WFS{Ttϫ }M./@AۘI1)Y$d%#9P!\M5ҕYU(2 F8Q#lK V^84ߗ?[N$勼ǡ#F{%JRkܳO?㴜W a`a)ncWLAjٯ uR!5ڐ;C! Je6/@d@mH\5oQ^odB e/ YPCKJD72/7(IL\H颱}:ĥk3|TF2=:kyZ#`0f$%0+ ӁPs/U\jX$!pS 􈢥QphCYtnLDۤ= g ͣpk"J)9ƓwHiqg7Ǒ."LzTP덵~U ȅT<\fD ʆ6' jG,d|f9]e!OPG䬖!xeb|} :XD[WZ=̛"Vʒo-t xqUaP3t /V>诛11 1,DI} {[OWDzi?LXxK Z|&1G\z$Ҷo׮׵]=|ְ0c@]3#A6rpN4([ߑ7{U@{NUt1YBL)VKlU3YkXV p9pPxM3ClɏßK*5Vh]O2CL8;y 32VBGZ:\[YX~I_ bx.٬o:.3_HgJe&IMX$>]֥G  *88-Fya>MDȕٶDHdGFG-,L`Pu!VB\djO+%dcb3#Hls򉯰mt5IH$I_&QNHp@p11!DB{#f=NɞXrXh##vL7E^!_ iYnu N umm}+Yog"x%jhMkPvBA[Y*RuO͞DύU6nԐhFGu3ߥAE_7+~oO0MbE;="*@o \}^`7pηq `i0?jys3SMJa_ hi6}*rցɐ0ʥxbQ& kZԮl{X;79ܷfvpw[3`GJpcυXc*N86P>u[c,}Ikg9<NS/1= Slc[o=P_Wϔv!q˙P+M.Z'Z{s-K3H67F,M/ϡ`ڲ2Дvߪ pW[OKltj3?jm"^R I96+v]~HxXu&&Ç9u2fvgoKU5k37nLKX +"*G 82h̤?jIvhͤ S̻tܡ'"+KR'&`o.h0_r v*kG~50.ɂ?JJVf5s$~* gԋ&zɯtp5򚚊j bV_TL&Uruv= (H<$*Zو0S:$y'E!zH90uϪ6 WN/jXw\ro.oC}_l,ʋW_>1-inŎU`\SH:'ocMFD黤pKhWTЇCq9oOd^s܎_ {^ZHo0Ce8?>N4s"TΏMA*0BL0޴at/ )X(c%1 >}ً 0d~H7^A={KdDXE-ںny4ADV܃#MXICm xnpJ=# v> +ܜ!~:C:E#!0y*2w{ﳯg&&d;~za"^ҥ?K0/^TyzĔbG*{ד<7P;15Ut+ODشKȤ5 Gʹ^T<Ľp_zp0I4:2^~p3&k Gaa[ΩJ}7`ievi>+96`L)&<|G"aU۬Xi٨b \ _ĩP鱼_c(|VwK|d~g dI/Ti_-:[yPmb|yfB9slif+ 5B䙙 _w({K墔Cws<,*# T٨*m ˼zۈByjQǐ0$R}|XϑUUhu(0RS">f ˤf bAߝ˻)JRjj,}T^~jӲ?elXYᒗ$^97@%%642֬m':mb';k~zP؊Q9~e]0SH[}8AQ F:gw*3MՋ )ؖ1}ңhj\5,l7(eAʭN9o[[ぃ!,,G#=8AEf"[^fl~)vlfE[gf%&|<+@2,]Bxsp)!hYY CFW~RC!| k|ƾ^ H^"DJM؊fJAmLKWQ^v<RF,r":ru]ՃV>"3,[F#] cu ]F*7W\Ƙ>m 05Jw*FKST4&$8P4缴ydE9hAr;Xyv/MXə)$DDEL tͧˊΉ+kU{6uV<1*8&ޮniu71̚ShZǮVDMn `_|)mLj=jgݤmµV:~/\+Y"ʑO yD< *PfIm@e>e.#nH.G>;8հh{girPl7ÏHtZ*~gPӥa^5JZ@CEvvE>1U >*BĬ+*p ~ф۳`"'3Sq0 QHі,'扖""K" 1)ͩ·JX׶鯜Wj~Jb(Zi,ӞGslYi!b`N'j%7.sn0\\RI3*/A&X+!"8_ ,v$Ź/<!םh׊+0ٳnp?OWFa)閐>Ӈ%4247YVRXמ'dNT9fiE0¹/bpocU{kĸ#Yr[@^b(H Vt]I/k`[N)>ߛMuo7Gpk\S{uS)[bR*z<Rpb,\+;% Z_7b .|a"rZ.5ഃcsWUw^ Z^Y+0jz֌*zڢ9}:".aN^*LiPTs®h/W;fRi\Xյl Bt0 12yk 9OZlzˑX|bEuyx ?_&_(R&rf un%Nz6d a5ӧRm^j{B^"NT)rEhh3u$"Ra b&,´XegsO_=w@l0}QJˁC1xHTrp|X?CX`VI8UFC@nN~ℎ"}Wx`wA=-c4|awGCBəM71v>02@d:ѭ˩C%,ܧodZ%#{2' !.៟6_YjUD Za Xaj)CY.k,".NQ0p)NЭ滿k6Ei#b]~wSAD%δ!C X\.0,x1N~Rjax;qS~`n; l3蕮QEw?%@sq Z.>އN%\ }}RڮzmV]W߄D 3pÔoFWp :!LMĹ^I" |19%9<(݀Vf T3"[\(W"3kmp:h7R !p '2"@{ubjy]wo.m :_e4 !?%=,"za]x)18D Cߊ2kҠW̤=ɦFRev.1NeJ'n Wߴ@MrqS!U= +B %!Kݤe2-X_+{p&ʆW F{JC ~h۱' 7ޛd as,Nh&G AҌ^ߠ'J)dwFԜ t~tZ|tYvM~ C7@qW 3vށ:B9 .}r˪4A&FfTT1Y[z+OY!f 24F@)6Z iae̾*Ȇ1IVXd˥ + \o!EȩLdiL~YZ;h› ҔnhI5Н!pnn` G7~.2]VGxӍut'1WM- ݢW:6}>= l m4嶤2)m#n?kVj8Uu;Z0E`بxri=gg!1,zD&k* !\{cxky%*;8'QVV<37^4ZvrFR\h:( ȏ S^J:`!uH-́i8,]La: SI!<Y Ncݟd}"޾v`KYv?\'n=6aصٵ yedz(B0s9J za^X9gn(޴kd9nE^}S s nOXD=$z=wGH[ˊXHr6";]QZZ,@|MI}ɏY:bdyD*7M2*^!Ђ_^7YsLWD?&00}dy.^g'& Jm~^~UV?3+>J'eN!Zb]\@]o/WZq(Dl{V(x[hʞNcC!מ-ղKX=x# endstream endobj 54 0 obj << /Type /FontDescriptor /FontName /TBKBWU+CMTT10 /Flags 4 /FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/D/E/F/L/R/S/T/W/Z/a/asciitilde/b/c/colon/comma/d/e/equal/f/five/four/g/h/hyphen/i/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/plus/q/quotedbl/quoteright/r/s/seven/six/t/three/two/u/v/w/x/y/z/zero) /FontFile 53 0 R >> endobj 24 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HKUDDD+CMBX10 /FontDescriptor 44 0 R /FirstChar 49 /LastChar 122 /Widths 40 0 R >> endobj 22 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZGGFII+CMBX12 /FontDescriptor 46 0 R /FirstChar 46 /LastChar 122 /Widths 42 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUBDZQ+CMITT10 /FontDescriptor 48 0 R /FirstChar 35 /LastChar 122 /Widths 37 0 R >> endobj 25 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HRONNW+CMR10 /FontDescriptor 50 0 R /FirstChar 12 /LastChar 122 /Widths 39 0 R >> endobj 23 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VAZKBJ+CMR12 /FontDescriptor 52 0 R /FirstChar 44 /LastChar 114 /Widths 41 0 R >> endobj 31 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TBKBWU+CMTT10 /FontDescriptor 54 0 R /FirstChar 34 /LastChar 126 /Widths 38 0 R >> endobj 26 0 obj << /Type /Pages /Count 3 /Kids [14 0 R 28 0 R 34 0 R] >> endobj 55 0 obj << /Type /Outlines /First 3 0 R /Last 11 0 R /Count 3 >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 55 0 R /Prev 7 0 R >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 55 0 R /Prev 3 0 R /Next 11 0 R >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R /Parent 55 0 R /Next 7 0 R >> endobj 56 0 obj << /Names [(Doc-Start) 21 0 R (page.1) 20 0 R (page.2) 30 0 R (page.3) 36 0 R (section.1) 2 0 R (section.2) 6 0 R] /Limits [(Doc-Start) (section.2)] >> endobj 57 0 obj << /Names [(section.3) 10 0 R] /Limits [(section.3) (section.3)] >> endobj 58 0 obj << /Kids [56 0 R 57 0 R] /Limits [(Doc-Start) (section.3)] >> endobj 59 0 obj << /Dests 58 0 R >> endobj 60 0 obj << /Type /Catalog /Pages 26 0 R /Outlines 55 0 R /Names 59 0 R /PageMode/UseOutlines /OpenAction 13 0 R >> endobj 61 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.14)/Keywords() /CreationDate (D:20190421225640+12'00') /ModDate (D:20190421225640+12'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4902 (1.40.14)) >> endobj xref 0 62 0000000000 65535 f 0000000015 00000 n 0000003197 00000 n 0000089122 00000 n 0000000060 00000 n 0000000090 00000 n 0000003254 00000 n 0000089039 00000 n 0000000135 00000 n 0000000168 00000 n 0000005073 00000 n 0000088967 00000 n 0000000213 00000 n 0000000252 00000 n 0000000712 00000 n 0000000860 00000 n 0000001010 00000 n 0000001160 00000 n 0000001427 00000 n 0000000300 00000 n 0000001310 00000 n 0000001369 00000 n 0000088117 00000 n 0000088540 00000 n 0000087976 00000 n 0000088400 00000 n 0000088821 00000 n 0000003312 00000 n 0000003023 00000 n 0000001532 00000 n 0000003138 00000 n 0000088680 00000 n 0000088258 00000 n 0000005132 00000 n 0000004899 00000 n 0000003429 00000 n 0000005014 00000 n 0000005225 00000 n 0000005595 00000 n 0000005985 00000 n 0000006601 00000 n 0000007031 00000 n 0000007420 00000 n 0000007872 00000 n 0000021143 00000 n 0000021418 00000 n 0000033854 00000 n 0000034148 00000 n 0000041475 00000 n 0000041783 00000 n 0000061114 00000 n 0000061526 00000 n 0000070028 00000 n 0000070276 00000 n 0000087543 00000 n 0000088894 00000 n 0000089192 00000 n 0000089360 00000 n 0000089444 00000 n 0000089522 00000 n 0000089558 00000 n 0000089681 00000 n trailer << /Size 62 /Root 60 0 R /Info 61 0 R /ID [<9C166555730307E16DD9FF6F04048C9C> <9C166555730307E16DD9FF6F04048C9C>] >> startxref 89955 %%EOF xtable/inst/doc/xtableGallery.pdf0000644000176200001440000073002713457046162016566 0ustar liggesusers%PDF-1.5 % 1 0 obj << /Type /ObjStm /Length 4124 /Filter /FlateDecode /N 86 /First 691 >> stream x\YsG~_Qo#ń>6&&BEKa/I۔f-#жY@!VWWWYYF6*^xDB= %xSR(WrڡQ(4BEm¿ zaA E&<'i: #%ZED[a$xzaa,tx&a/RXL $ZXƀ=7`3Y vɄw/t(pI<MD:3^ғ3`(<RI7 =KCR%|@OHZP8P D EpL"xK ! !p# Ί<9=MjJR xF"I hd@%AB#t /,Dv 0ƃT3Ѓb"!j$΂l!$W +T .8N&\+ lJǥ2pL\~ǫ @e*P@T3 Eg(:CPt3 d(&C1PL򫨟O'fncQm.Gg?>qU VU1ш3 ['|z;6s2MC>5TGfM'z,SQ7=MgͬTL^奨_1Vd O)+q)TPۋf4ܒ:}z+ȡ%bIS/))i*s aCP9to*=#*H'rXI[NU2>TPedePgblC=U MAͤJ+Pdˮc&0HU ] ]3MB҇xD)#ʆ{{`iddH+HН9DVH.t2D{u$ ֵ22GkLE)L<"Cޭ$|X{'nB_EGe)NU1C7UBFh>asH wzHDJ<$: T*S;*>Xa*Ub)J%sZ=R)w6Ȉ֘יJȬGrYm -=:@΢# r|edd*iM݃$-:`V@0Ƥ`އ,!GۃO$׃tl,9rizY ɨ#q;%l`Q^ ,Puˮ\ AhK 7OXEYFeP T%WKP?ڝ\ZDV}'@(Pk,3NR;Aīv<`O' ?o+-lx~5 ~Cf>nm27e!HR-e/՜ji㧿|x'븡-a n7WO_g]?s^0k1En[^}ڍ񻟀lBC.[|ףLmJY.7Y^lCy sEKw#z\tt8Stxڐ3?Qb1]nlN $fڶ"^ ] ud툵l;Dvd/'g'O!зr.^u;lM#}G{w/N9Νmn6zPnṣ _$$" z` ɾI͹egŦ(R{k4uf+nU _W"^ll]li mp%U)$r#l} /quT \j ꁎ2p9&cBS;J#w/!@"`2!z2Z`.VzJ̃Uh)eJֺ6۱zBܚ HIZHEW߂'O~iV)jJoa{bwkoz˝]5]ឞId'2`V5K4"3懆< Z>FO Js3Dz6 )]BW'" 4H2ycȪS̨q=veGdlloXDKqKS byS2 #&ÉA 92RSIvXp$TjtaCK ~"Kg$(0{….Vm߿].F(KPYVAL)( Ð*=6d"9s b4'd } H8"Ȓ͡$2,t˕T,[D' \!ZֳD Ѱ[E"aFa-aW.F1-*.gPD,ݻ4ڐuJZJIњvu~ 8>a59rUTNb FQ@ )ͪuU(:=4,u |FI#gE8c!;", xln8Cb.SIDڹdf#fmtqN FQ[{DI /+53\Z^tbmے.2rǓB.sKI3*Ԣ 7*Zl MD;˝G&$$?KdEs=zpbD=XR9_Tp3Sav:H*#rk+XeKc2r;U qi)I~Ͳ\f*8e.[04@w.(yٌ>]5z^ f ~Z?U}ZՃ֗uSscq{SĪT'd4ii=EySy=o~o&|gWLKlXԴgJT=QDxi.ʱճyDSV{ǧ~x4nZ Wx4|:޴h&nvvn"D{{ 齩OE`Ck\ApwH 1A4 Ĥv8-h/ccYr")ɉEX$J6 Eb}: Mlt̮L8`LW0'`|s5?͚f>ߟQ nfҨ{q~iׯP_=dp &/`uȎOw忊c^3)9ѧUw ![?ӵTb#ڗ?EAܷx:FL& ]ގ^ϓˏNW?󑪬|}y;aߓ1]"%:FS64px' ]endstream endobj 88 0 obj << /Filter /FlateDecode /Length 1279 >> stream xKsFQUYoa69 eO,Kb8tB ߍpp ?rqvv~ID@D:4A q3_29s"d'v=)0*$fb$)"QK7c]nIhN7$j?|Hº[NH70AD%9KF,J~pgQLqXhBIA2v;LɘD g0DkI$h5jSf`8tшY[[}~MY~"Li,~0D)&rl[8s|$ŻgIuK<Ǟ +/ԞAx2wjFS ӽ,TVr@x'?d## $e;sbեv ]7„qBIHzm'tXRUEUBe 3 cakW)LByw|Wnp{6nL 9U)[HJfM;;o!%]i%EI SUNS,e/#S!@|Ry_B={߄۷ˉC]doU1"l^QvPE/iѦmSWn5po{@Ebb]VCJ66)!G'%z> stream xZo7~֒ 'Ag:{؆$ Iٔi% jv8$]F)J(E"jx2t cNX"zȈQ(4BIt!їDGscoAA %A5bN % BѰZhilRWˤZ94UVh\9I1 mu 8Z Jho1F>2=ǀ~$9NJm9Q'I`aCņ,Ii-#~k#`۝vGXk;N.^~viafȎ`K&7 5ZjXwI& xy[2m_ (߿]JF^~y dSׁyxJ4a|=|)'g>i>͟ 22Aȝkvwk[+=@7l=@w b\ L}Ϋq^[-v wg'r^"_MAiɧO ^>8q#X881bϤRAOwA󅶘/CCzPG{渝fX?y⇏|u|G S8B)\ofe&;KoFˬ2f)jmOSoh^f1[{]s ~:=^/O$:MYO(/9r)Gvnvip*ZoeGqvF7!B򄳽G7a%L95Tk : Db`5-#pXdv rHe,Kşj31%Iלܱ z&m~A&*|'1VPL-e LPT(64ѐ* ruuLxCl`I Nxkpլgge9 ,aqb.BzJeVn!K2F8FY_szY{~ʵϼ se-@ӊe%F$h98Ir3L)|2!r%2y1b)ex2iY7a\a`OQ"PRjZԋ-KZ7KQ,\X^CUx "r< Y^2L׵QsyW;Ûv|oX%ߎndU8|с}\}٬P4+yRy3jssLpK"Go4 m~ M΁!d/`u `7͸kf<6_76uB:=]Lik{N7tDm:i/]X߅-+?=>gЈv2\5i4rIh`uw/'29 XwX±tAVq 8aU8Hkn\7m:tCmyX ]j8jU=HW* ҅Ø-ٹjԥ,65v԰v Wq0. j;endstream endobj 176 0 obj << /Filter /FlateDecode /Length 1408 >> stream xX[o6~ $5;b{H$Mt[b`<(l %6{oŶ,K9E Dxnp,2B݆4_$Q,f";ɧ󌝑*áW2!"8&\#=N@;QIvxY8kDthwrt ӏ +zwz`|PajTdL8<scLq%qJ6AeZ~p?쯺C,A*]SAҬ)d&@VvTT[hmY9!=mn@hΡ;m3@WQf>iz%e~k,w:D=K}hn\?iG3<8PYpo{O^~:OI{~ v{F| < ;q<(//z'/rkj:]M23bv;tzYxг~ErF ̒Skf)ą PaZ2 D [,'DZaN<(di}B+d3-6l2-; $ZVc1BaI-ZVM>KLFp'+M@endstream endobj 177 0 obj << /Filter /FlateDecode /Length 1935 >> stream x][oW~ǥ gܣR:7)mj[4`-'yo`IE37kg2{r LJ'?<` f'gf::줛Qm٫63l)ȯg.lv W;R!3ȼJ!mHtp56dhz+7X@ M6_<*m! "XӦҚTg1YaTl!vLjȢ?w;oo.N VG{K9_ oge$ҿ6Vn}\M8"Gnh^\uRT kSy!8%3n?ҁ6 _"TqMwPTbNG*ku >+ZM dY?;ʔ*Њdڪ/g6XpAMʏ Ju.K߯[W.E.tVA@%PsqpW?2ܭl@G@ X ڨC8#tyB줢Sŭ6ݧUIh 0$%њU"E]UWsHunM )0٫uZ&2bD D%꼄/'_ǣE}CÆ<2F[»=- nA5|‚)B/,6Ɠ„SW55Sm%u].1haYRTSpT U+G"ëŠ3xDAZ燣pT#ȵv5% qkA7ȶ& YUR27:iocZ tJE_+.#{޿㴋6xɛVYMvdH\#1~82U&Lΐ(,QHW ^@k΃MV-g/[^~}ȪPi :Z@pgq6æv4 ж D"K++_EP8mjs3?>;9Hxy'k?&3ZRQ^y_b#Ҿ&C Q63*NHв&7vV5~c5%*[- CUzŢҩI1a:n_g궺@Ghv=G(Ywnz4Fm主`;fC 2_ړ;JrjvHsFTiFаiptNT§FPciA#hU*J#hrDޟΑ(0CNfXzˍ;c,4fxQ$uo%("IVZWFzEoRO/@evbT17<_,*徹WXf;˟QL6'EWD V@]qYr+} A1&l4E6^NHMz'$‡p+'#VtdxF y|v`LyMjn%JXQ0k!\/ո̡C XStW/7144Sûoŭ@GK?OȧQ:$FZ6bu-*M4bXqo/plWG?ؗ49뜎M5Z}w{<}>`}>` 6Ȋ™>`7ٿؖ!wX\G#(bGp0~ř88G#رwXuُ}=Gpq0"KòWq\q\#`ϋ^/H؋TN߃aO p/pWqKy/8PG~谛8Q_ B겏ޤ9<9"PFendstream endobj 178 0 obj << /Filter /FlateDecode /Length 1331 >> stream xZ[o6~җċX)ۀڍ 5!f˩1j$@_wDR%s?maĸp\m6ߍKݾ|JwߝvD@"ǓavӜR$aTʜ$tV?: MYIbSs2Q|.]%9"̗)Ubs ӹv?58VЃ1oa5wP>=H+2bЃa+>0v\B/Y # Fq.Pr ;GG+E%,0vbO_ZJ C1uIshwI/9?Ӝvb۩mZ@qj-ћ0s}8 ħ0>gv֧ E͒ ғg[J,g"rԊ俰8w' Ƞ02} Md'P'/FSF}eIo;/hGD?8(4Kqv"!qS_l~5ן .6. Ϊf0Ж0[dt3Whzfü Fc#f`k%5 K}o|ӻș6f@,9AwaI5=X=/L&yJW/U߇z U!y S& Q.R%PLY]%"q1T#|I5 %aA(r{>в{<²0DC؀.$aɘhufMWpIh:Q]P -js}ZoňUm։mHAD ƧKWfV?yD!H"ʆ!0ER3H{u0)VSM  '  {>:asȇhM}Q \^О&MNh… ~:yMwM| EᲒm` *U^ݖ>33͗ rƄ?FՇrK>CS&=zkU#Q%U.2pIl  #˂.>jZ3`Drk|?v>Fc DY" ڈzdo=2bX~DZmR[.TpJ+zdѶ7[:'UPZ2tZ̩7qktKWд|A`78" 9h ۛ >-8Hdq_ֶﳿyװ)\Ffp9endstream endobj 179 0 obj << /Filter /FlateDecode /Length 1018 >> stream xڵV[o[7 ~ЗG%uW Xe@]ⷬnlxm?tt.α,D~H Pn' hIxW2roHg[ yEpRE5 RTAhx\ϳ]:'핊"ʉJ(UT;#11[͛im~yw9pZ+GF i $)Az~}jD=|A& YIk‚e_[DۺZN+5fM cOVШoN^/w|ktx S7/vܽ+e_"!+t`2X݂/>8!;~=kϢ]=Te˨uo~}ؽk=o CΥ@hmyq`ҙvYPh;WK Pqf#eޠy-=ܦmh㋳hw@rfhCHz-C[&}HoqCpC/ZZQin۠nlk]|ZHT,2Y}*3oco[F٤IJ~ղ6ʁBi. ɛN)p| Z=*霍LZky2?lrowTUul `n.ȼ+k>R̘ UjDh^ }G"蓎A:K{1g{=\)BׅNo$? gaCħWˁ!%n0)LZ-zDo =R")ye  gp#xtC' u oO =(hJdSbS$NX~v\h&lLyl2Ǩ&%u3bv^X+/?FOo:Q~cu 1:Z8Q=sJWJMPte<Plendstream endobj 180 0 obj << /Filter /FlateDecode /Length 1552 >> stream xY[s5~ϯBGw1LhMP`Ɨ~;]_r;d:]i\WK&؏b2"lp|2HӱO$76O$Mr9 Y'd݉hp^0br%sΧq^Kɭ Ln=l.~ybJ듧d`+mMZC/t1U7 eaTl 2wZWv;ַN.xywapH7]""qco)'*?f^aO72K/W:k 7ܿ2Ttn~+d*t<݋2dztNvzj /yd[iݥꀂ3H!?6ķׅ ]2%[ ;ݷκ$Ǎ̑ڪܣE>'-DryNlaVbSNnz&zTMdh%ؗZKN.e|W-ѭ%; :rg}͵thѷ"pN%XIF8OQv> 5R)J'=IkEbo"GY_Ynu7U+n_J@xBpI_pu-CrD BB~::z4@s\" ޒ*%p|.WǃZ}=!JHĘZ}\z#e- ^PF9Aր} ZS:0]Bx t2񋱍$\ZhAkDQ!j{[RSCT¶4̂pzX)Z\לjS{2$tr/bE,ܖ܌{賖||ǭ|p{(zm-E+KU"2Ir5F]+䠾;n ,X*hfob\_L䍹[~3qfZw9 ږ ewo@ JB|CBXCA,b;DUH=%s0-2r@lXȍ4|djS}4꜈hPGhBsnVzwߩjNnT2&D}õhEtqUx2?V@]lϬķ5OUi[liӓMooϲwHB\5YQKU"֟B4.3+b^O5P~Yg2P+c:;9jilU?8[|^EOFKXW\bʵdh*XV֫CL<11Y115Ao,J> stream x[o8Bv Ws&uwPAGXJr~×#+rGA[RÙCidq4pʿ N~zKdDJ< TPh0>ޯn>!Tă|L<,^G x38.HK0f(!prb9H$Ȩ̢!F 6z$JP"lsPlrjl`#MSj;`?[SwoѾ',|R'TX0`2gVMZ/2yu|:z,Yxx'ֺwޅ1c_)v"ZFbR -NzkLvH Էµ}i?/txmg~CZc~l"{G|8rxЅ[2 +Fu}J m IYiO(۞fqvkHKO|Y.zT7~>]PE=!Կ93|̽;G9b0]FDU$@/>I8c+}*K[ JFHL0 S 'ؖ R`mK([JbiՍ^&H^ 2Pl ^D-ĀŠiNza fZ@ @ (h` `@`A @ "` d` A `  *`H<F=CX Lx 0X ,a0p1pm=.===A<B0, `dIAI<GI=ArArA;`x x *A;эz { Jx J{ { x :o* _z7 $ s;mn;~kw ~_Cf/t\_d6@JNC(H[ |6urgH$qq鞜J)LogK@' .eeeհ/;TC5k$|7‹*=Of9`BdۮL@g>VGU}ΞOh.Ek#~U'trYZ9:>-gՖv}l^} ρ3[RJy2q_o|:C];/Ӈg0ANI^g0wQKy{jdP_ SJċn1MIHv=eƮNT+ZfJڬ L~a}>N՘tqK?]4t~0b-L<^rC4i@Ơs.w;47{Rǹ9fCݙ$JӦ`6E?=867$heX $0{i7γ|x0`dHy;*d63r(l/ LwD{MetMBlr1_k}ş=fNӆy^x+ήؒlfԕ`H ȳ^?T>w$,qv_}?ϲq>EZ~RQi|]ۆ{=,J@Xʉl,I_݂Y1L{f|Z<i/rmƵdch,"zL,t/ukqߚm* ץ[t31}L]~q!B>~r;?2[!x]L5rY[JSH4)R_W[|G!?? yendstream endobj 182 0 obj << /Filter /FlateDecode /Length 1951 >> stream xZK4ϯ@Bimče಻Lwf&Џ%]@wʯ<;Ig[Z=Lg˟*v0b\Dn>v?^x#xs^+Ĕ+ݯ- D8"a)ʐ,ZmoL=I  ,y69sD 42t($CLv?|X,1_, 'L 1uP$XXER*R O|+¸[ Y!]8 _r-6ِhP&-5Ws Ϟ놭%H }[ŏYx\Mw!_70ia+;(~PLKp۟)RQ"̔iUL>-Qߊ،}yqVzE0HAG/|VLw+MߎSG xSp:3MJt9tkޒR 񵗯qw?蝕܂AfDYhN-")TERHq6n 51psaW Ž΁)#H`~T@J H,x\P6R-% ^%Zҵ]h| T\8@\0 u2,aQ&.۳_Y:=MW3wj8u9 $ 6+k'qTZ<$;ˆ#l; 3[Io7IC:"~ @z]^kD0Q`K/}r놩MN7( /vۂtԾT؅vK 5b(:-!b`u]ELd"_2AĻSV-O2l2'xvLM$'Ma&RO.os8ȸB0+|;.Gwgmy#0 (P幮eڻ۵=4D:xX0*$Tg$T (blqӑc\!Rj2ta i້tI!|WZv"sG`0?ߣD9 &ǥ xGޅ>/H[zP}./[ʊ2_YPk\&t{_U*U]&:=FXd۽aXR#>9\$~:9N?nЧ09{-3} jon))cc*|F@A'g7Ϟ^O;@aAWBN#:3I RE#o݌M02 )|+xyޢUuw//;ZN|>fd;c*Aλ;3+;JfZPP󽰩ɻŒ 3<.To;ۅqZ6[1wgS/ug6-k;q/Wyt> stream x[[o6}=@.^6ŊAeG-'Ҥ(JIY#v|]xQRf_'O!%&s/P*҇wߛ̼1 0i0q4-Uq0Mqf>NY \ezCg$0L0ݧ[0|LRB5/Ѓa Xd8>|Ą'FOpd,[38]0/ĎQHs pyIW݀9#^ Gt5R$('K#o>󈱱(wĸv_w]ZT- q~xZd;aӯJ60T ;$kLom{~Lx8ck$X fz)}|6F񤉉5;^&X2ϝ |ם6NJrn,p# qᵊT$bgӓ`,KG no D1RX>tQ s:_tEѷL"I6X,Q|ǎ*!;vx SȧL7Y:EMŏ57i29ѪՒ~]p}Z˾sf 4$Oя #9"(Ϫ2\™\m/i*cD);G~^~hHR{ @|r=Ϣ4o[Ed Y:*__y gsvZDa3W}~HH`כUgVhzNZ/t%e,I~YfgT}yI Qx]r>|_x,6=l`ȉWQ~ O'M׫pze1q 4Nr_le1$#KUe-}=:]/W}j|K%ĊaW)vׂHf#5}8| %G`>| ~{[(J=ȕGY׷@H0@7Iyj-'ni= `. W7ޙ> stream xڍP\ %63w%Cpww 5#szjf޽LI񣩽1PSbe3!PRYl#Pj-seFw@`ccah7r4(0dbN8yИXyy4|:Y@@&F6U{K \X@|nnnLFLNB 7K@ tr(hd 4&J_ U{3.49ؙ2O@7_w[Oc#{[#;K;s IR bٙA4q7r512~'@2¿s6qt939[Q#n,ag*fok 9#?2L],]2sÉ ' 7X0@{ >^2>f/g#W ++0[!] 4 ~?>}{0S{;Y棴%W)*jb0qXY8>OJ,_e޽f}6h@?b4x]͟z?z#[Kz  TM_-jocu2 hgn6Z:KZM,A&-dl t7gbRq~՟*IoH ;{?n}FNNFG/#5f&;{л 80C0xE,f+YEPNc>%zya0N6۠XQ33#2P3; *Իd׏΃4lpxyZg1 ;p ͠7lw ƞ} Æ+r^3,2eL9duFF4= 2y^.|qqTFԛ`Js3' ?kV'p)OֱMg6j];[HkN RjWc(8Zl+Ot[VO_9:N S/_;IfK=nM3)k~s7mA}v['TvHLpkkAMu")+EQ:b$AYѥoXI '4Za!,\7~0N.DIIdQͽ'`UB63BqC(>_6-A27:n;c&Tڇ%e9ߐM)8-tG3SjsF[h_Wtbƌ?|5cb { r }Nb2N"kNm;wN#Oa&%MyUh~`Jvl[Vz`=1_kp6XYbfc*LgCNuVAkqxNqq?ɠV=Ԯ _װNO92(egߎŘ7V)Ji\:-Q yh'_kvtoE<٩K~DtQB$ߤ[o1 C$[`$Z9Ԡ EBvku|O>cܕHhxÆ{4F"[Au]tFAIu\p; pHDWJRfsrHN@U݀ފ D͙PI^lD[DxLT=wk3+Ύw9#Y,.:"+>G #2t W{+veDgbP&F,aЭX\2_ i.N8] V(!ҚxU{^X߭БeV{SV^aڄaCڥFsgwGdR$H&6eM$bͦѥ\PY_@ݤkzSZ6s zioy/ۄ6srQ7Ѣ;!4H,@Cjf D3A!KD}fρY}/ّ${ {qwshPlcB|\dܧ 3\G[~%sl?_Z(R% ]_sxYjk;ƚz]^y>܇tFcPX,:`,r𤂥$j)t7uZty!9º>z -" k8\Q@ٵp{T-xɦr6oquۥ BOl)x,?n4y?H_Et1mDvvSb_8{Oa8BB]v)tj2[Y8M z!s0'g>{t iLD;Rn)jJvgL4fPyS-;EٮjP5a#[uӑj$MSguK44YxS*(R4hD-^86=j ˟/'n{~wt4J_rDyZʾu4DUa,`X"8lF9]!^#.Ʀ 2re1(u;LznWin!D k3gD82 `U'l?l}Fjg.@ЩjΏ] czTc=h cw!|Vt,nȊyqԤ-@q9)膇CaztkZ<腗i{ʫj$Bif9# =嶥< ,|ؓ|[c,AҐӡ~?/dF,a7{W]7σ.à$Pa- Q]z/$ufx#nXy^'!86]cFo WЩH`ΫK[B) ʡ#V9o OY\ؔ&Cq)?>@#C!fCUYMC.x' nq Ib?|wT _闇+嬣9q3Ge˭~H\^֠G 5>o{e8Iu^E|tk0uEXѷ-J_> S#/=yx"+ѣG$`՗.de]}0'ҬѧQ\YsBmUqaa*ȃi'ZhB<&/]|-*\94`g s14&xJz1c?/3+. '2]kZV` UejCrT../ƅ7PFJ|2Ms&+Ib(EmpU._C$IO2Ǵq"ɣ-\ٷ6!Z+˓ OlGZ!.;t?t! 0<>,>DF7Ct#MCeW[b4b2Y[|A?ʲQ=FV H^u;k5?~ƿ<2R>!.mnw?+9Xy-<=p>\tW95r3eg M|=H@zBYcoڌ-Cet (83eOh{x6֊S6Y5Z?bs3%p2K@mTZ8irJRɛǏ@,هNoIت$A7G[d7'u-+ e28/q=B}򊻼=!gp`EZIRZq&3;˘i1d87 TOB81Z-/-Ůfơ@; -Y?\"BJ~}TYcfG3lE8j缜8ȌI ;@PSq+24NXplm/CB2X b5mplZҦ 9}Uʆn_oLr9T܎nRKO4§:llgteBRƻ DirdIY<$6G )I0GT(qp=zpʵ4S4?2:*3b]Ze?_mǮJۖ2x}YH|WLцfv9|{c(ҵ- GdE߄om?DؙSY4l]"pM10u,2ފ["~&f6iq~dMTCorWgODHn7;cs0jRey,`.1\ OE5-2 rdZWn`^= `ɠ.#\ǜ=` #u2ZglL}9g:sU%pI\'7ڴo;$~'`HPuxCOa^)[v?5@[s7# +Xv۲C!]GmM||O6Rw 9IAU+0X/MUQm;(ZS.udQ$1kpیSc$|# ]ƧX*Os8\FQ#z)<3'= M#[yF)p4nV+#Mw.UW2d4PnV.+ v-bv34KRZx>>)&-*QaB@'6eR8vrK\o`>0Y ;p7:Exax?3+j>f4 h8O=(#k?jĥQj?p}ɷ77"\(-d:61ɥ3 V! %x $qSgۚ%"R5؏lX!'s DXg>4ysJBf{p7nKu[]z>,p۲C-|u 1Qр2gqVgJ|]]Nm5)€ AVTKS12*tqGNuTvmg~3dyOEs?vx :l|򋎠hRcu.XR.$u7DdZg)"oC2Ȥ*h}_=Yv~B/2Q?6$|Uz`]÷š1M:ίY15S[ s4u r|A6?_4<]RR\r;8p]]IY׾ױ6b4t(!x3pVdm#` aRO|-mAk4<||sa#%2\K+TaM\g p^b^ )CJ| <:g&6zJLgl C:VڀBV.Y +2㸭o%0 HD8|#.l-2|m\&$ɺvk6B:5iן|(UFR\$ lCS8>/%Wȴp:Z+w=ã^P*Qz`9${XP=.Fl^jN}zSC"K4^&8)s?:~Q[}KV7y&*Ji${5ahro?#bl%#Ayo*PE]v,* | r?c,BM6)' \.qŬOQp_"#FU䢋ӻRJG@Odf\ֺD +t?DdQ>X?cN m:9Gbp$*w4i  ʘˮ!{,mc۵̼#DXXhqv-/.JU/I;xDvgDyaoЎ? ?nN왎Fj"phk+J@mBxpO"\w0-$,Vx\߰J,\>$*Fz1q;NiiPMDRGRvDʮt|ٵ?i8+*sU ~y"#s+IrU[kkE?EpQOCX E?dz:tĐ:a'?Ҡ\PHP/*o0ftOϭ~z"ZV%ąm15S,{X Od\&,z0Lc:3-`)`rw [%#{gS١gW e'<.ψ9 p:>޵;w02 3\BNhz~Bz٭ PfNafR` 2qI0Ќi(jqaKBA r~PU1]ãء)4)S)(v0;(\`ÝM*5h ٘Q見؉s%QJVbEIlTI>^Q-YyK̂ܯ*)qǺ.MC&\i9we(D);qOT 1zzK>~mNz]rS,Ԥ9 +M ed2](طgc Q(0'EU?HQz|aj[M54jjQz -3* D})[51Q$sn1+HGt_cwu|g:t:eUOeT=ު~jٷ\ Q|t`Ix;|VJ;KOc/݊h L)C̙!ErʩKUU>s=~qKB{H)yGiMwto׽xY z1TQ, 7~":"ttɴI~\M]pGlvUsAPֶb+3LFN hBW&h="u:`ei3R=kO\KpTYNeBkd=ZGBT Mh4Bfl tEe݉ zG PyZ Yc!Ov){isl 5羑 Ȳz즧tQˌ\ݗ]e{Oz4谸1K88>3s)t: KNtrU 7F}f;U~^?4 VEi{ʖΨ4;@dp…j54 }P+l{6$Ґ0IWzf0df}\6vjq#u':"{Nf)C:gI+XВl_鱞UTJ%hmKDu2U_*aMO5˯q+ \%@1 ̭'sv̆ [)o8T,LJki؍_t)ʟ鰄DO Ђ\撣jEE9\}+"F_+$9D'giPB 5]n̙54!Q9L [h""fRjV nyvB:GkCIMsYC4$X/U֑G Gج5ATnv&bacZ7J)&R/sF狠 X], `OÂ/̇ˋLlXS0f 9tCzˊ\hx=mo90 ) b`7E-LI[1d5DWhlXY#wだfTvX?LPb UӬx@?繓:`C@B[Epba?fM>|UT%ֳ8!QPP3hW5?)!u'\Te&UVY[F3};-RwkZtjoWYp'9i4pGsn h(0O,/vKv[G-w  Ee nߩaS6OcK(L,5jSrrx\.bpiI-*<镂/Yvv* cw_'A6bJR=I)\t%7?3'1Ķm掆4R"867NMM&>ޏYkS*gPY mU^DsdESV!&}tӳT!VjXrQQ(隵$u,Љ3SH;Cϴur( *6)iP.E?f)HnN~v`O*Ui z"\1 GR+F:icu4%p3LFEA a, 9ZTSOe V߯Ј0)2*ɲ\9bџ+|ZSܲ`$b9-\Fv_GIsXr2ÝWMW |zw ִ6j-(0+KjzC"V;>Enu.S=9"p&/8O'ܚGm"ı&\[9k&Rvg1}hའri=LsSxȭ&2,h,yX!'J(S bL TU:] 3ajBtY.ɯ$g'}J:osD.x:zFW[ہ(\ Gί6ڂ=-j&'dA2M˧H>l+va43U;$| *m^1t]sPB)d ޮbf+YuZp9[r!r'L鹥%txRo_"9n ^_,\es8iWvD0`4t"D@We[Tᆎ!vd{uB/2yРzdtҊX0I0Hv)hE%(p0t|sovn906Ks+|˥EoJ^ l0HZ5KE 鴒}L$|>Eoظ|w"!n.9 1aQ^J p`ԮQS;̲v)ٷzKcK~c).Btfa(bIiߜXZ4({{A,L~_8 ݷ: vCȽvpT+iw1+頜,X}O-"ڴV;4}[5#X%x1 9xCL JǍ^QL2COjAizp$8[OiXpL .$?#yTgL)WEk 78:8^e- ]/:/*c` uLB9G~(;Rμ0?Gx09c@b/ḡ1 O*L}{V/]ƾpfUhTpiNRo/J;,"./$w-~ul. & Н. 1A0FBfӺ%&ӏS` !1BÚfHɃb2rq>66D5m+\~Ӡ@/Phu$!U*[HMUt]IPA DŽYҬF. ?{w.̈=X$ĸdO2\Nklg6$ӆӮv"`c4q 2C{ me-hCdש Nfek10Pe 7嶕Su{{> G 墷2|dAԳ} ]`4uz#C-H)ʙ(I_&틢OP?R8]H&q<ͺ\YMEHSXMnZ@,W-N̡_@ R 'C 7 en!UXo:e:)LA21㥶P 6=qvr z4@;w"lnhl_m#oXwp뙃 QzEGcƓf ^Ea9= %+XzQd굃CWy!M9+6$qA24)zа+lf.8 >\$WP .N|*maqptszƍ1tQOl *Xj kiNR.91ygy0 D'Xƒr򃏝rqӑ-jb] 9}0 sKg"XJ>*-J;"̜ÛnxrG |2+R;S]+u#+gC^r@[d]K[pC3460qdХ6y%(-e籎zsrKD"^p%iL+lHcϵh:Q0K gGLhYd]NcF~K )q[ @ CM}QV`s.Fjc\vg-d2)5hl,J=yKSXT%5<ao>Ozĵ_X%E;Em))3/)7ꯡ Zw2I_o o6*H-sJ32nK(Ga%TmGg$#ګ0ͽl^DFToLtO0$dJWQT=j e?L[/>̤ +YVjmpfǶ;6@i} UC-Kwn_H-L{&& HB7lpD# ?hh;!s)~3١@z H/P&{^ڄ:0|WmǮc\úq S_l|¢R4{#.}eճW9~A}C(s.b]q_b>-Y$>?6#BnS,{BF^'iRk.GkcI:I z+ʡFd-j?$ݤ[ ] r & ww,+HhQ82)ƊA9;Ghc:%I y} Z5WH QFX/MFycM4IH3\ω,_!Gib7 mq?FneK!ۂyhXǕz̷on.T:6)OQaXRYm< 4&V/,OEotz[)#P<$z;%@{>4nݧF󗥑 :K}c܄4D Yz*S3.gykSZ%ujs*,2,/[r)z #G1 W-,(p6&?W.KSWf!j{6z1 I[k&P[a$`s9| (j4I  ;D.rx%ZHqRN$fj(UsW 6~ Hmk~5^ڱrn {Ts}o&LV@YZDT<\*|b֊؞O> $Ť6%'uW%nDԙNe6#V!?-zQIBD~IVc:GŌVP SGw2S@8|3ᱴU%1Oʟ(HbLU[E#ٳAXorĵ |0>z*r"e܅0 @$Z:6܋iZ(va)bL?y+{ej.(HuohbR=NFSU+/mCC`c+~GHu5鐂Kbf[0< R sJO@X̫HuUpq,eObZXwKS}^F:gKK xC 9 `Z9rUm(324wu%$9WN!1&RcG= OM7E%:Dd7on'Щ/FBQ% r!*V(/"5/ S#&}]Rˀ9d37͢p E{*wqJy  X2Q0}/r>,ؖh4mOx|m[$$@O~Z3<֨2Ҿg1WW[3v&һ%zor[iпfU sInt:r5Nzړuſk3G(Ons80HE45fM>-(=0r $.=9n;%0L,% ?;1E ZXsr!WAX6Sp5p@AR0=fg-: \rm!O]\3u8f@ '`. ^~f%wVendstream endobj 185 0 obj << /Filter /FlateDecode /Length1 2203 /Length2 15374 /Length3 0 /Length 16676 >> stream xڍP n!]]n \w 8J꽢 XWݽ(HTMAv. L<Qy-f+  ? 'gK{;x:.gb@wGy{; `ab@ fi gہ(D<,-\W 5p-hXl3m& pqqadtwwg:3; P-],* gdoi 5 KT\܁N =xP(:,/:`f`/ݿ";hbbo3Yڀr ..t_@gxhw@2M,\-m{LEmmAv.'f2y'/?/v i!93ؙ89 GĂjkvwZ x;@'W? &.ccٿ;YztǏ0S{;?_1"%("bggг3YLoS%快c(mgfGۿ'kC P=&v&oߊ$\mlS<_WMпZڤ]"lgn6Z:KXzL,]L,5DwrK;_wQq~Mߔv& ;D`z0vv7༿𝜔ҽV>P#&0[ddiD/2 !k5V.֧ul,l ਸ਼hZ I鱃}$cQͫM<&b.8V.dRYU $GQ5_)LO|F<41.: 2p,ZY6 ";cVƪ06u%ÀűP9Kȗ+?A \!h3+i+,CIǪ"o6UսbṞ#nWBJ[Cq Nr%1sA3CbK=JQE8Mݳ;^4㿈Xn ݱvy aۈQ71M(GV7mƶf}{;R}UrOeڬlCCi^sc]q3r@?`'N}ÕX:VR l=QA.D߆'06mvpq݆[A."4lS)K4'y1vJ+|ǍqWy#⍈$f܆JGUp%Ћ{Saw @p28'p* ʆ>QCqc'KfcNΆäܷ٦[=L|csI*}= Sv:&83εn{Cf SN/ъ5xϸ0TX*n}lSy5-R6$HZ0D21eMhzZ8DK64ͳc< ÜIrO:Y~u677mi<s:A/(ܬހ$/6ǒ [Ȝ`${e32I0{nwVNSs˙:JhlfZ]ɺ*:|9kOlJ-X-}CtQ m{%`ޓ|a¨pBX 4kHH(]R7:f41|er%Pϻ#t4;=)-[ZLKA*?Y%HHF]<p^#qјp"?8ƒ,NƚXp:S_t+9 ,,4~wR N%PC L`~(Zc-TݧL_΍&2ə̡h X XtWTsIUo  P[lfZ>tI!l}`nJ {/P6eTd,jeBX}Rp0c„YIz5n&GyjX*X˘eF3`MV)Ǡ #_~m2g#gO= E@ކ]2H#0aE7wuZiAi9C;-W6'Lz@ 6\]8 +zg~*6ǧaB(fƄuɮ2ҝ^'`w; "hGK 9%8"*ҀBn )OS~GtþTJUH![U݄f-g<^L zG(G2 A?bΖxv/,WVCsv%jy~ڔ?8:%[g4"ڮe>tI _cH}6])3^R<$RCY0Z}iED'< RПyjs4Cg4Ie%LxqƲ$ ʭ㩼yV^A2MxI&s5cwδy? 3~b; {Z\L9P_J>fE}ʓ]U<Ě-f=daE/T`βE߰4^p:F!c6(ms%=WZ9 2ôsVeۍoMBĮS h]YP+BtQYxk3O Wb) F9LEF0 y4 a}+ǎebK@٢j4OĖ.l:`?.+>%T޴SY \RCȨ5Ved 5 NJ SLwgy%6yDuͳ=VijvtC,gqٶmx}T?ѳ,4!zuZEXY·tnhoq۩ %{:-L)߾$K'%]*)!/Moaƈ1:Uߙp/iȹƝy+l:? 9oGa=0 r(/UUO+xD3jS~S:˜JLбA02JX~T~[ z HႡ;;µ- f h%_`W88nb^5(\Xm)w`,u|wɕܫ۽t}宬K)،@۲)xmkGn%o'n&dX"IXUQR՛~]M-_@t[A0@3lrAֺۛOi7Ep8oD>0lӮ&x2=+xEPQ:s#ShP"WiڷyRDD8SlU^JuER'©c~>9ӺL`_nt]3 pR6)M㌷d5gˎs.oFI@6&aд6"9~^w{9 Й5Mڜb>F`G jЙ~/w!PS<%!VOƆx, ,ѳm"+D3ɦGJtHE$]1 O}ӶSTͱsrNny)k>vI#'LW f%WzFLYKQ[2݁tUԓ<^.09](fEBZ9HhQఇ蚔m2O72g~1$[9PuM:<9=_bUJ(DFc%4)YbM-[ցs,s%K'Ҥ_n50@M}x [jPOWஓNtsڨ G~9qZ4OnuP znz.Mȓu VEț+wGN5󬮒|?o͠ize ;$ir#GPARKA$.}ΡHOSyTSָ֓ V ZVszu +p:>L&1&/x})|wcc`^MFۤޑ).gXnQswwY$rj߱Y<->–V1A}7tsdjo=TlhEk:fvU$dA,I[>xpFNbOG3 L7еl`uB2†vf$FJlTusK0-=RTW+a̟5!kr;|z)?+827T&.w`|4 )$o۞4E+q#FNB`ьf1қJTaP.1VE|Yc:N|MJ(Yk 4EYZIs#{=Oy/)+`m+kc>c?Do#Cj0\CBmd z~VH gc`[}JX9]ΗjG ,y9Ž*4O>v{g²^o =vy8cVKn G)R:ĴjKo\ׁ2}:p0@[J5,:lW ϟrq7iΚ#Zc6*E^FͰa,d΃[s̠N,iz4 %@[u4r0%s5U x<݌E*u 䗳WN5ROwΈxhI.ApU25VOݸ]C gjX(ːga~< Ug7-J;ԷT:GgJ9NI]` 3v=VV-=JT`c3}߬x!( .0P)\b-TJT'ܫ-~90.}0SCt(?ArDvtV4ʐD0*>8E8//]hoOb(J| #5kUQַ^,:$EũL[|(zͰyu$*;`E7=G8`VBCϴf`6m.:i{M %4wOrͧcQ9>7# hS =b5޸le{kA9Ojrl3OŔbl|D8Q%TOuV Wׇ\YtORbpw,q򪴈f-3ս3 .)c \p}%b>L=nN0ʆv' AaLAWQ*ŸOs2تRFI(<84OmR)){c/_V uyO?PA3@;_F>ny_*o8n>եe9fm"sV$hԮ D(=܌VƼVIL}Du5b4ge'~: _ dy==_)*Jk8e)$aut{=;G>8DR"u1tZh5^W$^)3Er?6F/M"0 /¢;pbs]{E8)]U5~% QݢBF${A:3"! zSK X7G*[K"VCuw)?>''ৎ̈́2Dlc ND=|9_BmY.Y1HFaqW]C>XUIl"I34S.4\qaJtI dM;A؅&LC!jNiOA:!`ܴDۑ(*Lϗ[=;SP/Ue#ۣfu7X˫Cp2"Qi j )V3$i$PVٸ 7;W[ϙ 3hX+]XbbX$t-Z%$QGĻP리# jnjG <*.@( ABԚp\E1AttԔ3k}jNjZ^9Tۯ.)4<(Up̵L(ur\ Xgi( ~:hM\dk)Zr5OI< c"x]q<0hֆ4aԒ$X3}LL($`f q_ y8M;\#j? WH@CХXn+AqQ>Cvu1ֵ4{ìRe;: ~rOCrOCGy cR&@DF_s?jX_]W`q DE+i3-(Ń!k.*u 5Vw(Cf/堀tiVį ꗘ57TQ$hKegOFBO%Elnq6>$x^hөљ0}CC3> T5/t,} -ZzF@.3Df:d/a_&P"".t c{\={uI._vrĀUzDNH"\~6a_kENE0 `X$wKP˨߅҃5r)]˘14fSin MSFh\_KW ^ 6GhnM<";gjzq^Z=W˸JОw‰( jpyNPJt= s:paV[ϗk+@iJs &ȑ%1z8sL E8;}^ P=x/riJ#&aE\aTx ϫ-YdN!9fALb8䳀2LJCj=sޒߔ)r1B)н{wyę63p_f<å |#Q# ٞ7, J{}"7ZTHW>1s!H-8γ"٪C ߐ8V­;/_W'}r^9{s*Sq:R.me.ZFVB۴DMSnr)mcd98Q .IDX-3^uwr̄(2aTb0ݖ:[}ގ\Ĭ.9TbɏCjfrְ;WvD&%}(2WHgh(;RW1.P`% ius͈Fh`Aa" 6D{D{jj2 ZෑԩWLQ#d>drɭ֍M|O>}CG{4# ח[7G%Im6JF-|5o_ap#DF1yc~soLDvV@80*[ DIMˊ͌jpx4-] =E!2sDNb0Bb ,4嫭hr卌˭es HX;Z9 7ޝAu**LCJ*|q3tOaߣu`nѢXqƲ.TZ goc3 K|~L\n~1CWNWV=aIBR3cK/dOQm^OZsqѕ(a2+O\>G3JyVpWOY+[= tIy ^z( -0JMhDp d` Y9C_Fe<)\:oŬqӚF}zT<.hƔ7a;=dyU1_=Eâ}4-5gL=8!mj'5¿`~_ӳeSeJ-O+83N5Psn$b?>a,b1߃~8&b ǷJ| dNJXY!r.c%uՆdA'os|ۉb6Iu]jwZ`{*l{!T:_OʱJ'M;`2=U?*dd;ۙfȪ<>P,ڸvO)_JJ*%t=nt2uIevY kHq1 (k[ '*8Nl$(%3L9sv>nE,}6=4xC9k;K(1`~l = 6Fi2+ kGM+pvoO3}E_PP)ٛll[Hd3Jjfa ~ .!3R]Nϭ,5{^Վ yM]6N[Vi&B쓦W:*ݰO*!qo5M:*wīkj5`YyE. c5.J>MmxƑSaƎ7@ed}dqEH660zj\0WShwP0 twf$,} $MֲCHoD왹c(}7j.>K_Q[b?}Hy_)X04IJGRGs~ 8t-tm3ajwYRn9M6ˤkn޻scE@0jGKݘݰ4u=ܽK͸lZ煯60h(N} z}YǍIX]߲] qxC׸/& t؂q{u5o%Լl^6XR55RN N#XbEj)M?qoOUk'v115eқ={!A`+:I_4\$*30Ek) mա9ᑀ8c7E5R7%)܊-̓)C˂]pjξ}|4!H)ZEZL>¨.T@b[HbHYɒ" ]Co!Rٓgn(/gF;fmnr5Fg*ߥઓI00!S,g[M;`tZnϘR1 +-F'釕ʔbKG{?ҼXrgUu** rfWLlتgʉc  aԄiߧpgtD[!:^^v&Ԭ9Z9?pIsNNnp@<2z$3QGOnKԩkEGq."<i/k||\.&Ⰰ9BiH/T?eʱ4KvV1hwuAZKF&ݘv˸Q${P!~KZŢ՟M ˑКgw]9Gv bJ[pGXb V (~k8nǹTjq|)Eјg=%uQNu;dEt\Fqge ~$'kp52K<|+N@*Ub, _oqZqb+l6q5l(Ga Zf }]n`=WŒ-2@3}歭 LՄZi4B0,59P]XBi&Hw_fQmsy?~tV_4@cWhBS:+ C~Uz")(K)r\E-> ]|A[c"^Dmz3 u^n4)ꈯn[ US p wq ?jڛtu ]ӦGJKTKj1)3j^ub:Rw4tMp9c`X+}s?ޣ׉Q-3eE4QnyU+`X9[=$ײ4jguUsαՕ(X!M[(zd=#϶Ş9rc$B?t oJfT$ي2ې=rq{G4bhMTgQƫ=i] mOGJlP$6d7d~f_= \T~?kq==>@A=s3XpI7ە*xbrcTw`.BtOi)+ X e|;ZX坬1Ugc&=- ~g Yo(>^]`<^;ٮPB}2'V[Cz&}}8\^kϒa>ob14QOƯ %%C}c+d{>qJV""(}Sцk{*;Sy<,r|33#pZ4`hnvM1^W+< gœf"O5f߉n`c;OԷbQg9lN32 |fE9X Ь*(DvEtClpWMS\!a9aNBƙKS~jcd3)H 8g [^YUJ|SDt/$z qzEEy\}4O$kKSi3jq5ʽ{:I1BG0W}(Ax!Pfn1 wd-;oip55Xe9*W[%4 e^$BP2?QC'= I@儀*,ϭlJq g:,k"SُҐF?r NTc87JҧIaſJI D66um:݀saL#|mvifz_IL[:꤇Lupߘ[[a xz淢AWI]BVs^E>s ~f8rÂx2?>P:1e]شǧ*`idy/uK[u!+(?7ɼF/$,:Lt'ǡo=tӓ#'F$%].w2YTН;dl^)3ߊ0Tu50y2mE3,| P6sP<ЀFafOz!uMDx!OXkgEz&޹˜" Z蒲%`qehP~fKd`;>4{9m'gD?DW<JjߨnGc}DiN\Fr*p-C9pc0j'gxvq^C9]9y!IŎE0NOV@p07-6^kk|\#[:4ȂaQd'e<un'Pij7n$X\(H3n@AV-2cL82SۿN뒾g,WR嬘ЌmG@"oR5>_^;OY`$_) (X(8C[5,؃JC$sJr[PM@4XOبha|ӏ{b-m%gkV&dy1y8,JƆM_({\׌rT~)SyTwe'') ~J=۹ _ kRPջ_( ^}ZZzHgOL7SZ9>gB5;c`˗(ߝNwv_11]8s&d;Wystc+-SM L0 /(NBs^YlDMˌIao7Z_ )/r[j5!c8 "z[33HO|кZUW'nM2mghU܆; IOB$iDXKȅBO:SKKP!+8HDO#Duo/B$R뺹67C8~ˈaҬMu0jeitRMv 4:%wEMPG;1K§U'KFZK(Nendstream endobj 186 0 obj << /Filter /FlateDecode /Length1 1826 /Length2 11363 /Length3 0 /Length 12495 >> stream xڍweP%nqwwww kƝ % %k`+޼7cv^_US3MR`;gFV&>,+ Rl׃Dtt~;_mίTE@`ccavHL9 Rlt~G)-p-djlP4vھV45MA@gJA#`ldlve-j@'+ %c[?1!Q4,ANnƎ@d sz r3:^e@ tGdg)dg0R L c;?6NxcWc+RdcJ?Ҽ8hG G{0sv`7;9Q\5@.@YY&m@g' 77+Z2QDO>^`{(@9pvtxo 0:L ;-pY^'=3xK%% `ddqs99>3ZUA[FY;s01^?4ˇ{ +,,_b3?{rA0xylW(_bTm_ۘOU+v$rM-ڧ\kP ?W Ze^/OUa]Wl8ƎH;8^5f&;kuB9鏫0aqE\f;Y `6MEfS1Y 7Z7` v ֵj7Z|kxڿ0lZYƾv|7zl_O7ڳog!k3\b91t^度7,$ciITt^,r h CS~x}3'W5Qf.c?Dk/1!p:mwަ̨wKBwцzMypVҝ3]5#IZMLQh?&qeMđD8ZE$v`o0(JZhjtL~̘ptv$zLLQL Mxj<6ҖN+z_խ S N%Օ0-)cOėq [Ρjv9yWʃ-)]|;sU_i(|zTo=>_tsԙTX60iD!3̌.?4tk̮ק ӖzFN!9=%g{3vfjL|Tt  5~~5roClTM˖jpQѐ)PKWl?a.ȡqtA<¹ \tħD  AEJ fKO&=}=Y5N|%#!u}Lﰸ/' Y릏Oxy#lmwl;=X}H  M`2D"j>w[vi&M\yAR5>`)o-iS\f|3[;) oZV 7Z`H,PaNt0[D_1qC݂:E>` oP)×ϧ៕9pTԵo%:y,zZ3%T4F NKv YFb>"ZzC~"i)cDR|% NTZc4n^8Fxɠ!Sa>eG/A|#Ҏ s Nx$5,TM[+:Y_:;oW9|bkE궅lm#ټe/WT i۠"iq.;^fPQkܗ/ FG 2tpq֊(g[̆z[=N HLdVVd֔=0'}p\^Nl;9w cܣ\BDr|bw~/7?U Ԕ=#w^8BD/R uMNqD~b1'uzMkTzQ ,&×͛#'TA/ wObtV'Cq5w㐌I Ȭ ~OR|BXjlRI^ާ9y8bSd7ښ<=Of:2O6"9&Ht^w#6-1`FU꞉d';AlEB6Vr³;v+C{y!zQ4̙)Yg .t?`{a Q#T)?c0&u٘^pT㠀E%i_yh3I zފpаY@J/Rϒ"2n|w*%]}heHH.;mIA.G|F2Ɯ%W &K-4U/xJi^9Ab#B`++TYi[.˕ ڈ%Gr5>kQL\So@1#) 2 Eφܸ~$9̧7Q?c9kr;o:lTo12\GT֟+7sHUvmǔUU:E8 uFtqOX.Vw귑~#OMě@wpT>..3n*2xjr5q0)6(O>-ALRo8/&7@Q3*OnOrUM5g|wc(5S #JNu*o?BaZIuEKIZ͜$h΀B)k3%FIlhJMdo!}-&^ӭm(&bԬ_sJŶׯS50A'!VT ^Nʛbˬף+1R!'Y;G!,y _}n‹ҘxL*:БIp5] c.JgN&n8n֕θ;3Mm3BS+,SF EmՓM7WwBŦ΋č4~(|,vͮIx|m[N24 BNR$*Ϗy{Sj{- L`2Qݩmrэqܚ:tbJZ& g :u&;8]%OGyb~6AF yOt9Tw Ϯf5N_^ǀHaPbO˭^xCJ9UoL*֤lsylJDQЖ0" 3dΑi9rtN޺9 nߺТW6- |B}4+l~Qn:]b&,eD4KӄR-#Bew&l܅6e F ?wZ2[FūD:wDR]7C"r3m8#kLN!,>Tk3_>O #\aץG]ul5;,bUZR# ?pLѣP4m"BG>:uM 3bPbҀ،J=hC<)֥(UƚtKE?"'|/JMj Q Y穏Lz-ͭd^a韖8 IʥEa\ͨvGͲn8)7kv/>mYsi:ݷ/i081k\7öT6vkzjђs 1p^[{w醟Bʺb*f!וt\lvgrǒ-kbʞO-[I PIi Q4a t^r1:6״|u0;5_ Ƞrd8@_0 +5f":,|B5Jq_03fbON4cj(ϯFkӟQUȴWw~%_#)7^o.4C@Ov[aS\0[ǚ- ;=(Uw[qP,%V~nw_!۔ {i04F ^yk{Pw݅WaZnAAMBelfyˈvb$o vV~g&MLIA% 5FO&@SVij~/٧rM7g%w(Ufc'f!t#0zS=ʆ ttݜ狼fH\9ۦ>kh-^ѐ OUmJT2Nv5F܆3fژ oL 'l| 3-K!MYEG%eh[fAymhgvG>J7jRou^hz./nq=?,LVlJetAN5 XC9^$N/B#ndkdWFG_ y* 68 4-pD|-p T*-<Y^Zio!z<ιTtc7KicFG|B9 #?_+mV(i8Qt.1w:O<-Ip>B)@U][mLPYfMv0)%#)Qh} k!;dJ?{Y(!W5vc 'F/ nYO5ԺTh΂<{I9hu؞)Sv}{#x?S\$< &ө= Ŝŋ< .~ydC^<ӱrnJ#ajqZHǢ!)Ư¬e݄Cb}HGT7$}Glg[tȃV΃wWr9\ SBIugi;9uĻ6mi!Yu2\g%м3,C2xmB.iKEm(a]Irro[]$;5X5 FޥಅW#46-dX$c GG]D|nDh0KY,msUe2Sd)+KQ%jյB'b\FS.mun'Mv1Du,wp<|{6?3C\ 0 v8 \s*փ K@C킥ߥ < rF̷LD<oiG̖ajcf^7sp8ަvOE4\SnJ*Qx$OS"6/h;y=kӉ_>=MKNa,c;(ݝKMB`9DSv4ib֯g4h1=-j̟d)|@ON:tOYMʈ{a&@WK#smUz;UC60y4wVq|vEl(IWvĎXmmԺ>lb0GKySq ![@.wZ͂tgR"2ZUǭf_V^CDщg s;GEOX/QA{t17; rdkeմvvq5awMܺ/lc?FhS/c%.שrh 8YoQCv1Jl>Cf&>=f"٠J+wŠ}|Sj\0v @`ȶJsYw`# m i>\ÙaG{Е,gGm2E Vr{#斾N{ՉRߝvbAXGSӹʉƗ=_'q2$ygE1|"I M w(G,miYNB=H߳r`o b}(4,kpxH1q {tᒤ`I#-pEpzv0a4RR c:; PYO'&VɕOdl18|T-]5L0OՐGL[|#f1 D{g -V=k/FBOFf5`51-u+#;. 8J_)debrxԛF[ i#╴wV!C0;ה3\cf}%zRm~-eB)2F|)N=QD@$bL0iw$49گ1fLe'}+ z\3W b-c(";Y6d۝Ў~C/ؼЩ [TX ,F cYeMTBaeFgJIxJ٭#0EVY\7^J&#~RBWHpmKMZNNq2 ,eou<)!iѹ]8S^!调~Q^Og Y޳L-ue34/V6еnSo>O3mhJ'Lc&=fG D_QYv]ʹfd\kQW@dޥ lNEDQsلAmը)Q:k_WwIC()Qk@)WIPS*]KFv%t:mΣ7$31Bɯ8,p,IUb5IY>h`S{gxs+2͜i,E\d'jX1J?kJ1L._Wt疷(:޺[_ B Rb2aX~gq׽%s˼΁g"#H-i"Jרnfǫt͝1 B1baagBPC*cc"vb +M47g_YXuT|voWU f{<^zyw%E.r CĩsZH2/@g#)({IW.&=ԅS $TIyQ\ QnAhd"?$Ԣ_Ii-j%r5a$VX5)K>T{fڰ\h ւຘ09E0]3I;fk^;´(z> 2PۄA݈8u JIDvD|,pZ*~$!nI3{|IWHE<z M$POk c=ٸ[֏NFVIn]HT;);}ezN+y3d"ZdÓL@nA'p,do"V3g9 }FGNQ6T?-e]jd&SI3Aa^r[ DӴ7<q^T^D-a LQ6xva c!ݱQ|80SƞO*Q}YߴXBϭ=kd nK#r*cBM3 IX ` xeGߎb҆@Tw^7\ io{UW=reg>gh~ym }![({pr9dshVVT &y{N[gv'ˋ]e탇pwI@)8 5|]LY]ϣFlC(yN*h)TFaqHRJHY1tM˕bLEN İCJG^ZAJ|GX1߀<8cidKp |vAegĊ2O*{TqIm spki 2{]c: (`Q;zX1MJ ~0z"h~p̐x ]"fQݲY"y.:>Y=PyP!EގQ~t˦0e+M9܌԰!53!)isnz +XׁWUSrZi+]Aż5H\!{3}]ރ^swJ^wH#S},^N9)aZ9#,W>" \$5wة ݭO/)rJB!^UMu)Ib7:S26L8<1-7*x?]hSdmxM¡օ&Q@BٲiiTp9c W" ,;s0Ef̓+33]w?(hqU Ii+[C jkfDl*µJ1Z3ʊ+l}A0f5<-tf52/{xrd+x:=&Wzà\V{Mrnlwή#ީi/e!?*!2^gzi폪n[M&7noT9A,dk'n+;5uX2^>}m T~P/GU[#DqLN@Ka)[UFyn:VI#ubʩL[x'F;zZ8ش񄫍8$ ZO@RgTmJ~`ĨO&Ba N500cxAVx̷JΕDWwwRcgU&I(L7Ga> 饟+ƱaĦ+j b`1[)R%Nr;rpDpf&jH5o) G\oT&3;>v4v6Y⸱5^\6|tB(T%&4aSHũ7ݡ0IRE9g0!QO^VXH<)Vc~ĺ9!lq- aqc 8m&ÛVgC UD5Іx7)s ߜ*t9 ̔:b2QŦQ 0dM*@ڙeJr9gnamQRНq@R]^jY`ĹNz^=$ܓ0\|V)&̂a4gg&!yg.)+RpP d0cA(&mbtOIkh6VTe(̈r%ql,[_Gvߺ7 çbΤ>h4\(Ythٶ^J$ #S51q/2'p3\Hώ]l18[:It,6 \Jm^Gc>Wp@슖JU-wEP(j>3/}f xn2րsP@WCa,S~򛰥: };4 +m.+9~Q/cRiƇ8[M A-Lc~)":v,&@T>}dc chyvcyJjgL^+tW=2Cl.#̝2m+$疇:,hU: Ͷ4 }So Y=fA߫}C%Wendstream endobj 187 0 obj << /Filter /FlateDecode /Length1 1500 /Length2 7011 /Length3 0 /Length 8013 >> stream xڍT}7t =fni`ml.i閔%U$%$TPR>s}oܜ: e*zzZ EIM`7zRn3( CeCc:U0먇@b HJwvDd`O@OCѤ* kݹ#%;Ep uV0(_)x10-@9) `g EyB ?ЄI&0_c#  7=Ɔ<;@Qlu. @  G#p s u1AF``u:lcG0 ȯ4cV; ݡp W0{>" Gxap_0"EL0P-?>XtNP @(-%&-z" _j,?$ p€R?4 Bo81 'Ov? b}y2wh ]7OHL $*)Cs2j_%~H.N}ȿ{ZwQܷ];8 #vwLX ?GW&:T>;=fx=#;"} *]5v* U x]= H[]8va$2,w_ctreoT'kһy w ]߉Ww^^x|qPou~]N SDpe2ڂFJD<ɧ:of />KFMth-I~| 'm']@КW='o#0DRڟJt$|PgR2dae]= ogZC S0$dI %o,iyğe7Q81_3;mÉh& VT< \8NwI橑8$5Yi=IpВ}/cc. jӮA=]'OL3jrVzn&K~9:\>7.1oZ`m ^ЯIcN՘1)5EкF7+.;GIoB6zMM~ӏ4הu>.2;3|f!L? 8Y\ᅖ cuA,qhĦ;?Nn6%zĞGNJ2gzXL%֜n#Rtm-üo0ylk[Htƻ#L-x* @b) "b(1oȪ7x߾l0=sWg8K4Q Ih.}7Vs qI~ʷ%{_(z4jRf{1)c4?׌!*qn&_AldV;còrF³ G뙙W /ܪ}^/7=)'TXjr_{ވ)ha`{?m V4PK|yU}ݭb@1@7k*oz~n6#l>84E߇O¨EZ<}5˧BxU-_)7C+}; 'JV$~ip]|?9z( F&g1,nݭqxі?ZrpB=vAiѶDƻS=Ă\FPiUK=ѽh2B iweseoe HB.ue\oeR( J[Pп/ !&Iݣt<=dg"#Bˈqեi7$+)sIr#⸐x.σz0EXuvt~4Ӵt`ty=%<%FSehw'{: ڿJW%kͅKa H`Bqo9#LoY[Y?zI1!o6kMND2ta<ָN ڹap Kͪ:|[ A.n(Scjcq{+ {WN`q~Pv$d7VPc'‚nG8gp:ieȫOgFPgJ;ʁtuMuºmGȈ}W¢aBjzkLhHmOչ-y#zPa+u2ju8j|ܩ\BwFhNthPsT([fK[U˙RMdXaȾPvf=6R`^OA0|ZXi>MRxECt-yV[ wQ1 $T]QeTCL/BtsBôlwOs7(А}V%ztnFzTwAgnb4 ׎%-\?mLj<wWUn>m=tW,8Ufjِ@tYjVw+u7Ӯ]+=>€ދ0 %A"R/\D&R9ta_~)উFwl.3v xeo"YL4ΙJ2uKZѓWh|Zy'ş;|dmS:P)5"sMIRN m?_P+ ɤag!g( Jvs2h|@!X2NSZk.ƘUz'#D~o 9[LøMm ڥ2 >: r ކxֲD2MCw`"(Ulw 7Uq)Tu~l(n@0uTQU/h4}׺$[ڋO[ohzSpZM6V|bqEk[oI2$a(ƥ]GaErimHW nD Sk||WZ䉨v=\{JT zHkyĞEFэfD2`[xN!I7(-/m x_f1 B}!Q3ipg=B9`+*Ayo۸g/,=4 t;*y]EDw k o ++l(u~e4"BHۓ9z`&&K?cj|c{b(wp6j 5uF"}PjZ1b_&??xCP{훯}A!>ww%*Usا.Q"uT< u5bOʍYyZ}䀹@~ ({])&=>O%)V\cs3GE_2[Dea;S4!uY_,_^?o0 n)sts =wb[yƂMI>L9k)#Ҥ9D5C7G~LGV`թIA!.:W(BLl꛱bN[eKĦ|kF9D\KPB$jP _&A2鳧C^EnfUBDn,j? k]Na:g"n9#'L_2*U(?%2,*ܱ%,^lC[D)7lCBjQlv*(.gƜV=sKpK.ACUI[WZK]RVƻ=\}JF$8wIOծ7jJirE_|rM3 k۸2wηqz߂LKj-[1Ĝ2848|D9z)C7mu3NY_:DwEy#ɪIw {JG!r ֺ]fiZBsʩǛ*LLTOFw'sy!UK"/}nn9?QcGվ'N,yx"{6=cGNغޖF2 yUqB| !ƾSrNx`#YufװwD~~;sBqBm%֥O@(|Ʒ:t[jz4jq.euoҹ&|&>`]'AZfWVooS[0'Zs8=^l, AS^H^3O.{쨘鰍BQqPCҙkq7nln\3T^nUHF_eh޷ +00ޜϝ4?HU}ogI; E1BHv̂W^ډ*9N茳@ 2#zGP+rÅ44گ_m'kWj~" vCq}}O]ra dSO+tnS;/t1Z6wW x^s@ujN<˟Iqh1d}؝Sd|h[` O:.L:xU̚ Lt/}?#G'zZ768 ֥A# W2!+g<5KSMw!)PJX$k` ah˖vwaLkVгc5A"Fr'pŹtm]Y .R#Jy "Ky]1D-CsȸD0xYsכ<_;3lI[Z2?'`&Ӽ˸U.W- V*# C'18YL酉GwR7*޻P^h[I\H'JL9>}Y}EQPBoq8.>J1=p._RlC3B,y 3XvƩ"Hs1Z'R/PѮq= dUt;g $5;\K=W853c71޽jf 03 k\fu>_ؽy*y$-BM4,^"HMd"k,Q%]$> stream xڌPY Np88w ppww'@݃[n݂=wޢ սv{ 92P֙ ,`ddgddF 'Wp#F W::YrAv:d" -@`bffd032rh 1t0lNvf 7PS8h::Zd ́6 Ɔe;c LP;;s3089Q,J@'++a *N˕L h:bkt%e@ۿ2hDN2daaCcc;{C[ [35 /&CL 05E4v7t564 &0%OzNƎNNֿRdeTeQ[a;¯D,Ơ{0Y+[;7[$L\Tm-\"P@"233tݍ~Wd%eeog0%0 x9Ύ.@?ELL cguh75=&㯟tAebgkW$$Ĕh_;@`5dK/?aQw/Ƃꟕ׃hߣh y:oY_j?jC kQvqh9l/U*M,\lVfIh`ll @;'_ ԰-Bq/Ou)jklgkփ &@F@ok :0sDQv6/߈ q#No`q0~#&o ߈ ~#P,ҿ(oE7"/Ţ+F ʿȻoF Ȼo/1 E, =h]~]r@Rt_YV_V os,PM쬭 `Zm{n@u1 At?/,o{Lֿv.'*9HflT@!3(Cc?*$~C65[r. ȹѯ[cSLd[ az`m?g C/.@uts a%sY5 os/LL ; T,ߵ Dw=hJ gsGeE6cAuvȬ4@P.nv-<ƧL}}m ]75]|\sQP4ΈXJE`tP)z6HL&y?Yx\`N=WZj'th>ΚtQ/Oݶ"M$@a{U;3jiF >Z %@Mlҹhq0W4Jq7R(U =5R`RΥ`^0ؿ"wwJ'\F1 3s#cKu;W'z S8aAX 洮~>}ul5;x?\}}uu %G!6p6KNw^Vcw`(<)M>.L?YSU-R$+j&|na([ͰсHE2m+O 4o٣j[_ HONQcv:˻o۲e_:g 30d%6xl΍j=hCڔx}G./#Bͫ Ū So+ՋQ Q[/,,j3|`9b¨X· ?OH&XXn渎) * `LWB(YK=wɦO1jVB乌^vH 0FԻߋ0x~T > _}鲅 yD?O (?T\VE# F)eH۱ i@XuRAf¨hdz)頎5|Z( yۯI=O棶H_qjRN/v5tSj8M0~FJ@1PQ/G%-Vtgfe{}l S dy*ܲ˚pŔLh#zVk }J뇒!34L#8YD8baa(p~Z Gom׍C̜M&tnF(dxC7Xc y7q?$5И{zmyVe^1N@\]υuks $-ᘹ-"qk x(dAT[ ,O'Jp%foK DZY{8)]34Spg>UY'D ab[|ڽې!*ӆcJM96f*cjzwbUOGTacWFzSw/ͯFJ$Uk5OUD|*TLH|tvO< . 7S<+Mo\ ZtDAhaXR_@z9ՂffX[1TƼTn'WÐ )^23CNd&vT]zbFwP㠈eX.#Vr.}lUUΘ՗E*R޽ 'jӉm14F-Ic0e $W(-'F@X;-,m[S4ygIFc/ >,kIi? HK*(Me&`4U}n4{-G%O%^GbxjF/6\s."-,Q +<<HɀO5,L3 im^'Ku XDd07nedm JPiB)ix)zJk+1F*èbAFIږR2EgScnN_ݙ7Ի!=KT@bj/0|.=t=A!iZ:䱪Ǯ`[z8?=T6X>Tj`JaMXlI, 0 zjR?L~v﷡GQi^x"HEҼYP%¦/{WTqe=zx a5+Sm= ͮi9Cq/d [L[a+Զé`1`&KvŷӣItMGԟ"7ܱы&J+Ag4COԛ--c\E.p{8\h=*%dnf AڛQAyPTIml2E>dq"c]Z5i=kq3}[v @yCa.ץ-0dzL< GjWFLfuuB#xZ\Ex̋sG=UoMٱ sIf}M5Ve!(=c"{: GSi>A]1yARAR}z:Of6LChW3HT<'.F c>ԉeOvchQ:dMft4N%t$$"O |@D'YeUy<2Ceǝ)HyxY*o(G$Qm5 ]z4^:ͮU{/g\Vâ$R竜b8Q =WDXeƯԭ0XMDckU 'Cl|iõDƅn5]7g,m: //lo|; U3(5ÂPTgQ%uRo!f K2`Oxc.zlB/\+Q~ D |R-Hp<3È0ͽnbIZ\nЏXdL, )ER8[кt 둙Sƈ,7-i+d9=SFd7]k8$\MXhs%D_K$VeD k478E]gO봗WyU;5A..ܐ?k]Rf .$I5WٶgT DU n+cVcEgoA([/<& >tpvO(ϑҬxGpV wF*K)z{֎O2ϏK(pt"9Φ ULC@u7h6ɚ熨-BW!v,ALso3d?I9N| gC9z{S`y\o; 8)GUDeptpoJae f-f aїAl:y[=@m8Mb{>/g$xlvp}?97g;&VIuuӽתzv_Ig W ivCG7^IF{Mk%]C+Hpֽޘ3}j!:V4h%zcR^/~L^\~Oը &2F:MC`2ӕc+W! tn&knaj|5BӘ:1M*GEUgoևH)%0^]b\ met9EQ[2쀩4HDž29ˆ#f9QVemi7DݔRKjSCGtHΏ&fg(E־ ]F,0٩eñ."WnEd`'YpM|ibj7xh^4&wx2OHu ul#uj]4 {pV\J*\7pE) ji W/WrTA7!i<9|$1a}sg` DMܶ1Nc|tBFŠEਨ__&2d|u ,ݦ}ԦNvE;zY?I FwXhؗ,Wҏ-!W {d/vRjJsΜ5q74T _?E#~  hrmܡΉIgYvO87}H4 9Z(|g 8W+PBFC\Aw)ljz:n8NSDkH(7h ZǙȀꎞOCv1zXmD?(NJvpZRf[O0 E7ۢ$;-ꉫet49\mgLV~6OXP(6#yZG$.E)`Tӣw@>:4jb}eio"ay'|t Q!e)0cjg`K(!KɌc8O e6P2+qgbHZiG{h$wC_:(PW+,@?htP "VIEvF],FLfaoInճle/n]ej."w QiI>F xb VLj>|?I8U],|EX+ |+9Nx) svi&tɸcjCgFŃT ^BҬ{uFu%gVSzJ$I <v): Rl* A`b1?ˊ)z{o8ׂ2 AV\U 6vI")G"\9~V!~ɀBUR6(K\ Xt#":8Ede_x ff4ϴl)KRIc׎H,ꕢ*5;KVkH裊OlnZ \>uo؉'#<ݎt( p'*(!0 QYD~ϻCΈDg7Y 8=S C";eH1_hvERoL[nv6hdw;%bR Z/ H͡\vUs'eŭcy` xlFiry/u1>]+nq$4׺qs >SqkY}̊Q黻Qm:$gs):b7{@Nro.R. , {4f n۵ U+:{#/&5+GіJXxK]c(X"UZq mQ2>U %R,LHFDѺ--Jw~BC#LVH!WM߇l)McHx\rBӞ:uӐl @堬fUv]}Jx˘ǪAekLf+u3h킐tx[{|l!#hҳ pn.znemu h,;+j#٧$A-F3RHW "Gck.y>ط7kA{qMqڴ}^0c5yh:Wi˥91L<*P.ĝa:OpC+oοp(Je"0ZjP=ouņg<*~tA-u֣IӔԵeqz4 +e ''vLd#*?:bBɲhEtDz4Y\sr?Bg`ЛwH:3>[ %4])8D^T|Yl)] 10z)JzYJ^Ӱ'[?ls&0W폐x1<xTpk-3+3Wj*E%py[t7lѯMG7IȪKd @eYW-X2-h%r(o┩/ ݟaj6sWܳ vUT[¾:_vE r$ hTF2Y7Ӓ8gYNlᥱJ\2(ڍ ꆱܿu-b774b'"t8rͥ"B[ T.֗_Ǥbwk`N|9qqCwmm9*é.dM^L-fQ{$TI7Cl0sUt}Åej2P(CRxm|S7cW؀Ƿ[4򹔣bhh<hya7%п:^ Fh#a9,Œ.U~-^RΎ(J2)gMB5sAS+Ni9~pϲ-|E*6|t$|:~feA VeEMm>NAv.O V F֕:9d>cCfbά&b0V{T46^$ږ;eG' 0 H;oh zƮ& ,%?a˹9z%]B[/%>ǗlڶX8R¸8L%6XN J:[{X H HY'|<;DT4slGpƃܞ}HlEgX`r5dA W1H~~5Kj#'ųm cV6\ Xv=HrcUG0X>ORb9"FxT\J9K[WOAo3U5nSbneP'6eWYYQ#[kQFC2gz%'7+e|m(S:[g`ҋs׋44Ak&-7p&Ԟo `#)&zÇ;Xq H{0VN$f.jOPqUx L=]pI! DɰUs8GgLM 21$L\=oÄp8C+ё-#+IdDifŇ|[o;Z/켧 idf>gV֜L`W6sEp@?M\5./So Z] v'̫}P[WK\4~IG ^ x057cqd(JbtHȀGAJϡax4ip@@:U\1ړR5(xjIz2|)Ζ@E\. _ oX)j[FbYt~)N =>Oq9zF4%pXF@+ e l [i= ^tHS2&ɄOri΢+GZ7e5nxa+逢.5><%M,- CLHXq0ڊs*YUzaE>_D AlNJv` U|1S&E{i(Hu Ë\'}DTK^1݊Q&&wVc?9+fl,`cz-֊u,!獯LF|aC~+;PѴUW3(+J^~hoa|inذ jF0W#૭e-'[gHg٩fDfYz/ײ8gpûB;A6@G[3<v c#*'4fᶹXō=3p+y]Onb͚"o5SGMaQO/wVQ}eM8T,69nU|r]|ĀifCwRԣ_=%}@)9npV?qI"Nz#3A=Hv#~c"Є$Tj>F5sK N#MNm&g!EOf"EO>6w`O,~y=A.袁6Q %xֿ S@^Wf[a ީIJ9qtB[>_!GTpؽE/2]V |$i=om55pW@G/S:w=ݙSbpbATqO͊F.dMi6l4^gRն'tDr0|6{bwkyT/N[ 疈L}[@#y<_Ah{+P%Qoya:oHw@Q^(ϕvAg6Fi1,CQK2uMG̦3 #QhĤG#W؏C?٥N\f)jo8F_y]LkCt$|060*hOv7AP -=`v-Jaf| e76O3ziPebcWl@?j~c1, S xþ9闧t]%nk k~zc1KHF,.r:P; 1t2p!L} mL efzLiv]lw]N9Y*Zxv2oáj~iJcs*q!!mR=3SMٝB ΅8t(YLn^dY=A!nL֜~4 ~J# EɂZhjV$qBWSX A+}~n+W:cmvQOX}@n7媪5~*-M2C7ѽɟؖө=kX9aK wWkRo_EPȔpͱ2{M煆+/8枰LRj[pTrIzSF=a΅ MflM(!5t֠8PPˡ %iwҫq ȿ~ ) d(R\=d}9ǧ"GI9;'A0cgs]\ z\x ځQe;CE6ϾշAF?ʛށO!jOJ}f$c-Ҵ\и D\3ݺRʪ,iݏb(1U£hkVo[wm%mƃ;$ȸKxP(q$00 (( %C{#f-zvT(y䑺:+bJ/?/\}osΆ&1Pps'XSjXv;&kUI "Z[EY^FsrR#¼棓ض+ RYѐeixP!3(6ඏVzῒV X߁pgZ6n[F~ְ7X=F3|q2 @ wg-M0|Rp 22:M2!dڹjӞmwI,g!%K}|v#na3$ntbvE#dӭ6مVBdF66"FHAKm`m ˏnB{8 xE hcH+Xva8oN13ZP|.dNz-tL9#"P?Wo(/[q$ѵDVk>jצ2£Z#HO_PkV<;IPO}Xqt`<+-+gܵ2j2y^fk7=}=mtv^m2.au/"mҞžSct|TgQ&y_۷r!n )g!G| :Ǡ$''vB<3qGf@9C&s'#>S2^Yx:該<+J9zQpf5 &OܼN>~*8'`ڌ9vnv7lO0<3PsOuW+wzR`U[Cգ*9,윍]Lrjښfvz0`w<[1I ΅Mgym<W 3-_hnjCa1ĉ4$M9%neYG~C)"M_M/!(::nX ]9ɄZ\LNcç. M4]F6z uop䈖`7zJpt~8D:/f5@߄M.O-dP,u$Bn&p@LWU3ft͗mw\شP!83ѳ;+=fYS 1j+[%w~Kߴɩ..ԡ $~F4 HAYftˁf{FG6ϥ@{8$]14D`zMpg- Q%~ ѼG1x2x9yjubOVOKn0gVavj:D:bx~2[~o=IZsP.ܳL0 [d~ ;I-w$6c "P޿xu>-2&3CP+W4Y,U l^w(o_:WXèOyжiӲ󔻁/ L"W2Z>Qlyg=(- |͸$~R4DO(k'S=vv]}uh4/ĺg_=s>7Q>sk6Qȩ53Z2۷)^SQ*bUM4N?.<73=8VmZpL{'y: < q\ۖA6TDDb@k + D`+(Kq P481#9.^"(1I*Ľr,.*xd_Y?)(o2U ]|jfd%%:EuЬxWNgfu]]u v^(HxfKȠ"2&Qb npki0u࡬wX8RۨV}cFG4xHB? A^5e˓vh,>-"" 2@kthKUzA3Z[Mu /귙tftУ:ZvZfn_ rɥi"P7آkbNjzۭ[ڻ 'Q;]0Boۮ(@sɏf%L5$g܄fX[u$qƹp+a{hy5ߟF\h?uU@#{P[{ 9}:77s\|7>}.OT:XcF,5}(okoG(d=H'/jg\?dEJnjz*Ρ^%_2ײ#85ã'_j([+Q(ta9*jQzoG,fP!%< -w1Hh`*iVLGmWڳPq/6S&W HS>{`K/Tg `?Pp/Z,j gs,~SpG@؛qٛ8 ً lKpr:?REPۇ|5":s|ŋh(: ŋA rvF䌒pL{4k$4Y׀ZKfW$^&"xhxndnp2RiںADo 1a~5–7ˑ9UǍ^m&ɹvÀzΡ'l;~ R<(6Sc->en8 %w* L%@>u 1jcO4T_;"<Ђ顜 EeA14ܣx 烆֙ 窥ɽ,a ~pʓ-My \ޞZ1eF,i*i)- ו])S޸3!8ʁ%@eV_}AՔԜS`deo q>1gAv9$T%YS[V댔lZHpgJ%"пQUG-Z ?#ʱ}Ivw5l\S`S1B"!?3\ 7"@P56ѼbrܔI٤;`ad^V/{K]\ަ=?힪]E;( {wu}Q੦j Q7" l"BG[H ڑ4>ٓ~Ev_3ޖȭM4g9͡k~T&M~䠜G;46V; CW[GT\oS=\48/)+w_-.GUUAmWQ ?۠rN[(8P$ {w6wz>ԒC{i'eoh~*k{#d R&2&N&V0HK:i7<¡G8CE17XL|&2liO^Y;?J9_,hdʭ0<}8`B @%'Y&7,13c v*y ǁqf52 uHQ0ſoSl-].idxPFd 6NW r|)}G=G7//򹨇\QWZGaҘ/@EI0.O*R}bI әZ{(סVC y^I|=e7v6Ie[@(+׸_j k p4Fu#i{bpv#MS>Z%lOĻpK/c0}s [vbK S2mDMMDP$z7yPuO4`~%lq;k_5 W5m]'  [X: +):͸UNiG:upM84>QA:g{M\L|m^RAN3Wy{KxyӪwZQٙv ]L6B"z'esgC1M6'CK}r2Ty;(WN Pniynb b |,tkdИ>smQ|%|Ԟԫ,'qUf"?kfҲ {B&uYu,-@C\SX:evP!~B P| 奫AFEQ2 Z(Ǘ4_=3s|63#q -n$PCR:H=vJB  %:'$&F='hZ\LKg[nlPxڬvLdm{5ܛ֚9K"l@{͠p%^1ݪ4ᄡFﹶT\'=S \Z&qЇ\j !}w4o.櫏q`@$Qow X-TQ kTFO lkS܏U@-JFhZ_ȿ=#C (lбRȅO5_W*qwmP=t,5M8TRB:׊oXaGj!7P7 jq]SqUr5Tay.$Up SVO7'Z j"YR*#` oh䣳N@"b#2,ozZH%_ %'jVd*vkװs31`w5Fk/3ދ !dpK)Ez$覯8`WKAӚ3AL5XKB{%dKZ+ڑMpO/D/lزY&Kut W7Sq1`Q)3^|fZ~ZyZ'\}#+SXGS HtG?G8-G$0%+3>Tj@UhR^Z@-I 4$ẕ F":*0KihzA8 ?GLGIX ++FvnITR󛸧e"=˹/-sPvΣ#>_KzJ[.GH"GJkEq\Gl=hAk"ŋJ&n6w{RjҐpo.}BV]v$]`|_4E6W1MFp^B9LZTȬjB"d.OM,2SɘaꀂQbDo;٣Vn^D!{}/Wb@J|NZ OE: @waxJ ܂`#ހPTgm#_ qic~}Lʮ{Ee6t=2cD7,eGXiA=vIu.EdnuH79kF5VzϳPDWZʼdCZ?Jk̫{ۡo~z H/xhɧN"軗 sJ$FPc #w:RmZ/R A{͒1}\v¥`ɥtGAi6gU2XxKeDJ֓ K:7h*ԬS3{lz> stream xڍP4Npwww qwNpwC =ݹdfɜ{*}m*2uFQ3{=ȅ `aagbaaCҰr#F:9[كe 4vyI)ڃrVv++7 ?N| c7+3"@tFwttyKZwV^^nv@'+Sc@hnojt..|LvLNBV.53 hMdl@o&2<\Af@'[r@Xo?27?޿Yr665s0yZ,V@ dʍR7s6urpqfrMw.K gIX9Mdm@ 7 3WfM+PV7:̿kx:R1vwZ x;.N@_+!̬L]&@ +ŸobmNV,o `Ooefc|Duef_ ps|7_RcjcPdn[Cퟭb7*6_ )W[ۿԴvVmU(ڿjdEʺ](mrXZB[x[+P[`dea?{3y{Of vNRdjo8NNƞ,o f};P3_ `fٻ~O,[70Kq `Vxj;Yz˧E/0Af"η om1 -cVBͭ[m/7,߸Y lz7 KVvoGV]ַjU+[5F@7*x3w~{x"g[cb}]obW(፲ۿ ?-|o^@gM]^",ٛXׅ|%tgN{:+hF4yme[ZdWklX[jϓan;oED5D|}m []yPT 0=ʗGCvUʧc4KgMga\0[[n5qfPNzUTCyȭ:Ůӡ SN'qSZ > b5IvlYdչj x ΜyMnb]fs67Ojl 5MЂK˱SBFr u1T$%O9  }X/|mt>'RA!}9IuGǯB,RT^ht?F|GVvi.z]Xq'a Tת+^+74ces?Myh2(e >W:2 or$G >9\G.*4y΁JnM9hYL ꠯'E8^әLQIWBOܞU-(Xe) wWn-\kqL6]`B^sT*yM09O$mtϷ.v$tMx)rPFom[.'^4]xZE؇~x/XĚ}О1xZr5o[.0YaѤ0nd~Lt}-$[ Uē P#W;8&-Q\2f|̄Q; }"p+d8z^ Mfk9/Jݟ.cK6}2gH5^MǪ Plg7,3?-7ȍ'!pӼزCNkm"C1+>CѺthXEoT8nk[@ܰ4TzcR*4nDW0D_OcF9S4_=t|C넣Fѥ%R s[9QWBcPQAitLl:~y/lv6&@U!rf xhV Ӳb;b?Fyy͵&>EE0^F*zz ,~XGvħ{t>@ #G`]x޼vd5+٤J R~}6BrBNt0=A)[t'!,KtijP'i=c5>Ofdj23`vxpի$0mM(kC \R8|-9 k2JN2 Ͱ\4!J?(c#qGM0%I(4p:-V:ZV38XUP%EyJț}6566_l6/>(@TA$$:TvXOXւzxXZzbi9I, \ajNh~A<3/b4QXٯK*ZQ#.Fmy[,uU<_ދ&e C"4-8t4vD/ԫI!"qjF9!5(o,\0}I+s9A%V{qD?o Zp kxB{6.H,*^J|JL(&" X oNXdS/ub7a5@Fb8xEE8Vl\_Ȝm˚SOȌ6ն]]zXwFg K@J!BtB`g})+NʍH4Bl V}ͷ+ݠ\9= ^jج5s'nͦկ~fFg*1H"IAjR'] b/jk pԖ\lB#3sVyC~XqRԛBkj?).ߙ D#ZuBj>ٻ?GңדRy Si 4cqIތ4٭R]OaT yZ1d[y¤ X+=],rjܖpH~$SaM3`绖}g1H#U&$NԶhj B64@ C=Ta:fUl /$ +ּg>mj){:#rr;{qH@mP,KGyy(C%^{(Z)w g]O 5WCZ %z:,. A9B;1|RL WוyQp@Y(M,Z :n`*鄦E}&1eӤbXD|!(ah4acySwd UH5Ki^Z 6mVEjw!P:ˌ̘Wb/Lцm-Yjs^lQ%,517F*]Eԅ $0ᝂ 91yٿJ `wd(8,i?Z }Edc K()bG# FQ15+D6a&<+&3+)>#;|"Rb躭 qުsv3ftk ƿUn3]|Mg1t" ~v6ne<#!ȼ"q KC+ؚT*qDߩZ /} LqQ'lUټ'$&Js^;]M5idu8]e8`q^L uػݯq,F +{HmAE7%cAK^B)FX+ u}+pl%;L]<*:s}8e@m<[6[Bs7I}D '_?_jcQɈ{ǥg۳2L,ujD/~8oJ8M+"rₗNpʄ?>$AHݻOj]Cq&/9I+=-DL9+RCl{Җ3=G'G|J8K +.e|oFns[^$m9b2b@vNB0;9iZPA^@ н֚r b({+ idvVL^G ty̫`@ !\jԎIl|bElD󸯶qiIq'Kbݙ#U4(lFBHo;qͅffUU2|Cr `'Npwv$>eYZ]E,|Nh2}B`RrF;'ϧ9n.ţL1:|Nnra|0hu::r+߰a=qbF0ib]^ $2>Q'Ĺc#;u!ѫl/iApy5G"ǾV _'} ZDW}x_0*2!ֻIdmKr]hۋI_7ޮtW*|%̦SN+"K\ᨈ93͏18PPt2bMvj}>?j3;OLT AtCj*>}YXh0SԻ!Ê8T[v,w?۾bcKq:YSKs $cG14u45'EERj|ڊnÚ 뷰" ln͌v2\jaEpmO)^)~0UCAXסqMXP/OPfFm5;s-(:,T^+CG a&W!.unǀ-waިka}&YLZJ8 uCR82N[!GHZW3pnz6"6Q0(}Y}z5ɳrWԎQǀ(0Y;DY/Ql|DJ[熨#W_3y$'&ݓRe )A$,ebQVuQ8 Ҵ仆8ݐۂVKH5]k(vC`0 ek_r Z,hMp+!MQI}E"Oۡ(ܜRZ5'y a}+dJC^~}bIVbn0"Y/c$?c=CAУ)C@V ً=i ʡ*aa}qKd|`h l U,[[a,/ p1 x3ǍZY &S/|>YpD% >EMϬ!q8pŴ$AUW#]f >'QH%ewfl'u 68P%[J&G0}rn-V!ͱc&i0?<i:(D3™U+;(ۀ[G{~|g}B%h[ +], si#alF ף7xjAl9!zA9Z"̤`$:ҊΞ=y kDEh 8wXLs飣"{-j/:zU;g1PćU}~Qו~T3t0A1'2a{.wa̹1OqP bUZĄ-[EM'PcSnGfΫmW 'Ѱy4K5W1m$?0^9 Q,¼SE/4ԝ dqghMq ҟ_gKck0YOS#Cu8BbYc[w-}Tx8DmE4"@0o,Y2}٘s7UP$:S|nOtԎU!ŶcO$BJ'kMn׼f4+8o>B9Tِ_in[ V0۵)l~E#ZJpΑ6̑s-Ds eC,K [*ʲ%$'*6 $a^ɦnRV ~.yC۫v~926ΎWŔ&:(a}d5?Az)gF{[1|<Ԋu\SY$c%mK5Cna2BH)K1;@568ݵp ,m p4NE\q֗v}KY<2fǔܻyc_ǽ^^as%mۺ w#y}آfdýId,0 gX1Ӭnb*E4qݩ2Ҽ?|2; f-m,mDv(hL mSAny$&/S>g,쇉J cx0 Zf_*"*No1C܋٫XhjZC$Ƕ2cMHǙM2BċNEV/X4|Ťmk~XУi~{a)|0C@"+: ]&,UA Ș\d2/ԽR"=ʦW=T$o ]ihSg>jkPT#i]S4v)^蓹OLD]925,CSۉ ƒs-ۭ-&<*vcb,Nf"ϰGPW!as`Ɲ 7 z"|whߡqГ(+8BW"9;(UiYytњO YvR&s Bq97:v {<Ӥ^ en/Pts)<_,q<.UAh6MM0DymHfZt=s-NHAz'.wI0@*Rl{8rHgkC6tTEBٯZFRfZ.Xc4p[L#;[:HVdSć -cWh :ڬ?dAHُN{)pvq.h;'-}cAz7M,WG4^\KesVH1t5dM()AFnmX^W9Y9)^[N[ u$^?1CI0 A7ju= ^e2_Tv@FS}Dhbl(' H,r]LiٶצN`:L@0#6ӗ.o⽅3<.޺9='6mƏ 4,@TdMsc-ZzՁC< +A: ]ZgT|&ET/㆏Lz!1b{ȲL~Ѿ(a:@ [ |TN@[("S`QZ*[\?t&g+eWHu1!T9mc,BBtR :i u|m83*s׋33l)Z3s$$^@Wފh9&e*[scg_1x_g-M9|x#ъg\Iq'| ݺdi=5ܲp Jw>i^xM|ݜK9cjٗâX_`Bhڕl ̏?n5*3oU&1il:Ht;JC/N.''Б /TY8Kפ%7x5$Ҫ/P4=HtO3;Κl*XpMUku:z<'3'LӒ-efd:y#J@?ƥ| ta̝)}j,发ٻ)LW8ɖ`C61_"jԂs$ο ۋʈ&&%6!c#2r &nKίfsO&G g?.`+ )qA9Qa6A.qu8 +cy"_C]}0^df|xs(^Iw0b'S 0o%"w`ڀKYB nbZ"u ƥ&l TkA5;`ۈGqy 55f:T Ob.s?B\Te8(ފEU:x 6ì7'+L@J8u(Hr)Tk~ !ѱ]sj3GnpQH9)6'9%}V!u {z)Ze"y>r-nWs׍(I"|G xr Q~SUz^"5Mgnu=SQ1-.{DϏ9 C;1f%o~2vQ1푴#j{[}94+x7 ,%EM:-EKjA*tꌩHTL4[YpM+T8;je v箆ʕl$h*3>g2df1~S:{<ڴn{;ZS)ns}_*Sĉw!q44 ܄L{fOq$Qٚxl\e>M(w\]sI5G|eݭJbXJ K+5-άX:~u++c~Fބ+Iڄ +!ڄQi݈`g-"DF"K\-#=*Ț䔯t/ ǹHvoYS&^ˉ%ĐK&l lZXhW~}?‘ HsZ9;G̩cU_U Sηԉr 19tpB=E-`~Cqʕ+_Tq |LQ{ {vn[o_!4[ o eHJ6X*NsCMDYV(/̊ӻBr=7FYĥ8$~n0;L)ܱ>Έ~|Crrf\K2{ )ʯK+u`m 4GSiYEa8ס6>`%EgȵqK6G,H/g-/f\9/At7H)+V ! %M` eF)5YHJ̗]UۘyyUNs砂*ݺ& +C'- @ vZ"f]GـKw"RNrB_4}iPM" $]Ql-)f_LmOPԼY)r@tVo-f\xT}<Ǥq&_Vp{sctz<.| )KT*f{QD-\7Ƕ|W{zBLx9iysѢi!"DuQ1e^rðԎu`^]5u/ŋwƱךּ8VM;b{VZrrYh_O<맢3K%:ejNtm[()<4OW&a`H8 XY Ap;Z&*Tvq齚Ūfbdt%9~ġ]еP3'e|moɯCއ3zJ88Y|ʑ [e083/8B^{ :cak59Ji8qc3rs۔/LFfwq_a|˃SЗʧ /dU r: ,S$Bz ';G(۾$zJ[]jrsk.э^uTcB懾,Zń|x(Zb6x7a9Nfd(`:Mn[`!G TzԸ6lGFrr&0endstream endobj 190 0 obj << /Filter /FlateDecode /Length1 1461 /Length2 6862 /Length3 0 /Length 7847 >> stream xڍvT>%1elA:s% -!()tHH(!!J sx빯9㼭g(>API@ BNN#;i򆣐RWA}02B5|݁a DL ".`ɿQ^R@e-@!aN%G_K "));yH6u0voA,?4yü`_t:P71A'lrzCzc|0/ foP#X~WB.gBpd E‘@'; %"BݽQ|>8b - w UJ(:2 怹@ﶺ!QHk'8G_1 SW3a>@Q0,. <ЯFN/s脡 ;0?7򅅠o >@{3 :9ac:Z1ƒ>1rD! \>oQ@8P@H @Eȿ/Q=(ϳtB%h ?DžtPÀ , v|A*<ܿǨ3(\ ;kᾈ@1tvުLyw8zf0|Ysp<%ޘNv0-U(_3'$*zyAc,Q NGXo]AH&tBy~SLRD '8FB7 " a @?0GuT_//_ 9fQw\k^(0 lLpnfg}d|u1CiMD~ ROӚv|ij~ 03~~"f#+`n-؝dzg}ju77_i_V|xhhut= !/aU5F* dp1bY(|*hHȻ;hL ŢI+ߒ8O]XjӫDҁTWr7Wv7#b2o^WU{nn]O(,TlŕӮŅkf9Jg=JccU;fȬ "e'U%Ӯw!n1sn˻Բ$EDi6 Ǭ#l A[ttxb\'p\u?yO۴ P-4iilOnZT+u( n C /{AɆTę#r aΨԫ)Ʒյp YG>9GPjA9_'z$&e7gRu֣A3,W#ů^|nS{ @ T `c3kRPfZ`ǔlROE{6Hifgҹqߋ Ezh+"ĭf%)y<3{(=d&(/# Pr|~x3Wz:;|q/;%i@]スd.FQ/!B Qs9y+zyU'xwx 7xdž|i@2?_^U6te 2I^MX\`C1ֵlu|a] 9 b\hk i`Qqt<#<MN|2}6=Nq8@>%ڂu@ѠdG)",m'pڱ:=,]ha;4h;zZ"vLk-hƙz%9B~9b`2ǃZ<0Oي|^)[9Y˷뫤h_-q[!hOaSErg WX.Hiv/9\nE?kMcFl2<Y6Vfy. g' Rfaq?"ӗFEgu_bg9+ś4m,+<1x6rVmȭo ;[Osk=ĢsTNcw :" nK4X9-`s μ+x:/6N"%9]j𴫻`R0s:e6D>0qN?LTOU.@mC]N{{tLNu-P{`R gNe-s[g)Cob[^תVJiD.sRAhgg;P1DjyWVV;f~tQ-^6̦ĻVR|jJRǵ|l: ưlCXXbO¤iQN1Q|càYA`OKշ!^S-ENs SgA'ԴC'eܱ֏(<xh0:,?_rMV$58ZG=l%*%ifcn}c,u-I0rb"_ A [nN+;itHzX`VEx;Y 㼿 ŷ`Kuk ǪTǦ|uA­hDb/e97((I4nNwp=UmY2 TCNDMmp(BMe''t3<7JK1/' i ei%ΰ& ]4n&dQ3ׂ& | yY<f,%煒A"_jWqйXѪ:/V\ r$O2 1}4C UF:2+loQ/4t~z $xs/ͱB? *T:^xM7Mn,2tS˓.ʅxQxbuooE<-qw H81z2JS|$=IoN)Azq!1Uq&Cm5E3oP/lz{66P81Jr\Rn M- 0gW/rxYB.\~\35B7jOD~]18f૶]Ǭ) ' ɼutOdJVc~z!~R %;DW 5Ѵዐ[QW'PstG͍27o\5lJbJD+˩JcL [HOQј;LmO̧:MS^G9rϋ7H2|) / hJRCrd#Os2搜R.u"U_^H{,f z(E!lp{dh6?S9<mNrptۈ.!~@R}>|+|=72eR=㎷ mv(ej⎅}u jbr km;%|qcYd Jȏ}uvG9j[%|32 \)/fGD7"Fv݇||h{@Êf6'P{}n2D_*bN[В AqOh̸ wbZ[7ܡzvIֱ!Sky%<"J,c?7rWYީ-}w_`(^&KINWbi.^ #^?TdvlNK{kPb~}(%^Α'%'@_]ϛ{-t5/b>ruUoᝦryR JZ{9,BMuʙ >Tr `F=FLbeOr~l.+Vp'I+`tMș7azK-6/ ZwQV8(j:Tkc=dm^-8TU#GR)0;9[{Bݽys:.CP-£CA8lЛd!P\UQ2)"U&9,i2a!\Zd͞7ETtqJxN3Y #[C$}Y W(C@1mkwdK)Qdi2boX/8fn75RgkKa1jI9qH݉|kQ4~l {u@ F1m}7OQ!ho5\d-k==$S~7Ć[ ]- =6gt|y2;P9Z4னT(Li\nNK26591zrkwE8,Aڒ/|MN_GYIKD]''|dudSb;反wTrXVT|ZwLԕJH>m eJsQ-k)̵&Pfzy[ :,|5 @6mO`z E ボKP)ɵ>!hH[3fڶKD7G+VXǾʸ6_uhluZٝїXD#Qkq{lx0{˥n=~Ol)Z𒝘iHv}H'vUoϴni$\݉464$]_Oex$l*K#[sVڋ8,]-BƓd@wZzm _p̎3 ]Ǔ1~Cͦ#q{/)(3Cը9[w|&SuN81X_}EjR</|a4{M}K)pt׬n 3toz৷lJE |sedvYOR5{/ >5}p|"Җ6.le-0mf)i4I|׮7݊ߵBVle\" 饓Mn x;V^2KmT.eQ"bF:7*%Ҽ3R^8v*+;gڥePE eQxgtT)ǰyP)4-rR[[֏l7咲j%8C'Ck+R{㬆 Uier+[NM~%jsy<B4'n&/> stream xڍxT>){ % 9ƀ؀AKEJ@BRJ@D}g<{~9{vO>v΢gȯ`"(~$@I(&`g7`pvKBc Q"$P\RH ,$$#C p] utBs| (hPNWtE00DRpI;Pn WQ E9 H2@ CM`E6"P  `C<C -Y  n /p ]U-tt< *@h!P7R (3 UJWW$?e>w_?u#p{4=PwO4DAD$D;vY FswC4 P P@4{E` C~,~~B+ł yPۨ K%Ą@ P .. wO/P=#M}z ?c wZ?߀!,{G0/;or|xBφ6=!v5hm=(zFh CPv!z$罃/z.n/=Y#%@+ѳj%qBu$h a OoXH'0!0?`?vaC0 ؿh==<ГKoh]+L w~uYng}'&|(ZűI 7[m]־vG=qJ<#fS>g~z;$s2tc}G,l1sK[FS0A/nYg9)ϒ7 An>:B}d I4Kj=En£"j\@p'%auI=XfM0!-0"_07P##pXT\-LhLڽ`+G7ܴN8Ƴyd[yu7ڲxA|6HZw 9ko;eSpJ(x|Uz𧻓țfb/| X3(jD]/;l#/4OYhrMxFO񙥣 D__f2VI=)=jO<ʑ 2H Xˬgw\Z3#Vs3z9#xhso7^S-af-E%*lJ5,M'V 3A4fxu$7ޖJm#>UVcZ%-f𦗁Rb vɜ _x.i-vK=k,lR{Qu?.HDѐ1c=FɊ $} 󺮂C)mZYa)8y% 5:i˝5m"YY"HSuEDb5sFr7W Ͻe'W#*J6+8=u&Wvzs&]蟕6:RR؁SwmfvV |/N/Ff]]Uo`|zGk4]0_ecY,\\N.~DtZ/rĽ;="KKnEs &nnZsg bnT\nܠ6d-JviaC z%(CR_2«Jhbę ϟK}Ę % tl5ͽ$֩ĎR{h_)~Wm=9 ȶ: 7Gyxb*d:%Ѝ)1}(h;dwKdh*i|wxkY…ȗZLj/`FMf1xclPuQb`cK!";NI]XkbA]:wT5O(Rn08y0UV`9>j1ZԴqUM,#n~U3@&y\*oN=vzZy5LK^;`gD90eODB.ZሳnNiuP$._<$GEN}q1">JR;*#t4Ocs+~!%5{ Cry$cL7i<<{ҕ$b<`-M쬰o2o=?gE&c %`1Nrg,4*8(=jTUu^ *c T2mviMU־hVL_/)3dr)Lʫd7:U k^%JkXd$ T-g`m*LGntb 2zCzIB_|hoLas0$RO۫lrHB:Yu6"%z>QsP^uk8k3wqc?kh_W6;ԣ"i-QWs4gA>jl?K ' _ӼQJ7d'9ܸ3])#3cpK~iQ1[~@C5#oH֌kxL~FMbuDI{\hnJ^xRqJʻJ?atJa\4i/IZ 0O_7Ӈ>J(籎gIcn^sHOg\0Tɛ & n.xz2 pc,ZYif, Psg[S3~rKʇ2:7Li̹dY|x3:R+r،x>Q'NPl*&fHڷꯒL5V2;dn#\dclj{fuw VpUG֩m.2~Uym~Y1vTn7O2ö>@ ߧU3ޟOJz7'd*ri?蘓Y Ja>DOBؕ;o|ᬽ0mcV-%YK>srݧaGz'OeG]MElWld(߆.ˋɬD*I1yvK62ozu)嫒ӓF#LC5΋M%7ns6 گrJ ;É݇8Z.߉`h=@6zy'Q#:/?(0~ѠRSs22kּ"N!'Tŕvg`jrteQvj4dS su&;`Jfw؈L6 S6WK'&rn'3zk2#ÊQ8KjzNu,ڰ5lfwSCnE+_fhCdYL#P:ExyDt⵱{b꟫=&"Bꋤ)%̛fR7o'ǔQ$mhHG[XV۵a23f %6= FEl)a<&F 1(x48[.JӮOoX],2j`pPj~RwOg3Kzr6J]1LK?Q~X`*@Mp!:ֱcaB%Kk1UGy QBFjLⱍþ;SpD<7qD_%Deq'4=L[U^G\Pn˙U >*XMZ c4]Lv%+97衙DH;y3tg XCH\*6Qvk.EHByDŃ̚юQC+vH)rSsVa[}/N<#sSbHO9 ޓsǎK+G4*Z83kד;kHRq u'$J%oteC\L\J +18Þ}d*%6.{rO a"\ !%ʺ@>4KUo8˲?duD0p,s!Ğދ9f$y7,,A'rکAg=R͓֜>'qCKzϤt+RD(4y;Z5I~@۾"|64_J_pv#$8Onodto3ف6UlQ/ν*=aˉa^lceTnC4IkĨE/yKvAmU1!.M%d+Zdӗ-g"ΕeM>&&ӊunj7EȽwZr=W=g2 Y9,QϓV$ڎZ9qTF@l6Õomɐc2ou=i*%c.uEýlcTbY4DbY|qt.!2%*} 㢆o9żO̞)*k2E9p9{[9d[=܏~e&UclEDwΨmj\hiy ?ߩy6lze^4@k(B?Q榯lQURݎWxRPI*ډWX8|:nWDo_g?53XW4]E󵩴Y H}^|ǻ?w8[g^B%,O!SwRef^G6Q<|?SLX ;S!A7˵畬͞*dKzdكNz<ʆϙowџn;p0ւ7 PhYPĆ\o]PmALgeiܔ!#&o%g鍗gdG /RXI{M;~Qƺjl`ج b+RIGynZbLq?`KUsC#!.|L=3s_W [nDiʟn .d,'d <8i?{K$H/HG{+K[l =x{Ľ}!ҏVSmDOc8VD6(Zc<%da8IhzVy9r:KY~jՍ5Z'@ZJ|w`+m[&i쥾Ya"5"pwvyihTcGk';=QFM}xM2FU7f\Mk'L͵\gzj`^ ]ЄdDn*Xw+ìNMʍ&tt|]y_aFT C;^m==RLJ2^@U{nss;=k xj#!'"UA"9B9*-3J(`5WpH0[kmD0;LNׂ֋ȇt>*?AX4RQwc?j֐AUp٦"+##Td\ȚysG %E:&qy|C|eD( d@ܱl64$sh'uJyaV1_!YVhg܏g+2F{NѹoVk btHA7%ߛ2cn8e8?l{Lz&^`˗ayS/zSgE$MU/fנj<(}yq:yқ`ޫ*/FPL{u7<,5JTӟZ?g!o^H`Ǩ=Y-UҖ`-Drz1諟t0﬒XK D+BL J#򫖏ī{Z9p0y y[:n x8:pWUa@0Zw-{ɟ?1#J"$> stream xڌP ww.k.%[N 7sOrzY{=P)1;YX ,v&6JJuk7;@WkG?4]&n HQ n`errXXx06(0dN.֖Vn ~ИXyy6]L &nV@{@?.hܜ===L]],hnVU+h+e=Ԙ(V֮9Psp4q@;k3+dJN@(GOqL/G9;8x[;X,%)y&7/7_&v {k;SߡDU& ͕r*=$]f{3\[GO" ks0wwbpvvH!Y,,,beeZ?`G&̠I=r-vAP%H ՉP݀4Wo[=`e3_G 8Aꮠ`@1`;Ћfc6@5qt8jgzAc@N V? )>cy']@]q9=fk+fa6a3Zk.=O(u!.wh4"뤿|:a#;SU^UVpFfKD>1r ,pvAQ.|j\u*bP娎Kj1^#N?|29#1/ԥۻE7RdzxR_eu6~| |]ʅ\#Vhw VV{㬞τ<FئįHg,#~J!sE#/j wؒ,T4̒VnL}:.S0xZqu)LWG t3y}<=Zfd8M1Hm̒b@d0r痬W5=jIdK|Z!~%}ә`ۉY ԒH -[:#%'%Sq%K&g e9N`>Y9ZE)R∽O\I [fU6DO' -*&֔ VM Կ Ȝ]]kl ֢K^<ˡh9\'% WM7]a25_>e(ÈgB"}2ΑΧ ) d&C̚$' _~?.ӏߘzfUE s 76pc7G}Iڊ~&ؼ&؜G5Ξ$% Q--𬤌ğ~:B!߿1!泎jb.Ib2e1jn'x3YK?Α=uz>d~ds[^ל+lunJF A`>RjCPG ω F#)MӘ5 6E1'up&9жY$<_ˊ?T(e*c2g0X\8:VKcB沂v>=zn&>YNiۘv~ ѡ%e(`˶׳ buɊ0ud/c3ȗ0ulRX-6Us9eS᳀ oer$gڑ0Gjrpmvȟ^6Hlq13;!T@ƅnY> uzRm TfnX,?fn} ͉3Hz䎲"‰o4*~0eCx꠯'R8LVC:v!&USk4ˍkkox`d-L=2]'j%!MC G =RNJ*`w aeGZ{S 16V3l+HQhuX; 4k*ϕ(Ή|h>1[Oÿ'eIuX=pWngIm:i@).ý544IhÊBD̀93$}@,֋FG 9ss tI|4?\ 0 Åru>|pUQ$2MFrt ϭI<FLV}UKA5lşK*WK2g8~[9(5քӴb,- s(:狠Ά:0EQ #c;ܨAJnz~?8]X v8>nke9KNn܈:fF% YZ͇-=u.EXX֪L O|NB.TTx oн&-%&{hycɋ?PXo dUʒ]ducG|i搒݀Sj~_jļ,M%_<óqKmmZ|ay-,-_N PL芗(> ' `_^FY5Aaj&['Ld0=4c:P0ӟRq4Sx+!G"PrJ;-b5tiY<[ldEVKQ;Yn1B/HZ ʢF,-ȡT)ÒglA"hyL,B>vDpCkS úME%jshu^8?d)TwW9qۼ'nlWfaJK`ݢE4Ɖ }sBf+HgG5$S!|L8cjݾXҳy[FvaآHg` XɄvw;>ḽ#옿O QdVOH6OpaJa\>%I"᭽F6]bP!ȜHO\0B FfUf}wCqnL[2X{;?:/A`NJ擺׏KӼpL4|{չDLqs%N}U7B85B>^ 뾆)f.9{\"Z:n ǶjާoHWs 6ynorwAoH=| |Exzr3w-W1k.\l/WaPΚh6We q#(t%Q~M} SۆЎ97r6]T.ՔelQ.v!iK i@TK8CH,i˷_R5M׽J6}=׏as ˚U~V^h^M41'+ϊ#<&I9Ǵ|Je買¬mn1ߥQ. 2#SNnV0XA$$sN7)[MM#˃_+hvsi"u}FJ29̾IP>ތ.x^=SOܲ+Wa_>VSw.*"6 =M,֒!ǪVQ,2T3SIf 4e({jsd3XEowW toK>tlt lykωDdGKtNnۻzW:ŗdR7mE_F7b,j/i&P=%O$)ikc1B6#AkOK1{yqns⣉0gkZ<>W\JX:r)L/{62Й#V˛1$K uJ pJ#yЌLf  I3}I<\4E'Y|8 ݶd*W>&|m)~\ _GVN/sCh楪):ajIΙqیRTHT❺/>:4 abR04KZWi [i&0B&._RE{2Ҏ=8 ur%,T!\j'f/e嗬6lޯV-u! v$qsq}j1m#c>`:L 1b<NLG- fGP$s&*$*z;g2kv[k! vY e: /tvqWM1m#+ <{܍>Cl㱗 B2l\4[!\Q+Bu c:T]e"L$e/6bϹuUrQK]wvi)Hy-*ESm)m88P| c$;.1JОF%lMޑ=yxuKG zMYHc#L]fYY!*t[Ny"`AS͓X|E\ {n'`Mӂ]U#z?)[wJE[nׇ$٥ Np+8p[i)cooe´f)[??dq!M$؁3m A8ޒ,Gy ȵ O Tw_+9JB\! hG FwڂPzw;<-YxʛIXO˾gjdZ\d▗<1ր'-]v~,N?zT]?D5ey\|ZH4Vgv WkRיx&A۝Ɓ- U8)v˲@M3&Bpp{YoyPS>mK]Qg9M5].,UL"dg˄V3.1tpZ )-YU,SeȶZc3a#K[N]aM҃BK/-gQ h5'  kP@pqP u]搴i9Ηo;+ kbg~SlM`]YWxAYE_ cR]oSΟ(Y|[O-*Rmy橚Jd '<BJIf%2jUva`I?)+X & l]|/iduE<\}xgNbe$0KLft?K$#gp0e1TE-i MU? sJ1;1ĔCNW)) N Ku @Y "Ptlr#"+vu³aѨ3ojX8l uܔ:j?r~Xؼ]>b7x,!cg.t1JO[ԛE$!aB42H8]4C3WƢ;ZsaZ*lf ʵXZWn rbY|x'F ^JY}1DT!=f[&Ĝ$ K\_!{efcuQb2di{YɣcҮ>'Ĥek;4~T55 <{W"tkfX?R_"]jQo$HȀٟat,n-NsIJ|r(< &l#Y@P5}B No MN~M=^W+xB尞M޷`|BqQ_)/[uҚVEٲ!A[%dnAjkGRWstugDpqKeqL.z;OS5,J;;. ~Ǹ @YcKbfxvH}3K>]h%@Si}.bi̼̬@h$j4UjY)D!b7Ք @0Ѕq㹺}~ʑ7b M!Q} w"q 19n<,$K3=w&&.Z}&U,Fdgz}0iiJ.Cl6T3 [FqYRmJN&jEnY:bD08 *uHXId ̑sf$M jN-\&9m~pKXjh)Ssۗ"NY\g]hGX8^DZ(܆^֌pi9 5eoHx!!ᕇaY 88xhOI!r0_"Ѐ lO[A,&,g9.>xt45j׈gIY"W^6= ;x,kjĨ0:i.=GsE =sٓtף3y~>NQ>~y YnDKߛ lcBZ>06Vۇ_Ƭr[LGfvؼP❷{-a_bO,>ޝ' ^j^P;c չYpNƋjgӏ?65y`ƺ?CzfUz)"xb@h@m\']ß{4/L?ʄ㵅ˤYRm&9W01SU7rQ;N5#*ë79Q'BKwY>svM.q6o߲|v!PGS޵d]p#̆'-}m9M"3Q'ءg} {kHif) c퟇h\[f[OWX}qGԀK;;>˛S-ȿ<_,O9)2UOMXT:ʘ2\]ax']!Xޥ=f V*wӱs?/E3H7B+U}\ԸczFe5+*S0;S0^J2-s!f?C/(;"7\8l+ bd|lrA |DwUKpYtt~.1>toHrfsefi)*= х_*+1qasmۏA@ـ;'`ŠF; ;8bnG6^c_jL5K\ L B4 8´堠j\KrP.jcj܇o)7(ggpgV5u'0[ny$J 32dnR-7b>=ʼnㄖ}8`Ͱ@yxr9Y6,g|eB#{vM:mVetƅnQe͖ʠx5oMaW/:=rQ==`s1cjtGHTՍyš.flwMY蚑&En1 n;TPhRVtR- Qx#33/OOׅխm@1݇&Mk_4i Uj\7 dՍd:ιP1GT˜SNTxwUިHGK+>i7uK ;AJ/(Uj$LH>}J&-|UDBNwX,t֯n%60=GAk@Ν0JI1-4MHA 0'0ȱC,bn9AtG~{~Ğ zi^?'_U36{B)y*$Әj<\˕$ Ce KPM:(4Sks=trߗ)Oˡo,4ߢ#Plg~AO|)(v%ȕp֌a bti%QQK,lM߯Pb96]"@L 2PH"!7h%/ lDQ_JԿf|KHw|xˆv-!m3^IyuU9"]غ"悡Ty48& f-id]W[Hu".ڡg |{&crvĂ,$%;&pNc`.yW}Dgle%wj51Me>ʩ_1칦=}/7oh-Qgb*06WO׌ï79P`GXqLM=._ Eyv[ 2bd |S:}BI\^D&eԚ=zZle/m?PZ ]z=j;|uUxw1v _(rC"U3lNK[x2a6D_"0>XK9nS B& [!uҝP#ٳ82"}F͢xSC{d˲2Fϲہݰj"ئ0x]uArui2[_Oyҁâ^dQ=dѱ/ŻŢHw?㾙U4eXmPjF]/jh]фF4|4kDDO^hM.1t5[]bbĖSl7p$Z ψ){{r)%F%k,|5h*t*(]_}.^,)tA:o_gUUc2a5V5;&E&2sEzҹrWbLEMV!x}NU#?T?7DG4c^LRo3?&6w3GXȠy3TgkuNWxIįCtsvOdC֑EK*@M!򦏣&퐣|&lԥK v&K*u/>f[-'GzQ煙QX9v~68m_?#hi=jo:V\hLD[N_ d>T3Lp+ EnĐ1ޔ֕]u`{sy jH((5Y:%G%P6E)4UתWԎ̬X J30oRzYb|fqs4?gfUF%ϱl! o+}NB+b» U,m :D6;Cb0O(y c >٦}_S=hCjIARA]F;=)|xVTa(/ATO;$'Vr| #lN-Ʉc08ßr0 Z3ݤp7>x֘&d[ZPe42Cp# >d$H՛xiZSk Ka[3*֬IGfR /]3Il!԰,LrQX('K.,XaJ⑛\?waa)OZRn&.+ ]ksH*`/49% R%;i~gȽ*#zPXRaI-Y؏ۭ/|k9FT͞.NHD~-x/F I!%ݧ9+ٞ&y H}uNakr1Svw %v 2"v{AT5E->rMfZwq*^I%w 4C5үQ2uX|^Rt3%!*ll"Z6kudhpvt*ܗ}3u $voV ~PVJg6)fӍre$]ӻL+Z`ņp Bp|xq&iEºRُ^j/Yq#%iEom(NVyUDopHg 0սsnX9SmXLw'Qyi*ҍAI{ˆKnY)o9Dy[07ޘY\h]Ei)D-Kj<ݫ(0    {[g!4ߣwer/!4'4%nw2lh_K)rL^?"j3Ui11 zeaD̸P 1CCCeO"=2uOeG>d6d3ּ|"qC,oEl#\!b^y$hZ/IvA)LIr5uTÜrl~x<5RX 'E+LIIXn<@nHd/ sOO/XuAtgG#@hcl g|i"Bky`Ҵ4A@/?'uk`JFҗ~}9vya50_):ɅaVRr!zE_͢|Bn"TI^;gip)\$@3ݏ{ 0n\gۥ"t>{?vO}L*k7ſP!5'U[-V$o2_o0L~!-WF}SG/CY%2q+#FMGJ;L斺8{9}g rʺTN-O'cx"-\e0_B$;(Hf?PˑdZPh֮G7]75x3'.L};R؏]!WW0HU2kk$aQYa{L)/^[o8h^L IJj3]P&*I}u $!TVƑ) i[o:cZxŽ -d}U؄ #! ޑMyȇ}nlMkjh*Q|[_a1d-)]ù^{^Wx2'>uGo <#79Ln&kkZЖEy^R.+?BcSIj3Cj*_B:|m qf4=Oc泖u`OlPŐ3,U{Y{dIAbMW0F(@\cD{=O !g/EfQHQ wTìhS4[!`UTw7#c tϾ:$ bFbUUC,>"Øh2E7P3@Y@ qNY؆/՗̐I b>%:Bki[X^eD"q芸l,/qNhi6wƤwmNȂ;AgŒȢbɜl7nKv i A)3溋+|/g f`aSc7o"yNs>)U߈T1C|]{9pLB(.8Z vd؍S{Sn%wXMF4>N0SLK_ = k*RGͶɖ@t+<\wbNF E`Rȳ"VD/F Fzk\蜆{ ]=X|q4̨yoӍ`e9xb&< r{>bE*feeX2"aGtɕk"QPf ͦe]bEТ.& $1c@"ϛ+nf|l_g!,hM Vgiܲ)EAIeP殮Z:"Mw3]^i~C`3?!R[a$p_9W#o q-~nH5OK`𯵥_op٦>dzz.J+1qbשW]3z3uYd#.^er 흽בz@gyP$cJAG/&nNYCTDrČ%otsͶlPCA4w;&W9geYEGZKI7ira3H Ӻ{eվVqusM6DNE)89|bzkJ$rDlLX.L NT\A=]JIO_:CESƦf ʤ@v 1&8]i1̚_m뿷v] t1* :kfC&I)s0:۔Nk0lŊ2ub&^ aT1(%,j(8qIdpmNf9S|훸\sgf*_]x$y =*_vsː_||ay;TNB^?yK6nT-`nGCpUCKdmx*!V7fE*ߧL_3Ĉid/-8=r6WbQ,|=zFrK@KЅAynD= adzszJ_+[k Kc$tv{\>fUD ,fP i99j_ g۵ ;~#3.',taiI Ua1;cH,2F,[{,91$Fyvωp_C$<+D ۺq1⍪G,/؉ЈaHzN][iGvvuYa41ƿKa= }Үk7ȇ W v ;\}KA[r^|4JǩCsB8FTB^j|{UCǿǥ~̙/Y@q ݕ>%l d+#-ȏǃ`0CLLN"q1!fq&fj]O֮6b[ y&Tʝ]#Xj8m!E=?.!E<'џۋX`}xIn1[l· QtVA?ĺQvV8 m˼nN.Bd7sS9T/3 gϺJhWYm-kd7?@!DT\@MP믺8:'SiۃJꈷg?#P/ܑ,p`3AjαP2K;Sq*yJ o._ÏFD:w/P0ߛw"$gdEL踐'IYI=*/]χH,Dab6rQ*be2HRʂGק<ާ$W֫1b%.?ReR<Q5D7~o- G\~I W7Use(/ȁoYbcWP 1w==5;es;tJ-Q߄p9>nٕfX?){)H:.YB#l߶D',jH2#8,2ђ0Ͻ%0x5;d**Ez ^qDgɧT"5#Ə`}C2-;XUrtrʍ媋& +2 JX{s%~8'oǒCf-N`rT5$WG 52.tZ:'pEbt]$.rڪC~Y&nFAV^im0q3ګŇ- QsfFEx]L1B0lT~˭b uEptu@X|0FN`IFF l W׭DqZ2p/#mV۾`>M ) 혴o=VUpMvފ=%_DTw1zP1C|^]a;\J n n%dVqVk1)8u?tԯtn:j<3 d ZuNQj-%8F6*V/f"LA&ˁXpMXfFiuid"t{8&n{i}"dOQauÁMn}d!(_ ee;NTB&X( w$=$trJeL5p'xL;v[zkY9$ fIgF0\: lDډk\MFhXZP<4=S`eS6̷wrP SΡgOUORN:Tx]m S/[㮔j#Wl'Z-c4&2+".T~ = xߴx4d=(X9Xnky3b*k08Η;CŻ4,C,:XwQOEsd9.Fq p:)(j臗/Xls$i)01~G2hGʹgUԝoS/&&surSA7(5I5`Oю!c`D$RJsY1n1 `Y"Ӑ9~q>eL( d_YH/$&YJՔldbdQ1 k9ўG^;o'$ym!)3AH>9X8W  [ ;%Ox) ;u FV7oTng$=ҠCFוfL";-En\ ڍ?#X9p8NV34[ɸf`(HQRGBj0EC L bkaQE:.23/jqDRE> stream xXM6 W9kI> @"=4H6~ M;(٢}Ocά=&G%*w˂!;|X] }bP{t2Fq YLɥ1f`,.7}u9fxwz\1\P<J7(f$TJIp^@8/R)e ,F) ?) ˥R˅y̟aT&YB&!n qdHT']腜% ֩oF %MJ L&,0يeM%!AK* 3wfV.\J *U&{Њ@DϲH(/;(rb"cB=X. 24 ,'a`C(0TA@3@E$p YʘS42ǨmSŋ[wݝ{rX?Օ!(annnGלfvBlv-6<xmxXOt1C6ݷ^0#_?|8 Oi7)Cjsl3 6`glͦe㑛q'5Ǯ:Yj:QR.&+muMr+sn7iZXD} H-Ω~%# \֑<ՄF3]Oav,Xm6- X,|Y`ɵhoXr7p/I^XUPJ&Z.a]zI }'b-̋w-c{Cl'/XalX3ھb61ͮco׉p? N8ÈZ3> stream xYY6~[e`>G@ tز-wxHd{Q$Aa@&)rf8"hz#BT`.C 23ːVkp72|G2,WPbSl pEcWtUiȊ>Iu4XIqZSA[TT`*j8k2YiR|Ya[JG=zcväau=r$r#&ؿGŠ'oW s.[[@?~*NͺhMsDBL߷Jϳ2ˋЖjeoCCx}쬁e'B B0{X|FyR9op.庺_W~&G84c$]㠍^{[PXMQ=^ {(,!A9H hvT-kJ Mz!؛kN\rʍmq+C1im?n۔DE5JW%rH;$Xwڼ= g׃LJuM0 zJl4E鬃BK{d~a;/u](/v8mE9܇8j ŻwՏ~ zY7l鏯mFm 6.£(PPTNVaM:L 8@9D f3N.MbBbYmT ++u; E۞s`[߈$^D1^782VCZ"ִc@LhXFg&!&fg98f$K'{ȕgi1B= ͷ6l:{6jg@Ѕ.F֥T,M<waʹ{> UX8h[ sD ^bJV͎ p]!eg)I_c|OYm{Yup]j(,3ܞ>]j(PM4H{E+Mh3H{gl缨ךųW1l{Y4O IaR@nZm 訂y H] Phs32!s9Y  _幐>qs> stream x\moF_AN!vߗ,r\k;l8D$Rھ7BZ([0 EvgfggfwY{{oOoA D4 >7y=XrwBEQ>/>#y7Kx 4C? J{>Haj4#mtm,W8^gaIAC2 cLwH*Qt!vPDb]=$tD\yFYR GW8sϩ<Oቂ%M ڠEDDX},]f5X=R+|&%]& EjHKg|I i1[gx=?Wm8{@׃OH=1<)ER0 bo|H=b`5Rmeyt wslnLBɪn_^؞)2t1|Lr$:cq6=0&Ԅ# $c3^Lz:6N͉RmB6NBQd D\R)yP{c'|DH >"$„>8K$d !3Tb%TAi z}H-i2O(#&UEjbж[]~QI#wD`(XzqF{owx :} ͣlځ W*b(zܚ*vwɴ%ZDA\:jL:TwAUy0]Vkh&IMN\q:w?;Yp.Z j&Ri BōE6Y%lq@]_ߦKbey܆.6 5QF^mfiUGV&ƽ;gjTIpjoN!@ Gnglp33Az߻I6Dg A2)*AD$ __> NJT{rVHUV:8{c&2U$gނVcD`%ba6@ܶmFDIͲ2Q Lف#jhzL K \om18_s}Y|Ih16"Y,ԅ,Uc}U&*0p5DRHZؖ7t T<5R%ؑ5揉umqmHTQcT=x>,J )`.J Rvꢾ~.|eAȼ؜](٘TQ9Fc[]a :_J>^'C } ӝg2 o꒰QMoUW|H:B6u|W}I㷙+9Xܖ:ћ(ˏSg_uQDh#,^~as[G^_sGӥ;uKT-$D\6=Ă-=5nId/%묵:h]ݽLv_g7++2E4tV($ppE\3#\-[ȪBL7‰f+ʯۭ5`S;N0MlpYx9Z1 5W}EX6}9a%O5uI:dL_>neف/ok8wy~סfL5q.L[ #\٫Bol9NW v#t'=,RG#A{VkT\`W(cc#yAk۰!7&x$I0Fendstream endobj 282 0 obj << /Filter /FlateDecode /Length 984 >> stream xYY0~c*m <CMKE/~=c;)q M,V+ű3̅D4,WA Amʺ~W;KP@DEFaN8RRx9p1@hLAM:#۾ϝl F{OE6MY+FtLrx>zzUA5r,L&ң8t*rmctt;+R =f lcwy R!5,,kUuS(MmXcy5.UHraV{m 5&|{JE=(Xcz UhdR+0*MV9k,gP=w^Ld*yQkKs!EŴȷةK$~/'=Z:LF?1%n&uF)#\A6Bdl11 d,7>ьFVC0\4pՏ_K8&*}dS&c1*xa=@>8=DhO;0jXKUժ_ zU)o;_U9u爧.VdsCS yVr-*[>y< Y*܃FL;^/z zμ)xz͓fqqJ9A ̼KP Vu@!yʑ5.$TKTy05' "ɼ SȒm2 *HaArּ0%/`|}dÔK5McfX)M"I( &K8~0 #PXV@*jog>x1YY|^X=F jX%  HܡZ{u xh"}Xo( ['(w)gendstream endobj 283 0 obj << /Filter /FlateDecode /Length 2083 >> stream x[oF_0@f?qC8(w%&N|8;]J"EŒ(nKrvfvvv7C[Dwg볗oBb+%Ccd,f!4|kt=B#VR&%-12r]$7t_1br| \Tad4Lrq3R#ˇ(Ug1%$o4d9-Ui4Dy2]qrn(fS"fKKZ$yVdH <^"ۖTb L/ҴlV[TnQKEFaN8RbmpzcX)nj~ރ3?s!' V^h֛b5?#tO{=bV3_l q4hnw0Y8?vgb%,73ݠ^~q%A^M )[]&?|򡅅ČwȄoE= /eO_r~Z(sPO͛,/:+ΝHJp94f]_Uۦ*hAV^[[OB[(C3LR@os},Ү@Ȗߋw;|3AIծwFpҫ XRN<]4Ao~-0n8ł*:)&J4qt+AӰ^h SlRc_ ;[T1)ԑQ5ki n' KpX SX0$e3P * ]VO(,@r$ئ,%aƍe \P ǡ2۝.E4O fA, PAdA½*UYŝsw#W(*l@T yl]R,8ZwA*M5ENΗܻLr m?bi'mcAH?^B<ʦ,8OEkV`*=drCˌ;f{8P.qtl޽}Ni> g)u]j  ʪ'<9AX5_ OlL`f,m6'j6H-Li83avBx#aUpuF*<_^犚mޛ\Wl*u%QXjvZz(Eew[\U˽Į&r0u+*XN!bF! o$QOBZ,t(d{OoV@;OC24@U*9-sN?F&7_C(a9|uǏ|ʓUhnY2UbgU+/$/=gnS~,:L ePI1 &I>4N\mBĒkvWmsd<%T}W.{(N)۲6/abgp^RX_y~Ȓ|W"a-Ěʁ'jp@뢴F\~b#k!3c#ضzZٰVFaAC#eDV9 ($Γȥ QH(Y1cUE%q@Rqc昳(=50W{F5ք!fЀ#%r XTuwo=[{0c1cP_1W w`PcA}֥Bq'\}by'{F|'('`پLzj- :DJepG> stream xZn7}W~ZKĹ4I@Qyp-Y )p/W]iEh R&p3!hzyBv<9 Q _#c1 i[($fOo4t1?nn'SeqZ.noNM9t? ~#^~B œpD[tus ưRq Qh=G'?` \H~zE[TyB6oZ/yk `IriUCvlu<}v.3r`"vVh{j)^TCNN_Wr>鱻LдJw:6ѣ`a|jnQ5t}"'\JZ0=v!v#%ByMAD~)h>B$- Sc& s^Gr6L)#5[]\LLXV7oW 3_X}\dee vwSeB`E lZ#*..pQSkv^~bDGce!#+M5x]goe>4# cڌ3F\t)>fqJv)eI"_>QН6T6HW*3:riԦD窄%P]vl)+DeBz`h`ڻ6{Fj7!q#ŔUN-כT2 <s{.zyݻ1/WnTHQH nM 4Gy ۛ@JYH&˹~Wz+RG{iـЁ a R]C EX)UݷlTsLUږ{@sG 2 &0GTPߵ۹Cye v u<8^e( 8֊ ;Cy)˩,V ރNzh`r!:N/dIJzɐ^2H5NzK!N*TϓʼnSl@ B Þ A;<*?zM#P hƦih>K'2/ӫbvWU|=eYKDtz4Ku%)ܚpcd9tcJ]7閌ߨRd!mHh`pQ qeeA#\HaAv!hGZI= 6Vqk`R007CXǍѸO jZfFfx c4R'?+RkZOt ^ðߥzBЎէ h Xn.6>[~6eq?r7}͉Ш}- _Ѿ&U. uQ_WCZ^f!f̢LjzHhOW_83 NN]ӸwҲ}ʌZtF a3=P2KTnvWNWJNAHq@6N`]Fј~ڧ~n˴mW ~!r_U N Cƌ+ m̀uSTP  GhYSguXzen xZ;G[SA?j9m>rq<2Pi tvk#Ʋi 5!ec+\F9{ > stream xَ6)^hEd뒶E-ҴoC)sL E۱-9<#洡ͳ=`SƈS7'u;m4G͛"b>c\-^],[܇kx2jqu=>#Nsh%:1|_咛ݒ-. h#>? /V݋ë˛7fوo<9cCڰj"h I^%DkM,qsӈaJit'#*nΣWpAqjlʃ]J=?#Ώ?F[cB[llPQ7tUeo7]+_o`dP"G<|k}g'Me [;sivxbyltJB/Uqқ9Ͼi;6o^42@5Q6c0 +AÕ!4.AZΘ! :P[I$ {z:uICQUizs\,8~ \y(߾<;]r;7%(}!ҷ6|8@ ,.p0x &PJ 8(RA]+1?.\|pG@̆)~(T&a`԰,‚)c)Sx~R=@p`jkes~RP桴θU x$?up7պ9GEl~2Pe#T{Z:MO0u9?/%AHw#OLA<2Ls??qo_jW{qMxR0Ut)gz1j݌rVIO7jbGԋ!7xcnr"c0梂L]Q9"|11D3XCb9dTFQ "vdg!^bcWVQ/Ã,Y))${[J {|ԘO1cպVoBɼǦ!ιz\u{+<>:<<;:<{.r| }(.?pFQC٬@i!j4 ,1&-Hjt uv7|9~>l敍>*t0)U\jKKKXSU hHT)0Tk:JJ(NCW*U8 p&QDd҇F6Dv(Ob~*L 9I-B?_*lGD )3Vz.(#V*F","0TEڑa*>uwOrr7j霤pDsAV$HQ A&ړvz^QXc0 Fx Uh#Tf`'1#VK4Pf"sDWTp-=8IOpČXIs~@LAj Y) ⓯wH H,Ř)"[-l(Zl%H',D3]͢^:2V V)n3cЎSں`cDQ/:PHu\AGOO(S?]颌Z:MhWz!$D3\ J {E.VgZL'\&쿡 1~=7E%,0n^wnY]=!jDJꕀrVV1.4L,JWנ*R39ZDKWBBp U&߄_(fˉb!t il!D*]dž0ߏ f~( j #Ÿ0`) DЎS-o lgժ9@e(3Ps^~]ܲ "Gz]8ߏPXonesBx+?`9"GtN_4~MYP棰.YmPH"G~E* oDHHZV 9o\U6Q|_*=8KѤ^,1c1̙]ڈ#/|=紐jQMjA>d9r"kUmT#Q xW:f&53Bc DdJeׅ*?u9PKU|1~MXD1PbEER]rXF8_G"!5;Bzl7aXfGғZ[|gL v*4x*endstream endobj 286 0 obj << /Filter /FlateDecode /Length 1604 >> stream xZ[o6~ϯ $5e"iuݖ8|iLlR ,&y'|{}*D)R2t}2FtI,_?͐R&u8r-jif?-l9Zď9br 7iĺ`ݽ݋b .P ( GPlEʼn+a,b%:Fw'`4 <\H~Bje*Pe Q Mgx3ű@,I> DO r8,\W 18Љ$БrjD:N ZjUO|:X' /Gz(xG?gMuwJ%$໷S**?[OW5߂Ub%J~:4.EBTYp AcAIbDk7GW$.o3 x$ )#$z&4}7x3`&>2a['}sta]S*BJsU:_UJx*I?ϮSoãX .+Tѻ`TdLJ9<-l#eb@F\1m:d hgm+-vA4ՍhdP0[GA5 |Iwэ3\*u)n󻸃sp6Pb_ݘӹ_]Qƣ/ϖZ}m^߾veO|fKroM@b)f\@lN2fyf=}E#/ITvT#/Emסmc%]&8Q`K 46qh?k?Y@E mỚ$54Nj:#xú̫c! SKKxIX~Hbt8ldm.$=2i\]N>P)SEؚN ЭUXqb1DI $0#LHcM-,JẌ́123l&GkVۚ@w>XA||^/~kȪp m{N)* #2. ]È bfѺsE غ^֐U$l/oIOh=@fCRo'.µ M!k{`nLe;\µ 8N0n e0m X_4՝F֖ޡUkV0Jd`&ձL-;\ޱ2Fք"Q3ģ7tr:~^ֈ8V0}ƭ?e2Y]d[ZCVUㅶwy b&ZXYf= h#VՂs&X@d&Wyl\O]"5d^řPսJS EtF-"ަAx(-=)җ[ω:;GTxדŇjrֽvug YN^P gu%kwΜp&N -$LKvL Ō}RuV+mVXqU} yT1+Mendstream endobj 287 0 obj << /Filter /FlateDecode /Length 1871 >> stream x[nG+8N!ې8Nb Y-Py3nh,ψ>hXz+JyuqѿG2‰3T2IZMίJj'\SfI٣}:0j%J-Go꫻?ńߡRⶊl.wRi?6O\nuI>?=mGtim;O6̵|uXգKcX5r ôG ~4?=xgN'[Ww]S2 ED]S?1mv9 "'Pb;`T@ mCyN,w-gsM4U" 04Slci$k P(^6o-^9cT]>Y,K|܁)`Dqnf@f(/R_FT9t4ﳹU= W`t.ɼscv3^Q0zPr2(kAheއ'ؖB7p8f@'(@aNe@h`=vD ]0p0f@ s4ZIe` r407IDlɹ]紣¡t=é3zѹzć%sqs0f<[+"y9o:d`K Q0p0f@@Z'-. " Gs٧M'X_po0f=!(OX9xׇˡ;cIo:d\Σa53& WPmMGNУ$r: lthTCA4_-gs)euwѼPjX-zy=.9?[o_|hhfƫ rAi֪=Z U[Na#lah)$ 2.yz&}K)\~>NFR1<#j~@u3x`\K5:XKOa ;?@3r z쌌'N->|8f@ӿ P19K2/RZ ;w|ˑdž$ZBB]@zPzZ;;@У|9Rv>cr0J1#ZȃK;S(t :'UPqj9G=m&IjDlI[VSC䘱K o8\ZJy '9Yb}:fx ;~ݍNz9(LO' 1n\BǩohĞ#(-0JS-5ū8C] I|vlQl݄-7tAOZm~ẍLmk? ^|endstream endobj 288 0 obj << /Filter /FlateDecode /Length 1559 >> stream x՚Ks68J3ChV:mAYSKenIXiPK/ -aAR&hz= URldheH+ Mb(}{.Ɣ29<ζh̵nnFN.oWjl=[wnəA[Ŕ h>**f#F2lKM77 20ԛ'\R6 o?Xn =)uh E]1>mo/*sPl\P"0cEyUU< !v˻jtS/7>8ofgrA~]1[-׋c*+rbVspca"X5E/,QhZqƩ>}( ۦFL\$@e@;A9Hr5p"V"*1hSI$ \#*7=x^ohq~Pm\o tk)-`> stream xZs_Gpa$2H*-#7y¼јHx2:N,'7#&|015IİInJ:6 KФ,bDu\[NR M+'iD%k˷Ȧ;2d ^ bZ'#DBUh D`e]a\]AS]/sBx1nb{jQOEv$7:|If鿚}MaƲ'ɩ!XrR8A0~֛; Q`tT+GB?iUZ)i& "g&Y " u'ݟo$7YkeTi<]RBlb;8ΤhZa&⚬R-i" .n5'@} p_ {z847%K,cv&??=o>o$Or/fOf+E/^Dnɛ},*ViKI W #33W OCf\ڍ!;e52[AImt)?`pAc!RZG" _)!kM_mE#7`cΆ #0̷oFg jLJa < `|-=er $~1~UsŮ P!;)@ "qUz'n`l XAkwmɆVH6D#yk> stream xYo#5~_DǿāNH"!mqqY.5_/B3śM5KMu7PVz]ԗRnU0g g䲰3kuܞq%3@gVڂ3eMX=<")|7@*67uOB.fyz |PpI3m~%v3[K\#po==/FS͙ vq:,vQdOKCĚ"_yqI+hfn d=nZڰ6q  Z}5[/e}? ho]}۞tsśMhuƨ 58e;QO~f9*)={^=g? ~}]?_'e6I ꡆs0s@9h vos4gnou*\6jشnPXo_\ AZ '6t$nuWjtgx,,O) MkV4Y#T}r[?Xa=,vֻz[㿑 #`OP ||z|Wǿ= nd9h ¹!.pj_Uxs{kxٖlWI8]0g~EQq8ܠm"0K3$9s~r;Lb74dItbiD4"+ 01I Ōi×uCGNrcx@s7) =a{3b^,ftA|*: cq,N(]@ R$9$HuKg v-.I`xIgs g܈:5ERE:w/fLhhN4/3Oh=pT$ӥh@ |\M #*%qG @rUbT }ZO`©HE'!6$B&Gdd"8CTQ@Ghĕw@K0N i@H,gPUsD|()jM9D#CD`sR֣KeLFM2hxu|T}H: x!EO0iy &D$$Gq2-%}Yܒ%V}mCF 4 u ) KnNq^9<'OKZ+*l9G(oE$ 6!"wГ3*HR`- ;jM]"$8ƎvQt$lW H3ٓ/MugbRw'vyI‰.B—nlBHMCB Z*!FYw? l$c3)',k'GH|;^HJ%PLuO{ m+z|MFhGN)i{-ӿb.%7f Y:ٿ&Ѹendstream endobj 291 0 obj << /Filter /FlateDecode /Length 1567 >> stream xڅ$7 { E+=6x3Ùaxv]cO#)X[#~f%ݳF_o%ng}|z|ӽcŨ8MNٿx}Anv_Hl%9B~D؂ OcāG}Z%+l8[>$~2eÄ/ßLQpQR8K'$W\^9yjŠӋ,\N}ԥ׏].a A\E{ 7Cys4k죓#A;xH9ɰ\`Z-')R`يUw =lzd+QSX [ΝugԼvDJu*sC}OQCy3- ߝr(~>gN:/mbW%~{/n@e k~?iendstream endobj 292 0 obj << /Filter /FlateDecode /Length 2387 >> stream xZmo_aF{h?\wA^}i>(W%']Q-nC<3$wF(~ϗP+mqySYW}lNF*Rr.*of]*YVNw!2axAW:{=ppNTc:=|Pzf$;ѬI3 LMBt^'hf4r VG>H Z4HF=x,b4= a0h0=5djSg*  (ʁhÌlP5a]fQ iFH:ɖLV׉"ƥ"qթ49*\V;0 jXv `JШ0R%Jٌd("C44 =`  Osiye2<..g&rHM2jԬ0uP8|> M"DK=?q E&a:%ϟJƧ%PKn 80j5o^r [n.!}zu|F~f.1P(𢨰W"Q\2t+e4_Z}8g9tlk8pNZwMͿk_\ͤ+93dƫEݮxa~uXmlB,v3cny6=n KWluT/J!iF\l;a~O藨5`Tѕ&K؜-m1ng9*4i>FωZl(Neqh19OԦ.Nj|;zҖwNѓMWvge"q UoQS;MI^ö_י y{|ZeF| zM:D>5Yן e֪˛KI(15ߜɹhYsqޭ6ǻ,\sd<Ayaĸ^ݝ.K? 7rpze¶>OooPtN,$"-kxdA'lvfܮ~kNDM[ՏnY/ffz xU%R}2R~ȓ{@Qoβ-FûȚ\PP9 QN9Q:n0[x^?*<{#\VV-nvˇ9Z\^3W?׼<w^*5>[||\/ey':ahzxُZ:{G#" tEwESuO=M~g'i bDB2 ò1w5S}\ ,3$o%^O.SQ04&T¦@;4ĪKV@in7 %a ypMHNHl4Bz0g!ǫjQ2YHy9 xP}ObQjK`4 ILҍg71c*H,O^C辱#'@ S\ n5#,UnVt@l:-i,޽zf\llVå\5MsyWC|J3{ rC䜆([4")&@-K%21PfKS2&ڳ3V؃VPF]e+,ŝ&I(,**KV5 V4 hWK9 Ncp̩eϱ`щ"hS6؜oZGA%,U"QyL&A'p9(Qv:"Ƨ$ ~OR&Q#-|Db"SKĺ,rVOn =UGnɑI]q*FY ѥKaT1kTȔ9DP'AFLBt4ST 0uyfx;lP!1p!|,~IZL[6Lrg2Wvet=>ۯ>\[sbf &`x ={endstream endobj 293 0 obj << /Filter /FlateDecode /Length 1710 >> stream xڭZA5 ﯘ㷇8+zCR!"dg2㗌|~~;wFZxakHJ?ܽ~CZmER^Ucx×ǻ+K]kyye\Vֺhc0Bi-kKkLo_} 㪤iBkh[u,u7@hrZ6ܬ\\-2,VRM浦v`‰j1]LmKHqP=8wSTNmgm"qZv`l`ʠ9)چܤ]1Njl5lFa[MШeL D!UǗO |Q:(=@iT\9`g0ĻLjvKlӚm]1. \x6gx$c+<΍bW/JX|_A^Q&PO<}S`oBe;>Q!zl3ɓ:N21|$]sbE!W"fA;9>ꐭ8'@~FOнbdh5 LH/w1sZ@'C pa9nKSpE:APpX 1 ?CEP/dmh![9a^:cw- z|y1Se O a؄D>.. \%~m+G|yD}|M(/;ND# _?3@?6,j8.RK3io~}>_?Huqwp,Lg~/9_endstream endobj 294 0 obj << /Filter /FlateDecode /Length 934 >> stream xڭWM7 Wh*v;C1sjQ4r%i,icFqՋMtgUAVٸL<$Zq $&omzɮ0 ŔD,xsH4$iLjڍkI,Js?[yҰC i|:lkdxEDUΖv[ć\ BT?n8"x\DŖX0{/kpA񒧍d,ۀQ*104uKDol:n;bC#N[`C^D0pѸ-N`Xދ{`ɿ#Q6/Wں\P,]N~?}u9t:/Nx- u㧧Y5ϟ|zX.xvrq|p> stream x[o6_!dC&5oIЦa/K3`@ՖaJldIزuS 6}x<](|[볯_!s=sр:s ]X snƄPG1_fcFh&te靡maL+l^FɈ0Ծ@RhDŽs)GLZ׷ c,],ܻ8wz;ˢ("|anHueo/p4C+~ӈmdyUJHhD+*dV1.ds x{{S>pFvK`Z,T?I&"gvިϊ۫@Ӳj`HCUnv| Oz[Hs#erj | LjlvO=g'byZ'rؿ=ȓB|iG"~3σI19qɼ)Y t1R?JCÊ g?=6͊J\gʳj?_@|;顀1/Fc&=QH*52i^4/eMBKiЮ-fȗ%]2O{/`lް4@Mi4 ׋|?SύnCu87˫͋}X"O9RpI>V)]]}EIbjE6 <ǩ0f6=>S|78HWŽ@S2-\47+CV8=%gHR=휭##s)nJw^(:0ԸtXWXW =Ce2@rá 6ZFMAߎ_yϡonV,#1Vx/ X\ӌƇ ~vM|?+^)mlrT{l%¾vQzE)I:NLXB:ۃc`Uߕpl^],lbқ=M%;1 Oxn1RxL k39E#վhdwf;tzcߍJvڑD'z!7&>퉭Oo^zeL3j[OڻSjp RYLPlC*vYb6?g @5mF!甎˾8r}g*|8Tg;_|~O;vr8bԽWcnބ^-N}Y*d? 6Gʄy ',-ڿ%suԨDm2_N9w{~fs 󪒳PS׈b @?)_d}U  yhEFcV}nϓ00Z꟥D:qb+ X[Z]]\ܚOJ'ۊ W:t샑Tb2&[Lxt߯ #^*]/fCu=PXMEd FXްOM;,bD\e ]$0D׫0ى @~ ” WA(5U壦J{oOɧozezreH2=F0g8 WE& \6Rkq*g^aVy鎱 5[ pW,MQmT?Ú;Ő{+1j^DEC$iٕendstream endobj 296 0 obj << /Filter /FlateDecode /Length 1146 >> stream xڕXˮ6 Wx9*R+hdtvAinHA caa>aat( K75Aj8ņ_EK$9CRG8PUw0X  w<̻ LW$Ad7בǍO*J-h6QG'NPpHhTZ9[QNfS%-7Vb-MXFTb1D^.x92kNާP1`aARʤduH!BacPZlձU8ZcHҸ`E'c2fN;GvgH^xP7 ºOŪM4b$0~)(o^z:P2`'L6 & OOC% h` D{4X|ֽ? 6M$$p82`{mb^oc ۞؟ZKQ2o& iQ^J'm˿rϿ?֧> stream x[mo_A_$ % )CAs @DYBhɡ {g_RTKj|mCDz_ffyf"ɏ'w}yvkHOIhW͒w#E80L󲘍'¨Qud$\[4pI^'<& 1I4S0qj׷%e3ң.`9^A c6Z4dF`IS]$݆bīO' KRM O']rNʓH'?dà (_x|݁q57mϔ A i/vfmaT Bj^?:??Kt>+gi|LOa\{-}rU-W4>Vrz?U7@;_>=Alӟ.Rqcߧb\gf Hڮwh2 Lbd~R&o!w6&Ait9W &4 )21[p*U+ 4\3 2#:5 dDb&Ymө @LA,bh6pюV*BlG~QV9S*8ގb"h5RB#v(CXE݆E ,SN%, F3>5Cc$SYo b40)4,%^g/I*@6s9: yFPvmgYIG8! z%݆e>AY XMyyHIwG7EO (+KDBb]c0px@X* cq@T 9LJeDTRLH5Gt -&D]8ʘ9+ۂ.LabSh$ଉK:,ƕf0jRUXԈ3YqSv1#PfM6Tk$NCD~D|QP+t+֩1EN;'oջTDWڨu\Æl/6dC\,۟"O1)ӆ =DuL(;^@3-NrӞ`تIJ @h=CG 8 ;1}.~n_BF0%SzQ./VՅzOmnzor孰k%^䵿x6v؝2h5]1OG ?' 1mLˇmǚQyyc.躪ΎM͎rU*]Pc-dҖfw0cF-˹bR3f}Yu(*]+.7kVlU1s~k:[QgntZ׾*&eq,ۀ0e]ݬ/nIӌ::LwWJf.vy]4r7ϼf໢ dCX,DQupm8 ݛƯ$kDj-R% rx}1KD!X3g%m;!T_V&k62ErDOI_l`6"aͦ$^C6n*^QQ!8Vj_ϽYa]j\7^woߐ.,6PDw ﮊ7؇?۞*(fbQ?ˢ媰C\ʻev:Moe~x{x.!k_ubU mmӻl;BΦpVe^ݶZ[ lQhX1T'b]Tw>moWO%-Wa(vNHd}9YEy;-P3B4dmiڕ 2aLe>]C%/:9i}6զnZ1A\ۮ&0WV$z׹Q{665-WzV̚CZ;a ހe!; Oy1$'lj7I flRPϞqfcXMA8t j䐝͟,g9W}l%`zԕ3}&?ًg*΅<sՏ9&x~q '{k/n|?$0׷5{Lj4&C4fQYA#-ٯӧR|ߧAL)ۯC=,mlr@ S2о]x* .qy/~Sw5&}c~=B-;MO eiw_m^s_ʽ~1 lj}c_7Pd1`G`#ɀP> t ၷvEli).UNf9> stream xZoFpq $Mzn{g h4hyGQ.I67 ͥAw95}bwG}9=!(zӅ'CDC~νw#~_y&P1C>x & #SQ?MuaIT%`\n:˅(~kh Pk'܂vhq:=HOaSgp,DD?y֩ f<>է}{ja20&RKdMdPj Ld}"2»##12:~:x=ܲ2ߢyMj]ޮ-Pni2y\s`V`>)-VGRrSSdy,Ax™?h`*G6He;s8^Z,b42SW45x^UYx̱۬Aw`d:#U(,́s>;t|[onaP*՗~>uAq6)b4.`5{ݑyUոx"2M{Zw>xk!}bVj: zăE>Êիo{n<4#͗QYeTZo*a6: S ۞6{+Rw{R%ڤTA\GeBI8vGC1݌YYH 9f.âE[&)_4QlD?`cqp$i#DG%E<.ekL϶ĨgSMco񞮵VH5᯾2wI4?\YfCggP+sI̪WJ^YGz'VYP}/+$5ɫq3fj0!9&i,m=R{zE=T%x:}T1ؽOt.̜w[T8[`av\~C/ULLF:wuendstream endobj 299 0 obj << /Filter /FlateDecode /Length 1172 >> stream xڵVo6~_@Ċ)Rfn!?:еCX,DR;#;nd-t"?oGޑcP4#bR$E$4C1svByp2$jX:RW^(iBk7B!M13yQf\>E` F-JݺUQYSUYo'Vef>oeQh02p6Fݔq1,VVB1[Y4E]Qȉ k+0E.  N9wƾDu ĥuV"X*x$ yY08 A}m IafeSƩ@hhW0y"H&8b@lydR$)"1SG>t􍲊pc&vcK8d'Nh߹NlT{Au'tgB\6, a@1(21N"bұoq_9G{Kmx. ӾxD#"CBC8>PJtRdrp %:%3DBg>$q|9R>Wܶӫ֒P =5LƦ>ߌ,^COC:e HruËd>?.Ɠӗ%*\`b`zv}._Lɪz#VUC#zݺ@{l^lܬ2\»3ֽ"CP)6]#[Lz2ƂLժ4O Z[jOkn@id´~7?k3fVwb^jzQ H2EH\T h 4.)\,#Ō`2VtUgQG;UDu_(Uur ii3[@|<+J3 a{glcD0IwΒ7E6+Eok a=6e1M+O,n8}X5Q^($|K u]0UCHvI"$f\< h࿻ endstream endobj 300 0 obj << /Filter /FlateDecode /Length1 1407 /Length2 5987 /Length3 0 /Length 6944 >> stream xڍtTk.)"]21Cwt 0  1C "H % !! HHI4{9kfw޻빯2 aH (hj@ ^4` F07w8!`ڧA4, EA ?$w"M4yjH̝tq٣c~C9`119g A4!({3z"GB0ϿZKڣP.||^^^gw^47 an0/-32^ ǯEyA` !=v!$kIu70/?] B.a;(o7qrG!./#C#?Gzx~! D/cՁ:蟆[$ }yIZH4aoA~x} e'a# q; - M$ZN5&QU-9<`A^?] с.3닃+VUqGoO⎖ r0}%iKBćM%ekw/BИH7_k|_>zzo`0(4*PzZ-Gų6&vj3oU9^<VpВw=}yoGAu TO:i&En:ݖv&y+j.Ԡ3YC5[ Se8?cI] ѫr"I}gtg>KDIbNQh12s}?뇤*fI k8UCy]OK/3> dZ}9 ZT;f_)/NJ+ʩ`B'=kX>3TE6LߏYC"Ǻkh¬It]ҧɳTG62TO'#<r-,cɚtp8<&]~TdK{c9AC6O焯#X;>wƎ2TͷvwSbu경v[/idʀj^w_d%bJ8AU+<ܿ[^8ۇrɥD"e/Z~Pw=󻂔1\5dKv|+)$ЦJlƜC(RCEqn/,lwhcfVxQ6P̎N/'zsIW7Բ_Yn0Q\b0RSM12Z(9H|7w(.h/%>9NBYնh,|amy񊶐\32KLAg %Mi;=B}&AH"My-1CZΤnfeɔWFXsdDެJ&^G&7bX6" f%3Z'2ZQW|@0.3XO޴d&]`kbכc m'RUx5=Regrq c!j] g6߾:5$ɴyb8*BflQw܆FI_Q_Wdaa˔~z1?:.ə=¾'7w}}Q8"G{F5~H=c6~;M7gn[#.lb̝b'** o `9"!V w `רےg1g)żw&6Y2K mJ⌫Oc H-KV[)v{+ěq%ģő[QӚi/l?ڄQos?X-7^:rX[K5a%R|#-x{!{Cݍz/KF\jxu'@ ɽLRp3ὣS2;=]=54k+V Z_6c=|rc6H]*j&m*~,^@ܶ+%b=}#aۤo5бY Z7gF?tK1K=nP K)eU'үǒ:O@WAvfZGԸQ 8o<v$TsԽ?³thHp}ܴ繡4׻6IT2 qovJѫ57.FA."fb $HW F)8!=gNv /OklVJ_y^>8>ٯy2Sevql^ F],SmqR5ڱ:—ro+SL_Zّ%-unIؓe|L7;Fz½WT-u)&}[+(vWFВ(>Um e婅wRYMtb>a>ȸ]'zM.<+>A"3şY]}O%}jfxt^ۅA.+Hsp}}\6kwJAԣ"ʌvÝ * g9s}[+:Үw{FRqDY(= P=}/K?$K4nUQˑ;_HޙѠ ):{I׭A ^>0U k3ʫW/u Z}a{͟ҹ;CՋ1ʐyL(5hWaցٽIMu)R>6>L1@!Š5gEÔVM@&c,> >ω۔v m Lbpݒ} AajxGs7 5NeՑ Զ֐s7~4(:4+pRGV)?k/v9Xx̩DnrB-+wϭ6q'7wW?Nֈ7M΅,s`U3.'dz]-tޯz0,?dux6©aқn@ <8,\eP>]]WMq\[q5a[lPl$5wRώŪF0?^-ﭕ,g m'1G',Rn]VԺ9Ði}H #tNTڪ뱋;Aad2xpwA]3 2aqN=nPswc?fBj}, ‹eڃ&?ӡ3ش'גKoߏmo3;kاpGILce2yR}Űz!%XH]N=N)he!Ij]G:#L(Nədf>^ 43)\p:׷Ѷ>(kwPe W܃ō@r\ n$(=xq)htA' ad.&{2nHW``nҰZl,+>Џ9h R)اjqj0Ero%&) pf*6tm t}ch c|h[f#y7M[lL=jzvTJ$0VM+ (TFͻ]o& f0?|X92 "_[b!ڨ {؃Dh+>9*iKmt_O~y5QX#!AvB/p]~'+I 3]1TcBbR /!=Y/-8٪ct%+r؉ϊݬt)˩YE}$?E&|_F P3w;293z"yи19)s;KVPz+|mM6s 4yp"^V{SPҦb|Ǖɞڬ7.-M$)hm闂mGڗOH's؏.qPL%ȑV }HӕY;}͕3^^&t;xLI;1gnQ$?th3 z%0Y1_=pPn 2v/6kxC::Vjc*aW}";ں!cc~ sq.Sv@bCPs\=] vG[%ѕ_S-w5ME10 Y+Hמe`7دv>K*pN|!&)oz( -ug/  g%=R aIBZK%ߎq>Hrٮ{JZm/h58!)%ke}mȝe ïj/x0.e sڳ~ׅGy endstream endobj 301 0 obj << /Filter /FlateDecode /Length1 1487 /Length2 7221 /Length3 0 /Length 8212 >> stream xڍvT]6%-#!%1  03tHw J) - Hw){9>kjK[í p;7@V][Ńqsd0B0Ⱥn>9N;y"܂"\\..῀pb Pa`WLY a>L f t4au"Ѕ `7`sssB]9.lO@ v[~h?q`2 u6n@0a0k aq@  9.gBd :a-h*qy0_@+!8w(Hk r8rBQUaֲp( ss?9 pޜti@`6HX;q `e?!.|`7?0? {8vrr?0q;lH 6+ psqg&77rXm!0?6wxL e /k8rj `~7j!럂08@ g ?U0A`?z?wOo );:3?a 'AnS C L:免a:a#Uւ_]x(ஐ_w brxO\z;~/)z??a@^ R6p_p*rz[‚N&9a>`p:cr?D]1yr=a_+ 0 Pж*i O1imTfvv̕.ү?v-m3K-\ђz{g3݊9?A?^] ]Og_ GT: h^y*z| R)uW2R?yP CU,)-;: 4A=J+Kw>&kc'J^S&1.4g^/~G/dc+zu@)9@x&|fU& Ӊ!VG:V㞸a2dcsҝ/8͓r17]՚|V`rFח  V28`9=qwEJt[&MۓADZOS.lH' ۿ&zlpv/hknm/JDl9#c^ɊwawH3u݁Îؐc6Yt!=T |&Jea)1撹lIu9E$#b`sz-.yY4aW<9T׌(-ׯHPʶE/yN4EX!C{^ѷ.lSfg=%XKM#TMus{PGj^G(0^fZe+Dɗ44I"_+~V Xv)|;FHN@{+KJ*|ZwrRnJa(SnfD]Rق6NqiLqKMƠe(4%Nͪ /. boX|IUn8Mug^Jfߙ1AV4¸Fv ^wv+l^KzM=گO!;=L{Uz4N| +Y3ns&Ca-[$u( N d-R:Vpžԡ[T*yj|vK3͒bɥ:,VU81|7rp*g=N62H6B |V6g%`T_F9ٵ.~PX8~v/V:2ҷp5Ȯr}#4i4GD]'Tӝʈ'p b~i'=Τ-2ݔVP}G}\uljp4<Y??<+|OH8gil,A  [EqYź0\%52Q2(V9/gHa7>I>Fk60W.E\;p\n˽g*"]2/ m;v_*̽mzhgo)%a Aso/vUIk31Fڻ5'E)PC̬*'Kc7_d7Og, ѾdU\ϒ'x`%2*[=dw;8=S,eXϨ_ :}%.\¬`o+X2pz=ٖiHm8 @rg![>oګ/dNZ8 )jYjZF. g/7H#53 ٟb“hfA[{FTܜbW^ ۸F9MFjũ˹H 4uO~ `vkdCUd۔R1?3W4^ <9DGyQO uUegzO:tM;oTWwzwcRs8 hIrS #[jʷl^C]= R.7% tY; KG6ԧL$?]p. fLRT?o>{ΣH<0Gh/\Bě!7ȟ%GmZ.D [`X1Lp$r´Jaӌ^,Jj ҦpX+ 7Atl0Z+^P/#"`\4Tb@C jL3~XhJ5*+J[Z↲T=3q!|Ef,4"!܊,>wi)piO)I4NX_ىs91˻Xn#E)}kg TE+oѧ\K:M/qgb.C,.f:6x^K9Z$:/B ;o2{VK& ԿllzLC)1qx>C.+ervi߇aW0}nņ5bATH Az/G" ,4!Ow`1-Tr:) H2^ OK~\SkcSRYڌeFBwqI&rzws{V"okG;(T2yUEM[2@O{%BJ><w9A;7՞|V~f}f7R x^UR?y:R}}RJ\ B(o@=CBMy?(.۪YrU8tgEE(hpR\QS޺ZsuHWc)HVCʠF`%"miI_N PٙO3>uꍟ"KЈga:YHfw<0F +oi #d#6;M;)ו\ Bo3pK'%e1^H]{ 8#LX3{!Z2j}yo7x y$k"D}]L &۩$FpCZڳER^*d<}IuY4*+Y߼$OSo &֯sۆ%>dceXm , .X#yhrYQm/c~v3#Af05 >ӧ7DO9aothXkdK=BYJHR SGNA85G蔍l6ZMg}a}raSOFWK'~YN? ;@X-鸜F s6\gŬWs -zϾ%D8߯R7^|M`Pb:/z^%ٜMum/É] f;O'Rγ<̕ۼʑzC@9{qZXDܥÄQ/%Xݥ}pΑBSM9EC%oK(g`:?Р$m9kx5џeV!~9ɰVxe_$˪ԐlaÆsZYnޏdDH5K98 EΟz]V^0[^<ތ4ݪ;Qm6dk 'YS W'K/f1smE=Z=#MVv"%gYiS]su K)F$n꧖w6Ap{S\[iAyotTlFv$M.d#FHl?{>\5+x6&B[ ki ˮ=?r?#>aٱYj3?[&`.0RZI$U׮BT(BD?0D}zwT'Ȭ5y}RxAFMc,tے zZrW'/TjӻDuH*Τ'dêL)&a/KБsM]gIW]{oYqQ/_cΎFN1܅wt<!jYjq.N,_o.xಸyseb<յo>=պT39- ׸l$dӝt서fCi2V +ܟ ;(tuN9b{Fx B6Dn~XЈ9pRwhDn ywh?QSY{4Et+pdĘ}Wؑ^c^g^ oD2 Hۊ.M*u3A֘N20q= G i!#'*f@-9,BDt<-c1 }-غZO"'Xb˥Sڛ/&.`l  zt}@N Mvm9od=3`Z̢tk.nJ{Nwz],%^37i/w0 r?ՌG[أ x#,e%ْA fYI@X5a:ʞ,8*}iM;J=fFcD -NkB%d 5zdߍEk=xD{emYx]͹&qGz7䵫p$g3\>ȨoQP|&T c1ucaR".Q>Nv":s,)\ZJ]endstream endobj 302 0 obj << /Filter /FlateDecode /Length1 1541 /Length2 7898 /Length3 0 /Length 8901 >> stream xڍT. Hwʀ9tw4 3--) H %}}kݻfߜgAO.a3 pv @JE9^ b0пR SL`! /psq esH-*EI/ww[Yn`2g~$@`sS(@n {ЂAp`za qrr9qD`5@rtY~ځ~h[k,ᮦ 6A G-e=l?O_Φ0;{S;jC@5Ye ` eh q=!f7JhLlwpC~1eR0;;+?i#9 szqC-,Qp| ;8xa#|\\\@r3\[[=`@ =az:pGgE@ lP?A;\p}2z- rj*bMo$ `F_KMOD% ˟=0{*졏Aސn.=+7Yg䷖5C?t3a"T`s_W?Xdv_a2$V$ vY4_5xCA0'5`rqamVC~@+e0_30ut4u|(xP@` sUO~/o$LF8A<NA>'| >NC@Pn;;:>߭.߻rc̅mj[/%(]ٷFE^cfwlsAKbJx.4o ә͝צ:[8͉̹qT^w^:HMqs /]{j{Kg4ߖNG4/Lc1MF gFg!8v|v>E5vONJ}S੿}5\I\`xSr"gqp4IȺ]"䱥yØ~LH!"rY>ޮ67xIqM@Z<^ "Pcsb5Q͉_x;z_Fr]c7SE1G!SCz G<0[:Mr (KF'ʖYdJT/$$Us5 :}_阵 njq%c*!# ؎|z]0jTsFt9T(~5lcX0)<)ge=@"侊gS3Z^N}mx]" ^7X0* HAfgܳ#q y;}%' nD$ϭ1=LV]}EԚṊ.7 J&{Sz UK2; "i(Wވ7nj ~9JEgPdVwQVxYFvةXVnf~^8k=^ZE oȞ|[ɵNAhY_W*:2͇DNN|Mqͧ mW?UBa!n> ;GQ)ںh.~:)Dʱl#o{3Az"9Ȼj_ ]f AL/̊Kka윋.hA[ HЯHb8ruGe$L%:)VF6<(dbbaHpcT|I*eD?'/SA|p8AA{‚(w<JҎ^HB_ 4sYs)57kLY@kfr6 {o=8ucGl ̶V :?.F{&slJXn~h׹5;ͩ xHfѢƆvO&1\>Hp2Y S^|+EHQ|hrVJUaWw9FW"NB)^v#lC[ɞƉj+keԨKxDxJc;ivr֓~IsOg|h#œ.E5% 9WH=V,ԩxua Ou{tIkRtVYjv ]%wz`cn=M &yq+}Ktqr,QOMd"۳wY-!nq9]U"@-~QcGk*=vrވnJT ~7/J_=t5ؗU;.ZY Vu+!)zT¼%]&;:tDDLfzΈFeV=d BU5$-[Ӱe"hr᫕90t4AjB;ȖښOC,$y;<ɊA1M!E-#bOYa}ATp)$䇖j"a>F#x%ByG#}xߛ1 _֋%Li`AL^sH7"HtR Ny֡"ov*Wu͋qE4Wa';"ǻKM-̢ҕ']`DJI<;|P^ ܏ݩ8 ~KB4Uca HjxZkN@dQvl޵t \1ء? M43'y@ҽ)kiu P@'h@VXJǯh5gm,h1Cx[QإBl55"wH2*={Z)V2/ƷnOǀ6BP3\1$-B_O7 k1TAS]ۓlOqn#*DŽUH^Ai۴m]/J{`-Q2R ^"jxa37tN54k2L+fgcڍbu$ X{Qmc *D5=8ecת!рE**iJPi&}Usɸokb A2G6qmjJ!c'zTmd;)CuRrl{g !ҏ1pzIZ>Iܯ@z;c*冿 <"S/(4u[, L! G2Ö|EX6i+8udq?*0[x5'>,43fb --YыYrT@' ^I lL_O !a>SluFONk ͐edY"?2~)f 30 !E"t.9ȭbR~jGYժ.7ڼM02_`qlew1QKZF:&A9.-9Ұ"D$ &}ؚCha782Jy=G'jk7`kGbM[IrpfsN&,1^ Nq~9k6! YfxfVN$L [w|FWS_X%{qC)}UE:w;tV;lVhՔ!FjLuih y󵫩 <*B$]fbm\Hpz(I# Hz75Qp5Joܼ*w횉IJuy#izH1b31@'g5T񖱛3o fl|/xm[9+JǠztv[GZʨ?QҷXPBo㽐sR3AG6&mr+UzfMϋȎXhFG3 .}:*{ i.efr V!kF4틬"a*$h|7?C"W|%R#c<% 5Ϭ=h|GcaEZJ3#e_z?3 !c$[y»=bٿuē46Mxo[sP\d{ɣO1NaT1Rfo߱恷}[rY#/kYǑG6VD"&HaMK,p AG㪄Z ^ ;='wwm\n^=SOG#5>QU H(l;~>&4慨hyڊpOL) 1WP"_frIP@ xr>JJ@/VFisG)|VXx+Y?0T~;@ 0RټK@x XzanK>@`6BI'@0h4T>xQ2*lw {=%ǹllY/Zd}Ǜ~ס4:D˩1:uԦo`}fva+K:ÿ#M5n&Χ - JKZ^IgĴ3 ~.J>#U2+IA,~P-\aY4>GnF|* /{!؆p{LxdPDIF=)jog͕Cz铒4&CPa."%4 ILW5KE\11o9 {"ND:6,2D;QE<ؙ-/ ^A~5߿O@)q&㇈ֿ݊uT{{$W)m2qF} :]Fڭ#f s[Nqi)XwioS}$qC#k9?}GT?/EF,vu豖*-DŽvƒ6r%3oS̞y u& J$*~8g y4Z1(bBIZ2(jӗϏi Y-jϳ5/rj/ﵪtK2Sd#[׉ӽ ėe#ׄF^h a:rfZ  39Ċ,$xFҔF>O> *;aNn@!r̹ˈ@yEHLs&BEy^F:qz=Z>Osdf,nd0)._u]ȯ̊p1ۏ#XN㴧;P7Mu1ڹĥkfZ'{-cB;F'#N=6¦Sy +"]-87ڝb1ȸg7w7S0x*=M~qVJk8J/=GEúob\ V ,4}"~`U@3 'aWB+>ݢ&ڣI5S6AP*&ؖ#pbVIlƭ%bđ0kL5ih_ z1+O#}.2f$M2eb mFIܙiG"]W6.ki[QXpݩ9sxT#][7>De1^h ڑq#[Wp.o(eW xAgotM$&ՠ38'5L\ק e%U) o[ L/ژìEwN'6VX kCQ)ezݍ„O5h$q쉘(mB| /Ȍ##ֵ#qX6wP"`\^4gI!!()B&d}E$zSdEd71SEIE>M_+nwǮ|I:+d6/fbaҼ{ P5\2C o hD@߯gJGtsbg]U2>Y5I0&;NSnSa.^e-Mr-nkvtY?ʛؽlP^(PaWޝ Axu %h"Ek5I/IpO5ٔn/VfVQMy?9}@ Y ZOH'sg OxuI%)*ވ+2 xEs 2=LqXem;}}x2]#aV(H xX6ކUkJ|Zv 7~jk++d#*Gٍ, ~%cFWY4FXvkK6$]BjeؽAОzM2.k&cQ::ViuYAG;T̝%7Ee|.o{eQ6wRS+ZX,,7Xk=5yJ VR|_ݩ yK˲Yr+Y;@t͒\WeA##1Yﯳo)撓&[>fYRY1^_IXQcϚ1MvUHwY$v~F= o*C{4cgu^gbes<:%FJ2FH}w 4zmhQ!ei"j^fŹXӎ*C`#Q)W}wd PӓO@SBg)}ww^TmǨqԝT휕[X7e^a޸mx>|!딜K_ |;KG,+ 76W L[W uz<[9Q\ed 6n[Wn:]ei/{뀉|<~?rx_sI?Tj2 .&-~=noQCSjmӗvg|ڞJц\;md@Ś*$Φ}|yL~^-TӁ7AO8šv_[}t<\ Qמ}4ps}HZO.)  އ|@2xy] q6̚C9WGBDBuӕt&U?jendstream endobj 303 0 obj << /Filter /FlateDecode /Length1 1393 /Length2 5904 /Length3 0 /Length 6854 >> stream xڍtTk.]  H"!ݍt C0t7RJI!! tw"(9kz}|EKGaU@Q< ^>1OMre&bӇ"]a EB(MBǩ#7GH@0k:/@"0[;߯'i'(` v" 0(_%8P(g1 Ãʋ@Jr>xPv+ ;A %b\u6(0 @a("]e53'XOC_xA)WB0d0prý`p[  TPEyp_`GW:9o(Hkhs a(W^W/_eS["p+ѯPz^?u#<>l`pk_ ݜO07_!h?6[( HXXPu@=!v__f4?g3 |\P ߎ@ 5 XAmapP?g0O { ߯F _ <>< !#!ď~]?o A8_e( A~x}!7Gn v9z - uZ5:^e-i-< A^>?vjCAU{8P-+_> 诊+za]PWAXR0D$2z7 G)4F? Ik| J7$@[P'B43< m^!>,ި;R>N ⸋u)`cS \G?},񫬚&ɊnQ٠Tc+BPLvܻWrbiXڨWB7 ?ZAQBk.N5T3# gGjgOYs xM8" B6dعF~ OMHy' B^s(gEdp'2&j JUKiO~AG/¯zi|ڝJlúCYݤO>~&cl>+%L\:[l&xGTJ 6% d_gh.l1T-KHZ0d`a8N0WqPDJ HNiġ})I+VEġ>&@K@JB{wx/rSf)>S3)05@?/SiwǒW:T!Gi$O?87|-B zNGe80+nUX NL%vw QC&{[6̘X1^nCA>} |y!%WV}WaR6cl/YJAkQM\]+^n1Ǎ+vTg|vI1x302'r\l]0?_"mR[snT菍) \ȠYγoswsa]C{,So3't8sĩzP ,`,^ʪ OoQI^wyԸ3t$]S*aLZhJXD.؊>׳s} zIϓS3c{"JGb 1 zBXܟGdMNP+X3+`d_.ђwN yp Yҩ6 ;/+C"}e#b-"E1[8JT>^֪^~](11}ԭ#@yjRlGv+?0^$l6"K}.)yb ݴ{%' ܑM_[!ief?`=90~o7*<;rc5[yP z*D^ #~ iIU*!|d2D0k}w+De!=_Q).Vn|[aq0NI,$kfNqJ@wJ;C>?9ݐAK7uֿ+MUkǤzo5_\҄WXuE\LfS]k5^nM;OO*Gn8bFjxfM1G3TwNyJnjZ{yB"V,Z7LbN-7=)S8~*Z72YT廇CmsLt$K)X̢R+?a ;.OSnGs[\#ˣ[Hqťv5 Vߘ"u1I]oP7CXO#wk}45^~>3d݈=S:!)58EbÖ"x-Ŏ_$ &-󍶒ZXƯ+&xE&wDWHycgB LL.Rk&i>~l߹FwfԆsś2_v[,>5bê_ޛk)I.@9*r 껖v嵝nQk!/B|uK"KxT>*DbglzcƢ. Ҭc$%*7۷l45wL2WlV} dhzel1iݳ0,U8U4JVʂJۥ陛gOqV|fSeiX}IeMqmϸPs"d$ f ] m!g?50K⊪oE,h(V´z@Y Ibi?bu,V%ܣ]x࣌ƹ׫gkWS⊴Jy*_UP[$\ff;, Tgܯ^gTF i9[c}f+d"tIYqiPzYz8mޢO&!npMԉ搘"?WdK #zAPIj *<:\ZOXZsuNA_便ba_g>$:Z;ՠ<1a_KRemٻ=k޳[S"'1|:& 51?g9c|/3%\FAnDY9ό`3HN{Eysw"Ay~3&;{Jr0bWIN=HaSOpSWm_2!&f.(5͐ǔ F2 1^RsvC8j54?Up*ոu ?ƪGX@oē|F;8do =rw%ffEKȏg9? 13Q8|L…-N5L+F^VqOso\A $A4AzGǚ#P`7oGeeu#:+?5vɼ`\ ș p\g4=}M%:{(V1p]J9»$ʃ|GBHCe|/#>I<e&sN$618G}kl` 犌,Ou*m"Zb@I\#^=mVs.S˲X W{0[^`g s2椁F ߤñ7m"^#3Rܤ #m ghg" Y l+V fRz%g3j,.[WRruI?n.>kd#}cYk J1$uHt#Yn:`B)JYl}UFdWK63Pvrk=r?Kر,o1r|UBoɣ!Tr_زٜԺw]:+7´abd1ϰZꋼ~nbF:zC=$eϰ Uq|l|ʨ`!X;ӭ3~'ݏlԼ4!~D<2ܡC i7/f:?4 s|ٱ?9*+ຆ*6%0{NTd_[O㷌lr v:MRmkFlfGKԷ/_D 1R#eֺĽjj#%'\7Z|,CnɞzXPќ+J@ w?2ö,eGq 94K'bpSI< Vi&Z<[Ƚ'q4B"9u,*S1xbt.XqHkk(h~L'zy|kخ UC&^fR8c%Rܞ+f,&A^ȯ"LQTz$6F:}qW;iϾk|21օr--RZNȏYs<%fU='970(GTvy Ǻx7 " YOVd'555_[#Й܎ ~Br|fѹLfï}rֲD5 ;Jo)sW#l"+ٴTJB_F'~7䒗‡ķzTS ?w߼(`4)l {knbu-,gZ2P:>4PZ=3Klj:مxR{%Tl+FiNn<-ZobdZd],9o>.xk36#RO" Bo$tR"i|*6EHJ%;% /pnO>WWFiD4Z]S9!T@3> 7fTcVkY\5Ã-{e-=?+:lS&Y(Pendstream endobj 304 0 obj << /Filter /FlateDecode /Length1 1671 /Length2 11291 /Length3 0 /Length 12376 >> stream xڍP- w NKpw 3CР!x 8r{E{ /5٤ 9() VQprsrrc201@.00" i&c"B!%W_K@)/"E c A?'`3 r- U -" ApJ,j ; sp[8ء.6,w0\@V?$,AKcd؂a9pw  WTPwA"E`}9.v;D`ȟ@   ; XApA-,O?nX<)[ va`?4re!VPGG|2`=9n=Caġ ;e<0ـ>NNNAnArQ@ _o'Il z p. _t7Xp% 'd~ `4~\?e4aVP??[!'ovyxظ8\\ܼ?O!P_"n_B ׆ԠO 03Ɯ|%3o=ß~#o<ŸvC!ZhUp<9/;'_v0LÁҿT i@a?ޝ(N=m=Oi,c..O\Ojs()` u?L"꿑 7C= =,ao~@>4C^!'6 ~?\O=>bO@.? u@Wυxj¿b.B"vuW5RTlcܼ8'gn[Ңקb GĀYt<_ BȊFs0[)`1ċ<}GW@?~0"/%IhghBϱP{@1ku:2ȪvSux}VRLg ?i[`L*x;ui䳘#[OݷS<׋"{?';d<<׭*u6HV$yHD*iwՕջ'֟icd-hI!,os#W ֹ׵#|Q,t޵[K7*VfnIx2|ҿ Gv^wӴ4ToRj:4s_=#D'&4dۙ1p|°5x,d﷠0Ƈ퇦굥0եtnW$@w|- sFŶVN4Nع*tu~[S >-mA }}OͶ2{Ll8 Ɯ UOV5`_fp}.bI FVF|a9IK'oWksWp.Uژvb2Q/D &觿캰*[3j*["~}aE-YۥOn_P B^:ۺ;8+0ċG"qߜ&w}RwH.T%ܠbQ iyne';S};8TLP On|oXR\'䡚Ix5mͶ]Ӕ)+7FCJ^- $͋oјlXeMtx qEfn7X4xU@)?KbUdkm5ɞi56!̏vx(vy-oR󡕖q}+p-WSuP{k[,U(bQϊHcF\C۬|4>^MGf5MT$**|!&3wAHYuvڿ8?E]iN?Z6 *KK *m}p6!֥7~60TeC0Vx9#CfH&hO~u_݃C@]ZQ~&”̭a"t0XOZ{6 !C'Ҁne#GxQ']q%Ah>UǾziAEsjz͍4z82"$Қ6ݸӄ} sk dP.LΦ{e``[cK",i]+b8@U M,^pIai^M G>CQזjZ.m ʔ1-tR#Y5H\h1;ҹG?*(.zd/lX_HJS_- )dD b'.MO`SO3M:uyNs[{>W -_p_:*Ep:߷ip,[. X^m)&I@qZ>vZ>8*xgj6ye *uk} t4e3L=ﰜyسٮJKV$Ok)["ܩ-1 J׶r>y#q43c Rš;>FVR/EFq^ס}֕>0OE7\n;$f7xϲ ŏ45h.kYRt'ܠ:8 &Pn k˕<4),.w]ha4x*\]ԉa q/z,>)>UJ:Dl<:ظV01'K#Z%TX7`?O~s{e \NгjtЗ0gnBŶ8|n 3I_K2Ĥ**=]a!hMQ*.Q}Z2APh\R2_yM2097_#'%b%ݜ "gh~4aڦ6 LjV|I2$%#aXW+JTҌkr^jΏ1>/ar#xC)|ndyWe8b X/b[BgpN!\Isv=) F tyQ$gyqsٵX\1-Q|f SGwA;$W_ `j="<߂45UNrM& g;zK1nᅿ|0 \qNux536ݎx!x]}n~R2'g2U곳r V%UL{~>EOs^ER)q]s(ZL_Od+\UƭQt:⡠^觃SOwrTy_/qQi:7?ԼSMGH _rAڻz݌]J <BU0ˑt|6Y2x5wX pIC;K: +F*ޘIl`Mwt7H'kX)ܞ+6=UZTD SA7c#t8x:=#+⹷.2OD'y%~s[HzĂG=mJB^ݰq+t cxN%=_YQxY L'>a#vo#5dϖΡzd{AIܻ!쐋V\d%$^7e'p //ʼn1=#KKFˌ[ĔZ~o^_BL_+5Qp#ZѥHs^ aIzeԾs1oߺ* b5W,ƶz WrgXM`w j NyG %*f'ݞeDŽ.ʇX}IP%6*B׊I͎Rj#*kg gN,\z*Uh&Pwk >F5lePQͦvZ Xr$wD7; "V*/Ò]Xf9( ay?dSN!Z돣R`T>")h*gn_^ b`JNT_FZ>tqp/ƆXXLJ/?2HUԱq-464u Q εÖ 4 2a%k37DJ-pyp(&+hXmY',*32{Rjk!@)eih:b g/4QMr z k9⋴a%vdf+2ѩGQeK=([&*sGHxka;v `<rc#TŎKz+)X>TJ;*R45ȴUQ8&<3ߢLx}xGn:O 0+ &C"}c LK#M)w,E]l$S>7y.2GWكle51y[5 b;f,x7]Ds nn>X$`c?ELZL&;S!5TJ}lpZףZJ=)IPU}/\ɼ-L 9lQ|oC#n~+Aa[+qJwg>er2UW7T6WQ 7RYg iZ32H/x'isc(D]~7l1XpލX.`ͬSm 4dkZ.jX5brIc Ȕs. #J7_C ݓұĹXvȱ.W%[-.3mUW{UoDNР(Tو塾@$H!mmȬjJ-(zqA ӓg$\3uJB@'u>!ZxS#ht[*K5xQU_{yK>!)wq9yfIF +>+M6OR)De|}Ȉms/74I5߫[$h:x٘P46-3hġ01ܛAQ*W “ -=tf]uVF+t 7{+`rkIJly0Te?ϮmqK.28f>+st#9 ͏I3[;^5SG4ԱD3܊F{߅Pt[$5{"^f9ޏ3贐ϾmPu_} m᧖~$KV&<"AMbzu_i4lmbq(`)窦$_5U9ك7S׹؆.^WG~}Pr4V6i?{Cze19᝭?\flJ5Z;,ivhFN\Ԣ Qu/(o ¬BɆb+jui׍t)uP&,+Ɉ #> Ě6g!ӓ"H䝅P[s83|;^T5_J @kV#{J6qA0؁h{^I Q)-@Qs!Bڭ %lԅKc!Kbrj9 ~9Ȏ[/{VYFG 9hVrОC*d{&~d~G*/%i~h!xC-o"uڻ-i V,jG+DL:Y9;le8ˡj eclX0c,Udg7ߘ[ꩰ7ڌ}٥)tiqĢEKi[&T/NOԻJ.v?9!qgF(MÎ;w3\fnUqRG9J8%ݤI_ak-nrOױqnk yZS*7Ƴ;Nn[!#N5ܑ@ۻ@H}L7KGYPW~+= !S򸜨q#tloa!/Ixc:$"_T6TY οoCWT/yp(X ?~JF%^fp<ilIc"]HE6:eH*Ɓ&AA=)-+N̵6`xkW7D>Kvr:cbizǒSs 6@/l'GA֬Q ƯwJ2&1 ,^K,7Ţ!Ӏlr0lJO?T|^pYZ z|~սm7Zr,IǠٛXЫ-›Pҵ6pقs)ql>q9੼Pީ+^Q vV-ި"5iH*ʊl+ɻz/?W 6 iD핸:ԑ5@l{|$C袾I`>ځGz~{}ժ.WHJj>\?Ʒǎ8LB`xdp yc2i7{Y'VB7׏\Bܘ A.*-& ,j=+AΫ MiEt)_f|B4MR,T53*w\΍!z䓕 O8õvqm􌫛Igz_tũAujr+c 'lAR!-FĆ]87Ez~G *$/rG+DGys*Zĺ Kd(̫OUqprwC~HL3',"3B?Kah}3K8I#~kGhIW[QIK9Na j}Mޙ˫XS"K'#s3pmp;b Da_+Sh3aq|ZvC^1j /)FW2o:eJG(1(Eb sS=2l,_vѬG+)"{։U1}U?gdv :d.UDǕwy?*?_Rwy;MQCbb4ΒNpMtIȾ'=PSeH|_9Kנn/PI$|jy=A6{{tz}-yh![IIWѯ"3V$QW=^ KQC5kE#/7c'aIӉ+Q>6 q?1 ۃ{?'7F f ' Q򯲂M#oj[OK0ݏUݑz6'J0؛bqsU̐wjᡜx7ľ|*Ck N' @&I N5iG2DTzelÐnHdXOi6Ϗu˰ HdS{'Yߌ .Y50KSC+mdIM}r%<ZS‰(M/ a]m_0҈WR6xJ}h)og*|Q+A˗\jBKls-AQERqzu;:Ȯlޑ"_,P`/H{iXM{3e; B{=BJ,< ewN: =ci0ޕg044Q^9w$i޹ {u3zK '8~B6BROsU l`†n°}c5MQ$=o HHb'>$.[Qk<[L Ȝsdl hP&|*8C<2:7 *sRAJmҮV?a&r ^"$oMcTM6}ZAex#Sc~FoV^N-*JaZ-)굳ltAb]$ ~tUAVk^/CUuO/m*P5F ަ˵W3F\ӉqMV Bޞ+|U7ŀoD9A^8X308~cA ۙ\p[KsA1;IaPF֓599I'43HQi307PۭЙZG6k8my@>bl7mngḁFFj%rm> k_+? ,|A~aikVβ3乕G;{lh^M]YkݑUg~?'#?0 F/EY>e` 42t>{ӥ*!0x2-Ds4.0 A&ooI" ޮJCr@(~1W4I vћc|c6|K{G0g&~eVr?٣Bۂxϕ}&pʆQ'?GP#v$ܠvá PϾlr:F ɞz}2gEJS¸P/_Vou26ⅇ9'~|z9RJi1V+ 6 `wI T#5+.&ּyjd^JVڢ-לs(;~8u;x:Ms9ܯrf|<+4\Z:%{eI@E"*Q3Búun*T K("bv/IHCg\_;5ٯ, ~_弧n&ny i']Mt1t( T;3hZalQІU`jsɐ^X")׊>$|NM̻A"u8\W/LUMd倮oLMk]k<*j[5U$No)72?#1[1*zf(G $:4 LF7UÌ.yHeE쵇tUX7*e>X>C]r/R7aNR1&PzTde/reT$Iumxb5Aw}g}}(^Imnd-*ʍ &Xk=p[lD"!EJxGz ,b2cY%eMpioz+ڥDԊ&$Agn9ZS!5xz-S;FduaQCB>+wL󣣵]}t&8iP: {`2v:.M g U.Q vRI*y5 )pc5AasJ;ZE$+/_XYYUϚ+d 9nYcd `RO]e F\CÕJ(V>,4$&=3V> stream xڍT 8m&*IP.bX"T1ofGEPHRRY}TDZ)%ED__s]3sι9s?j*n:$"7"ux<Ь q0 1 aɁ(mG7B?#ƹ9xx=a+QW>wܧxl: ,И&&x}<"No?U.'"7)L:@CB }#Dߣv< ~0 @4gG ޘ109{txo1Tr@MÚA~hPY) áb~A( ^m",Pv`Fjlp)״5u퇉/386:3=dO1 _Ms8 e4kO?Q1OZYuq;WIIHԓ/gemG/w-zC<4k)>yxOoΥj?Xd ׁO|j.B_:TzG h\4ߒ5`c^V1?`hA9̗72]8'UQ2QjE#+ D ڢpwR¬_(n}j'4v ohq9')GJTb8eo޿xd.tw4ߖ܏iw QpC,HrָiE:A>䙯µȱ ^ MB~[r<|:eX.hn|bȧO'mˌYU]ߝ3L)gߖt<}Hܧp[z{71"On\>NK=Ѻ;Ȋ$0Kau15]R]VvjMFl.%Tg%w D\rvtԬV/UiP*+IHmZOavar?*TdK>):U|dоc̓j/0@:.Ywg\.]gŻ/"Hpg-~Lu{fJd55K?>_,qŵs|VElm1K8c>w)A1n܇4q';l'[ 䲵s; ׅե}?- 0G.)wJÍױk{rbojSS*Oܠ?7q?s k"kk0ld{#|7I{ئ';}A~3@WؗSxlMwOXl䪓fA0Z& hEI۱0Wtr z+xR.?HSSVpwW\ .g.IRc^ǖ6m{Pֱ|jd-Ņ#ƵE;M9> YhUw@D]kўŔ cIůf߅J ؟u/ԯixIT{xI۳.KXc7 X#)<%*36@<:u7.YUƢS}.;<.k5ծĝ#_#~m>׿},W퉺Gh*JG4̗olS>='g6j,u@MR5F!&۵3Yo?m8qTגevUf(J~U#+ tdخc9|P4 O69cl=!֩=.rej|ԞyxUuN)FMOZk2E#^{rcKJC1վw\1{ t2/MHfʛuy-S@ %}\?XEWo> stream xVn8}Wc 1豈@n tEVdHr.=#_d:/&EsI O$-AYAEC`eI$/R(úCP$i}Q=eX-Y@<9* ǞւC,-)hpӊҚBPfq^u' (9".&%NgxAR %&xFay g]  "[Bdy5t5n&eٱ^= Ex -Do!r ișUP BVĜ|b(@)RJD!9V29L 3Dte, a>,CxD#Ky3gDyΛG`x *p x.ӁkA(L 8Aqqq}PC|!\!Bt\OqQqW#{W ꊶ,4xH#/Sp!CUyO}~_tIb}iil~0aGOZ]DO9BH@lfW)YLuX$7qժ5\k@rU%ݦ_LTI1i&trش#S>ߵRC:uZM9#*/ƟVICڨZZtUKQr5Guu1Dq='J*K=cF*Mc A̔ $CP7UF%LLC^[,Li0/̋ly }b"2`']Ԍ.zl4tX10 bcܮqFiBwηM[tl[t@7ͪDou9ӓDbtٴ󊪲 ~w*bKwTOEEX/H蝍Xd,tbt :N4x8j<'?]}/}s]m/I2>2Ko'_~4y,nR vK;>N?zm-XN3H2Lҏny6ɞPsiר褭3L2p߼Qv" E)^[E7xkş{i71fb@1xU7HX'&IGkSe9=|'eS"tendstream endobj 392 0 obj << /Type /XRef /Length 230 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 87 0 R /Root 86 0 R /Size 393 /ID [<125f1ddbe99373aec87682f72ba68297><8a9190c00698c35400a56ca627d41a41>] >> stream xҿ aŨ0"d$AdI&R 2py ,ɒ>2$S `o[=fVʂ=lQ-hr+R4`5}p, Gdfl5Go3JpSʮTz<qW.QpǠm = Cl qLzzbǬԨjm{12 endstream endobj startxref 241180 %%EOF xtable/tests/0000755000176200001440000000000013050750607012676 5ustar liggesusersxtable/tests/test.xtable.data.frame.R0000644000176200001440000000103413050750607017255 0ustar liggesusers### Test code for logicals bug (number 1911) ### David Scott, , 2012-08-10 ### Example of problem with logical library(xtable) mydf <- data.frame(x = c(1,2), y = c(TRUE,FALSE)) xtable(mydf) ### Output should be ## % latex table generated in R 2.15.0 by xtable 1.7-0 package ## % Fri Aug 10 23:16:30 2012 ## \begin{table}[ht] ## \begin{center} ## \begin{tabular}{rrl} ## \hline ## & x & y \\ ## \hline ## 1 & 1.00 & TRUE \\ ## 2 & 2.00 & FALSE \\ ## \hline ## \end{tabular} ## \end{center} ## \end{table} xtable/tests/test.xtable.R0000644000176200001440000000160413050750607015257 0ustar liggesusers### Test of implementation of request #2104 ### Use of \centering rather that center environment when centering tables ### DJS, 16/8/2012 require(xtable) ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels=c("Ctl","Trt")) weight <- c(ctl, trt) lm.D9 <- lm(weight ~ group) class(lm.D9) xtable(lm.D9, caption="\\tt latex.environment=\"center\"") ## % latex table generated in R 2.15.0 by xtable 1.7-1 package ## % Thu Aug 16 15:44:09 2012 ## \begin{table}[ht] ## \centering ## \begin{tabular}{rrrrr} ## \hline ## & Estimate & Std. Error & t value & Pr($>$$|$t$|$) \\ ## \hline ## (Intercept) & 5.0320 & 0.2202 & 22.85 & 0.0000 \\ ## groupTrt & -0.3710 & 0.3114 & -1.19 & 0.2490 \\ ## \hline ## \end{tabular} ## \caption{\tt latex.environment="center"} ## \end{table} xtable/tests/test.xtable.xtableFtable.R0000644000176200001440000000127413050750607017656 0ustar liggesusers### Test code for xtableFtable function ### David Scott, , 2016-01-14 library(xtable) tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) ## debug(xtableFtable) xftbl <- xtableFtable(tbl) str(xftbl) unclass(xftbl) print.xtableFtable(xftbl) xftbl <- xtableFtable(tbl, method = "row.compact") print.xtableFtable(xftbl) xftbl <- xtableFtable(tbl, method = "col.compact") print.xtableFtable(xftbl) xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl) ## debug(print.xtableFtable) ## undebug(print.xtableFtable) ## debug(print.xtable) ## undebug(print.xtable) xtable/tests/test.margintable.R0000644000176200001440000000260413050750607016266 0ustar liggesusers### Test of feature request #2168 implementation ### Enables use of margintable floating environment ### DJS, 17/08/2012 library(xtable) x <- matrix(rnorm(6), ncol = 2) x.small <- xtable(x, label='tabsmall', caption = 'A margin table') print(x.small, floating.environment = 'margintable', table.environments = "", table.placement = NULL) ## % latex table generated in R 2.15.0 by xtable 1.7-1 package ## % Fri Aug 17 01:42:42 2012 ## \begin{margintable} ## \centering ## \begin{tabular}{rrr} ## \hline ## & 1 & 2 \\ ## \hline ## 1 & 1.42 & -1.11 \\ ## 2 & -0.57 & 0.23 \\ ## 3 & -0.67 & -0.60 \\ ## \hline ## \end{tabular} ## \caption{A margin table} ## \label{tabsmall} ## \end{margintable} print(x.small, floating.environment = 'margintable', table.environments = "") ## % latex table generated in R 2.15.0 by xtable 1.7-1 package ## % Fri Aug 17 01:42:46 2012 ## \begin{margintable} ## \centering ## \begin{tabular}{rrr} ## \hline ## & 1 & 2 \\ ## \hline ## 1 & 1.42 & -1.11 \\ ## 2 & -0.57 & 0.23 \\ ## 3 & -0.67 & -0.60 \\ ## \hline ## \end{tabular} ## \caption{A margin table} ## \label{tabsmall} ## \end{margintable} ## Warning message: ## In print.xtable(x.small, floating.environment = "margintable", table.environments = "") : ## margintable does not allow for table placement; setting table.placement to NULL xtable/tests/test.xalign.xdigits.xdisplay.R0000644000176200001440000000252413050750607020572 0ustar liggesusers### Test of feature request #5686 ### Automatically suggesting alignment/digits/display for an xtable ### Arni Magnusson, 14 Sep 2014 require(xtable) dat <- mtcars[1:3, 1:6] x <- xtable(dat) x ## % latex table generated in R 3.1.1 by xtable 1.7-4 package ## % Sun Sep 14 22:32:17 2014 ## \begin{table}[ht] ## \centering ## \begin{tabular}{rrrrrrr} ## \hline ## & mpg & cyl & disp & hp & drat & wt \\ ## \hline ## Mazda RX4 & 21.00 & 6.00 & 160.00 & 110.00 & 3.90 & 2.62 \\ ## Mazda RX4 Wag & 21.00 & 6.00 & 160.00 & 110.00 & 3.90 & 2.88 \\ ## Datsun 710 & 22.80 & 4.00 & 108.00 & 93.00 & 3.85 & 2.32 \\ ## \hline ## \end{tabular} ## \end{table} ### Hmm, inappropriate alignment and digits. ### Now try suggestions from xalign, xdigits, and xdisplay: ### source("http://www.hafro.is/~arnima/r/xtable_5686.R") align(x) <- xalign(x) digits(x) <- xdigits(x) display(x) <- xdisplay(x) x ## % latex table generated in R 3.1.1 by xtable 1.7-4 package ## % Sun Sep 14 22:34:43 2014 ## \begin{table}[ht] ## \centering ## \begin{tabular}{lrrrrrr} ## \hline ## & mpg & cyl & disp & hp & drat & wt \\ ## \hline ## Mazda RX4 & 21.0 & 6 & 160 & 110 & 3.90 & 2.620 \\ ## Mazda RX4 Wag & 21.0 & 6 & 160 & 110 & 3.90 & 2.875 \\ ## Datsun 710 & 22.8 & 4 & 108 & 93 & 3.85 & 2.320 \\ ## \hline ## \end{tabular} ## \end{table} ### Excellent suggestions. xtable/tests/test.matharray.R0000644000176200001440000000160213050750607015766 0ustar liggesusersrequire(xtable) V <- matrix(c(1.140380e-03, 3.010497e-05, 7.334879e-05, 3.010497e-05, 3.320683e-04, -5.284854e-05, 7.334879e-05, -5.284854e-05, 3.520928e-04), nrow = 3) ### Simple test of print.xtableMatharray print.xtableMatharray(xtable(V, display = rep("E", 4))) class(V) <- c("xtableMatharray") class(V) ### Test without any additional arguments mth <- xtableMatharray(V) str(mth) print(mth) ### Test with arguments to xtable mth <- xtableMatharray(V, display = rep("E", 4)) str(mth) print(mth) mth <- xtableMatharray(V, digits = 6) str(mth) print(mth) ### Test with additional print.xtableMatharray arguments mth <- xtableMatharray(V, digits = 6) str(mth) print(mth, format.args = list(decimal.mark = ",")) print(mth, scalebox = 0.5) print(mth, comment = TRUE) print(mth, timestamp = "2000-01-01") print(mth, comment = TRUE, timestamp = "2000-01-01") xtable/NAMESPACE0000644000176200001440000000411313457044656012765 0ustar liggesusersimportFrom("utils", "toLatex") importFrom("stats", "anova", "as.ts", "cycle", "end", "frequency", "na.omit", "pchisq", "start", "time") importFrom("utils", "packageDescription") export("caption<-", "caption", "label", "label<-", "align<-", "align", "digits<-", "digits", "display<-", "display", "xtable", "xtableMatharray","xtableList", "xtableLSMeans", "print.xtable", "print.xtableMatharray", "print.xtableList", "xtableFtable", "print.xtableFtable", "toLatex.xtable", "autoformat", "xalign", "xdigits", "xdisplay", "sanitize", "sanitize.numbers", "sanitize.final", "as.is", "as.math") S3method("print", "xtable") S3method("print", "xtableMatharray") S3method("print", "xtableList") S3method("print", "xtableFtable") S3method("toLatex", "xtable") S3method("caption<-", "xtable") S3method("caption", "xtable") S3method("label", "xtable") S3method("label<-", "xtable") S3method("align<-", "xtable") S3method("align", "xtable") S3method("digits", "xtable") S3method("digits<-", "xtable") S3method("display<-", "xtable") S3method("display", "xtable") S3method("xtable", "data.frame") S3method("xtable", "matrix") S3method("xtable", "table") S3method("xtable", "anova") S3method("xtable", "aov") S3method("xtable", "summary.aov") S3method("xtable", "summary.aovlist") S3method("xtable", "aovlist") S3method("xtable", "lm") S3method("xtable", "summary.lm") S3method("xtable", "glm") S3method("xtable", "summary.glm") S3method("xtable", "prcomp") S3method("xtable", "summary.prcomp") S3method("xtable", "coxph") S3method("xtable", "ts") S3method("xtable", "zoo") ## S3method("xtable", "sarlm") ## S3method("xtable", "summary.sarlm") ## S3method("xtable", "gmsar") ## S3method("xtable", "summary.gmsar") ## S3method("xtable", "stsls") ## S3method("xtable", "summary.stsls") ## S3method("xtable", "sarlm.pred") ## S3method("xtable", "lagImpact") ## S3method("xtable", "splm") ## S3method("xtable", "summary.splm") ## S3method("xtable", "sphet") ## S3method("xtable", "summary.sphet") ## S3method("xtable", "spautolm") ## S3method("xtable", "summary.spautolm") xtable/NEWS0000644000176200001440000001706713457045526012256 0ustar liggesusers1.8-4 (2019-04-8) * Changes to spdep broke vignette Other Packages Gallery, reported by CRAN. Had to remove spdep, splm and sphet suggests and xtable functions, and references in OtherPackagesGallery 1.8-3 (2018-08-29) * Changed listOfTablesGallery vignette to exclude references to lsmeans since Russell Lenth has deprecated lsmeans, replacing it with emmeans which has support for tables using xtable based on listOfTables. lsmeans removed from Suggests in DESCRIPTION also. * Changed OtherPackagesGallery vignette example using the function impacts from spdep due to a change in the package spdep causing a failure ofr the example using gstslshet from sphet * Changed error messages to extract actual value of nrow(x), suggestion by Michael Chirico * Corrected author field to properly represent author contributions, code supplied by Arni Magnusson * Corrected call to print.xtable inside print.xtableFtable included arguments from call to print.xtableFtable. Absence of size argument was advised by Lluis Ramon, email March 4, 2016 * Added patch from Martin Gubri, martin.gubri@framasoft.org to enable use of lagImpactMat from spdep in xtable method lagImpact. * Added patch to code in OtherPackagesGallery.Rnw supplied by Martin Gubri to avoid warnings in the spdep package example. Also fixed the vignette index entry. * Fixed number of columns in \multicolumn command in print.xtableList to deal with inclusion of row names. Previously was only appropriate for row names not included. 1.8-2 (2016-02-05) * Added function print.xtableMatharray to enable easy creation of LaTeX code to enable an array to be included in a document. * Added example to the gallery using sanitizing headings and row names to produce large bold headings and italic row names. * Added code from Martin Gubri, martin.gubri@framasoft.org, to produce tables from the spatial econometrics packages, spdep, splm, and sphet. * Extracted sanitize functions from print.xtable as stand-alone functions, and exported them. Added helper functions as.is and as.math for assistance with sanitization (supplied by Stefan Edwards in Feature Request #5303). * Added option to produce math style exponents when sanitizing numbers, as suggested by Don Armstrong , who also provided code * Fixed bug #6907. Warning was created when the data frame as no rows for type is 'html'. Added a test to create the matrix requested specially in that case. Original code was BTD2 <- matrix(align.tmp[(2-pos):(ncol(x)+1)], nrow = nrow(x), ncol = ncol(x)+pos, byrow = TRUE) which created a matrix with no rows, but gave a warning when there were no rows in the data frame being processed. * Fixed bug #6260. Accepted the change suggested by Claudius Loehnert, which was to replace { and } by \begingroup and \endgroup respectively as the delimiters when size was to changed in a table. * Added functions xtableList and print.xtableList to produce composite tables consisting of a number of subtables. * Added xtableFtable and print.xtableFtable to format flat tables produced by ftable. Included examples in the xtable gallery. * Produced new vignettes: 'The xtableList Gallery' to illustrate xtableList and print.xtableList; and 'The Other Packages Gallery' to illustrate methods for classes of objects from other packages. 1.8-0 (2015-11-02) * autoformat, xalign, xdigits, xdisplay from Arni Magnusson, added along with help file. Feature request #5686. * New argument 'auto' in xtable(), to call xalign, xdigits, and xdisplay at the time when xtable is created. * Updated xtableGallery vignette, now with TOC and revised examples. 1.7-4 (2014-09-11) * Changed tags in HTML to be all lower case, to be compatible with HTML5, part of feature request. (#5879) * Fixed booktabs bug (#2309), more of an enhancement really. Updated xtableGallery.snw to illustrate the change. 1.7-3 (2014-03-06) * Dealt with format.args bug (#4770). No code changes, but the documentation of print.xtable was changed to warn of the problem and to give a workaround as an example. 1.7-1 (2013-02-24) * Fixed logicals bug. (Req #1911) * Changed implementation of centering of tables. Instead of inserting a centered environment, now a \centering command is inserted. (Req #2104) * Allow for margin tables as possible with document class tufte-handout. An example of usage is found in the vignette. produced by margintable.Rnw which is in inst/doc. (Req #2168) * Added "timestamp" argument to print.xtable(). Set it to NULL if no timestamp is desired. (Req #2246) * Added "comment" argument to print.xtable(). Set it to FALSE to exclude the version and timestamp comment. (Req #2246) * Added "caption.width" argument. If not NULL then the caption is placed in a "parbox" of the specified width. (Req #2247) * Remove the check on whether the "floating.environment" is in a list of known floating environments. Users want to use floating environments from multiple options LaTeX packages. (Req #2488, #2578) 1.7-0 (2012-02-10) * Added some vectorization code to improve performance. * Let "caption" be length 2, in which case the second value is the short caption used when creating a list of tables. * Added "toLatex" method. * Included "print.xtable" in the exported methods in the NAMESPACE file. * Added "print.results" argument to "print" that can be used to suppress the printing. * Added "format.args" argument to "print" that can be used to pass additional arguments such as "big.marks" to "formatC()". * Added "rotate.colnames" and "rotate.rownames" arguments to "print.xtable". * Added "booktabs" argument to use the "\toprule", "\midrule", and "\bottomrule" tags from the Latex "booktabs" package rather than using "\hline" for all horizontal lines. * Added "scalebox" argument to include a "\scalebox" clause around the tabular environment with the specified value used as the scaling factor. * Added "width" argument to allow specification of the width value in tabular environments such as "tabularx". * Added "X" as an allowed alignment value in the "align()" replacement function. * Changed the "print.xtable()" arguments to use "getOption()" to check the options for a default value. This was suggested since "print.xtable()" has a lot of arguments that the user will typically leave unchanged between tables. * Added an "is.null()" check on the "table.placement" argument. * Added examples using the new arguments to the vignette. 1.6-0 (2011-10-07) * Allow "table*" as a value for "floating.environment" in print.xtable(). * Fix bug under which multiple logical columns were formatted incorrectly. * Stop with an error if "xtable.table" is used on a table with more than two dimensions. * Add some newlines to "Rd" file to prevent lines from extending off the page in the PDF version of the help files. * Changed the maintainer to "Charles Roosen". * Created an "xtable" project on R-Forge. 1.5-6 (2009-10-30) * Support caption at the top in the LaTeX longtable. * Use options()$OutDec for decimal mark. 1.5-5 (2009-03-24) * Added html.table.attributes to set the attributed of the tag for HTML tables. * Accommodated logicals by converting to characters. * Add an extra space at end of each line for LaTeX tables. * Fixed typographical error in documentation. xtable/data/0000755000176200001440000000000013457046163012453 5ustar liggesusersxtable/data/tli.txt.gz0000644000176200001440000000106013457046163014420 0ustar liggesusersWN@}+ lQAowIJJ̞9sfv,;>~۷]sx;>7_kr|mW[f%{l-ci]ߎ7Y񾳬gzge:*֝X>}D>y43CtSPT{(>ϢO Z\WnYy"yէ =Jj:OG=grF>R-\M{(W9 ### ### Maintained by David Scott ### ### This file is part of the `xtable' library for R and related languages. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ### MA 02111-1307, USA ### The generic for toLatex() is declared in the base package "utils" toLatex.xtable <- function(object, ...){ ## Initially just capturing the output of print.xtable(). At some ## point this could be refactored to have print.xtable() call ## toLatex() instead. - CR, 30/01/2012 dotArgs <- list(...) dotArgs$x <- object dotArgs$type <- "latex" dotArgs$print.results <- FALSE z <- do.call("print.xtable", dotArgs) z <- strsplit(z, split="\n")[[1]] class(z) <- "Latex" z } xtable/R/autoformat.R0000644000176200001440000000236513050750607014247 0ustar liggesusersautoformat <- function(xtab, zap = getOption("digits")) { align(xtab) <- xalign(xtab) digits(xtab) <- xdigits(xtab, zap = zap) display(xtab) <- xdisplay(xtab) return(xtab) } xalign <- function(x, pad = TRUE) { lr <- function(v) if(is.numeric(v)) "r" else "l" is.2d <- length(dim(x)) == 2 alignment <- if(is.2d) sapply(as.data.frame(x), lr) else lr(x) output <- if(is.2d && pad) c("l", alignment) else alignment return(output) } xdigits <- function(x, pad = TRUE, zap = getOption("digits")) { dig <- function(v) { if(is.numeric(v)) { v <- na.omit(v) v <- zapsmall(abs(v - floor(v)), zap) dec <- if(any(v > 0)) max(nchar(v) - 2L) else 0L } else { dec <- 0L } return(dec) } is.2d <- length(dim(x)) == 2 decimals <- if(is.2d) sapply(as.data.frame(x), dig) else dig(x) output <- if(is.2d && pad) c(0L, decimals) else decimals return(output) } xdisplay <- function(x, pad = TRUE) { type <- function(v) { if(is.numeric(v)) { tp <- if(xdigits(v) == 0) "d" else "f" } else { tp <- "s" } return(tp) } is.2d <- length(dim(x)) == 2 disp <- if(is.2d) sapply(as.data.frame(x), type) else type(x) output <- if(is.2d && pad) c("s", disp) else disp return(output) } xtable/R/xtableList.R0000644000176200001440000002541113050750607014176 0ustar liggesusers### Function to create lists of tables xtableList <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, ...) { if (is.null(digits)){ digitsList <- vector("list", length(x)) } else { if (!is.list(digits)){ digitsList <- vector("list", length(x)) for (i in 1:length(x)) digitsList[[i]] <- digits } } if (is.null(display)){ displayList <- vector("list", length(x)) } else { if (!is.list(display)){ displayList <- vector("list", length(x)) for (i in 1:length(x)) displayList[[i]] <- display } } xList <- vector("list", length(x)) for (i in 1:length(x)){ xList[[i]] <- xtable(x[[i]], caption = caption, label = label, align = align, digits = digitsList[[i]], display = displayList[[i]], ...) attr(xList[[i]], 'subheading') <- attr(x, 'subheadings')[[i]] } attr(xList, "message") <- attr(x, "message") attr(xList, "caption") <- caption attr(xList, "label") <- label class(xList) <- c("xtableList") return(xList) } print.xtableList <- function(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = NULL, NA.string = getOption("xtable.NA.string", ""), include.rownames = getOption("xtable.include.rownames", TRUE), colnames.format = "single", only.contents = getOption("xtable.only.contents", FALSE), add.to.row = NULL, sanitize.text.function = getOption("xtable.sanitize.text.function", NULL), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), sanitize.subheadings.function = getOption("xtable.sanitize.subheadings.function", sanitize.text.function), sanitize.message.function = getOption("xtable.sanitize.message.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...) { ## Get number of rows for each table in list of tables nCols <- dim(x[[1]])[2] rowNums <- sapply(x, dim)[1,] combinedRowNums <- cumsum(rowNums) combined <- do.call(rbind, x) if (type == "latex"){ ## Special treatment if using booktabs if (booktabs){ tRule <- "\\toprule" mRule <- "\\midrule" bRule <- "\\bottomrule" } else { tRule <- "\\hline" mRule <- "\\hline" bRule <- "\\hline" } ## Sanitize subheadings if required if (!is.null(sanitize.subheadings.function)) { for (i in 1:length(x)){ attr(x[[i]], 'subheading') <- sanitize.subheadings.function(attr(x[[i]], 'subheading')) } } ## Sanitize message if required if (!is.null(sanitize.message.function)) { xMessage <- attr(x, 'message') xMessage <- sapply(xMessage, sanitize.message.function) attr(x, 'message') <- xMessage } if (colnames.format == "single"){ add.to.row <- list(pos = NULL, command = NULL) add.to.row$pos <- as.list(c(0, combinedRowNums[-length(x)], dim(combined)[1])) command <- sapply(x, attr, "subheading") for (i in 1:length(x)){ if( !is.null(command[[i]]) ){ add.to.row$command[i] <- paste0(mRule,"\n\\multicolumn{", nCols + include.rownames, "}{l}{", command[[i]], "}\\\\\n") } else { add.to.row$command[i] <- paste0(mRule, "\n") } } ## Changed at request of Russ Lenth ## add.to.row$command[1:length(x)] <- ## paste0(mRule,"\n\\multicolumn{", nCols, "}{l}{", command, "}\\\\\n") if ( (booktabs) & length(attr(x, "message") > 0) ){ attr(x, "message")[1] <- paste0("\\rule{0em}{2.5ex}", attr(x, "message")[1]) } add.to.row$command[length(x) + 1] <- paste0("\n\\multicolumn{", nCols + include.rownames, "}{l}{", attr(x, "message"), "}\\\\\n", collapse = "") add.to.row$command[length(x) + 1] <- paste0(bRule, add.to.row$command[length(x) + 1]) class(combined) <- c("xtableList", "data.frame") hline.after <- c(-1) include.colnames <- TRUE } ## Create headings for columns if multiple headings are needed if (colnames.format == "multiple"){ if (is.null(sanitize.colnames.function)) { colHead <- names(x[[1]]) } else { colHead <- sanitize.colnames.function(names(x[[1]])) } if (rotate.colnames) { colHead <- paste("\\begin{sideways}", colHead, "\\end{sideways}") } colHead <- paste0(colHead, collapse = " & ") if (include.rownames) { colHead <- paste0(" & ", colHead) } colHead <- paste0(tRule, "\n", colHead, " \\\\", mRule, "\n") add.to.row <- list(pos = NULL, command = NULL) add.to.row$pos <- as.list(c(0, c(combinedRowNums[1:length(x)]))) command <- sapply(x, attr, "subheading") add.to.row$command[1] <- if( !is.null(command[[1]]) ){ add.to.row$command[1] <- paste0("\n\\multicolumn{", nCols + include.rownames, "}{l}{", command[[1]], "}\\\\ \n", colHead, "\n") } else { add.to.row$command[1] <- colHead } for (i in 2:length(x)) { add.to.row$command[i] <- if( !is.null(command[[i]]) ) { paste0(bRule, "\\\\ \n\\multicolumn{", nCols + include.rownames, "}{l}{", command[[i]], "}", "\\\\ \n", colHead) } else { add.to.row$command[i] <- paste0("\n", colHead) } } ## Changed at request of Russ Lenth ## add.to.row$command[1] <- ## paste0("\n\\multicolumn{", nCols, "}{l}{", command[1], ## "}", " \\\\ \n", ## colHead) ## add.to.row$command[2:length(x)] <- ## paste0(bRule, ## "\\\\ \n\\multicolumn{", nCols, "}{l}{", ## command[2:length(x)], "}", ## "\\\\ \n", ## colHead) if ( (booktabs) & length(attr(x, "message") > 0) ){ attr(x, "message")[1] <- paste0("\\rule{0em}{2.5ex}", attr(x, "message")[1]) } add.to.row$command[length(x) + 1] <- paste0("\n\\multicolumn{", nCols + include.rownames, "}{l}{", attr(x, "message"), "}\\\\\n", collapse = "") add.to.row$command[length(x) + 1] <- paste0(bRule, add.to.row$command[length(x) + 1]) class(combined) <- c("xtableList", "data.frame") hline.after <- NULL include.colnames <- FALSE } print.xtable(combined, type = type, floating = floating, floating.environment = floating.environment, table.placement = table.placement, caption.placement = caption.placement, caption.width = caption.width, latex.environments = latex.environments, tabular.environment = tabular.environment, size = size, hline.after = hline.after, NA.string = NA.string, include.rownames = include.rownames, include.colnames = include.colnames, only.contents = only.contents, add.to.row = add.to.row, sanitize.text.function = sanitize.text.function, sanitize.rownames.function = sanitize.rownames.function, sanitize.colnames.function = sanitize.colnames.function, math.style.negative = math.style.negative, math.style.exponents = math.style.exponents, html.table.attributes = html.table.attributes, print.results = print.results, format.args = format.args, rotate.rownames = rotate.rownames, rotate.colnames = rotate.colnames, booktabs = booktabs, scalebox = scalebox, width = width, comment = comment, timestamp = timestamp, ...) } else { stop("print.xtableList not yet implemented for this type") } } ### Uses xtableList xtableLSMeans <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...){ if (attr(x, "estName") == "lsmean"){ xList <- split(x, f = x[, 2]) for (i in 1:length(xList)){ xList[[i]] <- as.data.frame(xList[[i]][, -2]) } attr(xList, "subheadings") <- paste0(dimnames(x)[[2]][2], " = ", levels(x[[2]])) attr(xList, "message") <- c("", attr(x, "mesg")) xList <- xtableList(xList, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...) } else { xList <- x xList <- xtable.data.frame(xList, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...) } return(xList) } xtable/R/table.attributes.R0000644000176200001440000001276413050750607015346 0ustar liggesusers### xtable package ### ### Produce LaTeX and HTML tables from R objects. ### ### Copyright 2000-2013 David B. Dahl ### ### This file is part of the `xtable' library for R and related languages. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ### MA 02111-1307, USA "caption<-" <- function(x, value) UseMethod("caption<-") "caption<-.xtable" <- function(x, value) { if (length(value) > 2) stop("\"caption\" must have length 1 or 2") attr(x, "caption") <- value return(x) } caption <- function(x, ...) UseMethod("caption") caption.xtable <- function(x, ...) { return(attr(x, "caption", exact = TRUE)) } "label<-" <- function(x, value) UseMethod("label<-") "label<-.xtable" <- function(x, value) { if (length(value) > 1) stop("\"label\" must have length 1") attr(x, "label") <- value return(x) } label <- function(x, ...) UseMethod("label") label.xtable <- function(x, ...) { return(attr(x, "label", exact = TRUE)) } "align<-" <- function(x, value) UseMethod("align<-") ### Based on contribution from Jonathan Swinton ### in e-mail dated Wednesday, January 17, 2007 .alignStringToVector <- function(aString) { ## poor mans parsing - separating string of form "l{2in}llr|p{1in}c|{1in}" ## into "l{2in}" "l" "l" "r" "|" "p{1in}" "c" "|{1in}" aString.Align <- character(0); aString.Width <- character(0); wString <- aString while( nchar(wString) > 0) { aString.Align <- c(aString.Align, substr(wString, 1, 1)) ## is it followed by a brace? thisWidth <- "" if ( nchar(wString) > 1 & substr(wString, 2, 2) == "{") { beforeNextBrace <- regexpr("[^\\]\\}", wString) if (beforeNextBrace <0 ) { stop("No closing } in align string") } thisWidth <- substr(wString, 2, beforeNextBrace + 1) wString <- substr(wString, beforeNextBrace + 2, nchar(wString)) } else { wString <- substr(wString, 2, nchar(wString)) } aString.Width <- c(aString.Width, thisWidth) } alignAllowed <- c("l","r","p","c","|","X") if (any( !(aString.Align %in% alignAllowed))) { warning("Nonstandard alignments in align string") } res <- paste(aString.Align, aString.Width, sep = "") res } ###.alignStringToVector ("l{2in}llr|p{1in}c|{1in}") ###.alignStringToVector ("l{2in}llr|p{1in}c|") ### latex syntax error, but gives wrong alignment ###.alignStringToVector ("{2in}llr|p{1in}c|") ###.alignStringToVector("llllp{3cm}") "align<-.xtable" <- function(x, value) { ### Based on contribution from Benno ### in e-mail dated Wednesday, December 01, 2004 ### Based on contribution from Jonathan Swinton ### in e-mail dated Wednesday, January 17, 2007 ## cat("%", value, "\n") if ( (!is.null(value)) && ( is.character(value) ) && ( length(value) == 1 ) && ( nchar(value) > 1 ) ) { value <- .alignStringToVector(value) } ## That should have checked we had only lrcp| ## but what if the "if statement" is false? ## For simplicity, deleting check present in version 1.4-2 and earlier. c.value <- if (any(!is.na(match(value, "|")))) { value[-which(value == '|')] } else { value } if (length(c.value) != ncol(x) + 1) stop(paste("\"align\" must have length equal to", ncol(x) + 1, "( ncol(x) + 1 )")) attr(x, "align") <- value return(x) } align <- function(x, ...) UseMethod("align") align.xtable <- function(x, ...) { return(attr(x, "align", exact = TRUE)) } "digits<-" <- function(x, value) UseMethod("digits<-") "digits<-.xtable" <- function(x, value) { if( is.matrix( value ) ) { if( ncol( value ) != ncol(x) + 1 || nrow( value ) != nrow(x) ) { stop( "if argument 'digits' is a matrix, it must have columns equal", " to ", ncol(x) + 1, " ( ncol(x) + 1 ) and rows equal to ", nrow(x), " ( nrow( x )" ) } } else { if( length(value) == 1 ) { value <- rep(value, ncol(x) + 1) } if( length( value ) > 1 & length( value ) != ncol(x) + 1 ) { stop( "if argument 'digits' is a vector of length more than one, it must have length equal", " to ", ncol(x) + 1, " ( ncol(x) + 1 )" ) } } if (!is.numeric(value)) stop("\"digits\" must be numeric") attr(x, "digits") <- value return(x) } digits <- function(x, ...) UseMethod("digits") digits.xtable <- function(x, ...) { return(attr(x, "digits", exact = TRUE)) } "display<-" <- function(x, value) UseMethod("display<-") "display<-.xtable" <- function(x, value) { if (length(value) != ncol(x) + 1) stop(paste("\"display\" must have length equal to", ncol(x) + 1, "( ncol(x) + 1 )")) if (!all(!is.na(match(value, c("d","f","e","E","g","G","fg","s"))))) stop("\"display\" must be in {\"d\",\"f\",\"e\",\"E\",\"g\",\"G\", \"fg\", \"s\"}") attr(x, "display") <- value return(x) } display <- function(x, ...) UseMethod("display") display.xtable <- function(x, ...) { return(attr(x, "display", exact = TRUE)) } xtable/R/xtableMatharray.R0000644000176200001440000000263413050750607015215 0ustar liggesusers### xtableMatharray object ### To deal with numeric arrays such as a variance-covariance matrix ### From a request by James Curran, 16 October 2015 xtableMatharray <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { class(x) <- c("xtableMatharray","matrix") xtbl <- xtable.matrix(x, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...) class(xtbl) <- c("xtableMatharray","xtable","data.frame") return(xtbl) } print.xtableMatharray <- function(x, print.results = TRUE, format.args = getOption("xtable.format.args", NULL), scalebox = getOption("xtable.scalebox", NULL), comment = FALSE, timestamp = NULL, ...) { class(x) <- c("xtableMatharray","data.frame") print.xtable(x, floating = FALSE, tabular.environment = 'array', include.rownames = FALSE, include.colnames = FALSE, hline.after = NULL, print.results = print.results, format.args = format.args, scalebox = scalebox, comment = comment, timestamp = timestamp, ...) } xtable/R/xtableFtable.R0000644000176200001440000001737413050750607014471 0ustar liggesusers### ftable objects, requested by Charles Roosen ### Feature request #2248, 2/9/2012 xtableFtable <- function(x, caption = NULL, label = NULL, align = NULL, digits = 0, display = NULL, quote = FALSE, method = c("non.compact", "row.compact", "col.compact", "compact"), lsep = " $\\vert$ ", ...) { method <- match.arg(method) saveMethod <- method xDim <- dim(x) nRowVars <- length(attr(x, "row.vars")) nColVars <- length(attr(x, "col.vars")) if (nRowVars == 0){ if (method =="col.compact"){ method <- "non.compact" } else if (method == "compact"){ method <- "row.compact" } } if (nColVars == 0){ if (method =="row.compact"){ method <- "non.compact" } else if (method == "compact"){ method <- "col.compact" } } if (method == "non.compact"){ nCharCols <- nRowVars + 2 nCharRows <- nColVars + 1 } if (method == "row.compact"){ nCharCols <- nRowVars + 2 nCharRows <- nColVars } if (method == "col.compact"){ nCharCols <- nRowVars + 1 nCharRows <- nColVars + 1 } if (method == "compact"){ nCharCols <- nRowVars + 1 nCharRows <- nColVars } if(is.null(align)) { align <- c(rep("l", nCharCols - 1), "l |", rep("r", xDim[2])) } if(is.null(display)) { display <- c(rep("s", nCharCols), rep("d", xDim[2])) } attr(x, "ftableCaption") <- caption attr(x, "ftableLabel") <- label attr(x, "ftableAlign") <- align attr(x, "ftableDigits") <- digits attr(x, "quote") <- quote attr(x, "ftableDisplay") <- display attr(x, "method") <- method attr(x, "lsep") <- lsep attr(x, "nChars") <- c(nCharRows, nCharCols) class(x) <- c("xtableFtable", "ftable") return(x) } print.xtableFtable <- function(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = getOption("xtable.hline.after", NULL), NA.string = getOption("xtable.NA.string", ""), only.contents = getOption("xtable.only.contents", FALSE), add.to.row = getOption("xtable.add.to.row", NULL), sanitize.text.function = getOption("xtable.sanitize.text.function", as.is), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...) { if (type == "latex"){ ## extract the information in the attributes caption <- attr(x, "ftableCaption") label <- attr(x, "ftableLabel") align <- attr(x, "ftableAlign") digits <- attr(x, "ftableDigits") quote <- attr(x, "quote") digits <- attr(x, "ftabelDigits") method <- attr(x, "method") lsep <- attr(x, "lsep") nCharRows <- attr(x, "nChars")[1] nCharCols <- attr(x, "nChars")[2] nRowVars <- length(attr(x, "row.vars")) nColVars <- length(attr(x, "col.vars")) ## change class so format method will find format.ftable ## even though format.ftable is not exported from 'stats' class(x) <- "ftable" fmtFtbl <- format(x, quote = quote, digits = digits, method = method, lsep = lsep) attr(fmtFtbl, "caption") <- caption attr(fmtFtbl, "label") <- label ## sanitization is possible for row names and/or column names ## row names if (is.null(sanitize.rownames.function)) { fmtFtbl[nCharRows, 1:nRowVars] <- sanitize(fmtFtbl[nCharRows, 1:nRowVars], type = type) } else { fmtFtbl[nCharRows, 1:nRowVars] <- sanitize.rownames.function(fmtFtbl[nCharRows, 1:nRowVars]) } ## column names if (is.null(sanitize.colnames.function)) { fmtFtbl[1:nColVars, nCharCols - 1] <- sanitize(fmtFtbl[1:nColVars, nCharCols - 1], type = type) } else { fmtFtbl[1:nColVars, nCharCols - 1] <- sanitize.colnames.function(fmtFtbl[1:nColVars, nCharCols - 1]) } ## rotations are possible if (rotate.rownames){ fmtFtbl[1:dim(fmtFtbl)[1], 1:(nCharCols - 1)] <- paste0("\\begin{sideways} ", fmtFtbl[1:dim(fmtFtbl)[1], 1:(nCharCols - 1)], "\\end{sideways}") } if (rotate.colnames){ if (rotate.rownames){ fmtFtbl[1:(nCharRows), (nCharCols):dim(fmtFtbl)[2]] <- paste0("\\begin{sideways} ", fmtFtbl[1:(nCharRows), (nCharCols):dim(fmtFtbl)[2]], "\\end{sideways}") } else { fmtFtbl[1:(nCharRows), 1:dim(fmtFtbl)[2]] <- paste0("\\begin{sideways} ", fmtFtbl[1:(nCharRows), 1:dim(fmtFtbl)[2]], "\\end{sideways}") } } ## booktabs is incompatible with vertical lines in tables if (booktabs) align <- gsub("|","", align, fixed = TRUE) attr(fmtFtbl, "align") <- align attr(fmtFtbl, "digits") <- digits attr(fmtFtbl, "quote") <- quote attr(fmtFtbl, "display") <- display ## labels should be left aligned for (i in 1:nCharRows){ fmtFtbl[i, nCharCols:dim(fmtFtbl)[2]] <- paste0("\\multicolumn{1}{l}{ ", fmtFtbl[i, nCharCols:dim(fmtFtbl)[2]], "}") } if(is.null(hline.after)) { hline.after <- c(-1, nCharRows, dim(fmtFtbl)[1]) } print.xtable(fmtFtbl, hline.after = hline.after, include.rownames = FALSE, include.colnames = FALSE, booktabs = booktabs, sanitize.text.function = as.is, file = file, append = append, floating = floating, floating.environment = floating.environment, table.placement = table.placement, caption.placement = caption.placement, caption.width = caption.width, latex.environments = latex.environments, tabular.environment = tabular.environment, size = size, NA.string = NA.string, only.contents = only.contents, add.to.row = add.to.row,, math.style.negative = math.style.negative, math.style.exponents = math.style.exponents, print.results = print.results, format.args = format.args, scalebox = scalebox, width = width, comment = comment, timestamp = timestamp, ...) } else { stop("print.xtableFtable not yet implemented for this type") } } xtable/R/sanitize.R0000644000176200001440000000661613050750607013717 0ustar liggesuserssanitize <- function(str, type = "latex") { if(type == "latex"){ result <- str result <- gsub("\\\\", "SANITIZE.BACKSLASH", result) result <- gsub("$", "\\$", result, fixed = TRUE) result <- gsub(">", "$>$", result, fixed = TRUE) result <- gsub("<", "$<$", result, fixed = TRUE) result <- gsub("|", "$|$", result, fixed = TRUE) result <- gsub("{", "\\{", result, fixed = TRUE) result <- gsub("}", "\\}", result, fixed = TRUE) result <- gsub("%", "\\%", result, fixed = TRUE) result <- gsub("&", "\\&", result, fixed = TRUE) result <- gsub("_", "\\_", result, fixed = TRUE) result <- gsub("#", "\\#", result, fixed = TRUE) result <- gsub("^", "\\verb|^|", result, fixed = TRUE) result <- gsub("~", "\\~{}", result, fixed = TRUE) result <- gsub("SANITIZE.BACKSLASH", "$\\backslash$", result, fixed = TRUE) return(result) } else { result <- str result <- gsub("&", "&", result, fixed = TRUE) result <- gsub(">", ">", result, fixed = TRUE) result <- gsub("<", "<", result, fixed = TRUE) return(result) } } sanitize.numbers <- function(str, type, math.style.negative = FALSE, math.style.exponents = FALSE){ if (type == "latex"){ result <- str if ( math.style.negative ) { for(i in 1:length(str)) { result[i] <- gsub("-", "$-$", result[i], fixed = TRUE) } } if ( math.style.exponents ) { if (is.logical(math.style.exponents) && ! math.style.exponents ) { } else if (is.logical(math.style.exponents) && math.style.exponents || math.style.exponents == "$$" ) { for(i in 1:length(str)) { result[i] <- gsub("^\\$?(-?)\\$?([0-9.]+)[eE]\\$?(-?)\\+?\\$?0*(\\d+)$", "$\\1\\2 \\\\times 10^{\\3\\4}$", result[i]) } } else if (math.style.exponents == "ensuremath") { for(i in 1:length(str)) { result[i] <- gsub("^\\$?(-?)\\$?([0-9.]+)[eE]\\$?(-?)\\+?\\$?0*(\\d+)$", "\\\\ensuremath{\\1\\2 \\\\times 10^{\\3\\4}}", result[i]) } } else if (math.style.exponents == "UTF8" || math.style.exponents == "UTF-8") { for(i in 1:length(str)) { ## this code turns 1e5 into a UTF-8 representation of 1\times10^5 if (all(grepl("^\\$?(-?)\\$?([0-9.]+)[eE]\\$?(-?)\\+?\\$?0*(\\d+)$", result[i]))) { temp <- strsplit(result[i],"eE",result[i]) result[i] <- paste0(temp[1], "\u00d710", chartr("-1234567890", "\u207b\u00b9\u00b2\u00b3\u2074\u2075\u20746\u20747\u20748\u20749\u2070", temp[2])) } } } } return(result) } else { return(str) } } sanitize.final <- function(str, type){ if (type == "latex"){ return(str) } else { str$text <- gsub(" *", " ", str$text, fixed = TRUE) str$text <- gsub(' align="left"', "", str$text, fixed = TRUE) return(str) } } ### Some trivial helper functions ### Suggested by Stefan Edwards, sme@iysik.com ### Helper function for disabling sanitizing as.is <- function(str) {str} ### Helper function for embedding names in a math environment as.math <- function(str, ...) { paste0('$',str,'$', ...) } xtable/R/print.xtable.R0000644000176200001440000005764013050750607014506 0ustar liggesusers### xtable package ### ### Produce LaTeX and HTML tables from R objects. ### ### Copyright 2000-2013 David B. Dahl ### ### Maintained by David Scott ### ### This file is part of the `xtable' library for R and related languages. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ### MA 02111-1307, USA print.xtable <- function(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = getOption("xtable.hline.after", c(-1,0,nrow(x))), NA.string = getOption("xtable.NA.string", ""), include.rownames = getOption("xtable.include.rownames", TRUE), include.colnames = getOption("xtable.include.colnames", TRUE), only.contents = getOption("xtable.only.contents", FALSE), add.to.row = getOption("xtable.add.to.row", NULL), sanitize.text.function = getOption("xtable.sanitize.text.function", NULL), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...) { ## If caption is length 2, treat the second value as the "short caption" caption <- attr(x,"caption",exact = TRUE) short.caption <- NULL if (!is.null(caption) && length(caption) > 1){ short.caption <- caption[2] caption <- caption[1] } ## Claudio Agostinelli dated 2006-07-28 hline.after ## By default it print an \hline before and after the columns names ## independently they are printed or not and at the end of the table ## Old code that set hline.after should include c(-1, 0, nrow(x)) in the ## hline.after vector ## If you do not want any \hline inside the data, set hline.after to NULL ## PHEADER instead the string '\\hline\n' is used in the code ## Now hline.after counts how many time a position appear ## I left an automatic PHEADER in the longtable is this correct? ## Claudio Agostinelli dated 2006-07-28 include.rownames, ## include.colnames pos <- 0 if (include.rownames) pos <- 1 ## Claudio Agostinelli dated 2006-07-28 ## hline.after checks if (any(hline.after < -1) | any(hline.after > nrow(x))) { stop("'hline.after' must be inside [-1, ", nrow(x), "]") } ## Claudio Agostinelli dated 2006-07-28 ## add.to.row checks if (!is.null(add.to.row)) { if (is.list(add.to.row) && length(add.to.row) == 2) { if (is.null(names(add.to.row))) { names(add.to.row) <- c('pos', 'command') } else if (any(sort(names(add.to.row))!= c('command', 'pos'))) { stop("the names of the elements of 'add.to.row' must be 'pos' and 'command'") } if (is.list(add.to.row$pos) && is.vector(add.to.row$command, mode = 'character')) { if ((npos <- length(add.to.row$pos)) != length(add.to.row$command)) { stop("the length of 'add.to.row$pos' must be equal to the length of 'add.to.row$command'") } if (any(unlist(add.to.row$pos) < -1) | any(unlist(add.to.row$pos) > nrow(x))) { stop("the values in add.to.row$pos must be inside the interval [-1, ", nrow(x), "]") } } else { stop("the first argument ('pos') of 'add.to.row' must be a list, the second argument ('command') must be a vector of mode character") } } else { stop("'add.to.row' argument must be a list of length 2") } } else { add.to.row <- list(pos = list(), command = vector(length = 0, mode = "character")) npos <- 0 } ## Claudio Agostinelli dated 2006-07-28 add.to.row ## Add further commands at the end of rows if (type == "latex") { ## Original code before changes in version 1.6-1 ## PHEADER <- "\\hline\n" ## booktabs code from Matthieu Stigler , ## 1 Feb 2012 if(!booktabs){ PHEADER <- "\\hline\n" } else { ## This code replaced to fix bug #2309, David Scott, 8 Jan 2014 ## PHEADER <- ifelse(-1%in%hline.after, "\\toprule\n", "") ## if(0%in%hline.after) { ## PHEADER <- c(PHEADER, "\\midrule\n") ## } ## if(nrow(x)%in%hline.after) { ## PHEADER <- c(PHEADER, "\\bottomrule\n") ## } if (is.null(hline.after)){ PHEADER <- "" } else { hline.after <- sort(hline.after) PHEADER <- rep("\\midrule\n", length(hline.after)) if (hline.after[1] == -1) { PHEADER[1] <- "\\toprule\n" } if (hline.after[length(hline.after)] == nrow(x)) { PHEADER[length(hline.after)] <- "\\bottomrule\n" } } } } else { PHEADER <- "" } lastcol <- rep(" ", nrow(x)+2) if (!is.null(hline.after)) { ## booktabs change - Matthieu Stigler: fill the hline arguments ## separately, 1 Feb 2012 ## ## Code before booktabs change was: ## add.to.row$pos[[npos+1]] <- hline.after if (!booktabs){ add.to.row$pos[[npos+1]] <- hline.after } else { for(i in 1:length(hline.after)) { add.to.row$pos[[npos+i]] <- hline.after[i] } } add.to.row$command <- c(add.to.row$command, PHEADER) } if ( length(add.to.row$command) > 0 ) { for (i in 1:length(add.to.row$command)) { addpos <- add.to.row$pos[[i]] freq <- table(addpos) addpos <- unique(addpos) for (j in 1:length(addpos)) { lastcol[addpos[j]+2] <- paste(lastcol[addpos[j]+2], paste(rep(add.to.row$command[i], freq[j]), sep = "", collapse = ""), sep = " ") } } } if (length(type)>1) stop("\"type\" must have length 1") type <- tolower(type) if (!all(!is.na(match(type, c("latex","html"))))) { stop("\"type\" must be in {\"latex\", \"html\"}") } ## Disabling the check on known floating environments as many users ## want to use additional environments. ## if (!all(!is.na(match(floating.environment, ## c("table","table*","sidewaystable", ## "margintable"))))) { ## stop("\"type\" must be in {\"table\", \"table*\", \"sidewaystable\", \"margintable\"}") ## } if (("margintable" %in% floating.environment) & (!is.null(table.placement))) { warning("margintable does not allow for table placement; setting table.placement to NULL") table.placement <- NULL } if (!is.null(table.placement) && !all(!is.na(match(unlist(strsplit(table.placement, split = "")), c("H","h","t","b","p","!"))))) { stop("\"table.placement\" must contain only elements of {\"h\",\"t\",\"b\",\"p\",\"!\"}") } if (!all(!is.na(match(caption.placement, c("bottom","top"))))) { stop("\"caption.placement\" must be either {\"bottom\",\"top\"}") } if (type == "latex") { BCOMMENT <- "% " ECOMMENT <- "\n" ## See e-mail from "John S. Walker " dated 5-19-2003 ## regarding "texfloat" ## See e-mail form "Fernando Henrique Ferraz P. da Rosa" ## " dated 10-28-2005 regarding "longtable" if ( tabular.environment == "longtable" & floating == TRUE ) { warning("Attempt to use \"longtable\" with floating = TRUE. Changing to FALSE.") floating <- FALSE } if ( floating == TRUE ) { ## See e-mail from "Pfaff, Bernhard " ## dated 7-09-2003 regarding "suggestion for an amendment of ## the source" ## See e-mail from "Mitchell, David" ## " dated 2003-07-09 regarding ## "Additions to R xtable package" ## See e-mail from "Garbade, Sven" ## dated 2006-05-22 ## regarding the floating environment. BTABLE <- paste("\\begin{", floating.environment, "}", ifelse(!is.null(table.placement), paste("[", table.placement, "]", sep = ""), ""), "\n", sep = "") if ( is.null(latex.environments) || (length(latex.environments) == 0) ) { BENVIRONMENT <- "" EENVIRONMENT <- "" } else { BENVIRONMENT <- "" EENVIRONMENT <- "" if ("center" %in% latex.environments){ BENVIRONMENT <- paste(BENVIRONMENT, "\\centering\n", sep = "") } for (i in 1:length(latex.environments)) { if (latex.environments[i] == "") next if (latex.environments[i] != "center"){ BENVIRONMENT <- paste(BENVIRONMENT, "\\begin{", latex.environments[i], "}\n", sep = "") EENVIRONMENT <- paste("\\end{", latex.environments[i], "}\n", EENVIRONMENT, sep = "") } } } ETABLE <- paste("\\end{", floating.environment, "}\n", sep = "") } else { BTABLE <- "" ETABLE <- "" BENVIRONMENT <- "" EENVIRONMENT <- "" } tmp.index.start <- 1 if ( ! include.rownames ) { while ( attr(x, "align", exact = TRUE)[tmp.index.start] == '|' ) tmp.index.start <- tmp.index.start + 1 tmp.index.start <- tmp.index.start + 1 } ## Added "width" argument for use with "tabular*" or ## "tabularx" environments - CR, 7/2/12 if (is.null(width)){ WIDTH <-"" } else if (is.element(tabular.environment, c("tabular", "longtable"))){ warning("Ignoring 'width' argument. The 'tabular' and 'longtable' environments do not support a width specification. Use another environment such as 'tabular*' or 'tabularx' to specify the width.") WIDTH <- "" } else { WIDTH <- paste("{", width, "}", sep = "") } BTABULAR <- paste("\\begin{", tabular.environment, "}", WIDTH, "{", paste(c(attr(x, "align", exact = TRUE)[ tmp.index.start:length(attr(x, "align", exact = TRUE))], "}\n"), sep = "", collapse = ""), sep = "") ## fix 10-26-09 (robert.castelo@upf.edu) the following ## 'if' condition is added here to support ## a caption on the top of a longtable if (tabular.environment == "longtable" && caption.placement == "top") { if (is.null(short.caption)){ BCAPTION <- "\\caption{" } else { BCAPTION <- paste("\\caption[", short.caption, "]{", sep = "") } ECAPTION <- "} \\\\ \n" if ((!is.null(caption)) && (type == "latex")) { BTABULAR <- paste(BTABULAR, BCAPTION, caption, ECAPTION, sep = "") } } ## Claudio Agostinelli dated 2006-07-28 ## add.to.row position -1 BTABULAR <- paste(BTABULAR, lastcol[1], sep = "") ## the \hline at the end, if present, is set in full matrix ETABULAR <- paste("\\end{", tabular.environment, "}\n", sep = "") ## Add scalebox - CR, 7/2/12 if (!is.null(scalebox)){ BTABULAR <- paste("\\scalebox{", scalebox, "}{\n", BTABULAR, sep = "") ETABULAR <- paste(ETABULAR, "}\n", sep = "") } ## BSIZE contributed by Benno in e-mail ## dated Wednesday, December 01, 2004 if (is.null(size) || !is.character(size)) { BSIZE <- "" ESIZE <- "" } else { if(length(grep("^\\\\", size)) == 0){ size <- paste("\\", size, sep = "") } ## Change suggested by Claudius Loehnert reported in Bug #6260 ## BSIZE <- paste("{", size, "\n", sep = "") ## ESIZE <- "{\n" BSIZE <- paste("\\begingroup", size, "\n", sep = "") ESIZE <- "\\endgroup\n" } BLABEL <- "\\label{" ELABEL <- "}\n" ## Added caption width (jeff.laake@nooa.gov) if(!is.null(caption.width)){ BCAPTION <- paste("\\parbox{",caption.width,"}{",sep="") ECAPTION <- "}" } else { BCAPTION <- NULL ECAPTION <- NULL } if (is.null(short.caption)){ BCAPTION <- paste(BCAPTION,"\\caption{",sep="") } else { BCAPTION <- paste(BCAPTION,"\\caption[", short.caption, "]{", sep="") } ECAPTION <- paste(ECAPTION,"} \n",sep="") BROW <- "" EROW <- " \\\\ \n" BTH <- "" ETH <- "" STH <- " & " BTD1 <- " & " BTD2 <- "" BTD3 <- "" ETD <- "" } else { BCOMMENT <- "\n" BTABLE <- paste("
    \n", sep = "") ETABLE <- "
    \n" BENVIRONMENT <- "" EENVIRONMENT <- "" BTABULAR <- "" ETABULAR <- "" BSIZE <- "" ESIZE <- "" BLABEL <- "
    \n" BCAPTION <- paste(" ", sep = "") ECAPTION <- " \n" BROW <- "" EROW <- " \n" BTH <- " " ETH <- " " STH <- " " BTD1 <- " ## in e-mail dated Wednesday, January 17, 2007 BTD2[regexpr("^p", BTD2)>0] <- "left" BTD2[BTD2 == "r"] <- "right" BTD2[BTD2 == "l"] <- "left" BTD2[BTD2 == "c"] <- "center" BTD3 <- "\"> " ETD <- " " } result <- string("", file = file, append = append) info <- R.Version() ## modified Claudio Agostinelli dated 2006-07-28 ## to set automatically the package version if (comment){ result <- result + BCOMMENT + type + " table generated in " + info$language + " " + info$major + "." + info$minor + " by xtable " + packageDescription('xtable')$Version + " package" + ECOMMENT if (!is.null(timestamp)){ result <- result + BCOMMENT + timestamp + ECOMMENT } } ## Claudio Agostinelli dated 2006-07-28 only.contents if (!only.contents) { result <- result + BTABLE result <- result + BENVIRONMENT if ( floating == TRUE ) { if ((!is.null(caption)) && (type == "html" ||caption.placement == "top")) { result <- result + BCAPTION + caption + ECAPTION } if (!is.null(attr(x, "label", exact = TRUE)) && (type == "latex" && caption.placement == "top")) { result <- result + BLABEL + attr(x, "label", exact = TRUE) + ELABEL } } result <- result + BSIZE result <- result + BTABULAR } ## Claudio Agostinelli dated 2006-07-28 ## include.colnames, include.rownames if (include.colnames) { result <- result + BROW + BTH if (include.rownames) { result <- result + STH } ## David G. Whiting in e-mail 2007-10-09 if (is.null(sanitize.colnames.function)) { CNAMES <- sanitize(names(x), type = type) } else { CNAMES <- sanitize.colnames.function(names(x)) } if (rotate.colnames) { ##added by Markus Loecher, 2009-11-16 CNAMES <- paste("\\begin{sideways}", CNAMES, "\\end{sideways}") } result <- result + paste(CNAMES, collapse = STH) result <- result + ETH + EROW } cols <- matrix("", nrow = nrow(x), ncol = ncol(x)+pos) if (include.rownames) { ## David G. Whiting in e-mail 2007-10-09 if (is.null(sanitize.rownames.function)) { RNAMES <- sanitize(row.names(x), type = type) } else { RNAMES <- sanitize.rownames.function(row.names(x)) } if (rotate.rownames) { ##added by Markus Loecher, 2009-11-16 RNAMES <- paste("\\begin{sideways}", RNAMES, "\\end{sideways}") } cols[, 1] <- RNAMES } ## Begin vectorizing the formatting code by Ian Fellows [ian@fellstat.com] ## 06 Dec 2011 ## ## disp <- function(y) { ## if (is.factor(y)) { ## y <- levels(y)[y] ## } ## if (is.list(y)) { ## y <- unlist(y) ## } ## return(y) ## } varying.digits <- is.matrix( attr( x, "digits", exact = TRUE ) ) ## Code for letting "digits" be a matrix was provided by ## Arne Henningsen ## in e-mail dated 2005-06-04. ##if( !varying.digits ) { ## modified Claudio Agostinelli dated 2006-07-28 ## attr(x,"digits") <- matrix( attr( x, "digits",exact=TRUE ), ## nrow = nrow(x), ncol = ncol(x)+1, byrow = TRUE ) ##} for(i in 1:ncol(x)) { xcol <- x[, i] if(is.factor(xcol)) xcol <- as.character(xcol) if(is.list(xcol)) xcol <- sapply(xcol, unlist) ina <- is.na(xcol) is.numeric.column <- is.numeric(xcol) if(is.character(xcol)) { cols[, i+pos] <- xcol } else { if (is.null(format.args)){ format.args <- list() } if (is.null(format.args$decimal.mark)){ format.args$decimal.mark <- options()$OutDec } if(!varying.digits){ curFormatArgs <- c(list( x = xcol, format = ifelse(attr(x, "digits", exact = TRUE )[i+1] < 0, "E", attr(x, "display", exact = TRUE )[i+1]), digits = abs(attr(x, "digits", exact = TRUE )[i+1])), format.args) cols[, i+pos] <- do.call("formatC", curFormatArgs) }else{ for( j in 1:nrow( cols ) ) { curFormatArgs <- c(list( x = xcol[j], format = ifelse(attr(x, "digits", exact = TRUE )[j, i+1] < 0, "E", attr(x, "display", exact = TRUE )[i+1]), digits = abs(attr(x, "digits", exact = TRUE )[j, i+1])), format.args) cols[j, i+pos] <- do.call("formatC", curFormatArgs) } } } ## End Ian Fellows changes if ( any(ina) ) cols[ina, i+pos] <- NA.string ## Based on contribution from Jonathan Swinton ## in e-mail dated Wednesday, January 17, 2007 if ( is.numeric.column ) { cols[, i+pos] <- sanitize.numbers(cols[, i+pos], type = type, math.style.negative = math.style.negative, math.style.exponents = math.style.exponents) } else { if (is.null(sanitize.text.function)) { cols[, i+pos] <- sanitize(cols[, i+pos], type = type) } else { cols[, i+pos] <- sanitize.text.function(cols[, i+pos]) } } } multiplier <- 5 full <- matrix("", nrow = nrow(x), ncol = multiplier*(ncol(x)+pos)+2) full[, 1] <- BROW full[, multiplier*(0:(ncol(x)+pos-1))+2] <- BTD1 full[, multiplier*(0:(ncol(x)+pos-1))+3] <- BTD2 full[, multiplier*(0:(ncol(x)+pos-1))+4] <- BTD3 full[, multiplier*(0:(ncol(x)+pos-1))+5] <- cols full[, multiplier*(0:(ncol(x)+pos-1))+6] <- ETD full[, multiplier*(ncol(x)+pos)+2] <- paste(EROW, lastcol[-(1:2)], sep = " ") if (type == "latex") full[, 2] <- "" result <- result + lastcol[2] + paste(t(full), collapse = "") if (!only.contents) { if (tabular.environment == "longtable") { ## booktabs change added the if() - 1 Feb 2012 if(!booktabs) { result <- result + PHEADER } ## fix 10-27-09 Liviu Andronic (landronimirc@gmail.com) the ## following 'if' condition is inserted in order to avoid ## that bottom caption interferes with a top caption of a longtable if(caption.placement == "bottom"){ if ((!is.null(caption)) && (type == "latex")) { result <- result + BCAPTION + caption + ECAPTION } } if (!is.null(attr(x, "label", exact = TRUE))) { result <- result + BLABEL + attr(x, "label", exact = TRUE) + ELABEL } ETABULAR <- "\\end{longtable}\n" } result <- result + ETABULAR result <- result + ESIZE if ( floating == TRUE ) { if ((!is.null(caption)) && (type == "latex" && caption.placement == "bottom")) { result <- result + BCAPTION + caption + ECAPTION } if (!is.null(attr(x, "label", exact = TRUE)) && caption.placement == "bottom") { result <- result + BLABEL + attr(x, "label", exact = TRUE) + ELABEL } } result <- result + EENVIRONMENT result <- result + ETABLE } result <- sanitize.final(result, type = type) if (print.results){ print(result) } return(invisible(result$text)) } "+.string" <- function(x, y) { x$text <- paste(x$text, as.string(y)$text, sep = "") return(x) } print.string <- function(x, ...) { cat(x$text, file = x$file, append = x$append) return(invisible()) } string <- function(text, file = "", append = FALSE) { x <- list(text = text, file = file, append = append) class(x) <- "string" return(x) } as.string <- function(x, file = "", append = FALSE) { if (is.null(attr(x, "class", exact = TRUE))) switch(data.class(x), character = return(string(x, file, append)), numeric = return(string(as.character(x), file, append)), stop("Cannot coerce argument to a string")) if (class(x) == "string") return(x) stop("Cannot coerce argument to a string") } is.string <- function(x) { return(class(x) == "string") } xtable/R/xtable.R0000644000176200001440000004666213457044310013353 0ustar liggesusers### xtable package ### ### Produce LaTeX and HTML tables from R objects. ### ### Copyright 2000-2013 David B. Dahl ### ### This file is part of the `xtable' library for R and related languages. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ### MA 02111-1307, USA xtable <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { UseMethod("xtable") } ### data.frame and matrix objects xtable.data.frame <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { logicals <- unlist(lapply(x, is.logical)) ##x[, logicals] <- lapply(x[, logicals], as.character) ## Patch for logicals bug, no 1911 ## David Scott, , 2012-08-10 x[, logicals] <- lapply(x[, logicals, drop = FALSE], as.character) characters <- unlist(lapply(x, is.character)) factors <- unlist(lapply(x, is.factor)) ints <- sapply(x, is.integer) class(x) <- c("xtable","data.frame") caption(x) <- caption label(x) <- label if(auto && is.null(align)) align <- xalign(x) if(auto && is.null(digits)) digits <- xdigits(x) if(auto && is.null(display)) display <- xdisplay(x) align(x) <- switch(1+is.null(align), align, c("r",c("r","l")[(characters|factors)+1])) digits(x) <- switch(1+is.null(digits), digits, c(0,rep(2,ncol(x)))) ## Patch from Seth Falcon , 18-May-2007 if (is.null(display)) { display <- rep("f", ncol(x)) display[ints] <- "d" display[characters | factors] <- "s" display <- c("s", display) } display(x) <- display return(x) } xtable.matrix <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.data.frame(data.frame(x, check.names = FALSE), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### table objects (of 1 or 2 dimensions) by Guido Gay, 9 Feb 2007 ### Fixed to pass R checks by DBD, 9 May 2007 xtable.table <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { if (length(dim(x)) == 1) { return(xtable.matrix(matrix(x, dimnames = list(rownames(x), names(dimnames(x)))), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } else if (length(dim(x))==2) { return(xtable.matrix(matrix(x, ncol = dim(x)[2], nrow = dim(x)[1], dimnames = list(rownames(x), colnames(x))), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } else { stop("xtable.table is not implemented for tables of > 2 dimensions") } } ### anova objects xtable.anova <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { suggested.digits <- c(0,rep(2, ncol(x))) suggested.digits[grep("Pr\\(>", names(x))+1] <- 4 suggested.digits[grep("P\\(>", names(x))+1] <- 4 suggested.digits[grep("Df", names(x))+1] <- 0 class(x) <- c("xtable","data.frame") caption(x) <- caption label(x) <- label if(auto && is.null(align)) align <- xalign(x) if(auto && is.null(digits)) digits <- xdigits(x) if(auto && is.null(display)) display <- xdisplay(x) align(x) <- switch(1+is.null(align), align, c("l",rep("r", ncol(x)))) digits(x) <- switch(1+is.null(digits), digits, suggested.digits) display(x) <- switch(1+is.null(display), display, c("s",rep("f", ncol(x)))) return(x) } ### aov objects xtable.aov <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.anova(anova(x, ...), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } xtable.summary.aov <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.anova(x[[1]], caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } xtable.summary.aovlist <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { for (i in 1:length(x)) { if (i == 1) { result <- xtable.summary.aov(x[[i]], caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...) } else { result <- rbind(result, xtable.anova(x[[i]][[1]], caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } } return(result) } xtable.aovlist <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.summary.aovlist(summary(x), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### lm objects xtable.lm <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.summary.lm(summary(x), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } xtable.summary.lm <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { x <- data.frame(x$coef, check.names = FALSE) class(x) <- c("xtable","data.frame") caption(x) <- caption label(x) <- label if(auto && is.null(align)) align <- xalign(x) if(auto && is.null(digits)) digits <- xdigits(x) if(auto && is.null(display)) display <- xdisplay(x) align(x) <- switch(1+is.null(align), align, c("r","r","r","r","r")) digits(x) <- switch(1+is.null(digits), digits, c(0,4,4,2,4)) display(x) <- switch(1+is.null(display), display, c("s","f","f","f","f")) return(x) } ### glm objects xtable.glm <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.summary.glm(summary(x), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } xtable.summary.glm <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable.summary.lm(x, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### prcomp objects xtable.prcomp <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { x <- data.frame(x$rotation, check.names = FALSE) class(x) <- c("xtable","data.frame") caption(x) <- caption label(x) <- label if(auto && is.null(align)) align <- xalign(x) if(auto && is.null(digits)) digits <- xdigits(x) if(auto && is.null(display)) display <- xdisplay(x) align(x) <- switch(1+is.null(align), align, c("r",rep("r", ncol(x)))) digits(x) <- switch(1+is.null(digits), digits, c(0,rep(4, ncol(x)))) display(x) <- switch(1+is.null(display), display, c("s",rep("f", ncol(x)))) return(x) } xtable.summary.prcomp <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { x <- data.frame(x$importance, check.names = FALSE) class(x) <- c("xtable","data.frame") caption(x) <- caption label(x) <- label if(auto && is.null(align)) align <- xalign(x) if(auto && is.null(digits)) digits <- xdigits(x) if(auto && is.null(display)) display <- xdisplay(x) align(x) <- switch(1+is.null(align), align, c("r",rep("r", ncol(x)))) digits(x) <- switch(1+is.null(digits), digits, c(0,rep(4, ncol(x)))) display(x) <- switch(1+is.null(display), display, c("s",rep("f", ncol(x)))) return(x) } ### Slightly modified version of xtable.coxph contributed on r-help by ### Date: Wed, 2 Oct 2002 17:47:56 -0500 (CDT) ### From: Jun Yan ### Subject: Re: [R] xtable for Cox model output xtable.coxph <- function (x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { cox <- x beta <- cox$coef se <- sqrt(diag(cox$var)) if (is.null(cox$naive.var)) { tmp <- cbind(beta, exp(beta), se, beta/se, 1 - pchisq((beta/se)^2, 1)) dimnames(tmp) <- list(names(beta), c("coef", "exp(coef)", "se(coef)", "z", "p")) } else { tmp <- cbind( beta, exp(beta), se, beta/se, signif(1 - pchisq((beta/se)^2, 1), digits - 1)) dimnames(tmp) <- list(names(beta), c("coef", "exp(coef)", "robust se", "z", "p")) } return(xtable(tmp, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### Additional method: xtable.ts ### Contributed by David Mitchell (davidm@netspeed.com.au) ### Date: July 2003 xtable.ts <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { if (inherits(x, "ts") && !is.null(ncol(x))) { ## COLNAMES <- paste(colnames(x)); tp.1 <- trunc(time(x)) tp.2 <- trunc(cycle(x)) day.abb <- c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat") ROWNAMES <- switch(frequency(x), tp.1, "Arg2", "Arg3", # Dummy arguments paste(tp.1, c("Q1", "Q2", "Q3", "Q4")[tp.2], sep = " "), "Arg5", "Arg6", paste("Wk.", tp.1, " ", day.abb[tp.2], sep = ""), "Arg8", "Arg9", "Arg10", "Arg11", paste(tp.1, month.abb[tp.2], sep = " ")) tmp <- data.frame(x, row.names = ROWNAMES); } else if (inherits(x, "ts") && is.null(ncol(x))) { COLNAMES <- switch(frequency(x), "Value", "Arg2", "Arg3", # Dummy arguments c("Q1", "Q2", "Q3", "Q4"), "Arg5", "Arg6", day.abb, "Arg8", "Arg9", "Arg10", "Arg11", month.abb) ROWNAMES <- seq(from = start(x)[1], to = end(x)[1]) tmp <- data.frame(matrix(c(rep(NA, start(x)[2] - 1), x, rep(NA, frequency(x) - end(x)[2])), ncol = frequency(x), byrow = TRUE), row.names = ROWNAMES) names(tmp) <- COLNAMES } return(xtable(tmp, caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### Suggested by Ajay Narottam Shah in e-mail 2006/07/22 xtable.zoo <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) { return(xtable(as.ts(x), caption = caption, label = label, align = align, digits = digits, display = display, auto = auto, ...)) } ### Date: Fri, 29 May 2015 11:41:04 +0200 ### From: Martin G. ### Subject: [xtable] Code for spdep, splm and sphet objects outputs ### package spdep ### sarlm objects ## xtable.sarlm <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.sarlm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.sarlm <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ## ...) { ## x <- data.frame(x$Coef, check.names = FALSE) ## class(x) <- c("xtable","data.frame") ## caption(x) <- caption ## label(x) <- label ## if(auto && is.null(align)) align <- xalign(x) ## if(auto && is.null(digits)) digits <- xdigits(x) ## if(auto && is.null(display)) display <- xdisplay(x) ## align(x) <- switch(1+is.null(align), align, c("r","r","r","r","r")) ## digits(x) <- switch(1+is.null(digits), digits, c(0,4,4,2,4)) ## display(x) <- switch(1+is.null(display), display, c("s","f","f","f","f")) ## return(x) ## } ## ### spautolm objects: added by David Scott, 6/1/2016, after suggestion by ## ### Guido Schulz ## ### Date: Wed, 29 Apr 2015 10:45:16 +0200 ## ### Guido Schulz ## xtable.spautolm <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.sarlm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.spautolm <- function(x, caption = NULL, label = NULL, ## align = NULL, digits = NULL, ## display = NULL, auto = FALSE, ...) { ## return(xtable.summary.sarlm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## ### gmsar objects ## xtable.gmsar <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.sarlm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.gmsar <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, ## auto = FALSE, ...) { ## return(xtable.summary.sarlm(x, caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## ### stsls objects ## xtable.stsls <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.sarlm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.stsls <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, ## auto = FALSE, ...) { ## return(xtable.summary.sarlm(x, caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## ### pred.sarlm objects ## xtable.sarlm.pred <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, ## auto = FALSE, ...) { ## return(xtable(as.data.frame(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## ### lagImpact objects ## xtable.lagImpact <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, ## auto = FALSE, ...) { ## requireNamespace('spdep') ## lagImpactMat <- get('lagImpactMat', environment(spdep::spdep)) ## xtable(lagImpactMat(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...) ## } ### package splm ### splm objects ## xtable.splm <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.splm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.splm <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ## ...) { ## x <- data.frame(x$CoefTable, check.names = FALSE) ## class(x) <- c("xtable","data.frame") ## caption(x) <- caption ## label(x) <- label ## if(auto && is.null(align)) align <- xalign(x) ## if(auto && is.null(digits)) digits <- xdigits(x) ## if(auto && is.null(display)) display <- xdisplay(x) ## align(x) <- switch(1+is.null(align), align, c("r","r","r","r","r")) ## digits(x) <- switch(1+is.null(digits), digits, c(0,4,4,2,4)) ## display(x) <- switch(1+is.null(display), display, c("s","f","f","f","f")) ## return(x) ## } ### package sphet ### sphet objects ## xtable.sphet <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, auto = FALSE, ...) { ## return(xtable.summary.splm(summary(x), caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } ## xtable.summary.sphet <- function(x, caption = NULL, label = NULL, align = NULL, ## digits = NULL, display = NULL, ## auto = FALSE, ...) { ## return(xtable.summary.splm(x, caption = caption, label = label, ## align = align, digits = digits, ## display = display, auto = auto, ...)) ## } xtable/vignettes/0000755000176200001440000000000013457046162013551 5ustar liggesusersxtable/vignettes/xtableGallery.Rnw0000644000176200001440000005020713341601440017030 0ustar liggesusers%\VignetteIndexEntry{xtable Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper,height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{The \pkg{xtable} Gallery} \author{Jonathan Swinton and others} \maketitle \tableofcontents \newpage \section{Introduction} This document gives a gallery of tables which can be made using the \pkg{xtable} package to create \LaTeX\ output. It doubles as a regression check for the package. <>= library(knitr) opts_chunk$set(fig.path='figdir/fig', debug=TRUE, echo=TRUE) set.seed(1234) @ The first step is to load the package and set an option for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") @ \section{Gallery} \subsection{Data frame} <>= data(tli) xtable(tli[1:10, ]) @ \subsection{Matrix} <>= design.matrix <- model.matrix(~ sex*grade, data = tli[1:10, ]) xtable(design.matrix, digits = 0) @ \newpage \subsection{aov} <>= fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) xtable(fm1) @ \subsection{lm} <>= fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) xtable(fm2) @ \subsubsection{Anova table (one model)} <>= xtable(anova(fm2)) @ \subsubsection{Anova table (two models)} <>= fm2b <- lm(tlimth ~ ethnicty, data = tli) xtable(anova(fm2b, fm2)) @ \subsubsection{Anova list} <>= Block <- gl(8, 4) A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,0,1)) B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1, 0,0,1,1,0,0,1,1,0,0,1,1)) C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1, 1,0,1,0,0,0,1,1,1,1,0,0)) Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449, 272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334, 131, 103, 445, 437, 324, 361, 302, 272) aovdat <- data.frame(Block, A, B, C, Yield) old <- getOption("contrasts") options(contrasts = c("contr.helmert", "contr.poly")) (fit <- aov(Yield ~ A*B*C + Error(Block), data = aovdat)) class(fit) summary(fit) options(contrasts = old) @ \p <>= xtable(fit) @ \newpage \subsection{glm} <>= fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial) xtable(fm3) @ \subsubsection{Analysis of deviance} <>= xtable(anova(fm3)) @ \subsection{prcomp} <>= pr1 <- prcomp(USArrests) xtable(pr1) @ \p <>= xtable(summary(pr1)) @ <>= # pr2 <- princomp(USArrests) # xtable(pr2) @ \newpage \subsection{Time series} <>= temp.ts <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) temp.table <- xtable(temp.ts, digits = 0) temp.table @ \subsection{Flat tables} \label{sec:flat-tables} See the \textbf{Details} section of the help for \code{ftable} for a description of these tables, which are flat versions of multi-dimensional contingency tables. They require special methods to enable them to be printed using \pkg{xtable}. <>= data(mtcars) mtcars$cyl <- factor(mtcars$cyl, levels = c("4","6","8"), labels = c("four","six","eight")) tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) tbl @ %def Here is the \LaTeX{} produced: <>= xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) @ %def And here is a basic flat table: <>= xftbl <- xtableFtable(tbl) print.xtableFtable(xftbl) @ %def This illustrates the \code{method} argument: <>= xftbl <- xtableFtable(tbl, method = "col.compact") print.xtableFtable(xftbl, rotate.rownames = TRUE) @ %def Booktabs is incompatible with vertical lines in tables, so the vertical dividing line is removed. <>= xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) @ %def \p Row and column variable names can be formatted specially using sanitization, and row and column variable names and labels can be rotated. If special formatting is required for row and column labels, that can be done as a workaround by redefining the data and associated labels. <>= italic <- function(x){ paste0('{\\emph{', x, '}}') } mtcars$cyl <- factor(mtcars$cyl, levels = c("four","six","eight"), labels = c("four",italic("six"),"eight")) large <- function(x){ paste0('{\\Large ', x, '}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) xftbl <- xtableFtable(tbl, method = "row.compact") print.xtableFtable(xftbl, sanitize.rownames.function = large, sanitize.colnames.function = bold, rotate.colnames = TRUE, rotate.rownames = TRUE) @ %def \newpage <>= # ## Demonstrate saving to file # for(i in c("latex", "html")) { # outFileName <- paste("xtable.", ifelse(i=="latex", "tex", i), sep = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = NULL) # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "") # print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, # latex.environments = "center") # print(xtable(anova(glm.D93, test = "Chisq")), # type = i, file = outFileName, # append = TRUE) # print(xtable(anova(glm.D93)), hline.after = c(1), # size = "small", type = i, # file = outFileName, append = TRUE) # # print(xtable(pr2), type = i, file = outFileName, append = TRUE) # } @ \section{Automatic formatting} \subsection{Suggest alignment, digits, and display} The functions \code{xalign}, \code{xdigits}, and \code{xdisplay} are useful for formatting tables in a sensible way. Consider the output produced by the default formatting. <>= data(mtcars) dat <- mtcars[1:3, 1:6] x <- xtable(dat) x @ \p Now change the default alignment, digits and display using helper functions \code{xalign}, \code{xdigits}, and \code{xdisplay}. This produces a better format as shown below. <>= align(x) <- xalign(x) digits(x) <- xdigits(x) display(x) <- xdisplay(x) x @ \subsection{Shorthand notation} For convenience, the three `autoformat' functions (\code{xalign}, \code{xdigits}, and \code{xdisplay}) can be applied together when an \code{xtable} is created, using the \code{auto} argument: <>= xtable(dat, auto = TRUE) @ \p Similarly, the \code{autoformat} function can be used to postprocess an existing \code{xtable}: <>= x <- xtable(dat) autoformat(x) @ \newpage \subsection{Math-Style Exponents} If you prefer $5 \times 10^5$ in your tables to 5e5, the \code{math.style.exponents} option to \code{print.xtable} is useful: <>= print(xtable(data.frame(text = c("foo","bar"), googols = c(10e10,50e10), small = c(8e-24,7e-5), row.names = c("A","B")), display = c("s","s","g","g")), math.style.exponents = TRUE) @ This option also supports the values \code{ensuremath} which uses \code{\char`\\ensuremath} instead of \code{\$\$} and \code{UTF-8} which uses UTF-8 to approximate the \LaTeX\ typesetting. \section{Sanitization} <>= insane <- data.frame(Name = c("Ampersand","Greater than","Less than", "Underscore","Per cent","Dollar", "Backslash","Hash","Caret","Tilde", "Left brace","Right brace"), Character = I(c("&",">","<","_","%","$", "\\","#","^","~","{","}"))) colnames(insane)[2] <- paste(insane[, 2], collapse = "") xtable(insane) @ \p Sometimes you might want to have your own sanitization function. <>= wanttex <- xtable(data.frame(Column = paste("Value_is $10^{-",1:3,"}$", sep = ""))) print(wanttex, sanitize.text.function = function(str) gsub("_", "\\_", str, fixed = TRUE)) @ \p Sanitization can be useful in formatting column headings and row names: <>= dat <- mtcars[1:3, 1:6] large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } @ %def <>= print(xtable(dat), sanitize.rownames.function = italic, sanitize.colnames.function = large, booktabs = TRUE) @ %def \newpage \subsection{Markup in tables} Markup can be included in tables, including in column and row names, by using a custom \code{sanitize.text.function}. <>= mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4) rownames(mat) <- "$y_{t-1}$" colnames(mat) <- c("$R^2$", "$\\bar{x}$", "F-stat", "S.E.E", "DW") mat <- xtable(mat) print(mat, sanitize.text.function = function(x) {x}) @ % By David Dahl to demonstrate contribution from David Whitting, 2007-10-09. \p You can also have sanitize functions that are specific to column or row names. In the table below, the row name is not sanitized but column names and table elements are. <>= money <- matrix(c("$1,000","$900","$100"), ncol = 3, dimnames = list("$\\alpha$", c("Income (US$)","Expenses (US$)", "Profit (US$)"))) print(xtable(money), sanitize.rownames.function = function(x) {x}) @ \section{Format examples} \subsection{Adding a centering environment} <>= print(xtable(anova(fm3), caption = "\\tt latex.environments = \"\""), floating = TRUE, latex.environments = "") print(xtable(anova(fm3), caption = "\\tt latex.environments = \"center\""), floating = TRUE, latex.environments = "center") @ \newpage \subsection{Column alignment} <>= tli.table <- xtable(tli[1:10, ]) align(tli.table) <- rep("r", 6) tli.table @ \subsubsection{Left aligned strings with column lines} <>= align(tli.table) <- "|rrl|l|lr|" tli.table @ \subsubsection{Fixed width columns} <>= align(tli.table) <- "|rr|lp{3cm}l|r|" tli.table @ \newpage \subsection{Number of digits} One number for all columns, <>= display(tli.table)[c(2,6)] <- "f" digits(tli.table) <- 3 tli.table @ \p or one for each column, including the row names, <>= digits(tli.table) <- 1:(ncol(tli)+1) tli.table @ \p or as a full matrix. <>= digits(tli.table) <- matrix(0:4, nrow = 10, ncol = ncol(tli)+1) tli.table @ \newpage \subsection{Suppress row/column names} \subsubsection{Suppress row names} <>= tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE) @ \p If you want a vertical line on the left, you need to change the \code{align} attribute. <>= align(tli.table) <- "|r|r|lp{3cm}l|r|" print(tli.table, include.rownames = FALSE) @ \p Revert the alignment to what is was before. <<>>= align(tli.table) <- "|rr|lp{3cm}l|r|" @ \newpage \subsubsection{Suppress column names} <>= print(tli.table, include.colnames = FALSE) @ \p Note the doubled header lines which can be suppressed. <>= print(tli.table, include.colnames = FALSE, hline.after = c(0,nrow(tli.table))) @ \subsubsection{Suppress row and column names} <>= print(tli.table, include.colnames = FALSE, include.rownames = FALSE) @ \newpage \subsection{Rotate row/column names} The \code{rotate.rownames} and \code{rotate.colnames} arguments can be used to rotate the row and/or column names. This requires \verb|\usepackage{rotating}| in the \LaTeX\ preamble. <>= print(tli.table, rotate.rownames = TRUE, rotate.colnames = TRUE) @ \newpage \subsection{Horizontal lines} \subsubsection{Line locations} Use the \code{hline.after} argument to specify the position of the horizontal lines. <>= print(xtable(anova(fm3)), hline.after = c(1)) @ \subsubsection{Line styles} Specifying \code{booktabs = TRUE} will generate three line types. By default, when no value is given for \code{hline.after}, a \verb|\toprule| will be drawn above the table, a \verb|\midrule| after the table headings and a \verb|\bottomrule| below the table. This requires \verb|\usepackage{booktabs}| in the \LaTeX\ preamble. \p The top and bottom rules are slightly thicker than the mid rule. The thickness of the lines can be set via the \LaTeX\ lengths \verb|\heavyrulewidth| and \verb|\lightrulewidth|. <>= tli.table <- xtable(tli[1:10, ]) print(tli.table, include.rownames = FALSE, booktabs = TRUE) @ \p If \code{hline.after} includes \code{-1}, a \verb|\toprule| will be drawn above the table. If \code{hline.after} includes the number of rows in the table, a \verb|\bottomrule| will be drawn below the table. For any other values specified in \code{hline.after}, a \verb|\midrule| will be drawn after that line of the table. \p The following table has more than one \verb|\midrule|. <>= bktbs <- xtable(matrix(1:10, ncol = 2)) hlines <- c(-1, 0, 1, nrow(bktbs)) print(bktbs, booktabs = TRUE, hline.after = hlines) @ \subsection{Table level commands} <>= print(xtable(anova(fm3)), size = "large") @ \p <>= print(xtable(anova(fm3)), size = "\\setlength{\\tabcolsep}{12pt}") @ \subsection{Long tables} Requires \verb|\usepackage{longtable}| in the \LaTeX\ preamble. <>= x <- matrix(rnorm(1000), ncol = 10) x.big <- xtable(x, caption = "A \\code{longtable} spanning several pages") print(x.big, hline.after=c(-1, 0), tabular.environment = "longtable") @ Extra features of the \pkg{longtable} \LaTeX{} package can typically be activated using \code{add.to.row}, as shown below. <>= add.to.row <- list(pos = list(0), command = NULL) command <- paste0("\\hline\n\\endhead\n", "\\hline\n", "\\multicolumn{", dim(x)[2] + 1, "}{l}", "{\\footnotesize Continued on next page}\n", "\\endfoot\n", "\\endlastfoot\n") add.to.row$command <- command print(x.big, hline.after=c(-1), add.to.row = add.to.row, tabular.environment = "longtable") @ \newpage \subsection{Use of \code{add.to.row} argument} The following frequency table has outer dimnames: \code{Grade3} and \code{Grade6}. <<>>= Grade3 <- c("A","B","B","A","B","C","C","D","A","B", "C","C","C","D","B","B","D","C","C","D") Grade6 <- c("A","A","A","B","B","B","B","B","C","C", "A","C","C","C","D","D","D","D","D","D") Cohort <- table(Grade3, Grade6) Cohort @ \p The default behavior of \code{print.xtable} is to strip outer dimnames. <>= xtable(Cohort) @ \p The desired column labels can be created using \code{add.to.row}, in this case applying two commands to ``row number zero'' while suppressing the basic column names. <>= addtorow <- list() addtorow$pos <- list(0, 0) addtorow$command <- c("& \\multicolumn{4}{c}{Grade 6} \\\\\n", "Grade 3 & A & B & C & D \\\\\n") print(xtable(Cohort), add.to.row = addtorow, include.colnames = FALSE) @ \subsection{Sideways tables} Requires \verb|\usepackage{rotating}| in the \LaTeX\ preamble. Sideways tables can't be forced in place with the \code{[H]} specifier, but you can use the \verb|\clearpage| command to get them fairly nearby. <>= x <- x[1:30, ] x.side <- xtable(x, caption = "A sideways table") print(x.side, floating = TRUE, floating.environment = "sidewaystable") @ \clearpage \subsection{Rescaled tables} Specify a \code{scalebox} value to rescale the table. <>= x <- x[1:20, ] x.rescale <- xtable(x) print(x.rescale, scalebox = 0.7) @ \subsection{Aligning fixed width columns} Note that using specifications such as \verb|p{2cm}| always produces a \textbf{left aligned} column. What if some other alignment is desired? This is not really a problem with \pkg{xtable} but with the formatting of tables with fixed width columns and different alignments using standard \LaTeX. One solution is to use the \verb|array| package, defining new column formats. \begin{verbatim} \newcolumntype{L}[1]{>{\raggedright\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{C}[1]{>{\centering\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{R}[1]{>{\raggedleft\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}} \end{verbatim} These allow for very sophisticated cell formatting, namely left-aligned, centred, or right-aligned text, with recognition of line breaks for the first three new column types. If these lines are included along with \verb|\usepackage{array}|, then the following is possible. \newcolumntype{L}[1]{>{\raggedright\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{C}[1]{>{\centering\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{R}[1]{>{\raggedleft\let\newline\\ \arraybackslash\hspace{0pt}}m{#1}} \newcolumntype{P}[1]{>{\raggedright\tabularxbackslash}p{#1}} <>= df <- data.frame(name = c("A","B"), right = c(1.4, 34.6), left = c(1.4, 34.6), text = c("txt1","txt2")) print(xtable(df, align = c("l", "|c", "|R{3cm}", "|L{3cm}", "| p{3cm}|")), floating = FALSE, include.rownames = FALSE) @ \newpage \subsection{Table width} The \code{tabularx} environment is for typesetting tables whose overall width is fixed. The column alignment code \code{X} denotes columns that will be stretched to achieve the desired table width. Requires \verb|\usepackage{tabularx}| in the \LaTeX\ preamble. <>= df.width <- data.frame(One = c("item 1", "A"), Two = c("item 2", "B"), Three = c("item 3", "C"), Four = c("item 4", "D")) x.width <- xtable(df.width) align(x.width) <- "|l|X|l|l|l|" print(x.width, tabular.environment = "tabularx", width = "\\textwidth") @ \section{Suppressing printing} By default the \code{print} method will print the \LaTeX\ or HTML to standard output and also return the character strings invisibly. The printing to standard output can be suppressed by specifying \code{print.results = FALSE}. <<>>= x.out <- print(tli.table, print.results = FALSE) @ Formatted output can also be captured without printing with the \code{toLatex} method. This function returns an object of class \code{"Latex"}. <<>>= x.ltx <- toLatex(tli.table) class(x.ltx) x.ltx @ \newpage \section{Acknowledgements} Most of the examples in this gallery are taken from the \pkg{xtable} documentation. Two examples (\code{add.to.row} and `Aligning fixed width columns') are from Stack Exchange. \section{Session information} <>= toLatex(sessionInfo()) @ \end{document} xtable/vignettes/OtherPackagesGallery.Rnw0000644000176200001440000002125113456572257020312 0ustar liggesusers%\VignetteIndexEntry{xtable Other Packages Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper, height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{\bfseries\Large The Other Packages Gallery} \author{\bfseries David J. Scott} \maketitle \tableofcontents \newpage \section{Introduction} This document represents a test of the functions in \pkg{xtable} which deal with other packages. <>= library(knitr) opts_chunk$set(fig.path = 'Figures/other', debug = TRUE, echo = TRUE) opts_chunk$set(out.width = '0.9\\textwidth') @ The first step is to load the package and set some options for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) set.seed(1234) @ %% \section{The packages \pkg{spdep}, \pkg{splm}, and \pkg{sphet}} %% Code for supporting these packages and most of the examples used in %% this section was originally provided by Martin Gubri %% (\url{martin.gubri@framasoft.org}). %% \subsection{The package \pkg{spdep}} %% \label{sec:package-pkgspdep} %% First load the package and create some objects. %% <>= %% library(spdep) %% data("oldcol", package = "spdep") %% data.in.sample <- COL.OLD[1:44,] %% data.out.of.sample <- COL.OLD[45:49,] %% listw.in.sample <- nb2listw(subset(COL.nb, !(1:49 %in% 45:49))) %% listw.all.sample <- nb2listw(COL.nb) %% COL.lag.eig <- lagsarlm(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample) %% class(COL.lag.eig) %% COL.errW.GM <- GMerrorsar(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample, returnHcov = TRUE) %% class(COL.errW.GM) %% COL.lag.stsls <- stsls(CRIME ~ INC + HOVAL, data = data.in.sample, %% listw.in.sample) %% class(COL.lag.stsls) %% p1 <- predict(COL.lag.eig, newdata = data.out.of.sample, %% listw = listw.all.sample) %% class(p1) %% p2 <- predict(COL.lag.eig, newdata = data.out.of.sample, %% pred.type = "trend", type = "trend") %% #type option for retrocompatibility with spdep 0.5-92 %% class(p2) %% imp.exact <- impacts(COL.lag.eig, listw = listw.in.sample) %% class(imp.exact) %% imp.sim <- impacts(COL.lag.eig, listw = listw.in.sample, R = 200) %% class(imp.sim) %% @ %def %% \subsubsection{\code{sarlm} objects} %% \label{sec:codesarlm-objects} %% There is an \code{xtable} method for objects of this type. %% <>= %% xtable(COL.lag.eig) %% @ %def %% The method for \code{xtable} actually uses the summary of the object, %% and an identical result is obtained when using the summary of the %% object, even if the summary contains more additional information. %% <>= %% xtable(summary(COL.lag.eig, correlation = TRUE)) %% @ %def %% This same pattern applies to the other objects from this group of packages. %% Note that additional prettying of the resulting table is possible, as %% for any table produced using \code{xtable}. For example using the %% \pkg{booktabs} package we get: %% <>= %% print(xtable(COL.lag.eig), booktabs = TRUE) %% @ %def %% \subsubsection{\code{gmsar} objects} %% \label{sec:codegmsar-objects} %% <>= %% xtable(COL.errW.GM) %% @ %def %% \subsubsection{\code{stsls} objects} %% \label{sec:codestsls-objects} %% <>= %% xtable(COL.lag.stsls) %% @ %def %% \subsubsection{\code{sarlm.pred} objects} %% \label{sec:codesarlmpred-objects} %% \code{xtable} has a method for predictions of \code{sarlm} models. %% <>= %% xtable(p1) %% @ %def %% This method transforms the \code{sarlm.pred} objects into data frames, %% allowing any number of attributes vectors which may vary according to %% predictor types. %% <>= %% xtable(p2) %% @ %def %% \subsubsection{\code{lagImpact} objects} %% \label{sec:codelagimpact-objects} %% The \code{xtable} method returns the values of direct, indirect and %% total impacts for all the variables in the model. The class %% \code{lagImpact} has two different sets of attributes according to if %% simulations are used. But the \code{xtable} method always returns the %% three components of the non-simulation case. %% <>= %% xtable(imp.exact) %% @ %def %% \p %% <>= %% xtable(imp.sim) %% @ %def %% \subsubsection{\code{spautolm} objects} %% \label{sec:codespautolm-objects} %% The need for an \code{xtable} method for \code{spautolm} was expressed %% by Guido Schulz (\url{schulzgu@student.hu-berlin.de}), who also %% provided an example of an object of this type. The required code was %% implemented by David Scott (\url{d.scott@auckland.ac.nz}). %% First create an object of the required type. %% <>= %% library(spdep) %% example(NY_data) %% spautolmOBJECT <- spautolm(Z ~ PEXPOSURE + PCTAGE65P,data = nydata, %% listw = listw_NY, family = "SAR", %% method = "eigen", verbose = TRUE) %% summary(spautolmOBJECT, Nagelkerke = TRUE) %% @ %def %% \p %% <>= %% class(spautolmOBJECT) %% @ %def %% <>= %% xtable(spautolmOBJECT, %% display = c("s",rep("f", 3), "e"), digits = 4) %% @ %def %% \subsection{The package \pkg{splm}} %% \label{sec:package-pkgsplm} %% First load the package and create some objects. %% <>= %% library(splm) %% data("Produc", package = "plm") %% data("usaww", package = "splm") %% fm <- log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp %% respatlag <- spml(fm, data = Produc, listw = mat2listw(usaww), %% model="random", spatial.error="none", lag=TRUE) %% class(respatlag) %% GM <- spgm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp, data = Produc, %% listw = usaww, moments = "fullweights", spatial.error = TRUE) %% class(GM) %% imp.spml <- impacts(respatlag, listw = mat2listw(usaww, style = "W"), time = 17) %% class(imp.spml) %% @ %def %% \subsubsection{\code{splm} objects} %% \label{sec:codesplm-objects} %% <>= %% xtable(respatlag) %% @ %def %% \p %% <>= %% xtable(GM) %% @ %def %% The \code{xtable} method works the same on impacts of \code{splm} models. %% <>= %% xtable(imp.spml) %% @ %def %% \subsection{The package \pkg{sphet}} %% \label{sec:package-pkgsphet} %% First load the package and create some objects. %% <>= %% library(sphet) %% data("columbus", package = "spdep") %% listw <- nb2listw(col.gal.nb) %% data("coldis", package = "sphet") %% res.stsls <- stslshac(CRIME ~ HOVAL + INC, data = columbus, listw = listw, %% distance = coldis, type = 'Triangular') %% class(res.stsls) %% @ %def %% \subsubsection{\code{sphet} objects} %% \label{sec:codesphet-objects} %% <>= %% xtable(res.stsls) %% @ %def \section{The \pkg{zoo} package} \label{sec:pkgzoo-package} <>= library(zoo) xDate <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) - 1 as.ts(xDate) x <- zoo(rnorm(5), xDate) xtable(x) @ %def \p <>= tempTs <- ts(cumsum(1 + round(rnorm(100), 0)), start = c(1954, 7), frequency = 12) tempTable <- xtable(tempTs, digits = 0) tempTable tempZoo <- as.zoo(tempTs) xtable(tempZoo, digits = 0) @ %def \section{The \pkg{survival} package} \label{sec:pkgsurvival-package} <>= library(survival) test1 <- list(time=c(4,3,1,1,2,2,3), status=c(1,1,1,0,1,1,0), x=c(0,2,1,1,1,0,0), sex=c(0,0,0,0,1,1,1)) coxFit <- coxph(Surv(time, status) ~ x + strata(sex), test1) xtable(coxFit) @ %def \end{document} xtable/vignettes/margintable.Rnw0000644000176200001440000000406613050750607016527 0ustar liggesusers%\VignetteIndexEntry{xtable margintable} %\VignetteKeywords{LaTeX, HTML, table, margintable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} \documentclass{tufte-handout} \title{ A Margin Table Example } \author{David J. Scott} <>= library(knitr) @ \usepackage{rotating} \usepackage{longtable} \usepackage{booktabs} \usepackage{tabularx} \usepackage{hyperref} \usepackage{fancyvrb} \fvset{fontsize=\normalsize} \begin{document} \section{The Example} \label{sec:example} This document uses the Tufte handout \LaTeX\ document style. This is specified by the use of the document class as \Verb|\documentclass{tufte-handout}|. The Tufte-\LaTeX\ document classes define a style similar to the style Edward Tufte uses in his books and handouts. Tufte's style is known for its extensive use of sidenotes, tight integration of graphics with text, and well-set typography. One of the most prominent and distinctive features of this style is the extensive use of sidenotes. There is a wide margin to provide ample room for sidenotes and small figures. Any \Verb|\footnote|s will automatically be converted to sidenotes. Here is an example of a margin table, suggested by Felix Sch\"onbrodt \Verb||. I am not sure about its usefullness in practice however. Note that \Verb|latex.environments = ""| avoids the default option of tables being centered, which in this example would lead to the caption not being directly under the table. Most importantly, \Verb|table.placement = NULL| is required to ensure that the default table placement options \Verb|[ht]| being inserted after \Verb|\begin{margintable}|. This is necessary because the margintable environment does not allow placement options like \Verb|[ht]|. <<>>= library(xtable) x <- matrix(rnorm(6), ncol = 2) x.small <- xtable(x, label = 'tabsmall', caption = 'A margin table') @ <>= print(x.small,floating.environment='margintable', latex.environments = "", table.placement = NULL) @ \end{document} xtable/vignettes/listOfTablesGallery.Rnw0000644000176200001440000001340013341600075020141 0ustar liggesusers%\VignetteIndexEntry{xtable List of Tables Gallery} %\VignetteDepends{xtable} %\VignetteKeywords{LaTeX, HTML, table} %\VignettePackage{xtable} % !Rnw weave = knitr % \VignetteEngine{knitr::knitr} %************************************************************************** \documentclass{article} \usepackage[a4paper,height=24cm]{geometry} % geometry first \usepackage{array} \usepackage{booktabs} \usepackage{longtable} \usepackage{parskip} \usepackage{rotating} \usepackage{tabularx} \usepackage{titlesec} \usepackage{hyperref} % hyperref last \titleformat\subsubsection{\bfseries\itshape}{}{0pt}{} \newcommand\p{\vspace{2ex}} \newcommand\code[1]{\texttt{#1}} \newcommand\pkg[1]{\textbf{#1}} \setcounter{tocdepth}{2} \begin{document} \title{\bfseries\Large The \code{xtableList} Gallery} \author{\bfseries David J. Scott} \maketitle \tableofcontents \newpage \section{Introduction} This document represents a test of the functions in \pkg{xtable} which deal with lists of dataframes. <>= library(knitr) opts_chunk$set(fig.path='Figures/list', debug=TRUE, echo=TRUE) opts_chunk$set(out.width='0.9\\textwidth') @ The first step is to load the package and set some options for this document. <>= library(xtable) options(xtable.floating = FALSE) options(xtable.timestamp = "") options(width = 60) @ Next we create a list of dataframes with attributes. <>= require(xtable) data(mtcars) mtcars <- mtcars[, 1:6] mtcarsList <- split(mtcars, f = mtcars$cyl) ### Reduce the size of the list elements mtcarsList[[1]] <- mtcarsList[[1]][1,] mtcarsList[[2]] <- mtcarsList[[2]][1:2,] mtcarsList[[3]] <- mtcarsList[[3]][1:3,] attr(mtcarsList, "subheadings") <- paste0("Number of cylinders = ", names(mtcarsList)) attr(mtcarsList, "message") <- c("Line 1 of Message", "Line 2 of Message") str(mtcarsList) attributes(mtcarsList) @ %def Now create a list of \code{xtable} objects. <>= xList <- xtableList(mtcarsList) str(xList) @ %def Create an alternative version where the lists have different values for \code{digits}. <>= xList1 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2)) str(xList1) @ %def <>= xList2 <- xtableList(mtcarsList, digits = c(0,2,0,0,0,1,2), caption = "Caption to List", label = "tbl:xtableList") str(xList2) @ %def Further versions with no subheadings, and no message <>= attr(mtcarsList, "subheadings") <- NULL xList3 <- xtableList(mtcarsList) str(xList3) @ %def <>= attr(mtcarsList, "message") <- NULL xList4 <- xtableList(mtcarsList) str(xList4) @ %def \newpage \section{Single Column Names} \label{sec:single-column-names} Print the list of \code{xtable} objects with a single header of the column names. First the default. <>= print.xtableList(xList) @ %def Booktabs should work. <>= print.xtableList(xList, booktabs = TRUE) @ %def With digits being specified. <>= print.xtableList(xList1, booktabs = TRUE) @ %def Row and column names, subheadings, and the message can be sanitized. <>= large <- function(x){ paste0('{\\Large{\\bfseries ', x, '}}') } italic <- function(x){ paste0('{\\emph{ ', x, '}}') } bold <- function(x){ paste0('{\\bfseries ', x, '}') } red <- function(x){ paste0('{\\color{red} ', x, '}') } @ %def <>= print.xtableList(xList, sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <>= print.xtableList(xList2, floating = TRUE) @ %def Rotated column names? <>= print.xtableList(xList, rotate.colnames = TRUE) @ %def No subheadings? <>= print.xtableList(xList3) @ %def No message? <>= print.xtableList(xList4) @ %def \section{Multiple Column Names} \label{sec:multiple-column-names} Print the list of \code{xtable} objects with multiple headers of the column names. First the default with multiple column name headers. <>= print.xtableList(xList, colnames.format = "multiple") @ %def Using booktabs: <>= print.xtableList(xList, colnames.format = "multiple", booktabs = TRUE) @ %def With sanitization. <>= print.xtableList(xList, colnames.format = "multiple", sanitize.rownames.function = italic, sanitize.colnames.function = large, sanitize.subheadings.function = bold, sanitize.message.function = red, booktabs = TRUE) @ %def A label and caption can be added. <>= print.xtableList(xList2, colnames.format = "multiple", floating = TRUE) @ %def Rotated column names? <>= print.xtableList(xList, colnames.format = "multiple", rotate.colnames = TRUE) @ %def No subheadings? <>= print.xtableList(xList3, colnames.format = "multiple") @ %def No message? <>= print.xtableList(xList4, colnames.format = "multiple") @ %def \end{document} xtable/MD50000644000176200001440000000530313457057763012063 0ustar liggesusers19ce424541a77e2774f0558f6bf71825 *DESCRIPTION 5404c3d446fa831d8b1748356b0f2af2 *NAMESPACE a7fdc2c4a8c6373385d9eb6b89198ec2 *NEWS 5ae08bf6f1c93b19a9fd9dba478450d7 *R/autoformat.R 1f2f4b69276542043563211c8436db52 *R/print.xtable.R 47e1421a7d31a9a104c4433cd84d79a1 *R/sanitize.R 2c060a689e4abe5b527b03e744791dc3 *R/table.attributes.R 61deeb5bc6a7f0da8fc14d68d073c842 *R/toLatex.R e36c7a8a4645c4a8df08391c4b9f3f7b *R/xtable.R 8cc8d17bc1fec96f2c1fefacab76cab8 *R/xtableFtable.R 6dc43d99b2f2a43e3c113d4d9cb4c277 *R/xtableList.R bbe9b0d7afd6aa21f2cb29a068e9f982 *R/xtableMatharray.R b23b9d900c443dd3c07c783ffe9482b5 *build/vignette.rds ed96b5026567a1dc4f9ed3f55cb257bc *data/tli.txt.gz f3472051176ffac8c4061b589981d8dd *inst/doc/OtherPackagesGallery.R fd9779f4f1a869f8f761ff1eb611bb23 *inst/doc/OtherPackagesGallery.Rnw c1a669c595fb815ede14fef928df3645 *inst/doc/OtherPackagesGallery.pdf cfb9baa1f99d10dcab29b3c171b7b335 *inst/doc/listOfTablesGallery.R ec5bfbd94c3d2c7f9b2ea4c4710e8ec0 *inst/doc/listOfTablesGallery.Rnw a67b066bfc0b11e5a8c9eef8f1856d67 *inst/doc/listOfTablesGallery.pdf c4b650d59525b32a6a3419944079db2b *inst/doc/margintable.R 99af34d2c77bb0a6d3c94d77353f282b *inst/doc/margintable.Rnw 11a276892f062b04cdb185118a66f994 *inst/doc/margintable.pdf 3899be39c8d761ad3ef753795979118f *inst/doc/xtableGallery.R 58b34c70a37d9a0874c84666f3dbe90d *inst/doc/xtableGallery.Rnw 36fa3a03de4ccf08ab0df237f787c47d *inst/doc/xtableGallery.pdf f95d0f62ce805138f60e665c73eae98a *man/autoformat.Rd 75c7e1dae94ded3203639a9c268f5b46 *man/print.xtable.Rd f927435e7967f48afd9a64c3013082b7 *man/print.xtableMatharray.Rd de7e9b4e1ba7d73979616e15d59aa785 *man/sanitize.Rd 319908d8bdaa827ab3e702d75308a11f *man/string.Rd ce99416fe09c89d115650041321e3c4c *man/table.attributes.Rd 09508527a5fa06fc0f845e3eeaaa2f0f *man/tli.Rd 495dd6344cfa0335bb8018c094e081b3 *man/toLatex.Rd d1c4b43bb041b3b48b5c064d6a01f6db *man/xtable-internal.Rd 58eb95730b68eacf7dae1cf203f47b76 *man/xtable.Rd 4fcd1680f6d8a0177a85ec3996169858 *man/xtableFtable.Rd 137d3a04407f9407ba59b9a6bc953fed *man/xtableList.Rd 8b6d0f0107fa06fbcfeaac7ddd645d7c *man/xtableMatharray.Rd 596b4f4f3c425330eb54998231aca58b *tests/test.margintable.R 41dd49eb66f7f3b27738424de6a27ac3 *tests/test.matharray.R 820837020ab324ad88b4b9bf7fe2b451 *tests/test.xalign.xdigits.xdisplay.R 12b35182cb70b6f47d262213b7e1b342 *tests/test.xtable.R 3089b65c174191d5245050a760a86746 *tests/test.xtable.data.frame.R b084b5d2c7f7094464c2b64fc20cdf03 *tests/test.xtable.xtableFtable.R fd9779f4f1a869f8f761ff1eb611bb23 *vignettes/OtherPackagesGallery.Rnw ec5bfbd94c3d2c7f9b2ea4c4710e8ec0 *vignettes/listOfTablesGallery.Rnw 99af34d2c77bb0a6d3c94d77353f282b *vignettes/margintable.Rnw 58b34c70a37d9a0874c84666f3dbe90d *vignettes/xtableGallery.Rnw xtable/build/0000755000176200001440000000000013457046162012640 5ustar liggesusersxtable/build/vignette.rds0000644000176200001440000000051113457046162015174 0ustar liggesusersSn0 M SwvyU7iL&СQ>|5ibU+؎2B B-t  _[|%ϞYsqߓ8i賏 Z15wM'IpjuG;"yP,EEV"(1P{jFsVu& Q-'e{H%)|>G|<9OcGq_r5j%l3LaIS(t6౧nl< 24_HMH W [Y1TE9XP@ Imports: stats, utils Suggests: knitr, plm, zoo, survival VignetteBuilder: knitr Description: Coerce data to LaTeX and HTML tables. URL: http://xtable.r-forge.r-project.org/ Depends: R (>= 2.10.0) License: GPL (>= 2) Repository: CRAN NeedsCompilation: no Packaged: 2019-04-21 10:56:51 UTC; dsco036 Author: David B. Dahl [aut], David Scott [aut, cre], Charles Roosen [aut], Arni Magnusson [aut], Jonathan Swinton [aut], Ajay Shah [ctb], Arne Henningsen [ctb], Benno Puetz [ctb], Bernhard Pfaff [ctb], Claudio Agostinelli [ctb], Claudius Loehnert [ctb], David Mitchell [ctb], David Whiting [ctb], Fernando da Rosa [ctb], Guido Gay [ctb], Guido Schulz [ctb], Ian Fellows [ctb], Jeff Laake [ctb], John Walker [ctb], Jun Yan [ctb], Liviu Andronic [ctb], Markus Loecher [ctb], Martin Gubri [ctb], Matthieu Stigler [ctb], Robert Castelo [ctb], Seth Falcon [ctb], Stefan Edwards [ctb], Sven Garbade [ctb], Uwe Ligges [ctb] Date/Publication: 2019-04-21 12:20:03 UTC xtable/man/0000755000176200001440000000000013341601440012300 5ustar liggesusersxtable/man/print.xtableMatharray.Rd0000644000176200001440000000667013341601440017063 0ustar liggesusers\name{print.xtableMatharray} \alias{print.xtableMatharray} \title{Print Math Array} \description{ For an object of class \code{"xtableMatharray"}, returns the LaTeX commands to produce an array. } \usage{ \method{print}{xtableMatharray}(x, print.results = TRUE, format.args = getOption("xtable.format.args", NULL), scalebox = getOption("xtable.scalebox", NULL), comment = FALSE, timestamp = NULL, ...) } \arguments{ \item{x}{An object of class \code{"xtableMatharray"}.} \item{print.results}{If \code{TRUE}, the generated table is printed to standard output. Set this to \code{FALSE} if you will just be using the character vector that is returned invisibly. Default value is \code{TRUE}.} \item{format.args}{List of arguments for the \code{formatC} function. For example, standard German number separators can be specified as \code{format.args=list(big.mark = "'", decimal.mark = ",")}. The arguments \code{digits} and \code{format} should not be included in this list. See details for function \code{\link{print.xtable}}. Default value is \code{NULL}.} \item{scalebox}{If not \code{NULL}, a \code{scalebox} clause will be added around the tabular environment with the specified value used as the scaling factor. Default value is \code{NULL}.} \item{comment}{If \code{TRUE}, the version and timestamp comment is included. Default value is \code{FALSE}. } \item{timestamp}{Timestamp to include in LaTeX comment. Set this to \code{NULL} to exclude the timestamp. Default value is \code{NULL}. } \item{...}{Additional arguments. (Currently ignored.) } } \details{ This command prints an array of numbers which may be included in a mathematical expression in a LaTeX document created using \pkg{Sweave} or \pkg{knitr}. Internally it calls \code{print.data.frame} but with special values for the arguments, namely that the tabular environment is \code{array}, row names and column names are not included, and there are no horizontal lines. Note that the default values for the arguments \code{comment} and \code{timestamp} are different to the default values for \code{print.xtable}, the justification being that comments would make the resulting LaTeX harder to read. } \value{ A character vector containing the LaTeX code for incorporating an array in a mathematical expression. } \author{ David Scott \email{d.scott@auckland.ac.nz}. } \seealso{ \code{\link{xtableMatharray}}, \code{\link{print.xtable}} } \examples{ V <- matrix(c(1.140380e-03, 3.010497e-05, 7.334879e-05, 3.010497e-05, 3.320683e-04, -5.284854e-05, 7.334879e-05, -5.284854e-05, 3.520928e-04), nrow = 3) ### Simple test of print.xtableMatharray print.xtableMatharray(xtable(V, display = rep("E", 4))) class(V) <- c("xtableMatharray") class(V) ### Test without any additional arguments mth <- xtableMatharray(V) str(mth) print(mth) ### Test with arguments to xtable mth <- xtableMatharray(V, display = rep("E", 4)) str(mth) print(mth) mth <- xtableMatharray(V, digits = 6) str(mth) print(mth) ### Test with additional print.xtableMatharray arguments mth <- xtableMatharray(V, digits = 6) str(mth) print(mth, format.args = list(decimal.mark = ",")) print(mth, scalebox = 0.5) print(mth, comment = TRUE) print(mth, timestamp = "2000-01-01") print(mth, comment = TRUE, timestamp = "2000-01-01") } \keyword{print} xtable/man/autoformat.Rd0000644000176200001440000000340613050750607014762 0ustar liggesusers\name{autoformat} \alias{autoformat} \alias{xalign} \alias{xdigits} \alias{xdisplay} \title{Automatically Format Export Tables} \description{ Suggest an appropriate alignment, number of digits, and display type for \code{xtable}. } \usage{ autoformat(xtab, zap = getOption("digits")) xalign(x, pad = TRUE) xdigits(x, pad = TRUE, zap = getOption("digits")) xdisplay(x, pad = TRUE) } \arguments{ \item{xtab}{an object of class \code{xtable}.} \item{x}{a vector, matrix, or data frame.} \item{pad}{whether to format row names, when \code{x} is two-dimensional.} \item{zap}{the number of digits passed to \code{zapsmall}.} } \value{ \code{autoformat} returns a copy of \code{xtab}, after applying \code{xalign}, \code{xdigits}, and \code{xdisplay}. \code{xalign} returns a character vector consisting of \code{"l"} and \code{"r"} elements, for left/right alignment. \code{xdigits} returns an integer vector. \code{xdisplay} returns a character vector of \code{"d"}, \code{"f"}, and \code{"s"} elements, for integer/double/string display. } \author{Arni Magnusson.} \seealso{ \code{\link{xtable}}, \code{\link{align}}, \code{\link{digits}}, \code{\link{display}} } \examples{ ## 1 Vector xalign(precip) xdigits(precip) xdisplay(precip) ## 2 Data frame head(mtcars) xdigits(mtcars, pad = FALSE) xdigits(mtcars, pad = TRUE) xalign(mtcars) xdisplay(mtcars) ## 3 Autoformat when xtable is created xtable(mtcars, align = xalign(mtcars), digits = xdigits(mtcars), display = xdisplay(mtcars)) ## equivalent shortcut xtable(mtcars, auto = TRUE) ## 4 Autoformat existing xtable mt <- xtable(mtcars) align(mt) <- xalign(mt) digits(mt) <- xdigits(mt) display(mt) <- xdisplay(mt) ## equivalent shortcut mt <- autoformat(mt) } \keyword{array} \keyword{print} xtable/man/xtableFtable.Rd0000644000176200001440000004330513341601440015171 0ustar liggesusers\name{xtableFtable} \alias{xtableFtable} \alias{print.xtableFtable} \title{ Create and Export Flat Tables } \description{ \code{xtableFtable} creates an object which contains information about a flat table which can be used by \code{print.xtableFtable} to produce a character string which when included in a document produces a nicely formatted flat table. } \usage{ xtableFtable(x, caption = NULL, label = NULL, align = NULL, digits = 0, display = NULL, quote = FALSE, method = c("non.compact", "row.compact", "col.compact", "compact"), lsep = " $\\\\vert$ ", ...) \method{print}{xtableFtable}(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = getOption("xtable.hline.after", NULL), NA.string = getOption("xtable.NA.string", ""), only.contents = getOption("xtable.only.contents", FALSE), add.to.row = getOption("xtable.add.to.row", NULL), sanitize.text.function = getOption("xtable.sanitize.text.function", as.is), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...) } \arguments{ \item{x}{For \code{xtableFtable}, an object of class \code{"ftable"}. For \code{print.xtableFtable}, an object of class \code{c("xtableFtable", "ftable")}.} \item{caption}{Character vector of length 1 or 2 containing the table's caption or title. If length is 2, the second item is the "short caption" used when LaTeX generates a "List of Tables". Set to \code{NULL} to suppress the caption. Default value is \code{NULL}. } \item{label}{Character vector of length 1 containing the LaTeX label or HTML anchor. Set to \code{NULL} to suppress the label. Default value is \code{NULL}. } \item{align}{Character vector of length equal to the number of columns of the resulting table, indicating the alignment of the corresponding columns. Also, \code{"|"} may be used to produce vertical lines between columns in LaTeX tables, but these are effectively ignored when considering the required length of the supplied vector. If a character vector of length one is supplied, it is split as \code{strsplit(align, "")[[1]]} before processing. For a flat table, the number of columns is the number of columns of data, plus the number of row variables in the table, plus one for the row names, even though row names are not printed. Use \code{"l"}, \code{"r"}, and \code{"c"} to denote left, right, and center alignment, respectively. Use \code{"p{3cm}"} etc. for a LaTeX column of the specified width. For HTML output the \code{"p"} alignment is interpreted as \code{"l"}, ignoring the width request. If \code{NULL} all row variable labels will be left aligned, separated from the data columns by a vertical line, and all data columns will be right aligned. The actual length of \code{align} depends on the value of \code{method}.} \item{digits}{ Numeric vector of length equal to one (in which case it will be replicated as necessary) or to the number of columns in the resulting table. Since data in the table consists of counts, the default is 0. If the value of \code{digits} is negative, the corresponding columns are displayed in scientific format with \code{abs(digits)} digits.} \item{display}{ Character vector of length equal to the number of columns of the resulting table, indicating the format for the corresponding columns. These values are passed to the \code{formatC} function. Use \code{"d"} (for integers), \code{"f"}, \code{"e"}, \code{"E"}, \code{"g"}, \code{"G"}, \code{"fg"} (for reals), or \code{"s"} (for strings). \code{"f"} gives numbers in the usual \code{xxx.xxx} format; \code{"e"} and \code{"E"} give \code{n.ddde+nn} or \code{n.dddE+nn} (scientific format); \code{"g"} and \code{"G"} put \code{x[i]} into scientific format only if it saves space to do so. \code{"fg"} uses fixed format as \code{"f"}, but \code{digits} as number of \emph{significant} digits. Note that this can lead to quite long result strings. If \code{NULL} all row variable names and labels will have format \code{"s"}, and all data columns will have format \code{"d"}. The actual length of \code{display} depends on the value of \code{method}.} \item{quote}{A character string giving the set of quoting characters for \code{format.ftable} used in \code{print.xtableFtable}. To disable quoting altogether, use \code{quote=""}.} \item{method}{String specifying how the \code{"xtableFtable"} object is printed in the \code{print} method. Can be abbreviated. Available methods are (see the examples in \code{\link{print.ftable}}): \describe{ \item{"non.compact"}{the default representation of an \code{"ftable"} object.} \item{"row.compact"}{a row-compact version without empty cells below the column labels.} \item{"col.compact"}{a column-compact version without empty cells to the right of the row labels.} \item{"compact"}{a row- and column-compact version. This may imply a row and a column label sharing the same cell. They are then separated by the string \code{lsep}.} } } \item{lsep}{Only for \code{method = "compact"}, the separation string for row and column labels.} \item{type}{Type of table to produce. Possible values for \code{type} are \code{"latex"} or \code{"html"}. Default value is \code{"latex"} and is the only type implemented so far.} \item{file}{Name of file where the resulting code should be saved. If \code{file=""}, output is displayed on screen. Note that the function also (invisibly) returns a character vector of the results (which can be helpful for post-processing). Default value is \code{""}.} \item{append}{If \code{TRUE} and \code{file!=""}, code will be appended to \code{file} instead of overwriting \code{file}. Default value is \code{FALSE}.} \item{floating}{If \code{TRUE} and \code{type="latex"}, the resulting table will be a floating table (using, for example, \code{\\begin\{table\}} and \code{\\end\{table\}}). See \code{floating.environment} below. Default value is \code{TRUE}. } \item{floating.environment}{If \code{floating=TRUE} and \code{type="latex"}, the resulting table uses the specified floating environment. Possible values include \code{"table"}, \code{"table*"}, and other floating environments defined in LaTeX packages. Default value is \code{"table"}.} \item{table.placement}{If \code{floating=TRUE} and \code{type="latex"}, the floating table will have placement given by \code{table.placement} where \code{table.placement} must be \code{NULL} or contain only elements of \{"h","t","b","p","!","H"\}. Default value is \code{"ht"}.} \item{caption.placement}{The caption will be placed at the bottom of the table if \code{caption.placement} is \code{"bottom"} and at the top of the table if it equals \code{"top"}. Default value is \code{"bottom"}.} \item{caption.width}{The caption will be placed in a \code{"parbox"} of the specified width if \code{caption.width} is not \code{NULL} and \code{type="latex"}. Default value is \code{NULL}.} \item{latex.environments}{If \code{floating=TRUE} and \code{type="latex"}, the specified LaTeX environments (provided as a character vector) will enclose the tabular environment. Default value is \code{"center"}. } \item{tabular.environment}{When \code{type="latex"}, the tabular environment that will be used. When working with tables that extend more than one page, using \code{tabular.environment="longtable"} with the corresponding LaTeX package (see Fairbairns, 2005) allows one to typeset them uniformly. Note that \code{floating} should be set to \code{FALSE} when using the \code{longtable} environment. Default value is \code{"tabular"}.} \item{size}{A character vector that is inserted just before the tabular environment starts. This can be used to set the font size and a variety of other table settings. Initial backslashes are automatically prefixed, if not supplied by user. Default value is \code{NULL}. } \item{hline.after}{When \code{type="latex"}, a vector of numbers between -1 and \code{nrow(x)}, inclusive, indicating the rows after which a horizontal line should appear. Repeated values are allowed. If \code{NULL} the default is to draw a line before before starting the table, after the column variable names and labels, and at the end of the table.} \item{NA.string}{String to be used for missing values in table entries. Default value is \code{""}.} \item{only.contents}{If \code{TRUE} only the rows of the table are printed. Default value is \code{FALSE}. } \item{add.to.row}{A list of two components. The first component (which should be called 'pos') is a list that contains the position of rows on which extra commands should be added at the end. The second component (which should be called 'command') is a character vector of the same length as the first component, which contains the command that should be added at the end of the specified rows. Default value is \code{NULL}, i.e. do not add commands.} \item{sanitize.text.function}{Since the table entries are counts no sanitization is necessary. The default is \code{as.is}, which is the function which makes no changes. This also applies to the labels for the row and column variables since these are also part of the table which is printed using a call to \code{print.xtable}.} \item{sanitize.rownames.function}{Like the \code{sanitize.text.function}, but applicable to row names. The default uses the \code{sanitize.text.function}. } \item{sanitize.colnames.function}{Like the \code{sanitize.text.function}, but applicable to column names. The default uses the \code{sanitize.text.function}. } \item{math.style.negative}{In a LaTeX table, if \code{TRUE}, then use $-$ for the negative sign (as was the behavior prior to version 1.5-3). Default value is \code{FALSE}.} \item{math.style.exponents}{In a LaTeX table, if \code{TRUE} or \code{"$$"}, then use \verb{$5 \times 10^{5}$} for 5e5. If \code{"ensuremath"}, then use \verb{\\ensuremath{5 \times 10^{5}}} for 5e5. If \code{"UTF-8"} or \code{"UTF-8"}, then use UTF-8 to approximate the LaTeX typesetting for 5e5. Default value is \code{FALSE}.} \item{html.table.attributes}{In an HTML table, attributes associated with the \code{} tag. Default value is \code{"border=1"}.} \item{print.results}{If \code{TRUE}, the generated table is printed to standard output. Set this to \code{FALSE} if you will just be using the character vector that is returned invisibly. Default value is \code{TRUE}.} \item{format.args}{List of arguments for the \code{formatC} function. For example, standard German number separators can be specified as \code{format.args=list(big.mark = "'", decimal.mark = ","))}. The arguments \code{digits} and \code{format} should not be included in this list. Default value is \code{NULL}.} \item{rotate.rownames}{If \code{TRUE}, the row names and labels, and column variable names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{rotate.colnames}{If \code{TRUE}, the column names and labels, and row variable names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{booktabs}{If \code{TRUE}, the \code{toprule}, \code{midrule} and \code{bottomrule} commands from the LaTeX "booktabs" package are used rather than \code{hline} for the horizontal line tags. } \item{scalebox}{If not \code{NULL}, a \code{scalebox} clause will be added around the tabular environment with the specified value used as the scaling factor. Default value is \code{NULL}.} \item{width}{If not \code{NULL}, the specified value is included in parentheses between the tabular environment \code{begin} tag and the alignment specification. This allows specification of the table width when using tabular environments such as \code{tabular*} and \code{tabularx}. Note that table width specification is not supported with the \code{tabular} or \code{longtable} environments. Default value is \code{NULL}.} \item{comment}{If \code{TRUE}, the version and timestamp comment is included. Default value is \code{TRUE}. } \item{timestamp}{Timestamp to include in LaTeX comment. Set this to \code{NULL} to exclude the timestamp. Default value is \code{date()}. } \item{...}{Additional arguments. (Currently ignored.) } } \details{ \code{xtableFtable} carries out some calculations to determine the number of rows and columns of names and labels which will be in the table when formatted as a flat table, which depends on the value of \code{method}. It uses the results of those calculations to set sensible values for \code{align} and \code{display} if these have not been supplied. It attaches attributes to the resulting object which specify details of the function call which are needed when printing the resulting object which is of class \code{c("xtableFtable", "ftable")}. \code{print.xtableFtable} uses the attributes attached to an object of class \code{c("xtableFtable", "ftable")} to create a suitable character matrix object for subsequent printing. Formatting is carried out by changing the class of the \code{c("xtableFtable", "ftable")} to \code{"ftable"} then using the generic \code{format} to invoke \code{format.ftable}, from the \pkg{stats} package. The matrix object produced is then printed via a call to \code{print.xtable}. Note that at present there is no code for \code{type = "html"}. } \value{ For \code{xtableFtable} an object of class \code{c("xtableFtable", "ftable")}, with attributes \item{ftableCaption}{the value of the \code{caption} argument} \item{ftableLabel}{the value of the \code{label} argument} \item{ftableAlign}{the value of the \code{label} argument} \item{ftableDigits}{the value of the \code{digits} argument or the default value if \code{digits = NULL}} \item{quote}{the value of the \code{quote} argument} \item{ftableDisplay}{the value of the \code{display} argument or the default value if \code{align = NULL}} \item{method}{the value of the \code{method} argument} \item{lsep}{the value of the \code{lsep} argument} \item{nChars}{a vector of length 2 giving the number of character rows and the number of character columns} For \code{print.xtableFtable} a character string which will produce a formatted table when included in a LaTeX document. } \references{ Fairbairns, Robin (2005) \emph{Tables longer than a single page.} The UK List of TeX Frequently Asked Questions on the Web. \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=longtab} } \author{ David Scott \email{d.scott@auckland.ac.nz}. } \note{ The functions \code{xtableFtable} and \code{print.xtableFtable} are new and their behaviour may change in the future based on user experience and recommendations. It is not recommended that users change the values of \code{align}, \code{digits} or \code{align}. First of all, alternative values have not been tested. Secondly, it is most likely that to determine appropriate values for these arguments, users will have to investigate the code for \code{xtableFtable} and/or \code{print.xtableFtable}. } \seealso{ \code{\link{ftable}}, \code{\link{print.ftable}} \code{\link{xtable}}, \code{\link{caption}}, \code{\link{label}}, \code{\link{align}}, \code{\link{digits}}, \code{\link{display}}, \code{\link{formatC}} } \examples{ data(mtcars) mtcars$cyl <- factor(mtcars$cyl, levels = c("4","6","8"), labels = c("four","six","eight")) tbl <- ftable(mtcars$cyl, mtcars$vs, mtcars$am, mtcars$gear, row.vars = c(2, 4), dnn = c("Cylinders", "V/S", "Transmission", "Gears")) xftbl <- xtableFtable(tbl, method = "compact") print.xtableFtable(xftbl, booktabs = TRUE) xftbl <- xtableFtable(tbl, method = "row.compact") print.xtableFtable(xftbl, rotate.colnames = TRUE, rotate.rownames = TRUE) } \keyword{ category } \keyword{ print } xtable/man/xtable-internal.Rd0000644000176200001440000000044113050750607015666 0ustar liggesusers\name{xtable-internal} \alias{xtableLSMeans} \title{Internal xtable Functions} \description{ Internal functions for the package xtable } \details{ Functions which are either not intended to be called by the user or are waiting to be documented. } \keyword{ internal } xtable/man/tli.Rd0000644000176200001440000000137613050750607013375 0ustar liggesusers\name{tli} \alias{tli} \title{Math scores from Texas Assessment of Academic Skills (TAAS)} \description{ This data set contains math scores and demographic data of 100 randomly selected students participating in the Texas Assessment of Academic Skills (TAAS). } \usage{data(tli)} \format{A \code{data.frame} containing 100 observations with the following columns: \describe{ \item{\code{grade}}{Year in school of student} \item{\code{sex}}{Gender of student} \item{\code{disadvg}}{Is the student economically disadvantaged?} \item{\code{ethnicty}}{Race of student} \item{\code{tlimth}}{Math score of student} } } \source{Texas Education Agency, \url{http://www.tea.state.tx.us}} \keyword{datasets} xtable/man/xtableList.Rd0000644000176200001440000004104113341601440014702 0ustar liggesusers\name{xtableList} \alias{xtableList} \alias{print.xtableList} \title{ Create and Export Lists of Tables } \description{ \code{xtableList} creates an object from a list of tables, which can be used by \code{print.xtableList} to produce a composite table containing the information from the individual tables. } \usage{ xtableList(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, ...) \method{print}{xtableList}(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = NULL, NA.string = getOption("xtable.NA.string", ""), include.rownames = getOption("xtable.include.rownames", TRUE), colnames.format = "single", only.contents = getOption("xtable.only.contents", FALSE), add.to.row = NULL, sanitize.text.function = getOption("xtable.sanitize.text.function", NULL), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), sanitize.subheadings.function = getOption("xtable.sanitize.subheadings.function", sanitize.text.function), sanitize.message.function = getOption("xtable.sanitize.message.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...) } \arguments{ \item{x}{ For \code{xtableList}, a list of \R objects all of the same class, being a class found among \code{methods(xtable)}. The list may also have attributes \code{"subheadings"} and \code{"message"}. The attribute \code{"subheadings"} should be a character vector of the same length as the list \code{x}. The attribute \code{"message"} should be a character vector of any length. For \code{print.xtableList}, an object of class \code{xtableList} produced by a call to \code{xtableList}.} \item{caption}{Character vector of length 1 or 2 containing the table's caption or title. If length is 2, the second item is the "short caption" used when LaTeX generates a "List of Tables". Set to \code{NULL} to suppress the caption. Default value is \code{NULL}. } \item{label}{Character vector of length 1 containing the LaTeX label or HTML anchor. Set to \code{NULL} to suppress the label. Default value is \code{NULL}. } \item{align}{Character vector of length equal to the number of columns of the resulting table, indicating the alignment of the corresponding columns. Also, \code{"|"} may be used to produce vertical lines between columns in LaTeX tables, but these are effectively ignored when considering the required length of the supplied vector. If a character vector of length one is supplied, it is split as \code{strsplit(align, "")[[1]]} before processing. Since the row names are printed in the first column, the length of \code{align} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. Use \code{"l"}, \code{"r"}, and \code{"c"} to denote left, right, and center alignment, respectively. Use \code{"p{3cm}"} etc. for a LaTeX column of the specified width. For HTML output the \code{"p"} alignment is interpreted as \code{"l"}, ignoring the width request. Default depends on the class of \code{x}. } \item{digits}{ Either \code{NULL}, or a vector of length one, or a vector of length equal to the number of columns in the resulting table, indicating the number of digits to display in the corresponding columns, or a list if length equal to the number of R objects making up \code{x}, all members being vectors of the same length, either length one or of length equal to the number of columns in the resulting table. See details for further information.} \item{display}{ Either \code{NULL}, or a vector of length one, or a vector of length equal to the number of columns in the resulting table, indicating the format of the corresponding columns, or a list if length equal to the number of R objects making up \code{x}, all members being vectors of the same length, either length one or of length equal to the number of columns in the resulting table. See details for further information.} \item{type}{Type of table to produce. Possible values for \code{type} are \code{"latex"} or \code{"html"}. Default value is \code{"latex"}.} \item{file}{Name of file where the resulting code should be saved. If \code{file=""}, output is displayed on screen. Note that the function also (invisibly) returns a character vector of the results (which can be helpful for post-processing). Default value is \code{""}.} \item{append}{If \code{TRUE} and \code{file!=""}, code will be appended to \code{file} instead of overwriting \code{file}. Default value is \code{FALSE}.} \item{floating}{If \code{TRUE} and \code{type="latex"}, the resulting table will be a floating table (using, for example, \code{\\begin\{table\}} and \code{\\end\{table\}}). See \code{floating.environment} below. Default value is \code{TRUE}. } \item{floating.environment}{If \code{floating=TRUE} and \code{type="latex"}, the resulting table uses the specified floating environment. Possible values include \code{"table"}, \code{"table*"}, and other floating environments defined in LaTeX packages. Default value is \code{"table"}.} \item{table.placement}{If \code{floating=TRUE} and \code{type="latex"}, the floating table will have placement given by \code{table.placement} where \code{table.placement} must be \code{NULL} or contain only elements of \{"h","t","b","p","!","H"\}. Default value is \code{"ht"}.} \item{caption.placement}{The caption will be placed at the bottom of the table if \code{caption.placement} is \code{"bottom"} and at the top of the table if it equals \code{"top"}. Default value is \code{"bottom"}.} \item{caption.width}{The caption will be placed in a \code{"parbox"} of the specified width if \code{caption.width} is not \code{NULL} and \code{type="latex"}. Default value is \code{NULL}.} \item{latex.environments}{If \code{floating=TRUE} and \code{type="latex"}, the specified LaTeX environments (provided as a character vector) will enclose the tabular environment. Default value is \code{"center"}. } \item{tabular.environment}{When \code{type="latex"}, the tabular environment that will be used. When working with tables that extend more than one page, using \code{tabular.environment="longtable"} with the corresponding LaTeX package (see Fairbairns, 2005) allows one to typeset them uniformly. Note that \code{floating} should be set to \code{FALSE} when using the \code{longtable} environment. Default value is \code{"tabular"}.} \item{size}{A character vector that is inserted just before the tabular environment starts. This can be used to set the font size and a variety of other table settings. Initial backslashes are automatically prefixed, if not supplied by user. Default value is \code{NULL}. } \item{hline.after}{When \code{type="latex"}, a vector of numbers between -1 and the number of rows in the resulting table, inclusive, indicating the rows after which a horizontal line should appear. Determining row numbers is not straightforward since some lines in the resulting table don't enter into the count. The default depends on the value of \code{col.names.format}.} \item{NA.string}{String to be used for missing values in table entries. Default value is \code{""}.} \item{include.rownames}{If \code{TRUE} the rows names are printed. Default value is \code{TRUE}.} \item{colnames.format}{Either \code{"single"} or \code{"multiple"}. Default is \code{"single"}.} \item{only.contents}{If \code{TRUE} only the rows of the table are printed. Default value is \code{FALSE}. } \item{add.to.row}{A list of two components. The first component (which should be called 'pos') is a list that contains the position of rows on which extra commands should be added at the end. The second component (which should be called 'command') is a character vector of the same length as the first component, which contains the command that should be added at the end of the specified rows. Default value is \code{NULL}, i.e. do not add commands.} \item{sanitize.text.function}{All non-numeric entries (except row and column names) are sanitized in an attempt to remove characters which have special meaning for the output format. If \code{sanitize.text.function} is not \code{NULL}, it should be a function taking a character vector and returning one, and will be used for the sanitization instead of the default internal function. Default value is \code{NULL}.} \item{sanitize.rownames.function}{Like the \code{sanitize.text.function}, but applicable to row names. The default uses the \code{sanitize.text.function}. } \item{sanitize.colnames.function}{Like the \code{sanitize.text.function}, but applicable to column names. The default uses the \code{sanitize.text.function}. } \item{sanitize.subheadings.function}{Like the \code{sanitize.text.function}, but applicable to subheadings. The default uses the \code{sanitize.text.function}. } \item{sanitize.message.function}{Like the \code{sanitize.text.function}, but applicable to the message. The default uses the \code{sanitize.text.function}. } \item{math.style.negative}{In a LaTeX table, if \code{TRUE}, then use $-$ for the negative sign (as was the behavior prior to version 1.5-3). Default value is \code{FALSE}.} \item{math.style.exponents}{In a LaTeX table, if \code{TRUE} or \code{"$$"}, then use \verb{$5 \times 10^{5}$} for 5e5. If \code{"ensuremath"}, then use \verb{\\ensuremath{5 \times 10^{5}}} for 5e5. If \code{"UTF-8"} or \code{"UTF-8"}, then use UTF-8 to approximate the LaTeX typsetting for 5e5. Default value is \code{FALSE}.} \item{html.table.attributes}{In an HTML table, attributes associated with the \code{
    } tag. Default value is \code{"border=1"}.} \item{print.results}{If \code{TRUE}, the generated table is printed to standard output. Set this to \code{FALSE} if you will just be using the character vector that is returned invisibly. Default value is \code{TRUE}.} \item{format.args}{List of arguments for the \code{formatC} function. For example, standard German number separators can be specified as \code{format.args=list(big.mark = "'", decimal.mark = ","))}. The arguments \code{digits} and \code{format} should not be included in this list. See details. Default value is \code{NULL}.} \item{rotate.rownames}{If \code{TRUE}, the row names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{rotate.colnames}{If \code{TRUE}, the column names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{booktabs}{If \code{TRUE}, the \code{toprule}, \code{midrule} and \code{bottomrule} commands from the LaTeX "booktabs" package are used rather than \code{hline} for the horizontal line tags. } \item{scalebox}{If not \code{NULL}, a \code{scalebox} clause will be added around the tabular environment with the specified value used as the scaling factor. Default value is \code{NULL}.} \item{width}{If not \code{NULL}, the specified value is included in parentheses between the tabular environment \code{begin} tag and the alignment specification. This allows specification of the table width when using tabular environments such as \code{tabular*} and \code{tabularx}. Note that table width specification is not supported with the \code{tabular} or \code{longtable} environments. Default value is \code{NULL}.} \item{comment}{If \code{TRUE}, the version and timestamp comment is included. Default value is \code{TRUE}. } \item{timestamp}{Timestamp to include in LaTeX comment. Set this to \code{NULL} to exclude the timestamp. Default value is \code{date()}. } \item{\dots}{Additional arguments. (Currently ignored.)} } \details{ \code{xtableList} produces an object suitable for printing using \code{print.xtableList}. The elements of the list \code{x} supplied to \code{xtableList} must all have the same structure. When these list items are submitted to \code{xtable} the resulting table must have the same number of columns with the same column names and type of data. The values supplied to arguments \code{digits} and \code{display}, must be composed of elements as specified in those same arguments for the function \code{\link{xtable}}. See the help for \code{\link{xtable}} for details. \code{print.xtableList} produces tables in two different formats depending on the value of \code{col.names.format}. If \code{col.names.format = "single"}, the resulting table has only a single heading row. If \code{col.names.format = "multiple"} there is a heading row for each of the subtables making up the complete table. By default if \code{col.names.format = "single"}, there are horizontal lines above and below the heading row, and at the end of each subtable. If \code{col.names.format = "multiple"}, there are horizontal lines above and below each appearance of the heading row, and at the end of each subtable. If \code{"subheadings"} is not \code{NULL}, the individual elements of this vector (which can include newlines \verb{\\n}) produce a heading line or lines for the subtables. When \code{col.names.format = "multiple"} these subheadings appear \emph{above} the heading rows. If \code{"message"} is not \code{NULL} the vector produces a line or lines at the end of the table. Consult the vignette \sQuote{The \code{xtableList} Gallery} to see the behaviour of these functions. Note that at present there is no code for \code{type = "html"}. } \value{ \code{xtableList} produces an object of class \code{"xtableList"}. An object of this class is a list of \code{"xtable"} objects with some additional attributes. Each element of the list can have a \code{"subheading"} attribute. The list can also have a \code{"message"} attribute. \code{print.xtableList} produces a character string containing LaTeX markup which produces a composite table in a LaTeX document. } \author{ David Scott \email{d.scott@auckland.ac.nz}. } \seealso{ \code{\link{xtable}}, \code{\link{print.xtable}}, \code{\link{formatC}} \code{\link{caption}}, \code{\link{label}}, \code{\link{align}}, \code{\link{digits}}, \code{\link{display}} } \examples{ data(mtcars) mtcars <- mtcars[, 1:6] mtcarsList <- split(mtcars, f = mtcars$cyl) attr(mtcarsList, "subheadings") <- paste0("Number of cylinders = ", names(mtcarsList)) attr(mtcarsList, "message") <- c("Line 1 of Message", "Line 2 of Message") xList <- xtableList(mtcarsList) print.xtableList(xList) print.xtableList(xList, colnames.format = "multiple") } \keyword{ print } xtable/man/print.xtable.Rd0000644000176200001440000003236613050750607015222 0ustar liggesusers\name{print.xtable} \alias{print.xtable} \title{Print Export Tables} \description{ Function returning and displaying or writing to disk the LaTeX or HTML code associated with the supplied object of class \code{xtable}. } \usage{ \method{print}{xtable}(x, type = getOption("xtable.type", "latex"), file = getOption("xtable.file", ""), append = getOption("xtable.append", FALSE), floating = getOption("xtable.floating", TRUE), floating.environment = getOption("xtable.floating.environment", "table"), table.placement = getOption("xtable.table.placement", "ht"), caption.placement = getOption("xtable.caption.placement", "bottom"), caption.width = getOption("xtable.caption.width", NULL), latex.environments = getOption("xtable.latex.environments", c("center")), tabular.environment = getOption("xtable.tabular.environment", "tabular"), size = getOption("xtable.size", NULL), hline.after = getOption("xtable.hline.after", c(-1,0,nrow(x))), NA.string = getOption("xtable.NA.string", ""), include.rownames = getOption("xtable.include.rownames", TRUE), include.colnames = getOption("xtable.include.colnames", TRUE), only.contents = getOption("xtable.only.contents", FALSE), add.to.row = getOption("xtable.add.to.row", NULL), sanitize.text.function = getOption("xtable.sanitize.text.function", NULL), sanitize.rownames.function = getOption("xtable.sanitize.rownames.function", sanitize.text.function), sanitize.colnames.function = getOption("xtable.sanitize.colnames.function", sanitize.text.function), math.style.negative = getOption("xtable.math.style.negative", FALSE), math.style.exponents = getOption("xtable.math.style.exponents", FALSE), html.table.attributes = getOption("xtable.html.table.attributes", "border=1"), print.results = getOption("xtable.print.results", TRUE), format.args = getOption("xtable.format.args", NULL), rotate.rownames = getOption("xtable.rotate.rownames", FALSE), rotate.colnames = getOption("xtable.rotate.colnames", FALSE), booktabs = getOption("xtable.booktabs", FALSE), scalebox = getOption("xtable.scalebox", NULL), width = getOption("xtable.width", NULL), comment = getOption("xtable.comment", TRUE), timestamp = getOption("xtable.timestamp", date()), ...)} \arguments{ \item{x}{An object of class \code{"xtable"}.} \item{type}{Type of table to produce. Possible values for \code{type} are \code{"latex"} or \code{"html"}. Default value is \code{"latex"}.} \item{file}{Name of file where the resulting code should be saved. If \code{file=""}, output is displayed on screen. Note that the function also (invisibly) returns a character vector of the results (which can be helpful for post-processing). Default value is \code{""}.} \item{append}{If \code{TRUE} and \code{file!=""}, code will be appended to \code{file} instead of overwriting \code{file}. Default value is \code{FALSE}.} \item{floating}{If \code{TRUE} and \code{type="latex"}, the resulting table will be a floating table (using, for example, \code{\\begin\{table\}} and \code{\\end\{table\}}). See \code{floating.environment} below. Default value is \code{TRUE}. } \item{floating.environment}{If \code{floating=TRUE} and \code{type="latex"}, the resulting table uses the specified floating environment. Possible values include \code{"table"}, \code{"table*"}, and other floating environments defined in LaTeX packages. Default value is \code{"table"}.} \item{table.placement}{If \code{floating=TRUE} and \code{type="latex"}, the floating table will have placement given by \code{table.placement} where \code{table.placement} must be \code{NULL} or contain only elements of \{"h","t","b","p","!","H"\}. Default value is \code{"ht"}.} \item{caption.placement}{The caption will be placed at the bottom of the table if \code{caption.placement} is \code{"bottom"} and at the top of the table if it equals \code{"top"}. Default value is \code{"bottom"}.} \item{caption.width}{The caption will be placed in a \code{"parbox"} of the specified width if \code{caption.width} is not \code{NULL} and \code{type="latex"}. Default value is \code{NULL}.} \item{latex.environments}{If \code{floating=TRUE} and \code{type="latex"}, the specified LaTeX environments (provided as a character vector) will enclose the tabular environment. Default value is \code{"center"}. } \item{tabular.environment}{When \code{type="latex"}, the tabular environment that will be used. When working with tables that extend more than one page, using \code{tabular.environment="longtable"} with the corresponding LaTeX package (see Fairbairns, 2005) allows one to typeset them uniformly. Note that \code{floating} should be set to \code{FALSE} when using the \code{longtable} environment. Default value is \code{"tabular"}.} \item{size}{A character vector that is inserted just before the tabular environment starts. This can be used to set the font size and a variety of other table settings. Initial backslashes are automatically prefixed, if not supplied by user. Default value is \code{NULL}. } \item{hline.after}{When \code{type="latex"}, a vector of numbers between -1 and \code{nrow(x)}, inclusive, indicating the rows after which a horizontal line should appear. If \code{NULL} is used no lines are produced. Repeated values are allowed. Default value is \code{c(-1,0,nrow(x))} which means draw a line before and after the columns names and at the end of the table.} \item{NA.string}{String to be used for missing values in table entries. Default value is \code{""}.} \item{include.rownames}{If \code{TRUE} the rows names are printed. Default value is \code{TRUE}.} \item{include.colnames}{If \code{TRUE} the columns names are printed. Default value is \code{TRUE}.} \item{only.contents}{If \code{TRUE} only the rows of the table are printed. Default value is \code{FALSE}. } \item{add.to.row}{A list of two components. The first component (which should be called 'pos') is a list that contains the position of rows on which extra commands should be added at the end. The second component (which should be called 'command') is a character vector of the same length as the first component, which contains the command that should be added at the end of the specified rows. Default value is \code{NULL}, i.e. do not add commands.} \item{sanitize.text.function}{All non-numeric entries (except row and column names) are sanitized in an attempt to remove characters which have special meaning for the output format. If \code{sanitize.text.function} is not \code{NULL}, it should be a function taking a character vector and returning one, and will be used for the sanitization instead of the default internal function. Default value is \code{NULL}.} \item{sanitize.rownames.function}{Like the \code{sanitize.text.function}, but applicable to row names. The default uses the \code{sanitize.text.function}. } \item{sanitize.colnames.function}{Like the \code{sanitize.text.function}, but applicable to column names. The default uses the \code{sanitize.text.function}. } \item{math.style.negative}{In a LaTeX table, if \code{TRUE}, then use $-$ for the negative sign (as was the behavior prior to version 1.5-3). Default value is \code{FALSE}.} \item{math.style.exponents}{In a LaTeX table, if \code{TRUE} or \code{"$$"}, then use \verb{$5 \times 10^{5}$} for 5e5. If \code{"ensuremath"}, then use \verb{\\ensuremath{5 \times 10^{5}}} for 5e5. If \code{"UTF-8"} or \code{"UTF-8"}, then use UTF-8 to approximate the LaTeX typsetting for 5e5. Default value is \code{FALSE}.} \item{html.table.attributes}{In an HTML table, attributes associated with the \code{
    } tag. Default value is \code{"border=1"}.} \item{print.results}{If \code{TRUE}, the generated table is printed to standard output. Set this to \code{FALSE} if you will just be using the character vector that is returned invisibly. Default value is \code{TRUE}.} \item{format.args}{List of arguments for the \code{formatC} function. For example, standard German number separators can be specified as \code{format.args=list(big.mark = "'", decimal.mark = ","))}. The arguments \code{digits} and \code{format} should not be included in this list. See details. Default value is \code{NULL}.} \item{rotate.rownames}{If \code{TRUE}, the row names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{rotate.colnames}{If \code{TRUE}, the column names are displayed vertically in LaTeX. Default value is \code{FALSE}.} \item{booktabs}{If \code{TRUE}, the \code{toprule}, \code{midrule} and \code{bottomrule} commands from the LaTeX "booktabs" package are used rather than \code{hline} for the horizontal line tags. } \item{scalebox}{If not \code{NULL}, a \code{scalebox} clause will be added around the tabular environment with the specified value used as the scaling factor. Default value is \code{NULL}.} \item{width}{If not \code{NULL}, the specified value is included in parentheses between the tabular environment \code{begin} tag and the alignment specification. This allows specification of the table width when using tabular environments such as \code{tabular*} and \code{tabularx}. Note that table width specification is not supported with the \code{tabular} or \code{longtable} environments. Default value is \code{NULL}.} \item{comment}{If \code{TRUE}, the version and timestamp comment is included. Default value is \code{TRUE}. } \item{timestamp}{Timestamp to include in LaTeX comment. Set this to \code{NULL} to exclude the timestamp. Default value is \code{date()}. } \item{...}{Additional arguments. (Currently ignored.) } } \details{ This function displays or writes to disk the code to produce a table associated with an object \code{x} of class \code{"xtable"}. The resulting code is either a LaTeX or HTML table, depending on the value of \code{type}. The function also (invisibly) returns a character vector of the results (which can be helpful for post-processing). Since version 1.4 the non default behavior of \code{hline.after} is changed. To obtain the same results as the previous versions add to the \code{hline.after} vector the vector \code{c(-1, 0, nrow(x))} where \code{nrow(x)} is the numbers of rows of the object. From version 1.4-3, all non-numeric columns are sanitized, and all LaTeX special characters are sanitized for LaTeX output. See Section 3 of the \code{xtableGallery} vignette for an example of customizing the sanitization. From version 1.4-4, the sanitization also applies to column names. To remove any text sanitization, specify \code{sanitize.text.function=function(x){x}}. From version 1.6-1 the default values for the arguments other than \code{x} are obtained using \code{getOption()}. Hence the user can set the values once with \code{options()} rather than setting them in every call to \code{print.xtable()}. The argument \code{format.args} is used to supply arguments to the \code{formatC} function, but will throw an error if values for \code{digits} or \code{format} are included in the list of arguments. The recommended approach to specify \code{digits} is to supply the argument \code{digits} to \code{xtable}, and to specify \code{format} supply the argument \code{display} to \code{xtable}. See the examples. } \author{ David Dahl \email{dahl@stat.byu.edu} with contributions and suggestions from many others (see source code). } \references{ Fairbairns, Robin (2005) \emph{Tables longer than a single page.} The UK List of TeX Frequently Asked Questions on the Web. \url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=longtab} } \seealso{ \code{\link{xtable}}, \code{\link{caption}}, \code{\link{label}}, \code{\link{align}}, \code{\link{digits}}, \code{\link{display}}, \code{\link{formatC}} } \examples{ df <- data.frame(A = c(1.00123, 33.1, 6), B = c(111111, 3333333, 3123.233)) ## The following code gives the error ## formal argument "digits" matched by multiple actual arguments ## print(xtable(df, display = c("s","e","e")), ## format.args = list(digits = 3, big.mark = " ", decimal.mark = ",")) ## specify digits as argument to xtable instead print(xtable(df, display = c("s","f","f"), digits = 4), format.args = list(big.mark = " ", decimal.mark = ",")) ## The following code gives the error ## formal argument "format" matched by multiple actual arguments ## print(xtable(df, digits = 4), ## format.args = list(format = c("s","e","e"), ## big.mark = " ", decimal.mark = ",")) ## specify format using display argument in xtable print(xtable(df, display = c("s","e","e"), digits = 4), format.args = list(big.mark = " ", decimal.mark = ",")) } \keyword{print} xtable/man/string.Rd0000644000176200001440000000173213050750607014107 0ustar liggesusers\name{string} \alias{string} \alias{print.string} \alias{is.string} \alias{as.string} \alias{+.string} \title{String handling functions} \description{Private functions for conveniently working with strings.} \usage{ string(text,file="",append=FALSE) \method{print}{string}(x,...) \method{+}{string}(x,y) as.string(x,file="",append=FALSE) is.string(x) } \arguments{ \item{text}{A character object.} \item{file}{Name of the file that should receive the printed string.} \item{append}{Should the printed string be appended to the file?} \item{x}{A \code{string} object.} \item{y}{A \code{string} object.} \item{...}{Additional arguments. (Currently ignored.)} } \details{ These functions are private functions used by \code{print.xtable}. They are not intended to be used elsewhere. } \author{ David Dahl \email{dahl@stat.byu.edu} with contributions and suggestions from many others (see source code). } \seealso{\code{\link{print.xtable}}} \keyword{print} xtable/man/table.attributes.Rd0000644000176200001440000000257413050750607016062 0ustar liggesusers\name{table.attributes} \alias{caption} \alias{caption.xtable} \alias{caption<-} \alias{caption<-.xtable} \alias{label} \alias{label.xtable} \alias{label<-} \alias{label<-.xtable} \alias{align} \alias{align.xtable} \alias{align<-} \alias{align<-.xtable} \alias{digits} \alias{digits.xtable} \alias{digits<-} \alias{digits<-.xtable} \alias{display} \alias{display.xtable} \alias{display<-} \alias{display<-.xtable} \title{Retrieve and Set Options for Export Tables} \description{Functions retrieving or setting table attributes for the supplied object of class \code{"xtable"}.} \usage{ caption(x,...) caption(x) <- value label(x,...) label(x) <- value align(x,...) align(x) <- value digits(x,...) digits(x) <- value display(x,...) display(x) <- value } \arguments{ \item{x}{An \code{"xtable"} object.} \item{value}{The value of the corresponding attribute.} \item{...}{Additional arguments. (Currently ignored.)} } \details{ These functions retrieve or set table attributes of the object \code{x} of class \code{"xtable"}. See \code{xtable} for a description of the options. } \author{David Dahl \email{dahl@stat.byu.edu} with contributions and suggestions from many others (see source code).} \seealso{ \code{\link{xtable}}, \code{\link{print.xtable}} \code{\link{autoformat}}, \code{\link{xalign}}, \code{\link{xdigits}}, \code{\link{xdisplay}} } \keyword{print} xtable/man/xtableMatharray.Rd0000644000176200001440000001162013341601440015717 0ustar liggesusers\name{xtableMatharray} \alias{xtableMatharray} \title{ Create LaTeX Mathematical Array } \description{ Convert an array of numbers or mathematical expressions into an \code{xtableMatharray} object so it can be printed. A convenience function to enable the printing of arrays in mathematical expressions in LaTeX. } \usage{ xtableMatharray(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) } \arguments{ \item{x}{A numeric or character matrix.} \item{caption}{Character vector of length 1 or 2 containing the table's caption or title. If length is 2, the second item is the "short caption" used when LaTeX generates a "List of Tables". Set to \code{NULL} to suppress the caption. Default value is \code{NULL}. Included here only for consistency with \code{xtable} methods. Not expected to be of use.} \item{label}{Character vector of length 1 containing the LaTeX label. Set to \code{NULL} to suppress the label. Default value is \code{NULL}. } \item{align}{Character vector of length equal to the number of columns of the resulting table, indicating the alignment of the corresponding columns. Also, \code{"|"} may be used to produce vertical lines between columns in LaTeX tables, but these are effectively ignored when considering the required length of the supplied vector. If a character vector of length one is supplied, it is split as \code{strsplit(align, "")[[1]]} before processing. Since the row names are printed in the first column, the length of \code{align} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. Use \code{"l"}, \code{"r"}, and \code{"c"} to denote left, right, and center alignment, respectively. Use \code{"p{3cm}"} etc. for a LaTeX column of the specified width. For HTML output the \code{"p"} alignment is interpreted as \code{"l"}, ignoring the width request. Default depends on the class of \code{x}. } \item{digits}{Numeric vector of length equal to one (in which case it will be replicated as necessary) or to the number of columns of the resulting table \bold{or} matrix of the same size as the resulting table, indicating the number of digits to display in the corresponding columns. Since the row names are printed in the first column, the length of the vector \code{digits} or the number of columns of the matrix \code{digits} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. Default depends on the class of \code{x}. If values of \code{digits} are negative, the corresponding values of \code{x} are displayed in scientific format with \code{abs(digits)} digits.} \item{display}{ Character vector of length equal to the number of columns of the resulting table, indicating the format for the corresponding columns. Since the row names are printed in the first column, the length of \code{display} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. These values are passed to the \code{formatC} function. Use \code{"d"} (for integers), \code{"f"}, \code{"e"}, \code{"E"}, \code{"g"}, \code{"G"}, \code{"fg"} (for reals), or \code{"s"} (for strings). \code{"f"} gives numbers in the usual \code{xxx.xxx} format; \code{"e"} and \code{"E"} give \code{n.ddde+nn} or \code{n.dddE+nn} (scientific format); \code{"g"} and \code{"G"} put \code{x[i]} into scientific format only if it saves space to do so. \code{"fg"} uses fixed format as \code{"f"}, but \code{digits} as number of \emph{significant} digits. Note that this can lead to quite long result strings. Default depends on the class of \code{x}.} \item{auto}{ Logical, indicating whether to apply automatic format when no value is passed to \code{align}, \code{digits}, or \code{display}. This \sQuote{autoformat} (based on \code{xalign}, \code{xdigits}, and \code{xdisplay}) can be useful to quickly format a typical \code{matrix} or \code{data.frame}. Default value is \code{FALSE}.} \item{...}{Additional arguments. (Currently ignored.)} } \details{ This function is only usable for production of LaTeX documents, not HTML. Creates an object of class \code{c("xtableMatharray","xtable","data.frame")}, to ensure that it is printed by the print method \code{print.xtableMatharray}. } \value{ An object of class \code{c("xtableMatharray","xtable","data.frame")}. } \author{ David Scott } \seealso{ \code{\link{print.xtableMatharray}} } \examples{ V <- matrix(c(1.140380e-03, 3.010497e-05, 7.334879e-05, 3.010497e-05, 3.320683e-04, -5.284854e-05, 7.334879e-05, -5.284854e-05, 3.520928e-04), nrow = 3) mth <- xtableMatharray(V) class(mth) str(mth) unclass(mth) } \keyword{ print } xtable/man/sanitize.Rd0000644000176200001440000000747213050750607014436 0ustar liggesusers\name{sanitize} \alias{sanitize} \alias{sanitize.numbers} \alias{sanitize.final} \alias{as.is} \alias{as.math} \title{ Sanitization Functions } \description{ Functions for sanitizing elements of a table produced by \pkg{xtable}. Used for dealing with characters which have special meaning in the output format. } \usage{ sanitize(str, type = "latex") sanitize.numbers(str, type, math.style.negative = FALSE, math.style.exponents = FALSE) sanitize.final(str, type) as.is(str) as.math(str, ...) } \arguments{ \item{str}{A character object to be sanitized.} \item{type}{Type of table to produce. Possible values for \code{type} are \code{"latex"} or \code{"html"}. Default value is \code{"latex"}.} \item{math.style.negative}{In a LaTeX table, if \code{TRUE}, then use $-$ for the negative sign (as was the behavior prior to version 1.5-3). Default value is \code{FALSE}.} \item{math.style.exponents}{In a LaTeX table, if \code{TRUE} or \code{"$$"}, then use \verb{$5 \times 10^{5}$} for 5e5. If \code{"ensuremath"}, then use \verb{\ensuremath{5 \times 10^{5}}} for 5e5. If \code{"UTF-8"} or \code{"UTF-8"}, then use UTF-8 to approximate the LaTeX typsetting for 5e5. Default value is \code{FALSE}.} \item{\dots}{Additional arguments. Character strings or character vectors.} } \details{ If \code{type} is \code{"latex"}, \code{sanitize()} will replace special characters such as \verb{&} and the like by strings which will reproduce the actual character, e.g. \verb{&} is replaced by \verb{\\&}. If \code{type} is \code{"html"}, \code{sanitize()} will replace special characters such as \verb{<} and the like by strings which will reproduce the actual character, e.g. \verb{<} is replaced by \verb{<}. When \code{math.style.negative} is \code{TRUE}, and \code{type} is \code{"latex"}, $-$ is used for the negative sign rather than a simple hyphen (-). No effect when \code{type} is \code{"html"}. When \code{type} is \code{"latex"}, and \code{math.style.exponents} is \code{TRUE} or \verb{"$$"}, then use \verb{$5 \times 10^{5}$} for 5e5. If \code{"ensuremath"}, then use \verb{\ensuremath{5 \times 10^{5}}} for 5e5. If \code{"UTF-8"} or \code{"UTF-8"}, then use UTF-8 to approximate the LaTeX typsetting for 5e5. When \code{type} is \code{"latex"} \code{sanitize.final} has no effect. When \code{type} is \code{"html"}, multiple spaces are replaced by a single space and occurrences of \code{' align="left"'} are eliminated. \code{as.is} and \code{as.math} are trivial helper functions to disable sanitizing and to insert a some mathematics in a string respectively. } \value{ Returns the sanitized character object. } \author{ Code was extracted from \code{print.xtable()}, in version 1.8.0 of \pkg{xtable}. Various authors contributed the original code: Jonathan Swinton , Uwe Ligges , and probably David B. Dahl . \code{as.is} and \code{as.math} suggested and provided by Stefan Edwards . } \examples{ insane <- c("&",">", ">","_","\%","$","\\\\","#","^","~","{","}") names(insane) <- c("Ampersand","Greater than","Less than", "Underscore","Percent","Dollar", "Backslash","Hash","Caret","Tilde", "Left brace","Right brace") sanitize(insane, type = "latex") insane <- c("&",">","<") names(insane) <- c("Ampersand","Greater than","Less than") sanitize(insane, type = "html") x <- rnorm(10) sanitize.numbers(x, "latex", TRUE) sanitize.numbers(x*10^(10), "latex", TRUE, TRUE) sanitize.numbers(x, "html", TRUE, TRUE) as.is(insane) as.math("x10^10", ": mathematical expression") } \keyword{print } xtable/man/xtable.Rd0000644000176200001440000004072513341601440014056 0ustar liggesusers\name{xtable} \alias{xtable} \alias{xtable.anova} \alias{xtable.aov} \alias{xtable.aovlist} \alias{xtable.data.frame} \alias{xtable.glm} \alias{xtable.lm} \alias{xtable.matrix} \alias{xtable.xtableMatharray} \alias{xtable.prcomp} \alias{xtable.coxph} \alias{xtable.summary.aov} \alias{xtable.summary.aovlist} \alias{xtable.summary.glm} \alias{xtable.summary.lm} \alias{xtable.summary.prcomp} \alias{xtable.ts} \alias{xtable.table} \alias{xtable.zoo} \alias{xtable.sarlm} \alias{xtable.summary.sarlm} \alias{xtable.gmsar} \alias{xtable.summary.gmsar} \alias{xtable.stsls} \alias{xtable.summary.stsls} \alias{xtable.sarlm.pred} \alias{xtable.lagImpact} \alias{xtable.splm} \alias{xtable.summary.splm} \alias{xtable.sphet} \alias{xtable.summary.sphet} \alias{xtable.spautolm} \alias{xtable.summary.spautolm} \title{Create Export Tables} \description{ Convert an \R object to an \code{xtable} object, which can then be printed as a LaTeX or HTML table. } \usage{ xtable(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, auto = FALSE, ...) } \arguments{ \item{x}{An \R object of class found among \code{methods(xtable)}. See below on how to write additional method functions for \code{xtable}.} \item{caption}{Character vector of length 1 or 2 containing the table's caption or title. If length is 2, the second item is the "short caption" used when LaTeX generates a "List of Tables". Set to \code{NULL} to suppress the caption. Default value is \code{NULL}. } \item{label}{Character vector of length 1 containing the LaTeX label or HTML anchor. Set to \code{NULL} to suppress the label. Default value is \code{NULL}. } \item{align}{Character vector of length equal to the number of columns of the resulting table, indicating the alignment of the corresponding columns. Also, \code{"|"} may be used to produce vertical lines between columns in LaTeX tables, but these are effectively ignored when considering the required length of the supplied vector. If a character vector of length one is supplied, it is split as \code{strsplit(align, "")[[1]]} before processing. Since the row names are printed in the first column, the length of \code{align} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. Use \code{"l"}, \code{"r"}, and \code{"c"} to denote left, right, and center alignment, respectively. Use \code{"p{3cm}"} etc. for a LaTeX column of the specified width. For HTML output the \code{"p"} alignment is interpreted as \code{"l"}, ignoring the width request. Default depends on the class of \code{x}. } \item{digits}{ Numeric vector of length equal to one (in which case it will be replicated as necessary) or to the number of columns of the resulting table \bold{or} matrix of the same size as the resulting table, indicating the number of digits to display in the corresponding columns. Since the row names are printed in the first column, the length of the vector \code{digits} or the number of columns of the matrix \code{digits} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. Default depends on the class of \code{x}. If values of \code{digits} are negative, the corresponding values of \code{x} are displayed in scientific format with \code{abs(digits)} digits.} \item{display}{ Character vector of length equal to the number of columns of the resulting table, indicating the format for the corresponding columns. Since the row names are printed in the first column, the length of \code{display} is one greater than \code{ncol(x)} if \code{x} is a \code{data.frame}. These values are passed to the \code{formatC} function. Use \code{"d"} (for integers), \code{"f"}, \code{"e"}, \code{"E"}, \code{"g"}, \code{"G"}, \code{"fg"} (for reals), or \code{"s"} (for strings). \code{"f"} gives numbers in the usual \code{xxx.xxx} format; \code{"e"} and \code{"E"} give \code{n.ddde+nn} or \code{n.dddE+nn} (scientific format); \code{"g"} and \code{"G"} put \code{x[i]} into scientific format only if it saves space to do so. \code{"fg"} uses fixed format as \code{"f"}, but \code{digits} as number of \emph{significant} digits. Note that this can lead to quite long result strings. Default depends on the class of \code{x}.} \item{auto}{ Logical, indicating whether to apply automatic format when no value is passed to \code{align}, \code{digits}, or \code{display}. This \sQuote{autoformat} (based on \code{xalign}, \code{xdigits}, and \code{xdisplay}) can be useful to quickly format a typical \code{matrix} or \code{data.frame}. Default value is \code{FALSE}.} \item{...}{Additional arguments. (Currently ignored.)} } \details{ This function extracts tabular information from \code{x} and returns an object of class \code{"xtable"}. The nature of the table generated depends on the class of \code{x}. For example, \code{aov} objects produce ANOVA tables while \code{data.frame} objects produce a table of the entire data frame. One can optionally provide a caption or label (called an anchor in HTML), as well as formatting specifications. Default values for \code{align}, \code{digits}, and \code{display} are class dependent. The available method functions for \code{xtable} are given by \code{methods(xtable)}. Users can extend the list of available classes by writing methods for the generic function \code{xtable}. These methods functions should have \code{x} as their first argument, with additional arguments to specify \code{caption}, \code{label}, \code{align}, \code{digits}, and \code{display}. Optionally, other arguments may be passed to specify how the object \code{x} should be manipulated. All method functions should return an object whose class is \code{c("xtable","data.frame")}. The resulting object can have attributes \code{caption} and \code{label}, but must have attributes \code{align}, \code{digits}, and \code{display}. } \value{ For most \code{xtable} methods, an object of class \code{"xtable"} which inherits the \code{data.frame} class and contains several additional attributes specifying the table formatting options. } \author{David Dahl \email{dahl@stat.byu.edu} with contributions and suggestions from many others (see source code). } \seealso{ \code{\link{print.xtable}}, \code{\link{caption}}, \code{\link{label}}, \code{\link{align}}, \code{\link{digits}}, \code{\link{display}} \code{\link{autoformat}}, \code{\link{xalign}}, \code{\link{xdigits}}, \code{\link{xdisplay}} \code{\link{xtableList}}, \code{\link{xtableMatharray}} } \examples{ ## Load example dataset data(tli) ## Demonstrate data.frame tli.table <- xtable(tli[1:20, ]) print(tli.table) print(tli.table, type = "html") xtable(mtcars) xtable(mtcars, auto = TRUE) ## Demonstrate data.frame with different digits in cells tli.table <- xtable(tli[1:20, ]) display(tli.table)[c(2,6)] <- "f" digits(tli.table) <- matrix(0:4, nrow = 20, ncol = ncol(tli)+1) print(tli.table) print(tli.table, type = "html") ## Demonstrate matrix design.matrix <- model.matrix(~ sex*grade, data = tli[1:20, ]) design.table <- xtable(design.matrix, auto = TRUE) print(design.table) print(design.table, type = "html") ## Demonstrate aov fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data = tli) fm1.table <- xtable(fm1) print(fm1.table) print(fm1.table, type = "html") ## Demonstrate lm fm2 <- lm(tlimth ~ sex*ethnicty, data = tli) fm2.table <- xtable(fm2) print(fm2.table) print(fm2.table, type = "html") print(xtable(anova(fm2))) print(xtable(anova(fm2)), type = "html") fm2b <- lm(tlimth ~ ethnicty, data = tli) print(xtable(anova(fm2b, fm2))) print(xtable(anova(fm2b, fm2)), type = "html") ## Demonstrate glm fm3 <- glm(disadvg ~ ethnicty*grade, data = tli, family = binomial()) fm3.table <- xtable(fm3) print(fm3.table) print(fm3.table, type = "html") print(xtable(anova(fm3))) print(xtable(anova(fm3)), type = "html") ## Demonstrate aov ## Taken from help(aov) in R 1.1.1 ## From Venables and Ripley (1997) p.210. N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0) P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0) K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0) yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0) npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P), K = factor(K), yield = yield) npk.aov <- aov(yield ~ block + N*P*K, npk) op <- options(contrasts = c("contr.helmert", "contr.treatment")) npk.aovE <- aov(yield ~ N*P*K + Error(block), npk) options(op) summary(npk.aov) print(xtable(npk.aov)) print(xtable(anova(npk.aov))) print(xtable(summary(npk.aov))) summary(npk.aovE) print(xtable(npk.aovE), type = "html") print(xtable(summary(npk.aovE)), type = "html") ## Demonstrate lm ## Taken from help(lm) in R 1.1.1 ## Annette Dobson (1990) "An Introduction to Generalized Linear Models". ## Page 9: Plant Weight Data. ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) group <- gl(2,10,20, labels = c("Ctl","Trt")) weight <- c(ctl, trt) lm.D9 <- lm(weight ~ group) print(xtable(lm.D9)) print(xtable(anova(lm.D9))) ## Demonstrate glm ## Taken from help(glm) in R 1.1.1 ## Annette Dobson (1990) "An Introduction to Generalized Linear Models". ## Page 93: Randomized Controlled Trial : counts <- c(18,17,15,20,10,20,25,13,12) outcome <- gl(3,1,9) treatment <- gl(3,3) d.AD <- data.frame(treatment, outcome, counts) glm.D93 <- glm(counts ~ outcome + treatment, family = poisson()) print(xtable(glm.D93, align = "r|llrc")) print(xtable(anova(glm.D93)), hline.after = c(1), size = "small") ## Demonstration of additional formatC() arguments. print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ",")) ## Demonstration of "short caption" support. fm1sc <- aov(tlimth ~ sex + ethnicty + grade, data = tli) fm1sc.table <- xtable(fm1sc, caption = c("ANOVA Model with Predictors Sex, Ethnicity, and Grade", "ANOVA: Sex, Ethnicity, Grade")) print(fm1sc.table) ## Demonstration of longtable support. ## Remember to insert \usepackage{longtable} on your LaTeX preamble x <- matrix(rnorm(1000), ncol = 10) x.big <- xtable(x, label = 'tabbig', caption = 'Example of longtable spanning several pages') print(x.big, tabular.environment = 'longtable', floating = FALSE) x <- x[1:30, ] x.small <- xtable(x, label = 'tabsmall', caption = 'regular table env') print(x.small) # default, no longtable ## Demonstration of sidewaystable support. ## Remember to insert \usepackage{rotating} on your LaTeX preamble print(x.small, floating.environment = 'sidewaystable') if(require(stats, quietly = TRUE)) { ## Demonstrate prcomp ## Taken from help(prcomp) in mva package of R 1.1.1 data(USArrests) pr1 <- prcomp(USArrests) print(xtable(pr1)) print(xtable(summary(pr1))) # ## Demonstrate princomp # ## Taken from help(princomp) in mva package of R 1.1.1 # pr2 <- princomp(USArrests) # print(xtable(pr2)) } ## Demonstrate include.rownames, include.colnames, ## only.contents and add.to.row arguments set.seed(2345) res <- matrix(sample(0:9, size = 6*9, replace = TRUE), ncol = 6, nrow = 9) xres <- xtable(res) digits(xres) <- rep(0, 7) addtorow <- list() addtorow$pos <- list() addtorow$pos[[1]] <- c(0, 2) addtorow$pos[[2]] <- 4 addtorow$command <- c('\\vspace{2mm} \n', '\\vspace{10mm} \n') print(xres, add.to.row = addtorow, include.rownames = FALSE, include.colnames = TRUE, only.contents = TRUE, hline.after = c(0, 0, 9, 9)) ## Demonstrate include.rownames, include.colnames, ## only.contents and add.to.row arguments in Rweave files \dontrun{ \begin{small} \setlongtables % For longtable version 3.x or less \begin{longtable}{ <>= cat(paste(c('c', rep('cc', 34/2-1), 'c'), collapse = '@{\\hspace{2pt}}')) @ } \hline \endhead \hline \endfoot <>= library(xtable) set.seed(2345) res <- matrix(sample(0:9, size = 34*90, replace = TRUE), ncol = 34, nrow = 90) xres <- xtable(res) digits(xres) <- rep(0, 35) addtorow <- list() addtorow$pos <- list() addtorow$pos[[1]] <- c(seq(4, 40, 5), seq(49, 85, 5)) addtorow$pos[[2]] <- 45 addtorow$command <- c('\\vspace{2mm} \n', '\\newpage \n') print(xres, add.to.row = addtorow, include.rownames = FALSE, include.colnames = FALSE, only.contents = TRUE, hline.after = NULL) @ \end{longtable} \end{small} } ## Demonstrate sanitization mat <- round(matrix(c(0.9, 0.89, 200, 0.045, 2.0), c(1, 5)), 4) rownames(mat) <- "$y_{t-1}$" colnames(mat) <- c("$R^2$", "$\\\bar{R}^2$", "F-stat", "S.E.E", "DW") print(xtable(mat), type = "latex", sanitize.text.function = function(x){x}) ## Demonstrate booktabs print(tli.table) print(tli.table, hline.after = c(-1,0)) print(tli.table, hline.after = NULL) print(tli.table, add.to.row = list(pos = list(2), command = c("\\vspace{2mm} \n"))) print(tli.table, booktabs = TRUE) print(tli.table, booktabs = TRUE, hline.after = c(-1,0)) print(tli.table, booktabs = TRUE, hline.after = NULL) print(tli.table, booktabs = TRUE, add.to.row = list(pos = list(2), command = c("\\vspace{2mm} \n"))) print(tli.table, booktabs = TRUE, add.to.row = list(pos = list(2), command = c("youhou\n")), tabular.environment = "longtable") \testonly{ for(i in c("latex","html")) { outFileName <- paste("xtable.", ifelse(i=="latex", "tex", i), sep = "") print(tli.table, type = i, file = outFileName, append = FALSE) print(design.table, type = i, file = outFileName, append = TRUE) print(fm1.table, type = i, file = outFileName, append = TRUE) print(fm2.table, type = i, file = outFileName, append = TRUE) print(fm2.table, type = i, file = outFileName, append = TRUE, math.style.negative = TRUE) print(xtable(anova(fm2)), type = i, file = outFileName, append = TRUE) print(xtable(anova(fm2b, fm2)), type = i, file = outFileName, append = TRUE) print(fm3.table, type = i, file = outFileName, append = TRUE) print(xtable(anova(fm3)), type = i, file = outFileName, append = TRUE) print(xtable(npk.aov), type = i, file = outFileName, append = TRUE) print(xtable(anova(npk.aov)), type = i, file = outFileName, append = TRUE) print(xtable(summary(npk.aov)), type = i, file = outFileName, append = TRUE) print(xtable(npk.aovE), type = i, file = outFileName, append = TRUE) print(xtable(summary(npk.aovE)), type = i, file = outFileName, append = TRUE) if(i=="latex") cat("\\\clearpage\n", file = outFileName, append = TRUE) print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, latex.environment = NULL) print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, latex.environment = "") print(xtable(lm.D9), type = i, file = outFileName, append = TRUE, latex.environment = "center") print(xtable(anova(lm.D9)), type = i, file = outFileName, append = TRUE) print(xtable(glm.D93), type = i, file = outFileName, append = TRUE) print(xtable(anova(glm.D93, test = "Chisq")), type = i, file = outFileName, append = TRUE) print(xtable(glm.D93, align = "r|llrc"), include.rownames = FALSE, include.colnames = TRUE, type = i, file = outFileName, append = TRUE) print(xtable(glm.D93, align = "r||llrc"), include.rownames = TRUE, include.colnames = FALSE, type = i, file = outFileName, append = TRUE) print(xtable(glm.D93, align = "|r||llrc"), include.rownames = FALSE, include.colnames = FALSE, type = i, file = outFileName, append = TRUE) print(xtable(glm.D93, align = "|r||llrc|"), type = i, file = outFileName, append = TRUE) print(xtable(anova(glm.D93)), hline.after = c(1), size = "small", type = i, file = outFileName, append = TRUE) if(require(stats, quietly = TRUE)) { print(xtable(pr1), type = i, file = outFileName, append = TRUE) print(xtable(summary(pr1)), type = i, file = outFileName, append = TRUE) # print(xtable(pr2), type = i, file = outFileName, append = TRUE) } temp.table <- xtable(ts(cumsum(1+round(rnorm(100), 2)), start = c(1954, 7), frequency = 12)) caption(temp.table) <- "Time series example" print(temp.table, type = i, file = outFileName, append = TRUE, caption.placement = "top", table.placement = "h") print(temp.table, type = i, file = outFileName, append = TRUE, caption.placement = "bottom", table.placement = "htb") } } } \keyword{file} xtable/man/toLatex.Rd0000644000176200001440000000131613050750607014217 0ustar liggesusers\name{toLatex.xtable} \alias{toLatex.xtable} \title{Convert Table to Latex} \description{ Function creating a LaTeX representation of an object of class \code{xtable}. } \usage{ \method{toLatex}{xtable}(object, ...) } \arguments{ \item{object}{An object of class \code{"xtable"}.} \item{...}{Other arguments to \code{print.xtable}.} } \details{ This function creates a LaTeX representation of an object of class \code{"xtable"}. This is a method for the generic \code{"toLatex"} in the core R package \code{"utils"}. } \author{ Charles Roosen \email{roosen@gmail.com} with contributions and suggestions from many others (see source code). } \seealso{\code{\link{print.xtable}}} \keyword{toLatex}