
    6h${                    |   S SK Jr  S SKrS SKrS SKrS SKrSSKJr  SSKJ	r	J
r
Jr  SSKJrJrJr  SSKJr  \R$                  r\R(                  rS rS	 rS
rSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'Sr(Sr)Sr*Sr+ " S S5      r,\," SS \*S!9r-\," SS \*S!9r.\," S"S \)S!9r/\," S#S \+S!9r0\," S$5      r1\," S5      r2\," S%S \)S!9r3\," S&S \)S!9r4\," S'5      r5\," S(5      r6\," S5      r7\," S)5      r8\," S*5      r9\," S+S S,9r:\," S-S S,9r;\," S.S S,9r<\," S/S \+S!9r=\," S0S \)S!9r>\7\9\6\54r? " S1 S25      r@ " S3 S4\@5      rA " S5 S6\@5      rBS7 rCg)8    )annotationsN   )_)binhexnullrev)error	filemergeutil)hashutilc                \    U R                  S5      nUS S USS  -   nSR                  U5      $ )N    )splitjoin)databitss     6/usr/lib/python3/dist-packages/mercurial/mergestate.py
_droponoder      s5    ::eD9tBCy D::d    c                    XR                  5       R                  R                  :X  a  [        R                  " X5      $ X   $ N)reponodeconstantsnullhexr
   absentfilectx)hexnodectxfs      r   _filectxorabsentr!       s2    ((***222&&s..vr      L   O   l   f   F   C   P   u   rs   pus   pr   o   t   R   d   m   Ds   addeds   removeds   modifiedc                      \ rS rSrSr\R                  " 5       r\R                  " 5       rSS jr	S r
S rS rS rS	 rS
rg)MergeActionh   a  represent an "action" merge need to take for a given file

Attributes:

_short: internal representation used to identify each action

no_op:  True if the action does affect the file content or tracking status

narrow_safe:
    True if the action can be safely used for a file outside of the narrow
    set

changes:
    The types of changes that this actions involves. This is a work in
    progress and not all actions have one yet. In addition, some requires
    user changes and cannot be fully decided. The value currently available
    are:

    - ADDED: the files is new in both parents
    - REMOVED: the files existed in one parent and is getting removed
    - MODIFIED: the files existed in at least one parent and is getting changed
Nc                    Xl         U R                  R                  U 5        X l        U R                  (       a  U R                  R                  U 5        X0l        X@l        g r   )_shortALL_ACTIONSaddno_opNO_OP_ACTIONSnarrow_safechanges)selfshortr8   r:   r;   s        r   __init__MergeAction.__init__   sF    T"
::""4(&r   c                ,    [        U R                  5      $ r   )hashr5   r<   s    r   __hash__MergeAction.__hash__   s    DKK  r   c                >    SU R                   R                  S5      -  $ )NzMergeAction<%s>ascii)r5   decoderB   s    r   __repr__MergeAction.__repr__   s     4;;#5#5g#>>>r   c                    U R                   $ r   r5   rB   s    r   	__bytes__MergeAction.__bytes__   s    {{r   c                j    Uc  g[        U[        5      (       d   eU R                  UR                  :H  $ NF)
isinstancer2   r5   r<   others     r   __eq__MergeAction.__eq__   s0    =%----{{ell**r   c                4    U R                   UR                   :  $ r   rK   rQ   s     r   __lt__MergeAction.__lt__   s    {{U\\))r   )r5   r;   r:   r8   )FFN)__name__
__module____qualname____firstlineno____doc__weakrefWeakSetr6   r9   r>   rC   rH   rL   rS   rV   __static_attributes__ r   r   r2   r2   h   s?    . //#KOO%M!?+*r   r2   T)r:   r;      a   g   ps   am   cs   dcs   cds   dgs   dm   k)r8   s   kas   kn   es   cmc                  @   \ rS rSrSrS rS rS S jr\R                  S 5       r
\R                  S 5       r\R                  S	 5       r\R                  S
 5       rS rS r\S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"Sr#g)!_mergestate_base   ae  track 3-way merge state of individual files

The merge state is stored on disk when needed. Two files are used: one with
an old format (version 1), and one with a new format (version 2). Version 2
stores a superset of the data in version 1, including new kinds of records
in the future. For more about the new format, see the documentation for
`_readrecordsv2`.

Each record can contain arbitrary content, and has an associated type. This
`type` should be a letter. If `type` is uppercase, the record is mandatory:
versions of Mercurial that don't support it should abort. If `type` is
lowercase, the record can be safely ignored.

Currently known records:

L: the node of the "local" part of the merge (hexified version)
O: the node of the "other" part of the merge (hexified version)
F: a file to be merged entry
C: a change/delete or delete/change conflict
P: a path conflict (file vs directory)
f: a (filename, dictionary) tuple of optional values for a given file
l: the labels for the parts of the merge.

Merge record states (stored in self._state, indexed by filename):
u: unresolved conflict
r: resolved conflict
pu: unresolved path conflict (file conflicts with directory)
pr: resolved path conflict
o: file was merged in favor of other parent of merge (DEPRECATED)

The resolve command transitions between 'u' and 'r' for conflicts and
'pu' and 'pr' for path conflicts.
c                    Xl         0 U l        [        R                  " [        5      U l        SU l        SU l        SU l        0 U l	        SU l
        g)zVInitialize the merge state.

Do not use this directly! Instead call read() or clean().NF)_repo_statecollectionsdefaultdictdict_stateextras_local_other_labels_results_dirty)r<   r   s     r   r>   _mergestate_base.__init__   sH     
'33D9 r   c                    g r   r`   rB   s    r   reset_mergestate_base.reset   s    r   Nc                (    Xl         X l        X0l        g r   )rq   rr   rs   )r<   noderR   labelss       r   start_mergestate_base.start   s    r   c                d    U R                   c  Sn[        R                  " U5      eU R                   $ )Ns(   local accessed but self._local isn't set)rq   r	   ProgrammingErrorr<   msgs     r   local_mergestate_base.local  ,    ;;=C((--{{r   c                4    U R                   U R                     $ r   )rk   r   rB   s    r   localctx_mergestate_base.localctx
      zz$**%%r   c                d    U R                   c  Sn[        R                  " U5      eU R                   $ )Ns(   other accessed but self._other isn't set)rr   r	   r   r   s     r   rR   _mergestate_base.other  r   r   c                4    U R                   U R                     $ r   )rk   rR   rB   s    r   otherctx_mergestate_base.otherctx  r   r   c                d    [        U R                  5      =(       d    [        U R                  5      $ )zWhether mergestate is active.

Returns True if there appears to be mergestate. This is a rough proxy
for "is a merge in progress."
)boolrq   rl   rB   s    r   active_mergestate_base.active  s!     DKK 5D$55r   c                    g)z*Write current state on disk (if necessary)Nr`   rB   s    r   commit_mergestate_base.commit!  s    r   c                \    [        [        R                  " U 5      R                  5       5      $ )zMhash the path of a local file context for storage in the .hg/merge
directory.)r   r   sha1digest)paths    r   getlocalkey_mergestate_base.getlocalkey$  s!    
 8==&--/00r   c                    [        5       er   NotImplementedErrorr<   fctxlocalkeys      r   _make_backup_mergestate_base._make_backup+      !##r   c                    [        5       er   r   r<   r   r   flagss       r   _restore_backup _mergestate_base._restore_backup.  r   r   c           
     :   UR                  5       (       a!  U R                  R                  R                  nO4[        R                  UR                  5       5      nU R                  X5        [        UUR                  5       UR                  5       [        UR                  5       5      UR                  5       [        UR                  5       5      UR                  5       /U R                  U'   [        UR                  5       5      U R                  U   S'   SU l        g)zadd a new (potentially?) conflicting file the merge state
fcl: file context for local,
fco: file context for remote,
fca: file context for ancestors,
fd:  file path of the resulting merge.

note: also write the local version to the `.hg/merge` directory.
   ancestorlinknodeTN)isabsentrk   r   r   
mergestater   r   r   MERGE_RECORD_UNRESOLVEDr   filenoder   rl   r{   rp   ru   )r<   fclfcofcafdr   s         r   r7   _mergestate_base.add1  s     <<>>zz//77H!--chhj9Hc,#HHJHHJHHJIIK	
B 69_"12r   c                <    [         X#/U R                  U'   SU l        g)zadd a new conflicting path to the merge state
path:    the path that conflicts
frename: the filename the conflicting file was renamed to
forigin: origin of the file ('l' or 'r' for local/remote)
TN)MERGE_RECORD_UNRESOLVED_PATHrl   ru   )r<   r   frenameforigins       r   addpathconflict _mergestate_base.addpathconflictL  s     :7LDr   c                N    U R                   U   R                  U5        SU l        g)z@stores information which is required at commit
into _stateextrasTN)rp   updateru   )r<   r   r   s      r   addcommitinfo_mergestate_base.addcommitinfoU  s$     	$&&t,r   c                    XR                   ;   $ r   rl   r<   dfiles     r   __contains___mergestate_base.__contains__[  s    ##r   c                &    U R                   U   S   $ )Nr   r   r   s     r   __getitem___mergestate_base.__getitem__^  s    {{5!!$$r   c                >    [        [        U R                  5      5      $ r   )itersortedrl   rB   s    r   __iter___mergestate_base.__iter__a  s    F4;;'((r   c                6    U R                   R                  5       $ r   )rl   keysrB   s    r   files_mergestate_base.filesd  s    {{!!r   c                4    X R                   U   S'   SU l        g )Nr   T)rl   ru   )r<   r   states      r   mark_mergestate_base.markg  s     %E1r   c              #     #    U R                   R                  5        H  u  pUS   [        [        4;   d  M  Uv   M      g7f)z%Obtain the paths of unresolved files.r   N)rl   itemsr   r   )r<   r    entrys      r   
unresolved_mergestate_base.unresolvedk  s>      ))+HAQx',   ,s
   1A 	A c                    U R                   $ )z8return all extras information stored with the mergestaterp   rB   s    r   	allextras_mergestate_base.allextrasu  s       r   c                     U R                   U   $ )z?return extras stored with the mergestate for the given filenamer   )r<   filenames     r   extras_mergestate_base.extrasy  s      **r   c                P   X   [         [        4;   a  gU R                  U   nUu  pEpgppU R                  U R                     nU R                  U5      nUR                  S5      nU(       a  U R                  U   nOSn[        XRU5      n[        XU	5      nU R                  R                  XxUS9nUR                  5       nUR                  5       nSUU-   U-   ;   ad  SUU-   U-   ;  aX  UR                  5       [        :X  a8  UU:w  a2  U R                  R                  R                  [        S5      U-  5        OUU:X  a  UnXPR                  R                  R                   :w  a  U R#                  X!   X[5        OX!   R%                  SS	9  UR'                  U5      (       d$  U R                  U	 S
U R(                  U'   SU l        g[,        R,                  " U R                  UU R.                  UUUUU R0                  S9u  nnU(       d  U R3                  U[         5        SnU(       a#  UR5                  5       (       a  [6        nOT[8        nOMUR5                  5       (       a  [:        nO1UR5                  5       (       a  XR<                  ;   a  [>        nO[@        nUU4U R(                  U'   U$ )z@run merge process for dfile

Returns the exit code of the merge.r   r   N)fileid	changectx   xr$   sQ   warning: cannot merge flags for %s without common ancestor - keeping local flags
T)ignoremissing)NN)r|   )!MERGE_RECORD_RESOLVEDLEGACY_RECORD_DRIVER_RESOLVEDrl   rk   rr   r   getr!   filectxr   revr   uiwarnr   r   r   r   removecmprt   ru   r
   rq   rs   r   r   ACTION_FORGETACTION_REMOVE
ACTION_GETr   ACTION_ADD_MODIFIED
ACTION_ADD)r<   r   wctx
stateentryr   r   lfileafileanodeofileonoder   octxr   anccommitnodeactxfcdr   r   flofla	merge_retdeletedactions                           r   resolve_mergestate_base.resolve}  sY    ;!)
 
 [['
DNAuUzz$++&U#

#67::m,DDxu5uE2jj   Eiikiik53;$$US[35F)FwwyG#

""K 	 #zz//777  h>KT2wws||E"#-DMM% DK&00JJKK<<	
	7 IIe23||~~ ' '||~~#MM)0F'F(&0er   c                    Su  pnU R                   R                  5        H-  u  pEUc  US-  nM  US:X  d  M  U[        :X  a  US-  nM(  US-  nM/     XU4$ )zCreturn counts for updated, merged and removed files in this
session)r   r   r   r   r   )rt   valuesr   )r<   updatedmergedremovedrr  s         r   counts_mergestate_base.counts  sc     $+ --/IAy1a]*qLGaKF 0 ''r   c                F    [        [        U R                  5       5      5      $ )z0get unresolved count for this merge (persistent))lenlistr   rB   s    r   unresolvedcount _mergestate_base.unresolvedcount  s    4)*++r   c           
         [         / [        / [        / [        / [        / 0nU R
                  R                  5        H#  u  nu  p4Uc  M  X   R                  USS45        M%     U$ )z2return lists of actions to perform on the dirstateNs   merge result)r   r   r   r   r   rt   r   append)r<   actionsr    r  r  s        r   r  _mergestate_base.actions  sg     22
 #mm113NA{!&&4'AB 4 r   )ru   rs   rq   rr   rk   rt   rl   rp   r   )$rX   rY   rZ   r[   r\   r>   rx   r}   r   propertycacher   r   rR   r   r   r   staticmethodr   r   r   r7   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r_   r`   r   r   rh   rh      s     D$
 
  
& & 
  
& &69 1 1$$6$%)"!+Sj(,r   rh   c                      \ rS rSrSrSr\S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rSrg)r   i  s   merge/states   merge/state2c                <    [        U 5      nUR                  5         U$ )zHInitialize a brand new merge state, removing any existing state on
disk.)r   rx   r   mss     r   cleanmergestate.clean  s     

	r   c                <    [        U 5      nUR                  5         U$ )z1Initialize the merge state, reading it from disk.)r   _readr  s     r   readmergestate.read  s     

	r   c                   [        5       nU R                  5       nU GH  u  p4U[        :X  a  [        U5      U l        M"  U[
        :X  a  [        U5      U l        M>  U[        :X  a  MJ  U[        [        [        [        [        4;   aL  UR                  S5      nUS   [        :X  a  SU R                  US      S'   M  USS U R                   US   '   M  U["        :X  ak  UR                  SS5      u  pgUR                  S5      n0 n	Sn
U
[%        U5      :  a"  XS-      XU
   '   U
S-  n
U
[%        U5      :  a  M"  XR                  U'   GM*  U[&        :X  a>  UR                  SS5      nU Vs/ s H  n[%        U5      S:  d  M  UPM     snU l        GMr  UR+                  5       (       a  GM  UR-                  U5        GM     U(       a  [.        R0                  " U5      egs  snf )zAnalyse each record content to restore a serialized state from disk

This function process "record" entry produced by the de-serialization
of on disk file.
r   r   s   otherr   s   filenode-sourceN   )set_readrecordsRECORD_LOCALr   rq   RECORD_OTHERrr   LEGACY_MERGE_DRIVER_STATERECORD_MERGEDRECORD_CHANGEDELETE_CONFLICTRECORD_PATH_CONFLICTLEGACY_MERGE_DRIVER_MERGELEGACY_RECORD_RESOLVED_OTHERr   MERGE_RECORD_MERGED_OTHERrp   rl   RECORD_FILE_VALUESr  RECORD_LABELSrs   islowerr7   r	   UnsupportedMergeRecords)r<   unsupportedrecordsrtyperecordr   r   	rawextras
extrapartsr   ir|   ls                r   r!  mergestate._read  s    e##%$ME$!&k,&!&k33,$),  ||E* 777EMD%%d1g./AB+/8DKKQ(,,&,ll5!&<#&__U3
#j/),61u,=Fa=)FA #j/) /5!!(+-'eQ/+1@6aSVaZ6@]]__&I %L //<< 	  As   'G>Gc                   U R                  5       nU R                  5       nU R                  X5      (       a  U$ U R                  S   R	                  5       S   nUR                  [        UR                  5       45        [        U5       HR  u  pEUS   [        :X  d  M  US   R                  S5      nUR                  SS5        US   SR                  U5      4X'   MT     U$ )ab  Read merge state from disk and return a list of record (TYPE, data)

We read data from both v1 and v2 files and decide which one to use.

V1 has been used by version prior to 2.9.1 and contains less data than
v2. We read both versions and check if no data in v2 contradicts
v1. If there is not contradiction we can safely assume that both v1
and v2 were written at the same time and use the extract data in v2. If
there is contradiction we ignore v2 content as we assume an old version
of Mercurial has overwritten the mergestate file and left an old v2
file around.

returns list of record [(TYPE, data), ...]Nr   r   r   r   r   r   )_readrecordsv1_readrecordsv2
_v1v2matchrk   parentsr  r)  r   	enumerater+  r   insertr   )r<   	v1records	v2recordsmctxidxr  r   s          r   r'  mergestate._readrecords7  s     '')	'')	??900
 ::d#++-b1DlDHHJ78 $I.Q4=(Q4::e,DKKC(&'dEJJt,<%=IN	 /
 r   c                    [        5       nU HU  nUS   [        :X  a  UR                  U5        M#  US   [        :X  d  M2  UR                  [        [	        US   5      45        MW     U H
  nXC;  d  M
    g   g)Nr   r   FT)r&  r(  r7   r+  r   )r<   rE  rF  oldv2recs        r   rA  mergestate._v1v2matchY  sj    C1v%		#Q=(		=*SV*<=>  C  r   c                8   / n U R                   R                  U R                  5      n[        U5       HA  u  p4US:X  a  UR	                  [
        USS 45        M'  UR	                  [        USS 45        MC     UR                  5         U$ ! [         a     U$ f = f)zread on disk merge state for version 1 file

returns list of record [(TYPE, data), ...]

Note: the "F" data from this file are one entry short
      (no "other file node" entry)
r   Nr   )	rk   vfsstatepathv1rC  r  r(  r+  closeFileNotFoundError)r<   r6  r    r;  r<  s        r   r?  mergestate._readrecordsv1g  s     		

t//0A!!6NNL!CR&#9:NNM1Sb6#:;	 %
 GGI  ! 		s   BB 
BBc                   / n U R                   R                  U R                  5      nUR                  5       nSn[	        U5      nXE:  a[  X4US-    nUS-  n[        SX4US-    5      S   nUS-  nX4XG-    nXG-  nU[        :X  a	  USS USS pUR                  Xh45        XE:  a  M[  UR                  5         U$ ! [         a     U$ f = f)a  read on disk merge state for version 2 file

This format is a list of arbitrary records of the form:

  [type][length][content]

`type` is a single character, `length` is a 4 byte integer, and
`content` is an arbitrary byte sequence of length `length`.

Mercurial versions prior to 3.7 have a bug where if there are
unsupported mandatory merge records, attempting to clear out the merge
state with hg update --clean or similar aborts. The 't' record type
works around that by writing out what those versions treat as an
advisory record, but later versions interpret as special: the first
character is the 'real' record type and everything onwards is the data.

Returns list of records [(TYPE, data), ...].r   r   s   >I   N)
rk   rO  statepathv2r"  r  _unpackRECORD_OVERRIDEr  rQ  rR  )	r<   r6  r    r   offendr7  lengthr8  s	            r   r@  mergestate._readrecordsv2|  s    $ 	

t//0A668DCd)C)37+q C!G(=>qAqS\3O+$*1QK6/ ) GGI  ! 		s   B B8 &B8 8
CCc                x    U R                   (       a)  U R                  5       nU R                  U5        SU l         g g rO   )ru   _makerecords_writerecordsr<   r6  s     r   r   mergestate.commit  s1    ;;'')Gw'DK r   c                   / nUR                  [        [        U R                  5      45        UR                  [        [        U R
                  5      45        U R                  R                  5        H  u  p#US   [        [        4;   a,  UR                  [        SR                  U/U-   5      45        MD  US   U R                  R                  R                  :X  d'  US   U R                  R                  R                  :X  a,  UR                  [        SR                  U/U-   5      45        M  UR                  [         SR                  U/U-   5      45        M     [#        U R$                  R                  5       5       HF  u  p$SR                  S UR                  5        5       5      nUR                  [&        SX%4-  45        MH     U R(                  b2  SR                  U R(                  5      nUR                  [*        U45        U$ )Nr   r   r      c              3  2   #    U  H  u  pS X4-  v   M     g7f)   %s %sNr`   ).0kvs      r   	<genexpr>*mergestate._makerecords.<locals>.<genexpr>  s      #/=tq	QF"~s   re  )r  r(  r   rq   r)  rr   rl   r   r   MERGE_RECORD_RESOLVED_PATHr-  r   rk   r   r   r,  r+  r   rp   r1  rs   r2  )r<   r6  r   rh  r   r9  r|   s          r   r^  mergestate._makerecords  s   c$++&678c$++&678  ;;,,.KHt,*  )5::xj1n+EF !

00888Q44::33;;; 15::xj1n3MN
 uzz8*q./IJK/ /0 !'t'8'8'>'>'@ AH

 #/5||~# I NN#Y(1F%FG	 !B <<#ZZ-FNNM623r   c                H    U R                  U5        U R                  U5        g)z,Write current state on disk (both v1 and v2)N)_writerecordsv1_writerecordsv2r`  s     r   r_  mergestate._writerecords  s    W%W%r   c                p   U R                   R                  U R                  S5      n[        U5      n[	        U5      nUS   [
        :X  d   eUR                  [        U R                  5      S-   5        U H.  u  pVU[        :X  d  M  UR                  S[        U5      -  5        M0     UR                  5         g)z/Write current state on disk in a version 1 file   wbr      
s   %s
N)rk   rO  rP  r   nextr(  writer   rq   r+  r   rQ  )r<   r6  r    irecordslrecordsr7  r   s          r   rn  mergestate._writerecordsv1  s    JJNN4++U3=>{l***	DKK 5()#KE%*T"223 $ 	
	r   c           
     P   [         [        [        4nU R                  R	                  U R
                  S5      nU HY  u  pE[        U5      S:X  d   eXB;  a  [        SXE4-  pTS[        U5      -  nUR                  [        Xd[        U5      U5      5        M[     UR                  5         g)ziWrite current state on disk in a version 2 file

See the docstring for _readrecordsv2 for why we use 't'.rr  r   s   %s%ss   >sI%isN)r(  r)  r+  rk   rO  rV  r  rX  ru  _packrQ  )r<   r6  	allowlistr    keyr   formats          r   ro  mergestate._writerecordsv2  s    
 "<?	JJNN4++U3 ICs8q= =#+W{-BTT*FGGE&s4y$78 ! 	
	r   c                r    U R                   R                  R                  SU-   UR                  5       5        g Ns   merge/)rk   rO  ru  r   r   s      r   r   mergestate._make_backup  s%    

Y1499;?r   c                    U R                   R                  SU-   5       nUR                  UR                  5       U5        S S S 5        g ! , (       d  f       g = fr  )rk   rO  ru  r"  )r<   r   r   r   r    s        r   r   mergestate._restore_backup  s9    ZZ^^I01QJJqvvx' 211s   !A		
Ac                x    [         R                  " U R                  R                  R	                  S5      S5        g )Ns   mergeT)shutilrmtreerk   rO  r   rB   s    r   rx   mergestate.reset  s#    djjnn))(3T:r   )ru   rs   rq   rr   N)rX   rY   rZ   r[   rP  rV  r  r  r"  r!  r'  rA  r?  r@  r   r^  r_  rn  ro  r   r   rx   r_   r`   r   r   r   r     sx     K!K   /=b D*%N +Z&

@(;r   r   c                  4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )memmergestatei  c                2   > [         TU ]  U5        0 U l        g r   )superr>   _backups)r<   r   	__class__s     r   r>   memmergestate.__init__  s    r   c                >    UR                  5       U R                  U'   g r   )r   r  r   s      r   r   memmergestate._make_backup  s    "&))+hr   c                B    UR                  U R                  U   U5        g r   )ru  r  r   s       r   r   memmergestate._restore_backup	  s    

4==*E2r   )r  )	rX   rY   rZ   r[   r>   r   r   r_   __classcell__)r  s   @r   r  r    s    .3 3r   r  c                    U R                   nUR                  nUR                  [        / 5       H  u  pgnU(       a
  U" USSS9  M  U" USSS9  M!     UR                  [        / 5       H  u  pgnU" USSS9  M     UR                  [
        / 5       H:  u  pgnUu  pU" USSS9  UR                  X5        X:X  a
  U" U	SSS9  M2  U" U	SSS9  M<     UR                  [        / 5       H  u  pgnU" USSS9  M     UR                  [        / 5       H   u  pgnU(       a  U" USSSS9  M  U" USSS9  M"     UR                  [        / 5       H  u  pgnU" USSSS9  M     UR                  [        / 5       H  u  pgnM     UR                  [        / 5       H  u  pgnM     UR                  [        / 5       H  u  pgnM     UR                  [        / 5       Hc  u  pgnU(       a@  UR                  U5      nUR                  =(       a    UR                   (       + nU" UUSSS9  MM  U(       a  X6   OSnU" USSUS9  Me     UR                  ["        / 5       H  u  pgnUu  pnnnU(       aN  X:H  nU" UUSSS9  X:w  a:  U(       a  U" USSS9  X:w  a  UR                  X5        MM  UR                  X5        M`  Mb  X:X  a	  U" USSSS9  U(       d  My  U" USSS9  M     UR                  [$        / 5       HE  u  pgnUu  n	nU(       a#  U" USSS9  U" U	SSS9  UR                  X5        M5  U" USSS9  U" U	SSS9  MG     UR                  [&        / 5       H5  u  pgnUu  n	nU(       a  U" USSS9  UR                  X5        M-  U" USSS9  M7     g)z$record merge actions to the dirstateTF)
p1_tracked
wc_tracked)r  r  possibly_dirty)r  r  p2_infoN)r  r  parentfiledata)dirstateupdate_filer   r   r   ACTION_PATH_CONFLICT_RESOLVEcopyr   r   ACTION_EXECACTION_KEEPACTION_KEEP_ABSENTACTION_KEEP_NEWr   	get_entryany_trackedaddedACTION_MERGEACTION_DIR_RENAME_MOVE_LOCALACTION_LOCAL_DIR_RENAME_GET)r   r  branchmergegetfiledatar  r  r    argsr   f0origf0	old_entryr  r  f1f2famoveancflags                       r   recordupdatesr    s   }}H&&K  M26du=e>	 7  M26A%E: 7  $@"EA%D9f <t>u? F  J3A%D9 4  $7<dtD e= =  K4A$4M 5  K4 5  $6; <  OR8 9  J3 **1-I"..Fy3FJ%	 0;[^N-	 4*  L"5 $D# J%	 xtF7MM"(MM"(  w$4 tB5UC= 6B  $@"EDe=t>MM" dt<u? F  $?DDe=MM" dt< Er   )D
__future__r   rm   r  structr]   i18nr   r{   r   r   r    r	   r
   r   utilsr   packrz  unpackrW  r   r!   r(  r)  r2  r1  r+  r,  r-  r   r   r   rk  r0  rX  r/  r   r*  r.  CHANGE_ADDEDCHANGE_REMOVEDCHANGE_MODIFIEDr2   r   r   r   r   ACTION_PATH_CONFLICTr  r   ACTION_CREATEDACTION_DELETED_CHANGEDACTION_CHANGED_DELETEDr  r  r  r  r  r  r  ACTION_CREATED_MERGECONVERT_MERGE_ACTIONSrh   r   r  r  r`   r   r   <module>r     s   "      
 
 
--    #     $ " 
 !    $  $     4* 4*n DdNKDdNK4F
4I
"4( *51 !	t\  Tt\J$U+ $U+ 4 )%0 *51 $d+ !d3  e40$D/J"	t\   	 j jZ	K;! K;\	3$ 	3=r   