\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A  13\c@@s ddlmZddlmZddlmZmZmZdZdZ dZ dZ id d6d7d8d6fd 6dd6d6d9d6fd6dd6d:d;d6fd6dd6d<d6d6fd6dd6d=d6d6fd6dd6d6d>d6fd6dd6d6d?d6fd6dd6d6d@d6fd6dd6d6dAd6fd6dd6d6dBd6fd6dd6d6dCd6fd 6dDd 6dEd!6dFd"6dGd#6Z dddhZiZd$Zd%Zd&Zd'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Z d5Z!d6S(Hi(tabsolute_importi(t_(terrortparsertpycompatg?ii i2itgroupt)tfunct(itkindpatt:itnegateitminust-tnott!tandt&itort|t+itlistt,tsymboltstringtends .*{}[]?/\_cc@spdt|}}tj|}x9||kr]||}|jrJn|dkrg|d|fVn|dks|dkrd|||d!dkrd|dkr|d7}||}d }n tj}|d7}|}xr||krH||}|d kr|d7}qn||kr;d ||||!|fVPn|d7}qWtjt d |n|j s|t kst |d kr8|}|d7}xR||kr||}|j p|t kpt |d ksPn|d7}qW|||!}|t kr|d|fVnd||fV|d8}ntjt d||d7}q%Wdd|fVdS(Nis (),-:|&+!s"'trisr'sr"icS@s|S(N((tx((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt?ss\Rsunterminated stringiRs syntax errorR(sr'sr"(tlenRtbytestrtisspacetNoneRt unescapestrRt ParseErrorRtisalnumt globcharstordtkeywords(tprogramtpostltctdecodetstdtsym((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyttokenize1sV             *  *   cC@smtjt}|jt|\}}|t|krWtjtd|ntj|ddhS(Ns invalid tokenRR( RtelementstparseR/RRR"Rtsimplifyinfixops(texprtpttreeR(((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyR1cs cC@s7|r|ddkr|dStjtddS(NiRis not a symbol(RR"R(R((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt getsymboljscC@sA|r.|ddks&|ddkr.|dStj|dS(NiRRi(RR"(Rterr((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt getstringos&cC@sQt|}t||}||krCtjtd|nd||fS(Nsinvalid pattern kind: %ss%s:%s(R6R8RR"R(RtytallkindsR7tkindtpat((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt getkindpatts   cC@s>|r1|ddkr1t|d|d||St||S(NiR ii(R=R8(RR:R7((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt getpattern{scC@s/|s gS|ddkr(t|dS|gS(NiRi(R(R((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pytgetlists cC@sFt|}t||ks0t||krBtj|n|S(N(R?RRR"(RtmintmaxR7R)((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pytgetargss $cC@s|dkr|S|d}|ddhkr0|S|dkrkt|dt|d}||d|fS|dkrt|dS|dkrtjtd n|d krt|d}||fS|d krt|d}t|d}|||fS|d kr5td |dd |dffS|d dhkrltd|dD}|f|S|dkrt|dt|d}||d|fStjd|dS(NiRRR iiRR s)can't use negate operator in this contextRRR RRcs@s|]}t|VqdS(N(t_analyze(t.0R9((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys sRsinvalid operator %r(R R6RCRR"RttupletProgrammingError(Rtopttttattbtts((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyRCs<          !  c C@sx|dkrd|fS|d}|dddhkr?d|fS|dkrqt|d\}}|||ffS|dkrt|d\}}t|d\}}||}|r|r|d |||fdd j|fffS||||ffS|d krtd |dD\} } t| d}td | Ddkr}|d |f| dd j|fffS||f| fS|dkrtd|dD\} } t| d|f| fS|dkrat|d} t|d\}}ttj| dt rJ| fd ||d|fd| fffSd||d|ffSt j d|dS(smInsert hint nodes where status should be calculated (first path) This works in bottom-up way, summing up status names and inserting hint nodes at 'and' and 'or' as needed. Thus redundant hint nodes may be left. Returns (status-names, new-tree) at the given subtree, where status-names is a sum of status names referenced in the given subtree. iRRR RiRit withstatust Rcs@s|]}t|VqdS(N(t_insertstatushints(RDR9((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys scs@s|]}t|VqdS(N(tbool(RDth((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys sRcs@s|]}t|VqdS(N(RN(RDR9((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys sRt _callstatussinvalid operator %rN(((((( R RNtjointziptsumR6tgetattrtsymbolstgettFalseRRF( RRGRPRHthaRIthbRJthrthsRKtf((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyRNs>        +  )   )c@sl|dkr|S|d}|dkrdr=t|dSt|ddt}|||dfS|dddhkr}|S|d krt|d}||fS|d krt|d}t|d}|||fS|d d hkr"tfd |dD}|f|S|dkrUt|ddt}||d|fStjd|dS(ssRemove redundant status hint nodes (second path) This is the top-down path to eliminate inner hint nodes. iRLitinstatusiRRR RRRRc3@s|]}t|VqdS(N(t_mergestatushints(RDR9(R^(s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys sRsinvalid operator %rN(R R_tTrueRERXRRF(RR^RGRHRIRJRK((R^s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyR_s0          cC@s.t|}t|\}}t|dtS(sTransform raw parsed tree to evaluatable tree which can be fed to optimize() or getmatch() All pseudo operations should be mapped to real operations or functions defined in methods or symbols table respectively. R^(RCRNR_RX(RRHt_h((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pytanalyzes cC@s:|dk r-|ddkr-d||dfS|||fS(NiRR i(R (RGRIRJ((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt_optimizeandopsscC@sggg}}}xr|D]j}t|\}}|dk rk|ddddhkrk|j|qn|j||j|qW|r|jt|jdt|n||fS(NiRRR tpatterns(Rd(t _optimizeR tappendtWEIGHT_CHECK_FILENAMERE(txstwsRKtssRtwRH((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyt_optimizeunion s %   c @s|dkrd|fS|d}|dkrYt|d\}}||||dffS|ddhkrut|fS|dkrt|d\}}|||d|ffS|dkrt|d\}}|||ffS|d krSt|d\}}t|d\}}||kr:|t|||fS|t|||fSn|d krt|d\}t|dkrd|dfStd tt|d fd D}t |f|fS|dkr$t d|dD\}t |f|fS|dkrt |d} t tj| dd}t|d\}}||||d|ffStjd|dS(NiRLiiRRR RRRcs@s|]}|dVqdS(iN((RDtit((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys 4stkeyc@s |dS(Ni((Rm(Ri(s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyR5sRcs@s|]}t|VqdS(N(Re(RDR9((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pys 8sRt_weightsinvalid operator %r(R ReRgRcRlRREtsortedt enumerateRARSRTR6RURVRWRRF( RRGRkRHtwaRItwbRJRKR]((Ris;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyResH             cC@st|\}}|S(ssReorder/rewrite evaluatable tree for optimization All pseudo operations should be transformed beforehand. (Re(Rt_wRH((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pytoptimizeAscC@stj|dS(NRR(RR(Rt prettyformat(R5((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pyRvIsN(RiR(RiR(R i(R i(R i(Ri (Ri (Ri(Ri(Ri(Ri(Ri(Ri(iNNNN(iRNNN(iRNNN(iNNNN("t __future__Rti18nRtRRRRgtWEIGHT_READ_CONTENTSt WEIGHT_STATUStWEIGHT_STATUS_THOROUGHR R0R&RVR$R/R1R6R8R=R>R?RBRCRNR_RbRcRlReRuRv(((s;/usr/lib64/python2.7/site-packages/mercurial/filesetlang.pytsT  2        ! + !   (