
    6h0s                       S SK Jr  S SKrS SKrSSKJrJrJr  SSKJ	r	J
r  / r\" 5       r " S S5      rS<S	 jr\" S
SS9S 5       r\" SSSS9S 5       r\" SSS9S 5       r\" S\S9S 5       r\" SSSS9S 5       r\" S\S9S 5       r\" SSSS9S 5       r\" S\S9S 5       r\" SSSS9S  5       r\" S!SSS9S" 5       r\" S#SSS9S$ 5       r\" S%S&SS9S' 5       r\" S(SSS9S) 5       r\" S*S+SS9S, 5       r\" S-S.SS9S/ 5       r\" S0SSS9S1 5       r \" S2S+SS9S3 5       r!S4 r"S5 r#S6 r$\RJ                  4S7 jr&      S=S8 jr' " S9 S:5      r(    S>S; jr)g)?    )annotationsN   )mdiffnoderevlogutils   )	constantsdeltasc                  (    \ rS rSrSrSS jrS rSrg)_column_base   zconstains the definition of a revlog column

name:         the column header,
value_func:   the function called to get a value,
size:         the width of the column,
verbose_only: only include the column in verbose mode.
Nc                z    Xl         X l        U[        La  Uc  Sn[        [	        U5      U5      nX0l        X@l        g )N   )name
value_func	NODE_SIZEmaxlen_sizeverbose_only)selfr   r   sizeverboses        =/usr/lib/python3/dist-packages/mercurial/revlogutils/debug.py__init___column_base.__init__'   s9    	$y |s4y$'D
#    c                D    U R                   [        L a  U$ U R                   $ N)r   r   )r   	node_sizes     r   get_size_column_base.get_size1   s    ::"::r   )r   r   r   r   NF)__name__
__module____qualname____firstlineno____doc__r   r!   __static_attributes__ r   r   r   r      s    $r   r   c                   ^ ^^ U UU4S jnU$ )zsdecorated function is registered as a column

name: the name of the column,
size: the expected size of the column.
c                J   > [        TU TTS9n[        R                  U5        U$ )N)r   r   r   r   )r   INDEX_ENTRY_DEBUG_COLUMNappend)funcentryr   r   r   s     r   registerdebug_column.<locals>.register?   s.    	
 	!''.r   r*   )r   r   r   r1   s   ``` r   debug_columnr3   8   s     Or      rev   )r   c                    SU-  $ N   %dr*   indexrevr0   hexfns       r   _revr=   L   s    3;r   s   rankT)r   r   c                .    SU[         R                     -  $ r7   )r	   
ENTRY_RANKr9   s       r   rankr@   Q   s    5--...r   s   linkrevc                .    SU[         R                     -  $ r7   )r	   ENTRY_LINK_REVr9   s       r   _linkrevrC   V       511222r   s   nodeidc                4    U" U[         R                     5      $ r   )r	   ENTRY_NODE_IDr9   s       r   _nodeidrG   [   s    y../00r   s   p1-revc                .    SU[         R                     -  $ r7   )r	   ENTRY_PARENT_1r9   s       r   _p1_revrJ   `   rD   r   s	   p1-nodeidc                b    U[         R                     nX   nU" U[         R                     5      $ r   )r	   rI   rF   r:   r;   r0   r<   parentp_entrys         r   _p1_noderO   e   /    9++,FmG00122r   s   p2-revc                .    SU[         R                     -  $ r7   )r	   ENTRY_PARENT_2r9   s       r   _p2_revrS   l   rD   r   s	   p2-nodeidc                b    U[         R                     nX   nU" U[         R                     5      $ r   )r	   rR   rF   rL   s         r   _p2_noderU   q   rP   r   s	   full-size   c                .    SU[         R                     -  $ r7   )r	   ENTRY_DATA_UNCOMPRESSED_LENGTHr9   s       r   	full_sizerY   x   s    5AABBBr   s
   delta-basec                .    SU[         R                     -  $ r7   )r	   ENTRY_DELTA_BASEr9   s       r   
delta_baser\   }   s    533444r   s   flagsc                <    U[         R                     nUS-  nSU-  $ )Ni  r8   r	   ENTRY_DATA_OFFSETr:   r;   r0   r<   fields        r   flagsrb      s%    )--.E	VOE5=r   s	   comp-mode   c                .    SU[         R                     -  $ r7   )r	   ENTRY_DATA_COMPRESSION_MODEr9   s       r   compression_moderf      s    5>>???r   s   data-offsetc                <    U[         R                     nUS-  nSU-  $ )N   r8   r^   r`   s        r   data_offsetri      s%    )--.E	bLE5=r   s
   chunk-size
   c                .    SU[         R                     -  $ r7   )r	   ENTRY_DATA_COMPRESSED_LENGTHr9   s       r   data_chunk_sizerm      s    5??@@@r   s   sd-comp-mode   c                    U[         R                     nU[         R                  :X  a  gU[         R                  :X  a  gU[         R                  :X  a  gSU-  $ )Ns   plains   default   inliner8   )r	   ENTRY_SIDEDATA_COMPRESSION_MODECOMP_MODE_PLAINCOMP_MODE_DEFAULTCOMP_MODE_INLINE)r:   r;   r0   r<   compressions        r   sidedata_compression_moderv      sP    	AABKi///		33	3		22	2{""r   s   sidedata-offsetc                .    SU[         R                     -  $ r7   )r	   ENTRY_SIDEDATA_OFFSETr9   s       r   sidedata_offsetry      s    588999r   s   sd-chunk-sizec                .    SU[         R                     -  $ r7   )r	    ENTRY_SIDEDATA_COMPRESSED_LENGTHr9   s       r   sidedata_chunk_sizer|      s    5CCDDDr   c                   U(       a  [         R                  nO[         R                  nSnU H#  n[        U" UR	                  U5      5      5      n  O   Un/ n	[
         Hd  n
U
R                  (       a  U R                  (       d  M'  U
R                  U5      nU
R                  nU	R                  UR                  U5      5        Mf     UR                  SR                  U	5      S-   5        UR                  nU H  nUR                  5         X   nSn[
         H  n
U
R                  (       a  U R                  (       d  M'  U(       d  UR                  S5        SnU
R                  U5      nU
R!                  XX5      nSU-  nUR#                  U
R                  UU5        M     UR                  S5        M     UR%                  5         g)zdisplay index data for a revlog          
TFs   %%%dsN)nodemodhexshortr   r   r-   r   r   r!   r   r.   rjustplainjoinr:   	startitemr   writeend)uirepo	formatterrevlog	full_noder<   idlenifmheader_piecescolumnr   r   r:   r;   r0   firstvaluedisplays                      r   debug_indexr      s`    EE&++a.)*  
BM*rzzu%{{TZZ-. + HHTYY}%-.LLE

.F""2::E??5)D%%e%?EoGHHV[['51 / 	 " FFHr   c                   Un[        U5      nU R                  S5        Sn[        5       n[        U5       GH.  nUR	                  U5      nUS:X  a  UnUR                  U5      nUR                  U5      n	UR                  U5      u  pUR                  U5      nXL-   nU[        UR                  U5      5      -  nUR                  U5         XBR                  U5      -  nU R                  SUU
UUR                  U5      UR                  U5      UR                  U5      UR                  U5      UR                  U
5      UR                  U5      UUU[        U5      U	4-  5        GM1     g! [         a    Sn Nf = f)z+perform the work for `hg debugrevlog --dumpse   # rev p1rev p2rev start   end deltastart base   p1   p2 rawsize totalsize compression heads chainlen
r   s:   %5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d %11d %5d %8d
N)r   writenoi18nsetrangedeltaparent	chainbasechainlen
parentrevsrawsizeaddr   ZeroDivisionErrorr   start)r   r   rnumrevstsheadsr;   dbasecbaseclenp1p2rsru   s                 r   dumpr      sb    	A!fGNN	; 
BEEW~c"B;EC zz#c"YYs^WQ\\#&''		#	uuSz/K 	 c
E
	
  ! 	K	s   E**E98E9c           	       ^J^K^L UnUR                   nUR                  n/ nSnU[        R                  -  (       a  UR	                  S5        U[        R
                  -  (       a  SnUR	                  S5        U(       d  S/nSnSnSn	Sn
SnSnSn[        R                  " [        5      n[        R                  " [        5      nSnSnSnSnSnSnSnSn/ n/ n/ n/ SQn/ SQn/ SQn[        R                  " S 5      n/ SQn0 n 0 n!S	 n"UR                  5          [        U5      n#[        U#5       GH  n$UR                  U$5      u  n%n&UR                  U$5      n'US:  a  UR                  U$5      n(UU(-  nU"" U(U5        U&[        R                   :w  a  US
-  nUR#                  U$5      n)U'[        R                   :X  a}  UR	                  S5        UR	                  UR%                  U$5      5        UR	                  U)5        U)S:X  a  U	S
-  n	U
S
-  n
GOUS
-  nUS==   S
-  ss'   U"" U)U5        U"" U)US   5        GOjU'U%:g  =(       a#    U'U&:g  =(       a    UR'                  U'U$5      (       + n*UR	                  UU'   S
-   5        UU'   n+UR%                  U$5      n,UR	                  U+5        UR	                  U,U+-
  U)-   5        U)S:X  a  U	S
-  n	US
-  nOUR)                  U$5      (       aM  U"" U)U5        US
-  nUR+                  U$5      n-UU-==   S
-  ss'   U*(       a  UU-==   S
-  ss'   U"" U)UU-   5        OrU"" U)U5        U'U$S
-
  :X  a*  US
-  nU'U%:X  a  US
-  nOOU'U&:X  a  US
-  nOCU*(       a  US
-  nO6U'U%:X  a  US
-  nO*U'U&:X  a  US
-  nOU'[        R                   :w  a
  US
-  nUS
-  n[-        US5      (       a   UR.                  R1                  U$U$5      S
   n.OUR2                  R5                  U$U$5      S
   n.U.(       a  [7        U.SS
 5      n/OSn/U/U ;  a
  SU U/'   SU!U/'   U U/==   S
-  ss'   U!U/==   U)-  ss'   GM     SSS5        UUUU4 H  n)U)S   b  M  SU)S'   M     W#U-
  U	-
  U-
  n0UU-
  U-
  U-
  n1UU-
  n2US   n3US==   U#-  ss'   US   n4US:X  a  SUS'   OUS==   U-  ss'   US   n50 n6US:  a  US==   U-  ss'   U H!  n-UU-   S   U6U-'   UU-   S==   UU-   -  ss'   M#     US   n7U0S:  a  US==   U0-  ss'   U4U5-   U7-   n8[9        U5      U#-  n9[;        U5      n:[;        U5      n;S
n<U8(       a  U3U8-  n<SmJSmKUJ4S jn=SAUK4S jjn>S n?U R=                  SU-  5        U R=                  SSR?                  U5      -  5        U RA                  S5        U>" U85      n@U=" U85      nAU R=                  SUAU#-  -   5        U R=                  SU@U?" UU#5      -  -   5        U R=                  SU@U?" U#U-
  U#5      -  -   5        U R=                  SUAU#-  -   5        U R=                  SU@U?" U	U#5      -  -   5        U R=                  SU@U?" XU-   5      -  -   5        U R=                  SU@U?" XU-   5      -  -   5        U R=                  SU@U?" X-   U#5      -  -   5        [C        U5       H  n-SU--  nBW@U?" UU-   U#5      -  nCUBUC/nDUU-   (       aB  WCSS  =WDS '   nCS!nEW@nFUFU?" UU-   UU-   5      -  nFUDR	                  UE5        UDR	                  UF5        U RA                  S"R?                  WD5      5        M     U R=                  S#W@U?" U0U#5      -  -   5        U R=                  S$WAU8-  -   5        U R=                  SU@U?" U4U5-   U85      -  -   5        [C        U5       H'  n-U RA                  SU--  W@U?" U6U-   U85      -  -   5        M)     U R=                  S#W@U?" U7U85      -  -   5        [D        RF                  RI                  S%5      mLUL4S& jnGU RA                  S5        U R=                  S'WAU#-  -   5        [C        U 5       H8  n/U RA                  WG" U/5      5        U RA                  W@U?" U U/   U#5      -  5        M:     U R=                  S(WAU8-  -   5        [C        U 5       H8  n/U RA                  WG" U/5      5        U RA                  W@U?" U!U/   U85      -  5        M:     U RA                  S5        S)U-  nH/ nI[        UH5      S*:  a*  WIR	                  WHS+S 5        UHSS+ nH[        UH5      S*:  a  M*  WIR	                  WH5        UIRK                  5         S,R?                  UI5      nHU RA                  S5        U R=                  S-UH-  5        U RA                  S5        U=" [;        U9U:U;U<5      5      n@U R=                  S.U@U9-  -   5        U R=                  S/U@U:-  -   5        U R=                  S0U@U;-  -   5        U R=                  S1U@U<-  -   5        US:  a.  U RA                  S5        U R=                  S2[M        U5      -  5        U R=                  S3[M        U5      -  5        U R=                  S4[M        U5      -  5        [C        U5       H/  n-U-S:X  a  M  U R=                  S5U-4[M        UU-   5      -   -  5        M1     U R=                  S6[M        U5      -  5        U0S:  Ga?  U RA                  S5        U>" U05      n@U>" U0S75      nAU R=                  S8U@U?" UU05      -  -   5        US:  ax  U R=                  S9WAU?" UU5      -  -   5        U R=                  S:UAU?" UU5      -  -   5        U R=                  S;UAU?" U1U5      -  -   5        U R=                  S<UAU?" U1U5      -  -   5        U(       ay  U R=                  S=W@U?" UU05      -  -   5        U R=                  S>U@U?" UU05      -  -   5        U R=                  S?U@U?" U2U05      -  -   5        U R=                  S@U@U?" UU05      -  -   5        ggg! , (       d  f       GN= f)Bzcode for `hg debugrevlog`Frp   Ts   generaldeltas   (none)r   Nr   r   c                 
    / SQ$ )Nr   r*   r*   r   r   <lambda>debug_revlog.<locals>.<lambda>Q  s    Lr   c                Z    US   b  XS   :  a  XS'   XS   :  a  XS'   US==   U -  ss'   g )Nr   r   r   r*   )r   ls     r   addsizedebug_revlog.<locals>.addsizeV  s7    Q4<4A$;aDA$;aD	!r   r   _inner   emptyNr   s   %%%dd
s   %%%dd %s(%%5.2f%%%%)
c                2   > T[        [        U 5      5      -  $ r   r   str)r   basedfmtstrs    r   dfmtstrdebug_revlog.<locals>.dfmtstr  s    SS]**r   c                <   > T[        [        U 5      5      SU-  4-  $ )Nr   r   )r   paddingbasepcfmtstrs     r   pcfmtstrdebug_revlog.<locals>.pcfmtstr  s    s3s8}dWn===r   c                >    U(       a  U S[        U 5      -  U-  4$ U S4$ )Nd   g      Y@)float)r   totals     r   pcfmtdebug_revlog.<locals>.pcfmt  s(    3u-566%<r   s   format : %d
s   flags  : %s
s   , r   s   revisions     : s       merges    : s       normal    : s       empty     : s                      text  : s                      delta : s       snapshot  : s         lvl-%-3d :       r   s     non-ancestor-bases: r   s       deltas    : s   revision size : asciic                   > U S:X  a  SU -  $ U T;   a  S[         R                  " U 5      U 4-  $ S[         R                  " U 5      -  $ )Nr   s       %s     : s       0x%s (%s)  : s       0x%s      : )r   r   )	chunktypeletterss    r   fmtchunktype"debug_revlog.<locals>.fmtchunktype  sK     #i//'!'7;;y+A9*MMM&Y)???r   s   chunks        : s   chunks size   : r8      r   s   total-stored-content: %s bytes
s   avg chain length  : s   max chain length  : s   max chain reach   : s   compression ratio : s4   uncompressed data size (min/max/avg) : %d / %d / %d
s4   full revision size (min/max/avg)     : %d / %d / %d
s4   inter-snapshot size (min/max/avg)    : %d / %d / %d
s5       level-%-3d (min/max/avg)          : %d / %d / %d
s4   delta size (min/max/avg)             : %d / %d / %d
rc   s   deltas against prev  : s       where prev = p1  : s       where prev = p2  : s       other-ancestor   : s       unrelated        : s   deltas against p1    : s   deltas against p2    : s   deltas against ancs  : s   deltas against other : )r   )'_format_version_format_flagsr	   FLAG_INLINE_DATAr.   FLAG_GENERALDELTAcollectionsdefaultdictintreadingr   r   r   r   r   r   nullrevlengthr   isancestorrev
issnapshotsnapshotdepthhasattrr   get_segment_for_revs_revlog_getsegmentforrevsbytessumr   r   r   r   sortedstringascii_lettersencodereversetuple)Mr   r   r   formatvrb   gdeltafull_text_total_size	nummergesnumemptynumemptytextnumemptydeltanumfullnumseminumsnapdepthnumsnapdepth_nadnumprevnumprev_nadnump1nump2numothernumother_nad	nump1prev	nump2prevchainlengths
chainbases
chainspansdatasizefullsizesemisizesnapsizedepth	deltasizechunktypecountschunktypesizesr   r   r;   r   r   deltasr   nadbaseaddrrevaddrdepthsegmentr   	numdeltasnumoprevnum_other_ancestorstotalrawsize	fulltotal	semitotal	snaptotal
deltatotal	totalsizeavgchainlenmaxchainlenmaxchainspan	compratior   r   r   fmtfmt2basecountpiecesmore	anc_countr   b_totalp_totalr   r   r   sM                                                                             @@@r   debug_revlogr(    s   AF	AEF9%%%Y9&&&_% I HLMGG**3/L"..s3GKEEHL II LJJ HHH++,@AMION 
a&>C\\#&FBMM#&EzIIcN$)$8$W__$Q	88C=D'##A&!!!''#,/!!$'19MH A%LqLG Oq(OD(+D-"23 RK 88OOE377 
 ##L$7!$;<%e,''#,!!(+!!7X#5"=>19MH!Q&M\\#&&D(+qLGOOC0E '1,'(/14/D-"67D),a'1 B;%NI"b[%NI '1,K"
"
'//1 A$) q(##((77SA!D))66sC@C!'!A,/	$	/-.	*,-y)I&!+&9%-%[ " 
d 8Xy97?DG : '!H,w6I"Y.<H"\1A;LQK7KI!|wII{w(/2	%eQ<#66  1J1}!	!I%
2Il#g-Kl#Kz?LI 9,	K,L+>  NN#f,-NN#ejj&778HHUO
9
C9DNN&78NN&uY/H)HHINNcE'I*=w$GGG NN&78NN&uXw/G)GGHNN&
l=$@A
A	B NN&
mM%AB
B	C NNcE'*;W$EEE %)E1eL/99E"!&s+F2J,DI/6U8KLLIMM$MM)$
&!" & NN&uY/H)HHINN&	)99:NNcE)i*?$KKK %
'%/E)E*I667	
 &
 NN&uZ/K)KKL""))'2G@ HHUONN&78O,	
i()
u_Y7AAB - NN&	)99:O,	
i()
u^I6	BBC - HHUO**GG
g,
wrs|$#2, g,
 NN7OOii GHHUONN6@AHHUO
#k;iH
ICNN*S;->>?NN*S;->>?NN*S<-??@NN*S9_<=z

DHo	
 NN@
/	 NN@
/	 &A:
Ex%e 4557	
 ' NN@
	
	
 1}
y!	1%
&uWi/H)HH	
 Q;NN*TE)W4M-MM NN*TE)W4M-MM NN*TE(G4L-LL NN*TE(G4L-LL NN*S5	3J-JJ NN*S5	3J-JJ NN*19==> NN*lI667 ) g 
s   L!o::
p	c           	     t   [         R                  " UU R                  U R                  (       + S9nUR	                  U5      nUR                  U5      u  pgUR	                  U5      nUR	                  U5      n	UR                  U5      n
U
/n[        US   5      nSnUR                  U5      nU[        R                  :w  a=  UR                  U5      n[        R                  " X5      nUU[        R                  4nS/n[        R                   " UUU	UUUU5      nUR#                  5       nUR%                  UUUS9  g)z&display the search process for a delta)write_debugdebug_searchr   N)
target_rev)	deltautildeltacomputerr   quietr   r   revisionr   rb   r   r   r   textdiffr	   DELTA_BASE_REUSE_TRYr   revisioninfo_datafpfinddeltainfo)r   r   r;   base_revr.  r   p1rp2rr   r   	full_textbtexttextlen
cachedeltarb   	base_textr  revinfofhs                      r   debug_delta_findr@  u  s!   ++HH\M ;;sD  %HC	S	B	S	B$IKE%(mGJLLE7??"OOH-	y4y'E'EF
&&

G 
	B<r   c                   UR                  S5        U R                  R                  5        Vs/ s H  oUR                  (       d  M  UPM     nnUR	                  S S9  U GH  nU(       d  UR
                  (       a  M  U(       d  UR                  (       a  M8  U(       d  UR                  (       a  MR  UR                  U 5      R                  5       nUR                  5         [        U5      n	UR                  n
UR                  U	S-
  5      nUR                  nSnSnUS   [        R                   :X  a  SnO=US   [        R"                  :X  a  S	nUS   nOUS   [        R$                  :X  a  S
nUS   nUR'                  SSU	5        UR'                  SSU5        UR'                  SSU
(       a  SOS5        UR'                  SSU5        UR'                  SSU5        UR                  S5        GM     gs  snf )zKFormat revlog statistics for debugging purposes

fm: the output formatter.
s,   rev-count   data-size inl type      target 
c                2    U R                   U R                  4$ r   )revlog_type	target_id)es    r   r   $debug_revlog_stats.<locals>.<lambda>  s    q}}akk&Br   )keyr   s   unknownr   r   s	   changelogs   manifests   files   revlog_rev_count   %9ds   revlog_data_sizes   %12ds   revlog_inlines    %-3ss   yess   nos   revlog_types    %-9ss   revlog_targets    %sr   N)r   storewalk	is_revlogsortis_changelogis_manifestlog
is_filelogget_revlog_instance
get_revlogr   r   _inline_get_data_offsettargetr	   KIND_CHANGELOGKIND_MANIFESTLOGKIND_FILELOGr   )r   r   	changelogmanifestfilelogsrE  revlog_entriesr0   rlognb_revinline	data_sizerT  rC  revlog_targets                  r   debug_revlog_statsra    s    HH=>!%!2B!2Akka!2NBBCU//e22e..((.99;
T))&1*5	 !9	000&KAY)444%K"1IMAY)000!K"1IM
$ff5
$gy9
!8vV5I
;7
!6=9
A   Cs   G2G2c                  $    \ rS rSrS rSS jrSrg)DeltaChainAuditori  c                    Xl         U R                   R                  U l        UR                  R                  U l        0 U l        [        U R                  5      U l        g r   )	r   r:   _indexdelta_configgeneral_delta_generaldelta_chain_size_cacher   _total_revs)r   r   s     r   r   DeltaChainAuditor.__init__  sE    ll((#00>>!#t{{+r   c                   U R                   U   nU[        R                     nU[        R                     nU[        R                     nU[        R
                     n	U[        R                     n
U	nU	[        R                  :w  a  XR                  :  a  U R                   U	   nU[        R                     S:X  af  U[        R                     nX:X  d#  U[        R                  :X  d  XR                  :  a  O*UnU R                   U   nU[        R                     S:X  a  Mf  U
nU
[        R                  :w  a  XR                  :  a  U R                   U
   nU[        R                     S:X  af  U[        R                     nX:X  d#  U[        R                  :X  d  XR                  :  a  O*UnU R                   U   nU[        R                     S:X  a  Mf  U R                  (       aY  X:X  a  SnO[X:X  a  SnOSX:X  a  SnOKX:X  a  SnOCX:X  a  SnO;U R                  R                  U5      (       a  SnOXS-
  :X  a  S	nOS
nO
X:X  a  SnOS	nU R                  R                  U5      S   nU	U
UUUUS.nU(       d  U(       d  U(       ar  Sn[        U5       HM  nU R                  R!                  U5      nUb  UU-  n  O)U R                   U   nUU[        R                     -  nMO     UU R                  U'   UUS'   U$ )Nr      p1   p2s   bases   skip1s   skip2s   snapr   s   prevs   other)r   r   compressed_sizeuncompressed_size	deltatypechain
chain_size)re  r	   rl   rX   r[   rI   rR   r   r   rj  rh  r   r   _deltachainreversedri  get)r   r;   	size_info	dist_infosparse_inforE  compsize
uncompsizer!  r   r   p1_basee1new_basep2_basee2rq  rr  datars  iter_revcacheds                         r   r>  DeltaChainAuditor.revinfo  s   KKY;;<y??@
++,y''(y''(  R*:*:%:RBY;;<Ai889'7??2#3#33"[[) Y;;<A  R*:*:%:RBY;;<Ai889'7??2#3#33"[[) Y;;<A z!	!	#	$	$	((--#	q#	$	{#	#	((-a0 '!+"
 	[J$UO//33H=%&(JKK)a	 F FGG
 , +5D""3'!+Dr   )ri  rh  re  r   rj  N)TTT)r$   r%   r&   r'   r   r>  r)   r*   r   r   rc  rc    s    ,Yr   rc  c              #    ^$#    [        U 5      nU nUR                  nUR                  nU R                  R                  n	Sn
U(       a  U
S-  n
U(       a  U
S-  n
U	(       a  U(       a  U
S-  n
U
S-  n
U
v   Uc  [        U5      nO [        U5      m$[        U$4S jU 5       5      n0 nU GH  nUR                  UUUUS9nUS   nUS	   nUS
   nUS   nUR                  U[        U5      S-   5      nU(       a   U" U5      nU" U5      nUU-   U-
  nUUS   -
  n US   nU(       a%  US   nUS:w  a  [        U5      [        U5      -  nOUnU(       a   WS:w  a  [        W5      [        U5      -  nOWnSSSU4SSSUS   4SSSUS   4SSSU4SSS[        U5      4SSSU4SSS US    4/nU(       a%  UR                  S!S"S#U4S$S"S%U4S&S"S'W4S(S)S*W4/5        U(       a   UR                  S+S,S-W4S.S,S/W4S0S1S2W4/5        U	(       a  U(       a  US   nSnSnSn[        R                  " UU5       H<  n US-  nU" U S   5      U" U S   5      -   n!U!U" U S   5      -
  n"UU"-  nUU":  d  M:  U"nM>     U(       a  [        U5      [        U5      -  n#OSn#UR                  S3S"S4U4S5S"S6U4S7S)S8U#4S9SS:U4/5        Uv   GM     g ! [         a    Sn GNf = f7f);Ns9       rev      p1      p2  chain# chainlen     prev   deltas+          size    rawsize  chainsize     ratios      lindist extradist extraratios)      readsize largestblk rddensity srchunksr   c              3  6   >#    U  H  oT:  d  M
  Uv   M     g 7fr   r*   ).0r;   revlog_sizes     r   	<genexpr>$debug_delta_chain.<locals>.<genexpr>S  s     C#{1B##s   		)rw  rx  ry  ro  rp  rr  r   r   rs  r   r4   s   %7dr;   rm  r   rn  r   s   chainidchainids   chainlens   %8dr   s   prevrevprevrevs	   deltatypes   %7srq  s   compsizes   %10drz  s
   uncompsizer{  s	   chainsize	chainsizes
   chainratios   %9.5f
chainratios   lindistrH  lindists	   extradist	extradists
   extraratios   %10.5f
extraratios   readsizereadsizes   largestblocklargestblocks   readdensityreaddensitys   srchunkssrchunks)rc  r   r   data_configwith_sparse_readiterr   r   r>  
setdefault
IndexErrorr   extendr-  
slicechunk)%r   revsrw  rx  ry  auditorr   r   r   withsparsereadheaderall_revsr  r;   infocompuncomprr  r   r  	basestartrevstart
lineardistr  r  r  r  r  r0   r  r  r  	revschunkblkendblksizer  r  s%                                       @r   debug_delta_chainr  0  s      'GAGGEXXF''88N	  LL<<+JJ
eOF
L|7!fCCCJ#	  
 %&)*W!H	''	3z?Q3FGi(ISzH!D94J"T,%77I	BiG \*I{"9-f=
&
A~"9-i0@@
&
 VUC(FD$t*-FD$t*-G4&*c%j9G46;[0AB
 LL ':t<"G\6B!7KC"HlJG	 LLJ?!6;	B"I|ZH k\*IHLH&11!U;	Ay}-y}0EE 51#66G#')#*L < #I.x@LL ':x@$g~|L#X}kJ &*h?	 s &  	G	s2   DKJ:EK$AK:K
K	K

Kr#   )rX  boolrY  r  rZ  r  )NTTT)*
__future__r   r   r    r   r   r   r   r	   r
   r-  r-   objectr   r   r3   r=   r@   rC   rG   rJ   rO   rS   rU   rY   r\   rb   rf   ri   rm   rv   ry   r|   r   r   r(  r   r@  ra  rc  r  r*   r   r   <module>r     s   #   
  H	 4( f1  gAt,/ -/ jq!3 "3 ii(1 )1 ia.3 /3 l+3 ,3 ia.3 /3 l+3 ,3 lT2C 3C m!T25 35 hQ- . lD1@ 2@ n2t4 5 m"d3A 4A oAt4	# 5	#  r48: 9: R6E 7E1h.
b\~
 07 $=N,,)-,9=,^b bN 
r   