)@+mddlZejdZddZdZdZdZdZdZd Z d Z d Z d Z eee e e e d Z iZGddZddZddZddZddZy)Nz`('[^']*'|\"[^\"]*\"|::|//?|\.\.|\(\)|!=|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/\[\]\(\)@!=\s]+)|\s+c#jK|r|jdnd}d}tj|D]d}|\}}|rR|ddk7rJd|vr.|jdd\}} |st|d||d|fn|r|s |d|d|fn|d}\||d k(}fy#t$rt d|zdwxYww) NFr{:}z!prefix %r not found in prefix map@)getxpath_tokenizer_refindallsplitKeyError SyntaxError) pattern namespacesdefault_namespaceparsing_attributetokenttypetagprefixuris .selectvs$txx.Js$$z{}*c3bK|D]%}|j}|s|ddk7s"|'yw)Nrrr+)r r/r0el_tagr1r2s rr3z_prepare_tag..select|s4vt,c1AJ ///r&r'c3lK|D]*}|j}|k(s|s|k(s'|,ywrr+) r r/r0r5r1r2no_nssuffixrs rr3z_prepare_tag..selects;S=K$=&-SYBYJs 444r(r)c3bK|D]%}|j}|s|k(s"|'ywrr+)r r/r0r5r1r2nsns_onlys rr3z_prepare_tag..selects4vt,B1FJr6zinternal parser error, got ) isinstancestrslicelen RuntimeError)rr3r1r2r9r=r>r:s` @@@@@@r _prepare_tagrDps"CK f} @ M9  4 M+ RaE QRs6{lD)!"g   M RST  "Xc"g&  M8>??r$cr|dtrtfd}|Sdddk(rddfd}|S)Nrc(d}|||S)Nc32K|D] }|Ed{y7wrr*)r/r0s r select_childz3prepare_child..select..select_childs"D#OO## r*r r/rH select_tags rr3zprepare_child..selects $g|F';< .selects+Auu|s' ')r,rDnextrr3rKrs @@r prepare_childrQsP (C!#&  = M r7d?ab'C Mr$c d}|S)Nc32K|D] }|Ed{y7wrr*)r r/r0s rr3zprepare_star..selectsDOO rIr*rPrr3s r prepare_starrUs Mr$c d}|S)Nc3$K|Ed{y7wrr*)r r/s rr3zprepare_self..selectss r*rTs r prepare_selfrXs  Mr$c |}|ddk(rdn|ds|dn tdtrtfd}|Sdddk(rddfd}|S#t$rYywxYw) Nr*rzinvalid descendantc(d}|||S)Nc3VK|D] }|jD] }||us| "ywrr)r/r0r"s rrHz8prepare_descendant..select..select_childs,"D!YY[D="#G)#s) )r*rJs rr3z"prepare_descendant..selects $ g|F';< .selects/3A}(s+ +) StopIterationrr,rDrOs @@rprepare_descendantr`s Qx3 1XAh.//!#&  = M r7d?ab'C M5 sA A)(A)c d}|S)Nc3dKt|}i}|D]}||vs||}||vsd||<|ywr)r#)r r/r result_mapr0parents rr3zprepare_parent..selectsH#G,  Dz!#D)+)-Jv& L s 0 0 0r*rTs rprepare_parentres ! Mr$c g}g} |}|ddk(rnL|dk(r|dr|ddddvr d|dddf}|j|dxsd|j|d]d j|}|d k(r |dfd }|S|d k(s|d k(r|d|d  fd} fd}d|vr|S|S|dk(r%tjd|ds |dfd}|S|dk(s(|dk(s#|dk(s|dk(rDtjd|ds+|d|d r  fd} fd}n fd} fd}d|vr|S|S|dk(s |dk(s|dk(ri|dk(r!t |ddz dkrGt d|ddk7r t d|dk(r" t |d dz d"kDr t d#dfd$}|St d%#t$rYywxYw#t$r t d!wxYw)&Nrr])rrz'"'r;-rz@-c3HK|D]}|j|ywrr )r r/r0keys rr3z!prepare_predicate..selects$88C=,J""z@-='z@-!='c3NK|D]}|jk(s|ywrrk)r r/r0rlvalues rr3z!prepare_predicate..selects&88C=E)Js%%c3XK|D] }|jx}|k7s|"ywrrk)r r/r0 attr_valuerlros rselect_negatedz)prepare_predicate..select_negateds0"&((3-/J<uATJs ***z!=z\-?\d+$c3HK|D]}|j|ywr)find)r r/r0rs rr3z!prepare_predicate..selects$99S>-Jrmz.='z.!='z-='z-!='c3K|D]@}|jD]*}dj|jk(s&|@BywNr)r joinitertextr r/r0r"rros rr3z!prepare_predicate..selectsC"D!\\#.771::<0E9"&J!/# .select_negated"sC"D!]]3/771::<0E9"&J!0#rzc3jK|D])}dj|jk(s&|+ywrvrwrxr r/r0ros rr3z!prepare_predicate..select)-"Dwwt}}/58" #(33c3jK|D])}dj|jk7s&|+ywrvr~rs rrrz)prepare_predicate..select_negated-rrz-()z-()-zXPath position >= 1 expectedlastzunsupported functionr7zunsupported expressionr(z)XPath offset from last() must be negativec3Kt|}|D]7} ||}t|j|j}||ur|9y#tt f$rYLwxYwwr)r#listr r IndexErrorr)r r/rr0rdelemsindexs rr3z!prepare_predicate..selectEsk'0J'-F !9:EU|t+" #H-s(A!4A  A! AA!AA!zinvalid predicate)r_appendrwrematchintr ValueError) rPr signature predicater3rrrrlrros @@@@rprepare_predicaters|II  FE 8s?  H   8a! -q!B'EqS)q"  "IDl  Fi72l"   "&!2~>>CYq\ Bl  EY&0 % 9#6HHZ16l"   "  " # #"&!2~>>C9-f1D   ! %)Eqy!"@AA|v%!"899F"@ ! -1E2:%&QRR  ) **M   h"@%&>??@sF6G6 GGG)rrZ.z..z//[ceZdZdZdZy)_SelectorContextNc||_yr)r)selfrs r__init__z_SelectorContext.__init__`s  r$)__name__ __module__ __qualname__rrr*r$rrr^s Jr$rc|dddk(r|dz}|f}|r%|tt|jz } t|}|g}t|}|D] } | ||} |S#t$rt tdkDrtj |dddk(r tdtt||j} |}n#t$rYYywxYwg} |jt|d||n#t$r tddwxYw |}|ddk(r|}n#t$rYnwxYwd|t|<Y wxYw) Nr;/rZdrz#cannot use absolute path on elementrz invalid path)tuplesorteditems_cacherrBclearrrr__next__r_ropsr) r0pathr cache_keyselectorrPrr/r r3s rr|r|hsv BCyCczIU6*"2"2"4566 %)$2VFt$G( M9 % v;  LLN 8s?CD DOD*56?? FE    <E!H dE :;  <!.1t; < 8s? FE   %y-%sr A""A!EC  E CECE !DEDED32E3 D?<E>D?? EEc0tt|||dSr)rPr|r0rrs rrtrts tZ0$ 77r$c.tt|||Sr)rr|rs rr r s tZ0 11r$c tt|||}|jy|jS#t$r|cYSwxYwrv)rPr|textr_)r0rdefaultrs rfindtextrsEHT445 99 yy s"1 1 ??r)NN)rcompiler rr#r,rDrQrUrXr`rerrrrr|rtr rr*r$rrsv RZZ   -00&R&  > n+b        'X8 2 r$