§
    ZŠtj€˜  ã                  óB  — d Z ddlmZ ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZ ej        rddlmZmZ ej        dk    rddlmZ nej        rddlmZ nddlZddlZdTd„ZddddddddœZg d¢ZdUd„Zeeeef         df         Zeeeef         df         Zeeeeeeef         Zeeeeedf         ef         eeeedf         eef         f         Zeeege f         Z! G d„ ded¬¦  «        Z"dVd„Z#dWd„Z$ G d„ d e%¦  «        Z& G d!„ d"¦  «        Z'd#Z(e( )                    d$d%¦  «         )                    d&d'¦  «        Z*ej+        j,        d(k    rej        d)k     s&ej+        j,        d*k    rej        d+k     sej        d,k     re*ne(Z-	  ej.        d-ej/        ej0        z  ¦  «        Z1 e2d.¦  «        Z3dXd1„Z4dYd3„Z5dZd5„Z6d[d7„Z7d\d9„Z8d]d;„Z9 G d<„ d=e	¦  «        Z: G d>„ de'¦  «        Z; G d?„ d@e;¦  «        Z<d^dE„Z= ej.        dF¦  «        Z>d_dH„Z?ddIdJdKœZ@dLZAdMZBdLZCeBddddIdfZDd`dS„ZEdS )azZ
.. testsetup::

    from packaging.version import parse, normalize_pre, Version, _cmpkey
é    )ÚannotationsN)ÚAnyÚCallableÚLiteralÚ
NamedTupleÚSupportsIntÚ	TypedDictÚUnion)ÚSelfÚUnpack)é   é   )Ú
deprecatedÚmessageÚstrÚreturnÚobjectc                ó   ‡ — dˆ fd„}|S )NÚfuncúCallable[[...], object]r   r   c                óL   •‡ — t          j        ‰ ¦  «        dˆ ˆfd„¦   «         }|S )NÚargsr   Úkwargsr   c                 óL   •— t          j        ‰t          d¬¦  «          ‰| i |¤ŽS )Né   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnÚDeprecationWarning)r   r   r   r   s     €€úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/packaging/version.pyÚwrapperz/_deprecated.<locals>.decorator.<locals>.wrapper&   s<   ø€ å”ØÝ/Ø ðñ ô ð ð
 �t˜TÐ, VÐ,Ð,Ð,ó    )r   r   r   r   r   r   )Ú	functoolsÚwraps)r   r"   r   s   ` €r!   Ú	decoratorz_deprecated.<locals>.decorator%   sC   øø€ ÝŒ_˜TÑ"Ô"ð-ð -ð -ð -ð -ð -ñ #Ô"ð-ð ˆNr#   )r   r   r   r   © )r   r&   s   ` r!   Ú_deprecatedr(   $   s)   ø€ ð
	ð 
	ð 
	ð 
	ð 
	ð 
	ð Ðr#   ÚaÚbÚrcÚpost)ÚalphaÚbetaÚcÚpreÚpreviewÚrevÚr)ÚVERSION_PATTERNÚInvalidVersionÚVersionÚnormalize_preÚparseú	list[str]c                 ó   — t           S ©N)Ú__all__r'   r#   r!   Ú__dir__r=   A   s   € Ý€Nr#   .c                  óL   — e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   dS )Ú_VersionReplaceú
int | NoneÚepochztuple[int, ...] | NoneÚreleaseútuple[str, int] | Noner0   r,   Údevú
str | NoneÚlocalN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r'   r#   r!   r?   r?   P   sW   € € € € € € ØÐÐÑØ#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØ€O€O�OØÐÐÑÐÐr#   r?   F)ÚtotalÚletterc               ó`   — |                       ¦   «         } t                               | | ¦  «        S )a8  Normalize 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_NORMALIZATIONÚget)rM   s    r!   r7   r7   Y   s'   € ð" �\Š\‰^Œ^€FÝ ×$Ò$ V¨VÑ4Ô4Ð4r#   Úversionr6   c                ó    — t          | ¦  «        S )a  Parse the given version string.

    This is identical to the :class:`Version` constructor.

    >>> parse('1.0.dev1')
    <Version('1.0.dev1')>

    :param version: The version string to parse.
    :raises InvalidVersion: When the version string is not a valid version.
    )r6   )rR   s    r!   r8   r8   n   s   € õ �7ÑÔÐr#   c                  ó   — e Zd ZdZdS )r5   zÉRaised when a version string is not a valid version.

    >>> Version("invalid")
    Traceback (most recent call last):
        ...
    packaging.version.InvalidVersion: Invalid version: 'invalid'
    N)rH   rI   rJ   Ú__doc__r'   r#   r!   r5   r5   |   s   € € € € € ðð ð ð r#   r5   c                  óp   — e Zd ZdZej        redd„¦   «         Zdd„Zdd	„Z	dd
„Z
dd„Zdd„Zdd„Zdd„ZdS )Ú_BaseVersionr'   r   útuple[Any, ...]c                ó   — d S r;   r'   ©Úselfs    r!   Ú_keyz_BaseVersion._keyŽ   s   € Ø+.¨3r#   Úintc                ó*   — t          | j        ¦  «        S r;   )Úhashr\   rZ   s    r!   Ú__hash__z_BaseVersion.__hash__‘   s   € Ý�D”I‰ŒÐr#   ÚotherÚboolc                óZ   — t          |t          ¦  «        st          S | j        |j        k     S r;   ©Ú
isinstancerW   ÚNotImplementedr\   ©r[   ra   s     r!   Ú__lt__z_BaseVersion.__lt__—   ó)   € Ý˜%¥Ñ.Ô.ð 	"Ý!Ð!àŒy˜5œ:Ò%Ð%r#   c                óZ   — t          |t          ¦  «        st          S | j        |j        k    S r;   rd   rg   s     r!   Ú__le__z_BaseVersion.__le__�   ó)   € Ý˜%¥Ñ.Ô.ð 	"Ý!Ð!àŒy˜EœJÒ&Ð&r#   r   c                óZ   — t          |t          ¦  «        st          S | j        |j        k    S r;   rd   rg   s     r!   Ú__eq__z_BaseVersion.__eq__£   rl   r#   c                óZ   — t          |t          ¦  «        st          S | j        |j        k    S r;   rd   rg   s     r!   Ú__ge__z_BaseVersion.__ge__©   rl   r#   c                óZ   — t          |t          ¦  «        st          S | j        |j        k    S r;   rd   rg   s     r!   Ú__gt__z_BaseVersion.__gt__¯   ri   r#   c                óZ   — t          |t          ¦  «        st          S | j        |j        k    S r;   rd   rg   s     r!   Ú__ne__z_BaseVersion.__ne__µ   rl   r#   N)r   rX   ©r   r]   ©ra   rW   r   rb   ©ra   r   r   rb   )rH   rI   rJ   Ú	__slots__ÚtypingÚTYPE_CHECKINGÚpropertyr\   r`   rh   rk   rn   rp   rr   rt   r'   r#   r!   rW   rW   †   sÈ   € € € € € Ø€Ið
 Ôð /à	Ø.Ð.Ð.ñ 
ŒØ.ðð ð ð ð&ð &ð &ð &ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð&ð &ð &ð &ð'ð 'ð 'ð 'ð 'ð 'r#   rW   a3  
    v?+                                                   # optional leading v
    (?a:
        (?:(?P<epoch>[0-9]+)!)?+                          # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*+)                 # release segment
        (?P<pre>                                          # pre-release
            [._-]?+
            (?P<pre_l>alpha|a|beta|b|preview|pre|c|rc)
            [._-]?+
            (?P<pre_n>[0-9]+)?
        )?+
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [._-]?
                (?P<post_l>post|rev|r)
                [._-]?
                (?P<post_n2>[0-9]+)?
            )
        )?+
        (?P<dev>                                          # dev release
            [._-]?+
            (?P<dev_l>dev)
            [._-]?+
            (?P<dev_n>[0-9]+)?
        )?+
    )
    (?a:\+
        (?P<local>                                        # local version
            [a-z0-9]+
            (?:[._-][a-z0-9]+)*+
        )
    )?+
z*+Ú*z?+ú?Úcpython)r   é   é   Úpypy)r   r   r   )r   r   z[a-z0-9]+(?:[._-][a-z0-9]+)*z.0123456789Úvaluer]   c               ól   — | pd}t          |t          ¦  «        r|dk    r|S d|› �}t          |¦  «        ‚)Nr   z(epoch must be non-negative integer, got ©re   r]   r5   )r‚   rA   Úmsgs      r!   Ú_validate_epochr†   	  sE   € ØˆJ�Q€EÝ�%�ÑÔð  %¨1¢* *ØˆØ
<°UÐ
<Ð
<€CÝ
˜Ñ
Ô
Ðr#   útuple[int, ...]c               ó¼   — | €dn| }t          |t          ¦  «        r.t          |¦  «        dk    rt          d„ |D ¦   «         ¦  «        r|S d|› �}t	          |¦  «        ‚)N)r   r   c              3  óL   K  — | ]}t          |t          ¦  «        o|d k    V — Œ dS )r   N)re   r]   )Ú.0Úis     r!   ú	<genexpr>z$_validate_release.<locals>.<genexpr>  s5   è è € Ð?Ð?°!•
˜1�cÑ"Ô"Ð- q¨A¢vÐ?Ð?Ð?Ð?Ð?Ð?r#   z@release must be a non-empty tuple of non-negative integers, got )re   ÚtupleÚlenÚallr5   )r‚   rB   r…   s      r!   Ú_validate_releaser�     ss   € Ø�mˆdˆd¨€Gå�7�EÑ"Ô"ðå�‰LŒL˜1ÒÐÝÐ?Ð?°wÐ?Ñ?Ô?Ñ?Ô?ð ð ˆØ
VÈWÐ
VÐ
V€CÝ
˜Ñ
Ô
Ðr#   ú*tuple[Literal['a', 'b', 'rc'], int] | Nonec               ó  — | €| S t          | t          ¦  «        r_t          | ¦  «        dk    rL| \  }}t          |t          ¦  «        r2t	          |¦  «        x}dv rt          |t
          ¦  «        r
|dk    r||fS d| › �}t          |¦  «        ‚)Nr   >   r)   r*   r+   r   z=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got )re   r�   rŽ   r   r7   r]   r5   )r‚   rM   ÚnumberÚ
normalizedr…   s        r!   Ú_validate_prer•     s¦   € Ø€}ØˆÝ�%�ÑÔð 
(¥C¨¡J¤J°!¢O OØ‰ˆ�õ �v�sÑ#Ô#ð	(å,¨VÑ4Ô4Ð4�Ð9IÐIÐIÝ˜6¥3Ñ'Ô'ð Jà˜!’�ð  Ð'Ð'Ø
QÈ%Ð
QÐ
Q€CÝ
˜Ñ
Ô
Ðr#   ú"tuple[Literal['post'], int] | Nonec               óp   — | €| S t          | t          ¦  «        r
| dk    rd| fS d| › �}t          |¦  «        ‚)Nr   r,   z'post must be non-negative integer, got r„   ©r‚   r…   s     r!   Ú_validate_postr™   /  sK   € Ø€}ØˆÝ�%�ÑÔð  %¨1¢* *Ø˜ˆÐØ
;°EÐ
;Ð
;€CÝ
˜Ñ
Ô
Ðr#   ú!tuple[Literal['dev'], int] | Nonec               óp   — | €| S t          | t          ¦  «        r
| dk    rd| fS d| › �}t          |¦  «        ‚)Nr   rD   z&dev must be non-negative integer, got r„   r˜   s     r!   Ú_validate_devrœ   8  sK   € Ø€}ØˆÝ�%�ÑÔð  %¨1¢* *Ø�uˆ~ÐØ
:°5Ð
:Ð
:€CÝ
˜Ñ
Ô
Ðr#   úLocalType | Nonec               ó®   — | €| S t          | t          ¦  «        r)t                               | ¦  «        rt	          | ¦  «        S d| ›�}t          |¦  «        ‚)Nz*local must be a valid version string, got )re   r   Ú_LOCAL_PATTERNÚ	fullmatchÚ_parse_local_versionr5   r˜   s     r!   Ú_validate_localr¢   A  s\   € Ø€}ØˆÝ�%�ÑÔð +¥.×":Ò":¸5Ñ"AÔ"Að +Ý# EÑ*Ô*Ð*Ø
@°uÐ
@Ð
@€CÝ
˜Ñ
Ô
Ðr#   c                  óL   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dS )Ú_Versionr]   rA   r‡   rB   rš   rD   r‘   r0   r–   r,   r�   rF   NrG   r'   r#   r!   r¤   r¤   K  sW   € € € € € € Ø€J€J�JØÐÐÑØ*Ð*Ð*Ñ*Ø3Ð3Ð3Ñ3Ø,Ð,Ð,Ñ,ØÐÐÑÐÐr#   r¤   c                  ó`  ‡ — e Zd ZU dZdZdZ	  ej        dez   dz   ej	        ej
        z  ¦  «        Zded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   dQd„ZeddddddœdRd&„¦   «         ZdSd)„ZedTd+„¦   «         ZdUd,„ZdVˆ fd0„ZdVˆ fd1„ZdWˆ fd3„ZdVˆ fd4„ZdVˆ fd5„ZdWˆ fd6„ZdXd8„ZdYd:„Ze ed;¦  «        dZd=„¦   «         ¦   «         Zej         ed;¦  «        d[d?„¦   «         ¦   «         Zd\d@„Zd\dA„Z ed\dB„¦   «         Z!edUdC„¦   «         Z"ed]dD„¦   «         Z#ed^dE„¦   «         Z$ed_dF„¦   «         Z%ed_dG„¦   «         Z&ed`dH„¦   «         Z'ed\dI„¦   «         Z(ed\dJ„¦   «         Z)edadK„¦   «         Z*edadL„¦   «         Z+edadM„¦   «         Z,edUdN„¦   «         Z-edUdO„¦   «         Z.edUdP„¦   «         Z/ˆ xZ0S )br6   aÄ  This 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
    <Version('1.0a5')>
    >>> v2
    <Version('1.0')>
    >>> 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]   r§   r‡   r­   rš   r¦   r‘   r¬   r–   r«   r�   rª   r@   r¨   zCmpKey | Noner©   rR   r   r   ÚNonec                óº  — 	 t                                |¦  «        }n!# t          $ r t          d|›�¦  «        d‚w xY w|rÄ	 t	          t          t          |                     d¦  «        ¦  «        ¦  «        | _        nU# t          $ r t          d|›�¦  «        d‚t          $ r, d|                     d¦  «        v rt          d|›�¦  «        d‚‚ w xY wd| _        d| _        d| _        d| _        d| _        d| _        d| _        dS 	 | j                             |¦  «        }n!# t          $ r t          d|›�¦  «        d‚w xY w|st          d|›�¦  «        ‚|                     d¦  «        r"t          |                     d¦  «        ¦  «        nd| _        t	          t          t          |                     d¦  «                             d¦  «        ¦  «        ¦  «        | _        t+          |                     d¦  «        |                     d	¦  «        ¦  «        | _        t+          |                     d
¦  «        |                     d¦  «        p|                     d¦  «        ¦  «        | _        t+          |                     d¦  «        |                     d¦  «        ¦  «        | _        t-          |                     d¦  «        ¦  «        | _        d| _        d| _        dS )aC  Initialize 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.
        zInvalid version: Nú.Ú r   rA   rB   Úpre_lÚpre_nÚpost_lÚpost_n1Úpost_n2Údev_lÚdev_nrF   )Ú_SIMPLE_VERSION_INDICATORSÚ
issupersetÚ	TypeErrorr5   r�   Úmapr]   Úsplitr­   ÚAttributeErrorÚ
ValueErrorr§   r¬   r«   r¦   rª   r©   r¨   Ú_regexr    ÚgroupÚ_parse_letter_versionr¡   )r[   rR   Ú	is_simpleÚmatchs       r!   Ú__init__zVersion.__init__˜  sâ  € ð	LÝ2×=Ò=¸gÑFÔFˆIˆIøÝð 	Lð 	Lð 	LÝ Ð!@°WÐ!@Ð!@ÑAÔAÀtÐKð	Løøøð ð 	ðÝ %¥c­#¨w¯}ª}¸SÑ/AÔ/AÑ&BÔ&BÑ CÔ C�”�øÝ!ð Pð Pð PÝ$Ð%D¸Ð%DÐ%DÑEÔEÈ4ÐOÝð ð ð ð ˜Ÿš sÑ+Ô+Ð+Ð+Ý(Ð)H¸WÐ)HÐ)HÑIÔIÈtÐSàðøøøð ˆDŒKØˆDŒIØˆDŒJØˆDŒIØˆDŒKØ"ˆDŒOØ#ˆDÔØˆFð	LØ”K×)Ò)¨'Ñ2Ô2ˆEˆEøÝð 	Lð 	Lð 	LÝ Ð!@°WÐ!@Ð!@ÑAÔAÀtÐKð	Løøøàð 	BÝ Ð!@°WÐ!@Ð!@ÑAÔAÐAØ38·;²;¸wÑ3GÔ3GÐN•c˜%Ÿ+š+ gÑ.Ô.Ñ/Ô/Ð/ÈQˆŒÝ�c¥# u§{¢{°9Ñ'=Ô'=×'CÒ'CÀCÑ'HÔ'HÑIÔIÑJÔJˆŒõ *¨%¯+ª+°gÑ*>Ô*>ÀÇÂÈGÑ@TÔ@TÑUÔUˆŒ	Ý*Ø�KŠK˜Ñ!Ô! 5§;¢;¨yÑ#9Ô#9Ð#S¸U¿[º[ÈÑ=SÔ=Sñ
ô 
ˆŒ
õ *¨%¯+ª+°gÑ*>Ô*>ÀÇÂÈGÑ@TÔ@TÑUÔUˆŒ	Ý*¨5¯;ª;°wÑ+?Ô+?Ñ@Ô@ˆŒð ˆŒØˆÔÐÐs!   ‚ �;Á:A< Á<ACÄD  Ä D>r   N)rA   r0   r,   rD   rF   rA   rB   r0   rC   r,   rD   rF   rE   r   c               ót  — t          |¦  «        }t          |¦  «        }|�t          |¦  «        nd}	|�t          |¦  «        nd}
|�t	          |¦  «        nd}|�t          |¦  «        nd}|                      | ¦  «        }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('1.2.3')>
        >>> Version.from_parts(release=(0,1,0), pre=("b", 1))
        <Version('0.1.0b1')>

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

        .. versionadded:: 26.1
        N)r†   r�   r•   r™   rœ   r¢   Ú__new__r©   r¨   r§   r­   r¬   r«   r¦   rª   )ÚclsrA   rB   r0   r,   rD   rF   r§   r­   r¬   r«   r¦   rª   Únew_versions                 r!   Ú
from_partszVersion.from_partsÔ  sÏ   € õ8 ! Ñ'Ô'ˆÝ$ WÑ-Ô-ˆØ%( _�}˜SÑ!Ô!Ð!¸$ˆØ(,Ð(8•˜tÑ$Ô$Ð$¸dˆØ%( _�}˜SÑ!Ô!Ð!¸$ˆØ+0Ð+<• Ñ'Ô'Ð'À$ˆà—k’k #Ñ&Ô&ˆØ!%ˆÔØ"&ˆÔØ#ˆÔØ'ˆÔØˆÔØ!ˆÔØˆÔØ#ˆÔàÐr#   r   úUnpack[_VersionReplace]c                ó¼  — d|v rt          |d         ¦  «        n| j        }d|v rt          |d         ¦  «        n| j        }d|v rt	          |d         ¦  «        n| j        }d|v rt          |d         ¦  «        n| j        }d|v rt          |d         ¦  «        n| j	        }d|v rt          |d         ¦  «        n| j        }|| j        k    r9|| j        k    r.|| j        k    r#|| j        k    r|| j	        k    r|| j        k    r| 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))
        <Version('1.2.3a1')>

        :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.
        rA   rB   r0   r,   rD   rF   N)r†   r§   r�   r­   r•   r¬   r™   r«   rœ   r¦   r¢   rª   Ú	__class__rÈ   r©   r¨   )	r[   r   rA   rB   r0   r,   rD   rF   rÊ   s	            r!   Ú__replace__zVersion.__replace__  sŠ  € ð2 5<¸vÐ4EÐ4E•  w¤Ñ0Ô0Ð0È4Ì;ˆð ˜FÐ"Ð"õ ˜f YÔ/Ñ0Ô0Ð0à”ð 	ð
 /4°v¨o¨o�m˜F 5œMÑ*Ô*Ð*À4Ä9ˆØ17¸6Ð1AÐ1A�~˜f VœnÑ-Ô-Ð-ÀtÄzˆØ.3°v¨o¨o�m˜F 5œMÑ*Ô*Ð*À4Ä9ˆØ4;¸vÐ4EÐ4E•  w¤Ñ0Ô0Ð0È4Ì;ˆð �T”[Ò Ð Ø˜4œ=Ò(Ð(Ø�t”yÒ Ð Ø˜œ
Ò"Ð"Ø�t”yÒ Ð Ø˜œÒ$Ð$àˆKà”n×,Ò,¨T¬^Ñ<Ô<ˆØ!%ˆÔØ"&ˆÔØ"ˆÔØ&ˆÔØˆÔØ ˆÔØˆÔØ"ˆÔàÐr#   ÚCmpKeyc                óŒ   — | j         €7t          | j        | j        | j        | j        | j        | j        ¦  «        | _         | j         S r;   )r©   Ú_cmpkeyr§   r­   r¬   r«   r¦   rª   rZ   s    r!   r\   zVersion._key=  sC   € àŒ?Ð"Ý%Ø”Ø”Ø”	Ø”
Ø”	Ø”ñô ˆDŒOð ŒÐr#   c                óÌ   — | j         x}�|S | j        x}€9t          | j        | j        | j        | j        | j        | j        ¦  «        x| _        }t          |¦  «        x| _         }|S r;   )
r¨   r©   rÒ   r§   r­   r¬   r«   r¦   rª   r_   )r[   Úcached_hashÚkeys      r!   r`   zVersion.__hash__L  st   € ØÔ+Ð+ˆKÐ8ØÐà”?Ð"ˆCÐ+Ý$+Ø”Ø”Ø”	Ø”
Ø”	Ø”ñ%ô %ð ˆDŒO˜cõ *.¨c©¬Ð2ˆÔ˜;ØÐr#   ra   rW   rb   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k     S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   Úsuperrh   ©r[   ra   rÎ   s     €r!   rh   zVersion.__lt__^  óÇ   ø€ Ý�e�WÑ%Ô%ð 	6ØŒÐ&Ý")Ø”KØ”MØ”IØ”JØ”IØ”Kñ#ô #�”ð ÔÐ'Ý#*Ø”LØ”NØ”JØ”KØ”JØ”Lñ$ô $�Ô ð ”? UÔ%5Ò5Ð5å˜%¥Ñ.Ô.ð 	"Ý!Ð!å‰wŒw�~Š~˜eÑ$Ô$Ð$r#   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k    S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   r×   rk   rØ   s     €r!   rk   zVersion.__le__y  óÇ   ø€ Ý�e�WÑ%Ô%ð 	7ØŒÐ&Ý")Ø”KØ”MØ”IØ”JØ”IØ”Kñ#ô #�”ð ÔÐ'Ý#*Ø”LØ”NØ”JØ”KØ”JØ”Lñ$ô $�Ô ð ”? eÔ&6Ò6Ð6å˜%¥Ñ.Ô.ð 	"Ý!Ð!å‰wŒw�~Š~˜eÑ$Ô$Ð$r#   r   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k    S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   r×   rn   rØ   s     €r!   rn   zVersion.__eq__”  rÛ   r#   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k    S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   r×   rp   rØ   s     €r!   rp   zVersion.__ge__¯  rÛ   r#   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k    S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   r×   rr   rØ   s     €r!   rr   zVersion.__gt__Ê  rÙ   r#   c                óÀ  •— t          |t          ¦  «        rŒ| j        €7t          | j        | j        | j        | j        | j        | j	        ¦  «        | _        |j        €7t          |j        |j        |j        |j        |j        |j	        ¦  «        |_        | j        |j        k    S t          |t          ¦  «        st          S t          ¦   «                              |¦  «        S r;   )re   r6   r©   rÒ   r§   r­   r¬   r«   r¦   rª   rW   rf   r×   rt   rØ   s     €r!   rt   zVersion.__ne__å  rÛ   r#   úutuple[int, tuple[int, ...], tuple[str, int] | None, tuple[str, int] | None, tuple[str, int] | None, LocalType | None]c                óN   — | j         | j        | j        | j        | j        | j        fS r;   )r§   r­   r¬   r«   r¦   rª   rZ   s    r!   Ú__getstate__zVersion.__getstate__   s,   € ð ŒKØŒMØŒIØŒJØŒIØŒKð
ð 	
r#   Ústatec                ó2  — d | _         d | _        t          |t          ¦  «        rít	          |¦  «        dk    r)|\  | _        | _        | _        | _        | _	        | _
        d S t	          |¦  «        dk    rž|\  }}t          |t          ¦  «        r„|d         | _        |d         | _        |                     d¦  «        | _        |                     d¦  «        | _        |                     d¦  «        | _	        |                     d¦  «        | _
        d S t          |t          ¦  «        ra|                     d	¦  «        }|�J|j        | _        |j        | _        |j        | _        |j        | _        |j        | _	        |j        | _
        d S t'          d
|›�¦  «        ‚)Né   r   r§   r­   r¬   r«   r¦   rª   Ú_versionzCannot restore Version from )r©   r¨   re   r�   rŽ   r§   r­   r¬   r«   r¦   rª   ÚdictrQ   rA   rB   r0   r,   rD   rF   r¼   )r[   rã   Ú_Ú	slot_dictÚ
version_nts        r!   Ú__setstate__zVersion.__setstate__  st  € ð ˆŒØˆÔå�e�UÑ#Ô#ð 	Ý�5‰zŒz˜QŠˆð ñØ”KØ”MØ”IØ”JØ”IØ”Kà�Ý�5‰zŒz˜QŠˆà$‘��9Ý˜i­Ñ.Ô.ð Ø"+¨HÔ"5�D”KØ$-¨jÔ$9�D”MØ )§¢¨fÑ 5Ô 5�D”IØ!*§¢¨wÑ!7Ô!7�D”JØ )§¢¨fÑ 5Ô 5�D”IØ"+§-¢-°Ñ"9Ô"9�D”KØ�FÝ�e�TÑ"Ô"ð 	ð Ÿš :Ñ.Ô.ˆJØÐ%Ø(Ô.�”Ø *Ô 2�”Ø&œN�”	Ø'œ_�”
Ø&œN�”	Ø(Ô.�”Ø�åÐ@°uÐ@Ð@ÑAÔAÐAr#   z4Version._version is private and will be removed soonr¤   c                óf   — t          | j        | j        | j        | j        | j        | j        ¦  «        S r;   )r¤   r§   r­   r¦   r¬   r«   rª   rZ   s    r!   ræ   zVersion._versionC  s/   € õ ØŒK˜œ¨¬	°4´9¸d¼jÈ$Ì+ñ
ô 
ð 	
r#   r‚   c                ó²   — |j         | _        |j        | _        |j        | _        |j        | _        |j        | _	        |j
        | _        d | _        d | _        d S r;   )rA   r§   rB   r­   rD   r¦   r0   r¬   r,   r«   rF   rª   r©   r¨   )r[   r‚   s     r!   ræ   zVersion._versionJ  sO   € ð ”kˆŒØœˆŒØ”IˆŒ	Ø”IˆŒ	Ø”ZˆŒ
Ø”kˆŒØˆŒØˆÔÐÐr#   c                óB   — d| j         j        › dt          | ¦  «        ›d�S )z€A representation of the Version that shows all internal state.

        >>> Version('1.0.0')
        <Version('1.0.0')>
        ú<ú(z)>)rÎ   rH   r   rZ   s    r!   Ú__repr__zVersion.__repr__V  s(   € ð =�4”>Ô*Ð<Ð<­S°©Y¬YÐ<Ð<Ð<Ð<r#   c                ól  — d                      t          t          | j        ¦  «        ¦  «        }| j        r| j        › d|› �}| j        �0|d                      t          t          | j        ¦  «        ¦  «        z  }| j        �|d| j        › �z  }| j        �|d| j        › �z  }| j        �|d| j        › �z  }|S )z}A string representation of the version that can be round-tripped.

        >>> str(Version("1.0a5"))
        '1.0a5'
        r±   ú!Nr²   z.postz.devú+)	Újoinr½   r   rB   rA   r0   r,   rD   rF   )r[   rR   s     r!   Ú__str__zVersion.__str__^  sÐ   € ð —(’(�3�s D¤LÑ1Ô1Ñ2Ô2ˆð Œ:ð 	0ØœÐ/Ð/ gÐ/Ð/ˆGð Œ8ÐØ�r—w’w�s¥3¨¬Ñ1Ô1Ñ2Ô2Ñ2ˆGð Œ9Ð ØÐ*˜tœyÐ*Ð*Ñ*ˆGð Œ8ÐØÐ(˜dœhÐ(Ð(Ñ(ˆGð Œ:Ð!ØÐ'˜4œ:Ð'Ð'Ñ'ˆGàˆr#   c                ó    — t          | ¦  «        S )z Internal property for match_args©r   rZ   s    r!   r®   zVersion._str}  s   € õ �4‰yŒyÐr#   c                ó   — | j         S )zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )r§   rZ   s    r!   rA   zVersion.epoch‚  s   € ð Œ{Ðr#   c                ó   — | j         S )ad  The 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.
        )r­   rZ   s    r!   rB   zVersion.release�  s   € ð Œ}Ðr#   c                ó   — | j         S )a  The 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)
        )r¬   rZ   s    r!   r0   zVersion.pre�  s   € ð ŒyÐr#   c                ó.   — | j         r| j         d         ndS )z™The post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        é   N)r«   rZ   s    r!   r,   zVersion.post¬  s   € ð !%¤
Ð4ˆtŒz˜!Œ}ˆ}°Ð4r#   c                ó.   — | j         r| j         d         ndS )z•The development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        rý   N)r¦   rZ   s    r!   rD   zVersion.dev·  s   € ð  $œyÐ2ˆtŒy˜Œ|ˆ|¨dÐ2r#   c                ó\   — | j         r$d                     d„ | j         D ¦   «         ¦  «        S dS )zŸThe local version segment of the version.

        >>> print(Version("1.2.3").local)
        None
        >>> Version("1.2.3+abc").local
        'abc'
        r±   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r;   rø   )rŠ   Úxs     r!   rŒ   z Version.local.<locals>.<genexpr>Ì  s(   è è € Ð8Ð8 q�C ™FœFÐ8Ð8Ð8Ð8Ð8Ð8r#   N)rª   rõ   rZ   s    r!   rF   zVersion.localÂ  s6   € ð Œ;ð 	Ø—8’8Ð8Ð8¨D¬KÐ8Ñ8Ô8Ñ8Ô8Ð8à�4r#   c                óT   — t          | ¦  «                             dd¦  «        d         S )aq  The 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'
        rô   rý   r   )r   r¾   rZ   s    r!   ÚpubliczVersion.publicÐ  s#   € õ �4‰yŒy�Š˜s AÑ&Ô& qÔ)Ð)r#   c                ó†   — d                      t          t          | j        ¦  «        ¦  «        }| j        r| j        › d|› �n|S )a  The "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.
        r±   ró   )rõ   r½   r   rB   rA   )r[   Úrelease_segments     r!   Úbase_versionzVersion.base_versionà  sC   € ð$ Ÿ(š(¥3¥s¨D¬LÑ#9Ô#9Ñ:Ô:ˆØ48´JÐS�$”*Ð0Ð0˜Ð0Ð0Ð0ÀOÐSr#   c                ó&   — | j         dup| j        duS )aT  Whether 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)rD   r0   rZ   s    r!   Úis_prereleasezVersion.is_prereleaseõ  s   € ð Œx˜tÐ#Ð; t¤x°tÐ';Ð;r#   c                ó   — | j         duS )zªWhether this version is a post-release.

        >>> Version("1.2.3").is_postrelease
        False
        >>> Version("1.2.3.post1").is_postrelease
        True
        N)r,   rZ   s    r!   Úis_postreleasezVersion.is_postrelease  s   € ð Œy Ð$Ð$r#   c                ó   — | j         duS )z®Whether this version is a development release.

        >>> Version("1.2.3").is_devrelease
        False
        >>> Version("1.2.3.dev1").is_devrelease
        True
        N)rD   rZ   s    r!   Úis_devreleasezVersion.is_devrelease  s   € ð Œx˜tÐ#Ð#r#   c                óP   — t          | j        ¦  «        dk    r| j        d         ndS )z‘The first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1

        .. versionadded:: 20.0
        rý   r   ©rŽ   rB   rZ   s    r!   ÚmajorzVersion.major  s(   € õ #& d¤lÑ"3Ô"3°qÒ"8Ð"8ˆtŒ|˜AŒˆ¸aÐ?r#   c                óP   — t          | j        ¦  «        dk    r| j        d         ndS )z»The second item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").minor
        2
        >>> Version("1").minor
        0

        .. versionadded:: 20.0
        r   rý   r   r  rZ   s    r!   ÚminorzVersion.minor'  ó(   € õ #& d¤lÑ"3Ô"3°qÒ"8Ð"8ˆtŒ|˜AŒˆ¸aÐ?r#   c                óP   — t          | j        ¦  «        dk    r| j        d         ndS )zºThe third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0

        .. versionadded:: 20.0
        r   r   r   r  rZ   s    r!   ÚmicrozVersion.micro4  r  r#   )rR   r   r   r¯   )rA   r]   rB   r‡   r0   rC   r,   r@   rD   r@   rF   rE   r   r   )r   rÌ   r   r   )r   rÐ   ru   rv   rw   )r   rà   )rã   r   r   r¯   )r   r¤   )r‚   r¤   r   r¯   )r   r   ©r   r‡   )r   r‘   )r   r@   )r   rE   )r   rb   )1rH   rI   rJ   rU   rx   Ú__match_args__ÚreÚcompiler4   ÚVERBOSEÚ
IGNORECASErÁ   rK   rÆ   ÚclassmethodrË   rÏ   r{   r\   r`   rh   rk   rn   rp   rr   rt   râ   rë   r(   ræ   Úsetterrñ   rö   r®   rA   rB   r0   r,   rD   rF   r  r  r  r
  r  r  r  r  Ú__classcell__©rÎ   s   @r!   r6   r6   T  sË  ø€ € € € € € ð"ð "ðH	€Ið €Nðð ˆRŒZ˜ Ñ0°6Ñ9¸2¼:ÈÌÑ;UÑVÔV€Fà€K€K�KØÐÐÑØ+Ð+Ð+Ñ+Ø4Ð4Ð4Ñ4Ø-Ð-Ð-Ñ-ØÐÐÑàÐÐÑØÐÐÑð: ð : ð : ð : ðx ð à&*ØØØ ð,ð ,ð ,ð ,ð ,ñ „[ð,ð\8ð 8ð 8ð 8ðt ð
ð 
ð 
ñ „Xð
ðð ð ð ð$%ð %ð %ð %ð %ð %ð6%ð %ð %ð %ð %ð %ð6%ð %ð %ð %ð %ð %ð6%ð %ð %ð %ð %ð %ð6%ð %ð %ð %ð %ð %ð6%ð %ð %ð %ð %ð %ð6
ð 
ð 
ð 
ð,+Bð +Bð +Bð +BðZ Ø€[ÐGÑHÔHð
ð 
ð 
ñ IÔHñ „Xð
ð
 „_Ø€[ÐGÑHÔHð ð  ð  ñ IÔHñ „_ð ð=ð =ð =ð =ðð ð ð ð> ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ð5ð 5ð 5ñ „Xð5ð ð3ð 3ð 3ñ „Xð3ð ðð ð ñ „Xðð ð*ð *ð *ñ „Xð*ð ðTð Tð Tñ „XðTð( ð<ð <ð <ñ „Xð<ð  ð%ð %ð %ñ „Xð%ð ð$ð $ð $ñ „Xð$ð ð@ð @ð @ñ „Xð@ð ð
@ð 
@ð 
@ñ „Xð
@ð ð
@ð 
@ð 
@ñ „Xð
@ð 
@ð 
@ð 
@ð 
@r#   c                  ó@   ‡ — e Zd ZdZd	ˆ fd„Zed
ˆ fd„¦   «         Zˆ xZS )Ú_TrimmedReleaser'   rR   ústr | Versionr   r¯   c                ó8  •— t          |t          ¦  «        rb|j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _	        d S t          ¦   «                              |¦  «         d S r;   )re   r6   r§   r­   r¦   r¬   r«   rª   r©   r¨   r×   rÆ   )r[   rR   rÎ   s     €r!   rÆ   z_TrimmedRelease.__init__E  s„   ø€ Ý�g�wÑ'Ô'ð 		Ø!œ.ˆDŒKØ#Ô,ˆDŒMØœˆDŒIØœˆDŒIØ œˆDŒJØ!œ.ˆDŒKØ%Ô0ˆDŒOØ&Ô2ˆDÔØˆFÝ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!r#   r‡   c                óÎ   •— t          ¦   «         j        }t          |¦  «        }|}|dk    r)||dz
           dk    r|dz  }|dk    r||dz
           dk    °||k    r|n	|d|…         S )z°
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        rý   r   N)r×   rB   rŽ   )r[   ÚrelÚlen_releaser‹   rÎ   s       €r!   rB   z_TrimmedRelease.releaseR  sy   ø€ õ ‰gŒgŒoˆÝ˜#‘h”hˆØˆØ�!Šeˆe˜˜A ™Eœ
 aš˜Ø�‰FˆAð �!Šeˆe˜˜A ™Eœ
 aš˜à˜;Ò&Ð&ˆsˆs¨C°°°¬GÐ3r#   )rR   r!  r   r¯   r  )rH   rI   rJ   rx   rÆ   r{   rB   r  r  s   @r!   r   r   B  sl   ø€ € € € € Ø€Ið"ð "ð "ð "ð "ð "ð ð4ð 4ð 4ð 4ð 4ñ „Xð4ð 4ð 4ð 4ð 4r#   r   rE   r“   ú str | bytes | SupportsInt | NonerC   c                ó´   — | rB|                       ¦   «         } t                               | | ¦  «        } | t          |pd¦  «        fS |rdt          |¦  «        fS d S )Nr   r,   )rO   rP   rQ   r]   )rM   r“   s     r!   rÃ   rÃ   e  si   € ð ð (à—’‘”ˆõ
 '×*Ò*¨6°6Ñ:Ô:ˆð •s˜6˜; QÑ'Ô'Ð'Ð'àð #ð •s˜6‘{”{Ð"Ð"àˆ4r#   z[\._-]rF   c                ól   — | �1t          d„ t                               | ¦  «        D ¦   «         ¦  «        S dS )z`
    Takes a string like ``"abc.1.twelve"`` and turns it into
    ``("abc", 1, "twelve")``.
    Nc              3  ó„   K  — | ];}|                      ¦   «         s|                     ¦   «         nt          |¦  «        V — Œ<d S r;   )ÚisdigitrO   r]   )rŠ   Úparts     r!   rŒ   z'_parse_local_version.<locals>.<genexpr>†  sU   è è € ð 
ð 
àð !%§¢¡¤Ð=ˆD�JŠJ‰LŒLˆLµC¸±I´Ið
ð 
ð 
ð 
ð 
ð 
r#   )r�   Ú_local_version_separatorsr¾   )rF   s    r!   r¡   r¡   €  sM   € ð
 ÐÝð 
ð 
å1×7Ò7¸Ñ>Ô>ð
ñ 
ô 
ñ 
ô 
ð 	
ð ˆ4r#   rý   r   )r)   r*   r+   éÿÿÿÿr   rA   rB   r0   rD   rÐ   c                óÌ  — t          |¦  «        }|}|r%||dz
           dk    r|dz  }|r||dz
           dk    °||k    r|n	|d|…         }|€|€|€|€
| |t          fS |€|€|�
t          d}
}	n'|€
t          d}
}	nt          |d                  |d         }
}	|€dnd}|€dn|d         }|€dnd}|€dn|d         }|	|
||||f}|€| ||fS t          d„ |D ¦   «         ¦  «        }| |||fS )a©  Build 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, '')))
    rý   r   Nc              3  óZ   K  — | ]&}t          |t          ¦  «        r|d fnt          |fV — Œ'dS )r²   N)re   r]   Ú_LOCAL_STR_RANK)rŠ   Úsegs     r!   rŒ   z_cmpkey.<locals>.<genexpr>á  sO   è è € ð $ð $ØJM•Z ¥SÑ)Ô)ÐEˆˆbˆ	ˆ	µÀÐ/Eð$ð $ð $ð $ð $ð $r#   )rŽ   Ú_STABLE_SUFFIXÚ_PRE_RANK_DEV_ONLYÚ_PRE_RANK_STABLEÚ	_PRE_RANKr�   )rA   rB   r0   r,   rD   rF   r%  r‹   ÚtrimmedÚpre_rankr´   Ú	post_rankÚpost_nÚdev_rankr¹   ÚsuffixÚ	cmp_locals                    r!   rÒ   rÒ   š  si  € õT �g‘,”,€KØ€AØ
ð �˜˜A™” !Ò#Ð#Ø	ˆQ‰ˆð ð �˜˜A™” !Ò#Ð#à˜kÒ)Ð)ˆgˆg¨w°r¸°r¬{€Gð €{�t�|¨¨¸¸Ø�g�~Ð-Ð-à
€{�t�|¨¨å,¨a�%ˆˆØ	ˆÝ*¨A�%ˆˆå# C¨¤FÔ+¨S°¬V�%ˆà�\�� q€IØ�,ˆQˆQ D¨¤G€Fà�Kˆqˆq Q€HØ�ˆAˆA # a¤&€Eà˜˜y¨&°(¸EÐB€Fà€}Ø�g˜vÐ%Ð%å#ð $ð $ØQVð$ñ $ô $ñ ô €Ið �'˜6 9Ð,Ð,r#   )r   r   r   r   )r   r9   )rM   r   r   r   )rR   r   r   r6   )r‚   r   r   r]   )r‚   r   r   r‡   )r‚   r   r   r‘   )r‚   r   r   r–   )r‚   r   r   rš   )r‚   r   r   r�   )rM   rE   r“   r&  r   rC   )rF   rE   r   r�   )rA   r]   rB   r‡   r0   rC   r,   rC   rD   rC   rF   r�   r   rÐ   )FrU   Ú
__future__r   r  Úsysry   r   r   r   r   r   r	   r
   rz   Útyping_extensionsr   r   Úversion_infor   r   r(   r$   rP   r<   r=   r�   r]   r   Ú	LocalTypeÚCmpLocalTypeÚ	CmpSuffixrÐ   rb   ÚVersionComparisonMethodr?   r7   r8   rÀ   r5   rW   Ú_VERSION_PATTERNÚreplaceÚ_VERSION_PATTERN_OLDÚimplementationÚnamer4   r  r  ÚASCIIrŸ   Ú	frozensetrº   r†   r�   r•   r™   rœ   r¢   r¤   r6   r   rÃ   r,  r¡   r5  r3  r4  r0  r2  rÒ   r'   r#   r!   ú<module>rL     s  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 
€
€
€
Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
Ôð /Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.àÔ�wÒÐØ2Ð2Ð2Ð2Ð2Ð2Ð2ØÔð Ø;Ð;Ð;Ð;Ð;Ð;Ð;àÐÐÐØ€O€O€Oðð ð ð ð" ØØ	ØØØØ	ðð Ð ð UÐ
TÐ
T€ðð ð ð ð �%˜˜S˜”/ 3Ð&Ô'€	à�U˜3 ˜8”_ cÐ)Ô*€Ø�#�s˜C  c¨3Ð.Ô/€	Ø	Ø	ˆ#ˆu�S˜#�XŒ 	Ð
)Ô*Ø	ˆ#ˆu�S˜#�XŒ 	¨<Ð
7Ô8ð:ô
€ð # F¨FÐ#3°TÐ#9Ô:Ð ðð ð ð ð �i uð ñ ô ð ð5ð 5ð 5ð 5ð*ð ð ð ðð ð ð ð �Zñ ô ð ð3'ð 3'ð 3'ð 3'ð 3'ñ 3'ô 3'ð 3'ðt"Ð ðH (×/Ò/°°cÑ:Ô:×BÒBÀ4ÈÑMÔMÐ ð 	ÔÔ 9Ò,Ð,°Ô1AÀJÒ1NÐ1NØÔÔ 6Ò)Ð)¨cÔ.>ÀÒ.LÐ.LØ
Ô˜'Ò!Ð!ð Ðð 
ð ðð$ �”Ð;¸R¼]ÈRÌXÑ=UÑVÔV€ð '˜Y }Ñ5Ô5Ð ðð ð ð ð	ð 	ð 	ð 	ðð ð ð ð$ð ð ð ðð ð ð ðð ð ð ðð ð ð ð ˆzñ ô ð ðk@ð k@ð k@ð k@ð k@ˆlñ k@ô k@ð k@ð\ 4ð  4ð  4ð  4ð  4�gñ  4ô  4ð  4ðFð ð ð ð0 '˜BœJ yÑ1Ô1Ð ð
ð 
ð 
ð 
ð ˜! 1Ð%Ð%€	ØÐ ØÐ ð €ð # A q¨!¨Q°Ð2€ðJ-ð J-ð J-ð J-ð J-ð J-r#   