ó
    Ú°›j_W  ã                   ó‚  • S r SSKrSSKrSSKrSSKJr  SSKJrJrJ	r	  SSK
JrJrJr  SSKJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJrJr  \(       a  SSKJr  OSr\R@                  " \!5      r"Sr# " S S5      r$ " S S\$5      r% " S S\$5      r& " S S\$5      r' " S S\$5      r( " S S\$5      r) " S S\$5      r* " S S\$5      r+ " S S\$5      r, " S S \$5      r- " S! S"\$5      r. " S# S$5      r/ " S% S&\5      r0S' r1 S>S( jr2S) r3S* r4S+ r5S, r6S- r7S. r8 S>S/ jr9S0 r:S1 r;S2 r<\%\,\-\.S3.r=/ S4Qr>\(       ah  \&\'S5.r?\" S65      (       a  \(\?S7'   \" S85      (       a  \)\?S9'   \*\?S:'   \+\?S;'   \=R�                  \?5        \A" S< \?R…                  5        5       5      (       d   e\C" \=R…                  5       5      rD/ S=QrEg)?aB  The interfaces in this module are not intended for public use.

This module defines interfaces for applying checksums to HTTP requests within
the context of botocore. This involves both resolving the checksum to be used
based on client configuration and environment, as well as application of the
checksum to the request.
é    N)Úcrc32)Úsha1Úsha256Úsha512)ÚHAS_CRTÚhas_minimum_crt_versionÚurlparse)ÚAwsChunkedWrapperErrorÚFlexibleChecksumErrorÚMissingDependencyException)ÚStructureShape)ÚStreamingBody)Úregister_feature_id)Úconditionally_calculate_md5Údetermine_content_lengthÚget_checksum_algorithm_headersÚhas_checksum_header)Ú	checksumsÚCRC32c                   ó6   • \ rS rSrSrS rS rS rS rS r	Sr
g	)
ÚBaseChecksumé6   é   c                 ó   • g ©N© ©ÚselfÚchunks     ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/botocore/httpchecksum.pyÚupdateÚBaseChecksum.update9   ó   € Øó    c                 ó   • g r   r   ©r   s    r    ÚdigestÚBaseChecksum.digest<   r#   r$   c                 ól   • U R                  5       n[        R                  " U5      R                  S5      $ )NÚascii)r'   Úbase64Ú	b64encodeÚdecode)r   Úbss     r    Ú	b64digestÚBaseChecksum.b64digest?   s)   € Ø�[‰[‹]ˆÜ×Ò Ó#×*Ñ*¨7Ó3Ð3r$   c                 óœ   ^ ^• TR                  5       n[        UU 4S jS5       H  nT R                  U5        M     TR                  U5        g )Nc                  ó:   >• T R                  TR                  5      $ r   )ÚreadÚ_CHUNK_SIZE)Úfileobjr   s   €€r    Ú<lambda>Ú.BaseChecksum._handle_fileobj.<locals>.<lambda>E   s   ø€  '§,¡,¨t×/?Ñ/?Ô"@r$   r$   )ÚtellÚiterr!   Úseek)r   r5   Ústart_positionr   s   ``  r    Ú_handle_fileobjÚBaseChecksum._handle_fileobjC   s9   ù€ Ø Ÿ™›ˆÜÕ@À#ÖFˆEØ�K‰K˜Öñ Gà�‰�^Õ$r$   c                 ó¼   • [        U[        [        45      (       a!  U R                  U5        U R                  5       $ U R	                  U5        U R                  5       $ r   )Ú
isinstanceÚbytesÚ	bytearrayr!   r<   r/   )r   Úbodys     r    ÚhandleÚBaseChecksum.handleI   sL   € Ü�dœU¤IÐ.×/Ñ/Ø�K‰K˜Ôð �~‰~ÓÐð × Ñ  Ô&Ø�~‰~ÓÐr$   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r4   r!   r'   r/   r<   rC   Ú__static_attributes__r   r$   r    r   r   6   s    † Ø€Kòòò4ò%õ r$   r   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrc32ChecksuméQ   c                 ó   • SU l         g ©Nr   ©Ú
_int_crc32r&   s    r    Ú__init__ÚCrc32Checksum.__init__R   ó	   € Øˆ�r$   c                 ó>   • [        XR                  5      S-  U l        g ©Nl   ÿÿ )r   rP   r   s     r    r!   ÚCrc32Checksum.updateU   s   € Ü §¡Ó7¸*ÑDˆ�r$   c                 ó6   • U R                   R                  SSS9$ ©Né   Úbig©Ú	byteorder©rP   Úto_bytesr&   s    r    r'   ÚCrc32Checksum.digestX   ó   € Ø�‰×'Ñ'¨°UÐ'Ð;Ð;r$   rO   N©rE   rF   rG   rH   rQ   r!   r'   rI   r   r$   r    rK   rK   Q   s   † òòEõ<r$   rK   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtCrc32Checksumé\   c                 ó   • SU l         g rN   rO   r&   s    r    rQ   ÚCrtCrc32Checksum.__init__^   rS   r$   c                 óX   • [         R                  " XR                  5      nUS-  U l        g rU   )Úcrt_checksumsr   rP   ©r   r   Únew_checksums      r    r!   ÚCrtCrc32Checksum.updatea   s"   € Ü$×*Ò*¨5·/±/ÓBˆØ&¨Ñ3ˆ�r$   c                 ó6   • U R                   R                  SSS9$ rX   r]   r&   s    r    r'   ÚCrtCrc32Checksum.digeste   r`   r$   rO   Nra   r   r$   r    rc   rc   \   s   † òò4õ<r$   rc   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtCrc32cChecksuméi   c                 ó   • SU l         g rN   ©Ú_int_crc32cr&   s    r    rQ   ÚCrtCrc32cChecksum.__init__k   s
   € ØˆÕr$   c                 óX   • [         R                  " XR                  5      nUS-  U l        g rU   )rh   Úcrc32crs   ri   s      r    r!   ÚCrtCrc32cChecksum.updaten   s%   € Ü$×+Ò+¨E×3CÑ3CÓDˆØ'¨*Ñ4ˆÕr$   c                 ó6   • U R                   R                  SSS9$ rX   )rs   r^   r&   s    r    r'   ÚCrtCrc32cChecksum.digestr   s   € Ø×Ñ×(Ñ(¨°eÐ(Ð<Ð<r$   rr   Nra   r   r$   r    ro   ro   i   s   † òò5õ=r$   ro   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtCrc64NvmeChecksumév   c                 ó   • SU l         g rN   ©Ú_int_crc64nvmer&   s    r    rQ   ÚCrtCrc64NvmeChecksum.__init__x   s
   € ØˆÕr$   c                 óX   • [         R                  " XR                  5      nUS-  U l        g )Nl   ÿÿÿÿ )rh   Ú	crc64nvmer   ri   s      r    r!   ÚCrtCrc64NvmeChecksum.update{   s&   € Ü$×.Ò.¨u×6IÑ6IÓJˆØ*Ð-?Ñ?ˆÕr$   c                 ó6   • U R                   R                  SSS9$ )Né   rZ   r[   )r   r^   r&   s    r    r'   ÚCrtCrc64NvmeChecksum.digest   s   € Ø×"Ñ"×+Ñ+¨A¸Ð+Ð?Ð?r$   r~   Nra   r   r$   r    r{   r{   v   s   † ò ò@õ@r$   r{   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtXxhash64Checksuméƒ   c                 óJ   • [         R                  R                  5       U l        g r   )rh   ÚXXHashÚnew_xxhash64Ú_xxhashr&   s    r    rQ   ÚCrtXxhash64Checksum.__init__…   s   € Ü$×+Ñ+×8Ñ8Ó:ˆ�r$   c                 ó:   • U R                   R                  U5        g r   ©r�   r!   r   s     r    r!   ÚCrtXxhash64Checksum.updateˆ   ó   € Ø�‰×Ñ˜EÕ"r$   c                 ó6   • U R                   R                  5       $ r   ©r�   Úfinalizer&   s    r    r'   ÚCrtXxhash64Checksum.digest‹   ó   € Ø�|‰|×$Ñ$Ó&Ð&r$   ©r�   Nra   r   r$   r    rˆ   rˆ   ƒ   s   † ò;ò#õ'r$   rˆ   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtXxhash3Checksumé�   c                 óJ   • [         R                  R                  5       U l        g r   )rh   r‹   Únew_xxhash3_64r�   r&   s    r    rQ   ÚCrtXxhash3Checksum.__init__‘   s   € Ü$×+Ñ+×:Ñ:Ó<ˆ�r$   c                 ó:   • U R                   R                  U5        g r   r�   r   s     r    r!   ÚCrtXxhash3Checksum.update”   r’   r$   c                 ó6   • U R                   R                  5       $ r   r”   r&   s    r    r'   ÚCrtXxhash3Checksum.digest—   r—   r$   r˜   Nra   r   r$   r    rš   rš   �   s   † ò=ò#õ'r$   rš   c                   ó&   • \ rS rSrS rS rS rSrg)ÚCrtXxhash128Checksumé›   c                 óJ   • [         R                  R                  5       U l        g r   )rh   r‹   Únew_xxhash3_128r�   r&   s    r    rQ   ÚCrtXxhash128Checksum.__init__�   s   € Ü$×+Ñ+×;Ñ;Ó=ˆ�r$   c                 ó:   • U R                   R                  U5        g r   r�   r   s     r    r!   ÚCrtXxhash128Checksum.update    r’   r$   c                 ó6   • U R                   R                  5       $ r   r”   r&   s    r    r'   ÚCrtXxhash128Checksum.digest£   r—   r$   r˜   Nra   r   r$   r    r¤   r¤   ›   s   † ò>ò#õ'r$   r¤   c                   ó&   • \ rS rSrS rS rS rSrg)ÚSha1Checksumé§   c                 ó"   • [        5       U l        g r   )r   Ú	_checksumr&   s    r    rQ   ÚSha1Checksum.__init__¨   s   € Ü›ˆ�r$   c                 ó:   • U R                   R                  U5        g r   ©r±   r!   r   s     r    r!   ÚSha1Checksum.update«   ó   € Ø�‰×Ñ˜eÕ$r$   c                 ó6   • U R                   R                  5       $ r   ©r±   r'   r&   s    r    r'   ÚSha1Checksum.digest®   ó   € Ø�~‰~×$Ñ$Ó&Ð&r$   ©r±   Nra   r   r$   r    r®   r®   §   s   † ò ò%õ'r$   r®   c                   ó&   • \ rS rSrS rS rS rSrg)ÚSha256Checksumé²   c                 ó"   • [        5       U l        g r   )r   r±   r&   s    r    rQ   ÚSha256Checksum.__init__³   ó   € Ü›ˆ�r$   c                 ó:   • U R                   R                  U5        g r   r´   r   s     r    r!   ÚSha256Checksum.update¶   r¶   r$   c                 ó6   • U R                   R                  5       $ r   r¸   r&   s    r    r'   ÚSha256Checksum.digest¹   rº   r$   r»   Nra   r   r$   r    r½   r½   ²   ó   † ò"ò%õ'r$   r½   c                   ó&   • \ rS rSrS rS rS rSrg)ÚSha512Checksumé½   c                 ó"   • [        5       U l        g r   )r   r±   r&   s    r    rQ   ÚSha512Checksum.__init__¾   rÁ   r$   c                 ó:   • U R                   R                  U5        g r   r´   r   s     r    r!   ÚSha512Checksum.updateÁ   r¶   r$   c                 ó6   • U R                   R                  5       $ r   r¸   r&   s    r    r'   ÚSha512Checksum.digestÄ   rº   r$   r»   Nra   r   r$   r    rÈ   rÈ   ½   rÆ   r$   rÈ   c                   óN   • \ rS rSrSr   SS jrS rSS jrSS jrS r	S	 r
S
rg)ÚAwsChunkedWrapperéÈ   r   Nc                 ór   • Xl         X0l        X l        U R                  5         Uc  U R                  nX@l        g r   )Ú_rawÚ_checksum_nameÚ_checksum_clsÚ_resetÚ_DEFAULT_CHUNK_SIZEÚ_chunk_size)r   ÚrawÚchecksum_clsÚchecksum_nameÚ
chunk_sizes        r    rQ   ÚAwsChunkedWrapper.__init__Ë   s5   € ð Œ	Ø+ÔØ)ÔØ�‰ŒàÑØ×1Ñ1ˆJØ%Õr$   c                 ó|   • SU l         SU l        S U l        U R                  (       a  U R                  5       U l        g g )Nr$   F)Ú
_remainingÚ	_completer±   rÖ   r&   s    r    r×   ÚAwsChunkedWrapper._resetÛ   s5   € ØˆŒØˆŒØˆŒØ××Ø!×/Ñ/Ó1ˆD�Nð r$   c                 ó„   • US:w  d  US:w  a	  [        SS9eU R                  5         U R                  R                  S5        g )Nr   z Can only seek to start of stream©Ú	error_msg)r
   r×   rÔ   r:   )r   ÚoffsetÚwhences      r    r:   ÚAwsChunkedWrapper.seekâ   s:   € Ø�Q‹;˜& A›+Ü(Ø<ñð ð 	�‰ŒØ�	‰	�‰�qÕr$   c                 ó  • Ub  US::  a  S nU R                   (       a  U R                  (       d  gUS L =(       d    U[        U R                  5      :„  nU R                   (       dg  U(       a`  U =R                  U R                  5       -  sl        US L =(       d    U[        U R                  5      :„  nU R                   (       d	  U(       a  M`  Uc  [        U R                  5      nU R                  S U nU R                  US  U l        U$ )Nr   r$   )rá   rà   ÚlenÚ_make_chunk)r   ÚsizeÚwant_more_bytesÚ	to_returns       r    r3   ÚAwsChunkedWrapper.readê   sË   € àÑ ¨£	ØˆDð �>�> $§/§/Øð  $˜,×E¨$´°T·_±_Ó1EÑ*EˆØ—.—.¦_Ø�OŠO˜t×/Ñ/Ó1Ñ1�OØ" d˜l×I¨d´S¸¿¹Ó5IÑ.IˆOð —.—.§_ _ð
 ‰<Ü�t—‘Ó'ˆDð —O‘O E TÐ*ˆ	ØŸ/™/¨$¨%Ð0ˆŒØÐr$   c                 óì  • U R                   R                  U R                  5      n[        [	        U5      5      SS  R                  S5      nU(       + U l        U R                  (       a  U R                  R                  U5        U R                  (       a[  U R                  (       aJ  U R                  R                  S5      nU R                  R                  5       R                  S5      nSX44-  $ SX!4-  $ )Né   r*   s   0
%s:%s

s   %s
%s
)rÔ   r3   rÙ   Úhexrê   Úencoderá   r±   r!   rÕ   r/   )r   Ú	raw_chunkÚhex_lenÚnameÚchecksums        r    rë   ÚAwsChunkedWrapper._make_chunk  sº   € ð —I‘I—N‘N 4×#3Ñ#3Ó4ˆ	Ü”c˜)“nÓ% a bÐ)×0Ñ0°Ó9ˆØ&œˆŒà�>�>Ø�N‰N×!Ñ! )Ô,à�>�>˜dŸnŸnØ×&Ñ&×-Ñ-¨gÓ6ˆDØ—~‘~×/Ñ/Ó1×8Ñ8¸ÓAˆHØ(¨DÐ+;Ñ;Ð;à 'Ð!5Ñ5Ð5r$   c              #   óz   #   • U R                   (       d&  U R                  5       v •  U R                   (       d  M%  g g 7fr   )rá   rë   r&   s    r    Ú__iter__ÚAwsChunkedWrapper.__iter__  s&   é € Ø—.—.Ø×"Ñ"Ó$Ò$ð —.—.“.ùs   ‚5;¹;)r±   rÖ   rÕ   rÙ   rá   rÔ   rà   )Nzx-amz-checksumN)r   r   )rE   rF   rG   rH   rØ   rQ   r×   r:   r3   rë   rú   rI   r   r$   r    rÑ   rÑ   È   s1   † Ø%Ðð
 Ø&Øô&ò 2ôôò26õ$%r$   rÑ   c                   óJ   ^ • \ rS rSrU 4S jrSU 4S jjrU 4S jrS rSrU =r	$ )ÚStreamingChecksumBodyi  c                 ó<   >• [         TU ]  X5        X0l        X@l        g r   )ÚsuperrQ   r±   Ú	_expected)r   Ú
raw_streamÚcontent_lengthr÷   ÚexpectedÚ	__class__s        €r    rQ   ÚStreamingChecksumBody.__init__  s   ø€ Ü‰Ñ˜Ô4Ø!ŒØ!�r$   c                 ó˜   >• [         TU ]  US9nU R                  R                  U5        Ub  U(       d  US:”  a  U R	                  5         U$ )N)Úamtr   )rÿ   r3   r±   r!   Ú_validate_checksum)r   r  r   r  s      €r    r3   ÚStreamingChecksumBody.read   sC   ø€ Ü‘‘ �Ð%ˆØ�‰×Ñ˜eÔ$Ø‰;žu¨¨q«Ø×#Ñ#Ô%Øˆr$   c                 óæ   >• [         TU ]  U5      nU[        U5      :X  a  UnO[        U5      S U nU R                  R                  U5        US:X  a  [        U5      S:”  a  U R                  5         U$ rN   )rÿ   Úreadintorê   Ú
memoryviewr±   r!   r  )r   ÚbÚamount_readÚviewr  s       €r    r  ÚStreamingChecksumBody.readinto'  si   ø€ Ü‘gÑ& qÓ)ˆØœ#˜a›&Ó Ø‰Dä˜a“=  +Ð.ˆDØ�‰×Ñ˜dÔ#Ø˜!Ó¤ A£¨£
Ø×#Ñ#Ô%ØÐr$   c                 óâ   • U R                   R                  5       [        R                  " U R                  5      :w  a3  SU R                   SU R                   R                  5        3n[        US9eg )NúExpected checksum ú$ did not match calculated checksum: rä   )r±   r'   r+   Ú	b64decoder   r/   r   )r   rå   s     r    r  Ú(StreamingChecksumBody._validate_checksum2  sg   € Ø�>‰>× Ñ Ó"¤f×&6Ò&6°t·~±~Ó&FÓFà$ T§^¡^Ð$4ð 5Ø!Ÿ^™^×5Ñ5Ó7Ð8ð:ð ô (°)Ñ<Ð<ð Gr$   )r±   r   r   )
rE   rF   rG   rH   rQ   r3   r  r  rI   Ú__classcell__)r  s   @r    rý   rý     s   ø† õ"÷
õ	÷=ð =r$   rý   c                 óJ   • [        XU5        [        XU5        [        U 5        g r   )Ú"resolve_request_checksum_algorithmÚ$resolve_response_checksum_algorithmsÚ_register_checksum_feature_ids)ÚrequestÚoperation_modelÚparamss      r    Úresolve_checksum_contextr  ;  s   € Ü& wÀÔHÜ(¨À6ÔJÜ" 7Õ+r$   c                 ó<  • [        U 5      (       a  g U S   R                  S0 5      nU S   S   R                  nUR                  nUR                  =(       d    UR                  S5      nUR                  S5      nU(       ab  X‚;   a]  Uc  [
        nX(   R                  5       n	X“;  a<  [        (       d%  U	[        ;   a  [        SU	R                  5        S3S9e[        S	U	 3S
9eO_U(       d  U(       aP  US:X  aJ  U S   R                  S5      (       a  g [        R                  5       n	[        XU5      n
U
b  U
[        S.US'   Og SnUR                  (       a4  [        U S   5      R                   S:X  a  U S   S   R"                  S:w  a  SnU	USU	 3S.nXÄS'   X@S   S'   g )NÚcontextr÷   Úclient_configÚrequestChecksumRequiredÚrequestAlgorithmMemberzUsing za requires an additional dependency. You will need to pip install botocore[crt] before proceeding.)Úmsgz Unsupported checksum algorithm: rä   Úwhen_supportedÚis_presign_request)rö   ÚvalueÚrequest_algorithm_headerÚheaderÚurlÚhttpsÚs3Útrailerúx-amz-checksum-)Ú	algorithmÚinrö   Úrequest_algorithm)r   ÚgetÚrequest_checksum_calculationÚhttp_checksumÚhttp_checksum_requiredÚ_SUPPORTED_CHECKSUM_ALGORITHMSÚlowerr   Ú_CRT_CHECKSUM_ALGORITHMSr   Úupperr   ÚDEFAULT_CHECKSUM_ALGORITHMÚ$_get_request_algorithm_member_headerÚhas_streaming_inputr	   ÚschemeÚsignature_version)r  r  r  Úsupported_algorithmsÚchecksum_contextr3  r4  Úrequest_checksum_requiredÚalgorithm_memberÚalgorithm_nameÚalgorithm_member_headerÚlocation_typer/  s                r    r  r  A  sî  € ô ˜7×#Ñ#Øà˜yÑ)×-Ñ-¨j¸"Ó=ÐØ#*¨9Ñ#5Øñ$ç"Ñ"ð !ð $×1Ñ1€Mà×.Ñ.÷ 	8Ø×ÑÐ6Ó7ð ð %×(Ñ(Ð)AÓBÐÞÐ,Ó6ð  Ñ'Ü#AÐ àÑ1×7Ñ7Ó9ˆØÓ5ß’7˜~Ô1IÓIÜ0à  ×!5Ñ!5Ó!7Ð 8ð 9;ð ;ñð ô (Ø<¸^Ð<LÐMñð ð 6ö 
#ÞÐ9Ð=MÓMð �9Ñ×!Ñ!Ð"6×7Ñ7ØÜ3×9Ñ9Ó;ˆÜ"FØÐ&6ó#
Ðð #Ñ.à/Ü3ñ<ÐÐ7Ñ8øð
 	à€Mà×+×+Ü�W˜U‘^Ó$×+Ñ+¨wÓ6à�9Ñ˜oÑ.×@Ñ@ÀDÓHð &ˆMð $ØØ! .Ð!1Ð2ñ€Ið -6Ð(Ñ)Ø%5ˆIÑ�zÒ"r$   c                 óÂ   • U R                   n[        U[        5      (       d  gUR                  R	                  U5      nU(       a  UR
                  R	                  S5      $ g)zDGet the name of the header targeted by the "requestAlgorithmMember".Nrö   )Úinput_shaper?   r   Úmembersr2  Úserialization)r  r  rB  Úoperation_input_shapeÚalgorithm_member_shapes        r    r;  r;  �  s\   € ð ,×7Ñ7ÐÜÐ+¬^×<Ñ<Øà2×:Ñ:×>Ñ>ØóÐö Ø%×3Ñ3×7Ñ7¸Ó?Ð?ð r$   c                 ó\  • U R                  S0 5      R                  S0 5      nUR                  S5      nU(       d  g US:X  a  [        U 5        OEUS   S:X  a  [        U 5        O0US   S:X  a  [        U 5        O[	        SR                  US   5      S	9eS
U;   a  US
   nUS   U S   US   '   g g )Nr   r÷   r1  zconditional-md5r0  r)  r-  zUnknown checksum variant: {}rä   r(  r'  Úheadersrö   )r2  r   Ú_apply_request_header_checksumÚ_apply_request_trailer_checksumr   Úformat)r  r@  r/  r(  s       r    Úapply_request_checksumrQ  Ÿ  sÈ   € Ø—{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IæØàÐ%Ó%ä# GÕ,Ø	�4‰˜HÓ	$Ü& wÕ/Ø	�4‰˜IÓ	%Ü'¨Õ0ä#Ø4×;Ñ;¸IÀd¹OÓLñ
ð 	
ð "Ð%5Ó5Ø#3Ð4NÑ#OÐ à$ WÑ-ð 	�	ÑÐ3°FÑ;Ò<ð 6r$   c                 óö   • U R                  S0 5      R                  S0 5      nUR                  S5      nUS   nX0S   ;   a  g [        R                  US   5      nU" 5       R                  U S   5      nXPS   U'   g )Nr   r÷   r1  rö   rM  r/  rB   )r2  Ú_CHECKSUM_CLSrC   )r  r@  r/  Úlocation_namerÛ   r'   s         r    rN  rN  ¸  s�   € Ø—{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IØ˜fÑ%€MØ 	Ñ*Ó*àÜ ×$Ñ$ Y¨{Ñ%;Ó<€LÙ‹^×"Ñ" 7¨6¡?Ó3€FØ(.ˆIÑ�}Ò%r$   c                 ó(  • U R                  S0 5      R                  S0 5      nUR                  S5      nUS   n[        R                  US   5      nU S   nU S   nX5;   a  g SUS	'   S
U;   a  US
==   S-  ss'   OSUS
'   X5S'   [        U5      nUc  SU;   a  [        US   5      nUb  [	        U5      US'   SU;   a  US	 [
        R                  S5        [        U[        [        45      (       a  [        R                  " U5      n[        UUUS9U S'   g )Nr   r÷   r1  rö   r/  rM  rB   ÚchunkedzTransfer-EncodingzContent-Encodingz,aws-chunkedzaws-chunkedzX-Amz-TrailerzContent-LengthzX-Amz-Decoded-Content-LengthzVRemoving the Content-Length header since 'chunked' is specified for Transfer-Encoding.)rÛ   rÜ   )r2  rS  r   ÚintÚstrÚloggerÚdebugr?   r@   rA   ÚioÚBytesIOrÑ   )r  r@  r/  rT  rÛ   rM  rB   r  s           r    rO  rO  Ä  s@  € Ø—{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IØ˜fÑ%€MÜ ×$Ñ$ Y¨{Ñ%;Ó<€Là�iÑ €GØ�6‰?€DàÓàà#,€GÐÑ Ø˜WÓ$ð 	Ð"Ó# ~Ñ5Ô#à&3ˆÐ"Ñ#Ø,ˆOÑä-¨dÓ3€NØÑÐ"2°gÓ"=ô
 ˜WÐ%5Ñ6Ó7ˆØÑ!ô 36°nÓ2EˆÐ.Ñ/à˜7Ó"ØÐ$Ð%Ü�‰Ødô	
ô �$œ¤	Ð*×+Ñ+Ü�zŠz˜$Óˆä'ØØ!Ø#ñ€GˆF‚Or$   c                 ób  • [        U 5      =n(       a>  U H7  nUR                  5       nUS;  d  M  UR                  S5      n[        U5        M9     gU R	                  S0 5      R	                  S0 5      nUR	                  S5      nU(       a%  [        U[        5      (       a  [        US   5        ggg)zARegister feature IDs for checksum algorithms used in the request.)zX-AMZ-CHECKSUM-ALGORITHMzX-AMZ-CHECKSUM-MODEzX-AMZ-CHECKSUM-TYPEzX-AMZ-CHECKSUM-Nr   r÷   r1  r/  )r   r9  ÚremoveprefixÚ'_register_checksum_algorithm_feature_idr2  r?   Údict)r  Úalgorithm_headersr)  rC  r@  r/  s         r    r  r  ö  s©   € ä:¸7ÓCÐCÐÕCÛ'ˆFØ—\‘\“^ˆFØð õ ð
 "(×!4Ñ!4Ð5FÓ!G�Ü7¸ÖGñ (ð 	ð —{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IÞ”Z 	¬4×0Ñ0Ü/°	¸+Ñ0FÕGð 1€yr$   c                 óT   • U R                  5       nUS:X  a  SnSU 3n[        U5        g )NÚ	CRC64NVMEÚCRC64ÚFLEXIBLE_CHECKSUMS_REQ_)r9  r   )r/  Úchecksum_algorithm_nameÚ"checksum_algorithm_name_feature_ids      r    r_  r_    s9   € Ø'Ÿo™oÓ/ÐØ +Ó-Ø")Ðà
!Ð"9Ð!:Ð;ð 'ô Ð:Õ;r$   c                 óp  • UR                   nUR                  S5      nU(       a�  XR;   a‡  Uc  [        nUR                  S/ 5       Vs1 s H  ofR                  5       iM     nn/ n[         H"  n	X—;  a  M
  X“;   d  M  UR                  U	5        M$     U S   R                  S0 5      n
XŠS'   X S   S'   g g g s  snf )NÚrequestValidationModeMemberÚresponseAlgorithmsr   r÷   Úresponse_algorithms)r4  r2  r6  r7  Ú_ALGORITHMS_PRIORITY_LISTÚappend)r  r  r  r?  r4  Úmode_memberÚark  Úusable_algorithmsr/  r@  s              r    r  r    sÎ   € ð $×1Ñ1€MØ×#Ñ#Ð$AÓB€KÞ�{Ó,ØÑ'Ü#AÐ à,×0Ñ0Ð1EÀrÔJó
ÚJ˜!�G‰GŽIÑJð 	ð 
ð Ðß2ˆIØÓ3ÙØÕ0Ø!×(Ñ(¨Ö3ñ	 3ð # 9Ñ-×1Ñ1°*¸bÓAÐØ2CÐ.Ñ/Ø)9�	Ñ˜:Ò&ð! -€{ùò
s   ÁB3c                 ón  • US   nUR                  S0 5      nUR                  S5      nU(       d  g U Hi  nSU 3nX„;  a  M  SXH   ;   a  M  UR                  (       a  [        XU5      US'   O[        XU5      US'   US   R                  S0 5      nXuS'   XQS   S'     g    [        R                  S	U5        g )
NrM  r÷   rk  r.  Ú-rB   r   Úresponse_algorithmz[Skipping checksum validation. Response did not contain one of the following algorithms: %s.)r2  Úhas_streaming_outputÚ_handle_streaming_responseÚ_handle_bytes_responserY  rZ  )	Úhttp_responseÚresponser   r  rM  r@  Ú
algorithmsr/  Úheader_names	            r    Úhandle_checksum_bodyr{  -  sÝ   € Ø�yÑ!€GØ—{‘{ :¨rÓ2ÐØ!×%Ñ%Ð&;Ó<€JæØãˆ	Ø'¨	 {Ð3ˆàÓ%Ùð
 �'Ñ&Ó&Ùà×/×/Ü9Ø¨ó ˆH�VÒô  6Ø¨ó ˆH�VÑð
 $ IÑ.×2Ñ2°:¸rÓBÐØ1:Ð-Ñ.Ø*:�Ñ˜JÑ'Ùñ3  ô6 ‡L�LØeØõr$   c                 ó    • [         R                  U5      nSU 3n[        U R                  US   R                  S5      U" 5       US   U   5      $ )Nr.  rM  zcontent-length)rS  r2  rý   rÚ   )rw  rx  r/  rÛ   rz  s        r    ru  ru  V  sZ   € Ü ×$Ñ$ YÓ/€LØ# I ;Ð/€KÜ Ø×ÑØ�Ñ×ÑÐ 0Ó1Ù‹Ø�Ñ˜KÑ(ó	ð r$   c                 ó   • U R                   nSU 3n[        R                  U5      nU" 5       nUR                  U5        US   U   nUR	                  5       [
        R                  " U5      :w  a  SU SUR                  5        3n[        US9eU$ )Nr.  rM  r  r  rä   )	ÚcontentrS  r2  r!   r'   r+   r  r/   r   )	rw  rx  r/  rB   rz  rÛ   r÷   r  rå   s	            r    rv  rv  a  sœ   € Ø× Ñ €DØ# I ;Ð/€KÜ ×$Ñ$ YÓ/€LÙ‹~€HØ‡O�O�DÔØ˜	Ñ" ;Ñ/€HØ‡�ÓœF×,Ò,¨XÓ6Ó6à   
ð +Ø!×+Ñ+Ó-Ð.ð0ð 	ô $¨iÑ8Ð8Ø€Kr$   )r   r   r   r   )r   rv   r‚   Úxxhash64Úxxhash3Ú	xxhash128)r   rv   )r   é   rY   r‚   )r   é   rñ   r  r€  r�  c              #   ó2   #   • U  H  o[         ;   v •  M     g 7fr   )r8  )Ú.0rö   s     r    Ú	<genexpr>r†  ‘  s   é € ð Ú5M¨TÔ(Ö(Ò5Mùs   ‚)	r�  r€  r‚   r  rv   r   r   r   r   r   )FÚ__doc__r+   r[  ÚloggingÚbinasciir   Úhashlibr   r   r   Úbotocore.compatr   r   r	   Úbotocore.exceptionsr
   r   r   Úbotocore.modelr   Úbotocore.responser   Úbotocore.useragentr   Úbotocore.utilsr   r   r   r   Úawscrtr   rh   Ú	getLoggerrE   rY  r:  r   rK   rc   ro   r{   rˆ   rš   r¤   r®   r½   rÈ   rÑ   rý   r  r  r;  rQ  rN  rO  r  r_  r  r{  ru  rv  rS  r8  Ú_CRT_CHECKSUM_CLSr!   ÚallÚkeysÚlistr6  rl  r   r$   r    Ú<module>r—     s!  ðñó Û 	Û Ý ß (Ñ (ç FÑ F÷ñ õ
 *Ý +Ý 2÷ó ö Þ1à€Mà	×	Ò	˜8Ó	$€à$Ð ÷ ñ  ô6<�Lô <ô
<�|ô 
<ô
=˜ô 
=ô
@˜<ô 
@ô	'˜,ô 	'ô	'˜ô 	'ô	'˜<ô 	'ô'�<ô 'ô'�\ô 'ô'�\ô '÷O%ñ O%ôd=˜Mô =òB,ð ô	K6ò\@ò 
ò2	/ò/òdHò*<ð <@ô:ò0&òRòð" ØØØñ	€òÐ ö ð "Ø#ñÐñ
 ˜z×*Ñ*à)=Ð˜+Ñ&á˜z×*Ñ*Ø(;Ð˜*Ñ%Ø'9Ð˜)Ñ$Ø)=Ð˜+Ñ&à×ÑÐ*Ô+áñ Ø5F×5KÑ5KÔ5Mó÷ ñ ð ð ñ "& m×&8Ñ&8Ó&:Ó!;Ð ò
Ñ r$   