Ë
    £ªði_W  ã                   óL  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
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mZmZ erddlmZ ndZ ej@                  e!«      Z"dZ# G d„ d«      Z$ G d„ de$«      Z% G d„ de$«      Z& G d„ de$«      Z' G d„ de$«      Z( G d„ de$«      Z) G d„ de$«      Z* G d„ de$«      Z+ G d„ de$«      Z, G d„ d e$«      Z- G d!„ d"e$«      Z. G d#„ d$«      Z/ G d%„ d&e«      Z0d'„ Z1	 d>d(„Z2d)„ Z3d*„ Z4d+„ Z5d,„ Z6d-„ Z7d.„ Z8	 d>d/„Z9d0„ Z:d1„ Z;d2„ Z<e%e,e-e.d3œZ=g d4¢Z>erYe&e'd5œZ? ed6«      re(e?d7<    ed8«      re)e?d9<   e*e?d:<   e+e?d;<   e=j�                  e?«        eAd<„ e?j…                  «       D «       «      sJ ‚ eCe=j…                  «       «      ZDg d=¢ZEy)?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                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚBaseChecksumé   c                  ó   — y ©N© ©ÚselfÚchunks     úl/var/www/acinvestment.org/public_html/aci/backend/venv/lib/python3.12/site-packages/botocore/httpchecksum.pyÚupdatezBaseChecksum.update9   ó   € Øó    c                  ó   — y r   r   ©r   s    r   ÚdigestzBaseChecksum.digest<   r!   r"   c                 ój   — | j                  «       }t        j                  |«      j                  d«      S )NÚascii)r%   Úbase64Ú	b64encodeÚdecode)r   Úbss     r   Ú	b64digestzBaseChecksum.b64digest?   s)   € Ø�[‰[‹]ˆÜ×Ñ Ó#×*Ñ*¨7Ó3Ð3r"   c                 ó–   ‡ ‡— ‰j                  «       }t        ˆˆ fd„d«      D ]  }‰ j                  |«       Œ ‰j                  |«       y )Nc                  ó:   •— ‰ j                  ‰j                  «      S r   )ÚreadÚ_CHUNK_SIZE)Úfileobjr   s   €€r   ú<lambda>z.BaseChecksum._handle_fileobj.<locals>.<lambda>E   s   ø€  '§,¡,¨t×/?Ñ/?Ó"@€ r"   r"   )ÚtellÚiterr    Úseek)r   r1   Ústart_positionr   s   ``  r   Ú_handle_fileobjzBaseChecksum._handle_fileobjC   s=   ù€ Ø Ÿ™›ˆÜÔ@À#ÓFò 	ˆEØ�K‰K˜Õð	à�‰�^Õ$r"   c                 ó²   — t        |t        t        f«      r!| j                  |«       | j                  «       S | j	                  |«       | j                  «       S r   )Ú
isinstanceÚbytesÚ	bytearrayr    r7   r,   )r   Úbodys     r   ÚhandlezBaseChecksum.handleI   sI   € Ü�dœU¤IÐ.Ô/Ø�K‰K˜Ôð �~‰~ÓÐð × Ñ  Ô&Ø�~‰~ÓÐr"   N)	Ú__name__Ú
__module__Ú__qualname__r0   r    r%   r,   r7   r=   r   r"   r   r   r   6   s    „ Ø€Kòòò4ò%ó r"   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrc32Checksumc                 ó   — d| _         y ©Nr   ©Ú
_int_crc32r$   s    r   Ú__init__zCrc32Checksum.__init__R   ó	   € Øˆ�r"   c                 ó@   — t        || j                  «      dz  | _        y ©Nl   ÿÿ )r   rF   r   s     r   r    zCrc32Checksum.updateU   s   € Ü  t§¡Ó7¸*ÑDˆ�r"   c                 ó<   — | j                   j                  dd¬«      S ©Né   Úbig©Ú	byteorder©rF   Úto_bytesr$   s    r   r%   zCrc32Checksum.digestX   ó   € Ø�‰×'Ñ'¨°UÐ'Ó;Ð;r"   N©r>   r?   r@   rG   r    r%   r   r"   r   rB   rB   Q   s   „ òòEó<r"   rB   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtCrc32Checksumc                 ó   — d| _         y rD   rE   r$   s    r   rG   zCrtCrc32Checksum.__init__^   rH   r"   c                 óX   — t        j                  || j                  «      }|dz  | _        y rJ   )Úcrt_checksumsr   rF   ©r   r   Únew_checksums      r   r    zCrtCrc32Checksum.updatea   s$   € Ü$×*Ñ*¨5°$·/±/ÓBˆØ&¨Ñ3ˆ�r"   c                 ó<   — | j                   j                  dd¬«      S rL   rQ   r$   s    r   r%   zCrtCrc32Checksum.digeste   rS   r"   NrT   r   r"   r   rV   rV   \   s   „ òò4ó<r"   rV   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtCrc32cChecksumc                 ó   — d| _         y rD   )Ú_int_crc32cr$   s    r   rG   zCrtCrc32cChecksum.__init__k   s
   € ØˆÕr"   c                 óX   — t        j                  || j                  «      }|dz  | _        y rJ   )rY   Úcrc32cr`   rZ   s      r   r    zCrtCrc32cChecksum.updaten   s'   € Ü$×+Ñ+¨E°4×3CÑ3CÓDˆØ'¨*Ñ4ˆÕr"   c                 ó<   — | j                   j                  dd¬«      S rL   )r`   rR   r$   s    r   r%   zCrtCrc32cChecksum.digestr   s   € Ø×Ñ×(Ñ(¨°eÐ(Ó<Ð<r"   NrT   r   r"   r   r^   r^   i   s   „ òò5ó=r"   r^   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtCrc64NvmeChecksumc                 ó   — d| _         y rD   )Ú_int_crc64nvmer$   s    r   rG   zCrtCrc64NvmeChecksum.__init__x   s
   € ØˆÕr"   c                 óX   — t        j                  || j                  «      }|dz  | _        y )Nl   ÿÿÿÿ )rY   Ú	crc64nvmerg   rZ   s      r   r    zCrtCrc64NvmeChecksum.update{   s(   € Ü$×.Ñ.¨u°d×6IÑ6IÓJˆØ*Ð-?Ñ?ˆÕr"   c                 ó<   — | j                   j                  dd¬«      S )Né   rN   rO   )rg   rR   r$   s    r   r%   zCrtCrc64NvmeChecksum.digest   s   € Ø×"Ñ"×+Ñ+¨A¸Ð+Ó?Ð?r"   NrT   r   r"   r   re   re   v   s   „ ò ò@ó@r"   re   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtXxhash64Checksumc                 óJ   — t         j                  j                  «       | _        y r   )rY   ÚXXHashÚnew_xxhash64Ú_xxhashr$   s    r   rG   zCrtXxhash64Checksum.__init__…   s   € Ü$×+Ñ+×8Ñ8Ó:ˆ�r"   c                 ó:   — | j                   j                  |«       y r   ©rq   r    r   s     r   r    zCrtXxhash64Checksum.updateˆ   ó   € Ø�‰×Ñ˜EÕ"r"   c                 ó6   — | j                   j                  «       S r   ©rq   Úfinalizer$   s    r   r%   zCrtXxhash64Checksum.digest‹   ó   € Ø�|‰|×$Ñ$Ó&Ð&r"   NrT   r   r"   r   rm   rm   ƒ   s   „ ò;ò#ó'r"   rm   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtXxhash3Checksumc                 óJ   — t         j                  j                  «       | _        y r   )rY   ro   Únew_xxhash3_64rq   r$   s    r   rG   zCrtXxhash3Checksum.__init__‘   s   € Ü$×+Ñ+×:Ñ:Ó<ˆ�r"   c                 ó:   — | j                   j                  |«       y r   rs   r   s     r   r    zCrtXxhash3Checksum.update”   rt   r"   c                 ó6   — | j                   j                  «       S r   rv   r$   s    r   r%   zCrtXxhash3Checksum.digest—   rx   r"   NrT   r   r"   r   rz   rz   �   s   „ ò=ò#ó'r"   rz   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚCrtXxhash128Checksumc                 óJ   — t         j                  j                  «       | _        y r   )rY   ro   Únew_xxhash3_128rq   r$   s    r   rG   zCrtXxhash128Checksum.__init__�   s   € Ü$×+Ñ+×;Ñ;Ó=ˆ�r"   c                 ó:   — | j                   j                  |«       y r   rs   r   s     r   r    zCrtXxhash128Checksum.update    rt   r"   c                 ó6   — | j                   j                  «       S r   rv   r$   s    r   r%   zCrtXxhash128Checksum.digest£   rx   r"   NrT   r   r"   r   r€   r€   ›   s   „ ò>ò#ó'r"   r€   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚSha1Checksumc                 ó"   — t        «       | _        y r   )r   Ú	_checksumr$   s    r   rG   zSha1Checksum.__init__¨   s   € Ü›ˆ�r"   c                 ó:   — | j                   j                  |«       y r   ©rˆ   r    r   s     r   r    zSha1Checksum.update«   ó   € Ø�‰×Ñ˜eÕ$r"   c                 ó6   — | j                   j                  «       S r   ©rˆ   r%   r$   s    r   r%   zSha1Checksum.digest®   ó   € Ø�~‰~×$Ñ$Ó&Ð&r"   NrT   r   r"   r   r†   r†   §   s   „ ò ò%ó'r"   r†   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚSha256Checksumc                 ó"   — t        «       | _        y r   )r   rˆ   r$   s    r   rG   zSha256Checksum.__init__³   ó   € Ü›ˆ�r"   c                 ó:   — | j                   j                  |«       y r   rŠ   r   s     r   r    zSha256Checksum.update¶   r‹   r"   c                 ó6   — | j                   j                  «       S r   r�   r$   s    r   r%   zSha256Checksum.digest¹   rŽ   r"   NrT   r   r"   r   r�   r�   ²   ó   „ ò"ò%ó'r"   r�   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚSha512Checksumc                 ó"   — t        «       | _        y r   )r   rˆ   r$   s    r   rG   zSha512Checksum.__init__¾   r’   r"   c                 ó:   — | j                   j                  |«       y r   rŠ   r   s     r   r    zSha512Checksum.updateÁ   r‹   r"   c                 ó6   — | j                   j                  «       S r   r�   r$   s    r   r%   zSha512Checksum.digestÄ   rŽ   r"   NrT   r   r"   r   r—   r—   ½   r•   r"   r—   c                   ó@   — e Zd ZdZ	 	 	 d	d„Zd„ Zd
d„Zdd„Zd„ Zd„ Z	y)ÚAwsChunkedWrapperr   Nc                 óx   — || _         || _        || _        | j                  «        |€| j                  }|| _        y r   )Ú_rawÚ_checksum_nameÚ_checksum_clsÚ_resetÚ_DEFAULT_CHUNK_SIZEÚ_chunk_size)r   ÚrawÚchecksum_clsÚchecksum_nameÚ
chunk_sizes        r   rG   zAwsChunkedWrapper.__init__Ë   s=   € ð ˆŒ	Ø+ˆÔØ)ˆÔØ�‰ŒàÐØ×1Ñ1ˆJØ%ˆÕr"   c                 ór   — d| _         d| _        d | _        | j                  r| j                  «       | _        y y )Nr"   F)Ú
_remainingÚ	_completerˆ   r    r$   s    r   r¡   zAwsChunkedWrapper._resetÛ   s5   € ØˆŒØˆŒØˆŒØ×ÒØ!×/Ñ/Ó1ˆD�Nð r"   c                 ó†   — |dk7  s|dk7  rt        d¬«      ‚| j                  «        | j                  j                  d«       y )Nr   z Can only seek to start of stream©Ú	error_msg)r
   r¡   rž   r5   )r   ÚoffsetÚwhences      r   r5   zAwsChunkedWrapper.seekâ   s:   € Ø�QŠ;˜& Aš+Ü(Ø<ôð ð 	�‰ŒØ�	‰	�‰�qÕr"   c                 ó¶  — |�|dk  rd }| j                   r| j                  sy|d u xs |t        | j                  «      kD  }| j                   sR|rP| xj                  | j                  «       z  c_        |d u xs |t        | j                  «      kD  }| j                   s|rŒP|€t        | j                  «      }| j                  d | }| j                  |d  | _        |S )Nr   r"   )rª   r©   ÚlenÚ_make_chunk)r   ÚsizeÚwant_more_bytesÚ	to_returns       r   r/   z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                 óÊ  — | j                   j                  | j                  «      }t        t	        |«      «      dd  j                  d«      }| | _        | j                  r| j                  j                  |«       | j                  rW| j                  rK| j                  j                  d«      }| j                  j                  «       j                  d«      }d||fz  S d||fz  S )Né   r'   s   0
%s:%s

s   %s
%s
)rž   r/   r£   Úhexr±   Úencoderª   rˆ   r    rŸ   r,   )r   Ú	raw_chunkÚhex_lenÚnameÚchecksums        r   r²   z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°(Ð+;Ñ;Ð;à '¨9Ð!5Ñ5Ð5r"   c              #   ód   K  — | j                   s | j                  «       –— | j                   sŒy y ­wr   )rª   r²   r$   s    r   Ú__iter__zAwsChunkedWrapper.__iter__  s%   è ø€ Ø—.’.Ø×"Ñ"Ó$Ò$ð —.•.ùs   ‚+0®0)Nzx-amz-checksumN)r   r   )
r>   r?   r@   r¢   rG   r¡   r5   r/   r²   r¿   r   r"   r   rœ   rœ   È   s1   „ Ø%Ðð
 Ø&Øó&ò 2óóò26ó$%r"   rœ   c                   ó:   ‡ — e Zd Zˆ fd„Zdˆ fd„	Zˆ fd„Zd„ Zˆ xZS )ÚStreamingChecksumBodyc                 óB   •— t         ‰| �  ||«       || _        || _        y r   )ÚsuperrG   rˆ   Ú	_expected)r   Ú
raw_streamÚcontent_lengthr½   ÚexpectedÚ	__class__s        €r   rG   zStreamingChecksumBody.__init__  s    ø€ Ü‰Ñ˜ ^Ô4Ø!ˆŒØ!ˆ�r"   c                 ó�   •— t         ‰| �  |¬«      }| j                  j                  |«       |�|s|dkD  r| j	                  «        |S )N)Úamtr   )rÃ   r/   rˆ   r    Ú_validate_checksum)r   rÊ   r   rÈ   s      €r   r/   zStreamingChecksumBody.read   sC   ø€ Ü‘‘ �Ó%ˆØ�‰×Ñ˜eÔ$Øˆ;™u¨¨qªØ×#Ñ#Ô%Øˆr"   c                 óà   •— t         ‰| �  |«      }|t        |«      k(  r|}nt        |«      d | }| j                  j                  |«       |dk(  rt        |«      dkD  r| j                  «        |S rD   )rÃ   Úreadintor±   Ú
memoryviewrˆ   r    rË   )r   ÚbÚamount_readÚviewrÈ   s       €r   rÍ   zStreamingChecksumBody.readinto'  si   ø€ Ü‘gÑ& qÓ)ˆØœ#˜a›&Ò Ø‰Dä˜a“=  +Ð.ˆDØ�‰×Ñ˜dÔ#Ø˜!Ò¤ A£¨¢
Ø×#Ñ#Ô%ØÐr"   c                 óä   — | j                   j                  «       t        j                  | j                  «      k7  r6d| j                  › d| j                   j                  «       › �}t        |¬«      ‚y )NúExpected checksum ú$ did not match calculated checksum: r¬   )rˆ   r%   r(   Ú	b64decoderÄ   r,   r   )r   r­   s     r   rË   z(StreamingChecksumBody._validate_checksum2  sg   € Ø�>‰>× Ñ Ó"¤f×&6Ñ&6°t·~±~Ó&FÒFà$ T§^¡^Ð$4ð 5Ø!Ÿ^™^×5Ñ5Ó7Ð8ð:ð ô (°)Ô<Ð<ð Gr"   r   )r>   r?   r@   rG   r/   rÍ   rË   Ú__classcell__)rÈ   s   @r   rÁ   rÁ     s   ø„ ô"õ
ô	ö=r"   rÁ   c                 óN   — t        | ||«       t        | ||«       t        | «       y 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                 óì  — t        | «      ry | d   j                  di «      }| d   d   j                  }|j                  }|j                  xs |j                  d«      }|j                  d«      }|r^||v rZ|€t
        }||   j                  «       }	|	|vrŠt        s&|	t        v rt        d|	j                  «       › d�¬«      ‚t        d	|	› �¬
«      ‚|s|rJ|dk(  rE| d   j                  d«      ry t        j                  «       }	t        || |«      }
|
�|
t        dœ|d<   ny d}|j                  r2t        | d   «      j                   dk(  r| d   d   j"                  dk7  rd}|	|d|	› �dœ}||d<   || d   d<   y )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_contextró   rô   Ú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Ð àÐ 0Ñ1×7Ñ7Ó9ˆØÐ!5Ñ5Ý˜~Ô1IÑIÜ0à  ×!5Ñ!5Ó!7Ð 8ð 9;ð ;ôð ô (Ø<¸^Ð<LÐMôð ñ 
#ÙÐ9Ð=MÒMð �9Ñ×!Ñ!Ð"6Ô7ØÜ3×9Ñ9Ó;ˆÜ"FØ˜WÐ&6ó#
Ðð #Ð.à/Ü3ñ<ÐÐ7Ò8ð
 	à€Mà×+Ò+Ü�W˜U‘^Ó$×+Ñ+¨wÒ6à�9Ñ˜oÑ.×@Ñ@ÀDÒHð &ˆMð $ØØ! .Ð!1Ð2ñ€Ið -6ÐÐ(Ñ)Ø%5€GˆIÑ�zÒ"r"   c                 ó®   — | j                   }t        |t        «      sy|j                  j	                  |«      }|r|j
                  j	                  d«      S y)zDGet the name of the header targeted by the "requestAlgorithmMember".Nr¼   )Úinput_shaper9   r   Úmembersrò   Úserialization)rÜ   rÛ   r  Úoperation_input_shapeÚalgorithm_member_shapes        r   rû   rû   �  sY   € ð ,×7Ñ7ÐÜÐ+¬^Ô<Øà2×:Ñ:×>Ñ>ØóÐñ Ø%×3Ñ3×7Ñ7¸Ó?Ð?ð r"   c                 óN  — | j                  di «      j                  di «      }|j                  d«      }|sy |dk(  rt        | «       nF|d   dk(  rt        | «       n2|d   dk(  rt        | «       nt	        dj                  |d   «      ¬	«      ‚d
|v r|d
   }|d   | d   |d   <   y y )Nrà   r½   rñ   zconditional-md5rð   ré   rí   zUnknown checksum variant: {}r¬   rè   rç   Úheadersr¼   )rò   r   Ú_apply_request_header_checksumÚ_apply_request_trailer_checksumr   Úformat)rÛ   r   rï   rè   s       r   Úapply_request_checksumr  Ÿ  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                 óö   — | j                  di «      j                  di «      }|j                  d«      }|d   }|| d   v ry t        j                  |d   «      } |«       j                  | d   «      }|| d   |<   y )Nrà   r½   rñ   r¼   r  rï   r<   )rò   Ú_CHECKSUM_CLSr=   )rÛ   r   rï   Úlocation_namer¥   r%   s         r   r  r  ¸  s…   € Ø—{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IØ˜fÑ%€MØ˜ 	Ñ*Ñ*àÜ ×$Ñ$ Y¨{Ñ%;Ó<€LÙ‹^×"Ñ" 7¨6¡?Ó3€FØ(.€GˆIÑ�}Ò%r"   c                 ó  — | j                  di «      j                  di «      }|j                  d«      }|d   }t        j                  |d   «      }| d   }| d   }||v ry d|d	<   d
|v r|d
xx   dz  cc<   nd|d
<   ||d<   t        |«      }|€d|v rt        |d   «      }|�t	        |«      |d<   d|v r|d= t
        j                  d«       t        |t        t        f«      rt        j                  |«      }t        |||¬«      | d<   y )Nrà   r½   rñ   r¼   rï   r  r<   Ú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¦   )rò   r  r   ÚintÚstrÚloggerÚdebugr9   r:   r;   ÚioÚBytesIOrœ   )rÛ   r   rï   r  r¥   r  r<   rÆ   s           r   r  r  Ä  sA  € Ø—{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IØ˜fÑ%€MÜ ×$Ñ$ Y¨{Ñ%;Ó<€Là�iÑ €GØ�6‰?€Dà˜Ñàà#,€GÐÑ Ø˜WÑ$ð 	Ð"Ó# ~Ñ5Ô#à&3ˆÐ"Ñ#Ø,€GˆOÑä-¨dÓ3€NØÐÐ"2°gÑ"=ô
 ˜WÐ%5Ñ6Ó7ˆØÐ!ô 36°nÓ2EˆÐ.Ñ/à˜7Ñ"ØÐ$Ð%Ü�‰Ødô	
ô �$œ¤	Ð*Ô+Ü�z‰z˜$Óˆä'ØØ!Ø#ô€GˆF‚Or"   c                 ó:  — t        | «      x}r9|D ]3  }|j                  «       }|dvsŒ|j                  d«      }t        |«       Œ5 y| j	                  di «      j	                  di «      }|j	                  d«      }|r t        |t        «      rt        |d   «       yyy)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½   rñ   rï   )r   rù   ÚremoveprefixÚ'_register_checksum_algorithm_feature_idrò   r9   Údict)rÛ   Úalgorithm_headersré   r  r   rï   s         r   rÚ   rÚ   ö  s­   € ä:¸7ÓCÐCÐÐCØ'ò 	HˆFØ—\‘\“^ˆFØð ò ð
 "(×!4Ñ!4Ð5FÓ!G�Ü7¸ÕGð	Hð 	ð —{‘{ 9¨bÓ1×5Ñ5°jÀ"ÓEÐØ ×$Ñ$Ð%8Ó9€IÙ”Z 	¬4Ô0Ü/°	¸+Ñ0FÕGð 1€yr"   c                 óR   — | j                  «       }|dk(  rd}d|› �}t        |«       y )NÚ	CRC64NVMEÚCRC64ÚFLEXIBLE_CHECKSUMS_REQ_)rù   r   )rï   Úchecksum_algorithm_nameÚ"checksum_algorithm_name_feature_ids      r   r  r    s9   € Ø'Ÿo™oÓ/ÐØ +Ò-Ø")Ðà
!Ð"9Ð!:Ð;ð 'ô Ð:Õ;r"   c                 óV  — |j                   }|j                  d«      }|r…||v r€|€t        }|j                  dg «      D �ch c]  }|j                  «       ’Œ }}g }t        D ]  }	|	|vrŒ|	|v sŒ|j                  |	«       Œ | d   j                  di «      }
||
d<   |
| d   d<   y y y c c}w )NÚrequestValidationModeMemberÚresponseAlgorithmsrà   r½   Úresponse_algorithms)rô   rò   rö   r÷   Ú_ALGORITHMS_PRIORITY_LISTÚappend)rÛ   rÜ   rÝ   rÿ   rô   Úmode_memberÚar+  Úusable_algorithmsrï   r   s              r   rÙ   rÙ     sà   € ð $×1Ñ1€MØ×#Ñ#Ð$AÓB€KÙ�{ fÑ,ØÐ'Ü#AÐ à,×0Ñ0Ð1EÀrÓJö
ØˆA�G‰G�Ið
Ðð 
ð ÐÜ2ò 	4ˆIØÐ 3Ñ3ØØÐ0Ò0Ø!×(Ñ(¨Õ3ð		4ð # 9Ñ-×1Ñ1°*¸bÓAÐØ2CÐÐ.Ñ/Ø)9ˆ�	Ñ˜:Ò&ð! -€{ùò
s   Á B&c                 óX  — |d   }|j                  di «      }|j                  d«      }|sy |D ]d  }d|› �}||vrŒd||   v rŒ|j                  rt        | ||«      |d<   nt        | ||«      |d<   |d   j                  di «      }||d<   ||d   d<    y  t        j                  d	|«       y )
Nr  r½   r+  rî   ú-r<   rà   Úresponse_algorithmz[Skipping checksum validation. Response did not contain one of the following algorithms: %s.)rò   Úhas_streaming_outputÚ_handle_streaming_responseÚ_handle_bytes_responser  r  )	Úhttp_responseÚresponserà   rÜ   r  r   Ú
algorithmsrï   Úheader_names	            r   Úhandle_checksum_bodyr;  -  sï   € Ø�yÑ!€GØ—{‘{ :¨rÓ2ÐØ!×%Ñ%Ð&;Ó<€JáØàò ˆ	Ø'¨	 {Ð3ˆà˜gÑ%Øð
 �'˜+Ñ&Ñ&Øà×/Ò/Ü9Ø˜x¨ó ˆH�VÒô  6Ø˜x¨ó ˆH�VÑð
 $ IÑ.×2Ñ2°:¸rÓBÐØ1:ÐÐ-Ñ.Ø*:ˆ�Ñ˜JÑ'Ùð3ô6 ‡L�LØeØõr"   c                 ó    — t         j                  |«      }d|› �}t        | j                  |d   j                  d«       |«       |d   |   «      S )Nrî   r  zcontent-length)r  rò   rÁ   r¤   )r7  r8  rï   r¥   r:  s        r   r5  r5  V  sZ   € Ü ×$Ñ$ YÓ/€LØ# I ;Ð/€KÜ Ø×ÑØ�Ñ×ÑÐ 0Ó1Ù‹Ø�Ñ˜KÑ(ó	ð r"   c                 ó"  — | j                   }d|› �}t        j                  |«      } |«       }|j                  |«       |d   |   }|j	                  «       t        j                  |«      k7  r"d|› d|j                  «       › �}t        |¬«      ‚|S )Nrî   r  rÓ   rÔ   r¬   )	Úcontentr  rò   r    r%   r(   rÕ   r,   r   )	r7  r8  rï   r<   r:  r¥   r½   rÇ   r­   s	            r   r6  r6  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   rb   ri   Úxxhash64Úxxhash3Ú	xxhash128)r   rb   )r   é   rM   ri   )r   é   r·   r?  r@  rA  c              #   ó,   K  — | ]  }|t         v –— Œ y ­wr   )rø   )Ú.0r¼   s     r   ú	<genexpr>rF  ‘  s   è ø€ ò Ø-1ˆÔ(Ô(ñùs   ‚)	rA  r@  ri   r?  rb   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   rY   Ú	getLoggerr>   r  rú   r   rB   rV   r^   re   rm   rz   r€   r†   r�   r—   rœ   rÁ   rÞ   rØ   rû   r  r  r  rÚ   r  rÙ   r;  r5  r6  r  rø   Ú_CRT_CHECKSUM_CLSr    ÚallÚkeysÚliströ   r,  r   r"   r   ú<module>rW     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"   