+
    UBi	(              	         ^ RI Ht ^ RIt^ RIt^ RIt^ RIHtHtHt ^RI	H
t
Ht ^RIHt RtR R lt. R#OtR	 R
 ltR R lt ! R R]P                  4      tR$R R lltR R ltR R ltR R lt]
P0                  ! ]P2                  ]4       ]
P4                  ! ]P2                  ]4       ]R8X  Ed   ]! ]P:                  4      ^8  d   ]! R4       ]P>                  ! 4        ]P:                  ^,          t ]! ] 4      '       g   ]! R4       ]P>                  ! 4        ]
PB                  ! ] 4      ;_uu_ 4       t"]! R]" 24       ]! R]"P2                   24       ]! R]"PF                   24       ]! R]"PH                   24       ]! RRR 7       ]! ]"PK                  4       4       ]! ]P:                  4      ^8  d}   ]P:                  ^,          t&]"PO                  ]
PP                  PR                  4      t"]! R!]PT                  PW                  ] 4       R"]& R24       ]"PY                  ]&]P2                  4       RRR4       R# R#   + '       g   i     R# ; i)%    )annotationsN)IOAnycast)Image	ImageFile)DeferredErrorFc                    V ^8  d   QhRRRR/# )   fr   returnint )formats   ":/usr/lib/python3.14/site-packages/PIL/SpiderImagePlugin.py__annotate__r   0   s      S S     c                l     \        V 4      pW,
          ^ 8X  d   ^# ^ #   \        \        3 d     ^ # i ; i)r   )r   
ValueErrorOverflowError)r   is   & r   isIntr   0   s6    F5A:& s    33c                    V ^8  d   QhRRRR/# )r   tztuple[float, ...]r   r   r   )r   s   "r   r   r   D   s      ' C r   c                &   RV ,           pR F  p\        W,          4      '       d   K   ^ # 	  \        V^,          4      pV\        9  d   ^ # \        V^,          4      p\        V^,          4      p\        V^,          4      pWTV,          8w  d   ^ # V# )c   r   )   r                  )r   r   iforms)r   hr   iformlabreclabbytlenbyts   &      r   isSpiderHeaderr*   D   sv    	A&QT{{ ' !IEF2ZF2ZF2ZF6/"Mr   c                    V ^8  d   QhRRRR/# )r   filenamestrr   r   r   )r   s   "r   r   r   X   s      C C r   c                   \        V R 4      ;_uu_ 4       pVP                  ^\4      pRRR4       \        P                  ! RX4      p\	        V4      pV^ 8X  d#   \        P                  ! RV4      p\	        V4      pV#   + '       g   i     L]; i)rbNz>23fz<23f)openreadstructunpackr*   )r,   fpr   r   hdrlens   &    r   isSpiderImager6   X   sl    	h		GGBK 
fa AAF{MM&!$"M 
	s   A<<B	c                      ] tR t^ctRtRtRtR R lt]R R l4       t	]R R	 l4       t
R
 R ltR R ltRR R llt]'       d   ^RIHt R R ltRtR# )SpiderImageFileSPIDERzSpider 2D imageFc                   V ^8  d   QhRR/# )r   r   Noner   )r   s   "r   r   SpiderImageFile.__annotate__h   s     9 9t 9r   c                	X   ^lpV P                   P                  V4      p ^V n        \        P                  ! RV4      p\        V4      pV^ 8X  d*   ^ V n        \        P                  ! RV4      p\        V4      pV^ 8X  d   Rp\        V4      h RT,           p\        T^,          4      pT^8w  d   Rp\        T4      h\        T^,          4      \        T^,          4      3T n	        \        T^,          4      T n
        \        T^,          4      T n        T P                  ^ 8X  d   T P                  ^ 8X  d   Tp	^T n        MT P                  ^ 8  du   T P                  ^ 8X  dd   \        T^,          4      \        T^,          4      ,          ^,          T n        Y@n        \        T^,          4      T n        T^,          p	^T n        MIT P                  ^ 8X  d,   T P                  ^ 8  d   Y@P                  ,           p	^T n
        MRp\        T4      hT P                  '       d	   RT n        MRT n        R	T n        \$        P&                  ! R
RT P(                  ,           YP                   4      .T n        T P                   T n        R#   \        P                   d   pRp\        T4      ThRp?ii ; i)   z>27fz<27fznot a valid Spider fileNznot a Spider 2D imagez inconsistent stack header valueszF;32BFzF;32FFrawr   r   r   )r4   r1   	bigendianr2   r3   r*   SyntaxErrorerrorr   _sizeistack	imgnumber_nimagesimgbytesr5   	stkoffsetrawmode_moder   _Tilesizetile_fp)
selfnr   r   r5   msger%   r&   offsets
   &         r   _openSpiderImageFile._openh   s   GGLLO	*DNfa(A#A&F{!"MM&!,'*{/!#&&  AIAaD	A:)Cc""2ZQqT*
!B%jQrU;;!! 3FDM[[1_1!4"JQqT2Q6DM K"JDMaZFDN[[A$..1"4nn,FDK4Cc"">>>#DL"DL
__UFTYY,>UV	77S || 	*+Cc")	*s   A-J J)J$$J)c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r<      s      # r   c                	    V P                   # NrH   rQ   s   &r   n_framesSpiderImageFile.n_frames   s    }}r   c                   V ^8  d   QhRR/# )r   r   boolr   )r   s   "r   r   r<      s     ! !T !r   c                	     V P                   ^8  # r   r\   r]   s   &r   is_animatedSpiderImageFile.is_animated   s    }}q  r   c                   V ^8  d   QhRR/# rY   r   )r   s   "r   r   r<      s     & &c &r   c                	N    V P                   ^8  d   ^ # V P                   ^,
          # rc   )rG   r]   s   &r   tellSpiderImageFile.tell   s     >>A>>A%%r   c                    V ^8  d   QhRRRR/# )r   framer   r   r;   r   )r   s   "r   r   r<      s      # $ r   c                	   V P                   ^ 8X  d   Rp\        V4      hV P                  V4      '       g   R# \        V P                  \
        4      '       d   V P                  P                  hV P                  WP                  V P                  ,           ,          ,           V n	        V P                  V n
        V P                  P                  V P                  4       V P                  4        R# )r   z#attempt to seek in a non-stack fileN)rF   EOFError_seek_check
isinstancerP   r	   exr5   rI   rJ   r4   seekrV   )rQ   rk   rS   s   && r   rq   SpiderImageFile.seek   s    ;;!7C3-&&dhh..((++udmm0K'LL((T^^$

r   c                    V ^8  d   QhRRRR/# )r   depthr   r   Image.Imager   )r   s   "r   r   r<      s     < <# < <r   c                	6  aa V P                  4       p\        V^ ,          \        4      '       g   Q h\        \        \        \        3,          V4      w  r4^oWC8w  d   WV,
          ,          oS) V,          oV P                  VV3R l4      P                  R4      # )r   c                $   < V S,          S,           # r[   r   )r   bms   &r   <lambda>.SpiderImageFile.convert2byte.<locals>.<lambda>   s    AEAIr   L)
getextremaro   floatr   tuplepointconvert)rQ   rt   extremaminimummaximumrx   ry   s   &&   @@r   convert2byteSpiderImageFile.convert2byte   s|    //#'!*e,,,,eUl 3W=7*+ABLzz-.66s;;r   ImageTkc                   V ^8  d   QhRR/# )r   r   zImageTk.PhotoImager   )r   s   "r   r   r<      s     D D0 Dr   c                	P    ^RI Hp VP                  V P                  4       RR7      # )r   r      )palette) r   
PhotoImager   )rQ   r   s   & r   tkPhotoImageSpiderImageFile.tkPhotoImage   s$    !!$"3"3"5s!CCr   )rP   rL   rH   rE   rB   r4   r5   rI   rG   rF   rK   rJ   rO   N)   )__name__
__module____qualname____firstlineno__r   format_description!_close_exclusive_fp_after_loadingrV   propertyr^   rd   rh   rq   r   TYPE_CHECKINGr   r   r   __static_attributes__r   r   r   r8   r8   c   sd    F*(-%9v   ! !&< D Dr   r8   c                    V ^8  d   QhRRRR/# )r   filelistzlist[str] | Noner   zlist[Image.Image] | Noner   )r   s   "r   r   r      s      . :R r   c                   V e   \        V 4      ^8  d   R# . pV  F  p\        P                  P                  V4      '       g   \	        RV 24       K8   \
        P                  ! V4      ;_uu_ 4       p\        V\        4      '       g   Q hVP                  4       pRRR4       TXP                  R&   TP                  T4       K  	  V#   + '       g   i     L6; i  \         d$    \        T4      '       g   \	        T R24        K  i ; i)zJcreate a list of :py:class:`~PIL.Image.Image` objects for use in a montageNzunable to find z is not a Spider image filer,   )lenospathexistsprintr   r0   ro   r8   r   	Exceptionr6   infoappend)r   	byte_imgsimgimbyte_ims   &    r   loadImageSeriesr      s    3x=1,Iww~~c""OC5)*	CB!"o6666//+ ! $'Z !   !  	 %%89:	s0   C2)C	C	CCC*D
	D
c                    V ^8  d   QhRRRR/# )r   r   ru   r   zlist[bytes]r   )r   s   "r   r   r      s     . . . .r   c                $   V P                   w  rV^,          p\        RV,          4      pRV,          ^ 8w  d
   V^,          pWC,          p\        V^,          4      pV^8  d   . # R.V,          pRV^&   \        V4      V^&   \        V4      V^&   RV^&   \        V4      V^&   \        V4      V^&   \        V4      V^&   \        V4      V^&   VR,          pVP                  R4       V Uu. uF  p\        P
                  ! RV4      NK  	  up# u upi )   i   g        g      ?:r   NNr   )rN   r   r~   r   r2   pack)	r   nsamnrowr)   r'   r(   nvalueshdrvs	   &        r   makeSpiderHeaderr      s    JDAXFFf}!_F&1*oG|	%'/C CF4[CF4[CFCFDkCGFmCGFmCGFmCG b'CJJsO),-AFKKQ---s   * Dc               (    V ^8  d   QhRRRRRRRR/# 	r   r   ru   r4   z	IO[bytes]r,   zstr | bytesr   r;   r   )r   s   "r   r   r     s.     T Tk Ty TK TD Tr   c           
     @   V P                   R 8w  d   V P                  R 4      p \        V 4      p\        V4      R8  d   Rp\	        V4      hVP                  V4       Rp\        P                  ! W\        P                  ! RRV P                  ,           ^ V4      .4       R# )r?   r   zError creating Spider headerzF;32NFr@   NrA   )
moder   r   r   OSError
writelinesr   _saverM   rN   )r   r4   r,   r   rS   rK   s   &&&   r   r   r     sz    	ww#~ZZ_
2
C
3x#~,cl MM#GOOBY__UFRWW4DaQRSr   c               (    V ^8  d   QhRRRRRRRR/# r   r   )r   s   "r   r   r   "  s(      [ i ; 4 r   c                   \         P                  P                  V4      ^,          p\        V\        4      '       d   VP                  4       MTp\        P                  ! \        P                  V4       \        WV4       R# )r   N)r   r   splitextro   bytesdecoder   register_extensionr8   r   r   )r   r4   r,   filename_extexts   &&&  r   _save_spiderr   "  sW    77##H-a0L#-lE#B#B,


C	_33S9	"(r   __main__z7Syntax: python3 SpiderImagePlugin.py [infile] [outfile]z$input image must be in Spider formatzimage: zformat: zsize: zmode: z
max, min:  )endzsaving a flipped version of z as )r      iiiir[   )-
__future__r   r   r2   systypingr   r   r   r   r   r   _utilr	   r   r   r$   r*   r6   r8   r   r   r   r   register_openr   register_saver   r   argvr   exitr,   r0   r   rN   r   r}   outfile	transpose	TransposeFLIP_LEFT_RIGHTr   basenamesaver   r   r   <module>r      s  F # 	  
        
$(nDi)) nDl6.<T    O**O <   O**L 9z
388}qGH
xx{H""45
	H		tn$%rwwi !rwwi !l$bmmosxx=1hhqkG eoo==>B.rww/?/?/I.J KYa! GGG_334# 
	  
		s   8C>II	