+
    šÜiŒ„  ã                   óP  € R t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RI H!t! ^ R	I"H#t#H$t$ ]PJ                  ! ]&4      t'R
t(R/ /t) ! R R4      t* ! R R]*4      t+ ! R R],]4      t- ! R R4      t.R# )zÛResolves regions and endpoints.

This module implements endpoint resolution, including resolving endpoints for a
given service and region and resolving the available endpoints for a service
in a specific AWS partition.
N)ÚEnum)ÚUNSIGNEDÚ
xform_name)ÚAUTH_TYPE_MAPSÚHAS_CRT©ÚCRT_SUPPORTED_AUTH_TYPES)ÚEndpointProvider)ÚEndpointProviderErrorÚEndpointVariantErrorÚ!InvalidEndpointConfigurationErrorÚInvalidHostLabelErrorÚMissingDependencyExceptionÚNoRegionErrorÚParamValidationErrorÚ$UnknownEndpointResolutionBuiltInNameÚUnknownRegionErrorÚUnknownSignatureVersionErrorÚ*UnsupportedS3AccesspointConfigurationErrorÚUnsupportedS3ConfigurationErrorÚUnsupportedS3ControlArnErrorÚ&UnsupportedS3ControlConfigurationError)Úregister_feature_id)Úensure_booleanÚinstance_cachez{service}.{region}.{dnsSuffix}Ú	endpointsc                   ó>   a € ] tR t^7t o RtRR ltR tRR ltRtV t	R# )	ÚBaseEndpointResolverz3Resolves regions and endpoints. Must be subclassed.Nc                ó   € \         h)a‡  Resolves an endpoint for a service and region combination.

:type service_name: string
:param service_name: Name of the service to resolve an endpoint for
    (e.g., s3)

:type region_name: string
:param region_name: Region/endpoint name to resolve (e.g., us-east-1)
    if no region is provided, the first found partition-wide endpoint
    will be used if available.

:rtype: dict
:return: Returns a dict containing the following keys:
    - partition: (string, required) Resolved partition name
    - endpointName: (string, required) Resolved endpoint name
    - hostname: (string, required) Hostname to use for this endpoint
    - sslCommonName: (string) sslCommonName to use for this endpoint.
    - credentialScope: (dict) Signature version 4 credential scope
      - region: (string) region name override when signing.
      - service: (string) service name override when signing.
    - signatureVersions: (list<string>) A list of possible signature
      versions, including s3, v4, v2, and s3v4
    - protocols: (list<string>) A list of supported protocols
      (e.g., http, https)
    - ...: Other keys may be included as well based on the metadata
©ÚNotImplementedError)ÚselfÚservice_nameÚregion_names   &&&Ú2/usr/lib/python3/dist-packages/botocore/regions.pyÚconstruct_endpointÚ'BaseEndpointResolver.construct_endpoint:   s
   € ô6 "Ð!ó    c                ó   € \         h)z€Lists the partitions available to the endpoint resolver.

:return: Returns a list of partition names (e.g., ["aws", "aws-cn"]).
r   )r!   s   &r$   Úget_available_partitionsÚ-BaseEndpointResolver.get_available_partitionsW   s
   € ô
 "Ð!r'   c                ó   € \         h)ar  Lists the endpoint names of a particular partition.

:type service_name: string
:param service_name: Name of a service to list endpoint for (e.g., s3)

:type partition_name: string
:param partition_name: Name of the partition to limit endpoints to.
    (e.g., aws for the public AWS endpoints, aws-cn for AWS China
    endpoints, aws-us-gov for AWS GovCloud (US) Endpoints, etc.

:type allow_non_regional: bool
:param allow_non_regional: Set to True to include endpoints that are
     not regional endpoints (e.g., s3-external-1,
     fips-us-gov-west-1, etc).
:return: Returns a list of endpoint names (e.g., ["us-east-1"]).
r   )r!   r"   Úpartition_nameÚallow_non_regionals   &&&&r$   Úget_available_endpointsÚ,BaseEndpointResolver.get_available_endpoints^   s
   € ô& "Ð!r'   © ©N)ÚawsF)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r%   r)   r.   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r$   r   r   7   s   ø‡ € Ù=ô"ò:"÷"ò "r'   r   c                   óž   a € ] tR t^tt o RtRR.tRR ltRR ltR tRR lt	RR	 lt
RR
 ltR tRR ltR tR tR tR tR tR tR tRtV tR# )ÚEndpointResolverz7Resolves endpoints based on partition endpoint metadatazaws-isoz	aws-iso-bc                óB   € RV9  d   \        R4      hWn        W n        R# )zÑ
:type endpoint_data: dict
:param endpoint_data: A dict of partition data.

:type uses_builtin_data: boolean
:param uses_builtin_data: Whether the endpoint data originates in the
    package's data directory.
Ú
partitionsz%Missing "partitions" in endpoint dataN)Ú
ValueErrorÚ_endpoint_dataÚuses_builtin_data)r!   Úendpoint_datarB   s   &&&r$   Ú__init__ÚEndpointResolver.__init__y   s$   € ð ˜}Ô,ÜÐDÓEÐEØ+ÔØ!2Ör'   c                óš   € V P                   R ,           F3  pVR,          V8w  d   K  VR,          pW9  d   K$  WA,          R,          u # 	  R# )r?   Ú	partitionÚservicesr   N)rA   )r!   r"   r,   rG   rH   s   &&&  r$   Úget_service_endpoints_dataÚ+EndpointResolver.get_service_endpoints_data‡   sK   € Ø×,Ñ,¨\×:Ð:ˆIØ˜Õ%¨Ô7ÙØ  Õ,ˆHØÔ+ÙØÕ)¨+Õ6Ò6ó ;r'   c                ón   € . pV P                   R ,           F  pVP                  VR,          4       K  	  V# )r?   rG   )rA   Úappend)r!   ÚresultrG   s   &  r$   r)   Ú)EndpointResolver.get_available_partitions�   s5   € ØˆØ×,Ñ,¨\×:Ð:ˆIØ�M‰M˜) KÕ0Ö1ñ ;àˆr'   Nc                ó–  € . pV P                   R ,           F¯  pVR,          V8w  d   K  VR,          pW9  d   K$  Wq,          R,          pV Fv  p	W–R,          9   p
V'       d>   V
'       d6   V P                  W‰,          V4      pV'       d   VP                  V	4       KQ  KS  V'       g   V
'       g   Ke  VP                  V	4       Kx  	  K±  	  V# )r?   rG   rH   r   Úregions)rA   Ú_retrieve_variant_datarL   )r!   r"   r,   r-   Úendpoint_variant_tagsrM   rG   rH   Úservice_endpointsÚendpoint_nameÚis_regional_endpointÚvariant_datas   &&&&&       r$   r.   Ú(EndpointResolver.get_available_endpoints–   s»   € ð ˆØ×,Ñ,¨\×:Ð:ˆIØ˜Õ%¨Ô7ÙØ  Õ,ˆHØÔ+ÙØ (Õ 6°{Õ CÐÛ!2�Ø'4À)Õ8LÑ'LÐ$ç(×-AØ#'×#>Ñ#>Ø)Õ8Ð:Oó$�L÷ $ØŸ™ mÖ4ñ $ç'×+?Ñ+?Ø—M‘M -Ö0ó "3ñ ;ð$ ˆr'   c                óú   € V P                   R ,           Fc  pVR,          V8X  g   K  V'       d@   V P                  VP                  R4      V4      pV'       d   RV9   d   VR,          u # KX  KZ  VR,          u # 	  R# )r?   rG   ÚdefaultsÚ	dnsSuffixN)rA   rQ   Úget)r!   r,   rR   rG   Úvariants   &&&  r$   Úget_partition_dns_suffixÚ)EndpointResolver.get_partition_dns_suffix²   s{   € ð ×,Ñ,¨\×:Ð:ˆIØ˜Õ%¨Ö7ß(Ø"×9Ñ9Ø!Ÿ™ jÓ1Ð3Hó�G÷  ;°'Ô#9Ø& {Õ3Ò3ñ $:‘wð % [Õ1Ò1ñ ;ñ r'   c                óŠ  € VR 8X  d   V'       d   Vf   RpVeM   RpV P                   R,           F  pVR,          V8X  g   K  TpK  	  Ve   V P                  VVVVVR4      pV# R# V P                   R,           FF  pV'       d   VR,          V P                  9   d   K%  V P                  VVVVV4      pV'       g   KD  Vu # 	  R# )Ús3Nz	us-east-1r?   rG   T)rA   Ú_endpoint_for_partitionÚ!_UNSUPPORTED_DUALSTACK_PARTITIONS)	r!   r"   r#   r,   Úuse_dualstack_endpointÚuse_fips_endpointÚvalid_partitionrG   rM   s	   &&&&&&   r$   r%   Ú#EndpointResolver.construct_endpointÁ   sæ   € ð ˜DÔ ß&ØÒ#à%ˆKàÒ%Ø"ˆOØ!×0Ñ0°×>Ð>�	Ø˜[Õ)¨^Ö;Ø&/’Oñ ?ð Ò*Ø×5Ñ5Ø#Ø ØØ*Ø%Øó�ð �Ùð ×,Ñ,¨\×:Ð:ˆIß%Ø˜+Õ&Ø×9Ñ9ô:ñ Ø×1Ñ1ØØØØ&Ø!óˆF÷ ‰vØ’ó ;r'   c                ó”   € V P                   R ,           F%  pV P                  W!4      '       g   K  VR,          u # 	  \        VRR7      h)r?   rG   z,No partition found for provided region_name.)r#   Ú	error_msg)rA   Ú_region_matchr   )r!   r#   rG   s   && r$   Úget_partition_for_regionÚ)EndpointResolver.get_partition_for_regionó   sK   € Ø×,Ñ,¨\×:Ð:ˆIØ×!Ñ! )×9Ô9Ø  Õ-Ò-ñ ;ô !Ø#ØDô
ð 	
r'   c                ó”  € VR ,          pV'       d%   WpP                   9   d   RV R2p\        R.VR7      hVR,          P                  V\        4      p	Vf   RV	9   d   V	R,          pM
\	        4       hR VRVR	V	R
VRVRV/p
W9R,          9   d   V P
                  ! R/ V
B # V P                  W4      '       g	   V'       d‹   V	P                  R4      pV	P                  RR4      pV'       d7   V'       g/   \        P                  RVVV4       WºR
&   V P
                  ! R/ V
B # \        P                  RVV4       V P
                  ! R/ V
B # R# )rG   z4Dualstack endpoints are currently not supported for z
 partitionÚ	dualstack©Útagsrh   rH   NÚpartitionEndpointr"   Úservice_datarT   rc   rd   r   ÚisRegionalizedTz'Using partition endpoint for %s, %s: %sz*Creating a regex based endpoint for %s, %sr0   )	rb   r   r[   ÚDEFAULT_SERVICE_DATAr   Ú_resolveri   ÚLOGÚdebug)r!   rG   r"   r#   rc   rd   Úforce_partitionr,   rh   rq   Úresolve_kwargsÚpartition_endpointÚis_regionalizeds   &&&&&&&      r$   ra   Ú(EndpointResolver._endpoint_for_partitionü   sp  € ð # ;Õ/ˆç"Ø×"HÑ"HÔHðØ&Ð' zð3ð ô '¨[¨MÀYÔOÐOð ! Õ,×0Ñ0ØÔ.ó
ˆð ÒØ" lÔ2Ø*Ð+>Õ?‘ä#“oÐ%ð ˜Ø˜LØ˜LØ˜[Ø$Ð&<ØÐ!2ð
ˆð  {Õ3Ô3Ø—=’=Ñ2 >Ñ2Ð2ð ×Ñ˜i×5Ò5¿à!-×!1Ñ!1Ð2EÓ!FÐØ*×.Ñ.Ð/?ÀÓFˆOß!¯/Ü—	‘	Ø=Ø ØØ&ô	ð 3E˜Ñ/Ø—}’}Ñ6 ~Ñ6Ð6Ü�I‰IØ<ØØôð
 —=’=Ñ2 >Ñ2Ð2ñ% :Ir'   c                óŠ   € W!R ,          9   d   R# RV9   d-   \         P                  ! VR,          4      P                  V4      # R# )rP   TÚregionRegexF)ÚreÚcompileÚmatch)r!   rG   r#   s   &&&r$   ri   ÚEndpointResolver._region_match=  s:   € Ø IÕ.Ô.ÙØ˜IÔ%Ü—:’:˜i¨Õ6Ó7×=Ñ=¸kÓJÐJÙr'   c                ó¤   € VP                  R . 4      pV F7  p\        VR,          4      \        V4      8X  g   K%  VP                  4       pVu # 	  R# )Úvariantsro   N)r[   ÚsetÚcopy)r!   rC   ro   rƒ   r\   rM   s   &&&   r$   rQ   Ú'EndpointResolver._retrieve_variant_dataD  sC   € Ø ×$Ñ$ Z°Ó4ˆÛˆGÜ�7˜6•?Ó#¤s¨4£yÖ0Ø Ÿ™›�Ø’ó  r'   c                ón   € . pV'       d   VP                  R 4       V'       d   VP                  R4       V# )rm   Úfips)rL   )r!   rc   rd   ro   s   &&& r$   Ú_create_tag_listÚ!EndpointResolver._create_tag_listK  s*   € Øˆß!Ø�K‰K˜Ô$ßØ�K‰K˜ÔØˆr'   c                óx   € / pW#V3 F/  pV P                  Wa4      pV'       g   K  V P                  Wu4       K1  	  V# r1   )rQ   Ú_merge_keys)r!   ro   rC   Úservice_defaultsÚpartition_defaultsrM   rƒ   r\   s   &&&&&   r$   Ú_resolve_variantÚ!EndpointResolver._resolve_variantS  sD   € ð ˆØ&Ð:LÓMˆHØ×1Ñ1°(ÓAˆGß‰wØ× Ñ  Ö1ñ Nð ˆr'   c                óÐ  € VP                  R / 4      P                  V/ 4      pVP                  R4      '       d   \        P                  RV4       VP                  R/ 4      pVP                  R/ 4      p	V P                  WV4      p
V
'       d@   V P	                  W§W‰4      pV/ 8X  d   RV RV 2p\        W¬R7      hV P                  W{4       MTpRV9  d   VR,          VR&   VR,          VR&   WKR	&   V P                  W‹4       V P                  W›4       V P                  VVR
,          VVVR,          4      VR
&   RV9   d'   V P                  VVR,          VVVR,          4      VR&   V# )r   Ú
deprecatedz5Client is configured with the deprecated endpoint: %srY   zEndpoint does not exist for z in region rn   rZ   rG   ÚendpointNameÚhostnameÚsslCommonName)r[   ru   Úwarningr‰   r�   r   rŒ   Ú_expand_template)r!   rG   r"   rq   rT   rc   rd   rC   r�   rŽ   ro   rM   rh   s   &&&&&&&      r$   rt   ÚEndpointResolver._resolve]  s�  € ð %×(Ñ(¨°bÓ9×=Ñ=Ø˜2ó
ˆð ×Ñ˜\×*Ò*Ü�K‰KØGØôð
 (×+Ñ+¨J¸Ó;ÐØ&Ÿ]™]¨:°rÓ:ÐØ×$Ñ$Ð%;ÓOˆçØ×*Ñ*ØÐ%5óˆFð ˜Œ|à2°<°.ð A!Ø!. ð1ð ô +°ÔJÐJØ×Ñ˜]Õ3à"ˆFð ˜fÔ$Ø"+¨KÕ"8ˆF�;Ñà'¨Õ4ˆˆ{ÑØ!.ˆ~Ñð 	×ÑÐ)Ô2Ø×ÑÐ+Ô4à!×2Ñ2ØØ�:ÕØØØ�;Õó
ˆˆzÑð ˜fÔ$Ø&*×&;Ñ&;ØØ�Õ'ØØØ�{Õ#ó'ˆF�?Ñ#ð ˆr'   c                ó<   € V F  pW29  g   K  W,          W#&   K  	  R # r1   r0   )r!   Ú	from_datarM   Úkeys   &&& r$   rŒ   ÚEndpointResolver._merge_keysŸ  s   € ÛˆCØÖ Ø'�n�“ó r'   c                ó(   € VP                  W4VR 7      # ))ÚserviceÚregionrZ   )Úformat)r!   rG   Útemplater"   rT   rZ   s   &&&&&&r$   r—   Ú!EndpointResolver._expand_template¤  s   € ð �‰Ø À)ð ó 
ð 	
r'   )rA   rB   )F)r2   )r2   FNr1   )NNFF)r3   r4   r5   r6   r7   rb   rD   rI   r)   r.   r]   r%   rj   ra   ri   rQ   r‰   r�   rt   rŒ   r—   r8   r9   r:   s   @r$   r=   r=   t   sg   ø‡ € ÙAà)2°KÐ(@Ð%ô3ô7òôô8ô0òd
ô?3òBòòòò@òD-÷

ð 
r'   r=   c                   óJ   € ] tR tRtRtRtRtRtRtRt	Rt
R	tR
tRtRtRtRtRtR# )ÚEndpointResolverBuiltinsi¬  zAWS::RegionzAWS::UseFIPSzAWS::UseDualStackzAWS::STS::UseGlobalEndpointzAWS::S3::UseGlobalEndpointzAWS::S3::AcceleratezAWS::S3::ForcePathStylezAWS::S3::UseArnRegionzAWS::S3Control::UseArnRegionz'AWS::S3::DisableMultiRegionAccessPointszSDK::EndpointzAWS::Auth::AccountIdz AWS::Auth::AccountIdEndpointModer0   N)r3   r4   r5   r6   Ú
AWS_REGIONÚAWS_USE_FIPSÚAWS_USE_DUALSTACKÚAWS_STS_USE_GLOBAL_ENDPOINTÚAWS_S3_USE_GLOBAL_ENDPOINTÚAWS_S3_ACCELERATEÚAWS_S3_FORCE_PATH_STYLEÚAWS_S3_USE_ARN_REGIONÚAWS_S3CONTROL_USE_ARN_REGIONÚAWS_S3_DISABLE_MRAPÚSDK_ENDPOINTÚ
ACCOUNT_IDÚACCOUNT_ID_ENDPOINT_MODEr8   r0   r'   r$   r¤   r¤   ¬  sZ   † à€Jð "€Lð ,Ðð #@Ðð ">Ðà-Ðà7Ðð 4Ðð $BÐ àCÐà"€Là'€JàAÔr'   r¤   c                   ó²   a € ] tR tRt o RtRR ltR tR tR tR t	R	 t
R
 tR tR t]R 4       t]R 4       t]R 4       tR tR tR tR tR tR tRtV tR# )ÚEndpointRulesetResolveriÏ  z5Resolves endpoints using a service's endpoint rulesetNc	                óÊ   € \        VVR 7      V n        V P                  P                  P                  V n        W0n        W@n        WPn        W`n        Wpn	        W€n
        / V n        R# ))Úruleset_dataÚpartition_dataN)r	   Ú	_providerÚrulesetÚ
parametersÚ_param_definitionsÚ_service_modelÚ	_builtinsÚ_client_contextÚ_event_emitterÚ_use_sslÚ_requested_auth_schemeÚ_instance_cache)	r!   Úendpoint_ruleset_datar¶   Úservice_modelÚbuiltinsÚclient_contextÚevent_emitterÚuse_sslÚrequested_auth_schemes	   &&&&&&&&&r$   rD   Ú EndpointRulesetResolver.__init__Ò  sZ   € ô *Ø.Ø)ô
ˆŒð #'§.¡.×"8Ñ"8×"CÑ"CˆÔØ+ÔØ!ŒØ-ÔØ+ÔØŒØ&;Ô#Ø!ˆÖr'   c           	     ó”  € Vf   / pVf   / pV P                  WV4      p\        P                  RV4        V P                  P                  ! R
/ VB p\        P                  RTP                  4       T P                  '       gO   TP                  P                  R4      '       d.   RT9  d'   TP                  RTP                  R,           2R7      pTP                  TP                  P                  4        UU	u/ uF  w  r‰Y‰^ ,          bK  	  up	pR	7      pT#   \
         d   pT P                  Yd4      pTf   h YvhRp?ii ; iu up	pi )zAInvokes the provider with params defined in the service's rulesetNz-Calling endpoint provider with parameters: %szEndpoint provider result: %szhttps://ÚEndpointzhttp://:é   NN)Úurl)Úheadersr0   )Ú_get_provider_paramsru   rv   r·   Úresolve_endpointr
   Ú#ruleset_error_to_botocore_exceptionrÍ   r¿   Ú
startswithÚ_replacerÎ   Úitems)
r!   Úoperation_modelÚ	call_argsÚrequest_contextÚprovider_paramsÚprovider_resultÚexÚbotocore_exceptionr›   Úvals
   &&&&      r$   r%   Ú*EndpointRulesetResolver.construct_endpointê  sX  € ð ÒØˆIàÒ"Ø ˆOà×3Ñ3Ø¨ó
ˆô 	�	‰	Ø;¸_ô	
ð	1Ø"Ÿn™n×=Ò=ñ Ø!ñˆOô 	�	‰	Ð0°/×2EÑ2EÔFð ——�Ø×#Ñ#×.Ñ.¨z×:Ò:Ø /Ô1à-×6Ñ6Ø˜o×1Ñ1°"Õ5Ð6Ð7ð 7ó ˆOð *×2Ñ2à,;×,CÑ,C×,IÑ,IÔ,KôÙ,K¡ �˜•V’Ñ,Kòð 3ó 
ˆð Ðøô; %ô 	1Ø!%×!IÑ!IØó"Ðð "Ò)Øà(Ð0ûð	1üó0s   ¶D Ã:E
ÄEÄ$D<Ä<Ec                ó0  € / pV P                  WV4      pV P                  P                  4        Fc  w  rgV P                  VVVR7      pVf,   VP                  e   V P                  VP                  VR7      pVf   KN  W„V&   V P                  Wh4       Ke  	  V# )aU  Resolve a value for each parameter defined in the service's ruleset

The resolution order for parameter values is:
1. Operation-specific static context values from the service definition
2. Operation-specific dynamic context values from API parameters
3. Client-specific context parameters
4. Built-in values such as region, FIPS usage, ...
)Ú
param_namerÕ   rÖ   )Úbuiltin_namerÄ   )Ú_get_customized_builtinsrº   rÔ   Ú_resolve_param_from_contextÚbuiltinÚ_resolve_param_as_builtinÚ_register_endpoint_feature_ids)	r!   rÕ   rÖ   r×   rØ   Úcustomized_builtinsrß   Ú	param_defÚ	param_vals	   &&&&     r$   rÏ   Ú,EndpointRulesetResolver._get_provider_params   s¸   € ð ˆð #×;Ñ;Ø¨ó
Ðð &*×%<Ñ%<×%BÑ%BÖ%DÑ!ˆJØ×8Ñ8Ø%Ø /Ø#ð 9ó ˆIð
 Ò  Y×%6Ñ%6Ò%BØ ×:Ñ:Ø!*×!2Ñ!2Ø0ð ;ó �	ð Ô$Ø.7 
Ñ+Ø×3Ñ3°JÖJñ &Eð Ðr'   c                ó²   € V P                  W4      pVe   V# V P                  WV4      pVe   V# V P                  WV4      pVe   V# V P                  V4      # r1   )Ú&_resolve_param_as_static_context_paramÚ'_resolve_param_as_dynamic_context_paramÚ)_resolve_param_as_operation_context_paramÚ&_resolve_param_as_client_context_param)r!   rß   rÕ   rÖ   ÚstaticÚdynamicÚoperation_context_paramss   &&&&   r$   râ   Ú3EndpointRulesetResolver._resolve_param_from_contextB  s}   € ð ×<Ñ<Øó
ˆð ÒØˆMØ×>Ñ>Ø¨ó
ˆð ÒØˆNà×:Ñ:Ø¨Yóð 	!ð
 $Ò/Ø+Ð+Ø×:Ñ:¸:ÓFÐFr'   c                óF   € V P                  V4      pVP                  V4      # r1   )Ú_get_static_context_paramsr[   )r!   rß   rÕ   Ústatic_ctx_paramss   &&& r$   rë   Ú>EndpointRulesetResolver._resolve_param_as_static_context_paramX  s&   € ð !×;Ñ;¸OÓLÐØ ×$Ñ$ ZÓ0Ð0r'   c                óf   € V P                  V4      pW9   d   WA,          pVP                  V4      # R # r1   )Ú_get_dynamic_context_paramsr[   )r!   rß   rÕ   rÖ   Údynamic_ctx_paramsÚmember_names   &&&&  r$   rì   Ú?EndpointRulesetResolver._resolve_param_as_dynamic_context_param^  s7   € ð "×=Ñ=¸oÓNÐØÔ+Ø,Õ8ˆKØ—=‘= Ó-Ð-ñ ,r'   c                óx   € V P                  4       pW9   d$   W!,          pV P                  P                  V4      # R # r1   )Ú_get_client_context_paramsr½   r[   )r!   rß   Úclient_ctx_paramsÚclient_ctx_varnames   &&  r$   rî   Ú>EndpointRulesetResolver._resolve_param_as_client_context_paramf  s=   € Ø ×;Ñ;Ó=ÐØÔ*Ø!2Õ!>ÐØ×'Ñ'×+Ñ+Ð,>Ó?Ð?ñ +r'   c                ót   € VP                   pW9   d&   WA,          R ,          p\        P                  ! WS4      # R# )ÚpathN)Úoperation_context_parametersÚjmespathÚsearch)r!   rß   rÕ   rÖ   Úoperation_ctx_paramsr  s   &&&&  r$   rí   ÚAEndpointRulesetResolver._resolve_param_as_operation_context_paraml  s7   € ð  /×KÑKÐØÔ-Ø'Õ3°FÕ;ˆDÜ—?’? 4Ó3Ð3ñ .r'   c                ó¶   € V\         P                  P                  4       9  d   \        VR 7      hVP	                  V4      p\        V4      '       d   V! 4       # V# ))Úname)r¤   Ú__members__Úvaluesr   r[   Úcallable)r!   rà   rÄ   rã   s   &&& r$   rä   Ú1EndpointRulesetResolver._resolve_param_as_builtint  sK   € ØÔ7×CÑC×JÑJÓLÔLÜ6¸LÔIÐIØ—,‘,˜|Ó,ˆÜ�G×ÒÙ“9ÐØˆr'   c                ón   € VP                    Uu/ uF  pVP                  VP                  bK  	  up# u upi )z=Mapping of param names to static param value for an operation)Ústatic_context_parametersr	  Úvalue©r!   rÕ   Úparams   && r$   rô   Ú2EndpointRulesetResolver._get_static_context_params|  s<   € ð
 )×BÒBó
áB�ð �J‰J˜Ÿ™Ò#ÙBñ
ð 	
ùò 
ó   � 2c                ón   € VP                    Uu/ uF  pVP                  VP                  bK  	  up# u upi )z7Mapping of param names to member names for an operation)Úcontext_parametersr	  rú   r  s   && r$   rø   Ú3EndpointRulesetResolver._get_dynamic_context_params„  s>   € ð
 )×;Ò;ó
á;�ð �J‰J˜×)Ñ)Ò)Ù;ñ
ð 	
ùò 
r  c                ó”   € V P                   P                   Uu/ uF#  pVP                  \        VP                  4      bK%  	  up# u upi )z7Mapping of param names to client configuration variable)r»   Úclient_context_parametersr	  r   )r!   r  s   & r$   rý   Ú2EndpointRulesetResolver._get_client_context_paramsŒ  sG   € ð
 ×,Ñ,×FÒFó
áF�ð �J‰Jœ
 5§:¡:Ó.Ò.ÙFñ
ð 	
ùò 
s   ™)Ac                óÔ   € V P                   P                  P                  4       p\        P                  ! V P                  4      pV P
                  P                  R V 2VVVVR7       V# )zbefore-endpoint-resolution.)rÄ   ÚmodelÚparamsÚcontext)r»   Ú
service_idÚ	hyphenizer…   r¼   r¾   Úemit)r!   rÕ   rÖ   r×   r  ræ   s   &&&&  r$   rá   Ú0EndpointRulesetResolver._get_customized_builtins”  sh   € ð ×(Ñ(×3Ñ3×=Ñ=Ó?ˆ
Ü"Ÿiši¨¯©Ó7Ðà×Ñ× Ñ Ø)¨*¨Ð6Ø(Ø!ØØ#ð 	!ô 	
ð #Ð"r'   c                óâ  a € \        V\        4      '       d   \        V4      ^ 8X  d   \        R4      h\        P                  RRP                  V Uu. uF  pRVP                  R4       R2NK  	  up4      S P                  4       S P                  \        8X  d   R/ 3# V Uu. uF!  p/ VCRS P                  VR,          4      /CNK#  	  ppS P                  e    \        V 3R lV 4       4      w  rCM \        R	 V 4       4      w  rC/ pRV9   d   VR,          VR&   M9RV9   d3   \        VR,          4      ^ 8”  d   RP                  VR,          4      VR&   RV9   d   VP#                  VR,          R7       RV9   d   \%        VR,          4      VR&   \        P                  RVR,          VV4       WG3# u upi u upi   \         d    R/ 3u # i ; i  \         d�    R
pT Uu. uF  q"R,          NK  	  Mu upi pp\        '       g5   \        ;QJ d    R T 4       F  '       g   K   RM	  R
M! R T 4       4      pT'       d   \        RR7      h\!        RP                  T4      R7      hi ; i)a¨  Convert an Endpoint's authSchemes property to a signing_context dict

:type auth_schemes: list
:param auth_schemes: A list of dictionaries taken from the
    ``authSchemes`` property of an Endpoint object returned by
    ``EndpointProvider``.

:rtype: str, dict
:return: Tuple of auth type string (to be used in
    ``request_context['auth_type']``) and signing context dict (for use
    in ``request_context['signing']``).
z&auth_schemes must be a non-empty list.z_Selecting from endpoint provider's list of auth schemes: %s. User selected auth scheme is: "%s"z, Ú"r	  ÚnoneNc              3   ó–   <"  € T F>  pSP                  SP                  VR ,          4      '       g   K.  SP                  V3x € K@  	  R# 5i©r	  N)Ú._does_botocore_authname_match_ruleset_authnamerÀ   )Ú.0Úsr!   s   & €r$   Ú	<genexpr>ÚFEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<genexpr>Æ  sB   øé € ð $á)˜Ø×JÑJØ×3Ñ3°Q°vµY÷ô 5�T×0Ñ0°!Õ4Û)ùs
   ƒ+A	³A	c              3   ó`   "  € T F$  pVR ,          \         9   g   K  VR ,          V3x € K&  	  R# 5ir'  )r   )r)  r*  s   & r$   r+  r,  Ô  s-   é € ð $á)˜Ø˜•y¤NÑ2ô #�Q�v•Y •NÛ)ùs   ‚.›.Fc              3   ó4   "  € T F  pV\         9   x € K  	  R # 5ir1   r   )r)  Úschemes   & r$   r+  r,  à  s   é € ð +á&7˜Fð Ô":Ö:Û&7ùs   ‚TzbThis operation requires an additional dependency. Use pip install botocore[crt] before proceeding.©Úmsg)Úsignature_versionÚsigningRegionrŸ   ÚsigningRegionSetÚ,ÚsigningName)Úsigning_nameÚdisableDoubleEncodingz?Selected auth type "%s" as "%s" with signing context params: %s)Ú
isinstanceÚlistÚlenÚ	TypeErrorru   rv   Újoinr[   rÀ   r   Ú_strip_sig_prefixÚnextÚStopIterationr   Úanyr   r   Úupdater   )r!   Úauth_schemesr*  r/  r	  Úfixable_with_crtÚauth_type_optionsÚsigning_contexts   f&      r$   Úauth_schemes_to_signing_ctxÚ3EndpointRulesetResolver.auth_schemes_to_signing_ctx£  s—  ø€ ô ˜,¬×-Ò-´°\Ó1BÀaÔ1GÜÐDÓEÐEä�	‰	ð1à�I‰I±\ÓB±\°˜˜1Ÿ5™5 ›=˜/¨Ó+±\ÑBÓCØ×'Ñ'ô		
ð ×&Ñ&¬(Ô2Ø˜2�:Ðñ 'ó
á&�ð GˆvÐF�v˜t×5Ñ5°f¸VµnÓEÔFÙ&ð 	ð 
ð ×&Ñ&Ò2ð ô  $ô $á)ó$ó  ‘��fðÜ#ñ $á)ó$ó  ‘�ð6 ˆØ˜fÔ$Ø(.¨Õ(?ˆO˜HÒ%Ø 6Ô)Ü�6Ð,Õ-Ó.°Ô2Ø,/¯H©HØÐ-Õ.ó-� Ñ)ð ˜FÔ"Ø×"Ñ"°°}Õ0EÐ"ÔFØ" fÔ,Ü7EØÐ.Õ/ó8ˆOÐ3Ñ4ô 	�	‰	ØMØ�6�NØØô		
ð Ð$Ð$ùò] Cùò
øô  !ô  ð ˜R�x’ð	 ûô !ô ð $)Ð Ù8DÓ$E¹°1 v§Y YºùÒ$EÐ!Ð$Eß“wß'*£sñ +á&7ó+§s§s¢sñ +á&7ó+ó (Ð$÷
 $Ü4ðLôð ô
 7Ø*.¯)©)Ð4EÓ*Fôð ð%úsH   ÁF5Â#'F:ÃF? Ã4G Æ?GÇGÇI.Ç%G7Ç6I.ÈI.È)I.É(I.c                óF   € VP                  R4      '       d
   VR,          # T# )z6Normalize auth type names by removing any "sig" prefixÚsig:é   NN)rÒ   )r!   Ú	auth_names   &&r$   r>  Ú)EndpointRulesetResolver._strip_sig_prefix  s!   € à )× 4Ñ 4°U× ;Ò ;ˆy˜�}ÐJÀÐJr'   c                óª   € V P                  V4      pVP                  R4      ^ ,          pVR8w  d!   VP                  R4      '       d
   VR,          pW!8H  # )a´  
Whether a valid string provided as signature_version parameter for
client construction refers to the same auth methods as a string
returned by the endpoint ruleset provider. This accounts for:

* The ruleset prefixes auth names with "sig"
* The s3 and s3control rulesets don't distinguish between v4[a] and
  s3v4[a] signers
* The v2, v3, and HMAC v1 based signers (s3, s3-*) are botocore legacy
  features and do not exist in the rulesets
* Only characters up to the first dash are considered

Example matches:
* v4, sigv4
* v4, v4
* s3v4, sigv4
* s3v7, sigv7 (hypothetical example)
* s3v4a, sigv4a
* s3v4-query, sigv4

Example mismatches:
* v4a, sigv4
* s3, sigv4
* s3-presign-post, sigv4
Ú-r`   :é   NN)r>  ÚsplitrÒ   )r!   ÚbotonameÚrsnames   &&&r$   r(  ÚFEndpointRulesetResolver._does_botocore_authname_match_ruleset_authname
  sQ   € ð4 ×'Ñ'¨Ó/ˆØ—>‘> #Ó& qÕ)ˆØ�tÔ × 3Ñ 3°D× 9Ò 9Ø •|ˆHØÑ!Ð!r'   c                ón  € VP                   P                  R4      pVf   R# VP                  R4      '       d&    VP                  R4      ^,          p\        VR7      # V P                  P                  pVR8X  dâ   VR8X  g   VR8X  d   \        VR	7      # VP                  R
4      '       gt   VP                  R4      '       g]   VP                  R4      '       gF   VP                  R4      '       g/   VP                  R4      '       g   VP                  R4      '       d   \        VR	7      # VP                  4       P                  R4      '       d   \        VR7      # VR8X  d‚   VP                  R4      '       d   VP                  R4      p\        WcR7      # VP                  R4      '       g   VP                  R4      '       d   \        VR	7      # VR8X  d   \        VR7      # VR8X  d7   VP                  R4      '       d   \        VR	7      # VR8X  d   \        VR	7      # R#   \         d    Tp ELái ; i)ztAttempts to translate ruleset errors to pre-existing botocore
exception types by string matching exception strings.
r1  NzInvalid region in ARN: Ú`)Úlabelr`   z/S3 Object Lambda does not support S3 Acceleratez#Accelerate cannot be used with FIPSr0  zS3 Outposts does not supportzS3 MRAP does not supportz!S3 Object Lambda does not supportzAccess Points do not supportzInvalid configuration:z#Client was configured for partitionzinvalid arn:)ÚreportÚ	s3controlzInvalid ARN:ÚBucket)Úarnr1  z!AccountId is required but not setÚeventszUInvalid Configuration: FIPS is not supported with EventBridge multi-region endpoints.z&EndpointId must be a valid host label.)Úkwargsr[   rÒ   rQ  Ú
IndexErrorr   r»   r"   r   r   Úlowerr   r   r   r   )r!   Úruleset_exceptionr  r1  rW  r"   r[  s   &&&    r$   rÑ   Ú;EndpointRulesetResolver.ruleset_error_to_botocore_exception*  sæ  € ð  ×&Ñ&×*Ñ*¨5Ó1ˆØŠ;Ùà�>‰>Ð3×4Ò4ðØŸ	™	 #› qÕ)�ô )¨uÔ5Ð5à×*Ñ*×7Ñ7ˆØ˜4ÔàÐHÔHØÐ?Ô?ä6¸3Ô?Ð?à—‘Ð=×>Ò>Ø—>‘>Ð"<×=Ò=Ø—>‘>Ð"E×FÒFØ—>‘>Ð"@×AÒAØ—>‘>Ð":×;Ò;Ø—>‘>Ð"G×HÒHäAÀcÔJÐJØ�y‰y‹{×%Ñ% n×5Ò5Ü+°3Ô7Ð7Ø˜;Ô&Ø�~‰~˜n×-Ò-Ø—j‘j Ó*�Ü3¸ÔEÐEØ�~‰~Ð6×7Ò7¸3¿>¹>Ø5÷<ò <ô >À#ÔFÐFØÐ9Ô9Ü+°3Ô7Ð7Ø˜8Ô#Ø�~‰~ð6÷ò ô 9¸SÔAÐAØÐ>Ô>Ü8¸SÔAÐAÙøôQ ô Ø“ðús   ºH# È#H4È3H4c                óx   € VR 8X  d   \        RVP                  4        24       R# VR8X  d   \        R4       R# R# )ÚAccountIdEndpointModeÚACCOUNT_ID_MODE_Ú	AccountIdÚRESOLVED_ACCOUNT_IDN)r   Úupper)r!   rß   rè   s   &&&r$   rå   Ú6EndpointRulesetResolver._register_endpoint_feature_idsa  s9   € ØÐ0Ô0ÜÐ"2°9·?±?Ó3DÐ2EÐ FÖGØ˜;Ô&ÜÐ 5Ö6ñ 'r'   )	r¼   r½   r¾   rÁ   rº   r·   rÀ   r»   r¿   )TN)r3   r4   r5   r6   r7   rD   r%   rÏ   râ   rë   rì   rî   rí   rä   r   rô   rø   rý   rá   rG  r>  r(  rÑ   rå   r8   r9   r:   s   @r$   r³   r³   Ï  s�   ø‡ € Ù?ô"ò04òl òDGò,1ò.ò@ò4òð ñ
ó ð
ð ñ
ó ð
ð ñ
ó ð
ò#òa%òFKò"ò@5÷n7ð 7r'   r³   )/r7   r…   Úloggingr~   Úenumr   r  Úbotocorer   r   Úbotocore.authr   r   Úbotocore.crtr   Úbotocore.endpoint_providerr	   Úbotocore.exceptionsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   Úbotocore.useragentr   Úbotocore.utilsr   r   Ú	getLoggerr3   ru   ÚDEFAULT_URI_TEMPLATErs   r   r=   Ústrr¤   r³   r0   r'   r$   Ú<module>ru     sœ   ðñó Û Û 	Ý ã ç )ß 1Ý 1Ý 7÷÷ ÷ ÷ õ  3ß 9à×Ò˜Ó!€Ø7Ð Ø# RÐ(Ð ÷:"ñ :"ôzu
Ð+ô u
ôp	 B˜s Dô  B÷FV7ó V7r'   