
    	^cG                        d dl Z ddlmZ ddlmZ ddlmZmZ ddlmZ 	 d dl	Z	i ddd	d
dddddddddddddddddde	j
        dfdde	j        dfdde	j        dfdde	j        dfd de	j        dfd!de	j        dfd"de	j        dfd#de	j        dfiZn# eef$ r dZ	i ZY nw xY wi dd dd$dd%dd&dd'd d(d!d)d"d*d#d+dddd,dd-dd.dd/d0d1d2d3d4d5d6d7d8d9d:d;Zi d<d=d>dd?d d@d"dAd!dBd!dCd!dDdEdFd=dGddHddIdJdKddLddMd#dNddOdPi dQddRddSdTdUd=dVdEdWd!dXddYdZd[dd\dd]d^d_dd`ddaddbddcddddi deddfddgddhddiddjddkddlddmd=dnddoddpddqddrddsddtd!dud"i dvddwddxd dyd=dzdEd{d=d|d"d}dEd~dddEddddddddJdddd=ddddJd"dddZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z  e j!        d          Z"d Z#d Z$dZ%ej&        rEd dl'Z'e'j(        j)        Z*e'j+        Z,dZ- G d de'j.                  Z/ G d de'j.                  Z0 G d de'j.                  Z1dZ2dZ3dZ4d/Z5d-Z6dZ7dZ8d&Z9dZ:dZ;dZ<dZ=i dddd de6de5de6e5z  d e4d!e4e6z  d"e4e5z  d#e6e5z  e4z  de7d0dd2e:d4e9de:e9z  de8de8e:z  de8e9z  e:e9z  e8z  e;e=e<dZ%e7e;e=e<hZ>e*?                    e2          Z@e@e@e-k    rdZ%nV e1            ZAe*B                    e@ e'jC        eA                    sdZ%n%eAjD        ZE e j!        de jF        e jG        z            ZHd ZIdS dS )    N   )_)getattr)encodingpycompat)
stringutil   none)Ts   sgr0    s   standout)Ts   smsor
   	   underline)Ts   smulr
   s   reverse)Ts   revr
      inverse   blink)Tr   r
      dim)Tr   r
      bold)Tr   r
   s	   invisible)Ts   invisr
   s   italic)Ts   sitmr
   s   blackFr
   s   reds   greens   yellows   blues   magentas   cyans   white          !   "   #   $   %               s   black_background(   s   red_background)   s   green_background*   +   ,   -   .   /   )   yellow_background   blue_background   purple_background   cyan_background   white_backgrounds
   grep.matchs   red bolds   grep.linenumbers   grep.revs   grep.seps   grep.filenames	   grep.users	   grep.dates   grep.inserteds
   green bolds   grep.deleteds   bookmarks.actives   branches.actives   branches.closeds
   black bolds   branches.currents   branches.inactives   diff.changeds   diff.deleteds   diff.deleted.changeds   red bold underlines   diff.deleted.unchangeds   diff.difflines   diff.extendeds	   cyan bolds   diff.file_as   diff.file_bs	   diff.hunks   diff.inserteds   diff.inserted.changeds   green bold underlines   diff.inserted.unchangeds   diff.tabs   diff.trailingwhitespaces   bold red_backgrounds   changeset.publics   changeset.drafts   changeset.secrets   diffstat.deleteds   diffstat.inserteds!   formatvariant.name.mismatchconfigs"   formatvariant.name.mismatchdefaults   formatvariant.name.uptodates!   formatvariant.repo.mismatchconfigs"   formatvariant.repo.mismatchdefaults   formatvariant.repo.uptodates   formatvariant.config.specials   formatvariant.config.defaults   formatvariant.defaults   histedit.remainings   ui.addremove.addeds   ui.addremove.removeds   ui.errors	   ui.prompts   log.changesets   patchbomb.finalsummarys   patchbomb.froms   patchbomb.tos   patchbomb.subjects   patchbomb.diffstatss   rebase.rebaseds   rebase.remainings   resolve.resolveds   resolve.unresolveds
   shelve.ages   shelve.newests   shelve.names	   blue bolds   status.addeds   status.cleans   status.copieds   status.deleteds   cyan bold underlines   status.ignoreds   status.modifieds   status.removeds   status.unknowns   magenta bold underline)s   tags.normals
   tags.locals"   upgrade-repo.requirement.preserveds   upgrade-repo.requirement.addeds    upgrade-repo.requirement.removedc                 :    t                               |           d S N)_defaultstylesupdate)uiextname
colortables      1/usr/lib/python3/dist-packages/mercurial/color.pyloadcolortabler1      s    *%%%%%r
   c                    t           dS |dvrdS | j                            t                     |                     d          D ]\  }}|                    d          r%dt          |          df}|| j        |dd         <   ?|                    d          r+d	d|                    d
d          f}|| j        |dd         <   	 t          j                     n/# t           j	        $ r | j        
                                 Y dS w xY w| j                                                                        D ]T\  }\  }}}|s|sFt          j        t          j        |                    s |                     d|z             | j        |= Ut          j        d          rt          j        d          sE|dk    r$|r"|                     t%          d                     | j        
                                 dS dS )zDInitialize terminfo data and the terminal if we're in terminfo mode.N)   auto   terminfo   color   color.Fr
      	   terminfo.Ts   \E   	   s   no terminfo entry for %s
setafsetabr4   s>   no terminfo entry for setab/setaf: reverting to ECMA-48 color
)curses_terminfoparamsr,   _baseterminfoparamsconfigitems
startswithintreplace	setuptermerrorclearcopyitemstigetstrr   sysstrdebugwarnr   )	r-   mode	formattedkeyvalnewvalbecs	            r0   _terminfosetuprU      s6    ~)))1222NN8,, 1 1S>>)$$ 	1SXXs+F*0Bs122w''^^L)) 	1CVW!=!=>F*0Bs122w'<   
  """ ,113399;; ( (YaA 	 	(););<< 	( HH2Q6777"3'?7## 
#6?7+C+C 
# ;9GG'    	  """""
# 
#s   C (DDc                 h    t          |           }|| _        |r|dk    rt          |            dS dS dS )zconfigure color on a ui

    That function both set the colormode for the ui object and read
    the configuration looking for custom colors and effect definitions.   debugN)
_modesetup
_colormodeconfigstyles)r-   rM   s     r0   setupr[      sL    
 b>>DBM   R   r
   c                                           d          rd S                      dd          }|dk    rdS |dk    }d}|s9t          j        |          r%                     dd          dk    s|dk    rd}nd}|s|sd S |p6t
          j                            d	          d
k    o                                                      dd          t           dd          r                     dd          t          j        rOddlm} dk    r!t          r|                                rdn-dn*dk    rt          r|                                 ndk    rd fd}dk    r- j                                         t          s |             d S nMdk    r j                                         n-dk    r%t%                       j        s |             dnd S |s|rrS d S )Nr5   s   uirW   r3   Fs   --colors   alwaysTs   TERMs   dumbs   modepageractives	   pagermoder   )win32s   ansi   win32c                  j    k    r) r)                     t          d          z             d S d S d S )Ns(   warning: failed to set color mode to %s
)rL   r   )rN   rM   realmoder-   s   r0   modewarnz_modesetup.<locals>.modewarn  sI     8	GGABCCdJKKKKK r
   r4   )plainconfigr   	parseboolconfigsourcer   environgetrN   r   r   	iswindows r^   
w32effectsenablevtmoder>   rF   rU   )	r-   rd   autoalwaysr^   rb   rN   rM   ra   s	   `     @@@r0   rX   rX      s   	xx tYYuh''FxWDF 	J(00 	 OOE8,,
::""FFD $ t W%%0CR\\^^  99Xw''D r=%(( 7yy<66H 7??  $!3!3!5!5 $"# W___   	L L L L L L L L 8
  """ 	HJJJ4	 
W		
  """"	[	 	 r4+++! 	HJJJHt $ 9 4r
   c                    | j                             t                     |                     d          D ]\  }}d|vs|                    d          r|                     d|          }|rg }|D ]a}t          | |          r|                    |           (|                     t          d          t          j        |          |fz             bd                    |          | j         |<   d S )Nr5      .)r6   r8   s:   ignoring unknown color/effect %s (configured in color.%s)
    )_stylesr,   r+   r@   rA   
configlistvalideffectappendrL   r   r   pprintjoin)r-   status
cfgeffectsgoodrS   s        r0   rZ   rZ   &  s   Jn%%% nnX66 1 1
v!2!23L!M!M]]8V44
 	1D 
 
r1%% 	KKNNNNGG:  &,Q//8	9    "&4BJv#1 1r
   c                 F    | j         dk    rt          S | j         t          S i S )z8Return the effects map for the color mode set on the ui.r_   )rY   rk   _effects)r-   s    r0   _activeeffectsr}   <  s'    	}  		"Ir
   c                 h    | j          r|t          |           v p|| j         v p|dd         | j         v S )z(Determine if the effect is valid or not.N)r>   r}   )r-   effects     r0   rt   rt   E  sG    ""Cv1C1C'C "$$Jtt8J(Jr
   c                    d}|                     d          rd}|dd         }	 | j        |         \  }}}n# t          $ r Y dS w xY w|r*|r|S t          j        t          j        |                    S |r't          j        t          j        d          |          S t          j        t          j        d          |          S )	z%Helper function for render_effects().Fs   _backgroundTNr   r
   r<   r;   )endswithr>   KeyErrorr=   rI   r   rJ   tparm)r-   r   bgattrrP   termcodes         r0   _effect_strr   L  s     
B~&&  08c88   ss ; 	9O?8?3#7#7888	 ;|FOG44c:::|FOG44c:::s   7 
AAc                     g }|                      |          D ]}|s|                    |||g           d                    |          S )a]  Insert start sequence at every occurrence of stop sequence

    >>> s = _mergeeffects(b'cyan', b'[C]', b'|')
    >>> s = _mergeeffects(s + b'yellow', b'[Y]', b'|')
    >>> s = _mergeeffects(b'ma' + s + b'genta', b'[M]', b'|')
    >>> s = _mergeeffects(b'red' + s, b'[R]', b'|')
    >>> s
    '[R]red[M]ma[Y][C]cyan|[R][M][Y]yellow|[R][M]genta|'
    r
   )splitextendrw   )textstartstoppartsts        r0   _mergeeffectsr   b  s[     EZZ ' ' 	eQ%&&&&88E??r
   c                     |s|S  j         rHd                     fddg|                                z   D                       }t           d          }nnt	                     fddg|                                z   D             }dd                    |          z   dz   }dt          j        d                   z   dz   }t          |||          S )z-Wrap text in commands to turn on each effect.r
   c              3   8   K   | ]}t          |          V  d S r*   )r   ).0r   r-   s     r0   	<genexpr>z"_render_effects.<locals>.<genexpr>y  s>       
 
(.KF##
 
 
 
 
 
r
   r	   c                 D    g | ]}t          j        |                   S  )r   bytestr)r   rS   activeeffectss     r0   
<listcomp>z#_render_effects.<locals>.<listcomp>  s9     
 
 
 ]1-..
 
 
r
      [   ;   m)r>   rw   r   r   r}   r   r   r   )r-   r   effectsr   r   r   s   `    @r0   _render_effectsr   t  s
    	 J 
 
 
 
3:)gmmoo2M
 
 
 
 
 2w''&r**
 
 
 
Y0
 
 
 499U+++d2(*=+ABBBTIud+++r
   s   \x1b\[[0-9;]*mc                 8    t                               d|           S )z@Strip ANSI control codes which could be inserted by colorlabel()r
   )_ansieffectresub)r   s    r0   stripeffectsr     s    S$'''r
   c                 
     j         dk    r1|r.|r,|                    d          rd||dd         fz  }nd||fz  }nĉ j         g |                                D ]Z} j                            |d          }|r                    |           5t           |          r                    |           [d                              r5d                     fd	|                    d          D                       }|S )
z,add color control code according to the moderW      
s   [%s|%s]
Ns   [%s|%s]r
   rq   c                 2    g | ]}t          |          S r   )r   )r   liner   r-   s     r0   r   zcolorlabel.<locals>.<listcomp>  s5        $Bg66  r
   )rY   r   r   rr   rh   ru   rt   rw   )r-   msglabellsr   s   `    @r0   
colorlabelr     sA   	}   	0S 	0||E"" 0"eS"X%66 E3</		" 	" 	"A
q#&&A "q!!!!R## "q!!!))G$$ 	**     #		% 0 0   C Jr
   r   c                   2    e Zd Zdej        fdej        fgZdS )_COORDXYN__name__
__module____qualname__ctypesc_short_fields_r   r
   r0   r   r     s&        &.)C+@Ar
   r   c                   R    e Zd Zdej        fdej        fdej        fdej        fgZdS )_SMALL_RECTLeftTopRightBottomNr   r   r
   r0   r   r     s=        V^$FN#fn%v~&	
r
   r   c                   0    e Zd ZdefdefdefdefdefgZdS )_CONSOLE_SCREEN_BUFFER_INFOdwSizedwCursorPositionwAttributessrWindowdwMaximumWindowSizeN)r   r   r   r   _WORDr   r   r   r
   r0   r   r     s=        v(E"%"F+
r
   r   l    l          @      i @  i      r$   r%   r&   r'   )r(   s   bold_backgroundr   r   s   \033\[([^m]*)m([^\033]*)(.*)c                    |                     dd          }t          }d }|                                D ]\}| j                             |d          }|                                D ]*}		  |t          |	         |          }# t
          $ r Y 'w xY w]|                    d          sd|z   }t          j        t          |          }
	 |
r|

                    d                              d          D ]}|r |t          |          |          }|                                  t                              t          |            ||

                    d                     t          j        t          |

                    d	                    }
|
|                                  t                              t          t                     d S # |                                  t                              t          t                     w xY w)
Nr   r
   c                 p    | dk    rt           S | t          v r|| z  S | dk    r| dz  |dz  z  S | dz  |dz  z  S )Nr      p      r      )origattrpassthrough)rP   r   s     r0   mapcolorzwin32print.<locals>.mapcolor  sT    byy##cz!td
td{33d
td{33r
   r   s   [mr   r   r   r   )rh   r   r   rr   rk   r   rA   rematchansiregrouprB   flush	_kernel32SetConsoleTextAttributestdout)r-   	writefuncr   optsr   r   r   r   styler   msattrs               r0   
win32printr     s   #&&	4 	4 	4  	 	AJNN1c**E++--  #8Jv$6==DD    D x(( 	$t#D HVT""	@ 1WWQZZ--d33 : :E :'xE

D99


11&$???	!''!**%%%HVQWWQZZ00  1 HHJJJ--fh????? HHJJJ--fh????s   )B
BBC	G ;H)Jr   i18nr   r   r   rj   r   utilsr   r=   COLOR_BLACK	COLOR_REDCOLOR_GREENCOLOR_YELLOW
COLOR_BLUECOLOR_MAGENTA
COLOR_CYANCOLOR_WHITEr?   ImportErrorAttributeErrorr|   r+   r1   rU   r[   rX   rZ   r}   rt   r   r   r   compiler   r   r   rk   ri   r   windllkernel32r   c_ushortr   _INVALID_HANDLE_VALUE	Structurer   r   r   _STD_OUTPUT_HANDLE_STD_ERROR_HANDLE_FOREGROUND_BLUE_FOREGROUND_GREEN_FOREGROUND_RED_FOREGROUND_INTENSITY_BACKGROUND_BLUE_BACKGROUND_GREEN_BACKGROUND_RED_BACKGROUND_INTENSITY_COMMON_LVB_REVERSE_VIDEO_COMMON_LVB_UNDERSCOREr   GetStdHandler   csbiGetConsoleScreenBufferInfobyrefr   r   	MULTILINEDOTALLr   r   r   r
   r0   <module>r     s
   
			                   
      MMM%) 	* 	'	
 	' 	' 	# 	% 	+ 	' 	5&,c2 	(#. 	5&,c2 	E6.4 	%*C0  	UF0#6!" 	%*C0#$ 	5&,c2% ( 	^$   F
Qb B b	
 r R  R b Q q !  A   r!" #$ -  2J;JJ J 	J
 jJ *J *J mJ [J J J J J 'J XJ  V!J" 2#J J$ v%J& g'J( l)J* K+J, M-J. */J0 h1J2 53J4 5J6 7J8  69J: ;J< =J> ?J@ AJB (CJD )&EJ J JF *9GJH #HIJJ )&KJL *9MJN #HOJP $YQJR $XSJT cUJV ;WJX 8YJZ V[J\ ]J^ )_J` iaJb scJd zeJf WgJ J Jh (iJj CkJl wmJn oJp qJr ;sJt 7uJv mwJx LyJz ]{J| W}J~ gJ@ -AJB }CJD EJF {GJH 0IJ JJ  +2'/)/SJ J JZ& & &*# *# *#Z  N N Nb1 1 1,    ; ; ;,  $, , ,( 
-..( ( (
  6 
 K@MMM&IOEB B B B B! B B B
 
 
 
 
f& 
 
 

 
 
 
 
f&6 
 
 
 $"O"O" &#! 	 	#	
 	?%66 	! 	$6 	!$55 	/$558HH 	& 	U 	? 	. 	o0AA 	,  	.@!" 	,/@@#& //2BB1,-/  J6 	!	K ## F ~#888

**,,33FLFL<N<NOO 	 JJ'HRZ0",2J F+@ +@ +@ +@ +@AK@ K@s   A=B B,+B,