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/posix.pyc
� } �^c@sbddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z eZejjZejjZejZejZejZeZejd�Zeje�d�Zd�Zd�Zd�Zd�Zd �Zd �Z dd �Z"d �Z#d �Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d�Z+ej,dkr�ddl-Z-d�Z+d�Z.n'ej/d@kr�d�Z.n ejj.Z.ej,dkr6e0dddgd e1�Z2d!�Z+d"�Z#d#�Z$nd$�Z3d%�Z4d&d'�Z5d(�Z6d)�Z7d*�Z8d+�Z9d,�Z:e;ej<ej=g�Z>d-�Z?d.�Z@dd/�ZAdd0�ZBd1�ZCd2�ZDd3�ZEd4�ZFd5�ZGed6�ZHddd7�ZId8�ZJd9eKfd:��YZLd;�ZMd<e j fd=��YZNd>�ZOd?�ZPdS(Ai����(t_NicCsk|jdd�}t|�dkr.d|fS|djd�}|rU||dfS|dd|dfS(s�Same as posixpath.split, but faster >>> import posixpath >>> for f in ['/absolute/path/to/file', ... 'relative/path/to/file', ... 'file_alone', ... 'path/to/directory/', ... '/multiple/path//separators', ... '/file_at_root', ... '///multiple_leading_separators_at_root', ... '']: ... assert split(f) == posixpath.split(f), f t/iti(trsplittlentrstrip(tpthttnh((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytsplits cCstS(s@return true if it is safe to hold open file handles to hardlinks(tTrue(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt openhardlinks.scCstj|�jS(s-return number of hardlinks for the given file(tostlstattst_nlink(tname((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytnlinks2scCs}|d}tjjdkr?|ddkry|dd!}qyn:|jd�ry|jd�ryd|kry|dd!}n|S( s<parses the output produced by patch and returns the filenameitOpenVMSit`ii����t't (R tsystplatformt startswithtendswith(t output_linetpf((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytparsepatchoutput6s *cCsw|rd||fp|}d|d krHtjtd�|��nt|�}|rsdt|�|f}n|S(sBuild argument list for sshs%s@%st-is4illegal ssh hostname or username starting with -: %ss-p %s %s(terrortAbortRt shellquote(tsshcmdthosttusertporttargs((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytsshargsAs cCstj|�jd@dkS(s"check whether a file is executablei@i(R R tst_mode(tf((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytisexecLscCsmtj|�j}|r�tj|�s�t|�}|j�}|j�tj|�ytj ||�Wq�t k r�t|d�}|j |�|j�q�XndStj|�r tj |�}tj|�t|d�}|j |�|j�dt @}n|d@}|rE| rEtj|||d@d?t @B�n$| ri|ritj||d@�ndS(Ntwi�i@i$i(R R R&tstattS_ISLNKtopentreadtclosetunlinktsymlinktOSErrortwritetreadlinktumasktchmod(R'tltxtstfptdatatsx((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytsetflagsPs4           $ cCs�ytj|�jd@}WnQtk rm}|jtjkrD�n|}|dkr`t}n|dM}nXtj||�dS(s�Copy the file mode from the file at path src to dst. If src doesn't exist, we're using mode instead. If mode is None, we're using umask.i�i�N( R R R&R1terrnotENOENTtNoneR4R5(tsrctdsttmodeR&tinst((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytcopymodets  cCs�y�tjtjBtjB}tjd|dd�\}}zatj|�tj|�jd@}||@}tj |||A�tj|�jd@|k}Wdtj |�XWnt t fk r�t SX|p�| S(s} Check whether the given path is on a filesystem with UNIX-like exec flags Requires a directory (like /foo/.hg) tdirtprefixs hg-checkexec-i�N(R*tS_IXUSRtS_IXGRPtS_IXOTHttempfiletmkstempR R.R&R5R/tIOErrorR1tFalse(tpatht EXECFLAGStfhtfntmtnew_file_has_exectexec_flags_cannot_flip((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt checkexec�s    cCs\tjd|dd�}y%tjd|�tj|�tSWnttfk rWtSXdS(s?check whether the given path is on a symlink-capable filesystemRERFs hg-checklink-t.N( RJtmktempR R0R/R R1tAttributeErrorRM(RNR((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt checklink�s cCsdS(s�Check that the base-relative path is a valid filename on this platform. Returns None if the path is ok, or a UI string describing the problem.N((RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytcheckosfilename�scCsdS(N((tfd((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt setbinary�scCs|S(N((RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytpconvert�scCs|S(N((RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt localpath�scCstjj||�S(swReturns whether path1 and path2 refer to the same file. This is only guaranteed to work for files, not directories.(R RNtsamefile(tfpath1tfpath2((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR_�scCs.tj|�}tj|�}|j|jkS(syReturns whether fpath1 and fpath2 are on the same device. This is only guaranteed to work for files, not directories.(R R tst_dev(R`Ratst1tst2((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt samedevice�scCs |j�S(N(tlower(RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytnormcase�stdarwinc Cs,y|jd�|j�SWntk r.nXy|jd�}Wn�tk r d}d}d}xc|D][}t|�}|r�|dks�|dkr�|djg|D]}dt|�^q��7}d}d}n|dkr�|dkr�||7}qk|dkr`d|ko"d knr`|d kr<d }n|d krQd }nd}|}qk|dkr�d|ko�dknr�||7}|d 8}|s�||7}d}q�qk|d|7}qkW|djg|D]}dt|�^q��7}|jd�}nXtjd|�j�jd�S(s� Normalize a filename for OS X-compatible comparison: - escape-encode invalid characters - decompose to NFD - lowercase >>> normcase('UPPER') 'upper' >>> normcase('Café') 'cafe\xcc\x81' >>> normcase('É') 'e\xcc\x81' >>> normcase('���ʾ�.JPG') # issue3918 '%b8%ca%c3\xca\xbe%c8.jpg' tasciisutf-8Rii�i�s%%%02Xi�i�i�ii�iitNFD(tdecodeRftUnicodeDecodeErrortordtjoint unicodedatat normalizetencode(RNtuR8tgR6tctoR7((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyRg�sH     0  (     (    0cCs�d}d}ytj||�}Wn,tk rP}|jtjkrJ|S�nXz$tj||dd�jd�SWdtj|�XdS(sL Returns the true, canonical file system path equivalent to the given path. Equivalent means, in this case, resulting in the same, unique file system link to the path. Every file system entry, whether a file, directory, hard link or symbolic link or special, will have a single path preferred by the system, but may allow multiple, differing path lookups to point to it. Most regular UNIX file systems only allow a file system entry to be looked up by its distinct path. Obviously, this does not apply to case insensitive file systems, whether case preserving or not. The most complex issue to deal with is file systems transparently reencoding the path, such as the non-standard Unicode normalisation required for HFS+ and HFSX. i2i tiN(R R,R1R=R>tfcntlRR.(RNt F_GETPATHt O_SYMLINKR[terr((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytrealpath s$iitfinalcCs:tjj|�r"tjj|�Stjjd|�SdS(Ns./(R RNtisabsR{(RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR{1stcygwins/usr/bins/usr/libs /cygdrivetreversecCs�t|�}|dks+|dtjkr8tj|�SxgtD]_}|j|�sZq?nt|�}||krv|S||tjkr?|tj||�Sq?Wtj|�S(Ni(RR tseptencodingtuppertcygwinmountpointsR(RNtpathlentmptmplen((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyRgGs     cCstS(N(RM(RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyRU^scCstS(N(RM(RN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyRYdscCs2tjjdkrd|Sd|jdd�SdS(NRs"%s"s'%s'Rs'\''(R RRtreplace(R8((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyRgscCs|S(N((tcmd((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt quotecommandmstrcCstj||�S(N(R tpopen(tcommandRB((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR�pscCsUtjjdkrtSytj|d�tSWn tk rP}|jtjkSXdS(s5return False if pid dead, True if running or not sureRiN(R RRR tkillR1R=tESRCH(tpidRC((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyttestpidsscCs6|dkr td�||fStd�| | fS(s}return a 2-tuple (desc, code) describing a subprocess status (codes from kill are negative - not os.system/wait encoding)isexited with status %dskilled by signal %d(R(tcode((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt explainexit}s cCs|jtj�kS(s;Return True if the stat object st is from the current user.(tst_uidR tgetuid(tst((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytisowner�scCs�tjdkr|Sd�}tj|kr5||�Stjdkr]|tjjd|��SxTtjjdd�jtj �D]1}|tjj||��}|dk r|SqWdS(s�Find executable for command searching like which does. If command is a basename then PATH is searched for command. PATH isn't searched if command is an absolute or relative path. If command isn't found None is returned.RcSs/tjj|�r+tj|tj�r+|SdS(s'Will return executable if existing fileN(R RNtisfiletaccesstX_OKR?(t executable((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt findexisting�s'tplan9s/bintPATHRN( RRR R�RNRntenvirontgetR tpathsepR?(R�R�RNR�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytfindexe�s  ( cCsdS(N((((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytsetsignalhandler�sccs�tj}tj}x~|D]v}y.||�}||j�tkrLd}nWn:tk r�}|jtj tj fkr��nd}nX|VqWdS(sqStat each file in files. Yield each stat, or None if a file does not exist or has a type we don't care about.N( R R R*tS_IFMTR&t _wantedkindsR?R1R=R>tENOTDIR(tfilesR tgetkindtnfR�Rz((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt statfiles�s      cCs tj�S(sreturn name of current user(tgetpasstgetuser(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR��scCsO|dkrtj�}nytj|�dSWntk rJt|�SXdS(siReturn the name of the user with the given uid. If uid is None, return the name of the current user.iN(R?R R�tpwdtgetpwuidtKeyErrortstr(tuid((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytusername�s   cCsO|dkrtj�}nytj|�dSWntk rJt|�SXdS(skReturn the name of the group with the given gid. If gid is None, return the name of the current group.iN(R?R tgetgidtgrptgetgrgidR�R�(tgid((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt groupname�s   cCsttj|�j�S(skReturn the list of members of the group with the given name, KeyError if the group does not exist. (tlistR�tgetgrnamtgr_mem(R((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt groupmembers�scCs*tjtjttdd�B|d|�S(NtP_DETACHi(R tspawnvptP_NOWAITtgetattr(R$((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt spawndetached�scCs tjd S(Ni(Rtargv(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytgethgcmd�scCs8y ddl}ddl}ddl}x�tjtjtjfD]�}y�y|j�}Wntk row@nXt j |�s�w@nyB|j ||j d�}|jd|�d}|dkr�|SWntk r�nXWq@t k r�q@tk r}|dtjkrq�q@Xq@WWntk r3nXdS( Ni����RvithiiiPt(ttermiostarrayRwRtstderrtstdouttstdintfilenoRXR tisattytioctlt TIOCGWINSZt ValueErrorRLR=tEINVALt ImportError(R�R�RwtdevR[tarritwidthte((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt termwidth�s4$     cCstj|�dS(N(R tmkdir(RNt notindexed((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytmakedir�scCszytj|�Wn1tk rD}|o8|jtjksE�qEnXytjtjj|��Wntk runXdS(s.unlink and remove the directory if it is emptyN(R R/R1R=R>t removedirsRNtdirname(R't ignoremissingR�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt unlinkpaths  cCsdS(N(R?(tkeyRtscope((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt lookupreg scCsdS(s�Hide current shell window. Used to hide the window opened when starting asynchronous child process under Windows, unneeded on other systems. N((((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt hidewindowst cachestatcBs5eZd�Zd�ZejZd�Zd�ZRS(cCstj|�|_dS(N(R R*(tselfRN((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt__init__scCst|jj�S(N(tboolR*tst_ino(R�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt cacheablesc Cs�y�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj |jj kSWnt k r�t SXdS(N( R*R&R�RbRR�tst_gidtst_sizetst_mtimetst_ctimeRXRM(R�tother((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt__eq__!s cCs ||k S(N((R�R�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt__ne__4s(t__name__t __module__R�R�tobjectt__hash__R�R�(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR�s     cCsdS(N(R?(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pytexecutablepath7stunixdomainservercBseZd�Zd�ZRS(cCsgtt|�jtj�|d}||�|_|_tjj|j�r�tjj |j�r{tj |j�|_q�tj |j�ny|j |j�Wn�tj k rU}|jddkrOtjdd|�}tjj||�|_y*|j |j�tj|j|j�WqRttj fk rK|j��qRXqV�nX|jd�dS(s2Create a unix domain socket with the given prefix.s.sockisAF_UNIX path too longRFshg-%s-iN(tsuperR�R�tsockettAF_UNIXR{RNR tislinktexistsR3R/tbindRR$RJtmkdtempRnR0R1tcleanuptlisten(R�Rnt subsystemtsocknameRzttmpdir((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR�;s*   cCsgd�}|tj|j�|j|jkrc|tj|j�|tjtjj|j��ndS(NcSs@y||�Wn+tk r;}|jtjkr<�q<nXdS(N(R1R=R>(R'RNRz((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt okayifmissingVs (R R/RNR{trmdirR�(R�R�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR�Us  (R�R�R�R�(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyR�:s cCs|otj|j�S(s(check whether a stat result is a symlink(R*R+R&(R�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt statislinkbscCs|o|jd@dkS(s1check whether a stat result is an executable filei@i(R&(R�((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt statisexecfs(iiisfinal(Qti18nRR�RR RR=R*R�R�R�R�RJRoR,t posixfileRNtnormpathtsamestattlinktoslinkR/trenameRMt expandglobsR4R R RRR%R(R<R?RDRURYRZR\R]R^R_ReRgRRwR{t version_infotsortedR R�RR�R�R�R�R�R�R�tsettS_IFREGtS_IFLNKR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RR(((s5/usr/lib64/python2.7/site-packages/mercurial/posix.pyt<module>s�  x           $           B !                        (