
    %hu-                    b   S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	  SSK
Jr  SSKJr  SS	KJr   " S
 S5      r\" SS9 " S S\5      5       r\" SS9 " S S\5      5       r\" SS9 " S S\5      5       r\" SS9 " S S\5      5       r\" SS9 " S S\5      5       r " S S\5      r\" 5       r " S S\	5      rSr\R4                  " S\R6                  5      r\R4                  " \\R6                  5      r\R4                  " S\-  \R6                  5      rSr " S  S!5      r  " S" S#5      r!g)$    )annotationsN)	dataclass)auto)Enum   )Headers)RequestEntityTooLarge)parse_options_headerc                      \ rS rSrSrg)Event    N__name__
__module____qualname____firstlineno____static_attributes__r       Q/var/www/auris/envauris/lib/python3.13/site-packages/werkzeug/sansio/multipart.pyr   r          r   r   T)frozenc                       \ rS rSr% S\S'   Srg)Preamble   bytesdatar   Nr   r   r   r   __annotations__r   r   r   r   r   r          
Kr   r   c                  *    \ rS rSr% S\S'   S\S'   Srg)Field   strnamer   headersr   Nr   r   r   r   r"   r"      s    
Ir   r"   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)	File   r$   r%   filenamer   r&   r   Nr   r   r   r   r(   r(      s    
IMr   r(   c                  *    \ rS rSr% S\S'   S\S'   Srg)Data$   r   r   bool	more_datar   Nr   r   r   r   r,   r,   $   s    
KOr   r,   c                       \ rS rSr% S\S'   Srg)Epilogue*   r   r   r   Nr   r   r   r   r1   r1   *   r    r   r1   c                      \ rS rSrSrg)NeedData/   r   Nr   r   r   r   r4   r4   /   r   r   r4   c                  h    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
Srg)State6   r   N)r   r   r   r   r   PREAMBLEPARTDATA
DATA_STARTEPILOGUECOMPLETEr   r   r   r   r7   r7   6   s,    vH6D6DJvHvHr   r7   s
   (?:
|
|)s   (?:

||

)s   %s[ 	]   c                  p    \ rS rSrSr SSS.       SS jjjrSS jrSS jrSS jrSS	 jr	SS
 jr
Srg)MultipartDecoderM   zDecodes a multipart message as bytes into Python events.

The part data is returned as available to allow the caller to save
the data from memory to disk, if desired.
N)	max_partsc                  [        5       U l        SU l        X l        X0l        [
        R                  U l        Xl        [        R                  " S[        [        R                  " U5      [        [        4-  [        R                  5      U l        [        R                  " S[        [        R                  " U5      [        [        4-  [        R                  5      U l        SU l        SU l        g )NFs%   %s?--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)s$   %s--%s(--[^\S\n\r]*%s?|[^\S\n\r]*%s)r   )	bytearraybuffercompletemax_form_memory_sizerC   r7   r9   stateboundaryrecompile
LINE_BREAKescape	MULTILINEpreamble_reboundary_re_search_position_parts_decoded)selfrJ   rH   rC   s       r   __init__MultipartDecoder.__init__T   s      k$8!"^^
  ::5299X.
JGHLL
 ::4299X.
JGHLL

 !"r   c                     UR                  S5      n UR                  S5      n[        X#5      $ ! [         a    [        U5      n N4f = f! [         a    [        U5      n N=f = f)N   
   )rindex
ValueErrorlenmin)rT   r   last_nllast_crs       r   last_newlineMultipartDecoder.last_newline|   sh    	 kk%(G	 kk%(G 7$$  	 $iG	   	 $iG	 s    0 A AAA#"A#c                    Uc  SU l         g U R                  b9  [        U R                  5      [        U5      -   U R                  :  a
  [	        5       eU R                  R                  U5        g )NT)rG   rH   r\   rF   r	   extend)rT   r   s     r   receive_dataMultipartDecoder.receive_data   sW    < DM%%1DKK 3t9,t/H/HH ())KKt$r   c                   [         nU R                  [        R                  :X  Ga  U R                  R                  U R                  U R                  5      nUb  UR                  S5      R                  S5      (       a  [        R                  U l        O[        R                  U l        [        U R                  S UR                  5        5      nU R                  S UR                  5       2	 [        US9nSU l        GO6[!        S[#        U R                  5      [#        U R$                  5      -
  [&        -
  5      U l        GOU R                  [        R                  :X  Ga  [(        R                  U R                  U R                  5      nUGb8  U R+                  U R                  S UR                  5        5      nUR                  5       UR                  5       -   S-  nU R                  S U2	 SU;  a  [-        S5      e[/        US   5      u  pg[0        R2                  " [4        UR7                  S5      5      nUR7                  S	5      n	U	b  [9        U	UUS
9nO
[;        UUS9n[        R<                  U l        SU l        U =R>                  S-  sl        U R@                  b$  U R>                  U R@                  :  a
  [C        5       eGOn[!        S[#        U R                  5      [&        -
  5      U l        GOAU R                  [        R<                  :X  aR  U RE                  U R                  SS9u  p:nU R                  S U
2	 [G        X;S9nU(       a  [        RH                  U l        OU R                  [        RH                  :X  aD  U RE                  U R                  SS9u  p:nU R                  S U
2	 U(       d  U(       d	  [G        X;S9nOoU R                  [        R                  :X  aQ  U RJ                  (       a@  [M        [        U R                  5      S9nU R                  S S 2	 [        RN                  U l        U RJ                  (       a-  [Q        U[R        5      (       a  [-        SU R                   35      eU$ )N      --)r   r   r   content-dispositionz"Missing Content-Disposition headerr%   r*   )r*   r&   r%   )r&   r%   T)start)r   r/   Fz&Invalid form-data cannot parse beyond )*	NEED_DATArI   r7   r9   rP   searchrF   rR   group
startswithr=   r:   r   rj   endr   maxr\   rJ   SEARCH_EXTRA_LENGTHBLANK_LINE_RE_parse_headersr[   r
   tcastr$   getr(   r"   r<   rS   rC   r	   _parse_datar,   r;   rG   r1   r>   
isinstancer4   )rT   eventmatchr   r&   headers_enddispositionextrar%   r*   	del_indexr/   s               r   
next_eventMultipartDecoder.next_event   sd    ::'$$++DKK9N9NOE ;;q>,,U33!&DJ!&DJT[[5;;=9:KK%))+. d+()%
 ),s4;;'#dmm*<<?RR)% ZZ5::%!((d6K6KLE --dkk/EKKM.JK  %{{}uyy{:q@KK-(7$%IJJ%912&" vvc599V#45 99Z0' !) '!E " '!E #--
()%##q(#>>-$2E2E2V/11
 ),As4;;/?BU/U(V%ZZ5+++)-)9)9$++T)9)R&DYJYJ'd8E"ZZ
ZZ5::%)-)9)9$++U)9)S&DYJYJ'9$<ZZ5>>)dmm%"45EADJ==Zx88Edjj\RSSr   c                H   / n[         R                  SU5      nUR                  5        Hl  nUR                  5       nUS:w  d  M  UR	                  5       R                  S5      u  pEnUR                  UR                  5       UR                  5       45        Mn     [        U5      $ )N    r   :)HEADER_CONTINUATION_REsub
splitlinesstripdecode	partitionappendr   )rT   r   r&   liner%   _values          r   rs   MultipartDecoder._parse_headers   s    )+%))$5OO%D::<Ds{!%!8!8!=

ekkm<= & wr   c               
   U(       aP  [         R                  U5      n[        R                  " [        R                  [
           U5      R                  5       nOSnSU R                  -   nU R                  R                  U5      S:X  aD  U R                  XS  5      U-   =pg[        U5      U-
  [        SU-   5      :  a  [        U5      =pgSnOU R                  R                  U5      nUbq  UR                  S5      R                  S5      (       a  [         R"                  U l        O[         R&                  U l        UR)                  5       nUR                  5       nOU R                  XS  5      U-   =pgUS L n[        XU 5      Xx4$ )Nr   rh   rX   Trg   )LINE_BREAK_RErz   rt   ru   Matchr   ro   rJ   rF   findr`   r\   rQ   rl   rm   rn   r7   r=   rI   r:   rj   )	rT   r   rj   rz   
data_startrJ   data_endr~   r/   s	            r   rw   MultipartDecoder._parse_data   sI   !''-E6::<JJ4==(;;H%+
 $(#4#4T+5F#G*#TTH
 D	H$EH,<(=='*4y0I$$++D1E ;;q>,,U33!&DJ!&DJ ;;=!IIK	'+'8'8k9J'Kj'XXITX./EEr   )
rS   rR   rJ   rQ   rF   rG   rH   rC   rP   rI   N)rJ   r   rH   
int | NonerC   r   returnNone)r   r   r   int)r   zbytes | Noner   r   )r   r   )r   r   r   r   )r   r   rj   r.   r   ztuple[bytes, int, bool])r   r   r   r   __doc__rU   r`   rd   r   rs   rw   r   r   r   r   rA   rA   M   s^     ,0& 
 !%& &  )& 
 &  
& P
%%Tl $Fr   rA   c                  (    \ rS rSrSS jrSS jrSrg)MultipartEncoderi  c                :    Xl         [        R                  U l        g r   )rJ   r7   r9   rI   )rT   rJ   s     r   rU   MultipartEncoder.__init__   s     ^^
r   c                X   [        U[        5      (       a?  U R                  [        R                  :X  a!  [        R
                  U l        UR                  $ [        U[        [        45      (       Ga  U R                  [        R                  [        R
                  [        R                  1;   a  SU R                  -   S-   nUSUR                  R                  5       -  -  n[        U[        5      (       a   USUR                  R                  5       -  -  nUS-  n[        R                  " [        U5      R                    H3  u  p4UR#                  5       S:w  d  M  X# SU S3R                  5       -  nM5     [        R$                  U l        U$ [        U[&        5      (       ag  U R                  [        R$                  :X  aI  [        R                  U l        [)        UR                  5      S:  a  SUR                  -   $ UR                  $ [        U[&        5      (       a*  U R                  [        R                  :X  a  UR                  $ [        U[*        5      (       a4  [        R,                  U l        SU R                  -   S	-   UR                  -   $ [/        S
U SU R                   35      e)Ns   
--s   
s)   Content-Disposition: form-data; name="%s"s   ; filename="%s"ri   z: z
r   s   --
zCannot generate z in state: )rx   r   rI   r7   r9   r:   r   r"   r(   r;   rJ   r%   encoder*   rt   ru   r&   lowerr<   r,   r\   r1   r>   r[   )rT   ry   r   r%   r   s        r   
send_eventMultipartEncoder.send_event$  s   eX&&4::+GDJ::t}--$**NNJJJJA
 3

 t}},w6D@5::CTCTCVVVD%&&*U^^-B-B-DDDGOD vveU3;;::<#88fBugT299;;D  < ))DJKt$$u7G7G)GDJ5::"++zz!t$$uzz)A::x((DJt}},y85::EE/wk$**NOOr   )rJ   rI   N)rJ   r   r   r   )ry   r   r   r   )r   r   r   r   rU   r   r   r   r   r   r   r     s    $Pr   r   )"
__future__r   rK   typingrt   dataclassesr   enumr   r   datastructuresr   
exceptionsr	   httpr
   r   r   r"   r(   r,   r1   r4   rk   r7   rM   rL   rO   rr   r   r   rq   rA   r   r   r   r   <module>r      sZ   " 	  !   $ . '	 	 $u   $E  
 $5   $5  
 $u  	u 	 J	D  


4bllC

:r||4 J$;R\\J   OF OFd$P $Pr   