ࡱ> n {ߡwיЁPNG  IHDR0 ܤsBIT&C`PLTE!!9)ޭJ91޵!{ZRkcKVtRNS@fbKGD IDATx횉HYC!m@t#39vD2N9^򒗼%/y'/W>OuS%,3d?wHu;',3$ ~%?OBvR::eVCkvԩ0 $ T"fZPv.I/g ]w]Eu pW38 ! )8:3 eB Lѩ 4攉(;|5E(tɡؿn5ϕ\<4;لfdV9p1Ǯ 4=f-EG0xpNT Yԅ%kq#ƠDhFD0(0fUk#SȮQ 5;`Pqa;Y[_vL0],JdPGhԵg@-pllK]xSGj$PZtlb IfqQO\sjS8-9%@ۥ!U=≆n,PJC&xArmJojLd㩖dP"I0Jz2Vˉ.f`^/F3 xP@ K)x͍:,@oѫ¶#A^x\e-B(vȬvhN6갣ݠK$Wg|KZb}:QI>f褶\{VR]n-h"w®ac2 ߊRWf e'"F! 7#d$l=DIRcɨ ܰ(J~/LZ*Xr4rZ5rC$AZ`>v(Y=պ_A4%]HC >=407R5bgV Ȣ'Y3sx|b7Q#HUkȪ*!%@v9$GC.]LuVSf# &J]m=];qON\tʄH"4(C?O2^wy/gY`4Νnnջ$|Y~H5"w(|>x,'wo }z#+t#5%5hc>"|_@ƙlD>d-b gdKBޫqDJQgY葍:6jG#2<&;GH#!-W^lG3/~܎O=ȁQ ՗3о:{q1*s. 5d=)@( rT\^ )ꪞ[YNk)?RgD%EZelrbU+=gpA`̪_@azmƬ 6~(`ѨW x$cS&ŸMpWl^^_*C)rFY&"-2mRm]?J#N@GoGoO= дpY#3y5(Xn?81qXU3 kSpVR;z"4+Iw1MR(t7<"ç˸>Ї9аâ)B]ȷ:ѐ蟋G?O#-@:r!Xh. DcyoFjz#B|G*"2 |c l xJPFel#+t"Fxfa Gii)?J]ÆFʒ\2IENDB`@= EqUtOj>}S0(:a*3 x[ol{~v) Uĉ F7!KiB@M(# M";8A!DHUR>h7;~ݽglrgݙٙٹGDj-lNP0bQ5wy4V3Du,Β FuEͱB@l} o5pP68=a kggڍ1KEfG7arE̓藱Gy!cA_3>@ ` q8l` 050A;Md2 uyc[̯@{ u(Fy5[(~Km=xTUѷ*zw)JE_m6Ww;oٟb+V~IEðf>=T3yJg=]|kݞ8F{ :6Bsjbץ\#bR瘑>hۚy w{#C Ԓ=YFjD۽b9nW7uzhy]sB_ԥ9zu>G y ? ֠/TKBlۢKPEߩ;}oU.ERRۨ|6'{ϥTE@џQgQ~RY^.GϨܯַJ񽘸J͇R$ˈӷ։uX/;Yx}l`CGO8ti }>煔ːyH҇}HG}Tl;jJ2(_T2dޯdޯdT2*}*_]˝s3t,֦Ĵaq >2/UY&uO:wQ{Rgn@9c0}LwPIt<xpS0{Ad*u1c^(0{cAX*u_r9V1`Ρ0gry*u@!՞?YG.'.>jte wX$.NnˏSqju#NcV?Xt9cu9b]$_#d bčjeyL<5l_V>UsDc8@&zَLZQ?c؝_9ӨYJye֑-(+\"qָ͔,9}^DC?gTc?|o=Dޯu>eWŬv}̳{쵝86D7aT_Mxn P:pW̗ZcRu:;}ܹRzeqTrUQi9ڨedr 9sBϽ x. kyٛ"- cM<[C\ky <ny³=%!rXْRTk1釀ߒywfR>y;aYC^EmGPGw#)/*ƦnXՍg2r(Mk9>Zs<+~10+&W4rw>9'Դ=W#uN`sX>x sroI?{+Ӣ[͌llaeL$I|sif*{-;G^[,jvYiv,O9*KQzWg/ɹ¨ue KV|Kzg%̸}בG]LG\o\ة-\.{/{}eNY367GΡ{=v";l>D|J\Y7nh JbOQ r 5eJ}26m}.m{z&vgֳbL v/GMό:[ {V"Wwýaq@a-^֙:g,ǝ~g$U?δ Rnhs!(SkI_nPNG  IHDR0gAMA pHYsj IDATx?%GUrŮfdyc6T cH01f+!x^njv]k7۽ͭbo4M~%RKWGVf{YU雋{}nnfN``sY:r@ʨ_ Orဈ"ߘ'o׫&.Gj^fi`cKWzk7I)2ZUf[ߨ[?ؚvcNoHoMn@4ۭ 5^r4uf)3kom_M;l[{sԜ9m췮ms<6W'eډ^ا7[zahuq5":ֵ6FmM:kWv9/ʴf9;׾t;סsmF|j5wJsWnm]Vd^־7 ҺkxJ/"s1k1o6l6mZ{Sw>S_Md܏[iMn-8{sW浺1o=St;UmOswO3pR,?{_Uk"Z-z+k|[Cm!r.éoErAw^|˛l~c{pI1}"aDz7ǖg1-݁ixǥl;kF_o/ۭxWo/ۨig a6}QFeZ: mEE!~Q^.4z9^ Z,M_({^&WW>7fq#=]hOSs/>6dRȑ|zK+"T+2{tyu٧>]6Wʃ>:=>n_Z=?_>v3ab[4ƾޒn Z])H4R#ܒ~R#Yo'^SJ|szy ty[~_ohju@ty:i̭jS z]0llGԜ)ƃoGeR\ڔjj]o3оV_W6}wjngͽԞ5Dؑk\u#ǯb}wsmJ|JD?xѲ7x۔xONMoK"zcۛǯmӕe^^'o~چ="~C?#ßnj<iE{O>% /f]n3cPkǛu3D}{wT2AOٝẘ3[D !G{WNN7;o:{7ON uǼyx|U 鵼y[=I<5mk\oߜ7O~ok[͇:xM?J{۴Gy1J]T:}}b}*޾rӏNW:;W͑^;"z)Q3evտ7Oj_qǟ?}1kyO?Z7>YQs?jD]m'@o}`7lx׮8\V2/4|<)TL 3r+IDo竫f?>oۭ|w?\%x3O2uxQňVD?f~?Z]Ծg=ZlGtvw]^߽6G޽{{G}{G/{1?Fw}8R["z7tE K3v_/0ɍ6h۹]oPqӏ'( ^}2j{ۏqmeDzWuJe_G_ѱ6t{yuҍ_;~1d;O/8jId+Q?/WoKGnε^;j *>iLMX~,=O}qko|r'\{"zGxӳͳ;Ǣw'TM=iCSY.Vlg<.J^7)zӿ7u;#ءoo_2oycZZ᷷?8k}}T+i~љ6?Kyc66EKZ)s|l2;&Fxݝ7>9RƜωwpk̹2F_ƜsNDkk* 1#v]kF}Mx|zxRѼi6Gټi6h:4k<^atLi&__|`ۑ{Itx{ͮ2^qgou8gv{uǧjo9x뵠U֕nF?lsLJ6?;tvkKo~m"Rκ_|Gx3FN#]b.xJl--hVVΚ'QD?G7-iоr}ƻw}}?n뵿Rx<1/G;Ӟ'>ݮ Kg<.Ӄ~(&iM{i'Wom~mo+g-ʉטjvz;1./-Cy%0_]5]دO6W1[u3Ni7bS+)e#<|T/㗇?7]jNS:7oJjp<ޥu̗)OD;o~5Sg~Ռ&}Ut'S-DjL{2e׶ZaہmVc<;59o30}kgx|aҫloG/SP:fWn76x޳6zx"rmlEԬpʹ5{orդ+W~ 8?^?|{kc#G٪==p36oxJn3ODmL?ޝQa8{/6yըh|cmݍRZ^u/ǿ?'?;DLSauy{VDC޽lmcgAfJ6#ݦ^iشsig w210h]s5}<|y wx#Ix]VRϭ93lg<^_'dn-^_ 'UIsm] ΚdgμcH/x?~u_|}^~OWn[Wnִ;uМvZĜaGD/wO}>/vʼn]FK7zs<~鵣S5645V~|k3北?oͤVk 4osM:5x듧giw=n}ѫ{=tEf] /Nd.^lcJ~xL4xkwAׅmYN{7B}+CjN+xE^{xr9 xH`<>.Yr{2Uv<=e/c`yQSȹN6Z@m>76s7or=lֽZS3Wo;f|C|i</ r!3ymj3mM7o4j7lͱ(!-#cxQjw1v 侏o^T6(rm}}o\&xLJ K.M<& m>'m47-=xo^ߺzz"J๷W׋#f܃o{'уxJ{ީ,޼%=o05'>}mzfbkyRG'ۃ_[@YTŃF{gl}ћk #O-#6̨s&W7}867FLx|ЛX7ԢI=6փo>=/WC%}zv ?s׶Y+ďד?~LW?o{Dc{i2+j\j69t}nnf[25t{nLK#s_?Qv.>m=Hď߶9ws\o]+j]y!~qmF|j5wJsWnm]תEWt/kz5^C}t˾o\eɷe)s%[7|s!`6'<ɴ*gfS%bu.yeKi˗R;Uqdf$(U0W?j/5uc3p^pKB;x¬^8I3VʴI62dq1IvJ"g)lzRqpkB c`(TJS}?/6~,ϕgISq::}yFkߔgYE^ZAq0@?ukLJ/eIKTЅa~ m|4'<Ik<ᣡ@wnoe{0i0̓_(O"¿8bNBUH8^Kw}t^3pynz+J>\aFTQ:/Q^5ok<" 06+k/.ämnOfuꠤza|jr褋XW<łr]oqO]|ꏈwḮ%LnW.,K~B:A?ƃg^2z#cBvu54<+7]렊ʻ%î xא{|%uG*JDٓzMͷ|TFWk"Z,7<miiKyb&óٗwB^ zJo{|)=]xj[}ys2DdyOQ!+X5ǾbEtx^?͛O}7BYwba,DDiwUQ.ke_yE'w$W|iN~5^q~|Ct}kAah ^(_,uD~z]ˏWSrP0j][3% ;.ږè#mw?XƏ7 vY~< lHwγb(::{<:^1'k/<''yHD;JHc{_[yt/"ud^)YoFD{tk:7s211@lqSdmo k"bG1<=3 `tx Z2t_D IDATc׋bM3=":t ѡ7b0A?NbMŚN{^T+͏hA Qm5waxZl:GSnM pu2`TXHР?=ZDtzA{n4^kcoxSL!SW9q_[)a״X)m?9x|B ^apRY.zPyS {mbj]b^G|xeɰԣ F_=U"w>&RphygֺQ{U ^<%;z=8ZD]yݵC) fJ80U{ʺ/'a&NhBPf@;b$7K۹͊A50t 6 ܼgl0.čFT)Ɩ?]A@~,O}!yt:)S9w WC_#t|^VKx'<> LJ[5w'ԴG9ũzxB2yNG sǢ[ϲDtb*8 j[- *)J_r't$=>{Ljy>w%=l{JGjP cF:֣/ӏl&=Ld2ɍIR)H%K+l HyӛEdU \yE"ف_Q^[~P,K 7εPOy"Źq廉CyLreB1ʌ q[xoyVn<E'gNW#Ҷ>q1[^c}^>cn<{DGdO¯*٥f<&۹185,,UjhFw 5wg..ŖRy*KUCK0]L x uf6"w)iTvX9̘ǻqy$DRFX&DW%6 3my!ŲZR޼ׄ.z%+Wlv5NԋzC0&0Mϟ=}Url2ZGN/^")a.2o2{c@U!7_;/Ͽ<_*Gwm=3r UU'Z:\I5h,~ƯI;JoWV=8?>ĩ˦/3}B|~By!|oTNSxt^;#f.o$>^d<\*#^UU6{ tO.k6''`W$+ ]wiHc]T綩wn^KHH|^!f4O:w!}X- ?C$+Do˫UG|%ZLڣ03s>Lm1VE$^7pT>WIS 5IYy}N_è G<o2Yv W.,*SHeKZߋ܅PL FݼVۖ~y:(MMrI, _w}eWhLlNSjB5w\\:$qI(W)XE?>tL/m9D.dC:y-4s KaM\̕˦{{\ާiu}h8(𿒯tYׁ!$߻:/7] BimU|om;."5f/5T);JvTUT7D>J^(B9|VlUjD[KIΣ7YZU]T/yH**Ȩf(Ϙ1e$IRK^k+&4[%Ѳ܎ U0;]I"Ss$Ճ(Pm^dKw.1qݘU\%ygɀUl W$zX]͌m)C򋷉-I}]|Cy+F^s!UyيHI~^Sx™vF^7P>:%x1jtU>YXPeV@xٯS濒ȧaڼI8ew2HGK쮏D^yR5,3$dHX\%\v!)P|<+}uLJgz/%`Aqxiyz]"Oq>nޤ,cڢFuuk(6wP03w ^zH-yꙿ3c(uЕ-ūU^kߺL$ZyfAnzS lP-xUzIڄA=IZ gHb9c4G,]K'zRj=)A"̬D=qϯ7v01黔5q<_#L)|#Sh-\$ǕakE#Ozt\|k#,М;$w^0 {wԡ7qAqRפ =.Q5+ /k/q5R\+x 8:(S#|;;wrhf3 4̺~ ֏g2kk%7Qdޔ 9:hx|qS+Řu"3ʎَ3ێk]>[7XIM2 +ELPE.k5R'ʬHQyjWB F[`hlsj,u6tzeo3l>S Zx"GDpxzt1ȟwRSn^ٌ%3j35cYB1et*P\+_e8lLJ0'd1&ʋ|C"iۂ-a…k\!#}=pK+y% -i (T:ƴv^S($-LފoiZ,jz ?ElIԏqBFՇTJ,:_C$Rį_h 5Qo3h1u%yU`4<{(#cAȘU [-u-,C]UժN¨* u՘7^vя`ǩtd<~(bDKO܄(*)X&yP`..ӏ/|y7[Drrڹzoyv0fȧ&f0CH5-тD/#~O$Z%+doF)3zBZ1% k/"?q!$'Q~IbGxď㋡U(L g.DnʧwG5NJoKP&r:wwOJ}̣TbsHfmoYY,0,UJ*`~x|GbBˤ[%Qke7n[N0tb Y4OP>d J-urOf#LI` ~|IhoIѻDO2)SV2_c穑hBm5ďW?C!-&h^qrt'Y(oyT~)@=>{LcZVНَ3-~ !٥KCbo Q!^k<|ըd}Jx#]W1i:-!ZZ.yKjQ|Fޯ{-؅-}_O,,m[iAjfhcV4TH^x&.{֏ mzb.0䮐hYҽDU a^N˫DrT5NW<Q5CByDNn/6'O!^XCia5"u/%s:sjOѓHAvkȑ' TW)cb9wD?7S=b&~5%Zٽ2-)CyG,ܚWRwތnB5zy3Z2њUxgKsewTMSc4+z<SDUJUQ)~;G^PO@6}f_]9%2=ThH=az'KaިV$ݭݔ#iCoL2.䳤U)$hӗz\{zͫs_kj]`Qkc(MĆ t31c 3'#[X)$ʻC:UfNej OD(xa ")B٥^y@E?'4_DWC㡒n;Pj^?Ugd0eFf7Cu~df^QCIͭv<RĉU{ `gIQCھ6qJSGRXaĨgez uUb~ЄIz3{o:0k~<ǃ]&9eڭ}~.NU$6j: +_[<5RpHWs~y$ avя$~GR.X\//\-eQ?5/tQz^c*KfΒqqECUA(;˵~||.b]EGZuiđӹ"5Bn|Z>sY%t$ZYa-em/=!CFdqa#^p=^;2}v+yӄN\TIzM9ŏߑyC!S^uW$o{BǴKkysge;3|3y̶{x/nH1W13Mէ%%3*=*ޅ{cz& #Q/,cyUz'($lZUR3U|j|jR+$U5䘭?w`IECe2.yS>jʚH6Mȗ%ϋ64ԫ0Cfbw0Iz€7]!ܽ ~x'B"ErW‹Ϲ( ŏWdfFͫ7\IS"T$NyM?Ke ?^qZEw/Oރ]:5x#uY{kc 3V +$ʻyhxIo3K[yϔxW+8Ofg.z"af;O3"dA*g^fgP,"o?.{gu{d Odee2C0 H˃fxll91HzTIpgzfKj[ZYggd`)}FYϻ;pdN&32LH 5yS>޹$ytӬ]?erC%wJSD%kYk ܰbLH˫U/az|$/U;KG?@8'd-[&  TJ*Ykv/+G2xZ{0 e =q2ӄ<)Rw^Raң-/gLJtH]̛](C=63SxiȃPΫ8RcP)]bըOe㭫^B{ `i%w+#Ը;z*.w{Ud*NR(^vJ{)6kU{yFFW٪}zvRYz] rn\f.F P!W^OԼk '_k ՠD2*YRL)T.$o=J],˘P>!TsMg a:\=3ט&lo*LKz=0dZ~l)֓M`={s*ZiRuu}3##}\" {⨲`~J4FX,dkzkcYzV5xiUܱfոw_5/dDF<-ФEj5vPڙV}ySnz\dWkܝ+jɑ )ߖww [)4б_z#$#0v8t=VV=|"OޑT2/ǛW*/%ZDܨ |^ICByQ/*3_̎2k,>jZM×g׫-S_^V^W|oJ]CPX 8 9Dx) r_,nFמ M?T:0Zɑu[x8Z > 13F?>e>#fU0,3%"<LJX"gH<6<u jhoV.IxUF7OS R[jStaKJDy0jsLZ3W^kԷoQ]G4G2'\9egr&GӌKZ=Tb rpL222Q?Ex>餸J;u+Y8*2|ԅ`YT'5{Y/Q;;gfy֏g}*fGz h'EO&,ۤ_֏Tmm*ghpfY)mu맔(reeo WL/Լ!mR@tbO2=(%LZ;LF2C zB,L20ԗgF1F5 ŝxr|D4H UAL첲bG j_Cԋ;g(Im̐D |1| zkSm <8zC %{Eu?`.ſվUU?Xw*j}Ff1)Ν53ok.BL@w=R:ʒ7`GMjPP[W$g-?jt=PrGxB%? ""p}EѝECUu\CꫢJ̿|z:wwxď_6`ު:dn%Mc4 .n++!|^#r?fMjx/x(ll׹Ax0 jj\^#2nbx9]do.md)#+ϼuIOZ(:@O_̎釉I3'?{y[ufW#EU?`yelIߤRꤼn2>cHꙡS{Aj`v_%N)vԏwǏGj̣kĝ -SVd={x(K}©X]ܕz{)tFF!Þ8io.`GǕP#~|x<_kԒ2 #[?{D"V 8L^|I)%楑粒zR~|7BxAjTzyQb+-HT~3?`*Pޜ9;`2ZbTG}ʳ~<Ӣ?|&T *? Q܏NPщ}v 6tۭ,]BW)^i̋\IUw !i̲ Pȯ>?LJ~6YGBj):=|RHlSҦx*K>)}6].4wT]-{7wtag=$CK3PF7mBK$vVkGuqJ6D>%,V*W:0~jlvяU0 `j g<> z$:470q7D[d>#z&4`KjHaW1F{D#suR*k3UV$ŏw)&ޕbǗ<jq%y^y7|T Ѽ4qS)`رx_p) c f@ǖb3c}I ih<?3BSx3Vpap\W#EfS曷\+LXP1ivc#J|RZ}}s{Sg~/)fv@WHWMPH4>5IfaRo% }H yʏw@S˃w fxhv2,$9="**<ŘS<B͙dr}BՈJV6jάP9hW耡c`V~ EG2eR3!OFˬ~xMm+sJ]((%l;|=Oҽi)3s#~3Ja]?ʎ3?_?PƝ˩mD%Ci`Ay^&Ə܏`>6!Q?˄TCq?3UVOz^%`J;Xf2" <!x:.ZWJHBI1Te@w$_vFAj 2V{gX~|DUV#K%?^X"ҝ K!9ezWOkW4}o <rN/jD='F*[͒y ?]eXBj$.ĻgNhWa4 fYqoStOk(Z5\="+$ΔR#[~bya1"x݄.|LF3ñhc$0J8Ѷy-[Ȩ vHp*EA¡x|CJ J00|w'tI%V/U)vLˑ!0JX8ISѯVBxUR4AY%`*}RVz:wAUw[+}d77V+>T м̷ͩɉMeƖʽp'멚!0U0FGTzϞR0;=QBN}FTf'Bb#rS9|S ԜI&'\hahS/I`^}èTu?AHj^֏x|կW76^[ko?9E.tD21V=?X %,(;WYu1>5/87j8FL ᜻l'=zӒ٥g'Φl),5N:D\5u(ߐjQ;KNx~we~<  TuZ E֘\{d?UUY>& _87UP꺳|A!L޾Pz>%CJ+?>;Z_8^hALvxHktWRPŔVDN╉x@6oSՎeIlQ̂Tw; OBvzI^eZd?npw7x%%"'du=mS)g/q4ƏOj" A9ʛs?w\SA9)Jl0 Q5e*$b%,T)x@6XaB~<  R`<~|lsď? DV].si UAl7Z;~EVX]/I*4aq&9%!K(G^yY¢c ~9 MCxBlF? g =Q ?z+ׁ+}<$̫Xg=X,TG_c;F x@6Wz@6cGPvd3Ꝙb3t`xoP{tza)Jj}e0x@6UKy[V._r@Jnx ztC{zW _cgp2W/Tad=\5ǛKr2kV ʾGh58 LzQU!墄J **g? ֲfjgM7t W\7Jil> . x@6WFDPwiQ *=ez&V: x@6׹1] BY!NS$._T_n]y]Rs+ .ʌbK UUhCUfJ 5PygHI7oCx@6U%}&IDATzqpۤI(T@9+\y f6~q=ۓ`p0 Ǐt~<@H]x< ̫``^= dSr;8zxf0bYO ,GdBJe*扝.3&W}N@kY%ȫd?HIM"x&aXшVFs+TiaS ]6AdìsWoaଢ଼qW$yCy FdFrgA戤Σ Pjx^kxqj`TYW+G!O?MƯ%YxEh 2Z%Qq`<۹ݡMXPlQCIdtf祧ٌe]Fx.inPyک!ńEFO-7JDx(pqv$ E7$Jk0Qw bxg֢,ЄA.R( <|̫!ď`ZAxT?iT?MxT}yT#jYQȦӪ~ apcl!5Q$Mڃ9aVī]Iyl$zRsjHG4H$isVႲVnE=)6 ?Ou4}w K"3G;4]BG5 {CLRSIysCKoZ\uRtT'Ϧ7W=zq;v9)l*~% ?.ę/"޼dS%\Rcƥ:;fd:"J ˯@9қJjN|:wRyQhw=tr!1 z?IxEܹ`1$Kyl?KF+$σ9?x74-σ9?xs ?|.g=|T)ť UČ^vȦ:wg$坵wk<>z=ͼ m;zԕ`kj z.?|ďANku[yd3x䵿y-i1a/A噅r$V[fnZ&1֗Pxj%bH~< i`:7WonPE02_&,cƴ+|Y9EnR2xz3)bC"ClF7M?e<l~uPZz;K]P28O^_tB5~< َ3R%McGK@WYhȻzîgL[R;;Bys& ) fd6dy?ledaݐkLTHhqVE3 Y̊mvf$_nȌ q2AlScw .* E/T27#$}^`*2WHWď!ďϐ))*{$[xA=4w 3mKp*j)B}ȩizENnlf8~$.d8^HȵvAz@63% 1t\9F%+օ;ߍoXWIYRZ 4z LwN kr?+z!@B9}xNKQm=jTfQܮ `Z,?{r}2y y/Ͽ<_>{q̏b>:|x&&2z`LޏGx˴xBL؏'}sd>./@RDFk\w52m?ޥ0s1P^ʰY+w=^jzs"gkT0a?T/UPͥ0[Aaͨa<3;T޷npq3%$ʜ/vsbݪ1Zy҄Fs ʑ\9"f$/o^+ME< < s9wС:Z DXG\9J ;nl94څ*M\ * a~<͐u$Ty"\!~w~r1MDݛ7ٟ?3a]{-+9j}(sW?L.^}\ )hY5ӽcc~|=@. ȫ_iBIE]v}kFUܷ| cqN/^"ux_㶇RH-t]#l^J7n&is2V9'}۟Z@]x꺝6IMLm>ܴzSuT+GA]xZ_fbID :wL6D[^GS/_epS8_vGzF.w,=3یm.ހW RwP7nb ?[T&ݹ"gcJݱ4-zŏm{6oYFw,{Apc P]xq2{K}nw1\fls*#69[Q2{톛z7ŏmƖ9{9W'!cޱ}hw1\flC'Txwln]c ?[ٔ߿oDb ^;v 7N1ی{*\&Rw,=0یm&AXŏmƶyWA_mh??5=EýM hʷ̎oormyqbZd nj@t<[fQ[oq7U0 s̓=`,^?Z{IENDB`@=R[⊻jP>+cThpa*3 x]}U?oG?mqmbkA4Q[kQtnbte؅#55RMZZ#iM&&&&F, MmHE=s;ݝN^r{ܹ39~!L9KWg^YDǦ\6(C7%Zr,S=х+{-Ki ߞha:ޟdNgҳÕ&qبgt:JKzv:U?iB_g}ަ2_?Sg咷WRmӸ:wn gSW˫JWoy>Ϩ '^4i68ိS x>E<Ӗ^?cObRa3E'ry#osח7]_r%՗XKt](b6mŗ^zP<򵨧㨧6}W2DxK>lPS2]C iCFni4z&:Oz&Zhn|2F3p Ek81˙t‹N%^73\xJ.)4;g+"mlvxaZ‹ie/L+\xDѷE~r%^]‹|*oH8*7)n ;)뼟:笠ηS\)s-/:rKۜZ[(-y/uKqo7S\ڦ:%ۼZQ\Q\':$?ziN\ˡcmkk^\ˋ}yumFxm6\8rXۜZ:6!ֹ){(Go?.b'YDv2m(ͽbcJmQd39Sq}e PJ~=Mu3\2+lLo小[ "Fi}gm19u\oۃ( LL)I| "F0_Wém® 1J·qś3i72no2|xS'V9<],>Da|aϜI9 "F+0>tV9&quw|yIjװ|C(c6}gb1sτ˃(N)ǽBQ'g.b~ X!b CLWX9>1&\$F04MoXG8MN}c0 1ʜL\L_8fSq̻&8H2vm).߫ɪrZ6r})ݥ1P4c6=9oG7]-;a }Qd7!by>0[!b9In厀 s;-\ Nw2 K`CV!b9t+z `̃?X=E&|X0µ1YGaZXdLJeVX!b)I0=D,Â>C1dGvqL}+>n;Jc 3m_1kc}-3m彵j܁[fPFeL'k>|1b֤],܇O֤}0> YvY]Xτɚ_ף9nbdOmv9fmL5^>Ç Xac`>&܇Oda>VY~ɞ,'=s1 øcAg{>ÇƇXn13 !=I>|?m6K s/2>D|ʇoq!I{;[X܇OaVY|/z}d^}68fwԾRZk,r)9QSuZ[,Js>JsMMun p^IBE*4E~g8ʡӞ[B ht疐疐6R&ڇ>Z}Ч(S9M=C*h/3:JcDw_Xɰ063֗R?UZC7Q'`8~[*ogɍd63ǯMLqm( ><'tS\I>bY7j,si5(WoW IҹL``IQdžy?J6c[6:y,7JK$'5浨B^sSu~Zm^_WkXOO1u$ lCe?h\vcm7^6|f ! /0P dƖwpO38K߼s~xM"G-?ϟ}bf<:r 95b~ߠ+))."ݛ^ T#YQ86*W~#;n}_*#<[TG?@WwI< 4K(*| c_'ٗ+R} c4Lܗj_FQ/a=nܗpK|GTKIKs7kܗƠ_/ ח+үܗ{Ji|i&]@hiܗj_F?| 㾄+\_Kr_z,nf7Rˈ/a/ ח+kTKQ:_B$kT2b㾄+\_KXw}Η昙ONBY*\ccZoPWH&xCZy\q&o=(7{_dJkeZMQ -.s7tz[a-%t=m]QԻ|+z#VԤJFU6Bf ry>6k"۬Mw;n=PjQo=Z#]_][B+Ӌ)$^{=! PXSnhRdIܼn^}L|hdKҾ6P8+W)lpԯ>(G~ b~-%hM}@r~e3SjGyS2o-Uw4αi-/vѠ'J˴9s&˙,I{Sݶ/f<Bd'[cKw| c1,~,mÖ%,$;mc4vNq;_vm'W$;otE{R'Jm+)GO3SOSd=Q"RqaKeq۾NfiLPO|y6FVC vRg:bYOk8k [ᕙ7\\s>Bܛ>P(f&V[b^Ös+;Jj9ݲN&P]?8Ҩ0I}%tZ-w @= %: )55$:cu3j x[}lnJM8?*&hRK.1vC唫 J" ˧DA*QBPETU 5B}o|vo;Zsc͛yof#>@ ѻTV@tD-wtIѵݞ"j ujܿҔ!EQkzXo<@4.[ ꛃ2L'ss CJC;☾{O_arLhboוuwuw [/eO8Q&/ S ^]m۵Ww= [oOѕ|>_f#j^Itt{&֩nf\u=D{8F{; FK|ݜua1D&. +2L4Loѷ\Mі,-NѺyll^Θoew4βv#lZ?etOχy>0/߻`Jޯnܻᨡs/>ήyߧ?7DzK0yȯ E?c Sw*|)z_ ߮mTi;NU_W= G_VŸVx aAj8kww\ ^=kGagl0M3\]l3EAng?qI?B"΋yyyyy gS==r|FmҍיyImQ]dwVA a zrW"ema@q=@!|82_mS's OuܖHFMcW݁D,>GrOʱz?_C_];1/3%Je|?OѣCvA z哘=J>k=D#J>SOHc}~=3T|81;\O|Ie."%+ZWd^Łfj gd)AYF׿?į9]k^9G,W +x+ذ>]; cs!~72ϙ?CYxh!aT_Cw Fл Ǵ ]@Sc\jlh]=>=>i6Z\'dzwYvSp]dEsd1h4 9[,́[b\@s14\ei@sU hZ?  K3I$^FXjLf؊ol4~@_pswo c9@xGĜc),`)8cL9V@k?Jv"(N~Ь>-8 {~m!݅slo/) 8us%~Mzʥϣ$97c=e؞u_+e`WdgW4|933{c*?֣n}'G=7?_'ۆ~s=?Es6w;ƶ?})Xֵ죸<ɽR\si)gQ*&ǃmO~el6&64%J[tr={I=7FxX X.o;uk&=GYeyٝ0^j琼mnx9^&;FhضEƙ(\j*ԯA6Z{/=(7Nlf}ʟQ+~|=@lXg#u[K{>G\}Tܮx'ж SY(FAoY8rW_\m74J<5:xoJ>A~Grvj3 B+GoQFz\|:ݞygrϪ1U|^XV*Gfg_ʋ\X^t^a~ԉeAq@a=o^Yg.]~_ud ܱQYmeV64wX@=%e^!loK{><qcu3j x]}p]E?7y/P0&qP4BNkiRSL@VH?($MNSa(ӱ*cgPA30CD;t C-vݼBW&s{w{ٯbֈ]MtDL6QD5ˈ."&J1U]ueo(X%DuϚj}ӗ&0{v8_qX3vvW/0[ニWN!tFT-U^6i\;Y7sko.Wz|&>!2Ll[t%wX<娧>al!xg1w' 6[i-P];&TѦw~5^~>_M~vɩGji#(y55Pg 9Js~xk@eJzxA2fuXL}3X"ҾxË|9K.Ȼ)>^^(,"eɅL+,"nɅy"`Z`Ʌ \K.1Ͱ‹tK.ȏ _H%m:Lqo7Q\(>뼏:ݎ)y/uKq6+))((;);)z|-u:隸λ)s{L?FIy?unˡc&un˗;r߶m6!s[͑CǶoܖrYGuбms:mJx[M oܖpйJ-vۏyy"_?6n29yuG+HLZ>Yާrzʞoe/ԧod6Sj1mz>S 1Jx=:="Y̩q*\$FW0NmrZ0,_1ȇq5Fk nYǩ9f o|ano2cs>QmAb1#!>@z>ViW0*w)>D2a|MU[_aW(>D2WaIziTZ]|;Yޮ1fIw|w3Ȅueccp,VAb9LW3`8<«(NƗ0=qc^ԃ Q>o0]J{938}^"=WH-Op&˧+>D%ȗO3pL]4_1p葉r߷p`{r:]w(c9|X0guE|X07%E|X0f1D,&ò`Y0Y?a Mb^̝~v"Ya 7=E}X0ZSF!bɒycXL}`n6{X; 0X |߄eoU=D,}ʇs1C"|X0+2[(w!d=Iws(7{M39 3ᾜr6\J4@}3,|F|`1ndݣC'ߤ} N rdiy䛺^߇9fsp">cPJ~_E ij=`10i[dO;Kf8s1>D|ćooZ}SLh=CVb7g3C>Sš@"<=5l.:ҙ\si:?w ne+\@rY|YJ7s)Fo:9U[Wp,x?.RpbOc%-W1[8Ul۪PBLILʔʐGc}<1HhxV'䁽IM#Hr/5y(53O^'%j2y}#O^M*+$,E;h`wX+(Ԗ8 !ß4)8N;{)Tr-e oWC2;F 箷gpjҐo[]0:$ 9?.?91_}|g\>FqFZW?%).=_^{>|Wؑ|oIS86*W~ti? >~ԔL7RT?ʘ(\?³O~ tsP܏s*M 61?q_*G1ނ/[/lK| /Aė0v=q%i_wq_/AW%\_ydc)4e> p} /F$s<ʳq_* K4Kt_')/M~|q_*OڗѸ/K|MKd^IRy7Ҿ}"㾄+\_Kh_K|Y}rʒ7=7o ͇r%.巄Оtڇb+l'}n {kHfZLQ#]w3h}^]#VYFфRrk~g|(]ڊFڊڿ:/o_.\#gMxuU'j07ʳQ9ٍGhٓF! $X+Q}hhKz*[CB֪޵n2^v q2/IZEد\ƪrvUSyG99,:޻X07d9.όVQ35֊d+KWLSC ggj,LR__vZ+D;p?F@=F `Er0Kl8cu3E  xmlTEp^zES&QQSm5Ѩ& jˇ="5FZJԐhh111ThDhٷӛ^Lμ=ZJ-,q H PUMLzX~kOqȾJ|`&A8۾ODH !\;U6rבmȶ=RiS42j 7җXuJ,~㧗F3&;5'%l_W//f{{{ma\O57# nƒA7w|o4BdaQg>o<[^;1]#P3L; xPWZݡxSu V7(|*|m)ǣ'?l~dǶfƀE-_k=t:=ҖXqGisqȷ>)z,w~X% p43iטO껗N}%-VUBV,YԭȱŤєm9HBMX7a&Iy<HߐѾfeƒmHݍ%]&}92<${/ |l-5/`.w|e"H/o  1}&Ey 0RV#Xr`a.B=o2:N=bz+|ekO0>k:AC^w/dL-;?]wY^wWFXe)pמ(,@Œ} Y޳|aYx$ #| MFQBKw,/ ֹ-Q%*})v оtq;b{KrŌq&U)lbۜvb*c$#[܍q/7 qS ŸbD㎇x}Hg p,a? [FwzƝn,]>.j" zXVbZoC\{j+w eeW1e [Vf?}Xqa5\|-UQ^y /p)0|Nd\l |?i?Xg\<Mb}m,m6{QY!䨱m\FM6划G/AcW߄qAcn3A[%$:s£i+ 9K ;HyL?Ϋ1 =R qh{\{F<}^j,m:,|LޖB'e-o X_~Y!,+X7{)@=׮/0Ȕ45cu3j x[olU]@"j ~ A R[ VTQE9$H 6&j MH hLH* ѐp齝vJ+7oyfg hDU1{cw=Y9YqBe΄!Q t*TtPb{ܛveTvvH:g, Md՞Us,n2Ms6?ɇ[㈴p'lAKACbxIEqXod,N_t}ܼ+y~y)>0=1L"$6z%A_:mY_ 4{Lzs&ԥ7:lKvMk<pEO <%wE-xk^# W-fuym!gW |7 | qͷ,l}35ay9'i_bH[w>%šf)&ևM&H.c+$u+4@KmH[v"tĚغk@>KHkm7F,;h^QGs^:+N:ԮtÚغkNeK udU) +XXs,#-} ٻL߻Ú\tWΈ8jnxFϥ\ƎditiRXt٦t`]8±.'.?Xtt@]"H?e+ oK"EN|$s`7ǡ>n//.w`HGnQk(_mb)GˁQ{ʁQ[XpC瑭}P6b{@I+},R#31F +I# Sq+˰-j0\² -*ݙH߱8yR*)Ƌ(,ORm{(^b3 ,MWW#Qvչ"-"yųSd,ǃ,ւn| LG,Fſ݁/LɁ2gxȿ@ށ_Lt_L+sOAZA7гu~Xc^2sLԤڵ9lɳ&rɘ! =~O%~_n\T<`}/q$8.{ׂ.e,yMbd.ں>·k:lƕ#!}CnZ"}5p_#|ZV?gȜh2؛cv=ɇܷ4甫л9g_AξE":"}1HƬ5h]u'NVebKf}72g n-Sy_1ӿo/`/*no]_]L>J/}/6WC= VN!ꈿzoTżҬwK_G σsM\2"rĘ?^V~0og;ņH ;toj Q%J&wmғy)bj5fE{Ai(3pr==v{/̲x O?&bӟisLCc= .c|e^3ት_\ߖߖ+lD߿L?  2Xcq0otzcQ3 `Qw&2oƺȼ]F?7Ft^ϠVlLǞg>6^{W{e7{; /Yc_|m[řW=V{A@0yku>D;>/űk`!=Bu:לnm/=-fdVpw~_;hY7C,ÒPVY(>?ljufg6ۻ^or[^?A[縯wxyz-ǽw-f̭ۖ=>H!fl;!@߀W- YR-͊Y+zEU^EJ۷mʖOMUE>ESgYECPC~H]RQù[ossL ;A6Z)1KU:3_h9@LBxԢK[ȷ61T,/ߧtEJJJJ? qߖyX>\HDx8%:x } ^0:j&p\Zr=Q9q/ҙ/c'DevM.rG>ku#JM|@/K.;E>:q}PuѾF# FK9r\xcKjnsp}p,A\O~G8jtth6Փ˲%9h ywƫ w/hNu]>p?/vC`)p^eƺ]xs^J9{~s_+)Y.q5m{sF-q3@Sqoy<E7k0Ah*+)P;c{aKH{hυ׺ܖ ,;z'8\kodFMkMR& ߬ >LuIuS/U8{UzƸ0_jx O)BKUu߶E[>C}1d yŐ3B;b|$J,l}5gūU7-jcv6 /47'`c> c$Wq8=50#I6)*Uպ~pt,1WcxoX>Qyj.毀>k'Υ}r7²@NP{ԫͥ!dX.;:KGIZsSf* w)}Eœ{?[ЇYg82mjguGYZuEOϽrƏS,oy(.d:C&BΥP>o-ǝ]~1CӨT|6&4%~ z֑yZ/_;^^0;~}3(HC%F&Kߒ=7xe#3nŇr y)< A~ZTIƹ0\Msigl*trN~ζSΝű'N]yeKUc!C yZm7a]EnWl7l>[,rMEož √K 9ך&k,ǞߌWXfj}5̩1:(   V*Worksheet Excel.Sheet.802Microsoft Excel Worksheet+Worksheet Excel.Sheet.802Microsoft Excel Worksheet,Worksheet Excel.Sheet.802Microsoft Excel Worksheet-Worksheet Excel.Sheet.802Microsoft Excel Worksheet.Worksheet Excel.Sheet.802Microsoft Excel Worksheet/Worksheet Excel.Sheet.802Microsoft Excel Worksheet0Worksheet Excel.Sheet.802Microsoft Excel Worksheet/ 0DArialrns/(0(B 0 DArial Black/(0(B 0 " DTimes New Roman(0(B 0 0DTahomaew Roman(0(B 0 "@DMonotype Sorts(0(B 0 PDCourier Newts(0(B 0 1`DSimSun Newts(0(B 0 pDArial Narrows(0(B 0 "DComic Sans MS(0(B 0 BDCourierns MS(0(B 0  1@ .  @n?" dd@  @@`` H@(d0 -)C-'?*+,(=-F__ y!"#$%&%-F__z<M<<S   * ./0b$ɿ(a>+, "$EqUtOj>}S0  b$!(SkI_nps$"$R[⊻jP>+cT="$%: )55 8"$%e^!loK{><"$`Er0KlN '"$׮/0Ȕu"$r In4u8C a 0AA@8g4CdCd@B 0ppp@  <4BdBdlhG 02ʚ;ʚ;<4ddddl%F 0X___PPT10DSimSunķ0ķB 0DArialķ0ķB 0 ? %)%Querying XML streams in DB2 XVanja Josifovski Marcus Fontoura Knowledge Management Dept. IBM Almaden Research Center YYIRCAgendaMotivation and background SQL/XML, XPath, XQuery, XML streams TurboXPath (TXP) TXP role in DB2 Design Evaluation results Conclusions and future work Other research areas t$*1$*1 >" bVG MotivationCurrent trends in DBMS: New XML data type and a set of new XML-related operators XML-enabled integration system Queries over locally stored XML data and XML data streamed from external sources Web services and business-to-business applications Querying XML (streams) is essential 6%%WHSQL/XMLSQL - Part 14 - XML related specifications (SQL/XML) http://www.sqlx.org New XML data type Publishing functions XMLElement, XMLAttribute, XMLAgg Querying functions XMLContains, XMLExtract, XMLTable (shred)t5'"*5'"* @,     SDXPathXML query language defined by W3C working group Operates over a single document (no joins) Single extraction point, returning a node set XPath examples //customer //customer/@id //customer[birthdate= 07/25/1970 ]/name //customer[address[state= CA ]] p0Yb0Ya ,/ 5TE XQuery (1/2)Also defined by W3C working group Extends XPath for Processing several XML documents (joins) Constructing XML results Can return multiple node sets FLWR (flower) is the most common type of expression65`45`4+UF XQuery (2/2)XQuery example FOR $c IN document("doc1.xml")//customer FOR $p IN document("doc2.xml")//profiles[cid=$c/cid()] LET $o := $c/order WHERE $o/date = '12/12/01' RETURN {$c/name} {$p/status} {$o/amount} FZ$( XI XML StreamsrApplications need to store XML documents in relational databases as XML as relational data Example Web services&f f TXP role in DB2 (1/3) ZKTXP role in DB2 (2/3)fTable accesses in traditional query evaluation pipelines Returns virtual tables of XML columns ExampleYJTXP role in DB2 (3/3)TurboXPath (TXP)Processing of multiple XPath expressions: One pass over the XML document Document order (pre-order) traversal No need to build a DOM tree in memory Results emitted as found in the document Efficient over: XML streams Pre-parsed XML documentsL*%*%"TXP Features (1/2) Forward axes (child  / , descendant  // ) Backward axes (parent  .. and ancestor) Query rewrites over streams Predicates (Boolean and positional) /a/b[c + d > 5 or .//e] //a[5] - currently being implemented  Any node test //contributors/*/nameS$QS$<  #TXP Features (1/2)Multiple extraction points (tuples): //customer[name and address and phone] return tuples Subset of FOR-LET-WHERE over a single document Very common case in the XQuery use doc Current supports most of XPath 1.0 Recursive XML input documents%A$ 0WA"&TXP Architecture TXP internals: evaluatorParse tree - static Structural tree Predicate trees Work array - dynamic State of the evaluator In-lined tree document Buffers Results (copy or reference) Predicate evaluation (copy) Discard when not needed .P .P  B2Execution example (1) C3Execution example (2)D4Execution example (3)E:Execution example (4) G<Execution example (4)F;Execution example (5)I=Execution example (6)6&Recursive execution example (1)7'Recursive execution example (2)8(Recursive execution example (3)9)Recursive execution example (4):*Recursive execution example (5);+Recursive execution example (6)<,Recursive execution example (7)=-Recursive execution example (8)>.Recursive execution example (9)?/ Recursive execution example (10)@0 Recursive execution example (11)A1 Recursive execution example (12)( Predicate evaluationSeparate parse tree for the predicates, attached at an anchor node in the structure tree Evaluated when anchor node closed Predicate parse tree leafs point into the structure parse tree Predicate tree is traversed and evaluated275%Predicate PushdowngSingle value predicates can be evaluated before the anchor node is closed: Example: /x[a>b and c = 5]hgK +Tuple construction using buffer annotations,+$)!Evaluation (i)XMLContains (Boolean query) 2"Evaluation (ii)%XMLExtract (single column extraction) 3#Evaluation (iii)*XMLExtract (over large files, outside DB2)  4$Evaluation (iv)_XMLTable (varying the number of columns) Optimizer should generate plans that benefit from that W'Conclusions and Future WorkTXP efficiently evaluates XPath/XQuery subset over XML streams and pre-parsed XML Low memory consumption Fast response time when compared to Xalan Tuple construction mechanism is useful for efficiently evaluating predicates and FLWR expressions Returns values (copy) or references (XID) Works both over indexed (stored) XML and streamed XML using the same control structure Deliverables for DB2: XMLWrapper, XML Storage, XML Loader/Shredder <RA-RA-, e *[LOther research areas_SQL/XML Automatic generation of taxonomies Lotus Discovery Server Text indexing Intranet SearchL++\M#Automatic Taxonomy Generation (1/2)Unified model for taxonomy Each node (including intermediate nodes) model features that are common for the tree below All features (including stopwords) are modeled in the taxonomy Hybrid bottom-up and top-down scheme Algorithm Start with an initial feasible solution (one level taxonomy) Merge nodes as appropriate (needed) to discover more abstract topics Split nodes as appropriate (needed) to find more refined topics [?0ZZ[?0 ]N#Automatic Taxonomy Generation (2/2)  ` ^WN̙f` ^WNff3` 999MMM` ^WNf` ff33` ff33` ^WN̙f>?" dd@(?zdd@ y x@" `  n?" dd@   @@``@n?" dd@  @@``PR   @ ` ` p>> (( Q P ( ( s *Ο  `  T Click to edit Master title style! !  ( c $П  @  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S ( s *Dן Tt  ^* 2  ( s *ܟ Tt   `*(2  ( s * T@t  `*(2 j ( BA paint<@.Z ( B޽h))? ? ^WNff3 2Contemporary Portrait.pot  IA@,( PR , , s *x0 @@ 0 T Click to edit Master title style! ! , c $8{0  @  0 W#Click to edit Master subtitle style$ $ , s *l0 T 0 ^* 2 ^WN , s *0 T  0 `*(2 ^WN , s *40 T@ 0 `*(2 ^WNj , BA paint@rZ , B޽h))? ? ^WNff3 0(  l  C 0,@@ 0 l  C 0,   0 H  0޽h ? ^WNff3  P`(  `l ` C 0( `  0 l ` C $0( @ 0 H ` 0޽h ? ^WNff3  `p(  x pl p C p0( `  0 l p C 00( @ 0 H p 0޽h ? ^WNff3  pt(  tl t C (0( `  0 l t C 0( @ 0 H t 0޽h ? ^WNff3  d(  dl d C 0( `  0 l d C <0( @ 0 H d 0޽h ? ^WNff3  h(   hl h C ( `   l h C (   H h 0޽h ? ^WNff3  l(  ll l C d ( `   l l C $ (   H l 0޽h ? ^WNff3]     x ( .XAP4-4 xq 8  <x x< x` x 0 < xT P P  x# @ , @ x 0(PpP  b TurboXPath" P   x 08"P P p ^XQuery"P x 0X'P P p BXSLT"P  x BP-   F Streamed XML    x BT1X   =DB2 2  x 65 <  @ Web Services   rB  xB BD , 2  x 62<  @ Applications   rB xB BD , rB xB BD p, rB x BD , `2 x 0, `2 x 00, `2 x 0`, l x C >( `   l x C x?( @  H x 0޽h ? ^WNff3U    , - (     C r jJ.  Z @ XML Storagex  c $s( `     s *x0e 1"`N8 v XPath-based Interface$b    c $d jJ"`Y : RB  s *DjJppRB  s *DjJ8 G RB  s *DjJ:Y Y G   S  jJ"`H 5Z < XML Indexing  2  BENGIFuH^ Ij?QjJ  ʓ}Q ʓ}Qj?`T}Qj?`T"`* / RB  s *DjJ??  C  jJ"`. h ~  3TXP  C  jJ0  \ @ Textual XMLLB  c $DjJ:11I LB ! c $DjJ:I { " C " jJ0   3TXP # C # jJ. Z M XML Streams Web Services{ $ C ܤ$ jJ. U~  3TXPLB % c $DjJ:I LB & c $DjJ: $I  ' <  Kcontext(0 ( <Y HXML Enabled Runtime0 ) <̫ `xml fragments/ column values(0 + <h +  P XPath/XQuery( 0 LB , c $DjJ\ \ H  0޽h ?  3380___PPT10.?$z  ~v(  l  C c( `   l  C c( @    Bh333))?m 1(} |FOR $c IN document("doc1.xml")//customer FOR $p IN document("doc2.xml")//profiles[cid=$c/cid()] LET $o := $c/order WHERE $o/date = '12/12/01' RETURN {$c/name} {$p/status} {$o/amount} P( H  0޽h ? ^WNff3  ()|N(  |l | C D+( `   .L  0  |# p w Z | s * 0  | <0M  @doc1//customer | </< Q  Ocid | <2 $  6name | <l  7order  | <9` g  8amount  | <0  y  6datefB  |B 6Do  fB  |B 6Do  fB  | 6Do ` fB |B 6Do ` @ fB | 6Do`  @  | 0,@ wp  Qcid | 0D wp  8name | 0|H w p  :amount7L p `   |#  'Z | s *p P   | <A   ? doc2//profile | <P0 E  Ocid | <(O`   8statusfB |B 6Do 9 fB | 6Do T9  | 0`h  (  l  C T(Q`   l  C (( @  H  0޽h ? ^WNff3  (  l  C ܤ( `   l  C ( @  H  0޽h ? ^WNff3u   %   ( t $ l  C 豉( `   R  s *@&  0  E  BExpression parser  0෉ E  BSAX Event Handlers  0軉 a%Tuple constructor/ Buffer management &P%  <\^^x  PInput path expressions^B  6DE   <Ɖp * J XML stream " ^B  6DW IJ^B  6DK   <ˉQm K I Output tuples    <Љz ?TXP   0 Չ  C Evaluator    0ى E  ?Document Walker  <݉^d JPre-parsed XML (stored)^B  6DW " # H  0޽h ? ^WNff3.  E.=.0L8--( v 8l 8 C ( `   l f8 C (Y0    g8 < @P  X Query: /a/b[$c + d > 5 or .//$e]!0!A+F 0   h8 P0 #`B i8 0Dq 0q 2 j8 0i : 2 k8 08y   : 2 l8 0 p 0 ;r2 m8 0  P ;a2 n8 0X  p ;b2 o8 0   ;c2 p8 0$   ;d2 q8 0D I9 ;e`B r8B 0D pY fB s8 6D pI t8 < ` E I I(c +d > 5 or e)  u8 0I 3r v8 0I @ ?T"  w8 0dI@  ?0"  x8 0I 3a y8 0 I ` ?T"  z8 0 &I`  ?1"  {8 0*I 3b |8 0#I  ?F"  }8 0,I  ?2"  ~8 0PJI0 3c 8 0MI  ?T"  8 0 RI 0 ?3"  8 0U0IP 3d 8 0YI0  ?T"  8 0L^I P ?3"  8 0bPIp 3e 8 0`IP  ?T"  8 0HeI p ?*"  8 <h D work array  8 <r l D parse tree fB 8B 6D @fB 8B 6D `fB 8B 6D  8 0wvJ 5... 8 0z0   @c1"  8 0~0  @ @c2"  8 00 @  @c3"  8 0<0  `  <  8 0  @e1"  8 0@ @e2"  8 0t@ <  8 0(`  <  8 0|` `   Aoutput buffers `B 8 0D  `B 8B 0Dp  8 0 5... 8 00  0 @c1"  8 0h0 0  @c2"  8 0ث0  P @c3"  8 0 0 P  < `B 8B 0D @  8 0Գ @ 0 @d1"  8 0\ 0@  <  8 0 @ P <  8 0P P@  < `B 8 0D @  8 <K   Npredicate buffers  `B 8B 0DP`B 8 0DPP`B 8 0DP`B 8 0DP 8 0Hȍ  ? sibling group `B 8B 0DP`B 8 0Drr 8 BG H?@I rr 8 BGxH I rb 8 BGv/H8IH  0rb 8 BGv/H8IH`rb 8 BGv/H8IHH 8 0޽h ?_888 8 8 ^WNff3E  @"$ ( @  r   S P( `   XB  @ 0D | 2   0P0) l. : 2   0x0Q k>  ;a2   0`D i<  ;c2   0dU i ;bXB  @ 0D U ^B   6D U    0iQ   C (c and b)     <m -  D Parse tree  2   0qg j=  ;r   Hu))?@P  `$ c1 b1 ... %$    <{P[ C Input XML     0~>9 3r   0X>a ?F"    0a9 ?0"    0싓>^9 3r   0>^ ?F"    0H^9 ?0"    0x9^4  3a   09^ ?F"    0t^4  ?*"    <V =r    <С)  LQuery: //a[c]//b    <<~/ Ib buffers: none ^B   6D4 a ^B   6D4  ^B   6Dy2    <İ ~  Nparse tree pointer 0  !  <G   Jdocument level 0  "  <yF &  G status flag 0  ^B # @ 6D> $  <Te  ]!initial work array with one entry "0" H   0޽h ? ^WNff3|  ,$P+,(   , H0ē))?@P  `$ c1 b1 ... %$ r  S Ǔ( `   XB @ 0D | 2  0p˓) l. : 2  0yQ k>  ;a2  0PғD i<  ;c2  0|דU i ;bXB @ 0D U ^B   6D U    0pݓQ   C (c and b)     < -  D Parse tree  2   0g j=  ;r  <P[ C Input XML    0>9 3r  0h>a ?F"   0a9 ?0"   0D>^9 3r  0>^ ?F"   0 ^9 ?0"   009^4  3a  09^ ?F"   0 ^4  ?*"   0>Z 9 3r  0>  ?F"   0! 9 ?0"   0$&9Z 4  3a  0@$9  ?F"   0( 4  ?*"   014 Z 0  3c  064   ?F"    0t:  0  ?2"  ! 0>0 Z +  3b " 080   ?F"  # 0@  +  ?*"  $ <DV =r  % <Oa V =a XB & 0D 00 XB ' 0D 0Z XB ( 0D 0Z ^ ) 63foGiY * <$T e LQuery: //a[c]//b  + <XY~/ Ib buffers: none H  0޽h ? ^WNff3#  ##`;E1#(   E H(\))?@P  `$ c1 b1 ... %$ r  S dp( `   XB @ 0D | 2  0s) l. : 2  0TwQ k>  ;a2  0{D i<  ;c2  0U i ;bXB @ 0D U ^B   6D U    0DQ   C (c and b)     < -  D Parse tree  2   0g j=  ;r  <ȓP[ C Input XML    0>9 3r  04>a ?F"   0ęa9 ?0"   0>^9 3r  0ܦ>^ ?F"   0x^9 ?0"   0|9^4  3a  09^ ?F"   0^4  ?*"   0>Z 9 3r  0\>  ?F"   0Ĕ 9 ?0"   0ɔ9Z 4  3a  0P̔9  ?F"   0є 4  ?*"   0Ք4 Z 0  3c  0Ӕ4   ?F"    0ݔ  0  ?2"  ! 0pؔ0 Z +  3b " 00   ?F"  # 0  +  ?*"  $ 0> 9 3r % 0> Q  ?F"  & 0H Q 9 ?0"  ' 0$9 4  3a ( 0D9 Q  ?F"  ) 0 Q 4  ?*"  * 0 4 0  3c + 04 Q  ?T"  , 0 Q 0  ?2"  - 00 +  3b . 0x0 Q  ?F"  / 0L Q +  ?*"  6 < V =r  7 <$a V =a  8 <)e  V =c XB 9 0D 00 XB : 0D 0Z XB ; 0D 0Z XB < 0D XB = 0D XB > 0D ^ B 63fo> C </ e LQuery: //a[c]//b  D <4~/ Ib buffers: none H  0޽h ? ^WNff3#  ##p;;,4#(  , , H>))?@P  `$ c1 b1 ... %$ r , S ?( `   XB ,@ 0D | 2 , 0D) l. : 2 , 0\DQ k>  ;a2 , 0LD i<  ;c2 , 0OU i ;bXB  ,@ 0D U ^B  , 6D U   , 0TQ   C (c and b)    , <Z -  D Parse tree  2  , 0h^g j=  ;r , <cP[ C Input XML   , 0g>9 3r , 0l>a ?F"  , 0ia9 ?0"  , 0tf>^9 3r , 0v>^ ?F"  , 0`{^9 ?0"  , 0dz9^4  3a , 09^ ?F"  , 0^4  ?*"  , 0p