§
    =xÅjRY  ã                   óÚ   — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZ d dlmZmZmZmZ  G d„ de¦  «        Z G d	„ d
e	¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Ú	parse_qsl)ÚClientError)ÚS3CopyFailedError)ÚCompleteMultipartUploadTaskÚCreateMultipartUploadTaskÚSubmissionTaskÚTask)ÚChunksizeAdjusterÚcalculate_range_parameterÚget_callbacksÚget_filtered_dictc            
       ó®   — e Zd ZdZdddddddd	d
dœ	Zg d¢Zg d¢Zg d¢Zg d¢Zd	d
gZ	g d¢Z
d	d
gZd	d
gZg d¢Zd„ Zd„ Z	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚCopySubmissionTaskz+Task for submitting tasks to execute a copyÚIfMatchÚIfModifiedSinceÚIfNoneMatchÚIfUnmodifiedSinceÚSSECustomerKeyÚSSECustomerAlgorithmÚSSECustomerKeyMD5ÚRequestPayerÚExpectedBucketOwner)	ÚCopySourceIfMatchÚCopySourceIfModifiedSinceÚCopySourceIfNoneMatchÚCopySourceIfUnmodifiedSinceÚCopySourceSSECustomerKeyÚCopySourceSSECustomerAlgorithmÚCopySourceSSECustomerKeyMD5r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   ÚMetadataDirectiveÚTaggingDirectiveÚAnnotationDirectiveÚTagging)ÚCacheControlÚContentDispositionÚContentEncodingÚContentLanguageÚContentTypeÚExpiresÚMetadata)r   r   r   r   r   )r   r   ÚChecksumAlgorithmc           	      óæ  — i }|j         j        }d}t          |j        t          ¦  «        r|j                             d¦  «        }|j         j        �|j         j        €È|                      |j        ¦  «        }	|j	        }
|
 
                    ¦   «         D ]\  }}|| j        v r||	| j        |         <   Œ |j        j        di |	¤Ž}|j                              |d         ¦  «         |j                              |                     d¦  «        ¦  «         |                      |¦  «        }|j         j        |j        k     r|                      |||||¦  «         dS |                      |||||||¬¦  «         dS )aÒ  
        :param client: The client associated with the transfer manager

        :type config: s3transfer.manager.TransferConfig
        :param config: The transfer config associated with the transfer
            manager

        :type osutil: s3transfer.utils.OSUtil
        :param osutil: The os utility associated to the transfer manager

        :type request_executor: s3transfer.futures.BoundedExecutor
        :param request_executor: The request executor associated with the
            transfer manager

        :type transfer_future: s3transfer.futures.TransferFuture
        :param transfer_future: The transfer future associated with the
            transfer request that tasks are being submitted for
        NÚ	VersionIdÚContentLengthÚETag)Úsource_version_id© )ÚmetaÚ	call_argsÚ
isinstanceÚcopy_sourceÚdictÚgetÚsizeÚetagÚ)_get_head_object_request_from_copy_sourceÚ
extra_argsÚitemsÚEXTRA_ARGS_TO_HEAD_ARGS_MAPPINGÚsource_clientÚhead_objectÚprovide_transfer_sizeÚprovide_object_etagÚ_extract_preserved_metadataÚmultipart_thresholdÚ_submit_copy_requestÚ_submit_multipart_request)ÚselfÚclientÚconfigÚosutilÚrequest_executorÚtransfer_futureÚpreserved_metadatar3   r0   Úhead_object_requestr;   ÚparamÚvalueÚresponses                 úBC:\Projects\Historical\venv\Lib\site-packages\s3transfer/copies.pyÚ_submitzCopySubmissionTask._submito   sÚ  € ð*  ÐØ#Ô(Ô2ˆ	Ø ÐÝ�iÔ+­TÑ2Ô2ð 	GØ )Ô 5× 9Ò 9¸+Ñ FÔ FÐàÔ Ô%Ð-ØÔ#Ô(Ð0ð ×>Ò>ØÔ)ñô ð  ð
 #Ô-ˆJð !+× 0Ò 0Ñ 2Ô 2ð ð ‘��uØ˜DÔ@Ð@Ð@ð ð (ØÔ<¸UÔCñøð ;�yÔ.Ô:ð ð Ø%ðð ˆHð Ô ×6Ò6Ø˜Ô)ñô ð ð
 Ô ×4Ò4°X·\²\À&Ñ5IÔ5IÑJÔJÐJØ!%×!AÒ!AÀ(Ñ!KÔ!KÐð ÔÔ$ vÔ'AÒAÐAØ×%Ò%Ø˜ Ð(8¸/ñô ð ð ð ð ×*Ò*ØØØØ ØØ"Ø"3ð +ñ ô ð ð ð ó    c                 óê   — |j         j        }t          |d¦  «        }| j                             |t          | j        ||j        |j        |j        |j	        ||j         j
        dœd¬¦  «        ¦  «         d S )NÚprogress)rG   r5   ÚbucketÚkeyr;   Ú	callbacksr8   T)Útransfer_coordinatorÚmain_kwargsÚis_final)r2   r3   r   Ú_transfer_coordinatorÚsubmitÚCopyObjectTaskr5   rV   rW   r;   r8   )rF   rG   rH   rI   rJ   rK   r3   Úprogress_callbackss           rQ   rD   z'CopySubmissionTask._submit_copy_request½   s˜   € ð $Ô(Ô2ˆ	õ +¨?¸JÑGÔGÐð 	Ô"×)Ò)ØÝØ%)Ô%?à$Ø#,Ô#8Ø'Ô.Ø$œ=Ø"+Ô"6Ø!3Ø+Ô0Ô5ðð ð ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
rS   Nc                 óþ  — |j         j        }|                      |j        |pi ¦  «        }	i }
|	                     ¦   «         D ]\  }}|| j        vr||
|<   Œ| j                             |t          | j        ||j	        |j
        |
dœ¬¦  «        ¦  «        }|j        }t          ¦   «         }|                     ||j         j        ¦  «        }t          t!          j        |j         j        t%          |¦  «        z  ¦  «        ¦  «        }g }t'          |d¦  «        }t)          d|dz   ¦  «        D ]ö}|                      |j        ¦  «        }t-          ||dz
  ||j         j        ¦  «        |d<   |j         j        �|j         j        |d<   |                      ||dz
  ||j         j        ¦  «        }|j                             d¦  «        }|                     | j                             |t7          | j        ||j        |j	        |j
        |||||dœ	d	|i¬
¦  «        ¦  «        ¦  «         Œ÷|                      |j        ¦  «        }| j                             |t=          | j        ||j	        |j
        |||dœ||dœd¬¦  «        ¦  «         d S )N)rG   rV   rW   r;   )rY   rZ   rU   é   ÚCopySourceRanger   r+   )	rG   r5   rV   rW   Úpart_numberr;   rX   r8   Úchecksum_algorithmÚ	upload_id)rY   rZ   Úpending_main_kwargs)rG   rV   rW   r;   r3   r0   )re   ÚpartsT)rY   rZ   rf   r[   )r2   r3   Ú_apply_preserved_metadatar;   r<   ÚCREATE_MULTIPART_ARGS_BLACKLISTr\   r]   r   rV   rW   Úmultipart_chunksizer
   Úadjust_chunksizer8   ÚintÚmathÚceilÚfloatr   ÚrangeÚ_extra_upload_part_argsr   r9   Ú_get_transfer_sizer7   ÚappendÚCopyPartTaskr5   Ú_extra_complete_multipart_argsÚCopyCompleteMultipartUploadTask)rF   rG   rH   rI   rJ   rK   rL   r0   r3   Úmerged_extra_argsÚcreate_multipart_extra_argsrN   ÚvalÚcreate_multipart_futureÚ	part_sizeÚadjusterÚ	num_partsÚpart_futuresr_   rc   Úextra_part_argsr8   rd   Úcomplete_multipart_extra_argss                           rQ   rE   z,CopySubmissionTask._submit_multipart_request×   s/  € ð $Ô(Ô2ˆ	Ø ×:Ò:ØÔ Ð"4Ð":¸ñ
ô 
Ðð ')Ð#Ø+×1Ò1Ñ3Ô3ð 	9ð 	9‰JˆE�3Ø˜DÔ@Ð@Ð@Ø58Ð+¨EÑ2øà"&Ô"<×"CÒ"CØÝ%Ø%)Ô%?à$Ø'Ô.Ø$œ=Ø"=ð	ð ðñ ô ñ#
ô #
Ðð Ô.ˆ	Ý$Ñ&Ô&ˆØ×-Ò-Ø�Ô+Ô0ñ
ô 
ˆ	õ ÝŒI�oÔ*Ô/µ%¸	Ñ2BÔ2BÑBÑCÔCñ
ô 
ˆ	ð
 ˆÝ*¨?¸JÑGÔGÐå   I°¡MÑ2Ô2ð 0	ð 0	ˆKØ"×:Ò:ØÔ$ñô ˆOõ 2KØØ˜a‘ØØÔ$Ô)ñ	2ô 2ˆOÐ-Ñ.ð Ô#Ô(Ð4à#Ô(Ô-ð  Ð 3Ñ4ð
 ×*Ò*ØØ˜a‘ØØÔ$Ô)ñ	ô ˆDð "+Ô!5×!9Ò!9Ð:MÑ!NÔ!NÐØ×ÒØÔ*×1Ò1Ø$Ý Ø-1Ô-Gà&,Ø+4Ô+@Ø&/Ô&6Ø#,¤=Ø+6Ø*9Ø);Ø$(Ø2Dð
%ð 
%ð (Ð)@ð-ðñ ô ñô ñô ð ð ð. )-×(KÒ(KØÔ ñ)
ô )
Ð%ð
 	Ô"×)Ò)ØÝ+Ø%)Ô%?à$Ø'Ô.Ø$œ=Ø"?Ø!*Ø):ðð ð "9Ø)ð%ð %ð ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
rS   c                 ó<   — i }| j         D ]}||v r||         ||<   Œ|S ©N©ÚPRESERVED_METADATA_FIELDS)rF   Úhead_object_responseÚ	preservedÚfields       rQ   rB   z.CopySubmissionTask._extract_preserved_metadataT  s;   € Øˆ	ØÔ3ð 	?ð 	?ˆEØÐ,Ð,Ð,Ø#7¸Ô#>�	˜%Ñ øØÐrS   c                 ó¨   ‡ — |                      d¦  «        dk    r|S ˆ fd„|                     ¦   «         D ¦   «         }|                     |¦  «         |S )Nr    ÚREPLACEc                 ó.   •— i | ]\  }}|‰j         v¯||“ŒS r1   rƒ   )Ú.0ÚkÚvrF   s      €rQ   ú
<dictcomp>z@CopySubmissionTask._apply_preserved_metadata.<locals>.<dictcomp>a  s7   ø€ ð 
ð 
ð 
á��1Ø˜Ô6Ð6Ð6ð ˆqà6Ð6Ð6rS   )r7   r<   Úupdate)rF   r;   rL   Úresults   `   rQ   rh   z,CopySubmissionTask._apply_preserved_metadata[  sq   ø€ ð �>Š>Ð-Ñ.Ô.°)Ò;Ð;ØÐð
ð 
ð 
ð 
à"×(Ò(Ñ*Ô*ð
ñ 
ô 
ˆð
 	�ŠÐ(Ñ)Ô)Ð)ØˆrS   c                 óš   — t          |t          ¦  «        rt          j        |¦  «        S t          d|› dt	          |¦  «        › d�¦  «        ‚)NzLExpecting dictionary formatted: {"Bucket": bucket_name, "Key": key} but got z	 or type ú.)r4   r6   ÚcopyÚ	TypeErrorÚtype)rF   r5   s     rQ   r:   z<CopySubmissionTask._get_head_object_request_from_copy_sourcei  sh   € Ý�k¥4Ñ(Ô(ð 	Ý”9˜[Ñ)Ô)Ð)åðFà&ðFð Få15°kÑ1BÔ1BðFð Fð Fñô ð rS   c                 ó,   — t          || j        ¦  «        S r‚   )r   ÚUPLOAD_PART_COPY_ARGS©rF   r;   s     rQ   rq   z*CopySubmissionTask._extra_upload_part_argss  s   € õ ! ¨TÔ-GÑHÔHÐHrS   c                 ó,   — t          || j        ¦  «        S r‚   )r   ÚCOMPLETE_MULTIPART_ARGSr˜   s     rQ   ru   z1CopySubmissionTask._extra_complete_multipart_argsx  s   € Ý  ¨TÔ-IÑJÔJÐJrS   c                 ó(   — ||dz
  k    r|||z  z
  S |S )Nra   r1   )rF   r{   Ú
part_indexr}   Útotal_transfer_sizes        rQ   rr   z%CopySubmissionTask._get_transfer_size{  s+   € ð ˜ Q™Ò&Ð&ð '¨*°yÑ*@ÑAÐAØÐrS   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   r—   ri   r„   rš   ÚGET_OBJECT_TAGGING_ARGSÚPUT_OBJECT_TAGGING_ARGSÚLIST_OBJECT_ANNOTATIONS_ARGSÚGET_OBJECT_ANNOTATION_ARGSÚPUT_OBJECT_ANNOTATION_ARGSrR   rD   rE   rB   rh   r:   rq   ru   rr   r1   rS   rQ   r   r   "   s|  € € € € € Ø5Ð5ð 'Ø%6Ø!.Ø':Ø$4Ø*@Ø':Ø&Ø4ð
'ð 
'Ð#ðð ð Ðð'ð 'ð 'Ð#ð!ð !ð !Ððð ð Ðð  .Ð/DÐEÐðð ð Ðð
 %3Ð4IÐ#JÐ Ø"0Ð2GÐ!HÐð"ð "ð "ÐðLð Lð Lð\
ð 
ð 
ðB  Øð{
ð {
ð {
ð {
ðzð ð ðð ð ðð ð ðIð Ið Ið
Kð Kð Kðð ð ð ð rS   r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )rv   zÜCompleteMultipartUpload variant that also applies tags and annotations.

    After the destination object is finalized, copies/applies tags and
    annotations inline. Errors during apply propagate as task failures.
    c	                 óä   —  |j         d|||d|idœ|¤Ž}	|	                     d¦  «        }
|	                     d¦  «        }|                      ||||¦  «         |                      |||||
¦  «         d S )NÚParts)ÚBucketÚKeyÚUploadIdÚMultipartUploadr/   r-   r1   )Úcomplete_multipart_uploadr7   Ú_apply_tagsÚ_apply_annotations)rF   rG   rV   rW   re   rg   r;   r3   r0   rP   Ú	dest_etagÚdest_version_ids               rQ   Ú_mainz%CopyCompleteMultipartUploadTask._mainŒ  sª   € ð 4�6Ô3ð 
ØØØØ$ eÐ,ð	
ð 
ð
 ð
ð 
ˆð —L’L Ñ(Ô(ˆ	Ø"Ÿ,š, {Ñ3Ô3ˆØ×Ò˜ Ð,=¸ÑOÔOÐOØ×ÒØ�IÐ0°/À9ñ	
ô 	
ð 	
ð 	
ð 	
rS   c                 ó  — |j         }|                     d¦  «        }|dvrd S |dk    rc|j        d         |j        d         dœt          |t          j        ¦  «        ¥}|r||d<    |j        j        di |¤Ž                     dg ¦  «        }n/d	„ t          |                     d
d¦  «        d¬¦  «        D ¦   «         }|sd S |j	        |j
        d|idœt          |t          j        ¦  «        ¥}	|r||	d<    |j        di |	¤Ž d S )Nr!   )ÚCOPYr‰   rµ   rª   r«   ©rª   r«   r-   ÚTagSetc                 ó   — g | ]
\  }}||d œ‘ŒS ))r«   ÚValuer1   )r‹   rŒ   r�   s      rQ   ú
<listcomp>z?CopyCompleteMultipartUploadTask._apply_tags.<locals>.<listcomp>º  s4   € ð ð ð á�A�qð  AÐ&Ð&ðð ð rS   r#   Ú T)Úkeep_blank_values)rª   r«   r#   r1   )r;   r7   r5   r   r   r¢   r>   Úget_object_taggingr   rV   rW   r£   Úput_object_tagging)
rF   rG   r3   r0   r²   r;   Ú	directiveÚ
src_kwargsÚtag_setÚ
put_kwargss
             rQ   r¯   z+CopyCompleteMultipartUploadTask._apply_tags¥  s„  € ð Ô)ˆ
Ø—N’NÐ#5Ñ6Ô6ˆ	ØÐ/Ð/Ð/ØˆFØ˜ÒÐà#Ô/°Ô9Ø Ô,¨UÔ3ðð õ $ØÕ 2Ô Jñô ðˆJð !ð <Ø*;�
˜;Ñ'Ø@�iÔ-Ô@ð ð Øðð çŠc�(˜BÑÔð ˆGðð å%Ø—N’N 9¨bÑ1Ô1Ø&*ðñ ô ðñ ô ˆGð ð 	ØˆFàÔ&Ø”=Ø  'Ð*ð
ð 
õ  ØÕ.ÔFñô ð	
ˆ
ð ð 	6Ø&5ˆJ�{Ñ#Ø!ˆÔ!Ð/Ð/ JÐ/Ð/Ð/Ð/Ð/rS   c                 óV  — |j         }|                     d¦  «        dk    rd S |j        d         |j        d         dœ}|r||d<   i |¥t          |t          j        ¦  «        ¥}i |¥t          |t          j        ¦  «        ¥}	t          |t          j        ¦  «        }
 |j        j	        di |¤Ž}g }i }|                     dg ¦  «        D ]˜}|d         } |j        j
        di |	¤d|i¤Ž}|j        |j        ||d	                              ¦   «         d
œ|
¥}|r||d<   |r||d<   	  |j        di |¤Ž |                     |¦  «         Œ}# t           $ r}|||<   Y d }~Œ‘d }~ww xY w|rGt#          d|j        › d|j        › d|› dt%          |                     ¦   «         ¦  «        › d|› �
¦  «        ‚d S )Nr"   rµ   rª   r«   r¶   r-   ÚAnnotationsÚAnnotationNameÚAnnotationPayload)rª   r«   rÅ   rÆ   ÚObjectIfMatchz#Failed to copy annotations to s3://ú/z. Succeeded: z
. Failed: z
. Errors: r1   )r;   r7   r5   r   r   r¤   r¥   r¦   r>   Úlist_object_annotationsÚget_object_annotationrV   rW   ÚreadÚput_object_annotationrs   Ú	Exceptionr   ÚlistÚkeys)rF   rG   r3   r0   r²   r±   r;   Úsrc_baseÚlist_kwargsÚget_kwargs_baseÚput_passthroughÚlist_responseÚ	succeededÚfailedÚ
annotationÚnameÚpayload_responserÂ   Úes                      rQ   r°   z2CopyCompleteMultipartUploadTask._apply_annotationsÏ  s«  € ð Ô)ˆ
Ø�>Š>Ð/Ñ0Ô0°FÒ:Ð:ØˆFàÔ+¨HÔ5ØÔ(¨Ô/ð
ð 
ˆð ð 	6Ø$5ˆH�[Ñ!ð
Øð
åØÕ.ÔKñô ð
ˆð
Øð
åØÕ.ÔIñô ð
ˆõ ,ØÕ*ÔEñ
ô 
ˆð H˜	Ô/ÔGð 
ð 
Øð
ð 
ˆð ˆ	ØˆØ'×+Ò+¨M¸2Ñ>Ô>ð 	!ð 	!ˆJØÐ.Ô/ˆDØL˜yÔ6ÔLð  ð  Ø!ð ð  à#ð ð  ð  Ðð
 $Ô*Ø ”}Ø"&Ø%5Ø'ô&ç’$‘&”&ðð ð "ðˆJð ð :Ø*9�
˜;Ñ'Øð 8Ø.7�
˜?Ñ+ð!Ø,�Ô,Ð:Ð:¨zÐ:Ð:Ð:Ø× Ò  Ñ&Ô&Ð&Ð&øÝð !ð !ð !Ø ��t‘�����øøøøð!øøøàð 	Ý#ð$Ø!Ô(ð$ð $Ø+4¬=ð$ð $à'ð$ð $õ   §¢¡¤Ñ.Ô.ð$ð $ð "ð	$ð $ñô ð ð	ð 	s   Ä!"EÅ
EÅEÅEN)rž   rŸ   r    r¡   r³   r¯   r°   r1   rS   rQ   rv   rv   …  sQ   € € € € € ðð ð
ð 
ð 
ð2(0ð (0ð (0ðTEð Eð Eð Eð ErS   rv   c                   ó   — e Zd ZdZd„ ZdS )r^   zTask to do a nonmultipart copyc                 óJ   —  |j         d|||dœ|¤Ž |D ]} ||¬¦  «         ŒdS )aÿ  
        :param client: The client to use when calling PutObject
        :param copy_source: The CopySource parameter to use
        :param bucket: The name of the bucket to copy to
        :param key: The name of the key to copy to
        :param extra_args: A dictionary of any extra arguments that may be
            used in the upload.
        :param callbacks: List of callbacks to call after copy
        :param size: The size of the transfer. This value is passed into
            the callbacks

        )Ú
CopySourcerª   r«   ©Úbytes_transferredNr1   )Úcopy_object)	rF   rG   r5   rV   rW   r;   rX   r8   Úcallbacks	            rQ   r³   zCopyObjectTask._main  se   € ð 	ˆÔð 	
Ø"¨6°sð	
ð 	
Ø>Hð	
ð 	
ð 	
ð "ð 	-ð 	-ˆHØˆH tÐ,Ñ,Ô,Ð,Ð,ð	-ð 	-rS   N©rž   rŸ   r    r¡   r³   r1   rS   rQ   r^   r^     s)   € € € € € Ø(Ð(ð-ð -ð -ð -ð -rS   r^   c                   ó   — e Zd ZdZ	 dd„ZdS )rt   z)Task to upload a part in a multipart copyNc           	      óº  — 	  |j         d|||||dœ|¤Ž}nm# t          $ r`}|j                             di ¦  «                             d¦  «        }|d         }|d         }|dk    rt	          d|› d|› d	�¦  «        ‚‚ d
}~ww xY w|D ]} ||	¬¦  «         Œ|d         d         }||dœ}|
r2d|
                     ¦   «         › �}||d         v r|d         |         ||<   |S )a<  
        :param client: The client to use when calling PutObject
        :param copy_source: The CopySource parameter to use
        :param bucket: The name of the bucket to upload to
        :param key: The name of the key to upload to
        :param upload_id: The id of the upload
        :param part_number: The number representing the part of the multipart
            upload
        :param extra_args: A dictionary of any extra arguments that may be
            used in the upload.
        :param callbacks: List of callbacks to call after copy part
        :param size: The size of the transfer. This value is passed into
            the callbacks
        :param checksum_algorithm: The algorithm that was used to create the multipart
            upload

        :rtype: dict
        :returns: A dictionary representing a part::

            {'Etag': etag_value, 'PartNumber': part_number}

            This value can be appended to a list to be used to complete
            the multipart upload. If a checksum is in the response,
            it will also be included.
        )rÝ   rª   r«   r¬   Ú
PartNumberÚErrorÚCoder«   rª   ÚPreconditionFailedzContents of stored object "z" in bucket "z" did not match expected ETag.NrÞ   ÚCopyPartResultr/   )r/   rå   ÚChecksumr1   )Úupload_part_copyr   rP   r7   r   Úupper)rF   rG   r5   rV   rW   re   rc   r;   rX   r8   rd   rP   rÚ   Ú
error_codeÚsrc_keyÚ
src_bucketrá   r9   Úpart_metadataÚchecksum_members                       rQ   r³   zCopyPartTask._main3  sv  € ðL	Ø.�vÔ.ð Ø&ØØØ"Ø&ðð ð ðð ˆHˆHøõ ð 	ð 	ð 	ØœŸš¨°Ñ4Ô4×8Ò8¸Ñ@Ô@ˆJØ! %Ô(ˆGØ$ XÔ.ˆJØÐ1Ò1Ð1Ý'ð%°'ð %ð %Ø",ð%ð %ð %ñô ð ð øøøøð	øøøð "ð 	-ð 	-ˆHØˆH tÐ,Ñ,Ô,Ð,Ð,ØÐ(Ô)¨&Ô1ˆØ!%°[ÐAÐAˆØð 	ØEÐ);×)AÒ)AÑ)CÔ)CÐEÐEˆOØ (Ð+;Ô"<Ð<Ð<Ø19Ð:JÔ1KØ#ô2�˜oÑ.ð Ðs   ‚ –
B  AA;Á;B r‚   râ   r1   rS   rQ   rt   rt   0  s9   € € € € € Ø3Ð3ð  ðEð Eð Eð Eð Eð ErS   rt   )r“   rm   Úurllib.parser   Úbotocore.exceptionsr   Ús3transfer.exceptionsr   Ús3transfer.tasksr   r   r   r	   Ús3transfer.utilsr
   r   r   r   r   rv   r^   rt   r1   rS   rQ   ú<module>r÷      s–  ðð €€€Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "à +Ð +Ð +Ð +Ð +Ð +à 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð`ð `ð `ð `ð `˜ñ `ô `ð `ðFOð Oð Oð Oð OÐ&Añ Oô Oð Oðd-ð -ð -ð -ð -�Tñ -ô -ð -ð2Hð Hð Hð Hð H�4ñ Hô Hð Hð Hð HrS   