
    <gO                          d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl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y)    N)Enum)BytesIOKaitaiStreamKaitaiStruct)__version__)parse_version   )Exifz0.7zPIncompatible Kaitai Struct Python API: 0.7 or later is required, but you have %sc                       e Zd Z G d de      ZddZ G d de      Z G d de      Z G d	 d
e      Z	 G d de      Z
 G d de      Z G d de      Zy)Jpegc                        e Zd ZdZdZdZdZdZy)Jpeg.ComponentIdr	               N)__name__
__module____qualname__ycbcriq     o/var/www/html/myenv/lib/python3.12/site-packages/seleniumwire/thirdparty/mitmproxy/contrib/kaitaistruct/jpeg.pyComponentIdr      s    r   r   Nc                 D   || _         || _        |r|n| | _        g | _        | j                   j	                         sf| j                  j                  | j                  j                  | j                   | | j                               | j                   j	                         sey y N)_io_parent_rootsegmentsis_eofappendSegmentselfr!   r"   r#   s       r   __init__zJpeg.__init__   sm    #U
((//#MM  !3!3DHHdDJJ!OP ((//#r   c                   *    e Zd Z G d de      ZddZy)Jpeg.Segmentc                       e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#y")#Jpeg.Segment.MarkerEnumr	                                                                                                   N)$r   r   r   temsof0sof1sof2sof3dhtsof5sof6sof7soieoisosdqtdnldridhpapp0app1app2app3app4app5app6app7app8app9app10app11app12app13app14app15comr   r   r   
MarkerEnumr.   %   s    CDDDDCDDDCCCCCCCDDDDDDDDDDEEEEEECr   rp   Nc                 h	   || _         || _        |r|n| | _        | j                   j                  t	        j
                  dd            | _        | j                  j                  j                  | j                   j                               | _
        | j                  | j                  j                  j                  j                  k7  rV| j                  | j                  j                  j                  j                  k7  r| j                   j                         | _        | j                  | j                  j                  j                  j                  k7  r| j                  | j                  j                  j                  j                  k7  r| j                  }|| j                  j                  j                  j                  k(  ry| j                   j!                  | j                  dz
        | _        t%        t'        | j"                              }| j                  j)                  || | j                        | _        n|| j                  j                  j                  j,                  k(  ry| j                   j!                  | j                  dz
        | _        t%        t'        | j"                              }| j                  j/                  || | j                        | _        nw|| j                  j                  j                  j0                  k(  rx| j                   j!                  | j                  dz
        | _        t%        t'        | j"                              }| j                  j3                  || | j                        | _        n|| j                  j                  j                  j4                  k(  rx| j                   j!                  | j                  dz
        | _        t%        t'        | j"                              }| j                  j7                  || | j                        | _        n-| j                   j!                  | j                  dz
        | _        | j                  | j                  j                  j                  j                  k(  r | j                   j9                         | _        y y )N1br   )r!   r"   r#   ensure_fixed_contentsstructpackmagicr'   rp   read_u1markerrX   rY   	read_u2belengthrZ   
read_bytes	_raw_datar   r   
SegmentSosdatar`   SegmentApp1rP   SegmentSof0r_   SegmentApp0read_bytes_full
image_data)r)   r!   r"   r#   _onios         r   r*   zJpeg.Segment.__init__G   s   DH"DL"'TDJ77D"8MNDJ**,,778H8H8JKDK++!3!3!>!>!B!BBX\XbXbXjXjXuXuXyXyIy"hh002++!3!3!>!>!B!BBX\XbXbXjXjXuXuXyXyIykk$**,,77;;;%)XX%8%8$++/%KDN%gdnn&=>B $

 5 5b$

 KDIDJJ..99>>>%)XX%8%8$++/%KDN%gdnn&=>B $

 6 6r4 LDIDJJ..99>>>%)XX%8%8$++/%KDN%gdnn&=>B $

 6 6r4 LDIDJJ..99>>>%)XX%8%8$++/%KDN%gdnn&=>B $

 6 6r4 LDI $ 3 3T[[1_ FDI{{djj00;;???"&((":":"< @r   NN)r   r   r   r   rp   r*   r   r   r   r'   r,   #   s    !	 !	D	=r   r'   c                   *    e Zd ZddZ G d de      Zy)Jpeg.SegmentSosNc                    || _         || _        |r|n| | _        | j                   j                         | _        d g| j                  z  | _        t        | j                        D ]J  }| j                  j                  j                  | j                   | | j                        | j
                  |<   L | j                   j                         | _	        | j                   j                         | _
        | j                   j                         | _        y r    )r!   r"   r#   rx   num_components
componentsranger~   	Componentstart_spectral_selectionend_spectralappr_bit_posr)   r!   r"   r#   r   s        r   r*   zJpeg.SegmentSos.__init__k   s    DH"DL"'TDJ"&(("2"2"4D#f(;(;<DO4../ a%)ZZ%:%:%D%DTXXtUYU_U_%`"a -1HH,<,<,>D) $ 0 0 2D $ 0 0 2Dr   c                       e Zd ZddZy)Jpeg.SegmentSos.ComponentNc                     || _         || _        |r|n| | _        | j                  j                  | j                   j	                               | _        | j                   j	                         | _        y r    )r!   r"   r#   r   rx   idhuffman_tabler(   s       r   r*   z"Jpeg.SegmentSos.Component.__init__y   sS    &&+U
**001A1A1CD%)XX%5%5%7"r   r   r   r   r   r*   r   r   r   r   r   x   s    8r   r   r   r   r   r   r*   r   r   r   r   r   r~   r   j   s    	3	8 	8r   r~   c                       e Zd ZddZy)Jpeg.SegmentApp1Nc                 *   || _         || _        |r|n| | _        | j                   j                  dddd      j	                  d      | _        | j
                  }|dk(  r7| j                  j                  | j                   | | j                        | _        y y )Nr   FTASCIIr
   )r!   r"   r#   read_bytes_termdecoderw   
ExifInJpegbody)r)   r!   r"   r#   r   s        r   r*   zJpeg.SegmentApp1.__init__   sz    DH"DL"'TDJ((221eT4HPPQYZDJ**Cg~ JJ11$((D$**M	 r   r   r   r   r   r   r   r      s    	Nr   r   c                   *    e Zd ZddZ G d de      Zy)Jpeg.SegmentSof0Nc                    || _         || _        |r|n| | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        d g| j                  z  | _	        t        | j                        D ]J  }| j                  j                  j                  | j                   | | j                        | j                  |<   L y r    )r!   r"   r#   rx   bits_per_samplerz   image_heightimage_widthr   r   r   r   r   r   s        r   r*   zJpeg.SegmentSof0.__init__   s    DH"DL"'TDJ#'88#3#3#5D  $ 2 2 4D#xx113D"&(("2"2"4D#f(;(;<DO4../ b%)ZZ%;%;%E%EdhhPTVZV`V`%a"br   c                   4    e Zd ZddZed        Zed        Zy)Jpeg.SegmentSof0.ComponentNc                 "   || _         || _        |r|n| | _        | j                  j                  | j                   j	                               | _        | j                   j	                         | _        | j                   j	                         | _        y r    )r!   r"   r#   r   rx   r   sampling_factorsquantization_table_idr(   s       r   r*   z#Jpeg.SegmentSof0.Component.__init__   sh    &&+U
**001A1A1CD(,(8(8(:%-1XX-=-=-?*r   c                     t        | d      rt        | d      r| j                  S d S | j                  dz  dz	  | _        t        | d      r| j                  S d S )N_m_sampling_x   r   )hasattrr   r   r)   s    r   
sampling_xz%Jpeg.SegmentSof0.Component.sampling_x   sZ    41181O4--YUYY'+'<'<s'Bq&H"-4T?-Kt))UQUUr   c                     t        | d      rt        | d      r| j                  S d S | j                  dz  | _        t        | d      r| j                  S d S )N_m_sampling_y   )r   r   r   r   s    r   
sampling_yz%Jpeg.SegmentSof0.Component.sampling_y   sU    41181O4--YUYY&*&;&;b&@"-4T?-Kt))UQUUr   r   )r   r   r   r*   propertyr   r   r   r   r   r   r      s4    @ V V V Vr   r   r   r   r   r   r   r   r      s    
	b	V 	Vr   r   c                       e Zd ZddZy)Jpeg.ExifInJpegNc                 8   || _         || _        |r|n| | _        | j                   j                  t	        j
                  dd            | _        | j                   j                         | _        t        t        | j                              }t        |      | _        y )Nrr   r   )r!   r"   r#   rt   ru   rv   
extra_zeror   r}   r   r   r
   r   )r)   r!   r"   r#   r   s        r   r*   zJpeg.ExifInJpeg.__init__   sn    DH"DL"'TDJ"hh<<V[[q=QRDO!XX557DNgdnn56BRDIr   r   r   r   r   r   r   r      s    	!r   r   c                   *    e Zd Z G d de      ZddZy)Jpeg.SegmentApp0c                       e Zd ZdZdZdZy)Jpeg.SegmentApp0.DensityUnitr   r	   r   N)r   r   r   no_unitspixels_per_inchpixels_per_cmr   r   r   DensityUnitr      s    HOMr   r   Nc                     || _         || _        |r|n| | _        | j                   j                  d      j	                  d      | _        | j                   j                         | _        | j                   j                         | _        | j                  j                  j                  | j                   j                               | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                         | _        | j                   j                  | j                  | j                   z  dz        | _        y )Nr   r   r   )r!   r"   r#   r|   r   rw   rx   version_majorversion_minorr   r   density_unitsrz   	density_x	density_ythumbnail_xthumbnail_y	thumbnailr(   s       r   r*   zJpeg.SegmentApp0.__init__   s   DH"DL"'TDJ((--a088BDJ!%!1!1!3D!%!1!1!3D!%!7!7!C!CDHHDTDTDV!WD!XX//1DN!XX//1DN#xx//1D#xx//1D!XX0043C3CdFVFV3VZ[2[]DNr   r   )r   r   r   r   r   r*   r   r   r   r   r      s    	$ 		^r   r   r   )r   r   r   r   r   r*   r   r'   r~   r   r   r   r   r   r   r   r   r      sf    d QC=, C=N8\ 80Nl N%Vl %VR!\ !^l ^r   r   )arrayru   zlibenumr   kaitaistructr   r   r   r   
ks_versionpkg_resourcesr   exifr
   	Exceptionr   r   r   r   <module>r      sV        < < 2 ' }U33
fjtu
vvA^< A^r   