+
    UBiVz                       ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^RIHtHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt R	t]'       d   ^ R
IHtHt ^RIHt R R ltR R ltR R lt R R lt!R R lt"/ RRR]!3bRRR]!3bRRR]!3bRR R!]!3bR"R#R$]3bR%R&R']!3bR(R)R*]!3bR+R,R-]!3bR.RbR/R0R1]!3bR2R3R4]!3bR5R6R7]!3bR8R9R:]3bR;R<R=]!3bR>R?R@]!3bRARBRC]!3bRDRb/ RERbRFRbRGRbRHRbRIRbRJRbRKRbRLRbRMRbRNRORP]3bRQRRRS]"3bRTRURV]3bRWRXRY]3bRZR[R\]!3bR]R^R_]3bR`RaRb]3bRcRdRe]3bC/ RfRgRh]3bRiRjRk]3bRlRmRn]3bRoRpRq]3bRrRsRt]3bRuRvRw]3bRxRyRz]3bR{R|R}]3bR~RR]3bRRR]3bRRR]3bRRR]3bRRR]3bRRR]3bRRbRRbRRbCRRRRRRRRRRRRRRRRRRRRRRRRR] 3/Ct#R R lt$ ! R R]P                  4      t%R R lt&R R lt'RRRRRRRRRRRR/t(Rt)R^ R^R^/t*R R lt+R R lt,RR R llt-]P\                  ! ]%P^                  ]-]$4       ]P`                  ! ]%P^                  ],4       ]Pb                  ! ]%P^                  . RO4       ]Pd                  ! ]%P^                  R4       R# )    )annotationsN)Image	ImageFile)i16be)i32be)o8)o16be)presetsF)IOAnyMpoImageFilec               $    V ^8  d   QhRRRRRR/#    selfJpegImageFilemarkerintreturnNone )formats   "8/usr/lib/python3.14/site-packages/PIL/JpegImagePlugin.py__annotate__r   ?   s!     % %} %c %d %    c                    \        V P                  P                  ^4      4      ^,
          p\        P                  ! V P                  V4       R# )r   N)i16fpreadr   
_safe_read)r   r   ns   && r   Skipr#   ?   s1    DGGLLOq A!$r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r   D   s&     g7 g7m g7S g7T g7r   c                	   \        V P                  P                  ^4      4      ^,
          p\        P                  ! V P                  V4      pRV^,           2pW0P
                  V&   V P                  P                  WC34       VR8X  d   VP                  R4      '       d   \        V^4      ;V P                  R&   p\        VR4      V P                  R&    V^,          p\        V^4      \        V^
4      3pV^8X  d   WpP                  R&   M@V^8X  d:   \        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      V P                  R&   W`P                  R	&   WpP                  R
&   R(# VR8X  d   VP                  R4      '       dw   RV P                  9   d)   V P                  R;;,          VR,          ,          uu&   R(# W0P                  R&   V P                  P                  4       V,
          ^,           V n        R(# VR8X  d@   VP                  R4      '       d)   VP                  R^4      ^,          V P                  R&   R(# VR8X  d(   VP                  R4      '       d   W0P                  R&   R(# VR8X  d5   VP                  R4      '       d   V P                   P                  V4       R(# VR8X  Ed   VP                  R4      '       d   ^pV P                  P#                  R/ 4      p	W8V^,            R8X  d    V^,          p\        W84      p
V^,          pW8,          pV^V,           ,          pW^,          ,          p\%        W84      pV^,          pW8W,            pV
R8X  dD   R\%        V^ 4      R,          R\        V^4      R\%        V^4      R,          R\        V^4      /W&   MWV
&   W,          pW^,          ,          pK  R(# VR 8X  dK   VP                  R!4      '       d4   \        V^4      V P                  R"&    V^,          pWP                  R#&   R(# VR8X  dg   VP                  R$4      '       dN   VR%,          V P                  R&&   V P                  P                  4       V,
          ^,           V P                  R'&   R(# R(# R(#   \         d     R(# i ; i  \&        P(                   d     R(# i ; i  \*         d     R(# i ; i))r   APP  s   JFIFjfif   jfif_versiondpic              3  2   "   T F  qR ,          x  K  	  R# 5i)RQ@Nr   ).0ds   & r   	<genexpr>APP.<locals>.<genexpr>`   s     (H<aT<s   	jfif_unitjfif_density  s   Exif  exif   NN   http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix   ICC_PROFILE   s   Photoshop 3.0 	photoshops   8BIMi  XResolutioni   DisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobeadobe_transforms   MPF :   NNmpmpoffsetN)r   r   r    r   r!   appapplistappend
startswithinfodivmodtuple	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r"   srJ   versionr2   r3   offsetr?   codename_lensizedatarF   s   &&             r   r&   r&   D   s   
 	DGGLLOq ATWWa(A}
CHHSMLL!ALL11&)!Qi/		&G$*7C$8		.!	5!Iq!9c!Rj0L A~#/		% a#(5(H<(H55(H<(H#H		% %.IIk"(4IIn%	6	all;77TYYIIf2& !IIf $ 2Q 6D	6	all+NOO777A.q1		%	6	all955 !		*	6	all+;<< 	A	6	all+?@@II((b9	!$/!1~!9!h,&1*$1~!&-06>%s4|e';)3tQ<%s4|e';)3tR=	'IO '+dO1*$3 0: 
6	all844 AY		'	;eO ,;II'(	6	all844B%		$ !% 2Q 6		* 5	[  		B <<   		s7   !R <CR ?	R5 RRR21R25SSc               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r      s!     $ $m $S $T $r   c                   \        V P                  P                  ^4      4      ^,
          p\        P                  ! V P                  V4      pW0P
                  R&   W0P                  R&   V P                  P                  RV34       R# )r   commentCOMN)	r   r   r    r   r!   rN   rJ   rK   rL   )r   r   r"   r[   s   &&  r   re   re      sb     	DGGLLOq ATWWa(AIIiHHUOLL
#r   c               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r      s!     /? /?m /?S /?T /?r   c                .   \        V P                  P                  ^4      4      ^,
          p\        P                  ! V P                  V4      p\        V^4      \        V^4      3V n        V P                  e-   V P                  V P                  P                  8w  d   RV n        V^ ,          V n	        V P                  ^8w  d   RV P                   R2p\        V4      hV^,          V n        V P                  ^8X  d	   RV n        MMV P                  ^8X  d	   RV n        M4V P                  ^8X  d	   RV n        MRV P                   R2p\        V4      hVR9   d   ^;V P                  R&   V P                  R	&   V P                  '       d   V P                  P                  4        V P                  ^ ,          ^,          \!        V P                  4      8X  d4   V P                   Uu. uF  qUR
,          NK  	  ppRP#                  V4      pMRpWpP                  R&   . V n        \%        ^\!        V4      ^4       FW  pW8V^,            p	V P&                  P)                  V	^ ,          V	^,          ^,          V	^,          ^,          V	^,          34       KY  	  R# u upi )r   Nzcannot handle z-bit layersLRGBCMYKz-layer imagesprogressiveprogression:   NNr   icc_profile)        )r   r   r    r   r!   _size_imr`   imbitsSyntaxErrorlayers_moderN   rU   sortlenjoinrangelayerrL   )
r   r   r"   r[   msgpprofilern   its
   &&        r   SOFr      s    	DGGLLOq ATWWa(AQC1I%DJxx		TWW\\ 9!DIyyA~tyyk5#A$DK{{a
		
		
t{{m=9#11>??		- 499]#;|||<<?2#dll"33'+||4|!vv|G4((7+KK#.		- 1c!fa !a%L

1Q41QqTBY!=> ! 5s   #Jc               $    V ^8  d   QhRRRRRR/# r   r   )r   s   "r   r   r      s!      m S T r   c                d   \        V P                  P                  ^4      4      ^,
          p\        P                  ! V P                  V4      p\        V4      '       d   V^ ,          pV^,          ^ 8X  d   ^M^p^V^@,          ,           p\        V4      V8  d   Rp\        V4      h\        P                  ! V^8X  d   RMRV^V 4      p\        P                  R8X  d   V^8  d   VP                  4        \         U	u. uF  qV	,          NK  	  up	V P                  V^,          &   W6R pK  R# u up	i )r   zbad quantization table markerBHlittleN)r   r   r    r   r!   r{   rw   arraysys	byteorderbyteswapzigzag_indexquantization)
r   r   r"   r[   v	precision	qt_lengthr   ra   r   s
   &&        r   DQTr      s     	DGGLLOq ATWWa(A
a&&aDr'Q,AQ		B&	q6I1Cc""{{)q.3c1Qy>J==H$QMMO6B$Cl!WWl$C!b&!jM  %Ds   =D-i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTro   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrp   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  i  SOF9zExtended sequential DCT (AC)rq   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rr   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  i  i  i  i  i  i  i  i  i    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 0r4   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 12r>   APP13zApplication segment 13rD   APP14zApplication segment 14i  APP15zApplication segment 15i  i  i  i  i  i  i  i  i  i  i  i  i    i  re   Commentc                    V ^8  d   QhRRRR/# )r   prefixbytesr   boolr   )r   s   "r   r   r   I  s     . .E .d .r   c                $    V P                  R 4      # )s   )rM   )r   s   &r   _acceptr   I  s    _--r   c                     a  ] tR tRtRtRtR R ltR V 3R lltR V 3R	 lltR
 R lt	R R lt
R R ltR R ltR R ltR R ltRtV ;t# )r   iR  JPEGzJPEG (ISO 10918)c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   JpegImageFile.__annotate__V  s     6# 6#t 6#r   c                	   V P                   P                  ^4      p\        V4      '       g   Rp\        V4      hRp^ ;V n        V n        ^ V n        . V n        / V n        / V n	        / V n
        / V n        . V n        . V n         V^ ,          pV^8X  d.   WP                   P                  ^4      ,           p\        V4      pMV P                   P                  ^4      pK[  V\        9   d   \        V,          w  rEpVe	   V! W4       VR8X  dS   V P                   pV P                   R8X  d   Rp\"        P$                  ! RRV P&                  ,           ^ VR34      .V n        M[V P                   P                  ^4      pK  VR9   d   RpEK  VR	8X  d   V P                   P                  ^4      pEK)  R
p\        V4      hV P+                  4        R# )   znot a JPEG file   Nr   rj   CMYK;Ijpeg i   zno marker foundr   r   >   r     )r   r    r   rw   rv   rx   rS   r~   _huffman_dc_huffman_acr   rJ   rK   rU   r   MARKERmoder   _Tiler`   tile_read_dpi_from_exif)r   r[   r   r   namedescriptionhandlerrawmodes   &       r   _openJpegImageFile._openV  s   GGLLOqzz#Cc"" #$#	DK 79
+-+-24%'02$&!ADyQ'F GGLLOF{-3AY*7&D$;"iiGyyF*"*!0BAQS}U!DI GGLLOk!fGGLLO'!#&&  "r   c                   V ^8  d   QhRR/# )r   r   	list[Any]r   )r   s   "r   r   r     s     B Bi Br   c                	Z   < \         SV `  4       V P                  V P                  .,           # N)super__getstate__rx   r~   )r   	__class__s   &r   r   JpegImageFile.__getstate__  s#    w#%djj(AAAr   c                    V ^8  d   QhRRRR/# )r   stater   r   r   r   )r   s   "r   r   r     s     $ $) $ $r   c                	R   < VR ,          w  V n         V n        \        SV `  V4       R# )r6   N)rx   r~   r   __setstate__)r   r   r   s   &&r   r   JpegImageFile.__setstate__  s"    "')TZU#r   c                    V ^8  d   QhRRRR/# )r   
read_bytesr   r   r   r   )r   s   "r   r   r     s      C E r   c                    V P                   P                  V4      pV'       g2   \        P                  '       d   \	        V R4      '       g
   RV n        R# V# )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_readJpegImageFile.load_read  sA     GGLL$Y444WT8=T=T DKr   c               $    V ^8  d   QhRRRRRR/# )r   r   z
str | Noner`   ztuple[int, int] | Noner   z0tuple[str, tuple[int, int, float, float]] | Noner   )r   s   "r   r   r     s$     & &&&<&	9&r   c                	N   \        V P                  4      ^8w  d   R# V P                  '       d   R# V P                  ^ ,          w  r4rV^pV P                  p\	        V\
        4      '       g   Q hV^ ,          R8X  d   VR9   d   Wn        VR3pV'       Ed=   \        V P                  ^ ,          V^ ,          ,          V P                  ^,          V^,          ,          4      pR F  p	Wy8  g   K   M	  Vf   Q hV^ ,          V^,          V^,          V^ ,          ,
          X	,           ^,
          V	,          V^ ,          ,           V^,          V^,          ,
          V	,           ^,
          V	,          V^,          ,           3pV P                  ^ ,          V	,           ^,
          V	,          V P                  ^,          V	,           ^,
          V	,          3V n        T	p\        P                  ! W4WV4      .V n        V^ 3V n        ^ ^ V^ ,          V,          V^,          V,          3p
V P                  V
3# )   Nri   r   )rh   YCbCr)   rG   r   r   )r{   r   decoderconfigr`   
isinstancerP   ry   minrs   r   r   r   )r   r   r`   r/   eoascaleoriginal_sizer[   boxs   &&&        r   draftJpegImageFile.draft  s    tyy>Q YYq\
a		!U####Q45=T^3JbA4		!Q/1a1HIE!: " = =!!1!q1$*QqT11!q1$*QqT1	A  99Q<!+a/A5		!q8H18LQR7RSDJE__Q101	#QZ!]1%-}Q/?%/GHyy#~r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s      D r   c                	L   \         P                  ! 4       w  r\        P                  ! V4       \        P                  P                  V P                  4      '       d%   \        P                  ! R RW P                  .4       M$ \        P                  ! V4       Rp\        V4      h \        P                  ! V4      ;_uu_ 4       pVP                  4        VP                  V n        RRR4        \        P                  ! V4       T P                  P                   T n        T P                  P$                  T n        . T n        R#   \         d     Li ; i  + '       g   i     Lw; i  \         d     Lpi ; i   \        P                  ! T4       i   \         d     i i ; i; i)djpegz-outfilezInvalid FilenameN)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadru   r   ry   r`   rs   r   )r   fr  r   rt   s   &    r   
load_djpegJpegImageFile.load_djpeg  s(    ""$
77>>$--((!!7Jmm"LM		$ %CS/!	D!!S
&& "		$ WW\\
WW\\
	'   "!  		$ sl   E &E9 "E&E9 /E( EEE%	 E9 (E65E69F#;FF#F F#F  F#c                   V ^8  d   QhRR/# r   r   dict[int, Any] | Noner   )r   s   "r   r   r     s      / r   c                	    \        V 4      # r   )_getexifr   s   &r   r  JpegImageFile._getexif  s    ~r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s     & &T &r   c                	   R V P                   9   g   RV P                   9  d   R#  V P                  4       pVR,          pVR,          p \        V^ ,          4      V^,          ,          p\        P
                  ! V4      '       d   Rp\        V4      hV^8X  d
   VR,          pWD3V P                   R &   R#   \         d    Tp LZi ; i  \        P                  \        \        \        \        \        3 d    RT P                   R &    R# i ; i)r+   r5   Ni(  i  zDPI is not a numberr-   )H   r  )rN   getexiffloat	TypeErrormathisnanr  rX   rY   KeyErrorrw   ZeroDivisionError)r   r5   resolution_unitx_resolutionr+   r   s   &     r   r   !JpegImageFile._read_dpi_from_exif  s    DIItyy!8	&<<>D"6lO<L#LO,|A> zz#+ o%!#t"xDIIe  #"# LL
 	&  &DIIe	&s;   "C 	 B4 )C -C 4CC CC >D	D	c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r     s      - r   c                	    \        V 4      # r   )_getmpr  s   &r   r*  JpegImageFile._getmp  s    d|r   )r   rS   r   r   ry   rs   rJ   rK   rv   r   rU   ru   r~   rx   r   r   )__name__
__module____qualname____firstlineno__r   format_descriptionr   r   r   r   r   r  r  r   r*  __static_attributes____classcell__)r   s   @r   r   r   R  sN    F+6#pB B$ $ &P>&: r   r   c                    V ^8  d   QhRRRR/# r   r   r   r   r  r   )r   s   "r   r   r     s     - -= -%: -r   c                d    R V P                   9  d   R# V P                  4       P                  4       # )r5   N)rN   r  _get_merged_dictr  s   &r   r  r    s&    TYY<<>**,,r   c                    V ^8  d   QhRRRR/# r4  r   )r   s   "r   r   r     s     I I I#8 Ir   c                    V P                   R ,          p\        P                  ! T4      pTP	                  ^4      pTP                  R4      '       d   RMRp^RIHp  TP                  T4      pTP                  TP                  4       TP                  T4       \        T4      p TR,          p
. p TR	,          p\        T
4       EF)  p\         P"                  ! T R
2Y^,          4      pR$p\        \%        Y4      4      pR\'        TR,          R%,          4      R\'        TR,          R&,          4      R\'        TR,          R',          4      RTR,          R(,          ^,	          RTR,          R),          ^,	          RTR,          R,          /pTR,          ^ 8X  d   RTR&   MRp	\        T	4      h^ RRRRRRRRRRRR R!/pTP)                  TR,          R"4      TR&   TTR&   TP+                  T4       EK,  	  YR	&   T#   \         d     R# i ; i  \         d   pRp	\        T	4      ThRp?ii ; i  \         d   pRp	\        T	4      ThRp?ii ; i  \         d   pR#p	\        T	4      ThRp?ii ; i)*rH   Ns   MM *><)TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  LLLHH	AttributeDependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTypei r   z!unsupported picture format in MPO	Undefinedi  z Large Thumbnail (VGA Equivalent)i  z$Large Thumbnail (Full HD Equivalent)i  zMulti-Frame Image (Panorama)i  zMulti-Frame Image: (Disparity)i  z Multi-Frame Image: (Multi-Angle)i   zBaseline MP Primary ImageUnknownz!malformed MP Index (bad MP Entry))r>  Size
DataOffsetEntryNo1EntryNo2l        i   @i    i   i   )rN   r#  ioBytesIOr    rM   r   r;  ImageFileDirectory_v2seeknextr  dictrQ   rw   r}   rX   unpack_fromzipr   getrL   )r   ra   file_contentshead
endiannessr;  rN   rH   r   r   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps   &                  r   r*  r*    s   yy JJt$Ma D(;<<#J!&44T:499%		- $Z
&6

 I$&&zeH"..,e$lrMM QF3v56G*D1E1Q,R)40D0P+Q)40D0P+QW[1W="D!GK$8G$D#K'+.;K ,-217-.9!#&&+<@8:<5I %.MM+h2G$SK!#.GK W%= %> 6
 IA    &9#A%&  &8#A%&N  &1#A%&s[   G; AH '	H. 3EI ;H
	H
H+H&&H+.I9III-I((I-1rh   ri   RGBXrj   r   r   c                    V ^8  d   QhRRRR/# )r   ru   Image.Imager   r   r   )r   s   "r   r   r     s     ' '[ 'S 'r   c                0   \        V \        4      '       d   V P                  R9   d   R# V P                  ^ ,          R,          V P                  ^,          R,          ,           V P                  ^,          R,          ,           p\        P                  VR4      # )r   :r   r   N)r   rG   )r   r   rx   r~   	samplingsrS  )ru   samplings   & r   get_samplingrh    sh     b-((BII,?	xx{3"((1+c"22RXXa[5EEH==2&&r   c               (    V ^8  d   QhRRRRRRRR/# )	r   ru   rc  r   	IO[bytes]r	  zstr | bytesr   r   r   )r   s   "r   r   r     s.     @ @k @y @K @D @r   c                   V P                   ^ 8X  g   V P                  ^ 8X  d   Rp\        V4      h \        V P                  ,          pT P                  pTP                  RR,4       Uu. uF  p\        T4      NK  	  ppTP                  RR-4      p	TP                  RR-4      p
TP                  R4      pT	R	8X  d   R-p	R	p
R	pMT	\        9   d4   \        T	,          pR-p	TP                  RR-4      p
TP                  R
4      pM\        T	\        4      '       g   Rp\        T4      hT
\        9   d   \        T
,          P                  RR-4      p
\        T\        4      '       d(   T\        9   d   \        T,          P                  R
4      pT
R8X  d   ^ p
MNT
R8X  d   ^p
MDT
R8X  d   ^p
M:T
R8X  d   ^p
M0T
R	8X  d*   T P                  R8w  d   Rp\        T4      h\        T 4      p
R R lpTR	8X  d,   T P                  R8w  d   Rp\        T4      h\!        T R
R4      pT! T4      pTP                  RR4      pRpTP                  R4      ;p'       di   ^pTT,
          p\#        T4      T8  d   Rp\        T4      h\%        ^T,           \#        T4      ,           4      pTRT,           R,           T,           ,          pTP                  R4      ;p'       d   ^pTT,
          p. pT'       d   TP'                  TRT 4       TTR pK#  ^pT Fu  p\%        ^T,           \#        T4      ,           4      pTRT,           R,           \)        T4      ,           \)        \#        T4      4      ,           T,           ,          pT^,          pKw  	  TP                  RT P*                  P                  R4      4      pTP                  RR 4      ;'       g    TP                  R!R 4      pTP                  R"R 4      pTP                  R#R4      p\        T\,        P.                  4      '       d   TP1                  4       p\#        T4      T8  d   R$p\        T4      hT	TTP                  R%^ 4      TTP                  R&R 4      TP                  R'^ 4      TT
TP                  R(^ 4      TP                  R)^ 4      TTTT3T n        T'       g	   T'       d   T P                  R*8X  d4   ^T P4                  ^ ,          ,          T P4                  ^,          ,          pMlT	^_8  g   T	R-8X  d4   ^T P4                  ^ ,          ,          T P4                  ^,          ,          pM+T P4                  ^ ,          T P4                  ^,          ,          pT'       d   T\#        T4      ^,           ,          pT'       d   T\#        T4      ^,           ,          pM,\7        \#        T4      ^,           \#        T4      ^,           4      p\8        P:                  ! Y\8        P<                  ! R+R,T P4                  ,           ^ T4      .T4       R#   \
         d"   pRT P                   R2p\        T4      ThRp?ii ; iu upi ).r   z cannot write empty image as JPEGzcannot write mode z as JPEGNr+   qualitysubsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2z4:2:0z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGc                    V ^8  d   QhRRRR/# )r   rn  zKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner   zlist[list[int]] | Noner   )r   s   "r   r   _save.<locals>.__annotate__  s     ( (W( 
 	(r   c                    V f   V # \        V \        4      '       d    V P                  4        UUu. uF<  pVP                  R^4      ^ ,          P                  4        F  p\	        V4      NK  	  K>  	  ppp\        ^ \        V4      ^@4       Uu. uF  qCWD^@,            NK  	  p p\        V \        \        \        34      '       d   \        V \        4      '       d3   \        \        V 4      4       Uu. uF  qwV 9   g   K  W,          NK  	  p pM!\        V \        4      '       d   \        V 4      p ^ \        V 4      u;8  d   ^8  g   M Rp\        V4      h\        V 4       FG  w  r \        V	4      ^@8w  d   Rp\        V4      h\        P                  ! RV	4      p
\        V
4      W&   KI  	  V # R # u uppi u upi   \         d   pRp\        T4      ThR p?ii ; iu upi   \         d   pRp\        T4      ThR p?ii ; i)N#zInvalid quantization tablez$None or too many quantization tablesr   )r   str
splitlinesrT   r   r}   r{   r  rP   listrP  	enumerater   r   )rn  linenumlinesr[   r   r   keyidxtabletable_arrays   &          r   validate_qtables_save.<locals>.validate_qtables  s   
 ?Ngs##
P !( 2 2 4 4#zz#q1!4::< H<  4   7<As5z26NO6NV,6NOgtT233'4((,1#g,,?,?S'>LGLL,?   GU++w-G(q(< o%'0
	55zR':'n,"'++c5"9K
 $(#4GL 1 N+ 4 P	  -2 o1,- ! 16C$S/q01sS   F9 AF.3F9 F40G=G%4G.F9 9GGGG=*G88G=extrar   r   r:   zXMP data is too longs   r8   rn   s   r=   rd   rk   Frl   optimizer5   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsrj   r   r   re  )widthheightr  RAWMODEr   r#  r  encoderinforS  roundr
   r   r   rt  r   rh  getattrr{   o16rL   r   rN   r   Exiftobytesencoderconfigr`   maxr   _saver   )ru   r   r	  r   r   r   rN   xr+   rl  rm  rn  presetr  r  MAX_BYTES_IN_MARKERr:   overhead_lenmax_data_bytes_in_markerr`   rn   markersr   r   rd   rk   r  r5   bufsizes   &&&                          r   r  r    sj   	xx1}		Q0o""''"
 >>D!XXeV4
54584C
5hhy"%G((="-Khhy!G&	G	!jj3**^,%%'o'!!+.22="EKgs##7(:g&**>:Gg						 		99GCS/!"2&(T &99GCS/!"nd3w'GHHWc"Ehhuos#6#E s8..(CS/!1|#c#h./t#&IICOOhh}--{-#6#E NN;'@(@AB%&>&?@KFq<'#f+56D"# Q% S\"	#
 E FA  hhy"''++i"89G
 ((=%0RRDHH]E4RKxx
E*H88FC D$

##||~
4y&&%o 	1U#q!(!,&*B* ;77f"''!*nrwwqz1G]gm"''!*nrwwqz1Gggaj2771:-Gs4y1}$Gs5zA~%G c$i!mSZ!^4OO
"'')91gFGo  ""277)84cl!" 6s   X (YY$Y  Yc               $    V ^8  d   QhRRRRRR/# )r   r   rj  r	  zstr | bytes | Noner   zJpegImageFile | MpoImageFiler   )r   s   "r   r   r   U  s$      /!r   c                Z   \        W4      p VP                  4       pVeP   VR,          ^8  dB   VP                   F  w  rEVR8X  g   K  RV9   g   K  Vu # 	  ^RIHp VP
                  ! W#4      pV#   \        \        3 d     T# \         d    \        P                  ! R4        T# i ; i)Nr<  r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r*  rK   MpoImagePluginr   adoptr   rZ   rw   warningswarn)r   r	  ru   mpheadersegmentcontentr   s   &&     r   jpeg_factoryr  U  s     
r	$B
99;HUOa$7$&JJ f$)<)GI %/
 5 ##B1B I z"  I  
.	
 I
s/   7A2 	A2 A2 A2 2B*B*B*)B*z
image/jpeg)JPG	ExtensionN)RST0z	Restart 0N)RST1z	Restart 1N)RST2z	Restart 2N)RST3z	Restart 3N)RST4z	Restart 4N)RST5z	Restart 5N)RST6z	Restart 6N)RST7z	Restart 7N)SOIzStart of imageN)EOIzEnd of imageN)JPG0zExtension 0N)JPG1zExtension 1N)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 13N)@r   r      r7   rm            r   rG                  *   r   r               )   +   	               (   ,   5   
             '   -   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   )z.jfifz.jpez.jpgz.jpeg)3
__future__r   r   rK  r!  r  rX   r
  r   r  r  r   r   r   _binaryr   r   r   rW   r   r	   r  JpegPresetsr
   TYPE_CHECKINGtypingr   r   r  r   r#   r&   re   r   r   r   r   r   r  r*  r  r   rf  rh  r  r  register_openr   register_saveregister_extensionsregister_mimer   r   r   <module>r      s  D #  	  	   
    ! !  !  ,%
g7T$/?d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 )
)
)
)
)
)
)
+
+
+
+
UIs#@
F.{I'' {|-I` 	5
E
HW	 	'@J<   M((, @   M((% 0   -..0R S   M((, 7r   