
    (phH                    :   S SK Jr  S SKrS SKJr  SSKJrJrJr  SSK	J
r  SSK	Jr  SSK	Jr  SS	K	Jr  SS
K	Jr  SSSSSSS.rS&S jrS&S jr " S S\R                  5      r " S S\R.                  5      r " S S\5      rSSSSSS.rS'S  jr S(         S)S! jjr\R:                  " \R<                  \\5        \R>                  " \R<                  \5        \R@                  " \R<                  S"5        \RB                  " \R<                  S#5        \RD                  " S$\5        \R:                  " \R<                  \\5        \R>                  " \R<                  \5        \R@                  " \R<                  S%5        \RB                  " \R<                  S#5        g)*    )annotationsN)IO   )Image	ImageFileImagePalette)i16le)i32leo8)o16le)o32le)PzP;1)r   zP;4)r   r   )RGBBGR;15)r   BGR)r   BGRX)r                   c                    U S S S:H  $ )N      BM prefixs    E/var/www/html/venv/lib/python3.13/site-packages/PIL/BmpImagePlugin.py_acceptr    4   s    "1:    c                    [        U 5      S;   $ )N)   (   4   8   @   l   |   )i32r   s    r   _dib_acceptr+   8   s    v;888r!   c                      \ rS rSrSrSrSrSSSSS	S
S.r\R                  5        H  u  r	r
\
\" 5       \	'   M     SS jrSS jrSrg)BmpImageFile?   z0Image plugin for the Windows Bitmap format (BMP)Windows BitmapBMPr   r   r      r      )RAWRLE8RLE4	BITFIELDSJPEGPNGc                   U R                   R                  U R                   R                  pCU(       a  U" U5        [        U" S5      5      SS.n[        R
                  " U R                   US   S-
  5      nUS   S:X  aR  [        US5      US'   [        US5      US	'   [        US5      US
'   [        US5      US'   U R                  US'   SUS'   GOUS   S;   Ga  US   S:H  US'   US   (       a  SOSUS'   [        US5      US'   US   (       d  [        US5      OS[        US5      -
  US	'   [        US5      US
'   [        US5      US'   [        US5      US'   [        US5      US'   [        US5      [        US5      4US'   [        US5      US'   SUS'   [        S  US    5       5      U R                  S!'   US   U R                  :X  a  / S"Qn[        U5      S#:  aO  [        U5      S$:  a  UR                  S%5        OSUS%'   [        U5       H  u  p[        US&US-  -   5      XY'   M     O!SUS%'   U H  n	[        U" S5      5      XY'   M     US'   US(   US)   4US*'   US'   US(   US)   US%   4US+'   OS,US    S-3n
[        U
5      eUS   US	   4U l        UR!                  SS5      (       a  US   OSUS   -  US'   US.US   -   :X  a  US   S::  a  USUS   -  -  n["        R!                  US   S/5      u  U l        nU R&                  c  S1US    S-3n
[        U
5      eS2nUS   U R                  :X  a  / S3QS4/S5S6/S7.nS8S9S:S;S<S=S>S=S?S@SASB.nUS   U;   an  US   SC:X  a4  US+   XS      ;   a&  XS   US+   4   nSDU;   a  S<OU R&                  U l        OUS   SE;   a  US*   XS      ;   a  XS   US*   4   nO|SFn
[        U
5      eSFn
[        U
5      eUS   U R                  :X  a  US   SC:X  a  USG:X  a	  SHu  ol        O6US   U R(                  U R*                  4;   a  SInOSJUS    S-3n
[        U
5      eU R&                  SK:X  a  SUS   s=:  a  SL::  d  O  SMUS    S-3n
[        U
5      eUS   nU" XS   -  5      nSNnUS   S:X  a  SOO[-        [/        US   5      5      n[        U5       H*  u  nnUUU-  UU-  S-    nU[1        U5      S-  :w  d  M(  SPnM,     U(       a  US   S:X  a  SQOSRU l        U R&                  nO+SKU l        [2        R4                  " US:X  a  S8OS?U5      U l        US   U R                  S'   U/nUSI:X  a"  UR                  US   U R*                  :H  5        O#UR                  US   US   -  SS-   S-	  ST-  5        UR                  US   5        USSUS   US	   4U=(       d    U R                   R9                  5       [        U5      4/U l        g0)Uz Read relevant info about the BMPr   )header_size	directionr;   r#   r   widthr   heightplanes   bitscompressionr1   palette_padding)r$   r%   r&   r'   r(   r)         y_flipr   r<   l        r   
   r   	data_size   r   pixels_per_meter   colorsc              3  *   #    U  H	  oS -  v   M     g7f)o_C@Nr   .0xs     r   	<genexpr>'BmpImageFile._bitmap.<locals>.<genexpr>}   s     $X:WQ[:Ws   dpi)r_maskg_maskb_mask0   r%   a_mask$   rU   rV   rW   rgb_mask	rgba_maskzUnsupported BMP header type ()   )NNNzUnsupported BMP pixel depth (raw)      rE   r         ~ ra   rb   r   rd   rb   rE   r   rd   ra   rb   rE   rE   rb   ra   rd   ra   rb   rE   rd   rd   rb   rE   ra   r   r   r   r   ra   rb   rE   i   i     i |  i  rm   )r   r   r   r   XBGRBGXRABGRRGBABGRABGARr   zBGR;16r   ))r   r`   )r   rc   )r   re   )r   rf   )r   rg   )r   rh   )r   ri   )r   rj   )r   rk   )r   rl   )r   rn   r   A)r   r   z Unsupported BMP bitfields layout   )rs   rr   bmp_rlezUnsupported BMP compression (r   i   zUnsupported BMP Palette size (Tr   rE   F1Lrm   )fpreadseekr*   r   
_safe_readi16r3   tupleinfor6   lenappend	enumerateOSError_sizegetBIT2MODE_modemoder4   r5   listranger   r   r_   palettetelltile)selfheaderoffsetr}   r~   	file_infoheader_datamasksidxmaskmsgraw_modedecoder_name	SUPPORTED
MASK_MODESpaddingr   	grayscaleindicesindvalrgbargss                          r   _bitmapBmpImageFile._bitmapK   s   WW\\477<<dL$'QLrB	  **477Im4Lq4PQ
 ]#r)!$[!!4Ig"%k1"5Ih"%k1"5Ih #K 3If'+xxIm$+,I'( }%)CC"-a.D"8Ih*3H*=Q2Ik"!$[!!4Ig !* K#Sa00 h
 #&k1"5Ih #K 4If'*;';Im$%(b%9Ik"K$K$-I() #&k2"6Ih+,I'($$X)DV:W$XXDIIe'4>>96{#r);'2-X..1	(+%.u%5	*-k2a<*H	 &6 +.Ih' %*-d1g,	 !& h'h'h')	*% h'h'h'h'	*	+& 2)M2J1K1MC#, w'8)<<

 }}Xq)) hy(( 	(
 R)M222y7HA7Ma)H---F  (||If,=|L
H991)F2C1DAFC#, ]#t~~5	 ..*,ABI 6<;A7=<B<B<B<B,205-5-5J  I-f%+!+.)f<M2NN)V+<i>T*UVH+.(?		DJf%1!*-V;L1MM)V+<i
>S*TUH<C!#,&8cl"}%1 B&6R<'5$*}%$))TYY)??$L1)M2J1K1MC#, 99	(+4u46y7J6K1Mcl"#$56w8)<<= 	 !*a/ eIh$789  !*' 2HC!#-#-!2CDCbgk)$)	 !3 (1((;q(@cDJ#yyH!$DJ#/#3#3")Q,E7$DL
 $-]#;		- z9$KK	-0DII=>KK)G,y/@@2E!KPRSTIk*+ Ay)9X+>?($'',,.d	
	r!   c                    U R                   R                  S5      n[        U5      (       d  Sn[        U5      e[	        US5      nU R                  US9  g)z-Open file, check magic number and read headerr^   zNot a BMP filerG   )r   N)r|   r}   r    SyntaxErrorr*   r   )r   	head_datar   r   s       r   _openBmpImageFile._open  sK     GGLL$	y!!"Cc""Y#F#r!   )r   r   r   r   Nr   r   returnNone)__name__
__module____qualname____firstlineno____doc__format_descriptionformatCOMPRESSIONSitemskvvarsr   r   __static_attributes__r   r!   r   r-   r-   ?   sU    : *F aAVWXL""$1q	 %R
h$r!   r-   c                  "    \ rS rSrSrSS jrSrg)BmpRleDecoderi-  Tc                   U R                   c   eU R                  S   n[        5       nSnU R                  R                  U R                  R
                  -  n[        U5      U:  Ga  U R                   R                  S5      nU R                   R                  S5      nU(       a  U(       d  GOUS   nU(       a  XH-   U R                  R                  :  a#  [        SU R                  R                  U-
  5      nU(       aH  [        US   S-	  5      n	[        US   S-  5      n
[        U5       H  nUS-  S:X  a  X9-  nM  X:-  nM     OX7U-  -  nXH-  nGOUS   S:X  aW  [        U5      U R                  R                  -  S:w  a-  US-  n[        U5      U R                  R                  -  S:w  a  M-  SnGO}US   S:X  a  GOUS   S:X  a  U R                   R                  S5      n[        U5      S:  a  GOOU R                   R                  S5      u  pUSXU R                  R                  -  -   -  -  n[        U5      U R                  R                  -  nOU(       aO  US   S-  nU R                   R                  U5      nU H%  nU[        US-	  5      -  nU[        US-  5      -  nM'     O$US   nU R                   R                  U5      nX<-  n[        U5      U:  a  OdXGS   -  nU R                   R                  5       S-  S:w  a*  U R                   R                  S[        R                  5        [        U5      U:  a  GM  U R                  S:X  a  SOSnU R!                  [#        U5      USU R                  S	   45        g
)Nr   r   r      r       rz   r   r:   )r:   r   )fdr   	bytearraystatexsizeysizer   r}   maxr   r   r   r~   osSEEK_CURr   
set_as_rawbytes)r   bufferrle4datarQ   dest_lengthpixelsbyte
num_pixelsfirst_pixelsecond_pixelindex
bytes_readrightup
byte_count	byte_readrawmodes                     r   decodeBmpRleDecoder.decode0  s   ww"""yy|{jj&&)9)99$i+%WW\\!_F77<<?DJ>DJJ$4$44!$Q

(8(81(<!=J"$T!W\"2K#%d1gn#5L!&z!2 19> /D 0D	 "3 :--D7a<d)djj&6&66!; d)djj&6&66!;A!W\!W\!%aJ:* $QIEGuDJJ4D4D/D'DEEDD	DJJ$4$44A %)!W\
%)WW\\*%=
)3I ByA~$66D By4'7$88D *4 &*!W
%)WW\\*%=
*:3aLA ww||~)Q.Q4u $i+%v c)#sdgq$))B-%@Ar!   r   N)r   r   r   ztuple[int, int])r   r   r   r   	_pulls_fdr   r   r   r!   r   r   r   -  s    ICr!   r   c                  &    \ rS rSrSrSrSS jrSrg)DibImageFileiy  DIBr/   c                $    U R                  5         g )N)r   )r   s    r   r   DibImageFile._open}  s    r!   r   Nr   )r   r   r   r   r   r   r   r   r   r!   r   r   r   y  s    F)r!   r   )ry   r   r   )rz   r      )r   r   r   )r   r   r   )rs   r   r   )ry   rz   r   r   rr   c                    [        XUS5        g )NF)_save)imr|   filenames      r   	_dib_saver     s    	"(E"r!   c           
     V    [         U R                     u  pEnU R                  n	U	R                  SS5      n
[        S U
 5       5      nU R                  S   U-  S-   S-  S	-   S
-  nSnXR                  S   -  nU R                  S:X  a  SR                  S S 5       5      nOoU R                  S:X  a"  SR                  S [        S5       5       5      nO=U R                  S:X  a+  U R                  R                  SS5      n[        U5      S-  nOS nU(       aX  SU-   US-  -   nUU-   nUS:  a  Sn[        U5      eUR                  S[        U5      -   [        S5      -   [        U5      -   5        UR                  [        U5      [        U R                  S   5      -   [        U R                  S   5      -   [!        S5      -   [!        U5      -   [        S5      -   [        U5      -   [        US   5      -   [        US   5      -   [        U5      -   [        U5      -   5        UR                  SUS-
  -  5        U(       a  UR                  U5        ["        R$                  " XSSU R                  -   SXLS44/5        g ! [         a!  nSU R                   S3n[        U5      UeS nAff = f) Nzcannot write mode z as BMPrT   )`   r   c              3  D   #    U  H  n[        US -  S-   5      v   M     g7f)rN   g      ?N)intrO   s     r   rR   _save.<locals>.<genexpr>  s!     41AK#%&&s    r   rD   r   r1   r{   r$   r   ry   r!   c              3  >   #    U  H  n[        U5      S -  v   M     g7fr   Nr   rP   is     r   rR   r     s     7h2a519h   rx   rz   c              3  >   #    U  H  n[        U5      S -  v   M     g7fr   r   r   s     r   rR   r     s     9j2a519jr   r   r   r   r   r   r^   l    z)File size is too large for the BMP formatr   r   r_   r   r:   )SAVEr   KeyErrorr   encoderinfor   r   sizejoinr   r   
getpaletter   
ValueErrorwriteo32o16r   r   )r   r|   r   bitmap_headerr   rA   rL   er   r   rT   ppmstrider   imager   r   	file_sizes                     r   r   r     s   " $RWWv
 >>D
((5(
#C 44
4CwwqzD 1$*Q.26FFWWQZE	ww#~((7h77	C((9eCj99	C%%""5&1W" fvz)UN	y =CS/!
)n!f &k	
 HHF
bggaj/	
bggaj/	 a&	 d)		
 a&	 e*	 c!f+	 c!f+	 f+		 f+
	 HHUfrk"#
OOBeVbgg%5q7B:OPQRw  ""277)73cl!"s   I= =
J(J##J(z.bmpz	image/bmprw   z.dib)r   r   r   bool)r   Image.Imager|   	IO[bytes]r   str | bytesr   r   )T)
r   r  r|   r  r   r  r   r  r   r   )#
__future__r   r   typingr    r   r   r   _binaryr	   r   r
   r*   r   r   r   r   r   r   r    r+   r-   	PyDecoderr   r   r   r   r   register_openr   register_saveregister_extensionregister_mimeregister_decoderr   r!   r   <module>r     s  2 # 	  , , ! !  ! ! 9k$9&& k$\FI'' FX<  
		#
 RV@S@S"@S.9@SJN@S	@SP   L''w ?   L'' /   ,,f 5   L'' 5   y- 0   L''{ C   L'' 3   ,,f 5   L'' 5r!   