+
    šÜi¹  ã                   ó²   € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHtHt ^ RIHtHtHt ^ RIHt ] P&                  ! ]4      t ! R	 R
]4      tR tR# )é    N)ÚIOBase)ÚProtocolError)ÚReadTimeoutError)ÚScalarTypesÚparsers)ÚXMLParseErrorÚset_socket_timeout)ÚIncompleteReadErrorr   ÚResponseStreamingError)Úfirst_non_none_responsec                   óž   a € ] tR t^'t o RtRtR tR tR tR t	RR lt
R	 tR
 tR tR tR tR t]t]R3R lt]3R ltR tR tR tRtV tR# )ÚStreamingBodyaI  Wrapper class for an http response body.

This provides a few additional conveniences that do not exist
in the urllib3 model:

    * Set the timeout on the socket (i.e read() timeouts)
    * Auto validation of content length, if the amount of bytes
      we read does not match the content length, an exception
      is raised.

i   c                ó,   € Wn         W n        ^ V n        R# )r   N)Ú_raw_streamÚ_content_lengthÚ_amount_read)ÚselfÚ
raw_streamÚcontent_lengths   &&&Ú3/usr/lib/python3/dist-packages/botocore/response.pyÚ__init__ÚStreamingBody.__init__6   s   € Ø%ÔØ-ÔØˆÖó    c                ó   € R # ©N© ©r   s   &r   Ú__del__ÚStreamingBody.__del__;   s   € ñ 	r   c                ó~   €  \        V P                  V4       R#   \         d    \        P	                  R4       h i ; i)z&Set the timeout seconds on the socket.zaCannot access the socket object of a streaming response. It's possible the interface has changed.N)r	   r   ÚAttributeErrorÚloggerÚ	exception)r   Útimeouts   &&r   r	   Ú StreamingBody.set_socket_timeoutA   s>   € ð	Ü˜t×/Ñ/°Ö9øÜô 	Ü×Ñð;ôð ð	ús   ‚ š"<c                ó\   €  V P                   P                  4       #   \         d     R # i ; i)F)r   Úreadabler!   r   s   &r   r'   ÚStreamingBody.readableV   s.   € ð	Ø×#Ñ#×,Ñ,Ó.Ð.øÜô 	Úð	ús   ‚ œ+ª+Nc                óP  €  V P                   P                  V4      pT ;P                  \        T4      ,          un        Te   T'       g   T^ 8”  d   T P                  4        T#   \         d   p\        TP                  TR7      hRp?i\
         d   p\        TR7      hRp?ii ; i)zXRead at most amt bytes from the stream.

If the amt argument is omitted, read all data.
©Úendpoint_urlÚerrorN©r,   )
r   ÚreadÚURLLib3ReadTimeoutErrorr   ÚurlÚURLLib3ProtocolErrorr   r   ÚlenÚ_verify_content_length)r   ÚamtÚchunkÚes   &&  r   r.   ÚStreamingBody.read\   sŒ   € ð
	2Ø×$Ñ$×)Ñ)¨#Ó.ˆEð 	×ÒœS ›ZÕ'ÕØŠ;Ÿu¨¨q¬ð ×'Ñ'Ô)Øˆøô 'ô 	@ä"°·±¸QÔ?Ð?ûÜ#ô 	2Ü(¨qÔ1Ð1ûð	2ús)   ‚A$ Á$B%Á/BÂB%ÂB%ÂB Â B%c                óF  €  V P                   P                  V4      pT ;P                  T,          un        T^ 8X  d!   \        T4      ^ 8”  d   T P                  4        T#   \         d   p\        TP                  TR7      hRp?i\
         d   p\        TR7      hRp?ii ; i)zcRead bytes into a pre-allocated, writable bytes-like object b, and return the number of bytes read.r*   Nr-   )
r   Úreadintor/   r   r0   r1   r   r   r2   r3   )r   ÚbÚamount_readr6   s   &&  r   r9   ÚStreamingBody.readintop   sŽ   € ð	2Ø×*Ñ*×3Ñ3°AÓ6ˆKð 	×Ò˜[Õ(ÕØ˜!Ô¤ A£¨¤
ð ×'Ñ'Ô)ØÐøô 'ô 	@ä"°·±¸QÔ?Ð?ûÜ#ô 	2Ü(¨qÔ1Ð1ûð	2ús)   ‚A ÁB Á*BÂB ÂB ÂBÂB c                ó6   € V P                   P                  4       # r   )r   Ú	readlinesr   s   &r   r>   ÚStreamingBody.readlines€   s   € Ø×Ñ×)Ñ)Ó+Ð+r   c                ó8   € V P                  V P                  4      # )z:Return an iterator to yield 1k chunks from the raw stream.)Úiter_chunksÚ_DEFAULT_CHUNK_SIZEr   s   &r   Ú__iter__ÚStreamingBody.__iter__ƒ   s   € à×Ñ × 8Ñ 8Ó9Ð9r   c                ó`   € V P                  V P                  4      pV'       d   V# \        4       h)z-Return the next 1k chunk from the raw stream.)r.   rB   ÚStopIteration)r   Úcurrent_chunks   & r   Ú__next__ÚStreamingBody.__next__‡   s'   € àŸ	™	 $×":Ñ":Ó;ˆßØ Ð Ü‹oÐr   c                ó   € V P                   # r   )r   r   s   &r   Ú	__enter__ÚStreamingBody.__enter__Ž   s   € Ø×ÑÐr   c                ó:   € V P                   P                  4        R # r   ©r   Úclose)r   ÚtypeÚvalueÚ	tracebacks   &&&&r   Ú__exit__ÚStreamingBody.__exit__‘   s   € Ø×Ñ×ÑÖ r   Fc              #  ó  "  € RpV P                  V4       FI  pW4,           P                  R4      pVRR  F  pVP                  V4      ^ ,          x € K  	  VR,          pKK  	  V'       d   VP                  V4      ^ ,          x € R# R# 5i)z»Return an iterator to yield lines from the raw stream.

This is achieved by reading chunk of bytes (of size chunk_size) at a
time from the raw stream, and then yielding lines from there.
r   TNéÿÿÿÿ)rA   Ú
splitlines)r   Ú
chunk_sizeÚkeependsÚpendingr5   ÚlinesÚlines   &&&    r   Ú
iter_linesÚStreamingBody.iter_lines–   s€   é € ð ˆØ×%Ñ% jÖ1ˆEØ•_×0Ñ0°Ó6ˆEØ˜c˜r›
�Ø—o‘o hÓ/°Õ2Ô2ñ #à˜B•iŠGñ	 2÷
 Ø×$Ñ$ XÓ.¨qÕ1Ô1ñ ùs   ‚A(B	Á+B	c              #  óL   "  €  V P                  V4      pVR8X  d   R# Vx € K!  5i)zLReturn an iterator to yield chunks of chunk_size bytes from the raw
stream.
r   N)r.   )r   rX   rG   s   && r   rA   ÚStreamingBody.iter_chunks¥   s)   é € ð Ø ŸI™I jÓ1ˆMØ Ô#ÙØÔùs   ‚"$c                óÂ   € V P                   eQ   V P                  \        V P                   4      8w  d+   \        V P                  \        V P                   4      R7      hR # R # )N)Úactual_bytesÚexpected_bytes)r   r   Úintr
   r   s   &r   r3   Ú$StreamingBody._verify_content_length¯   s\   € ð ×ÑÒ+°×0AÑ0AÄSØ× Ñ óF
ô 1
ô &Ø!×.Ñ.Ü" 4×#7Ñ#7Ó8ôð ñ1
Ñ+r   c                ó6   € V P                   P                  4       # r   )r   Útellr   s   &r   rg   ÚStreamingBody.tell»   s   € Ø×Ñ×$Ñ$Ó&Ð&r   c                ó:   € V P                   P                  4        R# )z*Close the underlying http response stream.NrN   r   s   &r   rO   ÚStreamingBody.close¾   s   € à×Ñ×ÑÖ r   )r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rB   r   r   r	   r'   r.   r9   r>   rC   rH   rK   rS   Únextr]   rA   r3   rg   rO   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   '   sx   ø‡ € ñ
ð Ðòò
òò*ôò(ò ,ò:òò ò!ð €Dà$7À%ô 2ð &9ô  ò
ò'÷!ð !r   r   c                 ó¤  € V P                   P                  pR VP                  RVP                  /pVR,          R8¼  d   VP                  VR&   MQV P
                  '       d1   \        VP                  VR ,          P                  R4      4      VR&   MVP                  VR&   \        P                  ! V4      pWP                  W0P                  4      3# )ÚheadersÚstatus_codei,  Úbodyzcontent-length)Úservice_modelÚresolved_protocolru   rv   ÚcontentÚhas_streaming_outputr   ÚrawÚgetr   Úcreate_parserÚparseÚoutput_shape)Úoperation_modelÚhttp_responseÚprotocolÚresponse_dictÚparsers   &&   r   Úget_responser†   Ã   sÇ   € Ø×,Ñ,×>Ñ>€Hà�=×(Ñ(Ø�}×0Ñ0ð€Mð �]Õ# sÔ*Ø -× 5Ñ 5ˆ�fÒØ	×	-×	-Ð	-Ü -Ø×Ñ˜}¨YÕ7×;Ñ;Ð<LÓMó!
ˆ�fÒð !.× 5Ñ 5ˆ�fÑä×"Ò" 8Ó,€FØŸ,™,Ø×3Ñ3óð ð r   )ÚloggingÚior   Úurllib3.exceptionsr   r1   r   r/   Úbotocorer   r   Úbotocore.compatr   r	   Úbotocore.exceptionsr
   r   Úbotocore.hooksr   Ú	getLoggerrk   r"   r   r†   r   r   r   Ú<module>r�      sP   ðó Ý å DÝ J÷÷÷ñ õ
 3à	×	Ò	˜8Ó	$€ôY!�Fô Y!ôxr   