+
    [mÀh�8  ã                   óˆ   € ^ RI t ^ RIt^ RIHtHtHtHt ^ RIHtH	t	H
t
Ht  ! R R]4      t ! R R]4      t ! R R	]4      tR# )
é    N)ÚCompleteMultipartUploadTaskÚCreateMultipartUploadTaskÚSubmissionTaskÚTask)ÚChunksizeAdjusterÚcalculate_range_parameterÚget_callbacksÚget_filtered_dictc                   óŽ   a € ] tR t^t o RtRRRRRRRR	R
RRRRRRRRR/	t. ROt. ROt. ROtR t	R t
R tR tR tR tR tRtV tR# )ÚCopySubmissionTaskz+Task for submitting tasks to execute a copyÚCopySourceIfMatchÚIfMatchÚCopySourceIfModifiedSinceÚIfModifiedSinceÚCopySourceIfNoneMatchÚIfNoneMatchÚCopySourceIfUnmodifiedSinceÚIfUnmodifiedSinceÚCopySourceSSECustomerKeyÚSSECustomerKeyÚCopySourceSSECustomerAlgorithmÚSSECustomerAlgorithmÚCopySourceSSECustomerKeyMD5ÚSSECustomerKeyMD5ÚRequestPayerÚExpectedBucketOwnerc                óH  € VP                   P                  f½   VP                   P                  pV P                  VP                  4      pVP
                  pVP                  4        F-  w  ršW�P                  9   g   K  V
VV P                  V	,          &   K/  	  VP                  P                  ! R/ VB pVP                   P                  VR,          4       VP                   P                  VP                  8  d   V P                  WW4V4       R# V P                  WW4V4       R# )aj  
: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ÚContentLength© )ÚmetaÚsizeÚ	call_argsÚ)_get_head_object_request_from_copy_sourceÚcopy_sourceÚ
extra_argsÚitemsÚEXTRA_ARGS_TO_HEAD_ARGS_MAPPINGÚsource_clientÚhead_objectÚprovide_transfer_sizeÚmultipart_thresholdÚ_submit_copy_requestÚ_submit_multipart_request)ÚselfÚclientÚconfigÚosutilÚrequest_executorÚtransfer_futurer"   Úhead_object_requestr%   ÚparamÚvalueÚresponses   &&&&&&      Ú3/usr/lib/python3/dist-packages/s3transfer/copies.pyÚ_submitÚCopySubmissionTask._submitP   s  € ð, ×Ñ×$Ñ$Ò,ð (×,Ñ,×6Ñ6ˆIà×>Ñ>Ø×)Ñ)óð  ð
 #×-Ñ-ˆJð !+× 0Ñ 0Ö 2‘�Ø×@Ñ@Ö@ð ð (Ø×<Ñ<¸UÕCóñ !3ð !×.Ñ.×:Ò:ñ Ø%ñˆHð × Ñ ×6Ñ6Ø˜Õ)ôð ×Ñ×$Ñ$ v×'AÑ'AÔAØ×%Ñ%Ø ¸/öð ×*Ñ*Ø ¸/öó    c                óB  € VP                   P                  p\        VR 4      pV P                  P	                  V\        V P                  RVRVP                  RVP                  RVP                  RVP                  RVRVP                   P                  /RR	7      4       R
# )Úprogressr/   r$   ÚbucketÚkeyr%   Ú	callbacksr!   T)Útransfer_coordinatorÚmain_kwargsÚis_finalN)r    r"   r	   Ú_transfer_coordinatorÚsubmitÚCopyObjectTaskr$   r>   r?   r%   r!   )r.   r/   r0   r1   r2   r3   r"   Úprogress_callbackss   &&&&&&  r8   r,   Ú'CopySubmissionTask._submit_copy_requestŽ   sž   € ð $×(Ñ(×2Ñ2ˆ	ô +¨?¸JÓGÐð 	×"Ñ"×)Ñ)ØÜØ%)×%?Ñ%?à˜fØ! 9×#8Ñ#8Ø˜i×.Ñ.Ø˜9Ÿ=™=Ø  )×"6Ñ"6ØÐ!3Ø˜O×0Ñ0×5Ñ5ðð ôö	
r;   c                óv  € VP                   P                  p/ pVP                  P                  4        F  w  r‰W€P                  9  g   K  W—V&   K  	  V P
                  P                  V\        V P
                  R VRVP                  RVP                  RV/R7      4      p
VP                  p\        4       pVP                  WµP                   P                  4      p\        \        P                   ! VP                   P                  \#        V4      ,          4      4      p. p\%        VR4      p\'        ^V^,           4       EF  pV P)                  VP                  4      p\+        VV^,
          VVP                   P                  4      VR&   V P-                  VV^,
          VVP                   P                  4      pVP                  P/                  R4      pVP1                  V P
                  P                  V\3        V P
                  R VRVP4                  RVP                  RVP                  R	VRVR
VRVRV/	RV
/R7      4      4       EK  	  V P7                  VP                  4      pV P
                  P                  V\9        V P
                  R VRVP                  RVP                  RV/RV
RV/RR7      4       R# )r/   r>   r?   r%   )rA   rB   r=   ÚCopySourceRangeÚChecksumAlgorithmr$   Úpart_numberr@   r!   Úchecksum_algorithmÚ	upload_id)rA   rB   Úpending_main_kwargsÚpartsT)rA   rB   rO   rC   N)r    r"   r%   r&   ÚCREATE_MULTIPART_ARGS_BLACKLISTrD   rE   r   r>   r?   Úmultipart_chunksizer   Úadjust_chunksizer!   ÚintÚmathÚceilÚfloatr	   ÚrangeÚ_extra_upload_part_argsr   Ú_get_transfer_sizeÚgetÚappendÚCopyPartTaskr$   Ú_extra_complete_multipart_argsr   )r.   r/   r0   r1   r2   r3   r"   Úcreate_multipart_extra_argsr5   ÚvalÚcreate_multipart_futureÚ	part_sizeÚadjusterÚ	num_partsÚpart_futuresrG   rL   Úextra_part_argsr!   rM   Úcomplete_multipart_extra_argss   &&&&&&               r8   r-   Ú,CopySubmissionTask._submit_multipart_request¨   sÁ  € ð $×(Ñ(×2Ñ2ˆ	ð ')Ð#Ø#×.Ñ.×4Ñ4Ö6‰JˆEØ×@Ñ@Ö@Ø58¨EÓ2ñ 7ð #'×"<Ñ"<×"CÑ"CØÜ%Ø%)×%?Ñ%?à˜fØ˜i×.Ñ.Ø˜9Ÿ=™=Ø Ð"=ð	ôó#
Ðð ×.Ñ.ˆ	Ü$Ó&ˆØ×-Ñ-Ø×+Ñ+×0Ñ0ó
ˆ	ô Ü�IŠI�o×*Ñ*×/Ñ/´%¸	Ó2BÕBÓCó
ˆ	ð
 ˆÜ*¨?¸JÓGÐä   I°¥M×2ˆKØ"×:Ñ:Ø×$Ñ$óˆOô 2KØØ˜a•ØØ×$Ñ$×)Ñ)ó	2ˆOÐ-Ñ.ð ×*Ñ*ØØ˜a•ØØ×$Ñ$×)Ñ)ó	ˆDð "+×!5Ñ!5×!9Ñ!9Ð:MÓ!NÐØ×ÑØ×*Ñ*×1Ñ1Ø$Ü Ø-1×-GÑ-Gà$ fØ)¨9×+@Ñ+@Ø$ i×&6Ñ&6Ø! 9§=¡=Ø)¨;Ø(¨/Ø'Ð);Ø" DØ0Ð2Dð
%ð (Ð)@ð-ôó÷ñ/ 3ð\ )-×(KÑ(KØ× Ñ ó)
Ð%ð 	×"Ñ"×)Ñ)ØÜ'Ø%)×%?Ñ%?à˜fØ˜i×.Ñ.Ø˜9Ÿ=™=Ø Ð"?ð	ð  Ð!8Ø˜\ð%ð ôö	
r;   c                ó�   € \        V\        4      '       d   \        P                  ! V4      # \        R V R\	        V4       R24      h)zLExpecting dictionary formatted: {"Bucket": bucket_name, "Key": key} but got z	 or type Ú.)Ú
isinstanceÚdictÚcopyÚ	TypeErrorÚtype)r.   r$   s   &&r8   r#   Ú<CopySubmissionTask._get_head_object_request_from_copy_source  sI   € Ü�k¤4×(Ò(Ü—9’9˜[Ó)Ð)äðà&˜- y´°kÓ1BÐ0CÀ1ðFóð r;   c                ó,   € \        WP                  4      # ©N)r
   ÚUPLOAD_PART_COPY_ARGS©r.   r%   s   &&r8   rY   Ú*CopySubmissionTask._extra_upload_part_args  s   € ô ! ×-GÑ-GÓHÐHr;   c                ó,   € \        WP                  4      # rr   )r
   ÚCOMPLETE_MULTIPART_ARGSrt   s   &&r8   r^   Ú1CopySubmissionTask._extra_complete_multipart_args#  s   € Ü  ×-IÑ-IÓJÐJr;   c                ó>   € W#^,
          8X  d   WBV,          ,
          # V# )é   r   )r.   rb   Ú
part_indexrd   Útotal_transfer_sizes   &&&&&r8   rZ   Ú%CopySubmissionTask._get_transfer_size&  s$   € ð  Q�Ô&ð '°yÕ*@ÕAÐAØÐr;   r   N)r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   ÚMetadataDirectiveÚTaggingDirective)r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r'   rs   rQ   rw   r9   r,   r-   r#   rY   r^   rZ   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r8   r   r      sŠ   ø‡ € Ù5ð 	˜YØ#Ð%6Ø Ø%Ð':Ø"Ð$4Ø(Ð*@Ø%Ð':Ø˜ØÐ4ð
'Ð#òÐò
'Ð#òÐò<ò|
ò4j
òXòIò
K÷ð r;   r   c                   ó*   a € ] tR tRt o RtR tRtV tR# )rF   i0  zTask to do a nonmultipart copyc           	     óZ   € VP                   ! RRVRVRV/VB  V F  pV! VR7       K  	  R# )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

Ú
CopySourceÚBucketÚKey©Úbytes_transferredNr   )Úcopy_object)	r.   r/   r$   r>   r?   r%   r@   r!   Úcallbacks	   &&&&&&&& r8   Ú_mainÚCopyObjectTask._main3  sF   € ð 	×Òñ 	
Ø"ð	
Ø+1ð	
Ø7:ð	
Ø>Hò	
ó "ˆHÙ t×,ó "r;   r   N©r€   r�   r‚   rƒ   r„   r’   r…   r†   r‡   s   @r8   rF   rF   0  s   ø‡ € Ù(÷-ð -r;   rF   c                   ó.   a € ] tR tRt o RtRR ltRtV tR# )r]   iI  z)Task to upload a part in a multipart copyNc                ó  € VP                   ! R
RVRVRVRVRV/VB pV F  pV! V	R7       K  	  VR,          R,          pRVRV/pV
'       d3   R	V
P                  4        2pWûR,          9   d   VR,          V,          Wï&   V# )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�   ÚUploadIdÚ
PartNumberrŽ   ÚCopyPartResultÚETagÚChecksumr   )Úupload_part_copyÚupper)r.   r/   r$   r>   r?   rN   rL   r%   r@   r!   rM   r7   r‘   ÚetagÚpart_metadataÚchecksum_members   &&&&&&&&&&&     r8   r’   ÚCopyPartTask._mainL  sÃ   € ðL ×*Ò*ñ 
Ø"ð
àð
ð ð
ð ð	
ð
 #ð
ð ñ
ˆó "ˆHÙ t×,ñ "àÐ(Õ)¨&Õ1ˆØ  |°[ÐAˆßØ (Ð);×)AÑ)AÓ)CÐ(DÐEˆOØÐ+;Õ"<Ô<Ø19Ð:JÕ1KØ#õ2�Ñ.ð Ðr;   r   rr   r”   r‡   s   @r8   r]   r]   I  s   ø‡ € Ù3÷8ò 8r;   r]   )rm   rU   Ús3transfer.tasksr   r   r   r   Ús3transfer.utilsr   r   r	   r
   r   rF   r]   r   r;   r8   Ú<module>r¤      sH   ðó Û ÷ó ÷ó ôO˜ô Oôd-�Tô -ô2;�4ö ;r;   