Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
§

iµµhãã
ó—dZddlZddlZddlmZddlmZmZmZm	Z	ddl
mZmZddl
mZmZddlmZmZmZmZmZdd	lmZeZd
ZdZdZd
ZdZed¦«Z dZ!e!Z"Gd„de#¦«Z$d„Z%defd„Z&Gd„d¦«Z'Gd„de'¦«Z(Gd„de'¦«Z)Gd„de'¦«Z*d„Z+d„Z,d „Z-d8d!„Z.d"„Z/d#efd$„Z0d%„Z1d&„Z2d'„Z3d(e'd)ed*ed+ed,eed-efd.„Z4d/„Z5			d9d1e'd2e6d(ee6e6fd3eed4e7d5e7fd6„Z8d7„Z9dS):z
Ref handling.éN)Úsuppress)ÚAnyÚDictÚOptionalÚSeté)ÚPackedRefsExceptionÚRefFormatError)ÚGitFileÚensure_dir_exists)ÚZERO_SHAÚObjectIDÚTagÚgit_lineÚvalid_hexsha)ÚObjectContainersHEADsref: srefs/heads/s
refs/tags/ó
refs/remotes/s ~^:?*[s^{}có—eZdZdZdd„ZdS)Ú
SymrefLoopz,There is a loop between one or more symrefs.ÚreturnNcó"—||_||_dS©N)ÚrefÚdepth)Úselfrrs   ú7/usr/local/lib/python3.11/site-packages/dulwich/refs.pyÚ__init__zSymrefLoop.__init__2s€ØˆŒØˆŒ
ˆ
ˆ
ó©rN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r©rrrr/s.€€€€€Ø6Ð6ððððððrrcó²—| t¦«r/|tt¦«d… d¦«St	|¦«‚)z`Parse a symref value.

    Args:
      contents: Contents to parse
    Returns: Destination
    Nó
)Ú
startswithÚSYMREFÚlenÚrstripÚ
ValueError)Úcontentss rÚparse_symref_valuer-7sK€ð×ҝ6Ñ"Ô"ð7؝F™œ˜
˜
Ô&×-Ò-¨gÑ6Ô6Ð6Ý
XÑ
Ô
ÐrÚrefnamecó0—d|vs| d¦«rdSd|vrdSd|vrdSt|¦«D]/\}}t|||dz…¦«dks	|tvrdSŒ0|ddvrdS| d	¦«rdSd
|vrdSd|vrdSdS)
a+Check if a refname is correctly formatted.

    Implements all the same rules as git-check-ref-format[1].

    [1]
    http://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html

    Args:
      refname: The refname to check
    Returns: True if refname is valid, False otherwise
    s/.ó.Fó/s..ré éÿÿÿÿs.locks@{ó\T)r'Ú	enumerateÚordÚ
BAD_REF_CHARSÚendswith)r.ÚiÚcs   rÚcheck_ref_formatr;Csí€ð
ÐИ7×-Ò-¨dÑ3Ô3ÐØˆuؐ7ÐÐØˆuØÐÐØˆuݘ'Ñ"Ô"ðð‰ˆˆ1݈wq˜1˜q™5yÔ!Ñ"Ô" TÒ)Ð)¨Qµ-Ð-?Ð-?ؐ55ð.@àˆr„{eÐÐØˆuØ×Ò˜Ñ!Ô!ð؈uØÐÐØˆuØÐÐØˆu؈4rcól—eZdZdZd%d&d„Z				d'd„Z				d'd„Zd„Zdee	e
effd	„Zd
„Z
					d(de	d
ee	efde
ede
ede
ede
edefd„Zd„Zd„Zd%d„Zd„Zd%d„Zd„Zd„Zd„Zd„Zdefd„Zd„Z				d'd„Z	d'd „Zd&d!„Z				d'd"„Zd&d#„Z d$„Z!dS))Ú
RefsContainerzA container for refs.Nrcó—||_dSr©Ú_logger)rÚloggers  rrzRefsContainer.__init__hs
€ØˆŒˆˆrc	óV—|j€dS|€dS| |||||||¦«dSrr?)rrÚold_shaÚnew_shaÚ	committerÚ	timestampÚtimezoneÚmessages        rÚ_logzRefsContainer._logks?€ðŒ<ÐØˆF؈?ØˆFØŠS˜' 7¨I°yÀ(ÈGÑTÔTÐTÐTÐTrcó*—t|j¦«‚)z°Make a ref point at another ref.

        Args:
          name: Name of the ref to set
          other: Name of the ref to point at
          message: Optional message
        )ÚNotImplementedErrorÚset_symbolic_ref)rÚnameÚotherrErFrGrHs       rrLzRefsContainer.set_symbolic_ref{s€õ " $Ô"7Ñ8Ô8Ð8rcó*—t|j¦«‚)úÆGet contents of the packed-refs file.

        Returns: Dictionary mapping ref names to SHA1s

        Note: Will return an empty dictionary when no packed-refs file is
            present.
        )rKÚget_packed_refs©rs rrQzRefsContainer.get_packed_refss€õ" $Ô"6Ñ7Ô7Ð7rÚnew_refscó*—t|j¦«‚)ú«Add the given refs as packed refs.

        Args:
          new_refs: A mapping of ref names to targets; if a target is None that
            means remove the ref
        )rKÚadd_packed_refs)rrSs  rrVzRefsContainer.add_packed_refs—s€õ" $Ô"6Ñ7Ô7Ð7rcó—dS©aeReturn the cached peeled value of a ref, if available.

        Args:
          name: Name of the ref to peel
        Returns: The peeled value of the ref. If the ref is known not point to
            a tag, this will be the SHA the ref refers to. If the ref may point
            to a tag, but no cached information is available, None is returned.
        Nr$©rrMs  rÚ
get_peeledzRefsContainer.get_peeled s	€ðˆtrFÚbaserNrErFrGrHÚprunecóâ—|r#t| |¦«¦«}nt¦«}| ¦«D]t\}	}
|
€| |	¦«n.| d ||	f¦«d|
|¬¦«|r'	| |	¦«Œd#t$rYŒpwxYwŒu|D]/}| d ||f¦«d|¬¦«Œ0dS)Nr1©rH)	ÚsetÚsubkeysÚitemsÚaddÚ
set_if_equalsÚjoinÚremoveÚKeyErrorÚremove_if_equals)rr[rNrErFrGrHr\Ú	to_deleterMÚvaluers            rÚimport_refszRefsContainer.import_refs«s3€ðð	ݘDŸLšL¨Ñ.Ô.Ñ/Ô/ˆIˆI噜ˆIØ Ÿ;š;™=œ=ð	ð	‰KˆD%؈}Ø—
’
˜dÑ#Ô#Ð#Ð#à×"Ò"Ø—I’I˜t T˜lÑ+Ô+¨T°5À'ð#ñôððð
ðØ×$Ò$ TÑ*Ô*Ð*Ð*øÝðððؐDðøøøð
ð
ð	Qð	QˆCØ×!Ò! $§)¢)¨T°3¨KÑ"8Ô"8¸$ÈÐ!ÑPÔPÐPÐPð	Qð	QsÂB,Â,
B9Â8B9có*—t|j¦«‚)z#All refs present in this container.)rKÚallkeysrRs rrlzRefsContainer.allkeysÈs€å! $¤,Ñ/Ô/Ð/rcóD—t| ¦«¦«Sr)ÚiterrlrRs rÚ__iter__zRefsContainer.__iter__Ìs€ÝD—L’L‘N”NÑ#Ô#Ð#rcóX—|| |¦«S| ¦«S)zÓRefs present in this container.

        Args:
          base: An optional base to return refs under.
        Returns: An unsorted set of valid refs in this container, including
            packed refs.
        )r`rl)rr[s  rÚkeyszRefsContainer.keysÏs*€ðÐØ—<’< Ñ%Ô%Ð%à—<’<‘>”>Ð!rcóؗt¦«}t|¦«dz}| ¦«D]4}| |¦«r| ||d…¦«Œ5|S)zÿRefs present in this container under a base.

        Args:
          base: The base to return refs under.
        Returns: A set of valid refs in this container under the base; the base
            prefix is stripped from the ref names returned.
        rN)r_r)rlr'rb)rr[rqÚbase_lenr.s     rr`zRefsContainer.subkeysÜsj€õ‰uŒuˆÝt‘9”9˜q‘=ˆØ—|’|‘~”~ð	-ð	-ˆGØ×!Ò! $Ñ'Ô'ð
-Ø—’˜   Ô+Ñ,Ô,Ð,øØˆrcóê—i}| |¦«}|€d}n| d¦«}|D]>}	||dz|z d¦«||<Œ(#ttf$rYŒ;wxYw|S)z6Return the contents of this container as a dictionary.Nrr1)rqr*Ústriprrf)rr[ÚretrqÚkeys     rÚas_dictzRefsContainer.as_dictësš€àˆØyŠy˜‰ŒˆØˆ<؈DˆDà—;’;˜tÑ$Ô$ˆDØð	ð	ˆCð
Ø ¨¡¨sÑ!2× 9Ò 9¸$Ñ ?Ô ?Ô@C‘øÝ¥Ð)ð
ð
ð
ؐð
øøøðˆ
s·$AÁA0Á/A0có–—|tdfvrdS| d¦«rt|dd…¦«st|¦«‚dS)aEnsure a refname is valid and lives in refs or is HEAD.

        HEAD is not a valid refname according to git-check-ref-format, but this
        class needs to be able to touch HEAD. Also, check_ref_format expects
        refnames without the leading 'refs/', but this class requires that
        so it cannot touch anything outside the refs dir (or HEAD).

        Args:
          name: The name of the reference.

        Raises:
          KeyError: if a refname is not HEAD or is otherwise not valid.
        s
refs/stashNsrefs/é)ÚHEADREFr'r;r
rYs  rÚ_check_refnamezRefsContainer._check_refnameûs]€ð•G˜]Ð+Ð+Ð+ØˆFØŠ˜xÑ(Ô(ð	'Õ0@ÀÀaÀbÀbÄÑ0JÔ0Jð	'Ý  Ñ&Ô&Ð&ð	'ð	'rcó„—| |¦«}|s(| ¦« |d¦«}|S)zÐRead a reference without following any references.

        Args:
          refname: The name of the reference
        Returns: The contents of the ref file, or None if it does
            not exist.
        N)Úread_loose_refrQÚget)rr.r,s   rÚread_refzRefsContainer.read_refsF€ð×&Ò& wÑ/Ô/ˆØð	AØ×+Ò+Ñ-Ô-×1Ò1°'¸4Ñ@Ô@ˆH؈rcó*—t|j¦«‚)zÄRead a loose reference and return its contents.

        Args:
          name: the refname to read
        Returns: The contents of the ref file, or None if it does
            not exist.
        )rKr~rYs  rr~zRefsContainer.read_loose_refs€õ" $Ô"5Ñ6Ô6Ð6rcóV—t|z}d}g}| t¦«r~|tt¦«d…}| |¦«| |¦«}|sn5|dz
}|dkrt||¦«‚| t¦«°~||fS)z”Follow a reference name.

        Returns: a tuple of (refnames, sha), wheres refnames are the names of
            references in the chain
        rNrrz)r(r'r)Úappendr€r)rrMr,rÚrefnamesr.s      rÚfollowzRefsContainer.follow%s¶€õ˜D‘=ˆØˆØˆØ×!Ò!¥&Ñ)Ô)ð	.؝s¥6™{œ{˜}˜}Ô-ˆGØOŠO˜GÑ$Ô$Ð$Ø—}’} WÑ-Ô-ˆHØð
ØØQ‰JˆEؐqŠyˆyÝ   uÑ-Ô-Ð-ð×!Ò!¥&Ñ)Ô)ð	.ð˜Ð!Ð!rcó4—| |¦«rdSdS)NTF)r€)rr.s  rÚ__contains__zRefsContainer.__contains__9s €Ø=Š=˜Ñ!Ô!ð	ؐ4؈urcóX—| |¦«\}}|€t|¦«‚|S)zaGet the SHA1 for a reference name.

        This method follows all symbolic references.
        )r…rf)rrMÚ_Úshas    rÚ__getitem__zRefsContainer.__getitem__>s/€ð
—’˜TÑ"Ô"‰ˆˆ3؈;ݘ4‘.”.Ð ؈
rcó*—t|j¦«‚)a'Set a refname to new_ref only if it currently equals old_ref.

        This method follows all symbolic references if applicable for the
        subclass, and can be used to perform an atomic compare-and-swap
        operation.

        Args:
          name: The refname to set.
          old_ref: The old sha the refname must refer to, or None to set
            unconditionally.
          new_ref: The new sha the refname will refer to.
          message: Message for reflog
        Returns: True if the set was successful, False otherwise.
        )rKrc)rrMÚold_refÚnew_refrErFrGrHs        rrczRefsContainer.set_if_equalsHs€õ0" $Ô"4Ñ5Ô5Ð5rcó*—t|j¦«‚)z€Add a new reference only if it does not already exist.

        Args:
          name: Ref name
          ref: Ref value
        )rKÚ
add_if_new©rrMrrErFrGrHs       rrzRefsContainer.add_if_newbs€õ" $¤/Ñ2Ô2Ð2rcó4—| |d|¦«dS)a»Set a reference name to point to the given SHA1.

        This method follows all symbolic references if applicable for the
        subclass.

        Note: This method unconditionally overwrites the contents of a
            reference. To update atomically only if the reference has not
            changed, use set_if_equals().

        Args:
          name: The refname to set.
          ref: The new sha the refname will refer to.
        N)rc)rrMrs   rÚ__setitem__zRefsContainer.__setitem__ms"€ð	
×Ò˜4  sÑ+Ô+Ð+Ð+Ð+rcó*—t|j¦«‚)aùRemove a refname only if it currently equals old_ref.

        This method does not follow symbolic references, even if applicable for
        the subclass. It can be used to perform an atomic compare-and-delete
        operation.

        Args:
          name: The refname to delete.
          old_ref: The old sha the refname must refer to, or None to
            delete unconditionally.
          message: Message for reflog
        Returns: True if the delete was successful, False otherwise.
        )rKrg)rrMrrErFrGrHs       rrgzRefsContainer.remove_if_equals}s€õ," $Ô"7Ñ8Ô8Ð8rcó2—| |d¦«dS)asRemove a refname.

        This method does not follow symbolic references, even if applicable for
        the subclass.

        Note: This method unconditionally deletes the contents of a reference.
            To delete atomically only if the reference has not changed, use
            remove_if_equals().

        Args:
          name: The refname to delete.
        N)rgrYs  rÚ__delitem__zRefsContainer.__delitem__•s €ð	
×Ò˜d DÑ)Ô)Ð)Ð)Ð)rcó¨—i}| ¦«D]:}	t| |¦«¦«}|||<Œ+#t$rYŒ7wxYw|S)zuGet a dict with all symrefs in this container.

        Returns: Dictionary mapping source ref to target ref
        )rlr-r€r+)rrvÚsrcÚdsts    rÚget_symrefszRefsContainer.get_symrefs¤st€ð
ˆØ—<’<‘>”>ð	ð	ˆCð
Ý(¨¯ª°sÑ);Ô);Ñ<Ô<ðC‘øõð
ð
ð
ؐð
øøøðˆ
sš"AÁ
AÁArr©NNNN)NNNNF)"r r!r"r#rrIrLrQrÚRefrrrVrZÚbytesÚboolrjrlrorqr`rxr|r€r~r…r‡r‹rcrr“rgr–ršr$rrr=r=es§€€€€€ØÐððððððØØØðUðUðUðUð(ØØØð9ð9ð9ð9ð$8ð8ð8ð8¨¨S°(¸8Ô2DÐ-DÔ(Eð8ð8ð8ð8ð	ð	ð	ð&*Ø%)Ø$(Ø#'ØðQðQàðQðC˜MÔ"ðQð˜E”?ð	Qð
˜E”?ðQð˜5”/ð
Qð˜%”ðQððQðQðQðQð:0ð0ð0ð$ð$ð$ð"ð"ð"ð"ð
ð
ð
ððððð 'ð'ð'ð&ððð7ð7ð7ð"ð"ð"ð( tððððð
ðððØØØð6ð6ð6ð6ð6QUð	3ð	3ð	3ð	3ð,ð,ð,ð,ð(ØØØð9ð9ð9ð9ð0
*ð
*ð
*ð
*ð
ð
ð
ð
ð
rr=c󴇗eZdZdZddˆfd„
Zd„Zd„Zd„Zd„Z				dd	e	d
e	fd„Z
				dd„Z				dd	e	d
ede
efd„Z				dd„Zd„Zd„Zd„ZˆxZS)ÚDictRefsContainerz‰RefsContainer backed by a simple dict.

    This container does not support symbolic or packed references and is not
    threadsafe.
    NrcóŽ•—t¦« |¬¦«||_i|_t	¦«|_dS)N©rA)ÚsuperrÚ_refsÚ_peeledr_Ú	_watchers)rÚrefsrAÚ	__class__s   €rrzDictRefsContainer.__init__»s;ø€Ý
‰Œ×Ò ÐÑ'Ô'Ð'؈Œ
Ø.0ˆŒÝ#&¡5¤5ˆŒˆˆrcó4—|j ¦«Sr©r¤rqrRs rrlzDictRefsContainer.allkeysÁó€ØŒzŠÑ Ô Ð rcó8—|j |d¦«Sr©r¤rrYs  rr~z DictRefsContainer.read_loose_refÄó€ØŒz~Š~˜d DÑ)Ô)Ð)rcó—iSrr$rRs rrQz!DictRefsContainer.get_packed_refsÇó€Øˆ	rcóH—|jD]}| ||f¦«ŒdSr)r¦Ú_notify)rrÚnewshaÚwatchers    rr²zDictRefsContainer._notifyÊs6€Ø”~ð	+ð	+ˆGØOŠO˜S &˜MÑ*Ô*Ð*Ð*ð	+ð	+rrMrNc	óȗ| |¦«d}t|z}||j|<| ||¦«| |||||||¬¦«dS)Nr3©rErFrGrH)r…r(r¤r²rI)	rrMrNrErFrGrHÚoldÚnews	         rrLz"DictRefsContainer.set_symbolic_refÎs}€ðkŠk˜$ÑÔ Ô#ˆÝu‰nˆØˆŒ
4ÑØŠT˜3ÑÔÐØ	Š	ØØØØØØØð	ñ	
ô	
ð	
ð	
ð	
rc
óf—|&|j |t¦«|krdS| |¦«\}}	|D]m}
| |
¦«|j |
¦«}||j|
<| |
|¦«| |
||||||¬¦«ŒndS©NFr¶T)r¤rr
r…r|r²rI)rrMrrŽrErFrGrHÚ	realnamesr‰Úrealnamer·s            rrczDictRefsContainer.set_if_equalsåsЀðР4¤:§>¢>°$½Ñ#AÔ#AÀWÒ#LÐ#Lؐ5Ø—{’{ 4Ñ(Ô(‰ˆ	1Ø!ð
	ð
	ˆHØ×Ò Ñ)Ô)Ð)Ø”*—.’. Ñ*Ô*ˆCØ#*ˆDŒJxÑ ØLŠL˜ 7Ñ+Ô+Ð+ØIŠIØØØØ#Ø#Ø!Øð
ñ
ô
ð
ð
ðˆtrrrHc	ó”—||jvrdS||j|<| ||¦«| |d|||||¬¦«dSrº)r¤r²rIr‘s       rrzDictRefsContainer.add_if_newsm€ð4”:ÐÐØ5؈Œ
4ÑØŠT˜3ÑÔÐØ	Š	ØØØØØØØð	ñ	
ô	
ð	
ðˆtrc	ó—|&|j |t¦«|krdS	|j |¦«}| |d¦«| ||d||||¬¦«n#t$rYnwxYwdSrº)r¤rr
Úpopr²rIrf)rrMrrErFrGrHr·s        rrgz"DictRefsContainer.remove_if_equalssµ€ðР4¤:§>¢>°$½Ñ#AÔ#AÀWÒ#LÐ#Lؐ5ð	Ø”*—.’. Ñ&Ô&ˆCð
LŠL˜˜tÑ$Ô$Ð$ØIŠIØØØØ#Ø#Ø!Øð
ñ
ô
ð
ð
øõ	ð	ð	ð	ØˆDð	øøøðˆtsªA7Á7
BÂBcó6—|j |¦«Sr)r¥rrYs  rrZzDictRefsContainer.get_peeled6s€ØŒ|×Ò Ñ%Ô%Ð%rcóh—| ¦«D]\}}| |d|¦«ŒdS)z0Update multiple refs; intended only for testing.N)rarc)rr§rrŠs    rÚ_updatezDictRefsContainer._update9sD€ðŸ
š
™œð	/ð	/‰HˆCØ×Ò˜s D¨#Ñ.Ô.Ð.Ð.ð	/ð	/rcó:—|j |¦«dS)z5Update cached peeled refs; intended only for testing.N)r¥Úupdate)rÚpeeleds  rÚ_update_peeledz DictRefsContainer._update_peeled@s€àŒ×Ò˜FÑ#Ô#Ð#Ð#Ð#rrrr›)r r!r"r#rrlr~rQr²rœrLrcrrrrrgrZrÂrÆÚ
__classcell__©r¨s@rr r ´szø€€€€€ððð)ð)ð)ð)ð)ð)ð)ð!ð!ð!ð*ð*ð*ðððð+ð+ð+ðØØØð
ð
àð
ðð
ð
ð
ð
ð8ØØØðððððBØØØ#'ððàðððð˜%”ððððð8ØØØððððð8&ð&ð&ð/ð/ð/ð$ð$ð$ð$ð$ð$ð$rr có2—eZdZdZd	d„Zd„Zd„Zd„Zd„ZdS)
ÚInfoRefsContainerz5Refs container that reads refs from a info/refs file.rNcóœ—i|_i|_| ¦«D]¨}| d¦« d¦«\}}| t¦«r6|dd…}t|¦«std|z¦«‚||j|<Œ}t|¦«std|z¦«‚||j|<Œ©dS)Nó
ó	éýÿÿÿúinvalid ref name %r)	r¤r¥Ú	readlinesr*Úsplitr8ÚPEELED_TAG_SUFFIXr;r+)rÚfÚlinerŠrMs     rrzInfoRefsContainer.__init__Hsހ؈Œ
؈ŒØ—K’K‘M”Mð
	'ð
	'ˆDØŸš EÑ*Ô*×0Ò0°Ñ7Ô7‰IˆCØ}Š}Õ.Ñ/Ô/ð
'ؘC˜R˜C”yÝ'¨Ñ-Ô-ðCÝ$Ð%:¸TÑ%AÑBÔBÐBØ%(”˜TÑ"Ð"å'¨Ñ-Ô-ðCÝ$Ð%:¸TÑ%AÑBÔBÐBØ#&”
˜4Ñ Ð ð
	'ð
	'rcó4—|j ¦«SrrªrRs rrlzInfoRefsContainer.allkeysWr«rcó8—|j |d¦«Srr­rYs  rr~z InfoRefsContainer.read_loose_refZr®rcó—iSrr$rRs rrQz!InfoRefsContainer.get_packed_refs]r°rcóX—	|j|S#t$r|j|cYSwxYwr)r¥rfr¤rYs  rrZzInfoRefsContainer.get_peeled`sB€ð	$Ø”< Ô%Ð%øÝð	$ð	$ð	$Ø”:˜dÔ#Ð#Ð#Ð#ð	$øøøs‚)¨)r)	r r!r"r#rrlr~rQrZr$rrrÊrÊEsj€€€€€Ø?Ð?ð
'ð
'ð
'ð
'ð!ð!ð!ð*ð*ð*ðððð$ð$ð$ð$ð$rrÊcóއ—eZdZdZddˆfd„
Zdefd„Zd„Zd„Zd„Z	d	„Z
d
eee
effd„Zd„Zd
„Zd„Z				dd„Z				dd„Z				ddedede
efd„Z				dd„ZˆxZS)ÚDiskRefsContainerz)Refs container that reads refs from disk.Nrcó •—t¦« |¬¦«t|dd¦«tj|¦«}||_|€|}t|dd¦«tj|¦«}||_d|_d|_dS)Nr¢Úencode)	r£rÚgetattrÚosÚfsencodeÚpathÚ
worktree_pathÚ_packed_refsÚ_peeled_refs)rràrárAr¨s    €rrzDiskRefsContainer.__init__jsø€Ý
‰Œ×Ò ÐÑ'Ô'Ð'ݐ4˜ 4Ñ(Ô(Ð4Ý”;˜tÑ$Ô$ˆD؈Œ	ØÐ Ø ˆMݐ= (¨DÑ1Ô1Ð=ÝœK¨
Ñ6Ô6ˆMØ*ˆÔØ ˆÔØ ˆÔÐÐrcó0—|jj›d|j›dS)Nú(ú))r¨r ràrRs rÚ__repr__zDiskRefsContainer.__repr__ws €Ø”.Ô)Ð:Ð:¨D¬IÐ:Ð:Ð:Ð:rcóÞ—t¦«}| |¦«}tj|¦«D]Ë\}}}|t	|¦«d…}tjjdkr7| tjtjj¦«d¦«}| 	d¦«}|D]J}d 
|r|gng|gz¦«}	t|dz|	z¦«r| |	¦«ŒKŒÌ| 
¦«D]T}
|
 |¦«r=| |
t	|¦«d… 	d¦«¦«ŒU|S)Nú/r1)r_ÚrefpathrÞÚwalkr)ràÚsepÚreplacerßrurdr;rbrQr')rr[r`ràÚrootÚunused_dirsÚfilesÚdirÚfilenamer.rws           rr`zDiskRefsContainer.subkeyszsX€Ý‘%”%ˆØ|Š|˜DÑ!Ô!ˆÝ(*¬°©
¬
ð
	)ð
	)Ñ$ˆD+˜uØ•s˜4‘y”y{{Ô#ˆCÝŒwŒ{˜cÒ!Ð!Ø—k’k¥"¤+­b¬g¬kÑ":Ô":¸DÑAÔAØ—)’)˜D‘/”/ˆCØ!ð
)ð
)ØŸ)š)¨cÐ%9 c U U°r¸h¸ZÑ$GÑHÔHõ$ D¨4¡K°'Ñ$9Ñ:Ô:ð)Ø—K’K Ñ(Ô(Ð(øð
)ð×'Ò'Ñ)Ô)ð	:ð	:ˆC؏~Š~˜dÑ#Ô#ð
:Ø—’˜C¥ D¡	¤	  Ô,×2Ò2°4Ñ8Ô8Ñ9Ô9Ð9øØˆrcóâ—t¦«}tj | t
¦«¦«r| t
¦«| d¦«}| d¦«}tj|¦«D]©\}}}|t|¦«d…}tjj	dkr7| 
tjtjj	¦«d¦«}|D]=}d ||g¦«}	t|	¦«r| |	¦«Œ>Œª| | ¦«¦«|S)Nrórefsrér1)r_rÞràÚexistsrêr{rbrër)rìrírßrdr;rÄrQ)
rrlràÚrefspathrîrïrðrñròr.s
          rrlzDiskRefsContainer.allkeyss6€Ý‘%”%ˆÝ
Œ7>Š>˜$Ÿ,š,¥wÑ/Ô/Ñ0Ô0ð	!ØKŠKÑ Ô Ð ؏|Š|˜CÑ Ô ˆØ—<’< Ñ(Ô(ˆÝ(*¬°Ñ(9Ô(9ð	)ð	)Ñ$ˆD+˜uØ•s˜4‘y”y{{Ô#ˆCÝŒwŒ{˜cÒ!Ð!Ø—k’k¥"¤+­b¬g¬kÑ":Ô":¸DÑAÔAØ!ð
)ð
)ØŸ)š) S¨( OÑ4Ô4Ý# GÑ,Ô,ð)Ø—K’K Ñ(Ô(Ð(øð
)ð	Št×+Ò+Ñ-Ô-Ñ.Ô.Ð.؈rcóD—tjjdkr7| dtjtjj¦«¦«}|t
kr%tj |j|¦«Stj |j|¦«S)zReturn the disk path of a ref.rér1)rÞràrìrírßr{rdrárYs  rrêzDiskRefsContainer.refpathžsn€å
Œ7Œ;˜#ÒÐØ—<’< ¥b¤kµ"´'´+Ñ&>Ô&>Ñ?Ô?ˆDð•7Š?ˆ?Ý”7—<’< Ô 2°DÑ9Ô9Ð9å”7—<’< ¤	¨4Ñ0Ô0Ð0rcóR—|j€i|_i|_tj |jd¦«}	t|d¦«}n#t$ricYSwxYw|5tt|¦«¦« 	¦«}| 
d¦«r1d|vr-t|¦«D]\}}}||j|<|r
||j|<Œn4| d¦«t|¦«D]\}}||j|<Œddd¦«n#1swxYwY|jS)rPNópacked-refsÚrbs# pack-refss peeledr)rârãrÞràrdrÚFileNotFoundErrorÚnextrnr*r'Úread_packed_refs_with_peeledÚseekÚread_packed_refs)rràrÓÚ
first_linerŠrMrÅs       rrQz!DiskRefsContainer.get_packed_refs©s•€ðÔÑ$ð!#ˆDÔØ "ˆDÔÝ”7—<’< ¤	¨>Ñ:Ô:ˆDð
ݘD $Ñ'Ô'øÝ$ð
ð
ð
ؐ			ð
øøøàð

6ð

6Ý!¥$ q¡'¤'™]œ]×1Ò1Ñ3Ô3
Ø×(Ò(¨Ñ8Ô8ð6¸ZÈ:Ð=UÐ=UÝ-IÈ!Ñ-LÔ-Lð=ð=Ñ)˜˜T 6Ø25˜Ô)¨$Ñ/Ø!ð=Ø6<˜DÔ-¨dÑ3øð=ð
—F’F˜1‘I”IIÝ%5°aÑ%8Ô%8ð6ð6™	˜˜TØ25˜Ô)¨$Ñ/Ð/ð

6ð

6ð

6ñ

6ô

6ð

6ð

6ð

6ð

6ð

6ð

6øøøð

6ð

6ð

6ð

6ðÔ Ð s$½AÁAÁAÁ"B)DÄDÄDrScóz—|sdStj |jd¦«}t|d¦«5}| ¦« ¦«}| ¦«D]\}}|tkrtd¦«‚tt¦«5tj| |¦«¦«ddd¦«n#1swxYwY||||<Œz| 
|d¦«Œ‘t|||j¦«||_ddd¦«dS#1swxYwYdS)rUNrùÚwbzcannot pack HEAD)rÞràrdrrQÚcopyrar{r+rÚOSErrorrerêr¿Úwrite_packed_refsrãrâ)rrSràrÓÚpacked_refsrÚtargets       rrVz!DiskRefsContainer.add_packed_refsÉsµ€ðð	ØˆFåŒw|Š|˜DœI ~Ñ6Ô6ˆå
T˜4Ñ
 Ô
 ð	, Aà×.Ò.Ñ0Ô0×5Ò5Ñ7Ô7ˆKà'Ÿ~š~Ñ/Ô/ð
/ð
/‘Và'’>>Ý$Ð%7Ñ8Ô8Ð8õ
gÑ&Ô&ð1ð1Ý”I˜dŸlšl¨3Ñ/Ô/Ñ0Ô0Ð0ð1ð1ð1ñ1ô1ð1ð1ð1ð1ð1ð1øøøð1ð1ð1ð1ðÐ%Ø'-K Ñ$Ð$à—O’O C¨Ñ.Ô.Ð.Ð.å˜a ¨dÔ.?Ñ@Ô@Ð@à +ˆDÔð-	,ð	,ð	,ñ	,ô	,ð	,ð	,ð	,ð	,ð	,ð	,ð	,øøøð	,ð	,ð	,ð	,ð	,ð	,s6ºA.D0Â((CÃD0ÃC à D0Ã#C Ã$?D0Ä0D4Ä7D4cóŠ—| ¦«|j	||jvrdS||jvr
|j|S||SrX)rQrãrârYs  rrZzDiskRefsContainer.get_peeledísY€ð	
×ÒÑÔÐØÔÐ$¨°DÔ4EÐ(EÐ(Eà4ؐ4Ô$Ð$Ð$ØÔ$ TÔ*Ð*ð˜”:Ðrcóì—| |¦«}	t|d¦«5}| tt¦«¦«}|tkr>|tt
|¦«¦« d¦«zcddd¦«S|| dtt¦«z
¦«zcddd¦«S#1swxYwYdS#ttf$rYdSwxYw)a¨Read a reference file and return its contents.

        If the reference file a symbolic reference, only read the first line of
        the file. Otherwise, only read the first 40 bytes.

        Args:
          name: the refname to read, relative to refpath
        Returns: The contents of the ref file, or None if the file does not
            exist.

        Raises:
          IOError: if any other error occurs
        rúr&Né()
rêrÚreadr)r(rürnr*rÚUnicodeError)rrMròrÓÚheaders     rr~z DiskRefsContainer.read_loose_refsC€ð—<’< Ñ%Ô%ˆð
	ݘ 4Ñ(Ô(ð
=¨AØŸš¥¥F¡¤Ñ,Ô,ØVÒ#Ð#à!¥D­¨a©¬¡M¤M×$8Ò$8¸Ñ$AÔ$AÑAð	
=ð
=ð
=ð
=ñ
=ô
=ð
=ð
=ð" A§F¢F¨2µµF±´Ñ+;Ñ$<Ô$<Ñ<ð
=ð
=ð
=ð
=ñ
=ô
=ð
=ð
=ð
=ð
=ð
=ð
=øøøð
=ð
=ð
=ð
=ð
=ð
=øõÐ&ð	ð	ð	ð44ð		øøøsA—C§A$CÂCÂ,CÃCÃCÃCÃCÃCÃC3Ã2C3có*—|j€dStj |jd¦«}t	|d¦«}	d|_| ¦«||jvr	| ¦«dS|j|=tt¦«5|j	|=ddd¦«n#1swxYwYt||j|j	¦«| ¦«| ¦«dS#| ¦«wxYw)Nrùr)rârÞràrdrrQÚabortrrfrãrÚclose)rrMròrÓs    rÚ_remove_packed_refz$DiskRefsContainer._remove_packed_refs<€ØÔÐ$ØˆFÝ”7—<’< ¤	¨>Ñ:Ô:ˆåH˜dÑ#Ô#ˆð
	Ø $ˆDÔØ× Ò Ñ"Ô"Ð"à˜4Ô,Ð,Ð,Øð
GŠG‰IŒIˆIˆIˆIð
Ô! $Ð'ݝ(Ñ#Ô#ð
,ð
,ØÔ% dÐ+ð
,ð
,ð
,ñ
,ô
,ð
,ð
,ð
,ð
,ð
,ð
,øøøð
,ð
,ð
,ð
,å˜a Ô!2°DÔ4EÑFÔFÐFØ
GŠG‰IŒIˆIà
GŠG‰IŒIˆIˆIˆIøˆAGŠG‰IŒIˆIˆIøøøs6Á$C<Á;C<Â	B, C<Â,B0Â0C<Â3B0Â42C<Ã<Dc	ó—| |¦«| |¦«| |¦«}t|d¦«}	| t|zdz¦«| |¦«d}	| ||	|	||||¬¦«| ¦«dS#t$r| 	¦«‚wxYw)zÇMake a ref point at another ref.

        Args:
          name: Name of the ref to set
          other: Name of the ref to point at
          message: Optional message to describe the change
        rrÌr3r¶N)
r|rêrÚwriter(r…rIrÚ
BaseExceptionr)
rrMrNrErFrGrHròrÓrŠs
          rrLz"DiskRefsContainer.set_symbolic_ref3sò€ð 	
×Ò˜DÑ!Ô!Ð!Ø×Ò˜EÑ"Ô"Ð"Ø—<’< Ñ%Ô%ˆÝH˜dÑ#Ô#ˆð	Ø
GŠG•F˜U‘N UÑ*Ñ+Ô+Ð+Ø—+’+˜dÑ#Ô# BÔ'ˆCØIŠIØØØØ#Ø#Ø!Øð
ñ
ô
ð
ð
GŠG‰IŒIˆIˆIˆIøõ	ð	ð	ð	Ø
GŠG‰IŒIˆIØð	øøøs
ÁAB>Â> Cc
óR—| |¦«	| |¦«\}}	|d}
n#tttf$r|}
YnwxYw| |
¦«}tj |
¦«}| 	¦«}
|rF|
 
|d¦«t|¦«‚tj |¦«}|°Fttj |¦«¦«t|d¦«5}|‘	| |
¦«}|€-| 	¦« 
|
t¦«}||kr"| ¦«	ddd¦«dSn##t"$r| ¦«‚wxYw	| |dz¦«n##t"$r| ¦«‚wxYw| |
||||||¬¦«ddd¦«n#1swxYwYdS)aSet a refname to new_ref only if it currently equals old_ref.

        This method follows all symbolic references, and can be used to perform
        an atomic compare-and-swap operation.

        Args:
          name: The refname to set.
          old_ref: The old sha the refname must refer to, or None to set
            unconditionally.
          new_ref: The new sha the refname will refer to.
          message: Set message for reflog
        Returns: True if the set was successful, False otherwise.
        r3NrFrÌr¶T)r|r…rfÚ
IndexErrorrrêrÞràÚdirnamerQrÚNotADirectoryErrorrrr~r
rrrrI)rrMrrŽrErFrGrHr»r‰r¼ròÚ	probe_refrrÓÚorig_refs                rrczDiskRefsContainer.set_if_equalsYs¢€ð.	
×Ò˜DÑ!Ô!Ð!ð	ØŸ;š; tÑ,Ô,‰LˆIqØ  ”}ˆHˆHøÝ*¥jÐ1ð	ð	ð	؈HˆHˆHð	øøøà—<’< Ñ)Ô)ˆõ”G—O’O HÑ-Ô-ˆ	Ø×*Ò*Ñ,Ô,ˆØð	3ØŠ˜y¨$Ñ/Ô/Ð;Ý(¨Ñ2Ô2Ð2ÝœŸš¨	Ñ2Ô2ˆIðð	3õ
	"œ'Ÿ/š/¨(Ñ3Ô3Ñ4Ô4Ð4Ý
X˜tÑ
$Ô
$ð	¨ØÐ"ð
à#×2Ò2°8Ñ<Ô<HØÐ'Ø#'×#7Ò#7Ñ#9Ô#9×#=Ò#=¸hÍÑ#QÔ#Q˜Ø 7Ò*Ð*ØŸš™	œ	˜	Ø$ð	ð	ð	ñ	ô	ð	ð	ð	ð+øõðððØ—G’G‘I”IIØðøøøð
Ø—’˜ %™Ñ(Ô(Ð(Ð(øÝð
ð
ð
Ø—’‘	”		Øð
øøøð
IŠIØØØØ#Ø#Ø!Øð
ñ
ô
ð
ð%	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð6ˆtsR— 8¸AÁAÄ#HÄ'AFÆHÆ F4Æ4HÆ8GÇHÇ G1Ç1HÈH È#H rMrrHc
óâ—	| |¦«\}}|dS|d}	n#ttf$r|}	YnwxYw| |	¦«| |	¦«}
ttj |
¦«¦«t|
d¦«5}tj 
|
¦«s|| ¦«vr"| ¦«	ddd¦«dS	| 
|dz¦«| |d|||||¬¦«n##t$r| ¦«‚wxYw	ddd¦«n#1swxYwYdS)a‡Add a new reference only if it does not already exist.

        This method follows symrefs, and only ensures that the last ref in the
        chain does not exist.

        Args:
          name: The refname to set.
          ref: The new sha the refname will refer to.
          message: Optional message for reflog
        Returns: True if the add was successful, False otherwise.
        NFr3rrÌr¶T)r…rfrr|rêrrÞràrrrõrQrrrIr)rrMrrErFrGrHr»r,r¼ròrÓs            rrzDiskRefsContainer.add_if_newžsî€ð(	Ø"&§+¢+¨dÑ"3Ô"3ÑˆIxØÐ#ؐuØ  ”}ˆHˆHøÝ*Ð%ð	ð	ð	؈HˆHˆHð	øøøà×Ò˜HÑ%Ô%Ð%Ø—<’< Ñ)Ô)ˆÝ"œ'Ÿ/š/¨(Ñ3Ô3Ñ4Ô4Ð4Ý
X˜tÑ
$Ô
$ð	¨ÝŒw~Š~˜hÑ'Ô'ð
¨4°4×3GÒ3GÑ3IÔ3IÐ+IÐ+IØ—’‘	”		Øð	ð	ð	ñ	ô	ð	ð	ð	ð
Ø—’˜˜e™Ñ$Ô$Ð$ð
—	’	ØØØØ'Ø'Ø%Ø#ðñôððøõ	ð
ð
ð
Ø—’‘	”		Øð
øøøðð	ð	ð	ñ	ô	ð	ð	ð	ð	ð	ð	øøøð	ð	ð	ð	ð&ˆts;‚'ž'§=¼=Â&AE$Ã?D4ÄE$Ä4 EÅE$Å$E(Å+E(c	óÌ—| |¦«| |¦«}ttj |¦«¦«t
|d¦«}	|a| |¦«}	|	€-| ¦« 	|t¦«}	|	|kr	| ¦«dS	tj |¦«}
n#t$rd}
YnwxYw|
rtj|¦«| |¦«| ||d||||¬¦«| ¦«n#| ¦«wxYw|}		| dd¦«\}}n#t$$rYnGwxYw|dkrn<| |¦«}
	tj|
¦«n#t$rYnwxYwŒndS)	aÊRemove a refname only if it currently equals old_ref.

        This method does not follow symbolic references. It can be used to
        perform an atomic compare-and-delete operation.

        Args:
          name: The refname to delete.
          old_ref: The old sha the refname must refer to, or None to
            delete unconditionally.
          message: Optional message
        Returns: True if the delete was successful, False otherwise.
        rNFr¶Tr1rrô)r|rêrrÞràrrr~rQrr
rÚlexistsrrerrIÚrsplitr+Úrmdir)rrMrrErFrGrHròrÓrÚfoundÚparentr‰Úparent_filenames              rrgz"DiskRefsContainer.remove_if_equalsÑs*€ð*	
×Ò˜DÑ!Ô!Ð!Ø—<’< Ñ%Ô%ˆÝ"œ'Ÿ/š/¨(Ñ3Ô3Ñ4Ô4Ð4ÝH˜dÑ#Ô#ˆð	ØÐ"Ø×.Ò.¨tÑ4Ô4ØÐ#Ø#×3Ò3Ñ5Ô5×9Ò9¸$ÅÑIÔIHؘwÒ&Ð&Ø ð0
GŠG‰IŒIˆIˆIˆIð+
ÝœŸš¨Ñ1Ô1øÝð
ð
ð
àð
øøøðð
$Ý”	˜(Ñ#Ô#Ð#à×#Ò# DÑ)Ô)Ð)ØIŠIØØØØ#Ø#Ø!Øð
ñ
ô
ð
ð
GŠG‰IŒIˆIˆIøˆAGŠG‰IŒIˆIˆIøøøð
ˆð	ð
Ø"ŸMšM¨$°Ñ2Ô2‘	˜˜øÝð
ð
ð
ؐð
øøøð˜Ò Ð ØØ"Ÿlšl¨6Ñ2Ô2ˆOð
Ý”˜Ñ)Ô)Ð)Ð)øÝð
ð
ð
ð
ð
øøøð	ð$ˆtsVÁ(AEÃC,Ã+EÃ,C;Ã8EÃ:C;Ã;A
EÅE0Å7FÆ
FÆFÆ>GÇ
G ÇG )NNrr›)r r!r"r#rÚstrrçr`rlrêrQrrœrrrVrZr~rrLrcrrrgrÇrÈs@rrÚrÚgs´ø€€€€€Ø3Ð3ð!ð!ð!ð!ð!ð!ð!ð;˜#ð;ð;ð;ð;ðððð&ððð"	1ð	1ð	1ð!ð!ð!ð@",¨¨S°(¸8Ô2DÐ-DÔ(Eð",ð",ð",ð",ðHððð&ððð<ððð2ØØØð$ð$ð$ð$ðVØØØðCðCðCðCðRØØØ#'ð1ð1àð1ðð1ð˜%”ð1ð1ð1ð1ðnØØØðOðOðOðOðOðOðOðOrrÚcó2—| d¦« d¦«}t|¦«dkrtd|z¦«‚|\}}t	|¦«std|z¦«‚t|¦«std|z¦«‚||fS)z6Split a single ref line into a tuple of SHA1 and name.s

ó ézinvalid ref line %rúInvalid hex sha %rrÏ)r*rÑr)r	rr;)rÔÚfieldsrŠrMs    rÚ_split_ref_liner)#s¢€à
[Š[˜Ñ
!Ô
!×
'Ò
'¨Ñ
-Ô
-€FÝ
ˆ6{„{aÒÐÝ!Ð"7¸$Ñ">Ñ?Ô?Ð?؁I€CˆÝ˜ÑÔð>Ý!Ð"6¸Ñ"<Ñ=Ô=Ð=ݘDÑ!Ô!ð@Ý!Ð"7¸$Ñ">Ñ?Ô?Ð?Øˆ;Ðrc#óªK—|D]M}| d¦«rŒ| d¦«rtd¦«‚t|¦«V—ŒNdS)z‹Read a packed refs file.

    Args:
      f: file-like object to read from
    Returns: Iterator over tuples with SHA1s and ref names.
    ó#ó^z.found peeled ref in packed-refs without peeledN)r'r	r))rÓrÔs  rrÿrÿ0ssèè€ðð$ð$ˆØ?Š?˜4Ñ Ô ð	à؏?Š?˜4Ñ Ô ð	XÝ%Ð&VÑWÔWÐWݘdÑ#Ô#Ð#Ð#Ð#Ð#ð
$ð$rc#óÆK—d}|D]¼}|ddkrŒ| d¦«}| d¦«rf|std¦«‚t|dd…¦«std|dd…z¦«‚t	|¦«\}}d}|||dd…fV—ŒŸ|rt	|¦«\}}||dfV—|}Œ½|rt	|¦«\}}||dfV—dSdS)	a	Read a packed refs file including peeled refs.

    Assumes the "# pack-refs with: peeled" line was already read. Yields tuples
    with ref names, SHA1s, and peeled SHA1s (or None).

    Args:
      f: file-like object to read from, seek'ed to the second line
    Nrr+r&r,zunexpected peeled ref linerr')r*r'r	rr))rÓÚlastrÔrŠrMs     rrýrý@sAèè€ð€DØððˆØŒ7dŠ?ˆ?Ø؏{Š{˜7Ñ#Ô#ˆØ?Š?˜4Ñ Ô ð	Øð
HÝ)Ð*FÑGÔGÐGÝ  Q R R¤Ñ)Ô)ð
KÝ)Ð*>ÀÀaÀbÀbÄÑ*IÑJÔJÐJÝ'¨Ñ-Ô-‰IˆCØˆDؘ˜d 1 2 2œhÐ'Ð'Ð'Ð'Ð'àð
(Ý+¨DÑ1Ô1‘	TؘD $Ð'Ð'Ð'Ð'؈DˆDØð Ý# DÑ)Ô)‰	ˆˆTؐD˜$ÐÐÐÐÐÐð ð rcó—|€i}n| d¦«t| ¦«¦«D]P}| t|||¦«¦«||vr!| d||zdz¦«ŒQdS)zÑWrite a packed refs file.

    Args:
      f: empty file-like object to write to
      packed_refs: dict of refname to sha of packed refs to write
      peeled_refs: dict of refname to peeled value of sha
    Ns# pack-refs with: peeled
r,rÌ)rÚsortedrqr)rÓrÚpeeled_refsr.s    rrr`sŸ€ðÐØˆˆà	ŠÐ-Ñ.Ô.Ð.ݘ+×*Ò*Ñ,Ô,Ñ-Ô-ð9ð9ˆØ	Š•˜ WÔ-¨wÑ7Ô7Ñ8Ô8Ð8ؐkÐ!Ð!Ø
GŠGD˜; wÔ/Ñ/°%Ñ7Ñ8Ô8Ð8øð9ð9rcóš—i}| ¦«D]3}| d¦« dd¦«\}}|||<Œ4|S)Nr&rÍr)rÐr*rÑ)rÓrvrÔrŠrMs     rÚread_info_refsr3rsS€Ø
€CØ—’‘
”
ððˆØ—k’k 'Ñ*Ô*×0Ò0°¸Ñ:Ô:‰ˆˆd؈ˆD‰	ˆ	Ø€JrÚstorec#óFK—ddlm}t| ¦«¦«D]v\}}|tkrŒ	||}n#t
$rYŒ'wxYw|||¦«\}}|jdz|zdzV—|j|jkr|jdz|ztzdzV—ŒwdS)zGenerate info refs.r©Úpeel_sharÍrÌN)Úobject_storer7r0rar{rfÚidrÒ)r§r4r7rMrŠÚoÚunpeeledrÅs        rÚwrite_info_refsr<zsîèè€ð'Ð&Ð&Ð&Ð&Ð&å˜DŸJšJ™LœLÑ)Ô)ðGðG‰	ˆˆcð•7Š?ˆ?Øð	ؐc”
ˆAˆAøÝð	ð	ð	ØˆHð	øøøà#˜8 E¨3Ñ/Ô/ш&ØŒdU‰l˜TÑ! EÑ)Ð)Ð)Ð)ØŒ46”9ÒÐØ”)˜eÑ# dÑ*Õ->Ñ>ÀÑFÐFÐFÐFøðGðGs¼AÁ
AÁAcó6—| t¦«Sr)r'ÚLOCAL_BRANCH_PREFIX)Úxs rÚis_local_branchr@Žs€Ø<Š<Õ+Ñ,Ô,Ð,rcó>—d„| ¦«D¦«S)zRemove all peeled refs.cóN—i|]"\}}| t¦«°||“Œ#Sr$)r8rÒ)Ú.0rrŠs   rú
<dictcomp>z%strip_peeled_refs.<locals>.<dictcomp>”s@€ðððِc˜3°s·|²|ÕDUÑ7VÔ7Vð؈Sðððr)ra)r§s rÚstrip_peeled_refsrE’s+€ððØ#'§:¢:¡<¤<ðñôðrcóà—d|zdz}|r_| t¦«rG|tz}||tt¦«d…z}||vr| ||¦«dSdSdSdS)Nrr1)r'r>r{r)rL)r§ÚoriginÚorigin_headÚorigin_baseÚ
origin_refÚ
target_refs      rÚ_set_origin_headrL™sš€à" VÑ+¨dÑ2€KØð:{×-Ò-Õ.AÑBÔBð:Ø ¥7Ñ*ˆ
Ø  ;­sÕ3FÑ/GÔ/GÐ/IÐ/IÔ#JÑJˆ
ؘÐÐØ×!Ò! *¨jÑ9Ô9Ð9Ð9Ð9ð	:ð:ð:ð:ðÐrr§rGrHÚbranchÚref_messagercóò—d|zdz}|rn||z}||vr*t|z}| ||||¦«|}n¹t|z|vrt|z}n¢tdt	j|¦«z¦«‚|rm|}| t¦«r ||tt¦«d…z}n|}	| ||||¦«n#t$rYnwxYwtd¦«‚|S)zSet the default branch.rr1z%r is not a valid branch or tagNz+neither origin_head nor branch are provided)	r>rÚLOCAL_TAG_PREFIXr+rÞrßr'r)rf)	r§rGrHrMrNrIrJÚ	local_refÚhead_refs	         rÚ_set_default_branchrS£s:€ð# VÑ+¨dÑ2€KØ
ðHØ  6Ñ)ˆ
ؘÐÐÝ+¨fÑ4ˆIØOŠO˜I t¨JÔ'7¸ÑEÔEÐEØ ˆHˆHÝ
 Ñ
&¨$Ð
.Ð
.Ý'¨&Ñ0ˆHˆHåÐ>ÅÄÈVÑATÔATÑTÑUÔUÐUØ	ðH؈Ø×!Ò!Õ"5Ñ6Ô6ð	%Ø$ {µ3Õ7JÑ3KÔ3KÐ3MÐ3MÔ'NÑNˆJˆJà$ˆJð	ØOŠO˜H d¨:Ô&6¸ÑDÔDÐDÐDøÝð	ð	ð	ØˆDð	øøøõÐFÑGÔGÐGØ€OsÂ:CÃ
C%Ã$C%có´—| t¦«rh||}t|t¦«r$|j\}}| |¦«j}|t=| td||¬¦«nU	||}| 	t|¦«| td||¬¦«n#t$rd}YnwxYw|S)Nr^)r'rPÚ
isinstancerÚobjectÚ
get_objectr9r{rcrLrf)r§rRrNÚheadÚ_clsÚobjs      rÚ	_set_headr[Åsç€Ø×ÒÕ+Ñ,Ô,ðàHŒ~ˆÝdCÑ Ô ð	*Øœ‰IˆD#Ø—>’> #Ñ&Ô&Ô)ˆDØ•ˆMØ×ҝ7 D¨$¸ÐÑDÔDÐDÐDð	ؘ”>ˆDØ×!Ò!¥'¨8Ñ4Ô4Ð4Ø×Òw¨¨d¸KÐÑHÔHÐHÐHøÝð	ð	ð	؈DˆDˆDð	øøøà€KsÂACÃCÃCFÚrefs_containerÚremote_namerHr\Ú
prune_tagscó4—t|¦«}d„| ¦«D¦«}| d| ¦«z|||¬¦«d„| ¦«D¦«}| t|||¬¦«dS)Ncó‚—i|]<\}}| t¦«¯|tt¦«d…|“Œ=Sr)r'r>r)©rCÚnÚvs   rrDz'_import_remote_refs.<locals>.<dictcomp>âsU€ðððáˆQØ<Š<Õ+Ñ,Ô,ðØ	#Õ!Ñ
"Ô
"Ð
$Ð
$Ô% qðððrr)rHr\có¶—i|]V\}}| t¦«¯| t¦«°9|t	t¦«d…|“ŒWSr)r'rPr8rÒr)ras   rrDz'_import_remote_refs.<locals>.<dictcomp>ísl€ðððáˆQØ<Š<Õ(Ñ)Ô)ðð34·*²*Õ=NÑ2OÔ2OðØ	#ÕÑ
Ô
Ð
!Ð
!Ô" Aðððr)rErarjrÜrP)	r\r]r§rHr\r^Ú
stripped_refsÚbranchesÚtagss	         rÚ_import_remote_refsrhÙsӀõ& dÑ+Ô+€Mððà#×)Ò)Ñ+Ô+ðñô€Hð
×ÒØ˜;×-Ò-Ñ/Ô/Ñ/ØØØð	ñôðððà#×)Ò)Ñ+Ô+ðñô€Dð
×Òݘ$¨°zðñôðððrc
ó–—ddlm}i}| ¦«D]«\}}	|||¦«\}}t|t¦«r|j||tz<|j||<ŒG#t$rXtj	d 
| dd¦«| d¦«¦«t¦«YŒ¨wxYw|S)Nrr6z#ref {} points at non-present sha {}zutf-8ríÚascii)
r8r7rarUrr9rÒrfÚwarningsÚwarnÚformatÚdecodeÚUserWarning)r4r§r7rvrrŠr;rÅs        rÚserialize_refsrp÷sø€à&Ð&Ð&Ð&Ð&Ð&à
€CØ—J’J‘L”Lð#ð#‰ˆˆSð
	#Ø'˜x¨¨sÑ3Ô3ÑˆHfõ˜(¥CÑ(Ô(ð
9Ø/5¬yCÕ+Ñ+Ñ,Ø”{ˆC‰HˆHøõð	ð	ð	ÝŒMØ5×<Ò<Ø—J’J˜w¨	Ñ2Ô2°C·J²J¸wÑ4GÔ4Gñôõñ	
ô
ð
ð
ˆHð	øøøð€Js£A$Á$ACÃCr)NFF):r#rÞrkÚ
contextlibrÚtypingrrrrÚerrorsr	r
ÚfilerrÚobjectsr
rrrrÚpackrrrœr{r(r>rPÚLOCAL_REMOTE_PREFIXr_r7rÒÚANNOTATED_TAG_SUFFIXÚ	Exceptionrr-r;r=r rÊrÚr)rÿrýrr3r<r@rErLrSr[r#ržrhrpr$rrú<module>rzs•ðð,ÐØ	€	€	€	Ø€€€ØÐÐÐÐÐØ+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+à7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ØDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDØ!Ð!Ð!Ð!Ð!Ð!à€à
€Ø	€Ø$ÐØ ÐØ&ÐØNÑ#Ô#€
ØÐð)Ððððððñôðð	ð	ð	ð˜cðððððDLðLðLðLðLñLôLðLð^
N$ðN$ðN$ðN$ðN$˜
ñN$ôN$ðN$ðb$ð$ð$ð$ð$˜
ñ$ô$ð$ðDyðyðyðyðy˜
ñyôyðyðx
ð
ð
ð
$ð
$ð
$ð  ð ð ð@9ð9ð9ð9ð$ðððG ðGðGðGðGð(-ð-ð-ðððð:ð:ð:ðØ
ðàðððð
ð	ð
˜%”ððð
ððððDððð0 $ØØð
ðØ!ðàððˆsCˆxŒ.ððeŒ_ð	ð
ððð
ðððð<ððððr