
    fhB                       S SK Jr  S SKrS SKrS SKJrJrJr  SSKJ	r	J
r
JrJrJr  SSKJr  SSKJr  SS jrSS	 jr " S
 S\R(                  5      r\	R,                  " \R.                  \5        \	R0                  " \R.                  \5        \	R2                  " \R.                  S5        \	R4                  " \R.                  S5        g)    )annotationsN)IOAnycast   )Image	ImageFileImageSequenceJpegImagePluginTiffImagePlugin)o32le)DeferredErrorc                2    [         R                  " XU5        g N)r   _save)imfpfilenames      J/var/www/auris/envauris/lib/python3.13/site-packages/PIL/MpoImagePlugin.pyr   r   %   s    "(+    c           
     <   U R                   R                  S/ 5      nU(       d  [        U SS5      (       d  [        XU5        g Sn/ nU /UQn[	        S U 5       5      nU GH[  n[
        R                  " U5       GH<  n	U(       d  SSU-  -   n
S[        R                  " S	S
U
-   5      -   S-   SU
-  -   U	R                   S'   U	R                   R                  S5      n[        U[        R                  5      (       a  UR                  5       nXR                   S'   U(       a  US[        U5      -   -  n[        R                  " XU5        UR                  UR!                  5       5        M  U	R#                  U 5      nU	R%                  US5        Xl         UR                  UR!                  5       US   -
  5        GM?     GM^     [&        R(                  " 5       nSUS'   [        U5      US'   SnSn[+        U5       H>  u  nnUS:X  a  SnOSnU[        R                  " SUUUSS5      -  nUS:X  a  X-  nUU-  nM@     XS'   UR-                  U5        UR/                  S[1        S5      -   UR                  S5      -   5        UR-                  S[2        R4                  5        g )Nappend_imagesis_animatedF   c              3  <   #    U  H  n[        US S5      v   M     g7f)n_framesr   N)getattr).0seqs     r   	<genexpr>_save_all.<locals>.<genexpr>2   s     D|Z++|s   B      s   z>H   s   MPF     extraexif   JPEGs   0100i     r   r   i   z<LLLHH  s   II*    )encoderinfogetr   r   sumr
   Iteratorstructpack
isinstancer   Exiftobyteslenr   appendtell_attach_default_encoderinfosaver   ImageFileDirectory_v2	enumerateseekwriter   osSEEK_END)r   r   r   r   
mpf_offsetoffsetsim_sequencestotalim_sequenceim_frame
ifd_lengthr'   r.   ifd	mpentriesdata_offsetisizemptypes                      r   	_save_allrO   )   sX   NN&&;M]E!B!BbhJG''LD|DDE#%..{;H"u*_
kk$J78 Z'( $$W-  ++//7dEJJ//<<>D37((0!c$i-/J%%hH=rwwy)&BB2Fb&)'2$rwwy72;67/ < $4 
/
/
1CCKg,CKIKW%46FFV[[64aKK	6%Kt & KGGJHH]U1X%A67GGAr{{r   c                  z    \ rS rSrSrSrSrSS jrSSS jjrSS jr	SS	 jr
SS
 jr\ S     SS jj5       rSrg)MpoImageFileg   MPOzMPO (CIPA DC-007)Fc                    U R                   R                  S5        [        R                  R	                  U 5        U R                  5         g )Nr   )r   r>   r   JpegImageFile_open_after_jpeg_openselfs    r   rV   MpoImageFile._openl   s1    Q%%++D1r   Nc                R   Ub  UOU R                  5       U l        U R                  c  Sn[        U5      eU R                  S   U l        U R                  S    Vs/ s H  o3S   U R                  S   -   PM     snU l        SU R
                  S'   U R                  [        U R
                  5      :X  d   eU R                  S	 U R                  S:  U l        U R                  U l	        U R                  R                  U R
                  S   5        SU l        SU l        SU l        g s  snf )Nz(Image appears to be a malformed MPO filer+   r,   
DataOffsetmpoffsetr   r   )_getmpmpinfo
ValueErrorr   info_MpoImageFile__mpoffsetsr7   r   r   _fpr>   _MpoImageFile__frameoffsetreadonly)rY   mpheadermsgmpents       r   rW   MpoImageFile._after_jpeg_openq   s   "*"6hDKKM;;<CS/!F+EI[[QWEX
EXE,$))J"77EX
   }}D$4$4 5555IIj!==1,77d&&q)*
s   D$c                    [        U R                  [        5      (       a  U R                  R                  eU R                  R	                  U5        g r   )r4   rc   r   exr>   )rY   poss     r   	load_seekMpoImageFile.load_seek   s1    dhh..((++cr   c                ~   U R                  U5      (       d  g [        U R                  [        5      (       a  U R                  R                  eU R                  U l        U R                  U   U l        U R                  R                  S5      nSU R                  ;   a  U R                  S	 U R
                  R                  U R                  S-   5        U R
                  R                  S5      (       d  Sn[        U5      eU R
                  R                  U R                  5        [        R                  R                  U 5        U R                  R                  S5      U:w  a  U R!                  5         ["        R$                  " SSU R&                  -   U R                  U R(                  S   S   5      /U l        Xl        g )Nr'      zNo data found for framejpeg)r   r   r   r*   )_seek_checkr4   rc   r   rl   r   rb   re   ra   r/   r>   readr`   r   rU   rV   _reload_exifr	   _TilerM   tilerd   )rY   frameoriginal_exifrh   s       r   r>   MpoImageFile.seek   s<   &&dhh..((++((&&u-		f-TYY		&!T[[1_%ww||A+CS/!T[[!%%++D199== M1 OOFFTYY$6TYYq\RTEUV
	 r   c                    U R                   $ r   )rd   rX   s    r   r9   MpoImageFile.tell   s    ||r   c                ^    [         U l        [        [         U 5      nUR                  U5        U$ )a  
Transform the instance of JpegImageFile into
an instance of MpoImageFile.
After the call, the JpegImageFile is extended
to be an MpoImageFile.

This is essentially useful when opening a JPEG
file that reveals itself as an MPO, to avoid
double call to _open.
)rQ   	__class__r   rW   )jpeg_instancerg   mpo_instances      r   adoptMpoImageFile.adopt   s,     #/L-8%%h/r   )
__frame__mpoffsetsrc   r   r   r_   r   re   rf   rw   )returnNoner   )rg   dict[int, Any] | Noner   r   )rm   intr   r   )rx   r   r   r   )r   r   )r   zJpegImagePlugin.JpegImageFilerg   r   r   rQ   )__name__
__module____qualname____firstlineno__formatformat_description!_close_exclusive_fp_after_loadingrV   rW   rn   r>   r9   staticmethodr   __static_attributes__ r   r   rQ   rQ   g   s_    F,(-% 
,
4  +/4' 
 r   rQ   z.mpoz	image/mpo)r   zImage.Imager   z	IO[bytes]r   zstr | bytesr   r   )
__future__r   r@   r2   typingr   r   r    r   r	   r
   r   r   _binaryr   _utilr   r   rO   rU   rQ   register_saver   register_save_allregister_extensionregister_mimer   r   r   <module>r      s   ( # 	         ,7|T?00 T|   L'' /   ++Y 7   ,,f 5   L'' 5r   