§
    ¢”jºU  ã                  ó  — U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZ d dlmZmZmZmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZmZm Z  dd
lm!Z! es e" ej#        dd¦  «        ¦  «        rVd dl$Z$e$j%        dk    rd dlm&Z& nd dl'm&Z& ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 ee)e,e1e2f         Z3de4d<   ee*e,e1e2f         Z5de4d<    G d„ d¦  «        Z6 e6¦   «         Z7ee7_8        e7j9        Z9e7j:        Z:e7j;        Z;dS )é    )ÚannotationsN)Útimegm)Ú	ContainerÚIterableÚSequence)ÚdatetimeÚ	timedeltaÚtimezone)ÚTYPE_CHECKINGÚAnyÚUnionÚcasté   )ÚPyJWSÚ_ALGORITHM_UNSETÚ_jws_global_obj)	ÚDecodeErrorÚExpiredSignatureErrorÚImmatureSignatureErrorÚInvalidAudienceErrorÚInvalidIssuedAtErrorÚInvalidIssuerErrorÚInvalidJTIErrorÚInvalidSubjectErrorÚMissingRequiredClaimError)ÚRemovedInPyjwt3WarningÚSPHINX_BUILDÚ )é   é
   )Ú	TypeAlias)ÚAllowedPrivateKeysÚAllowedPublicKeys)ÚPyJWK)ÚFullOptionsÚOptionsÚ
SigOptionsr!   ÚAllowedPrivateKeyTypesÚAllowedPublicKeyTypesc                  óþ   — e Zd ZdHdId„ZedJd„¦   «         ZdKd
„ZdHdLd„ZedddfdMd„Z		 	 dNdOd„Z
	 	 	 	 	 	 	 	 	 dPdQd1„ZdRd3„Z	 	 	 	 	 	 	 	 	 dPdSd5„Z	 	 	 	 dTdUd8„ZdVd;„Z	 dHdWd<„ZdXd=„ZdYd@„ZdYdA„ZdYdB„ZdCdDœdZdF„Zd[dG„ZdS )\ÚPyJWTNÚoptionsúOptions | NoneÚreturnÚNonec                óÂ   — |  |                       ¦   «         | _        |�|                      |¦  «        | _        t          |                      ¦   «         ¬¦  «        | _        d S )N)r,   )Ú_get_default_optionsr,   Ú_merge_optionsr   Ú_get_sig_optionsÚ_jws©Úselfr,   s     úZ/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/jwt/api_jwt.pyÚ__init__zPyJWT.__init__+   sX   € ØÐ!Ø×0Ò0Ñ2Ô2ˆŒØÐØ×.Ò.¨wÑ7Ô7ˆDŒLå $×"7Ò"7Ñ"9Ô"9Ð:Ñ:Ô:ˆŒ	ˆ	ˆ	ó    r%   c                 ó   — ddddddddg dddœS )NTF)Úverify_signatureÚ
verify_expÚ
verify_nbfÚ
verify_iatÚ
verify_audÚ
verify_issÚ
verify_subÚ
verify_jtiÚrequireÚ
strict_audÚenforce_minimum_key_length© rF   r9   r7   r1   zPyJWT._get_default_options3   s4   € ð !%ØØØØØØØØØØ*/ð
ð 
ð 	
r9   r'   c                óT   — | j         d         | j                              dd¦  «        dœS )Nr;   rE   F)r;   rE   ©r,   Úget)r6   s    r7   r3   zPyJWT._get_sig_optionsC   s6   € à $¤Ð-?Ô @Ø*.¬,×*:Ò*:Ø,¨eñ+ô +ð
ð 
ð 	
r9   c                ó´  — |€| j         S |                     dd¦  «        s¯|                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     dd¦  «        |d<   |                     d	d¦  «        |d	<   |                     d
d¦  «        |d
<   i | j         ¥|¥S )Nr;   Tr<   Fr=   r>   r?   r@   rA   rB   rH   r5   s     r7   r2   zPyJWT._merge_optionsK   sã   € Øˆ?Ø”<Ðð �{Š{Ð-¨tÑ4Ô4ð 	EØ$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø$+§K¢K°¸eÑ$DÔ$DˆG�LÑ!Ø*�$”,Ð* 'Ð*Ð*r9   TÚpayloadúdict[str, Any]Úkeyr(   Ú	algorithmú
str | NoneÚheadersúdict[str, Any] | NoneÚjson_encoderútype[json.JSONEncoder] | NoneÚsort_headersÚboolÚstrc                óì  — t          |t          ¦  «        st          d¦  «        ‚|                     ¦   «         }dD ]T}t          |                     |¦  «        t
          ¦  «        r*t          ||                              ¦   «         ¦  «        ||<   ŒUd|v r*t          |d         t          ¦  «        st          d¦  «        ‚|  	                    |||¬¦  «        }| j
                             ||||||¬¦  «        S )a¦  Encode the ``payload`` as JSON Web Token.

        :param payload: JWT claims, e.g. ``dict(iss=..., aud=..., sub=...)``
        :type payload: dict[str, typing.Any]
        :param key: a key suitable for the chosen algorithm:

            * for **asymmetric algorithms**: PEM-formatted private key, a multiline string
            * for **symmetric algorithms**: plain string, sufficiently long for security

        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPrivateKeys`
        :param algorithm: algorithm to sign the token with, e.g. ``"ES256"``.
            If ``headers`` includes ``alg``, it will be preferred to this parameter.
            If ``key`` is a :class:`PyJWK` object, by default the key algorithm will be used.
        :type algorithm: str or None
        :param headers: additional JWT header fields, e.g. ``dict(kid="my-key-id")``.
        :type headers: dict[str, typing.Any] or None
        :param json_encoder: custom JSON encoder for ``payload`` and ``headers``
        :type json_encoder: json.JSONEncoder or None

        :rtype: str
        :returns: a JSON Web Token

        :raises TypeError: if ``payload`` is not a ``dict``
        zGExpecting a dict object, as JWT only supports JSON objects as payloads.)ÚexpÚiatÚnbfÚisszIssuer (iss) must be a string.)rP   rR   )rT   )Ú
isinstanceÚdictÚ	TypeErrorÚcopyrI   r   r   ÚutctimetuplerV   Ú_encode_payloadr4   Úencode)	r6   rK   rM   rN   rP   rR   rT   Ú
time_claimÚjson_payloads	            r7   rb   zPyJWT.encodeZ   s  € õD ˜'¥4Ñ(Ô(ð 	Ýð,ñô ð ð —,’,‘.”.ˆØ/ð 	Qð 	QˆJå˜'Ÿ+š+ jÑ1Ô1µ8Ñ<Ô<ð QÝ&,¨W°ZÔ-@×-MÒ-MÑ-OÔ-OÑ&PÔ&P�˜
Ñ#øð �GÐÐ¥J¨w°u¬~½sÑ$CÔ$CÐÝÐ<Ñ=Ô=Ð=à×+Ò+ØØØ%ð ,ñ 
ô 
ˆð Œy×ÒØØØØØØ%ð  ñ 
ô 
ð 	
r9   Úbytesc                óV   — t          j        |d|¬¦  «                             d¦  «        S )zÚ
        Encode a given payload to the bytes to be signed.

        This method is intended to be overridden by subclasses that need to
        encode the payload in a different way, e.g. compress the payload.
        )ú,ú:)Ú
separatorsÚclszutf-8)ÚjsonÚdumpsrb   )r6   rK   rP   rR   s       r7   ra   zPyJWT._encode_payloadœ   s3   € õ ŒzØØ!Øð
ñ 
ô 
÷ Š&�‰/Œ/ð		r9   r   r   Újwtústr | bytesr)   Ú
algorithmsúSequence[str] | NoneÚverifyúbool | NoneÚdetached_payloadúbytes | NoneÚaudienceústr | Iterable[str] | NoneÚissuerústr | Container[str] | NoneÚsubjectÚleewayúfloat | timedeltaÚkwargsr   c                óÞ  — |r>t          j        dt          |                     ¦   «         ¦  «        › �t          d¬¦  «         |€d}n|                     dd¦  «        }|�"||k    rt          j        dt          d¬¦  «         |                      |¦  «        }d|i}| j         	                    |||||¬	¦  «        }|  
                    |¦  «        }|                      |||||
|	¬
¦  «         ||d<   |S )u$  Identical to ``jwt.decode`` except for return value which is a dictionary containing the token header (JOSE Header),
        the token payload (JWT Payload), and token signature (JWT Signature) on the keys "header", "payload",
        and "signature" respectively.

        :param jwt: the token to be decoded
        :type jwt: str or bytes
        :param key: the key suitable for the allowed algorithm
        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPublicKeys`

        :param algorithms: allowed algorithms, e.g. ``["ES256"]``

            .. warning::

               Do **not** compute the ``algorithms`` parameter based on
               the ``alg`` from the token itself, or on any other data
               that an attacker may be able to influence, as that might
               expose you to various vulnerabilities (see `RFC 8725 Â§2.1
               <https://www.rfc-editor.org/rfc/rfc8725.html#section-2.1>`_). Instead,
               either hard-code a fixed value for ``algorithms``, or
               configure it in the same place you configure the
               ``key``. Make sure not to mix symmetric and asymmetric
               algorithms that interpret the ``key`` in different ways
               (e.g. HS\* and RS\*).
        :type algorithms: typing.Sequence[str] or None

        :param jwt.types.Options options: extended decoding and validation options
            Refer to :py:class:`jwt.types.Options` for more information.

        :param audience: optional, the value for ``verify_aud`` check
        :type audience: str or typing.Iterable[str] or None
        :param issuer: optional, the value for ``verify_iss`` check
        :type issuer: str or typing.Container[str] or None
        :param leeway: a time margin in seconds for the expiration check
        :type leeway: float or datetime.timedelta
        :rtype: dict[str, typing.Any]
        :returns: Decoded JWT with the JOSE Header on the key ``header``, the JWS
         Payload on the key ``payload``, and the JWS Signature on the key ``signature``.
        zypassing additional kwargs to decode_complete() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: é   ©Ú
stacklevelNTr;   zàThe `verify` argument to `decode` does nothing in PyJWT 2.0 and newer. The equivalent is setting `verify_signature` to False in the `options` dictionary. This invocation has a mismatch between the kwarg and the option entry.)Úcategoryr€   )rM   ro   r,   rs   )ru   rw   rz   ry   rK   )ÚwarningsÚwarnÚtupleÚkeysr   rI   ÚDeprecationWarningr2   r4   Údecode_completeÚ_decode_payloadÚ_validate_claims)r6   rm   rM   ro   r,   rq   rs   ru   rw   ry   rz   r|   r;   Úmerged_optionsÚsig_optionsÚdecodedrK   s                    r7   r‡   zPyJWT.decode_complete®   sU  € ðr ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'Øðñ ô ð ð ˆ?Ø#ÐÐà&Ÿ{š{Ð+=¸tÑDÔDÐð
 Ð &Ð,<Ò"<Ð"<ÝŒMðYõ ,Øðñ ô ð ð ×,Ò,¨WÑ5Ô5ˆð Ð 0ð#
ˆð ”)×+Ò+ØØØ!ØØ-ð ,ñ 
ô 
ˆð ×&Ò& wÑ/Ô/ˆà×ÒØØØØØØð 	ñ 	
ô 	
ð 	
ð %ˆ�	ÑØˆr9   rŒ   c                óÐ   — 	 t          j        |d         ¦  «        }n%# t          $ r}t          d|› �¦  «        |‚d}~ww xY wt	          |t
          ¦  «        st          d¦  «        ‚|S )a  
        Decode the payload from a JWS dictionary (payload, signature, header).

        This method is intended to be overridden by subclasses that need to
        decode the payload in a different way, e.g. decompress compressed
        payloads.
        rK   zInvalid payload string: Nz-Invalid payload string: must be a json object)rk   ÚloadsÚ
ValueErrorr   r\   r]   )r6   rŒ   rK   Úes       r7   rˆ   zPyJWT._decode_payload  s�   € ð	EÝ&*¤j°¸Ô1CÑ&DÔ&DˆGˆGøÝð 	Eð 	Eð 	EÝÐ<¸Ð<Ð<Ñ=Ô=À1ÐDøøøøð	Eøøøå˜'¥4Ñ(Ô(ð 	OÝÐMÑNÔNÐNØˆs   ‚ �
?§:º?ú'AllowedPublicKeys | PyJWK | str | bytesc                ó  — |r>t          j        dt          |                     ¦   «         ¦  «        › �t          d¬¦  «         |                      |||||||||	|
¬¦
  «
        }t          t          t          t          f         |d         ¦  «        S )u¢  Verify the ``jwt`` token signature and return the token claims.

        :param jwt: the token to be decoded
        :type jwt: str or bytes
        :param key: the key suitable for the allowed algorithm
        :type key: str or bytes or PyJWK or :py:class:`jwt.algorithms.AllowedPublicKeys`

        :param algorithms: allowed algorithms, e.g. ``["ES256"]``
            If ``key`` is a :class:`PyJWK` object, allowed algorithms will default to the key algorithm.

            .. warning::

               Do **not** compute the ``algorithms`` parameter based on
               the ``alg`` from the token itself, or on any other data
               that an attacker may be able to influence, as that might
               expose you to various vulnerabilities (see `RFC 8725 Â§2.1
               <https://www.rfc-editor.org/rfc/rfc8725.html#section-2.1>`_). Instead,
               either hard-code a fixed value for ``algorithms``, or
               configure it in the same place you configure the
               ``key``. Make sure not to mix symmetric and asymmetric
               algorithms that interpret the ``key`` in different ways
               (e.g. HS\* and RS\*).
        :type algorithms: typing.Sequence[str] or None

        :param jwt.types.Options options: extended decoding and validation options
            Refer to :py:class:`jwt.types.Options` for more information.

        :param audience: optional, the value for ``verify_aud`` check
        :type audience: str or typing.Iterable[str] or None
        :param subject: optional, the value for ``verify_sub`` check
        :type subject: str or None
        :param issuer: optional, the value for ``verify_iss`` check
        :type issuer: str or typing.Container[str] or None
        :param leeway: a time margin in seconds for the expiration check
        :type leeway: float or datetime.timedelta
        :rtype: dict[str, typing.Any]
        :returns: the JWT claims
        zppassing additional kwargs to decode() is deprecated and will be removed in pyjwt version 3. Unsupported kwargs: r~   r   )rq   rs   ru   ry   rw   rz   rK   )
r‚   rƒ   r„   r…   r   r‡   r   r]   rV   r   )r6   rm   rM   ro   r,   rq   rs   ru   ry   rw   rz   r|   rŒ   s                r7   ÚdecodezPyJWT.decode,  s©   € ðr ð 	ÝŒMð>å',¨V¯[ª[©]¬]Ñ';Ô';ð>ð >õ 'Øðñ ô ð ð ×&Ò&ØØØØØØ-ØØØØð 'ñ 
ô 
ˆõ •D��c˜”N G¨IÔ$6Ñ7Ô7Ð7r9   úIterable[str] | str | NoneúContainer[str] | str | Nonec                ó<  — t          |t          ¦  «        r|                     ¦   «         }|�+t          |t          t          f¦  «        st          d¦  «        ‚|                      ||d         ¦  «         t          j        t          j
        ¬¦  «                             ¦   «         }d|v r|d         r|                      |||¦  «         d|v r|d         r|                      |||¦  «         d|v r|d	         r|                      |||¦  «         |d
         r|                      ||¦  «         |d         r,|                      |||                     dd¦  «        ¬¦  «         |d         r|                      ||¦  «         |d         r|                      |¦  «         d S d S )Nz+audience must be a string, iterable or NonerC   )ÚtzrY   r>   rZ   r=   rX   r<   r@   r?   rD   F©ÚstrictrA   rB   )r\   r	   Útotal_secondsrV   r   r^   Ú_validate_required_claimsr   Únowr
   ÚutcÚ	timestampÚ_validate_iatÚ_validate_nbfÚ_validate_expÚ_validate_issÚ_validate_audrI   Ú_validate_subÚ_validate_jti)r6   rK   r,   ru   rw   ry   rz   rœ   s           r7   r‰   zPyJWT._validate_claims{  sÉ  € õ �f�iÑ(Ô(ð 	,Ø×)Ò)Ñ+Ô+ˆFàÐ­
°8½cÅ8¸_Ñ(MÔ(MÐÝÐIÑJÔJÐJà×&Ò& w°¸	Ô0BÑCÔCÐCåŒl�hœlÐ+Ñ+Ô+×5Ò5Ñ7Ô7ˆà�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�GÐÐ ¨Ô 5ÐØ×Ò˜w¨¨VÑ4Ô4Ð4à�<Ô ð 	0Ø×Ò˜w¨Ñ/Ô/Ð/à�<Ô ð 	Ø×ÒØ˜¨'¯+ª+°lÀEÑ*JÔ*Jð ñ ô ð ð �<Ô ð 	1Ø×Ò˜w¨Ñ0Ô0Ð0à�<Ô ð 	(Ø×Ò˜wÑ'Ô'Ð'Ð'Ð'ð	(ð 	(r9   ÚclaimsúIterable[str]c                óX   — |D ]&}|                      |¦  «        €t          |¦  «        ‚Œ'd S ©N)rI   r   )r6   rK   r¦   Úclaims       r7   r›   zPyJWT._validate_required_claims¥  sB   € ð
 ð 	7ð 	7ˆEØ�{Š{˜5Ñ!Ô!Ð)Ý/°Ñ6Ô6Ð6ð *ð	7ð 	7r9   c                ó¾   — d|vrdS t          |d         t          ¦  «        st          d¦  «        ‚|�(|                     d¦  «        |k    rt          d¦  «        ‚dS dS )zè
        Checks whether "sub" if in the payload is valid or not.
        This is an Optional claim

        :param payload(dict): The payload which needs to be validated
        :param subject(str): The subject of the token
        ÚsubNzSubject must be a stringzInvalid subject)r\   rV   r   rI   )r6   rK   ry   s      r7   r¤   zPyJWT._validate_sub®  st   € ð ˜ÐÐØˆFå˜' %œ.­#Ñ.Ô.ð 	BÝ%Ð&@ÑAÔAÐAàÐØ�{Š{˜5Ñ!Ô! WÒ,Ð,Ý)Ð*;Ñ<Ô<Ð<ð ÐØ,Ð,r9   c                ó€   — d|vrdS t          |                     d¦  «        t          ¦  «        st          d¦  «        ‚dS )z±
        Checks whether "jti" if in the payload is valid or not
        This is an Optional claim

        :param payload(dict): The payload which needs to be validated
        ÚjtiNzJWT ID must be a string)r\   rI   rV   r   )r6   rK   s     r7   r¥   zPyJWT._validate_jtiÃ  sK   € ð ˜ÐÐØˆFå˜'Ÿ+š+ eÑ,Ô,­cÑ2Ô2ð 	=Ý!Ð";Ñ<Ô<Ð<ð	=ð 	=r9   rœ   Úfloatc                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z   k    rt          d¦  «        ‚d S )NrY   z)Issued At claim (iat) must be an integer.z The token is not yet valid (iat))Úintr�   r   r   )r6   rK   rœ   rz   rY   s        r7   rŸ   zPyJWT._validate_iatÑ  su   € ð	Ý�g˜e”nÑ%Ô%ˆCˆCøÝð 	ð 	ð 	Ý&Ø;ñô àðð	øøøð �#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðó   ‚ ˜3c                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z   k    rt          d¦  «        ‚d S )NrZ   z*Not Before claim (nbf) must be an integer.z The token is not yet valid (nbf))r±   r�   r   r   )r6   rK   rœ   rz   rZ   s        r7   r    zPyJWT._validate_nbfà  st   € ð	VÝ�g˜e”nÑ%Ô%ˆCˆCøÝð 	Vð 	Vð 	VÝÐJÑKÔKÐQUÐUð	Vøøøð �#˜‘,ÒÐÝ(Ð)KÑLÔLÐLð  Ðr²   c                ó    — 	 t          |d         ¦  «        }n# t          $ r t          d¦  «        d ‚w xY w|||z
  k    rt          d¦  «        ‚d S )NrX   z/Expiration Time claim (exp) must be an integer.zSignature has expired)r±   r�   r   r   )r6   rK   rœ   rz   rX   s        r7   r¡   zPyJWT._validate_expî  su   € ð	Ý�g˜e”nÑ%Ô%ˆCˆCøÝð 	ð 	ð 	ÝØAñô àðð	øøøð
 �3˜‘<Ò Ð Ý'Ð(?Ñ@Ô@Ð@ð !Ð r²   Fr˜   r™   c               óš  ‡— |€d|vs|d         sd S t          d¦  «        ‚d|vs|d         st          d¦  «        ‚|d         Š|r_t          |t          ¦  «        st          d¦  «        ‚t          ‰t          ¦  «        st          d¦  «        ‚|‰k    rt          d¦  «        ‚d S t          ‰t          ¦  «        r‰gŠt          ‰t          ¦  «        st          d¦  «        ‚t          d„ ‰D ¦   «         ¦  «        rt          d¦  «        ‚t          |t          ¦  «        r|g}t          ˆfd„|D ¦   «         ¦  «        rt          d	¦  «        ‚d S )
NÚaudzInvalid audiencezInvalid audience (strict)z&Invalid claim format in token (strict)zAudience doesn't match (strict)zInvalid claim format in tokenc              3  óB   K  — | ]}t          |t          ¦  «         V — Œd S r©   )r\   rV   )Ú.0Úcs     r7   ú	<genexpr>z&PyJWT._validate_aud.<locals>.<genexpr>'  s/   è è € Ð?Ð?¨!•:˜a¥Ñ%Ô%Ð%Ð?Ð?Ð?Ð?Ð?Ð?r9   c              3  ó    •K  — | ]}|‰vV — Œ	d S r©   rF   )r¸   r¶   Úaudience_claimss     €r7   rº   z&PyJWT._validate_aud.<locals>.<genexpr>-  s(   øè è € Ð>Ð>¨cˆs˜/Ð)Ð>Ð>Ð>Ð>Ð>Ð>r9   zAudience doesn't match)r   r   r\   rV   ÚlistÚanyÚall)r6   rK   ru   r™   r¼   s       @r7   r£   zPyJWT._validate_audþ  s–  ø€ ð ÐØ˜GÐ#Ð#¨7°5¬>Ð#Ø�õ 'Ð'9Ñ:Ô:Ð:à˜ÐÐ w¨u¤~Ðõ ,¨EÑ2Ô2Ð2à! %œ.ˆð ð 	å˜h­Ñ,Ô,ð HÝ*Ð+FÑGÔGÐGõ ˜o­sÑ3Ô3ð UÝ*Ð+SÑTÔTÐTà˜?Ò*Ð*Ý*Ð+LÑMÔMÐMàˆFå�o¥sÑ+Ô+ð 	0Ø.Ð/ˆOÝ˜/­4Ñ0Ô0ð 	HÝ&Ð'FÑGÔGÐGÝÐ?Ð?¨Ð?Ñ?Ô?Ñ?Ô?ð 	HÝ&Ð'FÑGÔGÐGå�h¥Ñ$Ô$ð 	"Ø �zˆHåÐ>Ð>Ð>Ð>°XÐ>Ñ>Ô>Ñ>Ô>ð 	AÝ&Ð'?Ñ@Ô@Ð@ð	Að 	Ar9   c                óH  — |€d S d|vrt          d¦  «        ‚|d         }t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        r||k    rt          d¦  «        ‚d S 	 ||vrt          d¦  «        ‚d S # t          $ r t          d¦  «        d ‚w xY w)Nr[   z%Payload Issuer (iss) must be a stringzInvalid issuerz.Issuer param must be "str" or "Container[str]")r   r\   rV   r   r^   )r6   rK   rw   r[   s       r7   r¢   zPyJWT._validate_iss0  sÝ   € ð ˆ>ØˆFà˜ÐÐÝ+¨EÑ2Ô2Ð2à�eŒnˆÝ˜#�sÑ#Ô#ð 	NÝ$Ð%LÑMÔMÐMå�f�cÑ"Ô"ð 
	Ø�fŠ}ˆ}Ý(Ð)9Ñ:Ô:Ð:ð ˆ}ðØ˜fÐ$Ð$Ý,Ð-=Ñ>Ô>Ð>ð %Ð$øåð ð ð Ý(ØDñô àððøøøs   Á1B ÂB!r©   )r,   r-   r.   r/   )r.   r%   )r.   r'   )r,   r-   r.   r%   )rK   rL   rM   r(   rN   rO   rP   rQ   rR   rS   rT   rU   r.   rV   )NN)rK   rL   rP   rQ   rR   rS   r.   re   )	r   NNNNNNNr   )rm   rn   rM   r)   ro   rp   r,   r-   rq   rr   rs   rt   ru   rv   rw   rx   ry   rO   rz   r{   r|   r   r.   rL   )rŒ   rL   r.   rL   )rm   rn   rM   r‘   ro   rp   r,   r-   rq   rr   rs   rt   ru   rv   ry   rO   rw   rx   rz   r{   r|   r   r.   rL   )NNNr   )rK   rL   r,   r%   ru   r”   rw   r•   ry   rO   rz   r{   r.   r/   )rK   rL   r¦   r§   r.   r/   )rK   rL   ry   rO   r.   r/   )rK   rL   r.   r/   )rK   rL   rœ   r¯   rz   r¯   r.   r/   )rK   rL   ru   rv   r™   rU   r.   r/   )rK   rL   rw   r•   r.   r/   )Ú__name__Ú
__module__Ú__qualname__r8   Ústaticmethodr1   r3   r2   r   rb   ra   r‡   rˆ   r“   r‰   r›   r¤   r¥   rŸ   r    r¡   r£   r¢   rF   r9   r7   r+   r+   *   sM  € € € € € ð;ð ;ð ;ð ;ð ;ð ð
ð 
ð 
ñ „\ð
ð
ð 
ð 
ð 
ð+ð +ð +ð +ð +ð& !1Ø)-Ø6:Ø!ð@
ð @
ð @
ð @
ð @
ðJ *.Ø6:ð	ð ð ð ð ð* &(Ø+/Ø"&à"à)-ð 04Ø.2Ø"Ø$%ðlð lð lð lð lð\ð ð ð ð& 8:Ø+/Ø"&à"à)-ð 04Ø"Ø.2Ø$%ðM8ð M8ð M8ð M8ð M8ðf 04Ø.2Ø"Ø$%ð((ð ((ð ((ð ((ð ((ðT7ð 7ð 7ð 7ð >Bð=ð =ð =ð =ð =ð*=ð =ð =ð =ðMð Mð Mð MðMð Mð Mð MðAð Að Að Að* ð0Að 0Að 0Að 0Að 0Að 0Aðdð ð ð ð ð r9   r+   )<Ú
__future__r   rk   Úosr‚   Úcalendarr   Úcollections.abcr   r   r   r   r	   r
   Útypingr   r   r   r   Úapi_jwsr   r   r   Ú
exceptionsr   r   r   r   r   r   r   r   r   r   rU   ÚgetenvÚsysÚversion_infor!   Útyping_extensionsro   r"   r#   Úapi_jwkr$   Útypesr%   r&   r'   rV   re   r(   Ú__annotations__r)   r+   Ú_jwt_global_objr4   rb   r‡   r“   rF   r9   r7   ú<module>rÔ      sœ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð -Ð ,Ð ,Ð ,Ð ,Ð ,àð S�D�D˜˜œ >°2Ñ6Ô6Ñ7Ô7ð SØ€J€J€Jà
Ô˜7Ò"Ð"Ø$Ð$Ð$Ð$Ð$Ð$Ð$ð 	0Ð/Ð/Ð/Ð/Ð/àAÐAÐAÐAÐAÐAÐAÐAØÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7à(-Ð.@À%ÈÈeÐ.SÔ(TÐÐTÐTÐTÑTØ',Ð->ÀÀsÈEÐ-QÔ'RÐÐRÐRÐRÑRð]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@ �%‘'”'€Ø&€Ô Ø	Ô	€Ø!Ô1€Ø	Ô	€€€r9   