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/revlog.pyc
� Hq�Qc@s�dZddlmZmZmZmZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZejZejZejZejZe jZdZdZdZdZeZeZ e eBZ!eeBZ"dZ#d Z$d Z%e j&Z&e j'Z'd �Z(d �Z)d �Z*ee�Z+d�Z,d�ZdZ-dZ.de/fd��YZ0dZ1dZ2dZ3de/fd��YZ4de/fd��YZ5dS(s�Storage back-end for Mercurial. This provides efficient delta storage with O(1) retrieve and append and O(changes) merge between branches. i����(tbinthextnullidtnullrev(t_NiiiiiicCst|d?�S(Ni(tint(tq((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt getoffset.scCst|d@�S(Ni��(R(R((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytgettype1scCstt|�d>|B�S(Ni(tlong(toffsetttype((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt offset_type4scCsv|tkr(tj�}|j|�n7||g}|j�t|d�}|j|d�|j|�|j�S(s�generate a hash from the given text and its parent hashes This hash combines both the current file contents and its history in a manner that makes it easy to distinguish nodes with the same content in the revision graph. ii(Rtnullhashtcopytupdatetsortt_shatdigest(ttexttp1tp2tstl((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pythash9s     cCs�|s |S|d}|dkr$|S|dkrvyt|�SWqvtjk rr}ttd�t|���qvXn|dkr�|dSttd�|��dS( s decompress the given input ittxsrevlog decompress error: %stuisunknown compression type %rN(t _decompresstzlibterrort RevlogErrorRtstr(Rttte((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt decompressNs   # s >4l20s20s20si8t revlogoldiocBs#eZd�Zd�Zd�ZRS(cCstjt�|_dS(N(tstructtcalcsizet indexformatv0tsize(tself((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt__init__jsc Cs%|j}g}itt6}d}}t|�}x�|||kr�||||!} ||7}tt| �} t| dd�| dd| d| d|j| dt�|j| dt�| df} |j| �||| d<|d7}q5W|jdddddddtf�||dfS( Niii����iiiii( R(RRtlent_unpackR'R tgettappendtNone( R)tdatatinlineRtindextnodemaptntoffRtcurR"te2((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt parseindexms      (3 %cCs{t|d�r%ttd���nt|d�|d|d|d||d�||d�|df}tt|�S( Nisindex entry flags need RevlogNGiiiiii(RRRRt_packR'(R)tentrytnodetversiontrevR7((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt packentry�s "'(t__name__t __module__R*R8R>(((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR$is  s>Qiiiiii20s12xi s>ItrevlogiocBs#eZd�Zd�Zd�ZRS(cCstjt�|_dS(N(R%R&t indexformatngR((R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR*�scCs1tj||�\}}|t|dd�|fS(NR3(tparserst parse_index2tgetattrR/(R)R0R1R2tcache((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR8�scCs9tt|�}|dkr5tt|�|d}n|S(Nii(R9RBt versionformat(R)R:R;R<R=tp((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR>�s (R?R@R*R8R>(((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyRA�s  trevlogcBs?eZdZd�Zd�Zd�Zd�Zdd9d�Ze j d��Z d�Z d �Z d �Zd �Zd �Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZeZded�Zd�Zd9d9d�Zd9d9d�Zd9d9d�Zd9d9d�Z d�Z!d�Z"d9d9d�Z#d�Z$d�Z%d �Z&d!�Z'd"�Z(d#�Z)d$�Z*d%�Z+d&�Z,d'�Z-d(�Z.d)�Z/d*�Z0d+�Z1d,�Z2d-�Z3d.�Z4d/�Z5d9d0�Z6d9d1�Z7d2�Z8d3�Z9d9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>RS(:sM the underlying revision storage object A revlog consists of two parts, an index and the revision data. The index is a file with a fixed record size containing information on each revision, including its nodeid (hash), the nodeids of its parents, the position and offset of its data within the data file, and the revision it's based on. Finally, each entry contains a linkrev entry that can serve as a pointer to external data. The revision data itself is a linear collection of data chunks. Each chunk represents a revision and is usually represented as a delta against the previous chunk. To bound lookup time, runs of deltas are limited to about 2 times the length of the original version data. This makes retrieval of a version proportional to its size, or O(1) relative to the number of revisions. Both pieces of the revlog are written to in an append-only fashion, which means we never need to rewrite a file to insert or remove data, and can use some simple techniques to avoid the need for locking while reading. c Cs||_|d d|_||_d|_d|_d|_g|_i|_it t 6|_ d|_ t }t|dd�}|dk r�d|kr�d|kr�|tO}q�q�d}nd}t|_yd|j|j�}|j�}|j�t|�dkr0tjt|d �d}t|_nWn+tk r^}|jtjkr_�q_nX||_|t@|_|t@|_|d@}|d @} | t kr�|r�t!t"d �|j|d ?f��nk| t#kr |t$@r t!t"d �|j|d ?f��n.| t#kr9t!t"d �|j| f��nt%�|_&|jt krct'�|_&ny|j&j(||j�} Wn0t)t*fk r�t!t"d�|j��nX| \|_} |_| dk r�| |_+|_ n|js�|j,�ndS(s� create a revlog object opener is a function that abstracts the file opening operation and can be used to implement COW semantics or the like. i����s.dittoptionstrevlogv1t generaldeltaii��s*index %s unknown flags %#04x for format v0is)index %s unknown flags %#04x for revlogngsindex %s unknown format %dsindex %s is corruptedN(ii(iRJi��(-t indexfiletdatafiletopenerR/t_cachet _basecachet _chunkcacheR2t_pcacheRRt _nodecachet_nodepostREVLOG_DEFAULT_VERSIONREtREVLOGGENERALDELTAtTruet _initemptytreadtcloseR+R%tunpackRGtFalsetIOErrorterrnotENOENTR<tREVLOGNGINLINEDATAt_inlinet _generaldeltatREVLOGV0RRtREVLOGNGtREVLOGNG_FLAGSRAt_ioR$R8t ValueErrort IndexErrorR3t _chunkclear( R)RPRNtvtoptstitftinsttflagstfmttdR3((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR*�sn                            cCs|jt|j�d�S(Ni(R;R+R2(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyttipscCst|j�dS(Ni(R+R2(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt__len__scCsttt|���S(N(titertxrangeR+(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt__iter__sicCsPd}|dk r4||kr'd}n||7}n t|�}t|||�S(s8iterate over all rev in this revlog (from start to stop)ii����N(R/R+Rw(R)tstarttstoptstep((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytrevs s     cCs|j|jd��|jS(Ni(R=R;RU(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR3scCs.y|j|�tSWntk r)tSXdS(N(R=RYtKeyErrorR^(R)R;((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pythasnodes   cCsBy|jj�Wn*tk r=itt6|_d|_nXdS(N(RUt clearcachestAttributeErrorRRR/RV(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR!s  cCs�y|j|SWn�tk r=t||jtd���n�tk r�|j}|j}|j}|dkr�t |�d}nxOt |dd�D];}||d}|||<||kr�|d|_|Sq�Wt||jtd���nXdS(Nsno nodeii����ii( RURt LookupErrorRNRR}R2RVR/R+Rw(R)R;R4RnRHtrRl((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR=(s"         cCs|j|dS(Ni(R2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR;=scCs|j|dS(Ni(R2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytlinkrev?scCs>|j}||j|�}||dd||ddfS(Niii(R2R=(R)R;RnRs((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytparentsAs cCs|j|dd!S(Nii(R2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt parentrevsEscCst|j|dd?�S(Nii(RR2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyRyGscCs|j|�|j|�S(N(Rytlength(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytendIscCs|j|dS(Ni(R2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�KscCsB|j}||d}x$||kr=|}||d}qW|S(Ni(R2(R)R=R2tbase((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt chainbaseMs  cCs|j|dd@S(Nii��(R2(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyRqTscCsC|j|d}|dkr!|S|j|j|��}t|�S(s?return the length of the uncompressed text for a given revisionii(R2trevisionR;R+(R)R=RR!((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytrawsizeVs  cCstj||d|d|�S(s�Generate the ancestors of 'revs' in reverse topological order. Does not generate revs lower than stoprev. See the documentation for ancestor.lazyancestors for more details.tstoprevt inclusive(tancestort lazyancestors(R)R|R�R�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt ancestors`sccs�t|�}|tkr2x|D] }|VqWdSt|�}xf|jd|d�D]N}xE|j|�D]4}|tkrk||krk|j|�|VPqkqkWqUWdS(s$Generate the descendants of 'revs' in revision order. Yield a sequence of revision numbers starting with a child of some rev in revs, i.e., each revision is *not* considered a descendant of itself. Results are ordered by revision number (a topological sort).NRyi(tminRtsetR|R�tadd(R)R|tfirstRntseenR((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt descendantsis      csx|dkrtg}n|dkr3|j�}ng|D]}|j|�^q:}g|D]}|j|�^q\}t|j|����jt��j|�t�}t j �fd�|D��}xk|r;|j �}||kr�q�q�|j|�x3|j |�D]"}|�kr|j |�qqWq�Wt|�}|j��g|D]}|j|�^q\fS(s�Return a tuple of the ancestors of common and the ancestors of heads that are not ancestors of common. In revset terminology, we return the tuple: ::common, (::heads) - (::common) The list is sorted by revision number, meaning it is topologically sorted. 'heads' and 'common' are both lists of node IDs. If heads is not supplied, uses all of the revlog's heads. If common is not supplied, uses nullid.c3s!|]}|�kr|VqdS(N((t.0R�(thas(s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pys <genexpr>�sN(R/RtheadsR=R�R�R�RRtutiltdequetpopleftR�R.tlistRR;(R)tcommonR�R4tmissingtvisitR�RH((R�s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytfindcommonmissing~s,   ""          cCsI|dkrtg}n|dkr3|j�}ntj|||j�S(sxReturn the revision numbers of the ancestors of heads that are not ancestors of common. More specifically, return a list of revision numbers corresponding to nodes N such that every N satisfies the following constraints: 1. N is an ancestor of some node in 'heads' 2. N is not an ancestor of any node in 'common' The list is sorted by revision number, meaning it is topologically sorted. 'heads' and 'common' are both lists of revision numbers. If heads is not supplied, uses all of the revlog's heads. If common is not supplied, uses nullid.N(R/RtheadrevsR�tmissingancestorsR�(R)R�R�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytfindmissingrevs�s    cCs�|dkrtg}n|dkr3|j�}ng|D]}|j|�^q:}g|D]}|j|�^q\}gtj|||j�D]}|j|�^q�S(s.Return the ancestors of heads that are not ancestors of common. More specifically, return a list of nodes N such that every N satisfies the following constraints: 1. N is an ancestor of some node in 'heads' 2. N is not an ancestor of any node in 'common' The list is sorted by revision number, meaning it is topologically sorted. 'heads' and 'common' are both lists of node IDs. If heads is not supplied, uses all of the revlog's heads. If common is not supplied, uses nullid.N(R/RR�R=R�R�R�R;(R)R�R�R4R�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt findmissing�s   ""c Cs�gggf}|dk r\t|�}|s1|Stg|D]}|j|�^q;�}ntg}t}|tkr�|dkr�g|D]}|j|�^q�tgt|j��fS|dkr�t|�d}d}i}n�t|�}|s�|St �}t j |t �}t |�} t g| D]}|j|�^q-�}x�| r| j�}|tkrrqNn|j|�}||krN||kr�|j|�| jg|j|�D]} | tkr�| ^q��q�||kr�|j|�q�qNqNW|s |S|tkrtg|D]}||kr|^q}|rmtg|D]}|j|�^qL�}q�|Snt}tg}t |�} | j�}g} x�|jdt |d�d|d�D]z}|j|�}t } |tkr�t} n�|| kr`t} ||kr�t|j|��} | d| ksJ| d| kr]|j|�q]q�nKt|j|��} | d| ks�| d| kr�| j|�t} n| r�|dks�||kr�| j|�|dk r�||kr�t||<qA|dkrAt||<x*|j|�D]} |j| d�q!WqAq�q�Wg|j�D]\}}|rR|^qR}t|�}| s�t�|s�t�|s�t�| ||fS(s�Return a topological path from 'roots' to 'heads'. Return a tuple (nodes, outroots, outheads) where 'nodes' is a topologically sorted list of all nodes N that satisfy both of these constraints: 1. N is a descendant of some node in 'roots' 2. N is an ancestor of some node in 'heads' Every node is considered to be both a descendant and an ancestor of itself, so every reachable node in 'roots' and 'heads' will be included in 'nodes'. 'outroots' is the list of reachable nodes in 'roots', i.e., the subset of 'roots' that is returned in 'nodes'. Likewise, 'outheads' is the subset of 'heads' that is also in 'nodes'. 'roots' and 'heads' are both lists of node IDs. If 'roots' is unspecified, uses nullid as the only root. If 'heads' is unspecified, uses list of all of the revlog's heads.iRyiRzN(R/R�R�R=RRR;R�R+R�tdicttfromkeysR^tmaxtpopR�RR�RR|RYttupletremoveR.t iteritemstAssertionError(R)trootsR�tnonodesR4t lowestrevR�t highestrevR�t nodestotagRHR�t orderedoutt isdescendanttflag((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt nodesbetween�s�  + 8     (        %+   ,            +    cCs0y|jj�SWntk r+|j�SXdS(N(R2R�R�t _headrevs(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�ts cCs�t|�}|stgSdg|d}|j}x<|D]4}d||<||}d||d<||d<q:Wgt|�D]\}}|r|^qS(Niiii(R+RR2t enumerate(R)tcounttisheadR2R�R"tval((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�zs     c Cs�|dkrQ|dkrQt|�s+tgSg|j�D]}|j|�^q8S|dkrft}n|dkr{g}ntg|D]}|j|�^q��}|j|�}t|f�}t|f�}|j} x�|jd|d�D]}}xt| |�D]f} | |krA||kr1|j |�n|j |�n| |kr| |kr|j | �qqWq�Wg|D]}|j|�^qxS(sreturn the list of all nodes that have no children if start is specified, only heads that are descendants of start will be returned if stop is specified, it will consider all the revs from stop as if they had no children RyiN( R/R+RR�R;R�R=R�R|R�R�( R)RyRzR�R4tstoprevststartrevt reachableR�R�RH((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR��s, &    (   cCs�g}|j|�}x�|jd|d�D]�}g|j|�D]}|tkrB|^qB}|r�x[|D]+}||krm|j|j|��qmqmWq,|tkr,|j|j|��q,q,W|S(s!find the children of a given nodeRyi(R=R|R�RR.R;(R)R;tcRHR�tprtprevs((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytchildren�s.    cCsQ|tkrtSx:|j|g�D]&}||kr9tS||kr#Pq#q#WtS(N(RRYR�R^(R)RyR�Rn((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt descendant�s   cCs�|j|�|j|�}}y|jj||�}Wn/ttfk ritj|j||�}nX|r�tt|j |��St S(s4calculate the least common ancestor of nodes a and b( R=R2R�R�t OverflowErrorR�R�R�tmapR;R(R)tatbtancs((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR��scCsLt|t�r|j|�St|�dkr`y|}|j|�|SWq`tk r\q`Xny~t|�}t|�|kr�t�n|dkr�t|�|}n|dks�|t|�kr�t�n|j|�SWnttfk r�nXt|�dkrHy!t |�}|j|�|SWqHt tfk rDqHXndS(Niii(( t isinstanceRR;R+R=R�R RiR�Rt TypeError(R)tidR;R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt_match�s6         cCs�y|jj|�SWnBtk rBt||jtd���nttfk rXnX||jkrs|j|St |�dkr�y�t |�d}t ||d �}g|jD]#}|dj |�r�|d^q�}g|D]!}t |�j |�r�|^q�}t |�dkrht |�dkrJ|d|j|<|dSt||jtd���ndSWq�tk r�q�XndS(Nsambiguous identifieri(iiii(R2t partialmatchRR�RNRR�RiRTR+Rt startswithRR/R�(R)R�RtprefixR"tnlR4((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _partialmatch�s.  3.  cCsW|j|�}|dk r|S|j|�}|r8|St||jtd���dS(s�locate a node based on: - revision number or str(revision number) - nodeid or subset of hex nodeid sno match foundN(R�R/R�R�RNR(R)R�R4((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytlookups cCs+|j|�\}}t|||�|kS(spcompare text with a given file revision returns True if text is different than what is stored. (R�R(R)R;RRR((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytcmpscCsj|j\}}|t|�|krWt|�t|�tkrW|||f|_n||f|_dS(N(RSR+t _chunksize(R)R R0toRs((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _addchunk$s2cCs�|jr|j|j�}n|j|j�}td|�}|j|�|j|�}|j�|j||�||kr�t j |d|�S|S(Nii( RcRPRNROR�tseekR[R\R�R�tbuffer(R)R R�tdft readaheadRs((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _loadchunk,s    cCs�|j\}}t|�}||}||}|dkrz||krz|dkrc||krc|Stj||||�S|j||�S(Ni(RSR+R�R�R�(R)R R�R�RsRt cachestarttcacheend((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _getchunk;s   cCsV|j|�}|j|�|}|jrF||d|jj7}n|j||�S(Ni(RyR�RcRhR(R�(R)R�tendrevRyR�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _chunkrawIs  cCst|j||��S(N(R#R�(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt_chunkPscCs |j|�S(N(R�(R)R=((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt _chunkbaseSscCs d|_dS(NiRJ(iRJ(RS(R)((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyRkVscCs:|j|d}||kr!tS|jr.|S|dSdS(s(return deltaparent of the given revisioniiN(R2RRd(R)R=R�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt deltaparentYs   cCsV|tkr4|j|�|kr4t|j|��Stj|j|�|j|��S(s1return or calculate a delta between two revisions(RR�R R�tmdiffttextdiffR�(R)trev1trev2((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytrevdiffcs!cCs&t|t�r'|}|j|�}n |}d}d}|tkrIdS|jr�|jd|krp|jdS|jd}nd}|dkr�|j|�}n|j|�t@r�t t d�|j|�t@��ng}|j }|j }|} || } xT| | dkr]| |kr]|j | �|rF| d} n | d8} || } q W|j�| } | |kr�|jd}nd|_|j| |�|dkr�t|j| ��}ng|D]} |j| �^q�} tj|| �}|j|||�}|||f|_|S(sTreturn an uncompressed revision of a given node or revision number. RJiiisincompatible revision flag %xiN(R�RR;R/RRQR=RqtREVIDX_KNOWN_FLAGSRRR2RdR.treverseR�R R�R�R�tpatchest _checkhash(R)t nodeorrevR=R;t cachedrevRtchainR2RMtiterrevR"R�R�tbins((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�ksT               "cCsS|j|�\}}|t|||�krOttd�|j|f��n|S(Nsintegrity check failed on %s:%d(R�RRRRN(R)RR;R=RR((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR��s  c Cs�|j s,|jd�|jd�tkr0dS|j|j�}|dkrjttd�|j��n|d}|j|�}|j |j |�|r�|j �|j �n|j |j d�}z.x'|D]}|j|j||��q�WWd|j �X|j |jddt�}|jtM_t|_xC|D];}|jj|j||j|j|�} |j| �q?W|j �|j|j||jj�|j�dS(Ni����s%s not found in the transactionitwt atomictemp(RcRyR�t _maxinlinetfindRNR/RRR�ROtflushR\RPtwriteR�RYR<RbR^RhR>R2R;treplaceR(Rk( R)ttrtfpttrinfottrindextdataoffR�R�RnR"((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytcheckinlinesize�s4,      !   ( c Cs�t|||�}||jkr%|Sd}|jsL|j|jd�}n|j|jd�} z)|j|||||||| |� SWd|r�|j�n| j�XdS(sadd a revision to the log text - the revision data to add transaction - the transaction object used for rollback link - the linkrev data to add p1, p2 - the parent nodeids of the revision cachedelta - an optional precomputed delta R�sa+N( RR3R/RcRPRORNt _addrevisionR\( R)Rt transactiontlinkRRt cachedeltaR;tdfhtifh((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt addrevision�s   cCs0|sd|fSt|�}d }|dkr1n�|dkr�tj�}g}d}x=||kr�|d }|j|j|||!��|}qXW|j|j��ttt|��|kr�dj |�}q�n t |�}|d kst|�|kr&|ddkrd|fSd|fSd|fS( s7 generate a possibly-compressed representation of text RJi,i@BiiiRRNi( R+R/Rt compressobjR.tcompressR�tsumR�tjoint _compress(R)RRRtzRHtpostpos2((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�s.          c  s[|g�������� � fd������� fd�} t� �} | d} | } }� j| ��d}d}� j�� j��� j� �}}| tkr1� jr |�dkr�| |�}q|�dkr�| |�}q| | �}n | | �}|\}}}} }n|dkrctj� j �d��d�}n t|�}|dks�||dkr���}� j |�}t|d�t|d�}| } }nt �|�||| |||�f}� j j d|�| � j�<� jj|� j� j| �}� js�|j� j��|j� j| t|��|dr��j|d�n�j|d��j��j|�ni�| � jj7�|j� j�| ��j|��j|d��j|d�� j|��t|�tkrH�| |f� _n| |f� _�S(s internal function to add revisions to the log see addrevision for argument descriptions. invariants: - text is optional (can be None); if not set, cachedelta must be set. if both are set, they must correspond to each other. cs��ddk r�dS�r+�j�n�j��j�j�d��}tj|�d��d<t�d���}|�kr�ttd���n�dS(Niisconsistency error in delta( R/R�R�R;R�tpatchRRR(tbasetexttchk(tbtextRRRR;RRR)(s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt buildtexts   c s��r#�d|kr#�d}n3��}�j�j|��}tj||�}�j|�}t|d�t|d�}�d|kr��d}n�j|�}|��j|�}�jr�|}n|}|||||fS(Nii( R�R;R�R�RR+R�RyRd( R=tdeltaR!tptextR0RR�tdistR�(t basecacheRRR R)(s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt builddelta's     iiii����N(R+R�R/RRR=RRdR�t patchedsizeR�RR R2tinsertR3RhR>R;R<RcR�RORNR�R�R(R�R R RQ(R)R;RRRRRRRRRtcurrtprevR�R�RqRstp1rtp2rRRR0ttextlenR"R:(( RRRRRRR;R RRR)s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyR�sh $            !    c #s6t|�dkr!|j�VdS�jr6|tk s<|rytj��}t�fd�|D��}|j|�}n(tg|D]}�j |�^q��}�j |d�d}|j d|�x\t t|�d�D]D}||||d} } x"|j �| | �D] } | VqWq�W|j�VdS(s�Calculate a delta group, yielding a sequence of changegroup chunks (strings). Given a list of changeset revs, return a set of deltas and metadata corresponding to nodes. The first delta is first parent(nodelist[0]) -> nodelist[0], the receiver is guaranteed to have this parent as it has all history before these changesets. In the case firstparent is nullrev the changegroup starts with a full revision. iNc3s|]}�j|�VqdS(N(R=(R�R4(R)(s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pys <genexpr>�si(R+R\RdR^tdagutilt revlogdagR�t linearizetsortedR=R�RRwtrevchunk( R)tnodelisttbundlertreordertdagR|R4RHR�RRR�((R)s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytgroupzs  ( c Cs�g}d }t|�}d}|r:|j|d�}n|j|jd�}||jj} |jr�|j|j|| |�d } n>|j|j| |�|j|j |�|j|j d�} z�d } x�t r\|j | �} | s�Pn| d}| d} | d}| d}| d }| d }|j |�||�}||j krd|} q�nxA| |fD]3}||j krqt||jtd ���qqqqW||j kr�t||jtd ���n|j|�}|j|d ||| |||f|| � } | r�|j r�|j�|j|j d�} |j|jd�}q�q�WWd | rt| j�n|j�X|S(s� add a delta group given a set of deltas, add them to the revision log. the first delta is against its parent, which should be in our log, the rest are against the previous delta. iisa+R�R;RRtcst deltabaseRsunknown parentsunknown delta baseN(R/R+R�RPRNRhR(RcR�RORYt deltachunkR.R3R�RR=R�R\(R)tbundlet linkmapperRtcontentR;R�R�RtisizeRR�t chunkdataRRR)R*RRRHtbaserev((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytaddgroup�sb                   cCst|�dkrdSx-|D]!}|j|d|krPqqWdS|j|�}|js�|j|j|�||jj}n|||jj7}|j|j|�d|_ |j �x0t |t|��D]}|j |j|�=q�W|j|d5dS(s7truncate the revlog on the first revision with a linkrev >= minlink This function is called when we're stripping revision minlink and its descendants from the repository. We have to remove all revisions with linkrev >= minlink, because the equivalent changelog revisions will be renumbered after the strip. So we truncate the revlog on the first of these revisions, and trust that the caller has saved the revisions that shouldn't be removed and that it'll re-add them after this truncation. iNii����(R+R2RyRcR�RORhR(RNR/RQRkRwR3R;(R)tminlinkRR=R�R((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytstrip�s"    c Cs�d}t|�r7td|jt|�d��}nyF|j|j�}|jdd�|j�}|j�||}Wn1tk r�}|j t j kr��nd}nXy�|j|j �}|jdd�|j�}|j�|j j }td||�}|||}|jrvd} x*|D]"} | td|j| ��7} q/Wd}|t|�|| }nWn1tk r�}|j t j kr��nd}nX||fS(Niii(R+R�R�RPROR�ttellR\R_R`RaRNRhR(RcR�( R)texpectedRotactualtddRpRRntdit databytesR�((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt checksizes@ %          cCs,|jg}|js(|j|j�n|S(N(RNRcR.RO(R)tres((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pytfiles8s  N(?R?R@t__doc__R*RtRuRxR/R|R�t propertycacheR3R~RR=R;R�R�R�RyR�R�R�RqR�R(R^R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RkR�R�R�R�R�RRR�R(R2R4R;R=(((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyRI�sr D                  *�  "  "            @  '   k & J ) %ii(6R>R;RRRRti18nRR�R�RCRR�RR%RR`tpackR9R]R,RR R#Rtsha1RReRfRbRXtREVLOG_DEFAULT_FLAGStREVLOG_DEFAULT_FORMATRWRgR�R�R�RR�RRR R RR't v0shaoffsettobjectR$RBt ngshaoffsetRGRARI(((s6/usr/lib64/python2.7/site-packages/mercurial/revlog.pyt<module> sH"H$               +