+
     Iin  c                   sP   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# )zResolves 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                   s>   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
ZNotImplementedError)selfservice_nameregion_name   &&&5/usr/lib/python3.14/site-packages/botocore/regions.pyconstruct_endpointZ'BaseEndpointResolver.construct_endpoint:   s
    6 "!    c                r   )zLists 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_partitionsZ-BaseEndpointResolver.get_available_partitionsW   s
    
 "!r#   c                r   )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_endpointsZ,BaseEndpointResolver.get_available_endpoints^   s
    & "!r#    N)awsF)
__name__
__module____qualname____firstlineno____doc__r"   r$   r'   __static_attributes____classdictcell__Z__classdict__   @r!   r   r   7   s     =":"" "r#   r   c                   s   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                sB    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)Z
ValueError_endpoint_datauses_builtin_data)r   endpoint_datar7   r    r!   __init__ZEndpointResolver.__init__y   s$     },DEE+!2r#   c                s    V P                   R ,           F3  pVR,          V8w  d   K  VR,          pW9  d   K$  WA,          R,          u # 	  R# )r5   	partitionservicesr   N)r6   )r   r   r%   r:   r;      &&&  r!   get_service_endpoints_dataZ+EndpointResolver.get_service_endpoints_data   sK    ,,\::I%7 ,H+)+66 ;r#   c                sn    . pV P                   R ,           F  pVP                  VR,          4       K  	  V# )r5   r:   )r6   append)r   resultr:   s   &  r!   r$   Z)EndpointResolver.get_available_partitions   s5    ,,\::IMM)K01 ;r#   Nc                s   . 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	WR,          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# )r5   r:   r;   r   regions)r6   _retrieve_variant_datar>   )r   r   r%   r&   endpoint_variant_tagsr?   r:   r;   Zservice_endpointsendpoint_nameZis_regional_endpointZvariant_datas   &&&&&       r!   r'   Z(EndpointResolver.get_available_endpoints   s     ,,\::I%7 ,H+ ( 6{ C!2'4)8L'L$(-A#'#>#>)8:O$L $m4 $'+?+?MM-0 "3 ;$ r#   c                s    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# )r5   r:   defaults	dnsSuffixN)r6   rA   get)r   r%   rB   r:   variantr<   r!   get_partition_dns_suffixZ)EndpointResolver.get_partition_dns_suffix   s{     ,,\::I%7("99!j13HG ;'#9&{33 $:w %[11 ; r#   c                s   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-1r5   r:   T)r6   _endpoint_for_partition!_UNSUPPORTED_DUALSTACK_PARTITIONS)	r   r   r   r%   use_dualstack_endpointuse_fips_endpointZvalid_partitionr:   r?   s	   &&&&&&   r!   r"   Z#EndpointResolver.construct_endpoint   s     D &#%K%"O!00>>	[)^;&/O ? *55# *%  ,,\::I%+&99: 11&!F v ;r#   c                s    V P                   R ,           F%  pV P                  W!4      '       g   K  VR,          u # 	  \        VRR7      h)r5   r:   z,No partition found for provided region_name.)r   	error_msg)r6   _region_matchr   )r   r   r:      && r!   get_partition_for_regionZ)EndpointResolver.get_partition_for_region   sK    ,,\::I!!)99 -- ; !#D
 	
r#   c                s   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       WR
&   V P
                  ! R/ V
B # \        P                  RVV4       V P
                  ! R/ V
B # R# )r:   z4Dualstack endpoints are currently not supported for z
 partition	dualstacktagsrN   r;   NZpartitionEndpointr   service_datarC   rL   rM   r   ZisRegionalizedTz'Using partition endpoint for %s, %s: %sz*Creating a regex based endpoint for %s, %sr(   )	rK   r	   rF   DEFAULT_SERVICE_DATAr   _resolverO   LOGdebug)r   r:   r   r   rL   rM   Zforce_partitionr%   rN   rU   Zresolve_kwargsZpartition_endpointZis_regionalized   &&&&&&&      r!   rJ   Z(EndpointResolver._endpoint_for_partition   sp    #;/""H"HH&'z3  '[MYOO !,00.
 "l2*+>?#o% LL[$&<!2
 {33==2>22 i55!-!1!12E!F*../?FO!/		= &	 3E/}}6~66II<
 ==2>22% :Ir#   c                s    W!R ,          9   d   R# RV9   d-   \         P                  ! VR,          4      P                  V4      # R# )r@   TZregionRegexF)reZcompileZmatch)r   r:   r   r    r!   rO   ZEndpointResolver._region_match=  s:    I..I%::i67==kJJr#   c                s    VP                  R . 4      pV F7  p\        VR,          4      \        V4      8X  g   K%  VP                  4       pVu # 	  R# )variantsrT   N)rF   Zsetcopy)r   r8   rT   r\   rG   r?   s   &&&   r!   rA   Z'EndpointResolver._retrieve_variant_dataD  sC     $$Z4G76?#s4y0   r#   c                sn    . pV'       d   VP                  R 4       V'       d   VP                  R4       V# )rR   Zfips)r>   )r   rL   rM   rT      &&& r!   _create_tag_listZ!EndpointResolver._create_tag_listK  s*    !KK$KKr#   c                sx    / pW#V3 F/  pV P                  Wa4      pV'       g   K  V P                  Wu4       K1  	  V# r)   )rA   _merge_keys)r   rT   r8   service_defaultspartition_defaultsr?   r\   rG   s   &&&&&   r!   _resolve_variantZ!EndpointResolver._resolve_variantS  sD     &:LMH11(AGw  1 N r#   c                s   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	                  WW4      pV/ 8X  d   RV RV 2p\        WR7      hV P                  W{4       MTpRV9  d   VR,          VR&   VR,          VR&   WKR	&   V P                  W4       V P                  W4       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   Z
deprecatedz5Client is configured with the deprecated endpoint: %srD   zEndpoint does not exist for z in region rS   rE   r:   ZendpointNameZhostnameZsslCommonName)rF   rX   Zwarningr_   rc   r	   r`   _expand_template)r   r:   r   rU   rC   rL   rM   r8   ra   rb   rT   r?   rN   rZ   r!   rW   ZEndpointResolver._resolve]  s    %((b9==2
 \**KKG
 (++J;&]]:r:$$%;O**%5F |2<. A!!.1  +JJ]3"F f$"+K"8F;'4{!.~ 	)2+4!22:;
z f$&*&;&;'{#'F?# r#   c                s<    V F  pW29  g   K  W,          W#&   K  	  R # r)   r(   )r   Z	from_datar?   keyr^   r!   r`   ZEndpointResolver._merge_keys  s    C 'n r#   c                s(    VP                  W4VR 7      # ))ZserviceregionrE   )Zformat)r   r:   Ztemplater   rC   rE   s   &&&&&&r!   rd   Z!EndpointResolver._expand_template  s      )  
 	
r#   )r6   r7   )F)r*   )r*   FNr)   )NNFF)r+   r,   r-   r.   r/   rK   r9   r=   r$   r'   rH   r"   rQ   rJ   rO   rA   r_   rc   rW   r`   rd   r0   r1   r2   r3   r!   r4   r4   t   sg     A)2K(@%3780d
?3B@D-

 
r#   r4   c                   sN    ] 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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::S3::DisableS3ExpressSessionAuthzAWS::S3Control::UseArnRegionz'AWS::S3::DisableMultiRegionAccessPointszSDK::EndpointzAWS::Auth::AccountIdz AWS::Auth::AccountIdEndpointModer(   N)r+   r,   r-   r.   Z
AWS_REGIONZAWS_USE_FIPSZAWS_USE_DUALSTACKZAWS_STS_USE_GLOBAL_ENDPOINTZAWS_S3_USE_GLOBAL_ENDPOINTZAWS_S3_ACCELERATEZAWS_S3_FORCE_PATH_STYLEZAWS_S3_USE_ARN_REGIONZ#AWS_S3_DISABLE_EXPRESS_SESSION_AUTHZAWS_S3CONTROL_USE_ARN_REGIONZAWS_S3_DISABLE_MRAPZSDK_ENDPOINTZ
ACCOUNT_IDZACCOUNT_ID_ENDPOINT_MODEr0   r(   r#   r!   rg   rg     sd    J "L , #@ ">-7 4 	/ (
 $B C"L'JAr#   rg   c                   s   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	                s    \        VVR 7      V n        V P                  P                  P                  V n        W0n        W@n        WPn        W`n        Wpn	        Wn
        / V n        R# ))Zruleset_datapartition_dataN)r   	_providerZrulesetZ
parameters_param_definitions_service_model	_builtins_client_context_event_emitter_use_ssl_requested_auth_scheme_instance_cache)	r   Zendpoint_ruleset_datari   Zservice_modelbuiltinsZclient_contextZevent_emitterZuse_sslZrequested_auth_schemes	   &&&&&&&&&r!   r9   Z EndpointRulesetResolver.__init__  sZ     *.)
 #'.."8"8"C"C+!-+&;#!r#   c           	     s   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  rY^ ,          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://ZEndpointzhttp://:i   NN)url)headersr(   )_get_provider_paramsrX   rY   rj   Zresolve_endpointr   #ruleset_error_to_botocore_exceptionrt   rp   
startswithZ_replaceru   items)
r   operation_model	call_argsrequest_contextprovider_paramsZprovider_resultZexZbotocore_exceptionre   Zvals
   &&&&      r!   r"   Z*EndpointRulesetResolver.construct_endpoint  sX    I" O33
 			;_	
	1"nn== !O 			0/2E2E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	10s   D :E
E$D<<Ec                s0   / 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  WV&   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_namerz   r{   )builtin_namers   )_get_customized_builtinsrk   ry   _resolve_param_from_contextbuiltin_resolve_param_as_builtin_register_endpoint_feature_ids)	r   rz   r{   r|   r}   customized_builtinsr~   Z	param_def	param_vals	   &&&&     r!   rv   Z,EndpointRulesetResolver._get_provider_params%  s      #;;
 &*%<%<%B%B%D!J88% /# 9 I
  Y%6%6%B ::!*!2!20 ; 	 $.7
+33JJ &E r#   c                s    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      # r)   )&_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~   rz   r{   ZstaticZdynamicZoperation_context_paramss   &&&&   r!   r   Z3EndpointRulesetResolver._resolve_param_from_contextG  s}     <<
 M>>
 N::Y 	!
 $/++:::FFr#   c                sF    V P                  V4      pVP                  V4      # r)   )_get_static_context_paramsrF   )r   r~   rz   Zstatic_ctx_paramsr^   r!   r   Z>EndpointRulesetResolver._resolve_param_as_static_context_param]  s&     !;;OL $$Z00r#   c                sf    V P                  V4      pW9   d   WA,          pVP                  V4      # R # r)   )_get_dynamic_context_paramsrF   )r   r~   rz   r{   Zdynamic_ctx_paramsmember_name   &&&&  r!   r   Z?EndpointRulesetResolver._resolve_param_as_dynamic_context_paramc  s7     "==oN+,8K==-- ,r#   c                sx    V P                  4       pW9   d$   W!,          pV P                  P                  V4      # R # r)   )_get_client_context_paramsrn   rF   )r   r~   Zclient_ctx_paramsZclient_ctx_varnames   &&  r!   r   Z>EndpointRulesetResolver._resolve_param_as_client_context_paramk  s=     ;;=*!2!>''++,>?? +r#   c                st    VP                   pW9   d&   WA,          R ,          p\        P                  ! WS4      # R# )pathN)Zoperation_context_parametersjmespathZsearch)r   r~   rz   r{   Zoperation_ctx_paramsr   r   r!   r   ZAEndpointRulesetResolver._resolve_param_as_operation_context_paramq  s7      /KK-'3F;D??433 .r#   c                s    V\         P                  P                  4       9  d   \        VR 7      hVP	                  V4      p\        V4      '       d   V! 4       # V# ))name)rg   Z__members__Zvaluesr   rF   Zcallable)r   r   rs   r   r^   r!   r   Z1EndpointRulesetResolver._resolve_param_as_builtiny  sK    7CCJJLL6L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)Zstatic_context_parametersr   Zvaluer   rz   paramrP   r!   r   Z2EndpointRulesetResolver._get_static_context_params  s<    
 )BB
B JJ#B
 	
 
    2c                r   )z7Mapping of param names to member names for an operation)Zcontext_parametersr   r   r   rP   r!   r   Z3EndpointRulesetResolver._get_dynamic_context_params  s>    
 );;
; JJ)));
 	
 
r   c                s    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)rl   Zclient_context_parametersr   r   )r   r      & r!   r   Z2EndpointRulesetResolver._get_client_context_params  sG    
 ,,FF
F JJ
5::..F
 	
 
s   )Ac                s    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.)rs   ZmodelparamsZcontext)rl   
service_idZ	hyphenizer]   rm   ro   Zemit)r   rz   r{   r|   r   r   r   r!   r   Z0EndpointRulesetResolver._get_customized_builtins  sh     ((33==?
"ii7  )*6(!# 	! 	
 #"r#   c                s  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, Z"r   ZnoneNc              3   s   <"   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_authnamerq   ).0sr   s   & r!   	<genexpr>FEndpointRulesetResolver.auth_schemes_to_signing_ctx.<locals>.<genexpr>  sB      $)JJ33QvY 5T00!4)s
   +A	A	c              3   s`   "   T F$  pVR ,          \         9   g   K  VR ,          V3x  K&  	  R# 5ir   )r   )r   r   r   r!   r   r     s-      $)yN2 #QvYN)s   ..Fc              3   s4   "   T F  pV\         9   x  K  	  R # 5ir)   r   )r   schemer   r!   r   r     s      +&7F "::&7s   TzbThis operation requires an additional dependency. Use pip install botocore[crt] before proceeding.msg)Zsignature_versionZsigningRegionrf   ZsigningRegionSetZ,ZsigningName)Zsigning_nameZdisableDoubleEncodingz?Selected auth type "%s" as "%s" with signing context params: %s)Z
isinstanceZlistZlenZ	TypeErrorrX   rY   ZjoinrF   rq   r   _strip_sig_prefixZnextZStopIterationr   Zanyr   r   Zupdater   )r   Zauth_schemesr   r   r   Zfixable_with_crtZauth_type_optionsZsigning_contexts   f&      r!   auth_schemes_to_signing_ctxZ3EndpointRulesetResolver.auth_schemes_to_signing_ctx  s    ,--\1Ba1GDEE		1II\B\155=/+\BC''		
 &&(22: '
& GvFvt55fVnEF& 	 
 &&2   $ $)$  f# $)$  6 f$(.(?OH%6)6,-.2,/HH-.-) F"""}0E"F"f,7E./8O34 			M6N		
 $$] C
  !   Rx	  !  $) 8D$E1vYY$E!$Ew'*s +&7+sss +&7+ ($
 $4L 
 7*.))4E*F %sH   F5#'F:F? 4G ?GGI.%G76I.I.)I.(I.c                sF    VP                  R4      '       d
   VR,          # T# )z6Normalize auth type names by removing any "sig" prefixZsig:i   NN)rx   )r   Z	auth_names   &&r!   r   Z)EndpointRulesetResolver._strip_sig_prefix  s!     ) 4 4U ; ;y}JJr#   c                s    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
Z-rI   :i   NN)r   splitrx   )r   ZbotonameZrsnamer    r!   r   ZFEndpointRulesetResolver._does_botocore_authname_match_ruleset_authname  sQ    4 ''/>>#&q)t 3 3D 9 9|H!!r#   c                sn   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Li ; i)ztAttempts to translate ruleset errors to pre-existing botocore
exception types by string matching exception strings.
r   NzInvalid region in ARN: Z`)labelrI   z/S3 Object Lambda does not support S3 Acceleratez#Accelerate cannot be used with FIPSr   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:)ZreportZ	s3controlzInvalid ARN:ZBucket)arnr   z!AccountId is required but not setZeventszUInvalid Configuration: FIPS is not supported with EventBridge multi-region endpoints.z&EndpointId must be a valid host label.)ZkwargsrF   rx   r   Z
IndexErrorr   rl   r   r   r   Zlowerr   r   r   r
   )r   Zruleset_exceptionr   r   r   r   r   s   &&&    r!   rw   Z;EndpointRulesetResolver.ruleset_error_to_botocore_exception/  s     &&**51;>>344		#q) )u55**774HH??63??=>>>>"<==>>"EFF>>"@AA>>":;;>>"GHHAcJJyy{%%n55+377;&~~n--jj*3EE~~6773>>5< < >#FF99+3778#~~6  9SAA>>8SAAQ  s   H# #H43H4c                sx    VR 8X  d   \        RVP                  4        24       R# VR8X  d   \        R4       R# R# )ZAccountIdEndpointModeZACCOUNT_ID_MODE_Z	AccountIdZRESOLVED_ACCOUNT_IDN)r   Zupper)r   r~   r   r    r!   r   Z6EndpointRulesetResolver._register_endpoint_feature_idsf  s9    00"29??3D2E FG;& 56 'r#   )	rm   rn   ro   rr   rk   rj   rq   rl   rp   )TN)r+   r,   r-   r.   r/   r9   r"   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rw   r   r0   r1   r2   r3   r!   rh   rh     s     ?"04l DG,1.@4 
 
 
 
 
 
#a%FK"@5n7 7r#   rh   )/r/   r]   Zloggingr[   Zenumr    r   Zbotocorer   r   Zbotocore.authr   r   Zbotocore.crtr   Zbotocore.endpoint_providerr   Zbotocore.exceptionsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zbotocore.useragentr   Zbotocore.utilsr   r   Z	getLoggerr+   rX   ZDEFAULT_URI_TEMPLATErV   r   r4   Zstrrg   rh   r(   r#   r!   <module>r      s      	   ) 1 1 7     3 9!7 #R( :" :"zu
+ u
p	%BsD %BPV7 V7r#   