Ë
    rPêj4œ  ã                   ó¬  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dl	Zd dl
Zd dlZd dlmZmZmZmZ d dlmZmZmZmZmZ d dl	mZmZmZ d dlmZ d dlmZ d d	lmZ d d
l m!Z!m"Z" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5  e jl                  e7«      Z8da9d„ Z:dddde(z  ddfd„Z;d4d„Z<d„ Z= G d„ d«      Z> G d„ de-«      Z? G d„ de,«      Z@ G d„ d«      ZA G d„ d eA«      ZB G d!„ d"e«      ZC G d#„ d$«      ZD G d%„ d&«      ZE ed'd(d)g«      ZF G d*„ d+«      ZG G d,„ d-«      ZH G d.„ d/«      ZI G d0„ d1«      ZJ G d2„ d3«      ZKy)5é    N)Ú
namedtuple)ÚBytesIO)ÚAwsCredentialsÚAwsCredentialsProviderÚAwsSigningAlgorithmÚAwsSigningConfig)ÚClientBootstrapÚClientTlsContextÚDefaultHostResolverÚEventLoopGroupÚTlsContextOptions)ÚS3ClientÚS3RequestTlsModeÚS3RequestType)ÚUNSIGNED)Úurlsplit)ÚConfig)ÚInvalidConfigErrorÚNoCredentialsError)Ú	ArnParserÚInvalidArnException)ÚFULL_OBJECT_CHECKSUM_ARGSÚMB)ÚTransferNotDoneError)ÚBaseTransferFutureÚBaseTransferMeta)ÚTransferManager)ÚCallArgsÚOSUtilsÚcreate_nested_clientÚget_callbacksÚis_s3express_bucketc                 óœ   — t         €2t        j                  j                  | «      }	 |j	                  «        |a t         S # t
        $ r Y y w xY w©N)ÚCRT_S3_PROCESS_LOCKÚawscrtÚs3ÚCrossProcessLockÚacquireÚRuntimeError)ÚnameÚcrt_locks     úS/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/s3transfer/crt.pyÚacquire_crt_s3_process_lockr.   <   sS   € ô Ð"Ü—9‘9×-Ñ-¨dÓ3ˆð	Ø×ÑÔð 'ÐÜÐøô ò 	ñ ð		ús   §? ¿	AÁ
Aé   Tc           
      óª  — t        |«      }t        |«      }t        ||«      }	d}
|rt        j                  nt        j
                  }|�mt        |t        «      r|j                  «       st        d¬«      ‚t        «       }|r|j                  |¬«       nd|_        t        |«      }|j                  «       }
t        |¬«      }t!        |	| ||||
|d¬«      S )	a�  
    :type region: str
    :param region: The region used for signing

    :type crt_credentials_provider:
        Optional[awscrt.auth.AwsCredentialsProvider]
    :param crt_credentials_provider: CRT AWS credentials provider
        to use to sign requests. If not set, requests will not be signed.

    :type num_threads: Optional[int]
    :param num_threads: Number of worker threads generated. Default
        is the number of processors in the machine.

    :type target_throughput: Optional[int]
    :param target_throughput: Throughput target in bytes per second.
        By default, CRT will automatically attempt to choose a target
        throughput that matches the system's maximum network throughput.
        Currently, if CRT is unable to determine the maximum network
        throughput, a fallback target throughput of ``1_250_000_000`` bytes
        per second (which translates to 10 gigabits per second, or 1.16
        gibibytes per second) is used. To set a specific target
        throughput, set a value for this parameter.

    :type part_size: Optional[int]
    :param part_size: Size, in Bytes, of parts that files will be downloaded
        or uploaded in.

    :type use_ssl: boolean
    :param use_ssl: Whether or not to use SSL.  By default, SSL is used.
        Note that not all services support non-ssl connections.

    :type verify: Optional[boolean/string]
    :param verify: Whether or not to verify SSL certificates.
        By default SSL certificates are verified.  You can provide the
        following values:

        * False - do not validate SSL certificates.  SSL will still be
            used (unless use_ssl is False), but SSL certificates
            will not be verified.
        * path/to/cert/bundle.pem - A filename of the CA cert bundle to
            use. Specify this argument if you want to use a custom CA cert
            bundle instead of the default one on your system.
    Nz»Invalid CA bundle: the configured value (ca_bundle, AWS_CA_BUNDLE, REQUESTS_CA_BUNDLE, or verify) resolved to an empty or whitespace-only string. Provide a valid path to a CA bundle file.)Ú	error_msg)Úca_filepathF)Ú provided_throughput_target_bytesT)Ú	bootstrapÚregionÚcredential_providerÚ	part_sizeÚtls_modeÚtls_connection_optionsÚthroughput_target_gbpsÚenable_s3express)r   r   r	   r   ÚENABLEDÚDISABLEDÚ
isinstanceÚstrÚstripr   r   Ú&override_default_trust_store_from_pathÚverify_peerr
   Únew_connection_optionsÚ_get_crt_throughput_target_gbpsr   )r5   Úcrt_credentials_providerÚnum_threadsÚtarget_throughputr7   Úuse_sslÚverifyÚevent_loop_groupÚhost_resolverr4   r9   r8   Útls_ctx_optionsÚclient_tls_optionÚtarget_gbpss                  r-   Úcreate_s3_crt_clientrO   U   sò   € ôh & kÓ2ÐÜ'Ð(8Ó9€MÜÐ 0°-Ó@€IØ!Ðñ %,Ô× Ò Ô1A×1JÑ1Jð ð ÐÜ�fœcÔ"¨6¯<©<¬>Ü$ð0ôð ô ,Ó-ˆÙØ×BÑBØ"ð Cõ ð +0ˆOÔ'Ü,¨_Ó=ÐØ!2×!IÑ!IÓ!KÐÜ1Ø):ô€Kô ØØØ4ØØØ5Ø*Øô	ð 	ó    c                 ó¸   — | €9t         j                  j                  «       }t        j	                  d|«       |€d}n| dz  dz  }t        j	                  d|«       |S )Nz-Recommended CRT throughput target in gbps: %sg      $@r/   i Êš;z'Using CRT throughput target in gbps: %s)r&   r'   Ú&get_recommended_throughput_target_gbpsÚloggerÚdebug)r3   rN   s     r-   rD   rD   ³   s^   € Ø'Ð/Ü—i‘i×FÑFÓHˆÜ�‰Ø;¸[ô	
ð ÐØ‰Kð 7¸Ñ:¸]ÑJˆÜ
‡L�LÐ:¸KÔHØÐrP   c                 ó¬   — t         j                  }	 t        t        |j	                  d«      «      }t        |«      }|| k\  S # t        t        f$ r Y yw xY w)Nú.F)r&   Ú__version__ÚmapÚintÚsplitÚtupleÚ	TypeErrorÚ
ValueError)Úminimum_versionÚcrt_version_strÚcrt_version_intsÚcrt_version_tuples       r-   Ú_has_minimum_crt_versionrb   Å   s\   € Ü×(Ñ(€OðÜœs O×$9Ñ$9¸#Ó$>Ó?ÐÜ!Ð"2Ó3Ðð  Ñ/Ð/øô ”zÐ"ò Ùðús   ’*A ÁAÁAc                   óà   — e Zd Zej                  Zej
                  Zej                  ZdZej                  Z	 dd„Z	d„ Z
d„ Z	 dd„Zdd„Zdd„Zdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚCRTTransferManagerTNc                 óÞ   — |€t        «       | _        || _        t        || j                  |«      | _        |j
                  | _        g | _        t        j                  d«      | _
        d| _        y)aì  A transfer manager interface for Amazon S3 on CRT s3 client.

        :type crt_s3_client: awscrt.s3.S3Client
        :param crt_s3_client: The CRT s3 client, handling all the
            HTTP requests and functions under then hood

        :type crt_request_serializer: s3transfer.crt.BaseCRTRequestSerializer
        :param crt_request_serializer: Serializer, generates unsigned crt HTTP
            request.

        :type osutil: s3transfer.utils.OSUtils
        :param osutil: OSUtils object to use for os-related behavior when
            using with transfer manager.

        :type config: s3transfer.manager.TransferConfig
        :param config: The transfer configuration to be used when
            making CRT S3 client requests.
        Né€   r   )r   Ú_osutilÚ_crt_s3_clientÚS3ClientArgsCreatorÚ_s3_args_creatorÚtranslate_crt_exceptionÚ_crt_exception_translatorÚ_future_coordinatorsÚ	threadingÚ	SemaphoreÚ
_semaphoreÚ_id_counter)ÚselfÚcrt_s3_clientÚcrt_request_serializerÚosutilÚconfigs        r-   Ú__init__zCRTTransferManager.__init__Ø   sk   € ð* ˆ>Ü"›9ˆDŒLØ+ˆÔÜ 3Ø"Ø�L‰LØó!
ˆÔð #×:Ñ:ð 	Ô&ð %'ˆÔ!Ü#×-Ñ-¨cÓ2ˆŒàˆÕrP   c                 ó   — | S r$   © ©rr   s    r-   Ú	__enter__zCRTTransferManager.__enter__ý   s   € ØˆrP   c                 ó2   — d}|rd}| j                  |«       y )NFT©Ú	_shutdown)rr   Úexc_typeÚ	exc_valueÚargsÚcancels        r-   Ú__exit__zCRTTransferManager.__exit__   s   € ØˆÙØˆFØ�‰�vÕrP   c                 ó°   — |€i }|€i }| j                  || j                  «       | j                  |«       t        |||||¬«      }| j	                  d|«      S )N©ÚbucketÚkeyÚfileobjÚ
extra_argsÚsubscribersÚ
get_object)Ú_validate_all_known_argsÚALLOWED_DOWNLOAD_ARGSÚ_validate_if_bucket_supportedr   Ú_submit_transfer)rr   r†   r‡   rˆ   r‰   rŠ   Úcallargss          r-   ÚdownloadzCRTTransferManager.download  sl   € ð ÐØˆJØÐØˆKØ×%Ñ% j°$×2LÑ2LÔMØ×*Ñ*¨6Ô2ÜØØØØ!Ø#ô
ˆð ×$Ñ$ \°8Ó<Ð<rP   c                 óÒ   — |€i }|€i }| j                  || j                  «       | j                  |«       | j                  |«       t	        |||||¬«      }| j                  d|«      S )Nr…   Ú
put_object)rŒ   ÚALLOWED_UPLOAD_ARGSrŽ   Ú&_validate_checksum_algorithm_supportedr   r�   )rr   rˆ   r†   r‡   r‰   rŠ   r�   s          r-   ÚuploadzCRTTransferManager.upload  sx   € ØÐØˆJØÐØˆKØ×%Ñ% j°$×2JÑ2JÔKØ×*Ñ*¨6Ô2Ø×3Ñ3°JÔ?ÜØØØØ!Ø#ô
ˆð ×$Ñ$ \°8Ó<Ð<rP   c                 ó®   — |€i }|€i }| j                  || j                  «       | j                  |«       t        ||||¬«      }| j	                  d|«      S )N)r†   r‡   r‰   rŠ   Údelete_object)rŒ   ÚALLOWED_DELETE_ARGSrŽ   r   r�   )rr   r†   r‡   r‰   rŠ   r�   s         r-   ÚdeletezCRTTransferManager.delete)  sg   € ØÐØˆJØÐØˆKØ×%Ñ% j°$×2JÑ2JÔKØ×*Ñ*¨6Ô2ÜØØØ!Ø#ô	
ˆð ×$Ñ$ _°hÓ?Ð?rP   c                 ó&   — | j                  |«       y r$   r}   ©rr   r‚   s     r-   ÚshutdownzCRTTransferManager.shutdown8  s   € Ø�‰�vÕrP   c                 ó¦   — | j                   rE| j                  j                  «       D ]'  \  }}|j                  |«      }|sŒt	        d|› d�«      ‚ y y )Nz'TransferManager methods do not support z+ resource. Use direct client calls instead.)Ú VALIDATE_SUPPORTED_BUCKET_VALUESÚ_UNSUPPORTED_BUCKET_PATTERNSÚitemsÚmatchr]   )rr   r†   ÚresourceÚpatternr¢   s        r-   rŽ   z0CRTTransferManager._validate_if_bucket_supported;  sg   € ð ×0Ò0Ø%)×%FÑ%F×%LÑ%LÓ%Nò Ñ!�˜'ØŸ™ fÓ-�ÚÜ$ØAÀ(Àð LEð Eóð ñð 1rP   c           	      óZ   — |D ]&  }||vsŒt        d|› ddj                  |«      › �«      ‚ y )NzInvalid extra_args key 'z', must be one of: z, )r]   Újoin)rr   ÚactualÚallowedÚkwargs       r-   rŒ   z+CRTTransferManager._validate_all_known_argsH  sF   € Øò 	ˆEØ˜GÒ#Ü Ø.¨u¨gð 6'Ø'+§y¡y°Ó'9Ð&:ð<óð ñ	rP   c                 óÌ   — |j                  d«      }|€y t        t        j                  j                  j
                  «      }|j                  «       |vrt        d|› d|› �«      ‚y )NÚChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )ÚgetÚlistr&   r'   ÚS3ChecksumAlgorithmÚ__members__Úupperr]   )rr   r‰   Úchecksum_algorithmÚsupported_algorithmss       r-   r•   z9CRTTransferManager._validate_checksum_algorithm_supportedP  su   € Ø'Ÿ^™^Ð,?Ó@ÐØÐ%ØÜ#¤F§I¡I×$AÑ$A×$MÑ$MÓNÐØ×#Ñ#Ó%Ð-AÑAÜØ%Ð&8Ð%9ð :-Ø-AÐ,BðDóð ð BrP   c                 óh   — | j                   D ]#  }|j                  «       rŒ|j                  «        Œ% y r$   )rm   Údoner‚   ©rr   Úcoordinators     r-   Ú_cancel_transfersz$CRTTransferManager._cancel_transfers[  s/   € Ø×4Ñ4ò 	%ˆKØ×#Ñ#Õ%Ø×"Ñ"Õ$ñ	%rP   c                 óF   — | j                   D ]  }|j                  «        Œ y r$   )rm   Úresultrµ   s     r-   Ú_finish_transfersz$CRTTransferManager._finish_transfers`  s#   € Ø×4Ñ4ò 	!ˆKØ×ÑÕ ñ	!rP   c                 óF   — | j                   D ]  }|j                  «        Œ y r$   )rm   Ú%wait_until_on_done_callbacks_completerµ   s     r-   Ú_wait_transfers_donez'CRTTransferManager._wait_transfers_doned  s%   € Ø×4Ñ4ò 	@ˆKØ×=Ñ=Õ?ñ	@rP   c                 óæ   — |r| j                  «        	 | j                  «        | j	                  «        y # t        $ r | j                  «        Y Œ,t        $ r Y Œ6w xY w# | j	                  «        w xY wr$   )r·   rº   ÚKeyboardInterruptÚ	Exceptionr½   rœ   s     r-   r~   zCRTTransferManager._shutdownh  sg   € ÙØ×"Ñ"Ô$ð	(Ø×"Ñ"Ô$ð ×%Ñ%Õ'øô !ò 	%Ø×"Ñ"Ö$Üò 	Ùð	ûð ×%Ñ%Õ'ús-   ”5 µAÁA ÁAÁA ÁAÁA ÁA0c                 ó8   — | j                   j                  «        y r$   )rp   Úrelease©rr   Úkwargss     r-   Ú_release_semaphorez%CRTTransferManager._release_semaphoreu  s   € Ø�‰×ÑÕ!rP   c                 óô  — | j                   g}t        | j                  | j                  ¬«      }t	        | j                  |«      |dœ}t        d	i |¤Ž}t        |«      }|j                  |«       	 | j                  j                  «        | j                  j                  |d«      } |«        | j                  j                  |||||«      }	 | j                  j                  d	i |	¤Ž}
|j                  |
«       | j$                  j                  |«       | xj                  dz  c_        |S # t         $ rC}|j#                  |d«       | j                  j                  |d|¬«      } ||¬«       Y d }~Œyd }~ww xY w)
N)Útransfer_idÚexception_translator)Úmetar¶   ÚqueuedTr´   )Úafter_subscribers)Úerroré   ry   )rÅ   ÚCRTTransferCoordinatorrq   rl   ÚCRTTransferMetaÚCRTTransferFutureÚAfterDoneHandlerÚappendrp   r)   rj   Úget_crt_callbackÚget_make_request_argsrh   Úmake_requestÚset_s3_requestrÀ   Úset_exceptionrm   )rr   Úrequest_typeÚ	call_argsÚon_done_after_callsr¶   Ú
componentsÚfutureÚ	afterdoneÚ	on_queuedÚcrt_callargsÚcrt_s3_requestÚeÚon_dones                r-   r�   z#CRTTransferManager._submit_transferx  su  € Ø#×6Ñ6Ð7ÐÜ,Ø×(Ñ(Ø!%×!?Ñ!?ô
ˆô
 $ D×$4Ñ$4°iÓ@Ø&ñ
ˆ
ô #Ñ0 ZÑ0ˆÜ$ [Ó1ˆ	Ø×"Ñ" 9Ô-ð	7Ø�O‰O×#Ñ#Ô%Ø×-Ñ-×>Ñ>Ø˜óˆIñ ŒKØ×0Ñ0×FÑFØØØØØ#óˆLð >˜T×0Ñ0×=Ñ=ÑMÀÑMˆNð ×&Ñ& ~Ô6Ø×!Ñ!×(Ñ(¨Ô5à×Ò˜AÑÕØˆøô ò 	Ø×%Ñ% a¨Ô.Ø×+Ñ+×<Ñ<Ø˜Ð2Eð =ó ˆGñ ˜!×Òûð	ús   Á0A8D+ Ä+	E7Ä49E2Å2E7©NN©F)Ú__name__Ú
__module__Ú__qualname__r   r�   r”   r™   rŸ   r    rw   r{   rƒ   r‘   r–   rš   r�   rŽ   rŒ   r•   r·   rº   r½   r~   rÅ   r�   ry   rP   r-   rd   rd   Ï   s™   „ Ø+×AÑAÐØ)×=Ñ=ÐØ)×=Ñ=Ðà'+Ð$à#2×#OÑ#OÐ ð JNó#òJòð BFó=ó$=ó"@óòòò	ò%ò
!ò@ó(ò"ó'rP   rd   c                   óH   — e Zd ZdZdd„Zed„ «       Zed„ «       Zed„ «       Zy)rÏ   z*Holds metadata about the CRTTransferFutureNc                 ó.   — || _         || _        i | _        y r$   )Ú_transfer_idÚ
_call_argsÚ_user_context)rr   rÇ   rÙ   s      r-   rw   zCRTTransferMeta.__init__¥  s   € Ø'ˆÔØ#ˆŒØˆÕrP   c                 ó   — | j                   S r$   )rë   rz   s    r-   rÙ   zCRTTransferMeta.call_argsª  s   € à�‰ÐrP   c                 ó   — | j                   S r$   )rê   rz   s    r-   rÇ   zCRTTransferMeta.transfer_id®  s   € à× Ñ Ð rP   c                 ó   — | j                   S r$   )rì   rz   s    r-   Úuser_contextzCRTTransferMeta.user_context²  s   € à×!Ñ!Ð!rP   rã   )	rå   ræ   rç   Ú__doc__rw   ÚpropertyrÙ   rÇ   rð   ry   rP   r-   rÏ   rÏ   ¢  sF   „ Ù4ó ð
 ñó ðð ñ!ó ð!ð ñ"ó ñ"rP   rÏ   c                   ó>   — e Zd Zdd„Zed„ «       Zd„ Zd	d„Zd„ Zd„ Z	y)
rÐ   Nc                 óB   — || _         |€t        «       | _         || _        y)aZ  The future associated to a submitted transfer request via CRT S3 client

        :type meta: s3transfer.crt.CRTTransferMeta
        :param meta: The metadata associated to the transfer future.

        :type coordinator: s3transfer.crt.CRTTransferCoordinator
        :param coordinator: The coordinator associated to the transfer future.
        N)Ú_metarÏ   Ú_coordinator)rr   rÉ   r¶   s      r-   rw   zCRTTransferFuture.__init__¸  s"   € ð ˆŒ
Øˆ<Ü(Ó*ˆDŒJØ'ˆÕrP   c                 ó   — | j                   S r$   )rõ   rz   s    r-   rÉ   zCRTTransferFuture.metaÆ  s   € à�z‰zÐrP   c                 ó6   — | j                   j                  «       S r$   )rö   r´   rz   s    r-   r´   zCRTTransferFuture.doneÊ  s   € Ø× Ñ ×%Ñ%Ó'Ð'rP   c                 ó:   — | j                   j                  |«       y r$   )rö   r¹   ©rr   Útimeouts     r-   r¹   zCRTTransferFuture.resultÍ  s   € Ø×Ñ× Ñ  Õ)rP   c                 ó8   — | j                   j                  «        y r$   )rö   r‚   rz   s    r-   r‚   zCRTTransferFuture.cancelÐ  s   € Ø×Ñ× Ñ Õ"rP   c                 ót   — | j                  «       st        d«      ‚| j                  j                  |d¬«       y)z!Sets the exception on the future.z?set_exception can only be called once the transfer is complete.T)ÚoverrideN)r´   r   rö   r×   ©rr   Ú	exceptions     r-   r×   zCRTTransferFuture.set_exceptionÓ  s8   € à�y‰yŒ{Ü&ðóð ð 	×Ñ×'Ñ'¨	¸DÐ'ÕArP   rã   r$   )
rå   ræ   rç   rw   rò   rÉ   r´   r¹   r‚   r×   ry   rP   r-   rÐ   rÐ   ·  s0   „ ó(ð ñó ðò(ó*ò#óBrP   rÐ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚBaseCRTRequestSerializerc                 ó   — t        d«      ‚)al  Serialize CRT HTTP requests.

        :type transfer_type: string
        :param transfer_type: the type of transfer made,
            e.g 'put_object', 'get_object', 'delete_object'

        :type future: s3transfer.crt.CRTTransferFuture

        :rtype: awscrt.http.HttpRequest
        :returns: An unsigned HTTP request to be used for the CRT S3 client
        zserialize_http_request()©ÚNotImplementedError)rr   Útransfer_typerÜ   s      r-   Úserialize_http_requestz/BaseCRTRequestSerializer.serialize_http_requestÞ  s   € ô "Ð"<Ó=Ð=rP   c                 ó   — t        d«      ‚)Nztranslate_crt_exception()r  rÿ   s     r-   rk   z0BaseCRTRequestSerializer.translate_crt_exceptionì  s   € Ü!Ð"=Ó>Ð>rP   N)rå   ræ   rç   r  rk   ry   rP   r-   r  r  Ý  s   „ ò>ó?rP   r  c                   óV   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)ÚBotocoreCRTRequestSerializerNc                 ó0  — || _         |€i }| j                  ||«       t        |fi |¤Ž| _        | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       | j                  j                  j
                  j                  d| j                  «       y)aÂ  Serialize CRT HTTP request using botocore logic
        It also takes into account configuration from both the session
        and any keyword arguments that could be passed to
        `Session.create_client()` when serializing the request.

        :type session: botocore.session.Session

        :type client_kwargs: Optional[Dict[str, str]])
        :param client_kwargs: The kwargs for the botocore
            s3 client initialization.
        Nzrequest-created.s3.*zafter-call.s3.*zbefore-send.s3.*zbefore-call.s3.*)Ú_sessionÚ_resolve_client_configr    Ú_clientrÉ   ÚeventsÚregisterÚ_capture_http_requestÚ+_change_response_to_serialized_http_requestÚ_make_fake_http_responseÚ_remove_checksum_context)rr   ÚsessionÚclient_kwargss      r-   rw   z%BotocoreCRTRequestSerializer.__init__ñ  sá   € ð  ˆŒØÐ ØˆMØ×#Ñ# G¨]Ô;Ü+¨GÑE°}ÑEˆŒØ�‰×Ñ× Ñ ×)Ñ)Ø" D×$>Ñ$>ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø˜t×OÑOô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =ô	
ð 	�‰×Ñ× Ñ ×)Ñ)Ø × =Ñ =õ	
rP   c                 ó´   — d }|j                  «       r|j                  «       }d|v r|d   }t        t        ¬«      }|r|j                  |«      }||d<   d|d<   y )Nrv   )Úsignature_versionr'   Úservice_name)Úget_default_client_configr   r   Úmerge)rr   r  r  Úuser_provided_configÚclient_configs        r-   r  z3BotocoreCRTRequestSerializer._resolve_client_config  sg   € Ø#ÐØ×,Ñ,Ô.Ø#*×#DÑ#DÓ#FÐ Ø�}Ñ$Ø#0°Ñ#:Ð ä´Ô:ˆÙØ0×6Ñ6°}ÓEˆMØ"/ˆ�hÑØ(,ˆ�nÒ%rP   c                 óø  — t        |j                  «      }|j                  }|j                  r|› d|j                  › �}g }|j                  j                  «       D ]F  \  }}t        |t        «      r|j                  ||f«       Œ*|j                  |t        |d«      f«       ŒH t        j                  j                  |«      }t        j                  j                  |j                  |||j                  ¬«      }|S )Nú?zutf-8)ÚmethodÚpathÚheadersÚbody_stream)r   Úurlr!  Úqueryr"  r¡   r>   r?   rÒ   r&   ÚhttpÚHttpHeadersÚHttpRequestr   Úbody)	rr   Úaws_requestÚ	url_partsÚcrt_pathÚheaders_listr+   ÚvalueÚcrt_headersÚcrt_requests	            r-   Ú_crt_request_from_aws_requestz:BotocoreCRTRequestSerializer._crt_request_from_aws_request  sã   € Ü˜[Ÿ_™_Ó-ˆ	Ø—>‘>ˆØ�?Š?Ø"˜ 1 Y§_¡_Ð$5Ð6ˆHØˆØ&×.Ñ.×4Ñ4Ó6ò 	A‰KˆD�%Ü˜%¤Ô%Ø×#Ñ# T¨5 MÕ2à×#Ñ# T¬3¨u°gÓ+>Ð$?Õ@ð		Aô —k‘k×-Ñ-¨lÓ;ˆä—k‘k×-Ñ-Ø×%Ñ%ØØØ#×(Ñ(ð	 .ó 
ˆð ÐrP   c                 ó2  — | j                  |«      }|j                  j                  d«      €;t        |j                  «      }|j                  j                  d|j                  «       |j                  j                  d«      �|j                  j                  d«       |j                  j                  d«      €(|j                  €|j                  j                  dd«       |j                  j                  d«      �|j                  j                  d«       |S )NÚhostzContent-MD5zContent-LengthÚ0zTransfer-Encoding)
r1  r"  r¬   r   r$  ÚsetÚnetlocÚremover)  Úadd)rr   Úbotocore_http_requestr0  r+  s       r-   Ú_convert_to_crt_http_requestz9BotocoreCRTRequestSerializer._convert_to_crt_http_request2  sô   € à×8Ñ8Ð9NÓOˆØ×Ñ×"Ñ" 6Ó*Ð2ä Ð!6×!:Ñ!:Ó;ˆIØ×Ñ×#Ñ# F¨I×,<Ñ,<Ô=Ø×Ñ×"Ñ" =Ó1Ð=Ø×Ñ×&Ñ& }Ô5ð ×Ñ×"Ñ"Ð#3Ó4Ð<Ø$×)Ñ)Ð1Ø×#Ñ#×'Ñ'Ð(8¸#Ô>ð ×Ñ×"Ñ"Ð#6Ó7ÐCØ×Ñ×&Ñ&Ð':Ô;àÐrP   c                 ó"   — ||j                   d<   y )NÚhttp_request)Úcontext©rr   ÚrequestrÄ   s      r-   r  z2BotocoreCRTRequestSerializer._capture_http_requestP  s   € Ø*1ˆ�‰˜Ò'rP   c                 ó4   — |d   }|j                  «       |d<   y )Nr<  ÚHTTPRequest)Úprepare)rr   r=  ÚparsedrÄ   r?  s        r-   r  zHBotocoreCRTRequestSerializer._change_response_to_serialized_http_requestS  s   € ð ˜.Ñ)ˆØ '§¡Ó 1ˆˆ}ÒrP   c                 óX   — t         j                  j                  d di t        d«      «      S )NéÈ   rP   )ÚbotocoreÚ
awsrequestÚAWSResponseÚFakeRawResponser>  s      r-   r  z5BotocoreCRTRequestSerializer._make_fake_http_responseY  s,   € Ü×"Ñ"×.Ñ.ØØØÜ˜CÓ ó	
ð 	
rP   c                 ó‚   —  t        | j                  |«      d|j                  |j                  dœ|j                  ¤Žd   S )N)ÚBucketÚKeyrA  ry   )Úgetattrr  r†   r‡   r‰   )rr   Úclient_methodrÙ   s      r-   Ú_get_botocore_http_requestz7BotocoreCRTRequestSerializer._get_botocore_http_requesta  sF   € Ø3Œw�t—|‘| ]Ó3ð 
Ø×#Ñ#¨¯©ñ
Ø:C×:NÑ:Nñ
à
ñð 	rP   c                 ót   — | j                  ||j                  j                  «      }| j                  |«      }|S r$   )rO  rÉ   rÙ   r:  )rr   r  rÜ   r9  r0  s        r-   r  z3BotocoreCRTRequestSerializer.serialize_http_requestf  s;   € Ø $× ?Ñ ?Ø˜6Ÿ;™;×0Ñ0ó!
Ðð ×7Ñ7Ð8MÓNˆØÐrP   c                 ón   — t        |t        j                  j                  «      r| j	                  |«      S y r$   )r>   r&   r'   ÚS3ResponseErrorÚ _translate_crt_s3_response_errorrÿ   s     r-   rk   z4BotocoreCRTRequestSerializer.translate_crt_exceptionm  s*   € Ü�i¤§¡×!:Ñ!:Ô;Ø×8Ñ8¸ÓCÐCàrP   c                 óP  — |j                   }|dk  ry |j                  D ��ci c]  \  }}||“Œ
 }}}|j                  }|�<| j                  j                  j
                  }|j                  |«      j                  }nd }t        j                  j                  |«      ||j                  dœ}	| j                  j                  j                  |	|¬«      }
|
j                  di «      j                  d«      }| j                  j                  j!                  |«      } ||
|¬«      S c c}}w )Ni-  )r"  Ústatus_coder)  )ÚshapeÚErrorÚCode)Úoperation_name)rU  r"  rY  r  rÉ   Úservice_modelÚoperation_modelÚoutput_shaperF  rG  ÚHeadersDictr)  Ú_response_parserÚparser¬   Ú
exceptionsÚ	from_code)rr   Ús3_response_errorrU  ÚkÚvr"  rY  rZ  rV  Úresponse_dictÚparsed_responseÚ
error_codeÚerror_classs                r-   rS  z=BotocoreCRTRequestSerializer._translate_crt_s3_response_errors  s  € Ø'×3Ñ3ˆØ˜Òð à$5×$=Ñ$=×>™D˜A˜q�1�a‘4Ð>ˆÑ>Ø*×9Ñ9ˆØÐ%Ø ŸL™L×-Ñ-×;Ñ;ˆMØ!×1Ñ1°.ÓA×NÑN‰EàˆEô  ×*Ñ*×6Ñ6°wÓ?Ø&Ø%×*Ñ*ñ
ˆð
 Ÿ,™,×7Ñ7×=Ñ=Ø ð >ó 
ˆð %×(Ñ(¨°"Ó5×9Ñ9¸&ÓAˆ
Ø—l‘l×-Ñ-×7Ñ7¸
ÓCˆÙ˜?¸>ÔJÐJùó' ?s   ¢D"c                 ó8   — |j                  di «      }d|v r|d= y y )Nr=  Úchecksum)r¬   )rr   ÚparamsrÄ   Úrequest_contexts       r-   r  z5BotocoreCRTRequestSerializer._remove_checksum_context�  s'   € Ø Ÿ*™* Y°Ó3ˆØ˜Ñ(Ø 
Ñ+ð )rP   r$   )rå   ræ   rç   rw   r  r1  r:  r  r  r  rO  r  rk   rS  r  ry   rP   r-   r
  r
  ð  s?   „ ó
ò<-òò,ò<2ò2ò
òò
òòKó8,rP   r
  c                   ó   — e Zd Zdd„Zy)rI  Nc              #   ó>   K  — 	 | j                  |«      }|sy |–— Œ­wr$   )Úread)rr   ÚamtÚdecode_contentÚchunks       r-   ÚstreamzFakeRawResponse.stream–  s&   è ø€ ØØ—I‘I˜c“NˆEÙØØŠKð	 ùs   ‚)i   N)rå   ræ   rç   rs  ry   rP   r-   rI  rI  •  s   „ ôrP   rI  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚBotocoreCRTCredentialsWrapperc                 ó   — || _         y r$   )Ú_resolved_credentials)rr   Úresolved_botocore_credentialss     r-   rw   z&BotocoreCRTCredentialsWrapper.__init__Ÿ  s
   € Ø%BˆÕ"rP   c                 ó”   — | j                  «       j                  «       }t        |j                  |j                  |j
                  «      S r$   )Ú_get_credentialsÚget_frozen_credentialsr   Ú
access_keyÚ
secret_keyÚtoken)rr   Úcredentialss     r-   Ú__call__z&BotocoreCRTCredentialsWrapper.__call__¢  s?   € Ø×+Ñ+Ó-×DÑDÓFˆÜØ×"Ñ" K×$:Ñ$:¸K×<MÑ<Mó
ð 	
rP   c                 ó,   — t        j                  | «      S r$   )r   Únew_delegaterz   s    r-   Úto_crt_credentials_providerz9BotocoreCRTCredentialsWrapper.to_crt_credentials_provider¨  s   € Ü%×2Ñ2°4Ó8Ð8rP   c                 óF   — | j                   €
t        «       ‚| j                   S r$   )rw  r   rz   s    r-   rz  z.BotocoreCRTCredentialsWrapper._get_credentials«  s#   € Ø×%Ñ%Ð-Ü$Ó&Ð&Ø×)Ñ)Ð)rP   N)rå   ræ   rç   rw   r€  rƒ  rz  ry   rP   r-   ru  ru  ž  s   „ òCò
ò9ó*rP   ru  c                   ó`   — e Zd ZdZ	 dd„Zed„ «       Zd„ Zdd„Zdd„Z	d„ Z
dd	„Zd
„ Zd„ Zd„ Zy)rÎ   z-A helper class for managing CRTTransferFutureNc                 ó®   — || _         || _        || _        t        j                  «       | _        d | _        d | _        t        j                  «       | _	        y r$   )
rÇ   Ú_exception_translatorÚ_s3_requestrn   ÚLockÚ_lockÚ
_exceptionÚ_crt_futureÚEventÚ_done_event)rr   rÇ   Ú
s3_requestrÈ   s       r-   rw   zCRTTransferCoordinator.__init__´  sH   € ð 'ˆÔØ%9ˆÔ"Ø%ˆÔÜ—^‘^Ó%ˆŒ
ØˆŒØˆÔÜ$Ÿ?™?Ó,ˆÕrP   c                 ó   — | j                   S r$   )rˆ  rz   s    r-   r�  z!CRTTransferCoordinator.s3_request¿  s   € à×ÑÐrP   c                 ó8   — | j                   j                  «        y r$   )rŽ  r5  rz   s    r-   Úset_done_callbacks_completez2CRTTransferCoordinator.set_done_callbacks_completeÃ  s   € Ø×Ñ×ÑÕrP   c                 ó:   — | j                   j                  |«       y r$   )rŽ  Úwaitrú   s     r-   r¼   z<CRTTransferCoordinator.wait_until_on_done_callbacks_completeÆ  s   € Ø×Ñ×Ñ˜gÕ&rP   c                 óx   — | j                   5  | j                  «       r|r|| _        d d d «       y # 1 sw Y   y xY wr$   )rŠ  r´   r‹  )rr   r   rþ   s      r-   r×   z$CRTTransferCoordinator.set_exceptionÉ  s0   € Ø�Z‰Zñ 	,Ø—9‘9”;¡(Ø"+�”÷	,÷ 	,ñ 	,ús   �0°9c                 óR   — | j                   r| j                   j                  «        y y r$   )rˆ  r‚   rz   s    r-   r‚   zCRTTransferCoordinator.cancelÎ  s"   € Ø×ÒØ×Ñ×#Ñ#Õ%ð rP   c                 ó|  — | j                   r| j                   ‚	 | j                  j                  |«       | j                  rd | _        y y # t        $ r- | j	                  «        | j                  j                  |«       ‚ t
        $ r}| j                  |«       Y d }~Œhd }~ww xY w# | j                  rd | _        w w xY wr$   )r‹  rŒ  r¹   r¿   r‚   rÀ   Úhandle_exceptionrˆ  )rr   rû   rá   s      r-   r¹   zCRTTransferCoordinator.resultÒ  s¨   € Ø�?Š?Ø—/‘/Ð!ð
	(Ø×Ñ×#Ñ# GÔ,ð ×ÒØ#'�Õ ð  øô !ò 	Ø�K‰KŒMØ×Ñ×#Ñ# GÔ,ØÜò 	%Ø×!Ñ! !×$Ñ$ûð	%ûð ×ÒØ#'�Õ ð  ús)   šA
 Á
=B"ÂBÂB% ÂB"Â"B% Â%B;c                 óª   — d }| j                   r	 | j                  |«      }|�||‚|‚# t        $ r!}t        j                  d|¬«       Y d }~Œ,d }~ww xY w)NzUnable to translate exception.)Úexc_info)r‡  rÀ   rS   rT   )rr   ÚexcÚtranslated_excrá   s       r-   r˜  z'CRTTransferCoordinator.handle_exceptioná  sb   € ØˆØ×%Ò%ðØ!%×!;Ñ!;¸CÓ!@�ð Ð%Ø  cÐ)àˆIøô ò ô —‘Ð=È�ÔJÜûð	ús   �( ¨	A±AÁAc                 óP   — | j                   €y| j                   j                  «       S )NF)rŒ  r´   rz   s    r-   r´   zCRTTransferCoordinator.doneð  s&   € Ø×ÑÐ#ØØ×Ñ×$Ñ$Ó&Ð&rP   c                 óH   — || _         | j                   j                  | _        y r$   )rˆ  Úfinished_futurerŒ  )rr   r�  s     r-   rÖ   z%CRTTransferCoordinator.set_s3_requestõ  s   € Ø%ˆÔØ×+Ñ+×;Ñ;ˆÕrP   )NNNr$   rä   )rå   ræ   rç   rñ   rw   rò   r�  r’  r¼   r×   r‚   r¹   r˜  r´   rÖ   ry   rP   r-   rÎ   rÎ   ±  sM   „ Ù7ð GKó	-ð ñ ó ð òó'ó,ò
&ó(òò'ó
<rP   rÎ   ÚCRTConfigParameterr+   Úmin_versionc                   ó`   — e Zd Zd edd«      iZdd„Zd„ Zd„ Zd„ Zd	„ Z		 	 dd
„Z
d„ Zd„ Zd„ Zy)ri   Úmax_active_connections_overrideÚmax_request_concurrency)r   é   r   Nc                 ó.   — || _         || _        || _        y r$   )Ú_request_serializerÚ	_os_utilsÚ_config)rr   rt   Úos_utilsrv   s       r-   rw   zS3ClientArgsCreator.__init__  s   € Ø#9ˆÔ Ø!ˆŒØˆ�rP   c                 ó¾  — | j                   j                  | j                   j                  dœ}| j                   j                  d«      | j                   j                  u rd |d<   | j                   j                  d«      | j                   j                  u rd |d<   t        | d|› �«      r#|j                   t        | d|› �«      «       «       | j                  |«       |S )N)r7   r£  Úmultipart_chunksizer7   r¤  r£  Ú_get_crt_options_)	r©  r¬  r¤  Úget_deep_attrÚUNSET_DEFAULTÚhasattrÚupdaterM  Ú$_remove_param_if_not_min_crt_version)rr   rØ   Ú
crt_configs      r-   Ú _get_crt_transfer_config_optionsz4S3ClientArgsCreator._get_crt_transfer_config_options	  sÖ   € àŸ™×9Ñ9Ø/3¯|©|×/SÑ/Sñ
ˆ
ð �L‰L×&Ñ&Ð'<Ó=Ø�|‰|×)Ñ)ñ*ð '+ˆJ�{Ñ#à�L‰L×&Ñ&Ð'@ÓAØ�|‰|×)Ñ)ñ*ð =AˆJÐ8Ñ9ä�4Ð,¨\¨NÐ;Ô<Ø×ÑØA”˜Ð 1°,°Ð@ÓAÓCôð 	×1Ñ1°*Ô=ØÐrP   c                 ó2   — d| j                   j                  iS )NÚmultipart_upload_threshold)r©  Úmultipart_thresholdrz   s    r-   Ú_get_crt_options_put_objectz/S3ClientArgsCreator._get_crt_options_put_object"  s   € Ø,¨d¯l©l×.NÑ.NÐOÐOrP   c           
      óÔ  — g }|D ]×  }|| j                   vrŒ| j                   |   }t        |j                  «      rŒ7| j                  j	                  |j
                  «      | j                  j                  urUdj                  d„ |j                  D «       «      }t        j                  d|j
                  › d|› d|j
                  › d�«       |j                  |«       ŒÙ |D ]  }||= Œ y )NrV   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr$   )r?   )Ú.0Úis     r-   ú	<genexpr>zKS3ClientArgsCreator._remove_param_if_not_min_crt_version.<locals>.<genexpr>3  s   è ø€ Ò&I°!¤s¨1§vÑ&Iùs   ‚zTransfer config parameter z requires minimum CRT version: z. z! will not be used in the request.)Ú_CRT_ARG_TO_CONFIG_PARAMrb   r¡  r©  r®  r+   r¯  r¦   rS   ÚwarningrÒ   )rr   r³  Ú	to_removeÚrequest_argÚparamÚmin_ver_strs         r-   r²  z8S3ClientArgsCreator._remove_param_if_not_min_crt_version%  sì   € Øˆ	Ø%ò 	*ˆKØ $×"?Ñ"?Ñ?ØØ×1Ñ1°+Ñ>ˆEÜ'¨×(9Ñ(9Ô:Øð —‘×*Ñ*¨5¯:©:Ó6Ø—|‘|×1Ñ1ñ2ð "Ÿh™hÑ&I°u×7HÑ7HÔ&IÓI�Ü—‘Ø0°·±°ð =5Ø5@°MÀØ—z‘z�lÐ"CðEôð
 ×Ñ˜[Õ)ð%	*ð& %ò 	(ˆKØ˜;Ñ'ñ	(rP   c                 óR   — t        | d|› �| j                  «      } |||||g |¬«      S )NÚ_get_make_request_args_©rØ   rÙ   r¶   rÜ   Úon_done_before_callsrÚ   )rM  Ú_default_get_make_request_args)rr   rØ   rÙ   r¶   rÜ   rÚ   Úrequest_args_handlers          r-   rÔ   z)S3ClientArgsCreator.get_make_request_args=  sF   € ô  'ØØ% l ^Ð4Ø×/Ñ/ó 
Ðñ
 $Ø%ØØ#ØØ!#Ø 3ô
ð 	
rP   c                 ó   ‡‡‡‡— ˆˆˆˆfd„}|S )Nc                  ó†   •— g }‰�|‰z  }|t        ‰‰«      z  }‰�|‰z  }|D ]  }‰dk(  r || d   ¬«       Œ || i |¤Ž Œ y )NÚprogressr   )Úbytes_transferred)r!   )r�   rÄ   Úcallbacks_listÚcallbackrË   Úbefore_subscribersÚcallback_typerÜ   s       €€€€r-   Úinvoke_all_callbackszBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacksU  sm   ø€ ØˆNØ!Ð-ØÐ"4Ñ4�Øœm¨F°MÓBÑBˆNØ Ð,ØÐ"3Ñ3�Ø*ò .�ð ! JÒ.Ù¨t°A©wÖ7á˜dÐ- fÓ-ñ.rP   ry   )rr   rÜ   rÑ  rÐ  rË   rÒ  s    ```` r-   rÓ   z$S3ClientArgsCreator.get_crt_callbackN  s   û€ ÷	.ð  $Ð#rP   c                 óÜ  ‡— d }t        ‰j                  t        «      r7‰j                  }| j                  j	                  |«      }|‰j
                  d<   n‰j                  ‰j
                  d<   d }	t        ˆfd„t        D «       «      sˆ‰j
                  j                  dd«      j                  «       }
t        j                  j                  t        j                  j                  |
   t        j                  j                  j                  ¬«      }	d‰j
                  d<   | j!                  |‰||||¬	«      }||d
<   |	|d<   | j"                  � |j%                  | j'                  |«      «       |S )NÚContentLengthÚBodyc              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr$   )r‰   )r»  Úchecksum_argrÙ   s     €r-   r½  zHS3ClientArgsCreator._get_make_request_args_put_object.<locals>.<genexpr>y  s$   øè ø€ ò 
àð ˜I×0Ñ0Ô0ñ
ùs   ƒr«   ÚCRC32)Ú	algorithmÚlocationzoverride-to-be-removedÚ
ContentMD5rÆ  Úsend_filepathÚchecksum_config)r>   rˆ   r?   r¨  Úget_file_sizer‰   Úanyr   Úpopr°   r&   r'   ÚS3ChecksumConfigr®   ÚS3ChecksumLocationÚTRAILERrÈ  r©  r±  r´  )rr   rØ   rÙ   r¶   rÜ   rÇ  rÚ   rÜ  Údata_lenrÝ  r±   Úmake_request_argss     `         r-   Ú!_get_make_request_args_put_objectz5S3ClientArgsCreator._get_make_request_args_put_objectg  sd  ø€ ð ˆÜ�i×'Ñ'¬Ô-Ø%×-Ñ-ˆMØ—~‘~×3Ñ3°MÓBˆHØ4<ˆI× Ñ  Ò1à+4×+<Ñ+<ˆI× Ñ  Ñ(àˆÜó 
ä 9ô
ô 
ð "+×!5Ñ!5×!9Ñ!9Ø# Wó"ç‰e‹gð ô %Ÿi™i×8Ñ8Ü Ÿ)™)×7Ñ7Ð8JÑKÜŸ™×5Ñ5×=Ñ=ð 9ó ˆOð .Fˆ	×Ñ˜\Ñ*à ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ó 
Ðð .;Ð˜/Ñ*Ø/>ÐÐ+Ñ,Ø�<‰<Ð#Ø×$Ñ$Ø×5Ñ5°lÓCôð !Ð rP   c                 óî  — d }d }t         j                  j                  d¬«      }	t        |j                  t
        «      rO|j                  }
| j                  j                  |
«      }|j                  t        ||
|| j                  «      «       nt        |j                  «      }| j                  ||||||¬«      }||d<   ||d<   |	|d<   | j                  � |j                  | j                  |«      «       |S )NT)Úvalidate_responserÆ  Úrecv_filepathÚon_bodyrÝ  )r&   r'   rá  r>   rˆ   r?   r¨  Úget_temp_filenamerÒ   ÚRenameTempFileHandlerÚOnBodyFileObjWriterrÈ  r©  r±  r´  )rr   rØ   rÙ   r¶   rÜ   rÇ  rÚ   ré  rê  rÝ  Úfinal_filepathrå  s               r-   Ú!_get_make_request_args_get_objectz5S3ClientArgsCreator._get_make_request_args_get_objectš  s  € ð ˆØˆÜ Ÿ)™)×4Ñ4ÀtÐ4ÓLˆÜ�i×'Ñ'¬Ô-Ø&×.Ñ.ˆNØ ŸN™N×<Ñ<¸^ÓLˆMØ ×'Ñ'Ü%Ø °ÀÇÁóõô *¨)×*;Ñ*;Ó<ˆGà ×?Ñ?Ø%ØØ#ØØ!5Ø 3ð @ó 
Ðð .;Ð˜/Ñ*Ø'.Ð˜)Ñ$Ø/>ÐÐ+Ñ,Ø�<‰<Ð#Ø×$Ñ$Ø×5Ñ5°lÓCôð !Ð rP   c                 ó€  — | j                   j                  ||«      t        t        |j	                  «       t        j
                  «      | j                  |d||«      | j                  |d«      dœ}|d   t        j
                  k(  r*dj                  d„ |j                  d«      D «       «      |d<   t        «       }|j                  |j                  «      x}	r4|	d	   dk(  r,t        t        j                  d
dd¬«      |d<   |	d   |_        |S t        |j                  «      rt        t        j                   dd¬«      |d<   |S )Nr´   rÌ  )r?  Útyperâ   Úon_progressrñ  Ú c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr$   )Útitle)r»  Úxs     r-   r½  zES3ClientArgsCreator._default_get_make_request_args.<locals>.<genexpr>Û  s   è ø€ ò :Ø�—‘—	ñ:ùs   ‚Ú_rY  r5   Ú*F)rÙ  r5   Úuse_double_uri_encodeÚshould_normalize_uri_pathÚsigning_configÚresource_name)rÙ  rù  rú  )r§  r  rM  r   r°   ÚDEFAULTrÓ   r¦   rZ   Ú_S3ArnParamHandlerÚ
handle_arnr†   r   r   ÚV4_ASYMMETRICr"   ÚV4_S3EXPRESS)
rr   rØ   rÙ   r¶   rÜ   rÇ  rÚ   rå  Úarn_handlerÚaccesspoint_arn_detailss
             r-   rÈ  z2S3ClientArgsCreator._default_get_make_request_argsÂ  s`  € ð ×/Ñ/×FÑFØ˜fóô Ü˜|×1Ñ1Ó3´]×5JÑ5Jóð ×,Ñ,Ø˜Ð 4Ð6Ióð  ×0Ñ0°¸ÓDñ
Ðð ˜VÑ$¬×(=Ñ(=Ò=Ø24·'±'ñ :Ø#/×#5Ñ#5°cÓ#:ô:ó 3ÐÐ.Ñ/ô )Ó*ˆà'2×'=Ñ'=¸i×>NÑ>NÓ'OÐOÐ#ÐOØ% hÑ/°2Ò5ô
 3CÜ-×;Ñ;ØØ&+Ø*/ô	3ÐÐ.Ñ/ð  7°ÑGˆIÔð !Ð ô ! ×!1Ñ!1Ô2ô 3CÜ-×:Ñ:Ø&+Ø*/ô3ÐÐ.Ñ/ð
 !Ð rP   r$   rã   )rå   ræ   rç   r   r¾  rw   r´  r¸  r²  rÔ   rÓ   ræ  rï  rÈ  ry   rP   r-   ri   ri   ý  sR   „ à)Ñ+=Ø% zó,
ð Ðóò
ò2Pò(ò0
ð*  Øó$ò21!òf&!óP4!rP   ri   c                   ó   — e Zd Zd„ Zd„ Zy)rì  c                 ó<   — || _         || _        || _        || _        y r$   )rö   Ú_final_filenameÚ_temp_filenamerg   )rr   r¶   Úfinal_filenameÚtemp_filenameru   s        r-   rw   zRenameTempFileHandler.__init__ú  s!   € Ø'ˆÔØ-ˆÔØ+ˆÔØˆ�rP   c                 ól  — |d   }|r&| j                   j                  | j                  «       y 	 | j                   j                  | j                  | j                  «       y # t
        $ rJ}| j                   j                  | j                  «       | j                  j                  |«       Y d }~y d }~ww xY w)NrÌ   )rg   Úremove_filer  Úrename_filer  rÀ   rö   r×   )rr   rÄ   rÌ   rá   s       r-   r€  zRenameTempFileHandler.__call__   s�   € Ø�w‘ˆÙØ�L‰L×$Ñ$ T×%8Ñ%8Õ9ð3Ø—‘×(Ñ(Ø×'Ñ'¨×)=Ñ)=õøô ò 3Ø—‘×(Ñ(¨×)<Ñ)<Ô=à×!Ñ!×/Ñ/°×2Ñ2ûð3ús   ¯0A  Á 	B3Á)A B.Â.B3N©rå   ræ   rç   rw   r€  ry   rP   r-   rì  rì  ù  s   „ òó3rP   rì  c                   ó   — e Zd Zd„ Zd„ Zy)rÑ   c                 ó   — || _         y r$   )rö   rµ   s     r-   rw   zAfterDoneHandler.__init__  s
   € Ø'ˆÕrP   c                 ó8   — | j                   j                  «        y r$   )rö   r’  rÃ   s     r-   r€  zAfterDoneHandler.__call__  s   € Ø×Ñ×5Ñ5Õ7rP   Nr  ry   rP   r-   rÑ   rÑ     s   „ ò(ó8rP   rÑ   c                   ó   — e Zd Zd„ Zd„ Zy)rí  c                 ó   — || _         y r$   )Ú_fileobj)rr   rˆ   s     r-   rw   zOnBodyFileObjWriter.__init__  s	   € Øˆ�rP   c                 ó:   — | j                   j                  |«       y r$   )r  Úwrite)rr   rr  rÄ   s      r-   r€  zOnBodyFileObjWriter.__call__  s   € Ø�‰×Ñ˜EÕ"rP   Nr  ry   rP   r-   rí  rí    s   „ ò ó#rP   rí  c                   óL   — e Zd ZdZ ej
                  d«      Zd„ Zd„ Zd„ Z	d„ Z
y)rþ  a  Partial port of S3ArnParamHandler from botocore.

    This is used to make a determination on MRAP accesspoints for signing
    purposes. This should be safe to remove once we properly integrate auth
    resolution from Botocore into the CRT transfer integration.
    zA^(?P<resource_type>accesspoint|outpost)[/:](?P<resource_name>.+)$c                 ó"   — t        «       | _        y r$   )r   Ú_arn_parserrz   s    r-   rw   z_S3ArnParamHandler.__init__+  s   € Ü$›;ˆÕrP   c                 ó@   — | j                  |«      }|€y |d   dk(  r|S y )NÚresource_typeÚaccesspoint)Ú_get_arn_details_from_bucket©rr   r†   Úarn_detailss      r-   rÿ  z_S3ArnParamHandler.handle_arn.  s3   € Ø×7Ñ7¸Ó?ˆØÐØØ�Ñ'¨=Ò8ØÐð 9rP   c                 ó~   — 	 | j                   j                  |«      }| j                  |«       |S # t        $ r Y y w xY wr$   )r  Ú	parse_arnÚ_add_resource_type_and_namer   r  s      r-   r  z/_S3ArnParamHandler._get_arn_details_from_bucket5  sF   € ð	Ø×*Ñ*×4Ñ4°VÓ<ˆKØ×,Ñ,¨[Ô9ØÐøÜ"ò 	ØØð	ús   ‚-0 °	<»<c                 ó–   — | j                   j                  |d   «      }|r)|j                  d«      |d<   |j                  d«      |d<   y y )Nr£   r  rü  )Ú_RESOURCE_REGEXr¢   Úgroup)rr   r  r¢   s      r-   r!  z._S3ArnParamHandler._add_resource_type_and_name>  sK   € Ø×$Ñ$×*Ñ*¨;°zÑ+BÓCˆÙØ+0¯;©;°Ó+GˆK˜Ñ(Ø+0¯;©;°Ó+GˆK˜Ò(ð rP   N)rå   ræ   rç   rñ   ÚreÚcompiler#  rw   rÿ  r  r!  ry   rP   r-   rþ  rþ    s1   „ ñð !�b—j‘jØLó€Oò'òòóHrP   rþ  r$   )LÚloggingr%  rn   Úcollectionsr   Úior   Úawscrt.httpr&   Ú	awscrt.s3Úbotocore.awsrequestrF  Úbotocore.sessionÚawscrt.authr   r   r   r   Ú	awscrt.ior	   r
   r   r   r   r   r   r   r   Úbotocore.compatr   Úbotocore.configr   Úbotocore.exceptionsr   r   Úbotocore.utilsr   r   Ús3transfer.constantsr   r   Ús3transfer.exceptionsr   Ús3transfer.futuresr   r   Ús3transfer.managerr   Ús3transfer.utilsr   r   r    r!   r"   Ú	getLoggerrå   rS   r%   r.   rO   rD   rb   rd   rÏ   rÐ   r  r
  rI  ru  rÎ   r   ri   rì  rÑ   rí  rþ  ry   rP   r-   ú<module>r:     s_  ðó Û 	Û Ý "Ý ã Û Û Û ÷ó ÷õ ÷ @Ñ ?Ý Ý $Ý "ß Fß 9ç >Ý 6ß CÝ .÷õ ð 
ˆ×	Ñ	˜8Ó	$€àÐ òð6 "ØØØ�"‰fØØó[ó|ò$0÷Pñ Pôf"Ð&ô "ô*#BÐ*ô #B÷L?ñ ?ô&b,Ð#;ô b,ôJ�gô ÷*ñ *÷&F<ñ F<ñR  Ð 4°v¸}Ð6MÓNÐ ÷y!ñ y!÷x3ñ 3÷,8ñ 8÷#ñ #÷#Hò #HrP   