
    zvg8|                    x   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ erddlmZ ddZ ddZ!ddZ"ddZ#ddZ$i ddde#fddde#fddd e#fd!d"d#e#fd$d%d&e fd'd(d)e#fd*d+d,e#fd-d.d/e#fd0d1d2d3d4e#fd5d6d7e#fd8d9d:e#fd;d<d=e fd>d?d@e#fdAdBdCe#fdDdEdFe#fdGdHi dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]e fd^d_d`e$fdadbdce fdddedfe fdgdhdie#fdjdkdle fdmdndoe!fdpdqdre!fi dsdtdue!fdvdwdxe!fdydzd{e!fd|d}d~e!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddddddddddddddddddde"fdZ%ddZ& G d dej                  Z'ddZ(ddZ)dddddddZ*dZ+d dddZ,ddÄZ-ddȄZ.ddɄZ/	 ddd̄Z0 ej1        e'j2        e0e&            ej3        e'j2        e.            ej4        e'j2        g d͢            ej5        e'j2        dΦ           dS )    )annotationsN)IOTYPE_CHECKINGAny   )Image	ImageFile)i16be)i32be)o8)o16be)	deprecate)presetsMpoImageFileselfJpegImageFilemarkerintreturnNonec                    t          | j                            d                    dz
  }t          j        | j        |           d S )N   )i16fpreadr	   
_safe_read)r   r   ns      P/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/PIL/JpegImagePlugin.pySkipr    >   s;    DGLLOOq A!$$$$$    c                   t          | j                            d                    dz
  }t          j        | j        |          }d|dz   }|| j        |<   | j                            ||f           |dk    r|d d         dk    rt          |d          x| j        d<   }t          |d	          | j        d
<   	 |d         }t          |d          t          |d          f}|dk    r|| j        d<   n'|dk    r!t          d |D                       | j        d<   || j        d<   || j        d<   d S # t          $ r Y d S w xY w|dk    rf|d d         dk    rXd| j        v r| j        dxx         |dd          z  cc<   d S || j        d<   | j                                        |z
  dz   | _        d S |dk    r4|d d         dk    r&|                    dd          d         | j        d<   d S |dk    r|d d         dk    r|| j        d<   d S |dk    r*|d d         dk    r| j                            |           d S |d k    r|d d!         d"k    rd!}| j                            d#i           }	|||dz            d$k    r	 |dz  }t          ||          }
|dz  }||         }|d|z   z  }||dz  z  }t#          ||          }|dz  }||||z            }|
d%k    rIt#          |d&          d'z  t          |d          t#          |d          d'z  t          |d          d(|	|
<   n||	|
<   ||z  }||dz  z  }n# t$          j        $ r Y d S w xY w|||dz            d$k    d S d S |d)k    rL|d d         d*k    r>t          |d          | j        d+<   	 |d,         }|| j        d-<   d S # t(          $ r Y d S w xY w|dk    rI|d d         d.k    r=|dd          | j        d/<   | j                                        |z
  dz   | j        d0<   d S d S d S )1Nr   APP        s   JFIF   jfif   jfif_version      
   r   dpic              3      K   | ]	}|d z  V  
dS )RQ@N ).0ds     r   	<genexpr>zAPP.<locals>.<genexpr>_   s&      (H(HaT(H(H(H(H(H(Hr!   	jfif_unitjfif_density     s   Exif  exif      http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix      ICC_PROFILE      s   Photoshop 3.0 	photoshops   8BIMi  r   i   )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r	   r   appapplistappendinfodivmodtuple	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srO   versionr5   r6   offsetrD   codename_lensizedatarL   s                  r   r#   r#   C   s   
 	DGLLOOq ATWa((A


CDHSMLa!!!AbqbEW,,&)!Qii/	&G$*7C$8$8	.!	5!Iq!99c!Rjj0L A~~#/	%  a#((H(H<(H(H(H#H#H	% %.DIk"(4DIn%%%  	 	 	DD	 
6		ae{22TYIf122& !DIf $ 2Q 6D	6		af(KKK777A..q1	%	6		aey00 !	*	6		af(888 	A	6		af(<<<I((b99	!#$//!1f~~!V9!h,&&1*$1f~~!&4-/06>>'*4||e';+.tQ<<'*4||e';+.tR==	' 'IdOO '+IdO$&1*$<   5 !#$//////: 
6		aex// AYY	'	;eO ,;DI'(((  	 	 	DD	 
6		aex//ABB%	$ !% 2Q 6	* 
	//s7   :(D0 0
D>=D><B5L2 2MM
N 
N,+N,c                    t          | j                            d                    dz
  }t          j        | j        |          }|| j        d<   || j        d<   | j                            d|f           d S )Nr   commentCOM)	r   r   r   r	   r   rR   rO   rP   rQ   )r   r   r   r_   s       r   rh   rh      sm     	DGLLOOq ATWa((ADIiDHUOL
#####r!   c                   t          | j                            d                    dz
  }t          j        | j        |          }t          |d          t          |d          f| _        |d         | _        | j        dk    rd| j         d}t          |          |d         | _        | j        dk    rd	| _	        n@| j        dk    rd
| _	        n-| j        dk    rd| _	        nd| j         d}t          |          |dv rdx| j
        d<   | j
        d<   | j        r|| j                                         | j        d         d         t          | j                  k    r'd | j        D             }d                    |          }nd }|| j
        d<   g | _        t          dt          |          d          D ]K}|||dz            }| j                            |d         |d         dz  |d         dz  |d         f           Ld S )Nr      r   r   r,   zcannot handle z-bit layersr'   LRGBr&   CMYKz-layer images)        progressiveprogression   c                "    g | ]}|d d         S )rC   Nr1   )r2   ps     r   
<listcomp>zSOF.<locals>.<listcomp>   s     444!qv444r!   r!   icc_profiler8      r$   )r   r   r   r	   r   _sizebitsSyntaxErrorlayers_moderR   rY   sortlenjoinrangelayerrQ   )	r   r   r   r_   msgprofilerx   its	            r   SOFr      s    	DGLLOOq ATWa((AQC1II%DJ!DIyA~~5ty555#A$DK{a

			

			

9t{999#111>??	- 49]#;| 	<?2#dl"3"33344t|444G((7++KKK#.	- 1c!ffa   ? ?a!a%iL
1Q41QqTBY!=>>>>? ?r!   c                @   t          | j                            d                    dz
  }t          j        | j        |          }t          |          r|d         }|dz  dk    rdnd}d|dz  z   }t          |          |k     rd}t          |          t          j        |dk    rdnd|d|                   t          j	        d	k    r|dk    r
                                 fd
t          D             | j        |dz  <   ||d          }t          |          d S d S )Nr   r   ry   r   @   zbad quantization table markerBHlittlec                     g | ]
}|         S r1   r1   )r2   r   re   s     r   rw   zDQT.<locals>.<listcomp>   s    $C$C$CT!W$C$C$Cr!   r$   )r   r   r   r	   r   r   r|   arraysys	byteorderbyteswapzigzag_indexquantization)	r   r   r   r_   v	precision	qt_lengthr   re   s	           @r   DQTr      s2    	DGLLOOq ATWa((A
a&& aDr'Q,,AAQ		B&	q66I1Cc"""{)q..33c1Qy[>JJ=H$$QMMOOO$C$C$C$Cl$C$C$C!b&!ijjM a&&     r!   i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrn   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTro   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)rp   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rq   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  )RST0z	Restart 0Ni  )RST1z	Restart 1Ni  )RST2z	Restart 2Ni  )RST3z	Restart 3Ni  )RST4z	Restart 4Ni  )RST5z	Restart 5Ni  )RST6z	Restart 6Ni  )RST7z	Restart 7Ni  )SOIzStart of imageNi  )EOIzEnd of imageN  SOSzStart of scani  r   zDefine quantization tablei  DNLzDefine number of linesi  DRIzDefine restart intervali  DHPzDefine hierarchical progressioni  EXPzExpand reference componentr%   APP0zApplication segment 0r7   APP1zApplication segment 1r>   APP2zApplication segment 2i  APP3zApplication segment 3i  APP4zApplication segment 4i  APP5zApplication segment 5i  APP6zApplication segment 6i  APP7zApplication segment 7i  APP8zApplication segment 8i  APP9zApplication segment 9i  APP10zApplication segment 10i  APP11zApplication segment 11i  APP12zApplication segment 12rB   APP13zApplication segment 13rI   APP14zApplication segment 14i  APP15zApplication segment 15i  )JPG0zExtension 0Ni  )JPG1zExtension 1Ni  )JPG2zExtension 2N)JPG3zExtension 3N)JPG4zExtension 4N)JPG5zExtension 5N)JPG6zExtension 6N)JPG7zExtension 7N)JPG8zExtension 8N)JPG9zExtension 9N)JPG10zExtension 10N)JPG11zExtension 11N)JPG12zExtension 12N)JPG13zExtension 13Nrh   Comment)i  i  i  i  i  i  i  i  i  i    i  prefixbytesboolc                    | d d         dk    S )Nrj   s   r1   )r   s    r   _acceptr   F  s    "1":((r!   c                  t     e Zd ZdZdZddZdd	Zd fdZd  fdZd!dZ	d"dZ
ddZd#dZddZd#dZ xZS )$r   JPEGzJPEG (ISO 10918)r   r   c                `   | j                             d          }t          |          sd}t          |          d}dx| _        | _        d| _        g | _        i | _        i | _	        i | _
        i | _        g | _        g | _        	 |d         }|dk    r-|| j                             d          z   }t          |          }n| j                             d          }W|t          v r|t          |         \  }}}| || |           |dk    r<| j        }| j        d	k    rd
}t#          j        dd| j        z   d|df          g| _        nV| j                             d          }n9|dv rd}n2|dk    r| j                             d          }nd}t          |          |                                  d S )Nrj   znot a JPEG file   r   T   r   r   rm   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   r|   r{   r}   rW   r   _huffman_dc_huffman_acr   rO   rP   rY   r   MARKERmoder	   _Tilerd   tile_read_dpi_from_exif)r   r_   r   r   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openS  s   GLLOOqzz 	##Cc""" #$#	DK 79
+-+-24%'02$&	'!ADyyQ'FF GLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*!0BAQS}UU!DI GLLOOk!!fGLLOO'!#&&&?	'B 	  """""r!   r   strr   c                n    |dv r#t          |d           t          | d|z             S t          |          )N)
huffman_ac
huffman_dcr@   _)r   getattrAttributeError)r   r   s     r   __getattr__zJpegImageFile.__getattr__  s@    ///dB4t,,,T"""r!   	list[Any]c                b    t                                                      | j        | j        gz   S N)super__getstate__r}   r   )r   	__class__s    r   r  zJpegImageFile.__getstate__  s'    ww##%%dj(AAAr!   statec                x    t                                          |           |dd          \  | _        | _        d S )Nr'   )r   __setstate__r}   r   )r   r  r  s     r   r  zJpegImageFile.__setstate__  s5    U###"')TZZZr!   
read_bytesr   r   c                    | j                             |          }|s%t          j        rt	          | d          s	d| _        dS |S )z
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        _endedTs   )r   r   r	   LOAD_TRUNCATED_IMAGEShasattrr  )r   r  r_   s      r   	load_readzJpegImageFile.load_read  sM     GLL$$ 	Y4 	WT8=T=T 	 DK;r!   r   
str | Nonerd   tuple[int, int] | None0tuple[str, tuple[int, int, float, float]] | Nonec                   t          | j                  dk    rd S | j        rd S | j        d         \  }}}}d}| j        }t	          |t
                    sJ |d         dk    r|dv r|| _        |df}|rt          | j        d         |d         z  | j        d         |d         z            }dD ]
}	||	k    r n|J |d         |d         |d         |d         z
  |	z   dz
  |	z  |d         z   |d         |d         z
  |	z   dz
  |	z  |d         z   f}| j        d         |	z   dz
  |	z  | j        d         |	z   dz
  |	z  f| _        |	}t          j
        ||||          g| _        |df| _        dd|d         |z  |d         |z  f}
| j        |
fS )	Nr   r   rl   )rk   YCbCrr   )r,   r&   r   r   r   rj   )r   r   decoderconfigrd   
isinstancerT   r~   minrz   r	   r   r   )r   r   rd   r3   eoascaleoriginal_sizer_   boxs              r   draftzJpegImageFile.draft  s    ty>>Q4  	4Yq\
1a	!U#####Q45==T^33DJbA 		!Q/1a1HIIE!  A::E ===!!1!q1$*QqT11!q1$*QqT1	A  9Q<!+a/A5	!q8H18LQR7RSDJE_Q1a001	#QZ!]1%-}Q/?%/GHy#~r!   c                   t          j                    \  }}t          j        |           t          j                            | j                  rt          j        dd|| j        g           n7	 t          j	        |           n# t          $ r Y nw xY wd}t          |          	 t          j        |          5 }|                                 |j        | _        d d d            n# 1 swxY w Y   	 t          j	        |           n:# t          $ r Y n.w xY w# 	 t          j	        |           w # t          $ r Y w w xY wxY w| j        j        | _        | j        j        | _        g | _        d S )Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   r~   rd   rz   r   )r   fr"  r   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s    "$$4
7>>$-(( 		"!7Jdm"LMMMM	$    %CS//!	D!! !S


&! ! ! ! ! ! ! ! ! ! ! ! ! ! !	$   	$    W\
W\
			sx   .B 
BB%D 9!C&D &C**D -C*.D 2D 
DDD>D.-D>.
D;8D>:D;;D>dict[int, Any] | Nonec                     t          |           S r   )_getexifr   s    r   r2  zJpegImageFile._getexif  s    ~~r!   c                   d| j         v s	d| j         vrd S 	 |                                 }|d         }|d         }	 t          |d                   |d         z  }n# t          $ r |}Y nw xY wt	          j        |          rd}t          |          |dk    r|d	z  }||f| j         d<   d S # t          j        t          t          t          t          t          f$ r d
| j         d<   Y d S w xY w)Nr.   r9   i(  i  r   r   zDPI is not a numberrj   r0   )H   r5  )rR   getexiffloat	TypeErrormathisnanr)  r\   r]   KeyErrorr|   ZeroDivisionError)r   r9   resolution_unitx_resolutionr.   r   s         r   r   z!JpegImageFile._read_dpi_from_exif  s   DIty!8!8F	&<<>>D"6lO<L#LO,,|A> # # #"#z# &+ oo%!##t"CxDIeL
 	& 	& 	&  &DIe	&s4   $B* A B* A)&B* (A))?B* *8C&%C&c                     t          |           S r   )_getmpr3  s    r   r@  zJpegImageFile._getmp  s    d||r!   )r   r   )r   r   r   r   )r   r   )r  r   r   r   )r  r   r   r   )r   r  rd   r  r   r  )r   r0  )__name__
__module____qualname__formatformat_descriptionr   r   r  r  r  r  r/  r2  r   r@  __classcell__)r  s   @r   r   r   O  s       F+6# 6# 6# 6#p# # # #B B B B B B, , , , , ,    & & & &P   >   & & & &:       r!   r0  c                d    d| j         vrd S |                                                                 S )Nr9   )rR   r6  _get_merged_dictr3  s    r   r2  r2    s.    TYt<<>>**,,,r!   c           	        	 | j         d         }n# t          $ r Y d S w xY wt          j        |          }|                    d          }|d d         dk    rdnd}ddlm} 	 |                    |          }|                    |j	                   |
                    |           t          |          }n$# t          $ r}d	}	t          |	          |d }~ww xY w	 |d
         }
n$# t          $ r}d}	t          |	          |d }~ww xY wg }	 |d         }t          d|
          D ]}t          j        | d||dz            }d}t          t#          ||                    }t%          |d         dz            t%          |d         dz            t%          |d         dz            |d         dz  dz	  |d         dz  dz	  |d         dz  d}|d         dk    rd|d<   nd}	t          |	          ddd d!d"d#d$d%}|                    |d&         d'          |d&<   ||d<   |                    |           ||d<   n$# t          $ r}d(}	t          |	          |d }~ww xY w|S ))NrM   r,   r&   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  r   LLLHHry   )	AttributeSize
DataOffsetEntryNo1EntryNo2rO  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyperZ  r   z!unsupported picture format in MPO	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   r[  Unknownz!malformed MP Index (bad MP Entry))rR   r;  ioBytesIOr   r   rL  ImageFileDirectory_v2seeknextr+  dictrU   r|   r   r\   unpack_fromzipr   getrQ   )r   re   file_contentshead
endiannessrL  rR   rM   r  r   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r@  r@    s   y   ttJt$$Ma  DRaR$777SJ!!!!!!&44T::49%%%		-   $ZZ & & &9#A%&&6
 & & &8#A%& I$&&za 	& 	&H".$$$lHrM M QF3v}5566G,01E1Q,R,R+/0D0P+Q+Q+/0D0P+Q+Q$[1W="D$+K$8G$D#K!+.; K ,-2217-..9!#&&&%<@8:<5 I %.MM+h2G$S$SK!#.GK W%%%%6

 & & &1#A%& IsV    
#AB7 7
CCCC% %
D/DDD/H< <
IIIrk   rl   r   r  )1rk   rl   RGBXrm   r  )@r   r   r'   r8   rC   r$   rT     r   r&   r+   rt   ry      r:   *   rj   r,   r@            )   +   	   rK      rU     (   ,   5   r-             '   -   4   6         !   &   .   3   7   <      "   %   /   2   8   ;   =   #   $   0   1   9   :   >   ?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r,  Image.Imagec                    t          | t                    r	| j        dv rdS | j        d         dd         | j        d         dd         z   | j        d         dd         z   }t                              |d          S )N)r   r&   r   r   rj   r   )r  r   r}   r   	samplingsrf  )r,  samplings     r   get_samplingr    sw     b-(( BI,?,?rx{1Q3"(1+ac"22RXa[15EEH==2&&&r!   r   	IO[bytes]r$  str | bytesc                   | j         dk    s| j        dk    rd}t          |          	 t          | j                 }n-# t
          $ r }d| j         d}t          |          |d }~ww xY w| j        }d |                    dd          D             }|                    dd	          }|                    d
d	          }	|                    d          }
|dk    rd	}d}	d}
n|t          v r;t          |         }d	}|                    d
d	          }	|                    d          }
nt          |t                    sd}t          |          |	t          v r!t          |	                             d
d	          }	t          |
t                    r)|
t          v r t          |
                             d          }
|	dk    rd}	nL|	dk    rd}	nC|	dk    rd}	n:|	dk    rd}	n1|	dk    r+| j        dk    rd}t          |          t          |           }	d8d}|
dk    r-| j        dk    rd}t          |          t          | dd           }
 ||
          }
|                    dd          }d}|                    d          }|r[d}||z
  }t!          |          |k    rd }t          |          t#          d|z   t!          |          z             }|d!|z   d"z   |z   z  }|                    d#          }|rd$}||z
  }g }|r)|                    |d |                    ||d          }|)d}|D ]d}t#          d|z   t!          |          z             }|d%|z   d&z   t'          |          z   t'          t!          |                    z   |z   z  }|dz  }e|                    d'| j                            d'                    }|                    d(d)          p|                    d*d)          }|                    d+d)          }|                    d,d          }t          |t*          j                  r|                                }t!          |          |k    rd-}t          |          |||                    d.d          ||                    d/d)          |                    d0d          |d         |d         |	|                    d1d          |                    d2d          |
|||f| _        d}|s|r| j        d3k    rd4| j        d         z  | j        d         z  }nF|d5k    s|d	k    rd| j        d         z  | j        d         z  }n| j        d         | j        d         z  }|r|t!          |          d6z   z  }|r|t!          |          dz   z  }n1t5          |t!          |          d6z   t!          |          dz             }t7          j        | |t7          j        d7d| j        z   d|          g|           d S )9Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                ,    g | ]}t          |          S r1   )round)r2   xs     r   rw   z_save.<locals>.<listcomp>  s    
5
5
5588
5
5
5r!   r.   r   qualityr  subsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner   list[list[int]] | Nonec                      S t           t                    rn	 d                                  D             fdt          dt	                    d          D              n$# t
          $ r}d}t          |          |d }~ww xY wt           t          t          t          f          rt           t                    r) fdt          t	                               D              n$t           t                    rt                      dt	                     cxk     rdk     sn d}t          |          t                     D ]u\  }}	 t	          |          dk    rd}t          |          t          j        d	|          }t          |           |<   R# t          $ r}d}t          |          |d }~ww xY w S d S )
Nc                    g | ]B}|                     d d          d                                          D ]}t          |          CS )#r   r   )rX   r   )r2   linenums      r   rw   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  sd       #zz#q11!4::<<   HH   r!   c                *    g | ]}||d z            S )r   r1   )r2   r_   liness     r   rw   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s&    OOO5QV,OOOr!   r   r   zInvalid quantization tablec                (    g | ]}|v |         S r1   r1   )r2   keyr  s     r   rw   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s)       %(3'>>GCL>>>r!   r'   z$None or too many quantization tablesr   )r  r   
splitlinesr   r   r)  rT   listrc  	enumerater8  r   )r  r  r   idxtabletable_arrayr  s   `     @r   validate_qtablesz_save.<locals>.validate_qtables  s   
 ?Ngs## 	P
P  ' 2 2 4 4   POOOeAs5zz26N6NOOO	  - - -2 oo1,-
 gtT233 	'4(( (   ,1#g,,,?,?   GU++ (w--G((((q((((< oo%'00 
5 
5
U	55zzR'':'nn,"'+c5"9"9K
 $(#4#4GCLL	 ! 1 1 16C$S//q01
 N+	 	s/   A& &
B0BB9F
F>'F99F>extrar!   r   r=   r:   zXMP data is too longs   r;   rx   rC   s   rA   rg   rr   Frs   optimizer9   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsrm   r&   _   r'   r   )r  r  r   r  )widthheightr)  RAWMODEr   r;  r(  encoderinforf  r   r  r   r   rD  r  r   r   o16rQ   r   rR   r   Exiftobytesencoderconfigrd   maxr	   _saver   )r,  r   r$  r   r   r  rR   r.   r  r  r  presetr  r  MAX_BYTES_IN_MARKERr=   overhead_lenmax_data_bytes_in_markerrd   rx   markersr   r   rg   rr   r  r9   bufsizes                               r   r  r    s   	x1}}	Q0oo""'" " " "427444cll!" >D
5
5TXXeV44
5
5
5Chhy"%%G((="--Khhy!!G&	G		!jj33**^,,%% ;'oo'!!!+.22="EEKgs## 	;7(:(:g&**>::Gg									 			9GCS//!"2&&( ( ( (T &9GCS//!"nd33w''GHHWc""E
((5//C
 P#6#E s88...(CS//!1|#c#hh.//t#&IICOO((=))K #6#E  	ANN;'@(@'@ABBB%&>&?&?@K  	A  
	 
	Fq<'#f++566D"# Q%% S\\""	#
 E FAAhhy"'++i"8"899G
 ((=%00RDHH]E4R4RKxx
E**H88FC  D$
## ||~~
4yy&&&%oo 	1U##q!!AA(!,,&**B, G >; >7f"'!*nrwqz1GG]]gmm"'!*nrwqz1GGgaj271:-G 	%s4yy1}$G 	&s5zzA~%G gs4yy1}c%jj1n==O
B"')91gFFG    s   < 
A&A!!A&c                    |                                  }t          j        dd||g           	 t          j        |           d S # t
          $ r Y d S w xY w)Ncjpegr  )_dumpr%  r&  r   r'  r(  )r,  r   r$  r  s       r   _save_cjpegr  Z  sf    xxzzH7J(CDDD
	(   s   A 
AAstr | bytes | NoneJpegImageFile | MpoImageFilec                >   t          | |          }	 |                                }|>|d         dk    r2|j        D ]\  }}|dk    rd|v r|c S ddlm}  |j        ||          }n6# t          t          f$ r Y n#t          $ r t          j
        d           Y nw xY w|S )NrM  r   r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r@  rP   MpoImagePluginr   adoptr8  r^   r|   warningswarn)r   r$  r,  mpheadersegmentcontentr   s          r   jpeg_factoryr  f  s     
r8	$	$B
99;;HUOa$7$7$&J   f$$)<)G)GIII444444 $#B11Bz"    
 
 
.	
 	
 	
 	
 	


 Is   ;A' A' 'B:BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r0  )r,  r  r   r   )r,  r  r   r  r$  r  r   r   r   )r   r  r$  r  r   r  )6
__future__r   r   r^  r9  r   r\   r%  r   r  r  typingr   r   r   r   r   r	   _binaryr
   r   r   r[   r   r   r  
_deprecater   JpegPresetsr   r  r   r    r#   rh   r   r   r   r   r   r2  r@  r  r   r  r  r  r  r  register_openrD  register_saveregister_extensionsregister_mimer1   r!   r   <module>r     sj  D # " " " " "  				  				      



   ) ) ) ) ) ) ) ) ) )         ! ! ! ! ! ! ! ! ! ! ! !       ! ! ! ! ! ! ! ! ! ! ! !             -,,,,,,% % % %
g7 g7 g7 g7T$ $ $ $-? -? -? -?`   6@

V^S)@

V.4@
 V&,@
 V'-	@

 U*D1@
 V2C8@
 V3S9@
 V+S1@
 &@
 V3S9@
 W,c2@
 W137@
 U;TB@
 W8#>@
 W93?@
  W137!@
" '#@
 @
$ '%@
& ''@
( ')@
* '+@
, '-@
. '/@
0 '1@
2 +3@
4 )5@
6 UOT*7@
8 U/59@
: U,d3;@
< U-t4=@
> U5s;?@
@ U0$7A@
B V,c2C@
D V,c2E@
 @
 @
F V,c2G@
H V,c2I@
J V,c2K@
L V,c2M@
N V,c2O@
P V,c2Q@
R V,c2S@
T V,c2U@
V W.4W@
X W.4Y@
Z W.4[@
\ W.4]@
^ W.4_@
` W.4a@
b )c@
d )e@
f )g@
 @
h *))))))++++Is#@
 @
 @
F) ) ) )A A A A AI' A A AH- - - -I I I I` 
	 	  	' ' ' 'D D D DN    37    <  M(, @ @ @  M(% 0 0 0  -.0R0R0R S S S  M(, 7 7 7 7 7r!   