
    Eg                         d dl Z d dlmZmZmZ d dlmZ d dlmZ  ee           ed          k     r e	dez             G d de          Z
dS )	    N)BytesIOKaitaiStreamKaitaiStruct)__version__)parse_versionz0.7zPIncompatible Kaitai Struct Python API: 0.7 or later is required, but you have %sc                   <    e Zd ZdZddZd Z G d de          ZdS )IcoaD  Microsoft Windows uses specific file format to store applications
    icons - ICO. This is a container that contains one or more image
    files (effectively, DIB parts of BMP files or full PNG files are
    contained inside).
    
    .. seealso::
       Source - https://msdn.microsoft.com/en-us/library/ms997538.aspx
    Nc                 `    || _         || _        |r|n| | _        |                                  d S N_io_parent_root_readselfr   r   r   s       o/var/www/sysmax/venv/lib/python3.11/site-packages/seleniumwire/thirdparty/mitmproxy/contrib/kaitaistruct/ico.py__init__zIco.__init__   s1    #-UU


    c           	      V   | j                             t          j        ddddd                    | _        | j                                         | _        d g| j        z  | _        t          | j                  D ]0}| j	        
                    | j         | | j	                  | j        |<   1d S )N4br      )r   ensure_fixed_contentsstructpackmagic	read_u2le
num_imagesimagesranger   IconDirEntry)r   is     r   r   z	Ico._read   s    X33FKaAq4Q4QRR
(,,..f0t'' 	Q 	QA!Z44TXtTZPPDKNN	Q 	Qr   c                   ^    e Zd ZddZd Zed             Zed             Zed             ZdS )Ico.IconDirEntryNc                 `    || _         || _        |r|n| | _        |                                  d S r   r   r   s       r   r   zIco.IconDirEntry.__init__$   s1    DH"DL"'1TDJJJLLLLLr   c                    | j                                         | _        | j                                         | _        | j                                         | _        | j                             t          j        dd                    | _        | j         	                                | _
        | j         	                                | _        | j                                         | _        | j                                         | _        d S )N1br   )r   read_u1widthheight
num_colorsr   r   r   reservedr   
num_planesbpp	read_u4lelen_imgofs_imgr   s    r   r   zIco.IconDirEntry._read*   s    ))++DJ(**,,DK"h..00DO H::6;tQ;O;OPPDM"h0022DOx))++DH8--//DL8--//DLLLr   c                 r   t          | d          rt          | d          r| j        ndS | j                                        }| j                            | j                   | j                            | j                  | _        | j                            |           t          | d          r| j        ndS )zRaw image data. Use `is_png` to determine whether this is an
            embedded PNG file (true) or a DIB bitmap (false) and call a
            relevant parser, if needed to parse image data further.
            _m_imgN)hasattrr4   r   posseekr1   
read_bytesr0   r   _poss     r   imgzIco.IconDirEntry.img4   s     tX&& H&-dH&=&=Gt{{4G8<<>>DHMM$,'''(--dl;;DKHMM$")$"9"9C4;;tCr   c                 h   t          | d          rt          | d          r| j        ndS | j                                        }| j                            | j                   | j                            d          | _        | j                            |           t          | d          r| j        ndS )zhPre-reads first 8 bytes of the image to determine if it's an
            embedded PNG file.
            _m_png_headerN   )r5   r=   r   r6   r7   r1   r8   r9   s     r   
png_headerzIco.IconDirEntry.png_headerC   s    
 t_-- V-4T?-K-KUt))QUU8<<>>DHMM$,'''!%!4!4Q!7!7DHMM$)0)G)GQ4%%TQr   c                     t          | d          rt          | d          r| j        ndS | j        t          j        ddddddd	d
d		  	        k    | _        t          | d          r| j        ndS )z$True if this image is in PNG format.	_m_is_pngN8biP   N   G      
      )r5   rA   r?   r   r   r2   s    r   is_pngzIco.IconDirEntry.is_pngQ   sz     t[)) N)0{)C)CMt~~M!_D$BPRTVXZ\^`b0c0ccDN%,T;%?%?I4>>TIr   NN)	__name__
__module____qualname__r   r   propertyr;   r?   rI    r   r   r!   r$   #   s        	 	 	 		0 	0 	0 
	D 	D 
	D 
	R 	R 
	R 
	J 	J 
	J 	J 	Jr   r!   rJ   )rK   rL   rM   __doc__r   r   r   r!   rO   r   r   r	   r	      sx            Q Q Q5J 5J 5J 5J 5J| 5J 5J 5J 5J 5Jr   r	   )r   kaitaistructr   r   r   r   
ks_versionpkg_resourcesr   	Exceptionr	   rO   r   r   <module>rU      s     < < < < < < < < < < 2 2 2 2 2 2 ' ' ' ' ' '=}}U3333
)fjtu
v
vvLJ LJ LJ LJ LJ, LJ LJ LJ LJ LJr   