§
    «eîiô-  ã                   ój  — d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZmZ d dl	Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZmZmZmZ  ej        e¦  «        Zd
„ Z d„ Z!d„ Z"d„ Z# G d„ de¦  «        Z$ G d„ d¦  «        Z% G d„ d¦  «        Z& G d„ d¦  «        Z' G d„ d¦  «        Z(dS )é    N)ÚdatetimeÚ	timedelta)Ú
NamedTupleÚOptional)Útzutc)ÚUNSIGNED)Útotal_seconds)ÚConfig)ÚClientErrorÚInvalidConfigErrorÚTokenRetrievalError)ÚCachedPropertyÚJSONFileCacheÚSSOTokenLoaderÚcreate_nested_clientÚget_token_from_environmentc                  óB   — t          j        t          ¦   «         ¦  «        S ©N)r   Únowr   © ó    úS/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/botocore/tokens.pyÚ_utc_nowr   *   s   € ÝŒ<�™œÑ Ô Ð r   c                 ó^   — t          | ¦  «        t          | ¦  «        g}t          |¬¦  «        S )N)Ú	providers)ÚScopedEnvTokenProviderÚSSOTokenProviderÚTokenProviderChain)Úsessionr   s     r   Úcreate_token_resolverr    .   s2   € å˜wÑ'Ô'Ý˜Ñ!Ô!ð€Iõ ¨	Ð2Ñ2Ô2Ð2r   c                 óZ   — t          | t          ¦  «        r|                      d¦  «        S | S )Nz%Y-%m-%dT%H:%M:%SZ)Ú
isinstancer   Ústrftime©Úobjs    r   Ú_serialize_utc_timestampr&   6   s,   € Ý�#•xÑ Ô ð 2Ø�|Š|Ð0Ñ1Ô1Ð1Ø€Jr   c                 ó8   — t          j        | t          ¬¦  «        S )N)Údefault)ÚjsonÚdumpsr&   r$   s    r   Ú_sso_json_dumpsr+   <   s   € ÝŒ:�cÕ#;Ð<Ñ<Ô<Ð<r   c                   ó4   — e Zd ZU eed<   dZee         ed<   dS )ÚFrozenAuthTokenÚtokenNÚ
expiration)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r/   r   r   r   r   r   r-   r-   @   s0   € € € € € € Ø€J€J�JØ%)€J�˜Ô"Ð)Ð)Ñ)Ð)Ð)r   r-   c                   óB   — e Zd ZdZdZdZefd„Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
S )ÚDeferredRefreshableTokené„  iX  é<   c                 ó|   — || _         || _        || _        t          j        ¦   «         | _        d | _        d | _        d S r   )Ú_time_fetcherÚ_refresh_usingÚmethodÚ	threadingÚLockÚ_refresh_lockÚ_frozen_tokenÚ_next_refresh)Úselfr<   Úrefresh_usingÚtime_fetchers       r   Ú__init__z!DeferredRefreshableToken.__init__N   sA   € Ø)ˆÔØ+ˆÔØˆŒõ 'œ^Ñ-Ô-ˆÔØ!ˆÔØ!ˆÔÐÐr   c                 ó8   — |                       ¦   «          | j        S r   )Ú_refreshr@   ©rB   s    r   Úget_frozen_tokenz)DeferredRefreshableToken.get_frozen_tokenX   s   € Ø�Š‰ŒˆØÔ!Ð!r   c                 ó  — |                       ¦   «         }|sd S |dk    }| j                             |¦  «        rN	 |                      ¦   «          | j                             ¦   «          d S # | j                             ¦   «          w xY wd S )NÚ	mandatory)Ú_should_refreshr?   ÚacquireÚ_protected_refreshÚrelease)rB   Úrefresh_typeÚblock_for_refreshs      r   rG   z!DeferredRefreshableToken._refresh\   sž   € à×+Ò+Ñ-Ô-ˆØð 	Ø�4ð )¨KÒ7ÐØÔ×%Ò%Ð&7Ñ8Ô8ð 	-ð-Ø×'Ò'Ñ)Ô)Ð)àÔ"×*Ò*Ñ,Ô,Ð,Ð,Ð,ø�Ô"×*Ò*Ñ,Ô,Ð,Ð,øøøð		-ð 	-s   ºA) Á)Bc                 óŠ  — |                       ¦   «         }|sd S 	 |                      ¦   «         }|t          | j        ¬¦  «        z   | _        |                      ¦   «         | _        n4# t          $ r' t           	                    d|d¬¦  «         |dk    r‚ Y nw xY w|  
                    ¦   «         rt          | j        d¬¦  «        ‚d S )N©Úsecondsz5Refreshing token failed during the %s refresh period.T©Úexc_inforK   z$Token has expired and refresh failed)ÚproviderÚ	error_msg)rL   r:   r   Ú_attempt_timeoutrA   r;   r@   Ú	ExceptionÚloggerÚwarningÚ_is_expiredr   r<   )rB   rP   r   s      r   rN   z+DeferredRefreshableToken._protected_refreshj   s   € ð ×+Ò+Ñ-Ô-ˆØð 	Ø�4ð	Ø×$Ò$Ñ&Ô&ˆCØ!$¥y¸Ô9NÐ'OÑ'OÔ'OÑ!OˆDÔØ!%×!4Ò!4Ñ!6Ô!6ˆDÔÐøÝð 	ð 	ð 	Ý�NŠNØGØØð ñ ô ð ð
 ˜{Ò*Ð*àð +Ð*ð	øøøð ×ÒÑÔð 	å%ØœØ@ðñ ô ð ð	ð 	s   šA
A% Á%.BÂBc                 ó€   — | j         €dS | j         j        }t          ||                      ¦   «         z
  ¦  «        }|dk    S )NFr   )r@   r/   r	   r:   )rB   r/   Ú	remainings      r   r]   z$DeferredRefreshableToken._is_expired†   sC   € ØÔÐ%Ø�5àÔ'Ô2ˆ
Ý! *¨t×/AÒ/AÑ/CÔ/CÑ"CÑDÔDˆ	Ø˜AŠ~Ðr   c                 óÒ   — | j         €dS | j         j        }|€d S |                      ¦   «         }|| j        k     rd S t	          ||z
  ¦  «        }|| j        k     rdS || j        k     rdS d S )NrK   Úadvisory)r@   r/   r:   rA   r	   Ú_mandatory_refresh_timeoutÚ_advisory_refresh_timeout)rB   r/   r   r_   s       r   rL   z(DeferredRefreshableToken._should_refreshŽ   s‡   € ØÔÐ%à�;àÔ'Ô2ˆ
ØÐà�4à× Ò Ñ"Ô"ˆØ�Ô#Ò#Ð#Ø�4å! *¨sÑ"2Ñ3Ô3ˆ	à�tÔ6Ò6Ð6Ø�;Ø˜Ô7Ò7Ð7Ø�:àˆtr   N)r0   r1   r2   rc   rb   rY   r   rE   rI   rG   rN   r]   rL   r   r   r   r6   r6   E   sŠ   € € € € € ð !(Ðà!(ÐàÐà;Cð "ð "ð "ð "ð"ð "ð "ð-ð -ð -ðð ð ð8ð ð ðð ð ð ð r   r6   c                   ó   — e Zd Zdd„Zd„ ZdS )r   Nc                 ó   — |€g }|| _         d S r   )Ú
_providers)rB   r   s     r   rE   zTokenProviderChain.__init__§   s   € ØÐØˆIØ#ˆŒˆˆr   c                 ó@   — | j         D ]} |j        di |¤Ž}|�|c S Œd S )Nr   )rf   Ú
load_token)rB   ÚkwargsrW   r.   s       r   rh   zTokenProviderChain.load_token¬   sD   € Øœð 	ð 	ˆHØ'�HÔ'Ð1Ð1¨&Ð1Ð1ˆEØÐ Ø���ð !àˆtr   r   )r0   r1   r2   rE   rh   r   r   r   r   r   ¦   s7   € € € € € ð$ð $ð $ð $ð
ð ð ð ð r   r   c                   óè   — e Zd ZdZdZej                             ej                             dddd¦  «        ¦  «        Z	ddgZ
dZeZd	ed	fd
„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd	S )r   Ússor7   Ú~z.awsÚcacheÚsso_start_urlÚ
sso_regionÚrefresh_tokenNc                 óð   — || _         |€!|                      | j        t          ¬¦  «        }|| _        || _        t          | j        ¬¦  «        | _        |p| j                              d¦  «        pd| _	        d S )N)Ú
dumps_func)rm   Úprofiler(   )
Ú_sessionÚDEFAULT_CACHE_CLSÚ_SSO_TOKEN_CACHE_DIRr+   Ú_nowÚ_cacher   Ú_token_loaderÚget_config_variableÚ_profile_name)rB   r   rm   rD   Úprofile_names        r   rE   zSSOTokenProvider.__init__Á   s‰   € ð  ˆŒØˆ=Ø×*Ò*ØÔ)Ý*ð +ñ ô ˆEð !ˆŒ	ØˆŒÝ+°$´+Ð>Ñ>Ô>ˆÔàð ØŒ}×0Ò0°Ñ;Ô;ðàð 	ÔÐÐr   c                 óÞ  — | j         j        }|                     di ¦  «        }|                     di ¦  «        }|                     | j        i ¦  «        }d|vrd S |d         }|                     |d ¦  «        }|sd| j        › d|› d�}t	          |¬¦  «        ‚g }| j        D ]}	|	|vr|                     |	¦  «         Œ|rd| j        › d|› d	�}t	          |¬¦  «        ‚||d
         |d         dœS )NÚprofilesÚsso_sessionsÚsso_sessionzThe profile "z7" is configured to use the SSO token provider but the "z+" sso_session configuration does not exist.)rX   zZ" is configured to use the SSO token provider but is missing the following configuration: ú.ro   rn   )Úsession_namero   rn   )rt   Úfull_configÚgetr{   r   Ú_SSO_CONFIG_VARSÚappend)
rB   Úloaded_configr~   r   Úprofile_configÚsso_session_nameÚ
sso_configrX   Úmissing_configsÚvars
             r   Ú_load_sso_configz!SSOTokenProvider._load_sso_configÓ   sd  € ØœÔ1ˆØ ×$Ò$ Z°Ñ4Ô4ˆØ$×(Ò(¨¸Ñ<Ô<ˆØ!Ÿš dÔ&8¸"Ñ=Ô=ˆà Ð.Ð.ØˆFà)¨-Ô8ÐØ!×%Ò%Ð&6¸Ñ=Ô=ˆ
àð 	:ð1 Ô 2ð 1ð 1Ø+;ð1ð 1ð 1ð õ
 %¨yÐ9Ñ9Ô9Ð9àˆØÔ(ð 	,ð 	,ˆCØ˜*Ð$Ð$Ø×&Ò& sÑ+Ô+Ð+øàð 	:ð& Ô 2ð &ð &à"ð&ð &ð &ð õ
 %¨yÐ9Ñ9Ô9Ð9ð -Ø$ \Ô2Ø'¨Ô8ð
ð 
ð 	
r   c                 ó*   — |                       ¦   «         S r   )r�   rH   s    r   Ú_sso_configzSSOTokenProvider._sso_configú   s   € à×$Ò$Ñ&Ô&Ð&r   c                 ór   — t          | j        d         t          ¬¦  «        }t          | j        d|¬¦  «        S )Nro   )Úregion_nameÚsignature_versionzsso-oidc)Úconfig)r
   r�   r   r   rt   )rB   r“   s     r   Ú_clientzSSOTokenProvider._clientþ   s=   € åØÔ(¨Ô6Ý&ð
ñ 
ô 
ˆõ $ D¤M°:ÀfÐMÑMÔMÐMr   c                 óˆ  — | j                              | j        |d         |d         |d         ¬¦  «        }t          |d         ¬¦  «        }| j        d         | j        d         |d	         |                      ¦   «         |z   |d         |d         |d
         dœ}d|v r|d         |d<   t                               d¦  «         |S )NÚclientIdÚclientSecretÚrefreshToken)Ú	grantTyper–   r—   r˜   Ú	expiresInrS   rn   ro   ÚaccessTokenÚregistrationExpiresAt)ÚstartUrlÚregionr›   Ú	expiresAtr–   r—   rœ   zSSO Token refresh succeeded)r”   Úcreate_tokenÚ_GRANT_TYPEr   r�   rw   r[   Úinfo)rB   r.   ÚresponseÚ
expires_inÚ	new_tokens        r   Ú_attempt_create_tokenz&SSOTokenProvider._attempt_create_token  sÛ   € Ø”<×,Ò,ØÔ&Ø˜:Ô&Ø˜~Ô.Ø˜~Ô.ð	 -ñ 
ô 
ˆõ  x°Ô'<Ð=Ñ=Ô=ˆ
àÔ(¨Ô9ØÔ& |Ô4Ø# MÔ2ØŸš™œ zÑ1à˜jÔ)Ø! .Ô1Ø%*Ð+BÔ%Cð	
ð 	
ˆ	ð ˜XÐ%Ð%Ø(0°Ô(@ˆI�nÑ%Ý�ŠÐ1Ñ2Ô2Ð2ØÐr   c                 óÄ  ‡— d}ˆfd„|D ¦   «         }|r!d|› �}t                                |¦  «         d S t          j                             ‰d         ¦  «        }t          ||                      ¦   «         z
  ¦  «        dk    rt                                d|¦  «         d S 	 |                      ‰¦  «        S # t          $ r  t            	                    dd¬	¦  «         Y d S w xY w)
N)r˜   r–   r—   rœ   c                 ó   •— g | ]}|‰v¯|‘Œ	S r   r   )Ú.0Úkr.   s     €r   ú
<listcomp>z:SSOTokenProvider._refresh_access_token.<locals>.<listcomp>$  s   ø€ Ð:Ð:Ð:˜a¨1°E¨>¨>˜¨>¨>¨>r   z+Unable to refresh SSO token: missing keys: rœ   r   z$SSO token registration expired at %sz SSO token refresh attempt failedTrU   )
r[   r¢   ÚdateutilÚparserÚparser	   rw   r¦   r   r\   )rB   r.   ÚkeysÚmissing_keysÚmsgÚexpirys    `    r   Ú_refresh_access_tokenz&SSOTokenProvider._refresh_access_token  sø   ø€ ð
ˆð ;Ð:Ð:Ð: 4Ð:Ñ:Ô:ˆØð 	ØNÀÐNÐNˆCÝ�KŠK˜ÑÔÐØ�4å”×&Ò& uÐ-DÔ'EÑFÔFˆÝ˜ $§)¢)¡+¤+Ñ-Ñ.Ô.°!Ò3Ð3Ý�KŠKÐ>ÀÑGÔGÐGØ�4ð	Ø×-Ò-¨eÑ4Ô4Ð4øÝð 	ð 	ð 	Ý�NŠNÐ=ÈˆNÑMÔMÐMØ�4�4ð	øøøs   Â B5 Â5&CÃCc                 ó"  — | j         d         }| j         d         }t                               d|¦  «         |                      ||¬¦  «        }t          j                             |d         ¦  «        }t                               d|¦  «         t          ||  	                    ¦   «         z
  ¦  «        }|| j
        k     r>|                      |¦  «        }|�'|}|d         }| j                             |||¬¦  «         t          |d         |¬¦  «        S )	Nrn   r‚   zLoading cached SSO token for %s)r‚   rŸ   zCached SSO token expires at %sr›   )r/   )r�   r[   r¢   ry   r¬   r­   r®   Údebugr	   rw   Ú_REFRESH_WINDOWr³   Ú
save_tokenr-   )rB   Ú	start_urlr‚   Ú
token_dictr/   r_   Únew_token_dicts          r   Ú
_refresherzSSOTokenProvider._refresher5  s  € ØÔ$ _Ô5ˆ	ØÔ'¨Ô7ˆÝ�ŠÐ5°|ÑDÔDÐDØ×'Ò'¨	ÀÐ'ÑMÔMˆ
Ý”_×*Ò*¨:°kÔ+BÑCÔCˆ
Ý�ŠÐ5°zÑBÔBÐBå! *¨t¯yªy©{¬{Ñ":Ñ;Ô;ˆ	Ø�tÔ+Ò+Ð+Ø!×7Ò7¸
ÑCÔCˆNØÐ)Ø+�
Ø'¨Ô4�
ØÔ"×-Ò-Ø˜z¸ð .ñ ô ð õ Ø�}Ô%°*ð
ñ 
ô 
ð 	
r   c                 óV   — | j         €d S t          | j        | j        | j        ¬¦  «        S )N)rD   )r�   r6   ÚMETHODr»   rw   )rB   ri   s     r   rh   zSSOTokenProvider.load_tokenK  s4   € ØÔÐ#Ø�4å'ØŒK˜œ°t´yð
ñ 
ô 
ð 	
r   )r0   r1   r2   r½   r¶   ÚosÚpathÚ
expanduserÚjoinrv   r…   r¡   r   ru   r   rE   r�   r   r�   r”   r¦   r³   r»   rh   r   r   r   r   r   ´   s  € € € € € Ø€FØ€OØœ7×-Ò-Ø
Œ�Š�S˜& %¨Ñ1Ô1ñô Ðð 	ØðÐð "€KØ%Ðð "°Àtð
ð 
ð 
ð 
ð$%
ð %
ð %
ðN ð'ð 'ñ „^ð'ð ðNð Nñ „^ðNðð ð ð.ð ð ð0
ð 
ð 
ð,
ð 
ð 
ð 
ð 
r   r   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )r   zn
    Token provider that loads tokens from environment variables scoped to
    a specific `signing_name`.
    ÚenvNc                 ó>   — || _         |€t          j        }|| _        d S r   )rt   r¾   Úenviron)rB   r   rÅ   s      r   rE   zScopedEnvTokenProvider.__init__\  s    € ØˆŒØˆ?Ý”jˆGØˆŒˆˆr   c                 ó¸   — |                      d¦  «        }|€d S t          || j        ¦  «        }|�)t                               d¦  «         t          |¦  «        S d S )NÚsigning_namez%Found token in environment variables.)r„   r   rÅ   r[   r¢   r-   )rB   ri   rÇ   r.   s       r   rh   z!ScopedEnvTokenProvider.load_tokenb  s^   € Ø—z’z .Ñ1Ô1ˆØÐØ�4å*¨<¸¼ÑFÔFˆàÐÝ�KŠKÐ?Ñ@Ô@Ð@Ý" 5Ñ)Ô)Ð)ð Ðr   r   )r0   r1   r2   Ú__doc__r½   rE   rh   r   r   r   r   r   T  sH   € € € € € ðð ð
 €Fðð ð ð ð	*ð 	*ð 	*ð 	*ð 	*r   r   ))r)   Úloggingr¾   r=   r   r   Útypingr   r   Údateutil.parserr¬   Údateutil.tzr   Úbotocorer   Úbotocore.compatr	   Úbotocore.configr
   Úbotocore.exceptionsr   r   r   Úbotocore.utilsr   r   r   r   r   Ú	getLoggerr0   r[   r   r    r&   r+   r-   r6   r   r   r   r   r   r   ú<module>rÓ      s`  ðð €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ð!ð !ð !ð3ð 3ð 3ðð ð ð=ð =ð =ð*ð *ð *ð *ð *�jñ *ô *ð *ð
^ð ^ð ^ð ^ð ^ñ ^ô ^ð ^ðBð ð ð ð ñ ô ð ð]
ð ]
ð ]
ð ]
ð ]
ñ ]
ô ]
ð ]
ð@*ð *ð *ð *ð *ñ *ô *ð *ð *ð *r   