biFdZddlmZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z m Z ejrddlmZmZejdkrddlmZnejrddlmZn ddlZddlZdTd Zd dddddddZgdZdUdZe e eefdfZe e eefdfZe eeeeeefZe e ee edfefe ee edfeeffZeeege fZ!Gdde dZ"dVdZ#dWdZ$Gdd e%Z&Gd!d"Z'd#Z(e()d$d%)d&d'Z*ej+j,d(kr ejd)ks&ej+j,d*kr ejd+ks ejd,kre*ne(Z- ej.d-ej/ej0zZ1e2d.Z3dXd1Z4dYd3Z5dZd5Z6d[d7Z7d\d9Z8d]d;Z9Gd<d=e Z:Gd>de'Z;Gd?d@e;Zd_dHZ?ddIdJdKZ@dLZAdMZBdLZCeBddddIdfZDd`dSZEdS)azZ .. testsetup:: from packaging.version import parse, normalize_pre, Version, _cmpkey ) annotationsN)AnyCallableLiteral NamedTuple SupportsIntTuple TypedDictUnion)SelfUnpack) ) deprecatedmessagestrreturnobjectcdfd }|S)NfuncCallable[[...], object]rrcLtjdfd }|S)NargsrkwargsrcLtjtd|i|S)N)category stacklevel)warningswarnDeprecationWarning)rrrrs i/home/jenkins/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/packaging/version.pywrapperz/_deprecated..decorator..wrapper's< /  tT,V,,,)rrrrrr) functoolswraps)rr#rs` r" decoratorz_deprecated..decorator&sC _T " " - - - - - -# " -Nr$)rrrr)rr's` r" _deprecatedr)%s)      r$abrcpost)alphabetacprepreviewrevr)VERSION_PATTERNInvalidVersionVersion normalize_preparse list[str]ctSN)__all__r(r$r"__dir__r>Bs Nr$.cLeZdZUded<ded<ded<ded<ded<d ed <d S) _VersionReplace int | Noneepochztuple[int, ...] | Nonereleasetuple[str, int] | Noner1r-dev str | NonelocalN__name__ __module__ __qualname____annotations__r(r$r"r@r@QsW####OOOr$r@F)totalletterc`|}t||S)a8Normalize the pre-release segment of a version string. Returns a lowercase version of the string if not a known pre-release identifier. >>> normalize_pre('alpha') 'a' >>> normalize_pre('BETA') 'b' >>> normalize_pre('rc') 'rc' :param letter: .. versionadded:: 26.1 )lower_LETTER_NORMALIZATIONget)rNs r"r8r8Zs'"\\^^F $ $VV 4 44r$versionr7c t|S)aParse the given version string. This is identical to the :class:`Version` constructor. >>> parse('1.0.dev1') :param version: The version string to parse. :raises InvalidVersion: When the version string is not a valid version. )r7)rSs r"r9r9os 7  r$ceZdZdZdS)r6zRaised when a version string is not a valid version. >>> Version("invalid") Traceback (most recent call last): ... packaging.version.InvalidVersion: Invalid version: 'invalid' N)rIrJrK__doc__r(r$r"r6r6}sr$r6cpeZdZdZejr eddZddZdd Z dd Z dd Z dd Z ddZ ddZdS) _BaseVersionr(rtuple[Any, ...]cdSr<r(selfs r"_keyz_BaseVersion._keys+.3r$intc*t|jSr<)hashr]r[s r"__hash__z_BaseVersion.__hash__sDIr$otherboolcZt|tstS|j|jkSr< isinstancerXNotImplementedr]r\rbs r"__lt__z_BaseVersion.__lt__)%.. "! !y5:%%r$cZt|tstS|j|jkSr<rerhs r"__le__z_BaseVersion.__le__)%.. "! !yEJ&&r$rcZt|tstS|j|jkSr<rerhs r"__eq__z_BaseVersion.__eq__rmr$cZt|tstS|j|jkSr<rerhs r"__ge__z_BaseVersion.__ge__rmr$cZt|tstS|j|jkSr<rerhs r"__gt__z_BaseVersion.__gt__rjr$cZt|tstS|j|jkSr<rerhs r"__ne__z_BaseVersion.__ne__rmr$N)rrYrr^rbrXrrcrbrrrc)rIrJrK __slots__typing TYPE_CHECKINGpropertyr]rarirlrorqrsrur(r$r"rXrXsI / ... . &&&& '''' '''' '''' &&&& ''''''r$rXa3 v?+ # optional leading v (?a: (?:(?P[0-9]+)!)?+ # epoch (?P[0-9]+(?:\.[0-9]+)*+) # release segment (?P
                                          # pre-release
            [._-]?+
            (?Palpha|a|beta|b|preview|pre|c|rc)
            [._-]?+
            (?P[0-9]+)?
        )?+
        (?P                                         # post release
            (?:-(?P[0-9]+))
            |
            (?:
                [._-]?
                (?Ppost|rev|r)
                [._-]?
                (?P[0-9]+)?
            )
        )?+
        (?P                                          # dev release
            [._-]?+
            (?Pdev)
            [._-]?+
            (?P[0-9]+)?
        )?+
    )
    (?a:\+
        (?P                                        # local version
            [a-z0-9]+
            (?:[._-][a-z0-9]+)*+
        )
    )?+
z*+*z?+?cpython)rpypy)rrr)rrz[a-z0-9]+(?:[._-][a-z0-9]+)*z.0123456789valuer^cl|pd}t|tr|dkr|Sd|}t|)Nrz(epoch must be non-negative integer, got rfr^r6)rrBmsgs   r"_validate_epochr
sEJQE%%1**
z$_validate_release..s5??!
1c""-qAv??????r$z@release must be a non-empty tuple of non-negative integers, got )rftuplelenallr6)rrCrs   r"_validate_releaserssmddG7E""LL1??w?????

VW
V
VC


r$*tuple[Literal['a', 'b', 'rc'], int] | Nonec||St|trJt|dkr7|\}}t|}|dvrt|tr
|dkr||fSd|}t|)Nr>r*r+r,rz=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got )rfrrr8r^r6)rrNnumberrs    r"
_validate_prers}%$CJJ!OOv&&%%%*VS*A*A%fPQkkF##
Q%
Q
QC


r$"tuple[Literal['post'], int] | Nonecp||St|tr
|dkrd|fSd|}t|)Nrr-z'post must be non-negative integer, got rrrs  r"_validate_postr+sK}%%1**
;E
;
;C


r$!tuple[Literal['dev'], int] | Nonecp||St|tr
|dkrd|fSd|}t|)NrrEz&dev must be non-negative integer, got rrs  r"
_validate_devr4sK}%%1**u~
:5
:
:C


r$LocalType | Nonec||St|tr)t|rt	|Sd|}t|)Nz*local must be a valid version string, got )rfr_LOCAL_PATTERN	fullmatch_parse_local_versionr6rs  r"_validate_localr=s\}%+.":":5"A"A+#E***
@u
@
@C


r$cLeZdZUded<ded<ded<ded<d	ed
<ded<d
S)_Versionr^rBrrCrrErr1rr-rrGNrHr(r$r"rrGsWJJJ****3333,,,,r$rc`eZdZUdZdZdZ	ejdezdzej	ej
zZded<ded<d	ed
<ded<d
ed<ded<ded<ded<dQdZ
edddddddRd&ZdSd)ZedTd+ZdUd,ZdVfd0ZdVfd1ZdWfd3ZdVfd4ZdVfd5ZdWfd6ZdXd8ZdYd:Zeed;dZd=Zejed;d[d?Zd\d@Zd\dAZ ed\dBZ!edUdCZ"ed]dDZ#ed^dEZ$ed_dFZ%ed_dGZ&ed`dHZ'ed\dIZ(ed\dJZ)edadKZ*edadLZ+edadMZ,edUdNZ-edUdOZ.edUdPZ/xZ0S)br7aThis class abstracts handling of a project's versions.

    A :class:`Version` instance is comparison aware and can be compared and
    sorted using the standard Python interfaces.

    >>> v1 = Version("1.0a5")
    >>> v2 = Version("1.0")
    >>> v1
    
    >>> v2
    
    >>> v1 < v2
    True
    >>> v1 == v2
    False
    >>> v1 > v2
    False
    >>> v1 >= v2
    False
    >>> v1 <= v2
    True

    :class:`Version` is immutable; use :meth:`__replace__` to change
    part of a version.

    Instances are safe to serialize with :mod:`pickle`. They use a stable
    format so the same pickle can be loaded in future packaging releases.

    .. versionchanged:: 26.2

        Added a stable pickle format. Pickles created with packaging 26.2+ can
        be unpickled with future releases.  Backward compatibility with pickles
        from packaging < 26.2 is supported but may be removed in a future
        release.
    )_dev_epoch_hash_cache
_key_cache_local_post_pre_release)_strz\s*r^rrrrrrrrrrrrArz
CmpKey | NonerrSrrNonect|r	ttt|d|_n9#t$r,d|dvrtd|dwxYwd|_	d|_
d|_d|_d|_
d|_d|_dS|j|}|std||dr"t	|dnd|_	ttt|dd|_t'|d|d	|_
t'|d
|dp|d|_t'|d
|d|_t)|d|_
d|_d|_dS)aCInitialize a Version object.

        :param version:
            The string representation of a version which will be parsed and normalized
            before use.
        :raises InvalidVersion:
            If the ``version`` does not conform to PEP 440 in any way then this
            exception will be raised.
        .zInvalid version: NrrBrCpre_lpre_npost_lpost_n1post_n2dev_ldev_nrG)_SIMPLE_VERSION_INDICATORS
issupersetrmapr^splitr
ValueErrorr6rrrrrrr_regexrgroup_parse_letter_versionr)r\rSmatchs   r"__init__zVersion.__init__s1&0099		
 %c#w}}S/A/A&B&B C C




s++++()HW)H)HIItS
DKDIDJDIDK"DO#DF%%g..	B !@W!@!@AAA38;;w3G3GNc%++g..///Qc#u{{9'='='C'CC'H'HIIJJ
*%++g*>*>G@T@TUU	*KK!!5;;y#9#9#SU[[=S=S


*%++g*>*>G@T@TUU	*5;;w+?+?@@s:A6B
rN)rBr1r-rErGrBrCr1rDr-rErGrFrctt|}t|}|t|nd}	|t|nd}
|t	|nd}|t|nd}||}
d|
_d|
_||
_	||
_
|	|
_|
|
_||
_
||
_|
S)a(
        Return a new version composed of the various parts.

        This allows you to build a version without going though a string and
        running a regular expression. It normalizes pre-release strings. The
        ``release=`` keyword argument is required.

        >>> Version.from_parts(release=(1,2,3))
        
        >>> Version.from_parts(release=(0,1,0), pre=("b", 1))
        

        :param epoch:
        :param release: This version tuple is required

        .. versionadded:: 26.1
        N)rrrrrr__new__rrrrrrrr)clsrBrCr1r-rErGrrrrrrnew_versions              r"
from_partszVersion.from_partss8!''$W--%(_}S!!!$(,(8t$$$d%(_}S!!!$+0+<'''$kk#&&!%"&#'!#r$rUnpack[_VersionReplace]cd|vrt|dn|j}d|vrt|dn|j}d|vrt	|dn|j}d|vrt
|dn|j}d|vrt|dn|j	}d|vrt|dn|j}||jkr9||jkr.||jkr#||jkr||j	kr
||jkr|S|j
|j}d|_d|_||_||_||_||_||_	||_|S)a
        __replace__(*, epoch=..., release=..., pre=..., post=..., dev=..., local=...)

        Return a new version with parts replaced.

        This returns a new version (unless no parts were changed). The
        pre-release is normalized. Setting a value to ``None`` clears it.

        >>> v = Version("1.2.3")
        >>> v.__replace__(pre=("a", 1))
        

        :param int | None epoch:
        :param tuple[int, ...] | None release:
        :param tuple[str, int] | None pre:
        :param int | None post:
        :param int | None dev:
        :param str | None local:

        .. versionadded:: 26.0
        .. versionchanged:: 26.1

           The pre-release portion is now normalized.
        rBrCr1r-rErGN)rrrrrrrrrrrr	__class__rrr)	r\rrBrCr1r-rErGrs	         r"__replace__zVersion.__replace__s25st++K8?"C+$+
	
	
%%
DOc*.c2;r$rbrXrcct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgsuperrir\rbrs  r"rizVersion.__lt__PeW%%	6&")KMIJIK
##'#*LNJKJL
$$ ?U%555%..	"!!ww~~e$$$r$ct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgrrlrs  r"rlzVersion.__le__keW%%	7&")KMIJIK
##'#*LNJKJL
$$ ?e&666%..	"!!ww~~e$$$r$rct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgrrors  r"rozVersion.__eq__rr$ct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgrrqrs  r"rqzVersion.__ge__rr$ct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgrrsrs  r"rszVersion.__gt__rr$ct|tr|j7t|j|j|j|j|j|j	|_|j7t|j|j|j|j|j|j	|_|j|jkSt|tstSt
|Sr<)rfr7rrrrrrrrrXrgrrurs  r"ruzVersion.__ne__rr$utuple[int, tuple[int, ...], tuple[str, int] | None, tuple[str, int] | None, tuple[str, int] | None, LocalType | None]cN|j|j|j|j|j|jfSr<)rrrrrrr[s r"__getstate__zVersion.__getstate__s,
KMIJIK

	
r$statec2d|_d|_t|trt	|dkr)|\|_|_|_|_|_	|_
dSt	|dkr|\}}t|tr|d|_|d|_|d|_|d|_|d|_	|d|_
dSt|tra|d	}|J|j
|_|j|_|j|_|j|_|j|_	|j|_
dSt'd
|)Nrrrrrrr_versionzCannot restore Version from )rrrfrrrrrrrrdictrRrBrCr1r-rErG	TypeError)r\r_	slot_dict
version_nts     r"__setstate__zVersion.__setstate__steU##	5zzQKMIJIK5zzQ$9i.."+H"5DK$-j$9DM )

f 5 5DI!*w!7!7DJ )

f 5 5DI"+--"9"9DKFeT""	:..J%(. * 2
&N	'_
&N	(.@u@@AAAr$z4Version._version is private and will be removed soonrcft|j|j|j|j|j|jSr<)rrrrrrrr[s r"rzVersion._version5s/K	49dj$+

	
r$rc|j|_|j|_|j|_|j|_|j|_	|j
|_d|_d|_
dSr<)rBrrCrrErr1rr-rrGrrr)r\rs  r"rzVersion._version<sOk

I	I	Z
kr$cBd|jjdt|dS)zA representation of the Version that shows all internal state.

        >>> Version('1.0.0')
        
        <(z)>)rrIrr[s r"__repr__zVersion.__repr__Hs(=4>*<>> str(Version("1.0a5"))
        '1.0a5'
        r!Nrz.postz.dev+)	joinrrrCrBr1r-rErG)r\rSs  r"__str__zVersion.__str__Ps((3sDL1122:	0//g//G8rwws311222G9 *ty***G8(dh(((G:!'4:'''Gr$c t|S)z Internal property for match_argsrr[s r"rzVersion._stros4yyr$c|jS)zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )rr[s r"rBz
Version.epochts{r$c|jS)adThe components of the "release" segment of the version.

        >>> Version("1.2.3").release
        (1, 2, 3)
        >>> Version("2.0.0").release
        (2, 0, 0)
        >>> Version("1!2.0.0.post0").release
        (2, 0, 0)

        Includes trailing zeroes but not the epoch or any pre-release / development /
        post-release suffixes.
        )rr[s r"rCzVersion.releases}r$c|jS)aThe pre-release segment of the version.

        >>> print(Version("1.2.3").pre)
        None
        >>> Version("1.2.3a1").pre
        ('a', 1)
        >>> Version("1.2.3b1").pre
        ('b', 1)
        >>> Version("1.2.3rc1").pre
        ('rc', 1)
        )rr[s r"r1zVersion.presyr$c.|jr
|jdndS)zThe post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        N)rr[s r"r-zVersion.posts!%
4tz!}}4r$c.|jr
|jdndS)zThe development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        rN)rr[s r"rEzVersion.devs $y2ty||d2r$c\|jr$dd|jDSdS)zThe local version segment of the version.

        >>> print(Version("1.2.3").local)
        None
        >>> Version("1.2.3+abc").local
        'abc'
        rc34K|]}t|VdSr<r)rxs  r"rz Version.local..s(88qCFF888888r$N)rrr[s r"rGz
Version.locals6;	8888DK8888884r$cTt|dddS)aqThe public portion of the version.

        This returns a string. If you want a :class:`Version` again and care
        about performance, use ``v.__replace__(local=None)`` instead.

        >>> Version("1.2.3").public
        '1.2.3'
        >>> Version("1.2.3+abc").public
        '1.2.3'
        >>> Version("1!1.2.3dev1+abc").public
        '1!1.2.3.dev1'
        rrr)rrr[s r"publiczVersion.publics#4yysA&&q))r$cdtt|j}|jr|jd|n|S)aThe "base version" of the version.

        This returns a string. If you want a :class:`Version` again and care
        about performance, use
        ``v.__replace__(pre=None, post=None, dev=None, local=None)`` instead.

        >>> Version("1.2.3").base_version
        '1.2.3'
        >>> Version("1.2.3+abc").base_version
        '1.2.3'
        >>> Version("1!1.2.3dev1+abc").base_version
        '1!1.2.3'

        The "base version" is the public version of the project without any pre or post
        release markers.
        rr)rrrrCrB)r\release_segments  r"base_versionzVersion.base_versionsC$((3sDL#9#9::48JS$*00000OSr$c&|jdup|jduS)aTWhether this version is a pre-release.

        >>> Version("1.2.3").is_prerelease
        False
        >>> Version("1.2.3a1").is_prerelease
        True
        >>> Version("1.2.3b1").is_prerelease
        True
        >>> Version("1.2.3rc1").is_prerelease
        True
        >>> Version("1.2.3dev1").is_prerelease
        True
        N)rEr1r[s r"
is_prereleasezVersion.is_prereleasesxt#;txt';;r$c|jduS)zWhether this version is a post-release.

        >>> Version("1.2.3").is_postrelease
        False
        >>> Version("1.2.3.post1").is_postrelease
        True
        N)r-r[s r"is_postreleasezVersion.is_postreleasesy$$r$c|jduS)zWhether this version is a development release.

        >>> Version("1.2.3").is_devrelease
        False
        >>> Version("1.2.3.dev1").is_devrelease
        True
        N)rEr[s r"
is_devreleasezVersion.is_devreleasesxt##r$cPt|jdkr
|jdndS)zqThe first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1
        rrrrCr[s r"majorz
Version.majors(#&dl"3"3q"8"8t|Aa?r$cPt|jdkr
|jdndS)zThe second item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").minor
        2
        >>> Version("1").minor
        0
        rrrrr[s r"minorz
Version.minor(#&dl"3"3q"8"8t|Aa?r$cPt|jdkr
|jdndS)zThe third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0
        rrrrr[s r"microz
Version.micro"rr$)rSrrr)rBr^rCrr1rDr-rArErArGrFrr)rrrr)rrrvrwrx)rr)rrrr)rr)rrrr)rrrr)rr)rrA)rrF)rrc)1rIrJrKrVry__match_args__recompiler5VERBOSE
IGNORECASErrLrclassmethodrrr|r]rarirlrorqrsrurrr)rsetterrrrrBrCr1r-rErGrrrrr
r
rr
__classcell__rs@r"r7r7Ps""H	INRZ0692:
;U
V
VFKKK++++4444----0 0 0 0 d&* ,,,,,[,\8888t


X
$%%%%%%6%%%%%%6%%%%%%6%%%%%%6%%%%%%6%%%%%%6



,+B+B+B+BZ[GHH


IHX

_[GHH   IH_ ====>XX


X
X555X5333X3X
*
*
*X
*TTTXT(<<<X< %%%X%$$$X$@@@X@@@@X@@@@X@@@@@r$c@eZdZdZd	fdZed
fdZxZS)_TrimmedReleaser(rS
str | Versionrrc t|trV|j|_|j|_|j|_|j|_|j|_|j|_|j|_dSt
|dSr<)rfr7rrrrrrrrr)r\rSrs  r"rz_TrimmedRelease.__init__1sygw''	!.DK#,DMDIDI DJ!.DK%0DOF
!!!!!r$rctj}t|}|}|dkr)||dz
dkr|dz}|dkr||dz
dk||kr|n	|d|S)z
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        rrN)rrCr)r\rellen_releaserrs    r"rCz_TrimmedRelease.release=syggo#hh!eeAE
a
FA!eeAE
a;&&ssCG3r$)rSrrrr)rIrJrKryrr|rCrrs@r"rr.slI
"
"
"
"
"
"44444X44444r$rrFr str | bytes | SupportsInt | NonerDc|rB|}t||}|t|pdfS|rdt|fSdS)Nrr-)rPrQrRr^)rNrs  r"rrPsi(
'**66::s6;Q''''
#s6{{""4r$z[\._-]rGcl|1tdt|DSdS)z`
    Takes a string like ``"abc.1.twelve"`` and turns it into
    ``("abc", 1, "twelve")``.
    Nc3K|];}|s|nt|V.qsU

!%=DJJLLLCII





r$)r_local_version_separatorsr)rGs r"rrksM



177>>




	
4r$rr)r*r+r,rrBrCr1rErct|}|}|r%||dz
dkr|dz}|r||dz
dk||kr|n	|d|}||||
||tfS|||
td}
}	n'|
td}
}	nt|d|d}
}	|dnd}|dn|d}|dnd}
|dn|d}|	|
|||
|f}||||fStd|D}||||fS)aBuild a comparison key for PEP 440 ordering.

    Returns ``(epoch, release, suffix)`` or
    ``(epoch, release, suffix, local)`` so that plain tuple
    comparison gives the correct order.

    Trailing zeros are stripped from the release so that ``1.0.0 == 1``.

    The suffix is a flat 6-int tuple that encodes pre/post/dev:
    ``(pre_rank, pre_n, post_rank, post_n, dev_rank, dev_n)``

    pre_rank: dev-only=-1, a=0, b=1, rc=2, no-pre=3
        Dev-only releases (no pre or post) get -1 so they sort before
        any alpha/beta/rc.  Releases without a pre-release tag get 3
        so they sort after rc.
    post_rank: no-post=0, post=1
        Releases without a post segment sort before those with one.
    dev_rank: dev=0, no-dev=1
        Releases without a dev segment sort after those with one.

    Local segments use ``(n, "")`` for ints and ``(-1, s)`` for strings,
    following PEP 440: strings sort before ints, strings compare
    lexicographically, ints compare numerically, and shorter segments
    sort before longer when prefixes match.  Versions without a local
    segment sort before those with one (3-tuple < 4-tuple).

    >>> _cmpkey(0, (1, 0, 0), None, None, None, None)
    (0, (1,), (3, 0, 0, 0, 1, 0))
    >>> _cmpkey(0, (1,), ("a", 1), None, None, None)
    (0, (1,), (0, 1, 0, 0, 1, 0))
    >>> _cmpkey(0, (1,), None, None, None, ("ubuntu", 1))
    (0, (1,), (3, 0, 0, 0, 1, 0), ((-1, 'ubuntu'), (1, '')))
    rrNc3ZK|]&}t|tr|dfnt|fV'dS)rN)rfr^_LOCAL_STR_RANK)rsegs  r"rz_cmpkey..sO$$JMZS))Eb		/E$$$$$$r$)r_STABLE_SUFFIX_PRE_RANK_DEV_ONLY_PRE_RANK_STABLE	_PRE_RANKr)rBrCr1r-rErGr#rtrimmedpre_rankr	post_rankpost_ndev_rankrsuffix	cmp_locals                 r"rrsiTg,,KA
A!##	QA!##k))ggwrr{G{t|
g~--
{t|,a%	*A%#CF+SV%\qI,QQDGFKqqQHAA#a&Ey&(E
BF}gv%%#$$QV$$$I'69,,r$)rrrr)rr:)rNrrr)rSrrr7)rrrr^)rrrr)rrrr)rrrr)rrrr)rrrr)rNrFrr$rrD)rGrFrr)rBr^rCrr1rDr-rDrErDrGrrr)FrV
__future__rrsysrzrrrrrr	r
rr{typing_extensionsrr
version_inforrr)r%rQr=r>r^r	LocalTypeCmpLocalType	CmpSuffixrrcVersionComparisonMethodr@r8r9rr6rX_VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer5rrASCIIr	frozensetrrrrrrrrr7rrr*rr3r1r2r.r0rr(r$r"rJs'#"""""				







																				
/........w2222222;;;;;;;OOO



"	
	U
T
T
%S/3&'	U38_c)*#sCc3./			#uS#X	
)*	#uS#X	<
78:
#FF#3T#9:iu5555*Z3'3'3'3'3'3'3'3't"H(//c::BB4MM	9,,1AJ1N1N6))c.>.L.L
'!!
$;R]RX=UVV'Y}55				



z[@[@[@[@[@l[@[@[@|44444g444D0'BJy11



!1%%	#Aq!Q2J-J-J-J-J-J-r$