+
    TŎi"                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
Ht ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHt ^ RIHtHtHt ^ RIHtH t  ^RI!H"t" ^R	I#H$t$H%t%H&t& ^R
I'H(t(H)t)H*t*H+t+H,t, ^RI-H.t.H/t/H0t0H1t1 ^RI2H3t3 ^RI4H5t5 ^RI6H7t7H8t8H9t9H:t:H;t;H<t<H=t= ^RI>H?t? ]P                  R*8  d   ^ RIHAtA M^ RIHBtB ]B! RRR7      tAR+tC]'       d   ^RIDHEtE  ! R R]F4      tG ! R R]F4      tHR R ltIR,R R lltJ ! R  R!4      tK ! R" R4      tL]=! ]L]9P                  R#7       ! R$ R%]:4      4       tN ! R& R4      tO]]:]P]P3,          tQ ! R' R]:4      tR ! R( R)4      tSR# )-    N)deque)MappingSequence)TracebackType)TYPE_CHECKINGAnyDequeDictIteratorListOptionalTupleTypeUnioncast)	parse_qslunquote	urlencode)CIMultiDictCIMultiDictProxyAbstractStreamWriter)DEFAULT_MAX_DECOMPRESS_SIZEZLibCompressorZLibDecompressor)CONTENT_DISPOSITIONCONTENT_ENCODINGCONTENT_LENGTHCONTENT_TRANSFER_ENCODINGCONTENT_TYPE)CHARTOKENparse_mimetypereify)HeadersParser)internal_logger)JsonPayloadLookupErrorOrderPayloadStringPayloadget_payloadpayload_type)StreamReaderSelf)TypeVarr0   BodyPartReader)boundMultipartReaderMultipartWriterBadContentDispositionHeaderBadContentDispositionParam)ClientResponsec                       ] tR t^MtRtR# )r6    N__name__
__module____qualname____firstlineno____static_attributes__r:       `/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/aiohttp/multipart.pyr6   r6   M       rA   c                       ] tR t^QtRtR# )r7   r:   Nr;   r:   rA   rB   r7   r7   Q   rC   rA   c                    V ^8  d   QhR\         \        ,          R\        \         \        ,          \        \        \        3,          3,          /# )   headerreturn)r   strr   r
   )formats   "rB   __annotate__rK   U   s:     d$ d$SMd$
8C=$sCx.()d$rA   c                   a R  R loR R lpR V3R llpR R lpR R	 lpR
RP                  \        \        P                  \        4      4      /R R llpV '       g   R/ 3# V P                  R4      vrgS! V4      '       g$   \        P                  ! \        V 4      4       R/ 3# / pV'       Ed   VP                  ^ 4      p	V	'       g"   \        P                  ! \        V 4      4       KC  RV	9  d$   \        P                  ! \        V 4      4       R/ 3# V	P                  R^4      w  rV
P                  4       P                  4       p
VP                  4       pW9   d$   \        P                  ! \        V 4      4       R/ 3# S! V
4      '       g#   \        P                  ! \        V	4      4       EK  V! V
4      '       dN   V! V4      '       d   V! V^R 4      pEMZS! V4      '       g#   \        P                  ! \        V	4      4       EKa  EM(V! V
4      '       da   V! V4      '       d#   VP                  R^4      w  rpT;'       g    RpM"\        P                  ! \        V	4      4       EK   \        WR4      pMRpV! V4      '       d   RpV! V^R P                  R4      4      pMbS! V4      '       d   RpMQV'       dJ   V RV^ ,           2pV! V4      '       d.   VP                  ^ 4       V! V^R P                  R4      4      pRpV'       d$   \        P                  ! \        V 4      4       R/ 3# WV
&   EK  VP                  4       V3#   \         d%    \        P                  ! \        T	4      4        EK  i ; i)c                0    V ^8  d   QhR\         R\        /# rF   stringrH   rI   bool)rJ   s   "rB   rK   /parse_content_disposition.<locals>.__annotate__X   s     5 5 5 5rA   c                 L    \        V 4      ;'       d    \        \        V 4      8  # N)rQ   r"   setrO   s   &rB   is_token+parse_content_disposition.<locals>.is_tokenX   s    F|44V 44rA   c                0    V ^8  d   QhR\         R\        /# rN   rP   )rJ   s   "rB   rK   rR   [   s     . .# .$ .rA   c                 J    V ^ ,          V R,          u;8H  ;'       d    R8H  # u # )r   "r:   rV   s   &rB   	is_quoted,parse_content_disposition.<locals>.is_quoted[   s#    ayF2J--#----rA   c                0    V ^8  d   QhR\         R\        /# rN   rP   )rJ   s   "rB   rK   rR   ^   s     ; ;3 ;4 ;rA   c                 L   < S! V 4      ;'       d    V P                  R 4      ^8H  # )')count)rO   rW   s   &rB   
is_rfc5987-parse_content_disposition.<locals>.is_rfc5987^   s$    ::FLL$5$::rA   c                0    V ^8  d   QhR\         R\        /# rN   rP   )rJ   s   "rB   rK   rR   a   s     $ $# $$ $rA   c                 $    V P                  R 4      # )*)endswithrV   s   &rB   is_extended_param4parse_content_disposition.<locals>.is_extended_parama   s    s##rA   c                0    V ^8  d   QhR\         R\        /# rN   rP   )rJ   s   "rB   rK   rR   d   s     # #C #D #rA   c                     V P                  R 4      ^,           pV'       g   R# V P                  R 4      '       d   WR MWR pVP                  4       # )rg   FNr\   )findrh   isdigit)rO   pos	substrings   &  rB   is_continuous_param6parse_content_disposition.<locals>.is_continuous_paramd   sG    kk#"&,ooc&:&:FrNt	  ""rA   chars c                <    V ^8  d   QhR\         R\         R\         /# )rF   textrs   rH   rI   )rJ   s   "rB   rK   rR   k   s!     7 7s 7c 7c 7rA   c                :    \         P                  ! R V R2RV 4      # )z\\([z])z\1)resub)rv   rs   s   &$rB   unescape+parse_content_disposition.<locals>.unescapek   s    vvugR(%66rA   N;=ra   utf-8strictTFz\/r\   )joinmapry   escaper!   splitwarningswarnr6   poplowerstriplstripr7   r   UnicodeDecodeError)rG   r]   rc   ri   rq   r{   disptypepartsparamsitemkeyvalueencoding_failed_valuerW   s   &               @rB   parse_content_dispositionr   U   s   5.; ;$#7BGGC		44H,I 7 Rx||C(HH1&9:RxF
%yy|MM5f=>d?MM5f=>8OZZQ'
iik!=MM5f=>8O}}MM4T:; %% q-e__8>? % s##%  %*[[a%8"U#..w8>?: F q!3!3E!:;% "7!E!H:.V$$IIaL$VAb\%8%8%?@E"F9&ABRxs>>V##5 & 8>?s   -M *M<;M<c                t    V ^8  d   QhR\         \        \        3,          R\        R\        \        ,          /# )rF   r   namerH   )r   rI   r   )rJ   s   "rB   rK   rK      s1      CH%(c]rA   c                 &  a
 R V,          o
V '       g   R# S
V 9   d
   V S
,          # W9   d	   W,          # . p\        V
3R lV P                  4        4       4      p\        V4       F[  w  pw  rVVP                  R^4      w  rxVP	                  R4      '       d   VRR pV\        V4      8X  d   VP                  V4       K[   M	  V'       g   R# RP                  V4      pRV9   d.   VP                  R^4      w  rpT	;'       g    Rp	\        WiR4      # V# )	z%s*Nc              3   `   <"   T F#  w  rVP                  S4      '       g   K  W3x  K%  	  R # 5irT   )
startswith).0r   r   name_sufs   &  rB   	<genexpr>/content_disposition_filename.<locals>.<genexpr>   s%      
+9ZSS^^H=ULSL>s   ..rg   rt   ra   r   r   r\   )	sorteditems	enumerater   rh   rI   appendr   r   )r   r   r   fnparamsnumr   r   r   tailr   r   s   &&        @rB   content_disposition_filenamer      s    t|H	V	h	| 
+1<<>
 
 "+8!4C#iiQ'GA}}S!!CRys3xU# "5 %<!&S!!4H**7H5H55rA   c                      a  ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
RtV tR# )MultipartResponseWrapperznWrapper around the MultipartReader.

It takes care about
underlying connection and close it when it needs in.
c                &   < V ^8  d   QhRRRRRR/# )rF   respr8   streamr4   rH   Nr:   )rJ   __classdict__s   "rB   rK   %MultipartResponseWrapper.__annotate__   s)       " 
	rA   c                    Wn         W n        R # rT   r   r   )selfr   r   s   &&&rB   __init__!MultipartResponseWrapper.__init__   s    
 	rA   c                   < V ^8  d   QhRR/# )rF   rH   r   r:   )rJ   r   s   "rB   rK   r      s      5 rA   c                    V # rT   r:   r   s   &rB   	__aiter__"MultipartResponseWrapper.__aiter__       rA   c                .   < V ^8  d   QhRS[ R,          /# rF   rH   )r4   r2   )r   )rJ   r   s   "rB   rK   r      s      	2	3rA   c                V   "   V P                  4       G R j  xL
 pVf   \        hV#  L5irT   nextStopAsyncIterationr   parts   & rB   	__anext__"MultipartResponseWrapper.__anext__   *      YY[ <$$ !   )')c                    < V ^8  d   QhRS[ /# rF   rH   rQ   )rJ   r   s   "rB   rK   r      s     * * *rA   c                J    V P                   P                  P                  4       # )z2Returns True when all response data had been read.)r   contentat_eofr   s   &rB   r   MultipartResponseWrapper.at_eof   s    yy  ''))rA   c                >   < V ^8  d   QhRS[ S[R,          ,          /# r   )r   r   )rJ   r   s   "rB   rK   r      s       	%;<	=rA   c                   "   V P                   P                  4       G Rj  xL
 pV P                   P                  4       '       d   V P                  4       G Rj  xL
  V#  L> L5i)z#Emits next multipart reader object.N)r   r   r   releaser   r   s   & rB   r   MultipartResponseWrapper.next   sK      [[%%'';;,,.   ( s'   A#A#A#A#A!A#!A#c                   < V ^8  d   QhRR/# rF   rH   Nr:   )rJ   r   s   "rB   rK   r     s     " "t "rA   c                V   "   V P                   P                  4       G Rj  xL
  R#  L5i)zORelease the connection gracefully.

All remaining content is read to the void.
N)r   r   r   s   &rB   r    MultipartResponseWrapper.release  s     
 ii!!!s   )')r   N)r<   r=   r>   r?   __doc__r   r   r   r   r   r   r@   __classdictcell__r   s   @rB   r   r      sF        * * " "rA   r   c                     a  ] tR tRt o RtRtRRRRR]/V 3R	 lR
 lltV 3R lR ltV 3R lR lt	V 3R lR lt
RR/V 3R lR llt]3V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRR/V 3R  lR! lltRR/V 3R" lR# lltRR/V 3R$ lR% lltV 3R& lR' ltV 3R( lR) ltV 3R* lR+ ltV 3R, lR- ltV 3R. lR/ lt]V 3R0 lR1 l4       t]V 3R2 lR3 l4       tR4tV tR# )5r2   i  z&Multipart reader for single body part.i    subtypemixeddefault_charsetNmax_decompress_sizec                P   < V ^8  d   QhRS[ RRRS[RS[RS[S[,          RS[RR	/# )
rF   boundaryheadersCIMultiDictProxy[str]r   r   r   r   rH   N)bytesr.   rI   r   int)rJ   r   s   "rB   rK   BodyPartReader.__annotate__  sU     8 88 )8 	8 8 "#8 !8 
8rA   c               |   W n         Wn        \        V4      ^,           V n        W0n        WPn        RV n        VR8H  V n        V P                  '       d   RMV P                   P                  \        R4      pVe   \        V4      MRV n        ^ V n        \        4       V n        RV n        ^ V n        / V n        W`n        R# )rF   F	form-dataN)r   	_boundarylen_boundary_len_content_default_charset_at_eof_is_form_datagetr   r   _length_read_bytesr   _unread_prev_chunk_content_eof_cache_max_decompress_size)r   r   r   r   r   r   r   lengths   &&&&$$$ rB   r   BodyPartReader.__init__  s     ! ]Q. /$3+++1A1A.RV1W&,&8s6{d%*W,0&($7!rA   c                &   < V ^8  d   QhRS[ RS[ /# rF   r   rH   r/   )rJ   r   s   "rB   rK   r   ,          rA   c                    V # rT   r:   r   s   &rB   r   BodyPartReader.__aiter__,  r   rA   c                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r   /  s       rA   c                V   "   V P                  4       G R j  xL
 pVf   \        hV#  L5irT   r   r   s   & rB   r   BodyPartReader.__anext__/  s(     YY[ <$$ !r   c                0   < V ^8  d   QhRS[ S[,          /# r   )r   r   )rJ   r   s   "rB   rK   r   5  s      HUO rA   c                V   "   V P                  4       G R j  xL
 pV'       g   R # V#  L5irT   )readr   s   & rB   r   BodyPartReader.next5  s#     YY[  !s   )'))decodeFc                &   < V ^8  d   QhRS[ RS[/# )rF   r  rH   )rQ   r   )rJ   r   s   "rB   rK   r   ;  s      D U rA   c                  "   V P                   '       d   R# \        4       pV P                   '       g5   TP                  V P                  V P                  4      G Rj  xL
 4       KF  V'       d   V P                  V4      G Rj  xL
 # V#  L- L5i)zReads body part data.

decode: Decodes data following by encoding
        method from Content-Encoding header. If it missed
        data remains untouched
rA   N)r   	bytearrayextend
read_chunk
chunk_sizer  )r   r  datas   &$ rB   r  BodyPartReader.read;  sa      <<<{,,,KKdoodoo>>?T*** ?*s.   0B)BB
B/BBBBc                &   < V ^8  d   QhRS[ RS[/# rF   sizerH   r   r   )rJ   r   s   "rB   rK   r   K  s     * *S *% *rA   c                  "   V P                   '       d   R# V P                  '       d   V P                  V4      G Rj  xL
 pMV P                  V4      G Rj  xL
 pV P                  P                  \        4      pV'       EdI   VP                  4       R8X  Ed3   RP                  VP                  4       4      p\        V4      ^,          pV^ 8w  d   V P                  4       '       g   ^V,
          pRpV P                  '       d-   V P                  RV pV P                  \        V4      R V n        \        V4      V8w  d:   YpP                  P                  ^\        V4      ,
          4      G Rj  xL
 ,          pV'       g   RV n         VRP                  VP                  4       4      ,          pW',          p\        V4      ^,          pEK  V ;P                  \        V4      ,          un        V P                  V P                  8X  d   RV n         V P                   '       d3   V P                  P!                  4       G Rj  xL
 R8w  d   \#        R4      hV#  EL EL L L5i)zGReads body part content chunk of the specified size.

size: chunk size
rA   Nbase64T   
z3Reader did not read all the data or it is malformed)r   r   _read_chunk_from_length_read_chunk_from_streamr   r   r   r   r   r   r   r   r   r   r  r   readline
ValueError)r   r  chunkr   stripped_chunk	remainderover_chunk_size
over_chunks   &&      rB   r
  BodyPartReader.read_chunkK  s    
 <<<<<<66t<<E66t<<E <<##$=>8(H4 XXekkm4NN+a/Iq."#i- 
###!%!1!12B?!CJ'+'7'7J8I'JD$z?o5(:(:1s:;N(O"OOJ!#'DL#((:+;+;+=">>#/!3	CJ&t||+DL<<<$--"8"8"::gERSSE =<$ #P ;sk   &I I II I+I A#I (I A*I /I0I BI "I ?I I I I I c                &   < V ^8  d   QhRS[ RS[/# r  r  )rJ   r   s   "rB   rK   r   w  s      # % rA   c                  "   V P                   f   Q R4       h\        WP                   V P                  ,
          4      pV P                  P	                  V4      G R j  xL
 pV P                  P                  4       '       d   RV n        V#  L-5i)Nz(Content-Length required for chunked readT)r   minr   r   r  r   r   )r   r  r  r  s   &&  rB   r  &BodyPartReader._read_chunk_from_lengthw  sq      ||'S)SS'||d.>.>>?
mm((44==!!DL 5s   ABB
#B
Bc                &   < V ^8  d   QhRS[ RS[/# r  r  )rJ   r   s   "rB   rK   r     s     + +# +% +rA   c           
     Z  "   WP                   8  g   Q R 4       hV P                  RJ pV'       d0   RV P                  P                  V4      G Rj  xL
 ,           V n        Rp\	        V4      V P                   8  d   Y0P                  P                  V4      G Rj  xL
 ,          pV ;P
                  \        V P                  P                  4       4      ,          un        V P
                  ^8  d   \        R4      hV P
                  '       g   K   \	        V4      V8  d#   V P                  P                  W1R 4       VRV pV P                  f   Q hV P                  V,           pRV P                  ,           pV'       d   VP                  V4      pM?VP                  V\        ^ \	        V P                  4      \	        V4      ,
          4      4      pV^ 8  d   \        P                  ! 4       ;_uu_ 4        \        P                  ! R\         R7       V P                  P                  WFR 4       RRR4       V P                  RV V n        V\	        V P                  4      V pV'       g   RV n        V P                  V'       d   ^M^ R pW0n        V#  ELC EL  + '       g   i     Lr; i5i)z<Chunk size must be greater or equal than boundary length + 2Nr  rA   zReading after EOFignore)categoryT)r   r   r   r  r   r   r   r   r  unread_datar   rm   maxr   catch_warningsfilterwarningsDeprecationWarningr   )r   r  first_chunkr  windowrz   idxresults   &&      rB   r  &BodyPartReader._read_chunk_from_stream  s     &&&	JI	J&&&$.&t}}/A/A$/G)GGD %j4---==--d333ET]]%9%9%;!<<  1$ !455   u:MM%%eEl3%4LE+++!!E)&++c"C++c3q#d.>.>*?#c(*J#KLC!8((**'';MN))&,7 +  $//5D3t//037E#!!{!";< E *H 4& +*sW   -J+J+JA	J+JA/J+A0J+?A5J+4:J.AJ+J+J+J(	#J+c                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r     s       rA   c                  "   V P                   '       d   R# V P                  '       d   V P                  P                  4       pM"V P                  P	                  4       G Rj  xL
 pVP                  V P                  4      '       dd   VP                  R4      pV P                  pV P                  R,           pW#8X  g   W$8X  d%   RV n         V P                  P                  V4       R#  V# V P                  P	                  4       G Rj  xL
 pVP                  V P                  4      '       d   VRR pV P                  P                  V4       V#  L LI5i)z Reads body part by line by line.rA   Nr     --T)	r   r   popleftr   r  r   r   rstripr   )r   linesliner   last_boundary	next_lines   &     rB   r  BodyPartReader.readline  s    <<<<<<<<'')D//11D??4>>** KK(E~~H NNU2M E$:###D) %;  #mm4466I##DNN33CRyLL	*' 2 7s5   &E8E!E"$EB EE$E-#EEc                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r     s     3 3t 3rA   c                   "   V P                   '       d   R# V P                   '       g&   V P                  V P                  4      G Rj  xL
  K7  R#  L5i)z0Like read(), but reads all the data to the void.N)r   r
  r  r   s   &rB   r   BodyPartReader.release  s8     <<<,,,//$//222 2s   &AAA	Ar   c                6   < V ^8  d   QhRS[ S[,          RS[/# rF   r   rH   r   rI   )rJ   r   s   "rB   rK   r     s     % %hsm %s %rA   c                  "   V P                  RR7      G Rj  xL
 pT;'       g    V P                  RR7      pVP                  V4      #  L15i)z;Like read(), but assumes that body part contains text data.Tr  Nr   default)r  get_charsetr  r   r   r  s   &$ rB   rv   BodyPartReader.text  sI     YYdY++ @@t///@{{8$$	 ,s   AA
A%Ac                \   < V ^8  d   QhRS[ S[,          RS[ S[S[S[3,          ,          /# r@  )r   rI   r
   r   )rJ   r   s   "rB   rK   r     s1     G Ghsm GxSRUX?W GrA   c                 "   V P                  RR7      G Rj  xL
 pV'       g   R# T;'       g    V P                  RR7      p\        \        \        \
        3,          \        P                  ! VP                  V4      4      4      #  Ln5i)z<Like read(), but assumes that body parts contains JSON data.TrC  Nr   rD  )	r  rF  r   r
   rI   r   jsonloadsr  rG  s   &$ rB   rK  BodyPartReader.json  se     YYdY++@@t///@DcNDJJt{{8/D$EFF	 ,s   B	BB	
B	AB	c                \   < V ^8  d   QhRS[ S[,          RS[S[S[S[3,          ,          /# r@  )r   rI   r   r   )rJ   r   s   "rB   rK   r     s,     
 
hsm 
tE#s(O?T 
rA   c               &  "   V P                  RR7      G Rj  xL
 pV'       g   . # Ve   TpMV P                  RR7      p VP                  4       P                  V4      p\        TRTR7      #  LU  \         d    \        RT,          4      hi ; i5i)zFLike read(), but assumes that body parts contain form urlencoded data.TrC  Nr   rD  z'data cannot be decoded with %s encoding)keep_blank_valuesr   )r  rF  r6  r  r   r  r   )r   r   r  real_encodingdecoded_datas   &$   rB   formBodyPartReader.form  s     YYdY++I$M ,,W,=M	X;;=//>L ""
 	
 , " 	XFVWW	Xs,   BA.BBA0  B0BBc                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r            rA   c                    V P                   # )z<Returns True if the boundary was reached or False otherwise.r   r   s   &rB   r   BodyPartReader.at_eof      ||rA   c                &   < V ^8  d   QhRS[ RS[ /# rF   r  rH   r   )rJ   r   s   "rB   rK   r     s       5 rA   c                   "   \         V P                  9   d   V P                  V4      pV P                  '       g/   \        V P                  9   d   V P                  V4      G Rj  xL
 # V#  L5i)zuDecodes data.

Decoding is done according the specified Content-Encoding
or Content-Transfer-Encoding headers value.
N)r   r   _decode_content_transferr   r   _decode_content)r   r  s   &&rB   r  BodyPartReader.decode  sY      %4006D!!!&6$,,&F--d333 4s   8A-)A-$A+%A-c                &   < V ^8  d   QhRS[ RS[ /# r\  r   )rJ   r   s   "rB   rK   r     s     
D 
D% 
DE 
DrA   c                  "   V P                   P                  \        R 4      P                  4       pVR8X  d   V# VR9   d0   \	        VRR7      P                  WP                  R7      G Rj  xL
 # \        RV 24      h L5i)rt   identityT)r   suppress_deflate_header)
max_lengthNunknown content encoding: >   gzipdeflate)r   r   r   r   r   
decompressr   RuntimeErrorr   r  r   s   && rB   r_  BodyPartReader._decode_content  s     <<##$4b9??Az!K**)!(, j*C*CjDE E
 7zBCCEs   A)B +A>,B c                &   < V ^8  d   QhRS[ RS[ /# r\  r   )rJ   r   s   "rB   rK   r     s     
Q 
QU 
Qu 
QrA   c                    V P                   P                  \        R 4      P                  4       pVR8X  d   \        P
                  ! V4      # VR8X  d   \        P                  ! V4      # VR9   d   V# \        RV 24      h)rt   r  quoted-printable#unknown content transfer encoding: )binary8bit7bit)	r   r   r   r   r  	b64decodebinasciia2b_qprj  rk  s   && rB   r^  'BodyPartReader._decode_content_transfer  st    <<##$=rBHHJx##D))++??4((33K!DXJOPPrA   c                &   < V ^8  d   QhRS[ RS[ /# )rF   rE  rH   rw   )rJ   r   s   "rB   rK   r     s     T T3 T3 TrA   c                    V P                   P                  \        R4      p\        V4      pVP                  P                  RV P
                  ;'       g    T4      # )z>Returns charset parameter from Content-Type header or default.rt   charset)r   r   r    r#   
parametersr   )r   rE  ctypemimetypes   &&  rB   rF  BodyPartReader.get_charset  sI      r2!%(""&&y$2G2G2R2R7SSrA   c                0   < V ^8  d   QhRS[ S[,          /# r   rA  )rJ   r   s   "rB   rK   r   &  s     < <hsm <rA   c                n    \        V P                  P                  \        4      4      w  r\	        VR4      # )zlReturns name specified in Content-Disposition header.

If the header is missing or malformed, returns None.
r   r   r   r   r   r   r   r   r   s   &  rB   r   BodyPartReader.name%  s-     .dll.>.>?R.ST	+FF;;rA   c                0   < V ^8  d   QhRS[ S[,          /# r   rA  )rJ   r   s   "rB   rK   r   /  s     @ @(3- @rA   c                n    \        V P                  P                  \        4      4      w  r\	        VR4      # )zoReturns filename specified in Content-Disposition header.

Returns None if the header is missing or malformed.
filenamer  r  s   &  rB   r  BodyPartReader.filename.  s-     .dll.>.>?R.ST	+FJ??rA   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r<   r=   r>   r?   r   r  r   r   r   r   r   r  r
  r  r  r  r   rv   rK  rS  r   r  r_  r^  rF  r$   r   r  r@   r   r   s   @rB   r2   r2     s5    0J8 8 *.8 $?8 86   5    ,6 * *X + +Z :3 3%d % %Gd G G
d 
 
(  
D 
D
Q 
QT T < < @ @rA   )orderc                      a a ] tR tRt oV3R lV 3R lltRV3R lR lltRV3R lR lltV3R lR	 ltV3R
 ltRt	Vt
V ;t# )BodyPartReaderPayloadi8  c                0   < V ^8  d   QhRS[ RS[RS[RR/# )rF   r   argskwargsrH   N)r2   r   )rJ   r   s   "rB   rK   "BodyPartReaderPayload.__annotate__=  s/     
G 
Gn 
GS 
GC 
GD 
GrA   c                   < \         SV `  ! V.VO5/ VB  / pVP                  e   VP                  VR&   VP                  e   VP                  VR&   V'       d   V P                  ! R/ VB  R # R # )Nr   r  )
attachmentT)superr   r   r  set_content_disposition)r   r   r  r  r   	__class__s   &&*, rB   r   BodyPartReaderPayload.__init__=  sg    000!#::!"ZZF6N>>%!&F:((FvF rA   c                ,   < V ^8  d   QhRS[ RS[ RS[ /# rF   r   errorsrH   rw   )rJ   r   s   "rB   rK   r  I  s"     - -s -c - -rA   c                    \        R 4      h)zUnable to decode.	TypeErrorr   r   r  s   &&&rB   r  BodyPartReaderPayload.decodeI  s    +,,rA   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r  rI   r   )rJ   r   s   "rB   rK   r  L  s(     V Vs Vc VQV VrA   c                    "   \        R4      h5i)a*  Raises TypeError as body parts should be consumed via write().

This is intentional: BodyPartReader payloads are designed for streaming
large data (potentially gigabytes) and must be consumed only once via
the write() method to avoid memory exhaustion. They cannot be buffered
in memory for reuse.
z:Unable to read body part as bytes. Use write() to consume.r  r  s   &&&rB   as_bytesBodyPartReaderPayload.as_bytesL  s      TUUs   c                $   < V ^8  d   QhRS[ RR/# rF   writerrH   Nr   )rJ   r   s   "rB   rK   r  V  s     7 7"6 74 7rA   c                  "   V P                   pVP                  RR7      G Rj  xL
 pV'       dM   TP                  VP                  V4      G Rj  xL
 4      G Rj  xL
  VP                  RR7      G Rj  xL
 pKT  R#  LZ L0 L& L5i)rF   )r  Ni   )r   r
  writer  )r   r  fieldr  s   &&  rB   r  BodyPartReaderPayload.writeV  sn     &&E&22,,U\\%%88999***66E  3896sJ   "BA?BBBBBB6B7	BBBBc                &   < V ^8  d   Qh/ S[ ;R&   # )rF   r   )r2   )rJ   r   s   "rB   rK   r  8  s      rA   r:   r   r   )r<   r=   r>   r?   r   r  r  r  __annotate_func__r@   r   __classcell__r  r   s   @@rB   r  r  8  s8     

G 
G- -V V7 7=  rA   r  c                   T  a  ] tR tRt o Rt]tRt]t	V 3R lR lt
V 3R lR ltV 3R lR	 lt]V 3R
 lR l4       tV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R  lR! ltV 3R" ltR#tV tR# )$r4   i^  zMultipart body reader.Nc                @   < V ^8  d   QhRS[ S[S[3,          RS[RR/# )rF   r   r   rH   N)r   rI   r.   )rJ   r   s   "rB   rK   MultipartReader.__annotate__i  s+     ' 'S 1 'L 'T 'rA   c                   \        V\        ,          4      V n        V P                  P                  R 8X  g   Q R4       hRV P                  P                  9  d   \        RV\        ,          ,          4      hWn        RV P                  4       ,           P                  4       V n	        W n
        RV n        RV n        RV n        RV n        . V n        R# )	multipartz!multipart/* content type expectedr   z$boundary missed for Content-Type: %s--NFT)r#   r    	_mimetypetyper{  r  r   _get_boundaryencoder   r   r   
_last_partr   _at_bofr   )r   r   r   s   &&&rB   r   MultipartReader.__init__i  s    '(=>~~""k1V3VV1T^^66669NN  !3!3!55==?/3NR$&rA   c                &   < V ^8  d   QhRS[ RS[ /# r   r/   )rJ   r   s   "rB   rK   r  z  r   rA   c                    V # rT   r:   r   s   &rB   r   MultipartReader.__aiter__z  r   rA   c                D   < V ^8  d   QhRS[ S[RS[3,          ,          /# rF   rH   r4   r   r   r2   )rJ   r   s   "rB   rK   r  }  s%      	%)>9:	;rA   c                V   "   V P                  4       G R j  xL
 pVf   \        hV#  L5irT   r   r   s   & rB   r   MultipartReader.__anext__}  r   r   c                $   < V ^8  d   QhRRRS[ /# )rF   responser8   rH   )r   )rJ   r   s   "rB   rK   r    s      " 
"rA   c                ^    V P                  W! VP                  VP                  4      4      pV# )zrConstructs reader instance from HTTP response.

:param response: :class:`~aiohttp.client.ClientResponse` instance
)response_wrapper_clsr   r   )clsr  objs   && rB   from_responseMultipartReader.from_response  s3     &&c(**H,<,<=
 
rA   c                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r    rV  rA   c                    V P                   # )z@Returns True if the final boundary was reached, false otherwise.rX  r   s   &rB   r   MultipartReader.at_eof  rZ  rA   c                D   < V ^8  d   QhRS[ S[RS[3,          ,          /# r  r  )rJ   r   s   "rB   rK   r    s%     ! !	%)>9:	;!rA   c                n  "   V P                   '       d   R# V P                  4       G Rj  xL
  V P                  '       d!   V P                  4       G Rj  xL
  RV n        MV P	                  4       G Rj  xL
  V P                   '       d   R# V P                  4       G Rj  xL
 pV P                  f   V P                  P                  R8X  d   \        V\        4      '       d   \        VP                  P                  \        4      4      w  r#VP                  R4      R8X  dp   VP                  ^ 4      G Rj  xL
 p\!        V4      ^8  d   \#        R4      hVP%                  4       P'                  4       V n        V P                  4       G Rj  xL
 pWn        V P                  #  EL{ ELT EL7 EL Lx L$5i)z#Emits the next multipart body part.NFr   r   	_charset_zInvalid default charset)r   _maybe_release_last_partr  _read_until_first_boundary_read_boundaryfetch_next_partr  r  r   
isinstancer2   r   r   r   r   r
  r   rj  r   r  r   )r   r   r   r   rz  s   &    rB   r   MultipartReader.next  sL    
 <<<++---<<<11333 DL%%'''<<<))++ OO#&&+54001$,,2B2BCV2WXIAzz&![0 !% 33w<"$&'@AA(/(>(>(@%!11335 	.3 ( , 4 4sw   (F5F%F5F5F(F54F+5F5F5 F.!BF58F19AF5F3F5(F5+F5.F51F53F5c                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r    s     ! !t !rA   c                   "   V P                   '       g9   V P                  4       G Rj  xL
 pVf   R# VP                  4       G Rj  xL
  KJ  R#  L& L
5i)z=Reads all the body parts to the void till the final boundary.N)r   r   r   r   s   & rB   r   MultipartReader.release  s@     ,,,$D|,,.  	 $ !s&   AAAAA	AAc                4   < V ^8  d   QhRS[ RS[3,          /# r  r   r2   )rJ   r   s   "rB   rK   r    s      . .	 .0	1.rA   c                `   "   V P                  4       G Rj  xL
 pV P                  V4      #  L5i)z"Returns the next body part reader.N)_read_headers_get_part_reader)r   r   s   & rB   r  MultipartReader.fetch_next_part  s.      **,,$$W-- -s   .,.c                8   < V ^8  d   QhRRRS[ RS[3,          /# )rF   r   r   rH   r4   r  )rJ   r   s   "rB   rK   r    s*      ( 
 .0	1rA   c                ~   VP                  \        R4      p\        V4      pVP                  R8X  dE   V P                  f   \        V 4      ! WP
                  4      # V P	                  WP
                  4      # V P                  V P                  VV P
                  V P                  P                  V P                  R7      # )zDispatches the response by the `Content-Type` header.

Returns a suitable reader instance.

:param dict headers: Response headers
rt   r  )r   r   )r   r    r#   r  multipart_reader_clsr   part_reader_clsr   r  r   r   )r   r   r|  r}  s   &&  rB   r   MultipartReader._get_part_reader  s     L"-!%(==K'((0Dz'==99,,WmmDD''.. $ 5 5 (  rA   c                    < V ^8  d   QhRS[ /# r   rw   )rJ   r   s   "rB   rK   r    s      s rA   c                    V P                   P                  R ,          p\        V4      ^F8  d   \        RV,          4      hV# )r   z&boundary %r is too long (70 chars max))r  r{  r   r  )r   r   s   & rB   r  MultipartReader._get_boundary  s8    >>,,Z8x=2EPQQrA   c                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r    s     . . .rA   c                   "   V P                   '       d   V P                   P                  4       # V P                  P                  4       G R j  xL
 #  L5irT   )r   r   r   r  r   s   &rB   	_readlineMultipartReader._readline  s:     <<<<<##%%]]++----s   A
AAAc                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r    s      $ rA   c                  "    V P                  4       G Rj  xL
 pVR8X  d   \        RV P                  ,          4      hVP                  4       pWP                  8X  d   R# WP                  R,           8X  g   Kw  R V n        R#  Lk5i)TNrA   z#Could not find starting boundary %rr3  )r  r  r   r6  r   r   r  s   & rB   r  *MultipartReader._read_until_first_boundary  so     ..**E| 9T^^L  LLNE&..500# +s   BBAB:
Bc                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r    s     Y Yd YrA   c                  "   V P                  4       G R j  xL
 P                  4       pWP                  8X  d   R # WP                  R,           8X  d   RV n        V P                  4       G R j  xL
 pV P                  4       G R j  xL
 pVR,          R8X  d   V P                  P                  V4       R # V P                  P                  W2.4       R # \        RV: RV P                  : 24      h L L Ln5i)Nr3  T:NrF   NzInvalid boundary z, expected )r  r6  r   r   r   r   r	  r  )r   r  epiloguer:  s   &   rB   r  MultipartReader._read_boundary  s     ~~''//1NN"nnu,,DL!^^--H"nn..I }%##I.
 ##Y$9:0	T^^DVWXX) (
 ..s5   C5C/AC5,C1-C5C3A+C51C53C5c                   < V ^8  d   QhRR/# )rF   rH   r   r:   )rJ   r   s   "rB   rK   r    s     
 
%< 
rA   c                   "   . p V P                   P                  4       G Rj  xL
 pVP                  R4      pVP                  V4       V'       d   KO   \	        4       pTP                  T4      w  rET#  LP5i)TNr  )r   r  r6  r   r%   parse_headers)r   linesr  parserr   raw_headerss   &     rB   r  MultipartReader._read_headers  sh     --0022ELL)ELL5%33E: 3s   !A6A4+A6!A6c                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r     s     # # #rA   c                "  "   V P                   e{   V P                   P                  4       '       g#   V P                   P                  4       G Rj  xL
  V P                  P	                  V P                   P                  4       RV n         R# R#  L>5i)z8Ensures that the last read body part is read completely.N)r  r   r   r   r	  r   s   &rB   r  (MultipartReader._maybe_release_last_part   sc     ??&??))++oo--///LL 7 78"DO	 '/s   .BBB?Bc                D   < V ^8  d   Qh/ S[ S[R,          ,          ;R&   # )rF   r4   r  )r   r   )rJ   r   s   "rB   rK   r  ^  s      #4(9#:;B rA   )	r  r   r   r   r   r  r  r   r   )r<   r=   r>   r?   r   r   r  r  r2   r  r   r   r   classmethodr  r   r   r   r  r  r  r  r  r  r  r  r  r@   r   r   s   @rB   r4   r4   ^  s       4 ?C$O' '"     ! !F! !. . 4 . .
 Y Y.
 
# #E  rA   c                     a a ] tR tRt oRtRtR*V3R lV 3R llltV3R lR ltV3R lR	 ltV3R
 lR lt	V3R lR lt
V3R lR lt]P                  ! R4      t]P                  ! R4      t]V3R lR l4       t]V3R lR l4       tR+V3R lR lltV3R lR ltR+V3R lR lltR+V3R lR llt]V3R lR l4       tR,V3R  lR! lltR,V3R" lR# lltR-V3R$ lR% lltV3R& lR' ltV3R( ltR)tVtV ;t# ).r5   i,  zMultipart body writer.Tc                :   < V ^8  d   QhRS[ RS[S[ ,          RR/# )rF   r   r   rH   N)rI   r   )rJ   r   s   "rB   rK   MultipartWriter.__annotate__3  s'     4 4 4# 4RV 4rA   c                  < Ve   TM\         P                  ! 4       P                  p VP                  R4      V n        RT RT P                   2p\        ST `%  R TR7       . T n
        TR8H  T n        R #   \
         d    \        R4      R hi ; i)Nasciiz(boundary should contain ASCII only charsz
multipart/z; boundary=)content_typer   )uuiduuid4hexr  r   UnicodeEncodeErrorr  _boundary_valuer  r   _partsr   )r   r   r   r|  r  s   &&& rB   r   MultipartWriter.__init__3  s    '389I9I	S%__W5DN WI[1E1E0FGE2#%$3 " 	SGHdR	Ss   A4 4Bc                   < V ^8  d   QhRR/# )rF   rH   r5   r:   )rJ   r   s   "rB   rK   r  E  s      , rA   c                    V # rT   r:   r   s   &rB   	__enter__MultipartWriter.__enter__E  r   rA   c                p   < V ^8  d   QhRS[ S[S[,          ,          RS[ S[,          RS[ S[,          RR/# )rF   exc_typeexc_valexc_tbrH   N)r   r   BaseExceptionr   )rJ   r   s   "rB   rK   r  H  sG      4./ -( '	
 
rA   c                    R # rT   r:   )r   r  r  r  s   &&&&rB   __exit__MultipartWriter.__exit__H  s     	rA   c                0   < V ^8  d   QhRS[ S[,          /# r   )r   _Part)rJ   r   s   "rB   rK   r  P  s     ! !(5/ !rA   c                ,    \        V P                  4      # rT   )iterr  r   s   &rB   __iter__MultipartWriter.__iter__P  s    DKK  rA   c                    < V ^8  d   QhRS[ /# r   )r   )rJ   r   s   "rB   rK   r  S  s          rA   c                ,    \        V P                  4      # rT   )r   r  r   s   &rB   __len__MultipartWriter.__len__S  s    4;;rA   c                    < V ^8  d   QhRS[ /# r   r   )rJ   r   s   "rB   rK   r  V  s      $ rA   c                    R # Tr:   r   s   &rB   __bool__MultipartWriter.__bool__V  s    rA   s   \A[!#$%&'*+\-.^_`|~\w]+\Zs   [\x00-\x08\x0A-\x1F\x7F]c                    < V ^8  d   QhRS[ /# r   rw   )rJ   r   s   "rB   rK   r  ]  s     @ @ @rA   c                t   V P                   p\        P                  ! V P                  V4      '       d   VP	                  R4      # \        P
                  ! V P                  V4      '       d   \        R4      hVP                  RR4      pVP                  RR4      pRVP	                  R4      ,           R,           # )zjWrap boundary parameter value in quotes, if necessary.

Reads self.boundary and returns a unicode string.
r  z*boundary value contains invalid characters   \s   \\   "s   \"r[   )	r   ry   match_valid_tchar_regexr  search_invalid_qdtext_char_regexr  replace)r   r   quoted_value_contents   &  rB   r
  MultipartWriter._boundary_value\  s    & 88D++U33<<((99T44e<<IJJ  %}}UG<3;;D&I)0099C??rA   c                    < V ^8  d   QhRS[ /# r   rw   )rJ   r   s   "rB   rK   r  }  s     . .# .rA   c                8    V P                   P                  R 4      # )r  )r   r  r   s   &rB   r   MultipartWriter.boundary|  s    ~~$$W--rA   c                R   < V ^8  d   QhRS[ RS[S[S[S[3,          ,          RS[/# rF   r  r   rH   r   r   r   rI   r*   )rJ   r   s   "rB   rK   r    s0     4 4# 4c1B(C 4w 4rA   c                    Vf   \        4       p\        V\        4      '       d-   VP                  P	                  V4       V P                  V4      #  \        WR7      pV P                  V4      #   \         d    \        RT,          4      hi ; i)Nr   zCannot create payload from %r)	r   r  r*   r   updateappend_payloadr,   r(   r  )r   r  r   payloads   &&& rB   r   MultipartWriter.append  s    ?!mGc7##KKw'&&s++4%c; **733  G ?# EFFGs   A/ /Bc                &   < V ^8  d   QhRS[ RS[ /# )rF   r=  rH   )r*   )rJ   r   s   "rB   rK   r    s     $ $g $' $rA   c                   RpRpV P                   '       dz   \        \        \        0VP                  P                  4       ,          '       d   Q h\        VP                  9  d,   R\        V P                  4       2pVP                  RVR7       MVP                  P                  \        R4      P                  4       pV'       d   VR
9  d   \        RV 24      hVR8X  d   RpVP                  P                  \        R4      P                  4       pVR9  d   \        R	V 24      hVR8X  d   RpVP                  pVe-   V'       g%   V'       g   \        V4      VP                  \        &   V P                  P                  WV34       V# )z)Adds a new body part to multipart writer.Nzsection-r   )r   rt   rc  rf  rq  rp  )rh  rg  rc  )rt   r  ro  rq  )r   r   r   r   r   keysr   r   r  r  r   r   rj  r  rI   r   )r   r=  r   te_encodingr   r  s   &&    rB   r<  MultipartWriter.append_payload  s\   "&%) &~7PQ//&&() )) #'//9!#dkk"2!34//$/G **+;R@FFHHH,KK"%?z#JKK:% "//--.GLRRTK"NN"%H#VWWh&" <<D[25d)/G{;<rA   c                R   < V ^8  d   QhRS[ RS[S[S[S[3,          ,          RS[/# r7  r8  )rJ   r   s   "rB   rK   r    s8     F FF!)'#s(*;!<F	FrA   c                T    Vf   \        4       pV P                  \        WR7      4      # )zHelper to append JSON part.r:  )r   r<  r'   )r   r  r   s   &&&rB   append_jsonMultipartWriter.append_json  s&     ?!mG"";s#DEErA   c                   < V ^8  d   QhRS[ S[S[S[S[3,          ,          S[S[S[3,          3,          RS[S[S[S[3,          ,          RS[/# r7  )r   r   r   rI   r   r   r*   )rJ   r   s   "rB   rK   r    sW     
 
8E#s(O,gc3h.??@
 '#s(+,
 
	
rA   c                
   \        V\        \        34      '       g   Q hVf   \        4       p\        V\        4      '       d   \	        VP                  4       4      p\        VRR7      pV P                  \        W2RR7      4      # )z&Helper to append form urlencoded part.T)doseqz!application/x-www-form-urlencoded)r   r  )	r  r   r   r   listr   r   r<  r+   )r   r  r   r  s   &&& rB   append_formMultipartWriter.append_form  sr     #'23333?!mGc7##syy{#CD)""4W
 	
rA   c                0   < V ^8  d   QhRS[ S[,          /# r   )r   r   )rJ   r   s   "rB   rK   r    s      hsm rA   c                   ^ pV P                    F  w  r#pVP                  pV'       g   V'       g   Vf    R# V\        ^\        V P                  4      ,           ^,           V,           \        VP
                  4      ,           ^,           4      ,          pK  	  V^\        V P                  4      ,           ^,           ,          pV# )zSize of the payload.N)r  r  r   r   r   _binary_headers)r   totalr   r   rB  	part_sizes   &     rB   r  MultipartWriter.size  s     +/;;'DK		I;)*;Sdnn%&  d**+	,
  E ,7 	S((1,,rA   c                ,   < V ^8  d   QhRS[ RS[ RS[ /# r  rw   )rJ   r   s   "rB   rK   r    s"     
 
s 
c 
 
rA   c                V   a aa RP                  VVV 3R lS P                   4       4      # )zReturn string representation of the multipart data.

WARNING: This method may do blocking I/O if parts contain file payloads.
It should not be called in the event loop. Use as_bytes().decode() instead.
rt   c              3      <"   T FX  w  rpR SP                   ,           R,           VP                  P                  SS4      ,           VP                  4       ,           x  KZ  	  R# 5i)r  z
N)r   rP  r  )r   r   _e_ter   r  r   s   &   rB   r   )MultipartWriter.decode.<locals>.<genexpr>  sf      
 "-# mm ""))(F;< kkm	 
 "-s   A A#)r   r  r  s   fffrB   r  MultipartWriter.decode  s)     ww 
 "&
 
 	
rA   c                ,   < V ^8  d   QhRS[ RS[ RS[/# r  r  )rJ   r   s   "rB   rK   r    s#      s c QV rA   c                  "   . pV P                    F  w  rEpVP                  RV P                  ,           R,           4       VP                  VP                  4       VP	                  W4      G Rj  xL
 pVP                  V4       VP                  R4       K  	  VP                  RV P                  ,           R,           4       RP                  V4      #  Ld5i)zyReturn bytes representation of the multipart data.

This method is async-safe and calls as_bytes on underlying payloads.
r3  r  N   --
rA   )r  r   r   rP  r  r   )r   r   r  r   r   rW  rX  
part_bytess   &&&     rB   r  MultipartWriter.as_bytes  s     
   "[[MDcLL/'9: LL--.  $}}X>>JLL$ LL! ) 	UT^^+i78xx ?s   A-C/C0A%Cc                *   < V ^8  d   QhRS[ RS[RR/# )rF   r  close_boundaryrH   N)r   rQ   )rJ   r   s   "rB   rK   r    s*     C C*C<@C	CrA   c                j  "   V P                    EFS  w  r4pV P                  '       d6   \        VP                  9   g   Q hRVP                  \        ,          9   g   Q hVP	                  RV P
                  ,           R,           4      G Rj  xL
  VP	                  VP                  4      G Rj  xL
  V'       g	   V'       dp   \        V4      pV'       d   VP                  V4       V'       d   VP                  V4       VP	                  V4      G Rj  xL
  VP                  4       G Rj  xL
  MVP	                  V4      G Rj  xL
  VP	                  R4      G Rj  xL
  EKV  	  V'       d4   VP	                  RV P
                  ,           R,           4      G Rj  xL
  R# R#  EL L L L Lh LQ L5i)zWrite body.zname=r3  r  Nr]  )r  r   r   r   r  r   rP  MultipartPayloadWriterenable_compressionenable_encoding	write_eof)r   r  ra  r   r   rB  ws   &&&    rB   r  MultipartWriter.write  sD     ,0;;'DK!!!*dll:::$,,/B"CCCC,,ut~~5?@@@,,t33444;*62((2%%k2jjm##kkm##jj(((,,w''') ,7, ,,ut~~5	ABBB ! A4 $#(' Cs   BF3	F$
"F3,F'-F39F3+F3-%F3F)F3*F++F3F-F3F/F3/,F3F1	F3'F3)F3+F3-F3/F31F3c                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   r  /  s      T rA   c           	     t  "   V P                   '       d   R# RV n         \        V P                  4       FK  w  pw  p pVP                  '       d   K  VP                  '       d   K2   VP                  4       G Rj  xL
  KM  	  R#  L
  \         d%   p\        P                  ! RYRR7        Rp?K}  Rp?ii ; i5i)z
Close all part payloads that need explicit closing.

IMPORTANT: This method must not await anything that might not finish
immediately, as it may be called during cleanup/cancellation. Schedule
any long-running operations without awaiting them.
NTz%Failed to close multipart part %d: %s)exc_info)		_consumedr   r  	autocloseconsumedclose	Exceptionr&   error)r   r.  r   r   excs   &    rB   ro  MultipartWriter.close/  s      >>> "+4;;!7C$1>>>$---**,&& "8 '  #))?TX sH   A
B8B8&B9B:B>B8BB5B0*B80B55B8c                $   < V ^8  d   Qh/ R;R&   # )rF   Nr   r:   )rJ   r   s   "rB   rK   r  ,  s      L rA   )r   rl  r   r  )r   NrT   r  r%  ) r<   r=   r>   r?   r   
_autocloser   r  r  r  r!  r&  ry   compiler-  r/  propertyr
  r   r   r<  rF  rL  r  r  r  r  ro  r  r@   r   r  r  s   @@rB   r5   r5   ,  s      J4 4$  ! !     $AB!#,H!I@ @> . .4 4$ $LF F
 
*  (
 
 6C C: G  rA   c                   ~   a  ] tR tRt o V 3R lR ltV 3R lR ltRV 3R lR lltV 3R	 lR
 ltV 3R lR ltRt	V t
R# )rc  iI  c                $   < V ^8  d   QhRS[ RR/# r  r   )rJ   r   s   "rB   rK   #MultipartPayloadWriter.__annotate__J  s     : :3 : :rA   c                <    Wn         R V n        R V n        R V n        R # rT   )_writer	_encoding	_compress_encoding_buffer)r   r  s   &&rB   r   MultipartPayloadWriter.__init__J  s    (,3759rA   c                $   < V ^8  d   QhRS[ RR/# )rF   r   rH   Nrw   )rJ   r   s   "rB   rK   rz  P  s     0 0 0 0rA   c                b    VR 8X  d   Wn         \        4       V n        R# VR8X  d
   RV n         R# R# )r  ro  N)r}  r  r  )r   r   s   &&rB   re  &MultipartPayloadWriter.enable_encodingP  s.    x%N$-KD!++/DN ,rA   Nc                :   < V ^8  d   QhRS[ RS[S[,          RR/# )rF   r   strategyrH   N)rI   r   r   )rJ   r   s   "rB   rK   rz  W  s)     
 

3;C=
	
rA   c                ,    \        VR VR7      V n        R# )T)r   rd  r  N)r   r~  )r   r   r  s   &&&rB   rd  )MultipartPayloadWriter.enable_compressionW  s     ($(
rA   c                   < V ^8  d   QhRR/# r   r:   )rJ   r   s   "rB   rK   rz  `  s     	R 	R 	RrA   c                  "   V P                   eC   V P                   P                  4       pV'       d!   R V n         V P                  V4      G R j  xL
  V P                  R8X  dX   V P                  '       dD   V P
                  P                  \        P                  ! V P                  4      4      G R j  xL
  R # R # R #  Ln L5i)Nr  )r~  flushr  r}  r  r|  r  	b64encoder  s   & rB   rf   MultipartPayloadWriter.write_eof`  s     >>%NN((*E!%jj'''>>X%$$$ll(()9)9$:O:O)PQQQ % & ( Rs.   0CCB=&C6<C2B?3C?Cc                $   < V ^8  d   QhRS[ RR/# )rF   r  rH   Nr   )rJ   r   s   "rB   rK   rz  k  s     , , ,4 ,rA   c                  "   V P                   e6   V'       d.   V P                   P                  V4      G R j  xL
 pV'       g   R # V P                  R8X  d   V P                  pVf   Q hVP	                  V4       V'       dy   \        \        V4      ^4      w  r4VR V^,           W#^,          R  uqPn        V'       d<   \        P                  ! V4      pV P                  P                  V4      G R j  xL
  R # R # R # V P                  R8X  d:   V P                  P                  \        P                  ! V4      4      G R j  xL
  R # V P                  P                  V4      G R j  xL
  R #  EL4 L| L0 L5i)Nr  ro  )r~  compressr}  r  r	  divmodr   r  r  r|  r  ru  b2a_qp)r   r  bufdivmod	enc_chunkb64chunks   &&     rB   r  MultipartPayloadWriter.writek  s    >>%"nn55e<<>>X%''C?"?JJu!#c(A.47	#'NCa	N0	0%//	:H,,,,X666   ^^11,,$$X__U%;<<<,,$$U+++% = 7<+sX   E4E4E+E4=E4A/E41E.2AE4?E0 $E4$E2%E4.E40E42E4)r~  r}  r  r|  )rh  N)r<   r=   r>   r?   r   re  rd  rf  r  r@   r   r   s   @rB   rc  rc  I  s9     : :0 0
 
	R 	R, ,rA   rc  )      )r4   r5   r2   r6   r7   r   r   )r  )Tr  ru  rK  ry   sysr  r   collectionsr   collections.abcr   r   typesr   typingr   r   r	   r
   r   r   r   r   r   r   r   urllib.parser   r   r   	multidictr   r   abcr   compression_utilsr   r   r   hdrsr   r   r   r   r    helpersr!   r"   r#   r$   httpr%   logr&   r=  r'   r(   r)   r*   r+   r,   r-   streamsr.   version_infor0   r1   __all__client_reqrepr8   RuntimeWarningr6   r7   r   r   r   r2   	try_firstr  r4   rI   r  r5   rc  r:   rA   rB   <module>r     sJ      	 
    -     7 6 3 % 
  8 7      "w6!12D -	. 		 	d$NB," ,"^i@ i@X	 nEOO4"7G "7 5"7JH# H#V 	gsC Zg Zz7, 7,rA   