§
    A! h–©  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ ddlmZmZmZmZmZ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Z!e!rddlm"Z" ddl#m$Z$  G d„ de¦  «        Z%e%j&        Z'dOd„Z( G d„ dej        ¦  «        Z)ddddœZ*dPd„Z+ee,e-e.e/         ej        f         Z0dQd"„Z1dRd&„Z2dSd*„Z3 G d+„ d,e¦  «        Z4dTd-„Z5dUd0„Z6	 dVdWd2„Z7dXd4„Z8dYd8„Z9dUd9„Z:dZ;dZd;„Z<d[d=„Z=d\d>„Z>d]d?„Z?d^dB„Z@d_dD„ZAd`dF„ZB	 dadbdI„ZC	 dcdddL„ZD ejE        e)jF        e)e(¦  «          ejG        e)jF        e7¦  «          ejH        e)jF        e6¦  «          ejI        e)jF        dM¦  «          ejJ        e)jF        dN¦  «         dS )eé    )ÚannotationsN)ÚIntEnum)Úcached_property)ÚIOÚAnyÚLiteralÚ
NamedTupleÚUnionÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚ	ImageMathÚImageOpsÚImagePaletteÚImageSequence)Úi16le)Úo8)Úo16le)ÚDeferredErrorF)Ú_imaging)ÚBufferc                  ó   — e Zd ZdZdZdZdZdS )ÚLoadingStrategyz.. versionadded:: 9.1.0r   r   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚRGB_AFTER_FIRSTÚ RGB_AFTER_DIFFERENT_PALETTE_ONLYÚ
RGB_ALWAYS© ó    úLc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\PIL/GifImagePlugin.pyr   r   8   s$   € € € € € Ø!Ð!à€OØ'(Ð$Ø€J€J€Jr%   r   ÚprefixÚbytesÚreturnÚboolc                ó,   — |                       d¦  «        S )N)s   GIF87as   GIF89a)Ú
startswith)r'   s    r&   Ú_acceptr-   G   s   € Ø×ÒÐ3Ñ4Ô4Ð4r%   c                  óš   ‡ — e Zd ZdZdZdZdZdd„Zdd„Zdd„Z	e
dd„¦   «         Zedd„¦   «         Zdd„Zdd d„Zdˆ fd„Zdd„Zdd„Zˆ xZS )!ÚGifImageFileÚGIFzCompuserve GIFFNr)   úbytes | Nonec                óŽ   — | j                              d¦  «        }|r(|d         r | j                              |d         ¦  «        S d S )Nr   r   )ÚfpÚread)ÚselfÚss     r&   ÚdatazGifImageFile.dataW   sC   € ØŒG�LŠL˜‰OŒOˆØð 	&��1”ð 	&Ø”7—<’<  !¤Ñ%Ô%Ð%Øˆtr%   Úpr(   r*   c                ó°   — t          dt          |¦  «        d¦  «        D ]6}|dz  ||         cxk    r||dz            cxk    r||dz            k    sn  dS Œ7dS )Nr   é   r   r   TF)ÚrangeÚlen)r5   r8   Úis      r&   Ú_is_palette_neededzGifImageFile._is_palette_needed]   sy   € Ý�q�#˜a™&œ& !Ñ$Ô$ð 	ð 	ˆAØ˜‘F˜a œdÐ:Ð:Ò:Ð: a¨¨A©¤hÐ:Ð:Ò:Ð:°!°A¸±E´(Ò:Ð:Ð:Ð:Ø�t�tð ;àˆur%   ÚNonec                óh  — | j                              d¦  «        }t          |¦  «        sd}t          |¦  «        ‚|d d…         | j        d<   t          |d¦  «        t          |d¦  «        f| _        |d         }|dz  dz   }|d	z  re|d
         | j        d<   | j                              d|z  ¦  «        }|                      |¦  «        r#t          j	        d|¦  «        }|x| _
        | _        | j         | _        | j                              ¦   «         | _        d | _        |                      d¦  «         d S )Né   znot a GIF fileé   Úversioné   é
   é   r   é€   é   Ú
backgroundr:   ÚRGBr   )r3   r4   r-   ÚSyntaxErrorÚinfoÚi16Ú_sizer>   r   ÚrawÚglobal_paletteÚpaletteÚ_fpÚtellÚ_GifImageFile__rewindÚ	_n_framesÚ_seek)r5   r6   ÚmsgÚflagsÚbitsr8   s         r&   Ú_openzGifImageFile._openc   s  € àŒG�LŠL˜ÑÔˆÝ�q‰zŒzð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"à   ! œuˆŒ	�)ÑÝ˜˜A‘Y”Y¥ A q¡	¤	Ð)ˆŒ
Ø�"”ˆØ˜‘	˜Q‰ˆà�3‰;ð 	7à&'¨¤eˆDŒI�lÑ#à”—’˜Q $™YÑ'Ô'ˆAØ×&Ò& qÑ)Ô)ð 7Ý Ô$ U¨AÑ.Ô.�Ø56Ð6�Ô# d¤là”7ˆŒØœŸš™œˆŒØ%)ˆŒØ�
Š
�1‰Œˆˆˆr%   Úintc                ó$  — | j         €ƒ|                      ¦   «         }	 	 |                      |                      ¦   «         dz   d¦  «         Œ,# t          $ r |                      ¦   «         dz   | _         Y nw xY w|                      |¦  «         | j         S )NTr   F©rU   rS   rV   ÚEOFErrorÚseek)r5   Úcurrents     r&   Ún_frameszGifImageFile.n_frames}   s’   € àŒ>Ð!Ø—i’i‘k”kˆGð1ð7Ø—J’J˜tŸyšy™{œ{¨Q™°Ñ6Ô6Ð6ð7øåð 1ð 1ð 1Ø!%§¢¡¤¨q¡�”��ð1øøøà�IŠI�gÑÔÐØŒ~Ðs   �-A
 Á
&A3Á2A3c                óÜ   — | j         �| j         dk    S |                      ¦   «         }|rdS 	 |                      dd¦  «         d}n# t          $ r d}Y nw xY w|                      |¦  «         |S )Nr   TFr]   )r5   r`   Úis_animateds      r&   rc   zGifImageFile.is_animated‰   s�   € àŒ>Ð%Ø”> QÒ&Ð&à—)’)‘+”+ˆØð 	Ø�4ð	 Ø�JŠJ�q˜%Ñ Ô Ð ØˆKˆKøÝð 	 ð 	 ð 	 ØˆKˆKˆKð	 øøøð 	�	Š	�'ÑÔÐØÐs   ¬A ÁAÁAÚframec                ój  — |                       |¦  «        sd S || j        k     rd | _        |                      d¦  «         | j        }t	          | j        dz   |dz   ¦  «        D ]Q}	 |                      |¦  «         Œ# t
          $ r,}|                      |¦  «         d}t          |¦  «        |‚d }~ww xY wd S )Nr   r   úno more images in GIF file)Ú_seek_checkÚ_GifImageFile__frameÚ_imrV   r;   r^   r_   )r5   rd   Ú
last_frameÚfÚerW   s         r&   r_   zGifImageFile.seek›   sÏ   € Ø×Ò Ñ&Ô&ð 	ØˆFØ�4”<ÒÐØˆDŒHØ�JŠJ�q‰MŒMˆMà”\ˆ
Ý�t”| aÑ'¨°©Ñ3Ô3ð 	+ð 	+ˆAð+Ø—
’
˜1‘”��øÝð +ð +ð +Ø—	’	˜*Ñ%Ô%Ð%Ø2�Ý˜s‘m”m¨Ð*øøøøð+øøøð	+ð 	+s   Á$A:Á:
B0Â'B+Â+B0TÚupdate_imagec                ó  ‡ — t          ‰ j        t          ¦  «        r‰ j        j        ‚|dk    rMd‰ _        d ‰ _        d‰ _        ‰ j                             ‰ j        ¦  «         d‰ _	        d‰ j
        v r‰ j
        d= n‰ j        r|r‰                      ¦   «          |‰ j        dz   k    rd|› �}t          |¦  «        ‚‰ j        ‰ _        ‰ j        rO‰ j                             ‰ j        ¦  «         ‰                      ¦   «         r	 ‰                      ¦   «         °d‰ _        ‰ j                             d¦  «        }|r|dk    rd}t#          |¦  «        ‚d }i }d }d }d }		 |s‰ j                             d¦  «        }|r|dk    r�n|d	k    �r…‰ j                             d¦  «        }‰                      ¦   «         }
|d         d
k    rA|
�?|
d         }|dz  r|
d         }t%          |
d¦  «        dz  |d<   d|z  }|dz	  }|r|‰ _	        nß|d         dk    r?d}|
r||
z  }‰                      ¦   «         }
|
°d|v r|dxx         d|z   z  cc<   n||d<   d }Œô|d         dk    rˆ|dk    r‚|
�€|
‰ j                             ¦   «         f|d<   |
                     d¦  «        rM‰                      ¦   «         }
|
r7t+          |
¦  «        dk    r$|
d         dk    rt%          |
d¦  «        ‰ j
        d<   ‰                      ¦   «         r	 ‰                      ¦   «         °�nŒ|dk    �r…‰ j                             d¦  «        }t%          |d¦  «        t%          |d¦  «        }}|t%          |d¦  «        z   |t%          |d¦  «        z   }}|‰ j        d         k    s|‰ j        d         k    rV|rTt/          |‰ j        d         ¦  «        t/          |‰ j        d         ¦  «        f‰ _        t3          j        ‰ j        ¦  «         ||||f}	|d         }|dz  dk    }|dz  rR|dz  dz   }‰ j                             d|z  ¦  «        }‰                      |¦  «        rt9          j        d|¦  «        }nd }‰ j                             d¦  «        d         }‰ j                             ¦   «         ‰ _        nd }�ŒB|€d!}t#          |¦  «        ‚|‰ _        |sd S g ‰ _        ‰ j        r%‰ j                             ‰ j        ‰ j         ¦  «         |�|n‰ j!        ‰ _"        |‰ _#        |dk    rl‰ j"        r)tH          tJ          j&        k    r|�d"nd‰ _'        nd#‰ _'        nd$‰ _'        |r|‰ _(        nñ‰ j!        rdd%l)m)}  |‰ j!        ¦  «        ‰ _(        nÎd ‰ _(        nÆ‰ j*        d#k    r»tH          tJ          j+        k    s|r¤d&‰ j
        v re‰ j         ,                    ‰ j
        d&         d¦  «         ‰ j         -                    d"t2          j.        j/        ¦  «        ‰ _        d"‰ _'        ‰ j
        d&= n6d‰ _'        ‰ j         -                    dt2          j.        j/        ¦  «        ‰ _        d1ˆ fd+„}d ‰ _        |	‰ _         ‰ j         �r€‰ j	        dk    �rt	 ‰ j	        dk    r»‰ j         \  }}}}||z
  ||z
  f}t3          j        |¦  «         d#}‰ j
         0                    d&|¦  «        }|�‰ j*        d,v rd"} ||¦  «        d-z   }n1‰ j
         0                    d.d¦  «        }‰ j*        d,v rd} ||¦  «        }t2          j1         2                    |||¦  «        ‰ _        nœ‰ j3        �&‰  4                    ‰ j        ‰ j         ¦  «        ‰ _        no|�m‰ j         \  }}}}||z
  ||z
  f}t3          j        |¦  «         d#}|}‰ j*        d,v rd"} ||¦  «        d-z   }t2          j1         2                    |||¦  «        ‰ _        n# tj          $ r Y nw xY w|�^d}|�1|dk    r tH          tJ          j&        k    r
|‰ j
        d&<   n‰ j*        d,vr|}tm          j7        d/||||f‰ j        |||f¦  «        g‰ _        | 0                    d¦  «        r|d         ‰ j
        d<   d0D ](}||v r||         ‰ j
        |<   Œ|‰ j
        v r‰ j
        |= Œ)d S )2Nr   éÿÿÿÿÚcommentr   zcannot seek to frame ó   ;rf   Tó   !éù   r:   rE   Údurationé   r   éþ   r%   ó   
éÿ   Ú	extensionó   NETSCAPE2.0Úloopó   ,é	   é   rB   rD   é@   rG   rF   rJ   Fzimage not found in GIF frameÚRGBAÚPÚL)ÚcopyÚtransparencyÚcolorr[   r)   útuple[int, int, int]c           	     ó  •— ‰j         rz| dz  dz   t          ‰j         j        ¦  «        k    rd} t          t          t
          t
          t
          f         t	          ‰j         j        | dz  | dz  dz   …         ¦  «        ¦  «        S | | | fS )Nr:   r   )Ú_frame_paletter<   rQ   r   Útupler[   )r…   r5   s    €r&   Ú_rgbz GifImageFile._seek.<locals>._rgb]  sŠ   ø€ ØÔ"ð -Ø˜1‘9˜q‘=¥3 tÔ':Ô'BÑ#CÔ#CÒCÐCØ�EÝÝ�#�s¥C˜-Ô(Ý˜$Ô-Ô5°e¸a±iÀ%È!Á)ÈaÁ-Ð6OÔPÑQÔQñô ð ð
 ˜u eÐ,Ð,r%   ©rJ   r€   )r   rI   Úgif)rt   ry   )r…   r[   r)   r†   )8Ú
isinstancerR   r   ÚexÚ_GifImageFile__offsetÚdisposerh   r_   rT   Údisposal_methodrL   ÚtileÚloadÚ
ValueErrorr3   r7   r4   r^   rM   rS   r,   r<   ÚsizeÚmaxrN   r   Ú_decompression_bomb_checkr>   r   rO   ÚimÚpasteÚdispose_extentrP   rˆ   Ú_frame_transparencyÚLOADING_STRATEGYr   r#   Ú_moderQ   rƒ   Úmoder"   ÚputpalettealphaÚconvertÚDitherÚFLOYDSTEINBERGÚgetÚcoreÚfillri   Ú_cropÚAttributeErrorr   Ú_Tile)r5   rd   rm   rW   r6   rQ   rL   Úframe_transparencyÚ	interlaceÚframe_dispose_extentÚblockrX   Údispose_bitsrp   Úx0Úy0Úx1Úy1rY   r8   rƒ   rŠ   Údispose_sizeÚdispose_moder…   r„   Úks   `                          r&   rV   zGifImageFile._seek«   si	  ø€ Ý�d”h¥Ñ.Ô.ð 	Ø”(”+ÐØ�AŠ:ˆ:àˆDŒMØ8<ˆDŒLØˆDŒLØŒH�MŠM˜$œ-Ñ(Ô(Ð(Ø#$ˆDÔ Ø˜DœIÐ%Ð%Ø”I˜iÐ(øð Œyð ˜\ð Ø—	’	‘”�à�D”L 1Ñ$Ò$Ð$Ø1¨%Ð1Ð1ˆCÝ˜S‘/”/Ð!à”(ˆŒØŒ=ð 	àŒG�LŠL˜œÑ'Ô'Ð'Ø—)’)‘+”+ð Øð —)’)‘+”+ð àˆDŒMàŒG�LŠL˜‰OŒOˆØð 	 �A˜’I�IØ.ˆCÝ˜3‘-”-ÐàEIˆà!ˆØ!ÐØˆ	Ø#ÐðY	Øð $Ø”G—L’L ‘O”O�Øð U˜˜Tš	˜	Ùà�d’‘ð ”G—L’L ‘O”O�ØŸ	š	™œ�Ø�Q”4˜3’;�; 5Ð#4ð " !œH�EØ˜q‘yð 6Ø-2°1¬XÐ*Ý'*¨5°!¡}¤}°rÑ'9�D˜Ñ$ð $.°Ñ#5�LØ#/°1Ñ#4�LØ#ð <ð
 0<˜Ô,øØ�q”T˜S’[�[ð "�Gð  ð ,Ø 5Ñ(˜Ø $§	¢	¡¤˜ð  ð ,ð ! DÐ(Ð(à˜Y˜˜œ¨5°7©?Ñ:˜˜™˜à*1˜˜Y™Ø�AØØ�q”T˜S’[�[ U¨a¢Z Z°EÐ4Eð ).¨t¬w¯|ª|©~¬~Ð(=�D˜Ñ%Ø×'Ò'¨Ñ7Ô7ð >Ø $§	¢	¡¤˜Ø ð >¥S¨¡Z¤Z°1¢_ _¸¸q¼ÀQº¸Ý03°E¸1±´˜DœI fÑ-Ø—i’i‘k”kð Øð —i’i‘k”kð ùð �d’‘ð ”G—L’L ‘O”O�õ ˜Q ™œ¥C¨¨1¡I¤I�B�Ø�c ! Q™iœi™¨­c°!°Q©i¬i©�B�Ø˜œ 1œÒ%Ð%¨¨d¬i¸¬lÒ):Ð):ÀÐ):Ý!$ R¨¬°1¬Ñ!6Ô!6½¸BÀÄ	È!ÄÑ8MÔ8MÐ!M�D”JÝÔ3°D´JÑ?Ô?Ð?Ø')¨2¨r°2 ~Ð$Ø˜!œ�à" R™Z¨AÒ-�	à˜3‘;ð (Ø! A™I¨™?�DØœŸš Q¨$¡YÑ/Ô/�AØ×.Ò.¨qÑ1Ô1ð (Ý".Ô"2°5¸!Ñ"<Ô"<˜˜à"'˜ð ”w—|’| A‘” qÔ)�Ø $¤§¢¡¤�”ØØˆAñsY	ðv ÐØ0ˆCÝ˜3‘-”-ÐàˆŒØð 	ØˆFàˆŒ	àŒ<ð 	=ØŒG�MŠM˜$œ,¨Ô(;Ñ<Ô<Ð<à)0Ð)<˜g˜gÀ$ÔBUˆÔØ#5ˆÔ Ø�AŠ:ˆ:ØÔ"ð !Ý#¥Ô'AÒAÐAØ+=Ð+I  Èu�D”J�Jà!$�D”J�Jà �”
àð $Ø&�”�ØÔ$ð $Ø%Ð%Ð%Ð%Ð%Ð%à#˜t DÔ$7Ñ8Ô8�”�à#�”�àŒy˜CÒÐå$­Ô(XÒXÐXØð Yð &¨¬Ð2Ð2Øœ×/Ò/°´	¸.Ô0IÈ1ÑMÔMÐMØ"&¤'§/¢/°&½%¼,Ô:UÑ"VÔ"V˜œØ%+˜œ
Ø œI nÐ5Ð5à%*˜œ
Ø"&¤'§/¢/°%½¼Ô9TÑ"UÔ"U˜œð		-ð 		-ð 		-ð 		-ð 		-ð 		-ð ˆŒØ@TˆÔØÔñ +	 4Ô#7¸1Ò#<Ñ#<ð*ØÔ'¨1Ò,Ð,ð &*Ô%8‘N�B˜˜B Ø$&¨¡G¨R°"©WÐ#5�LåÔ3°LÑAÔAÐAð $'�LØ œIŸMšM¨.Ð:LÑMÔM�EØÐ(Øœ9¨Ð7Ð7Ø+1˜LØ$( D¨¡K¤K°$Ñ$6˜Eøà $¤	§¢¨l¸AÑ >Ô >˜Øœ9¨Ð7Ð7Ø+0˜LØ$( D¨¡K¤K˜EÝ#(¤:§?¢?°<ÀÈuÑ#UÔ#U�D”L�Lð ”xÐ+à'+§z¢z°$´'¸4Ô;NÑ'OÔ'O˜œ˜Ø+Ð7Ø)-Ô)<™˜˜B  BØ(*¨R©°°b±Ð'9˜åÔ7¸ÑEÔEÐEØ'*˜Ø 2˜Øœ9¨Ð7Ð7Ø+1˜LØ$( DÐ);Ñ$<Ô$<¸tÑ$C˜EÝ',¤z§¢Ø(¨,¸ñ(ô (˜œøøõ "ð ð ð Ø�ðøøøð Ð ØˆLØ!Ð-Ø˜A’:�:Ý'­?Ô+EÒEÐEØ4F˜œ	 .Ñ1øØ”Y oÐ5Ð5Ø#5�Lå”ØØ˜˜R Ð$Ø”MØ˜9 lÐ3ñ	ô ðˆDŒIð �8Š8�IÑÔð 	3Ø#'¨	¤?ˆDŒI�iÑ Ø*ð 	!ð 	!ˆAØ�DˆyˆyØ# Aœw�”	˜!‘�Ø�d”i��Ø”I˜a�Løð		!ð 	!s   Ù%E"_ ß
_ß_c                óh  •— | j         rdnd}d | _        | j        dk    r8| j        �0t          j                             || j        | j        ¦  «        | _        n€| j	        dv rw| j        | _        | j         r]t          j                             d| j        | j        pd¦  «        | _         | j        j
        dg| j                              ¦   «         ¢R Ž  nd | _        | j        s¦| j        �Ÿ| j        | j        j        k    rŠt          j                             | j        j	        | j        ¦  «        }| j         r% |j
        dg| j                              ¦   «         ¢R Ž  |                     | j        d| j        j        z   ¦  «         || _        || _        d | _         t          ¦   «                              ¦   «          d S )Nr�   r‚   r   r‹   rJ   ©r   r   )rˆ   Ú_prev_imrh   r›   r   r¤   r¥   r•   r˜   rž   Ú
putpaletteÚgetdatari   r™   r�   ÚsuperÚload_prepare)r5   Ú	temp_modeÚexpanded_imÚ	__class__s      €r&   r»   zGifImageFile.load_prepare°  s—  ø€ ØÔ.Ð7�C�C°Cˆ	ØˆŒØŒ<˜1ÒÐØÔ'Ð3Ýœ*Ÿ/š/Ø˜tœy¨$Ô*Bñô �”øð ŒY˜/Ð)Ð)Ø œGˆDŒMØÔ"ð  Ýœ*Ÿ/š/¨#¨t¬y¸$Ô:RÐ:WÐVWÑXÔX�”Ø"�”Ô" 5ÐI¨4Ô+>×+FÒ+FÑ+HÔ+HÐIÐIÐIÐIÐIà�”ØŒ}ð 	" ¤Ð!5¸$¼)ÀtÄwÄ|Ò:SÐ:SÝœ*Ÿ/š/¨$¬'¬,¸¼	ÑBÔBˆKØÔ"ð NØ&�Ô& uÐM¨tÔ/B×/JÒ/JÑ/LÔ/LÐMÐMÐMÐMØ×Ò˜dœg v°´´Ñ'<Ñ=Ô=Ð=à!ˆDŒGØˆŒ
Ø"ˆÔå‰Œ×ÒÑÔÐÐÐr%   c                ó4  — | j         dk    rŒ| j        dk    rt          t          j        k    rj| j        �(| j                             | j        d¦  «         d| _        nd| _        | j         	                    | j        t          j        j        ¦  «        | _        d S | j        sd S | j        | j        j        k    rÍ| j        �&t          j                             d| j        ¦  «        }nht          j                             d| j        ¦  «        }|                     dd| j                             ¦   «         ¦  «         | 	                    d¦  «        }|                     | j        d| j        j        z   ¦  «         || _        | j        €J ‚| j        �g| j        dk    r!| j                             d| j        ¦  «        }nU| j                             | j        d¦  «         | j         	                    d¦  «        }n| j         	                    d¦  «        }| j        €J ‚|                      || j        ¦  «        }| j        | _        | j        j        | _        |j        dv r#| j                             || j        |¦  «         d S | j                             || j        ¦  «         d S )	Nr   r�   r€   rJ   r¶   r‚   ÚLA)rÀ   r€   )rh   rž   rœ   r   r#   r›   r˜   rŸ   r�   r    r   r¡   r¢   r·   r•   r¤   r¥   r¸   Ú
getpaletter™   Úconvert_transparentrš   r¦   )r5   r½   Úframe_ims      r&   Úload_endzGifImageFile.load_endË  sF  € ØŒ<˜1ÒÐØŒy˜CÒÐÕ$4½Ô8RÒ$RÐ$RØÔ+Ð7Ø”G×+Ò+¨DÔ,DÀaÑHÔHÐHØ!'�D”J�Jà!&�D”JØœ'Ÿ/š/¨$¬)µU´\Ô5PÑQÔQ�”ØˆFØŒ}ð 	ØˆFØŒ9˜œÔ*Ò*Ð*ØÔ'Ð3Ý#œjŸošo¨f°d´iÑ@Ô@��å#œjŸošo¨c°4´9Ñ=Ô=�Ø×&Ò& u¨e°T´W×5GÒ5GÑ5IÔ5IÑJÔJÐJØ)×1Ò1°%Ñ8Ô8�Ø×Ò˜dœm¨V°d´mÔ6HÑ-HÑIÔIÐIà'ˆDŒMØ”=Ð,Ð,Ð,ØÔ#Ð/ØŒy˜CÒÐØœ7×6Ò6°t¸TÔ=UÑVÔV��à”×'Ò'¨Ô(@À!ÑDÔDÐDØœ7Ÿ?š?¨6Ñ2Ô2��à”w—’ uÑ-Ô-ˆHàÔ"Ð.Ð.Ð.Ø—:’:˜h¨Ô(;Ñ<Ô<ˆà”-ˆŒØ”W”\ˆŒ
ØŒ=˜NÐ*Ð*ØŒG�MŠM˜( DÔ$7¸ÑBÔBÐBÐBÐBàŒG�MŠM˜( DÔ$7Ñ8Ô8Ð8Ð8Ð8r%   c                ó   — | j         S ©N)rh   )r5   s    r&   rS   zGifImageFile.tellõ  s
   € ØŒ|Ðr%   )r)   r1   )r8   r(   r)   r*   )r)   r?   )r)   r[   )r)   r*   )rd   r[   r)   r?   )T)rd   r[   rm   r*   r)   r?   )r   r   r   ÚformatÚformat_descriptionÚ!_close_exclusive_fp_after_loadingrP   r7   r>   rZ   Úpropertyra   r   rc   r_   rV   r»   rÄ   rS   Ú__classcell__)r¾   s   @r&   r/   r/   P   s+  ø€ € € € € Ø€FØ)ÐØ(-Ð%à€Nðð ð ð ðð ð ð ðð ð ð ð4 ð	ð 	ð 	ñ „Xð	ð ðð ð ñ „_ðð"+ð +ð +ð +ð C!ð C!ð C!ð C!ð C!ðJð ð ð ð ð ð6(9ð (9ð (9ð (9ðTð ð ð ð ð ð ð r%   r/   r‚   r�   )Ú1r‚   r�   r˜   úImage.Imagec                óž  — | j         t          v r|                      ¦   «          | S t          j        | j         ¦  «        dk    rx|                      dt          j        j        ¬¦  «        } | j        €J ‚| j        j         dk    r7| j        j	        D ]*}|d         dk    r| j        j	        |         | j
        d<    nŒ+| S |                      d	¦  «        S )
a  
    Takes an image (or frame), returns an image in a mode that is appropriate
    for saving in a Gif.

    It may return the original image, or it may return an image converted to
    palette or 'L' mode.

    :param im: Image object
    :returns: Image object
    rJ   r�   ©rQ   Nr€   r:   r   r„   r‚   )rž   ÚRAWMODEr“   r   Úgetmodebaser    ÚPaletteÚADAPTIVErQ   ÚcolorsrL   )r˜   Úrgbas     r&   Ú_normalize_moderÖ      sÊ   € ð 
„w•'ÐÐØ
�Š‰	Œ	ˆ	Øˆ	ÝÔ˜œÑ!Ô! UÒ*Ð*Ø�ZŠZ˜¥U¤]Ô%;ˆZÑ<Ô<ˆØŒzÐ%Ð%Ð%ØŒ:Œ?˜fÒ$Ð$Øœ
Ô)ð ð �Ø˜”7˜a’<�<Ø.0¬jÔ.?ÀÔ.E�B”G˜NÑ+Ø�Eð  ð ˆ	Ø�:Š:�c‰?Œ?Ðr%   rQ   ú_Palette | NonerL   údict[str, Any]c                ó´  — d}|rgt          |t          t          t          f¦  «        rt          |dd…         ¦  «        }t          |t          j        ¦  «        rt          |j        ¦  «        }| j        dk    r+|s(|                      d¦  «        }|€J ‚t          |¦  «        }nC|s&t          d„ t          d¦  «        D ¦   «         ¦  «        }t	          j        d|¬¦  «        | _        |€J ‚|r÷g }| j        €J ‚t          dt          |¦  «        d¦  «        D ]V}t          |||dz   …         ¦  «        }| j        j                             |¦  «        }||v rd}|                     |¦  «         ŒWt          |¦  «        D ]1\  }}|€*t          t          |¦  «        ¦  «        D ]}	|	|vr|	||<    nŒŒ2g }
|D ]}|€J ‚|
                     |¦  «         Œ|                      |
¦  «        } nat!          | |¦  «        }|�O|                      ||¦  «        } d	|v r3	 |                     |d	         ¦  «        |d	<   n# t$          $ r |d	= Y nw xY w| S | j        €J ‚|| j        _        | S )
at  
    Normalizes the palette for image.
      - Sets the palette to the incoming palette, if provided.
      - Ensures that there's a palette for L mode images
      - Optimizes the palette if necessary/desired.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: Image object
    Ni   r�   c              3  ó    K  — | ]	}|d z  V — Œ
dS )r:   Nr$   )Ú.0r=   s     r&   ú	<genexpr>z%_normalize_palette.<locals>.<genexpr>:  s&   è è € Ð&BÐ&B°! q¨A¡vÐ&BÐ&BÐ&BÐ&BÐ&BÐ&Br%   rJ   rÏ   r   r:   r„   )r�   r(   Ú	bytearrayÚlistr   rQ   rž   rÁ   r;   r<   r‰   rÔ   r£   ÚappendÚ	enumerateÚremap_paletteÚ_get_optimizeÚindexr”   )r˜   rQ   rL   Úsource_paletteÚ
im_paletteÚused_palette_colorsr=   Úsource_colorrã   ÚjÚdest_mapÚoptimized_palette_colorss               r&   Ú_normalize_paletterë     så  € ð €NØð 8å�g¥¥yµ$Ð7Ñ8Ô8ð 	6Ý& w¨t°¨t¤}Ñ5Ô5ˆNÝ�g�|Ô8Ñ9Ô9ð 	8Ý& w¤Ñ7Ô7ˆNà	„w�#‚~€~Øð 	3ØŸš tÑ,Ô,ˆJØÐ)Ð)Ð)Ý& zÑ2Ô2ˆNøàð 	CÝ&Ð&BÐ&Bµu¸S±z´zÐ&BÑ&BÔ&BÑBÔBˆNÝ!Ô.¨u¸nÐMÑMÔMˆŒ
ØÐ%Ð%Ð%àð Ø02ÐØŒzÐ%Ð%Ð%Ý�q�#˜nÑ-Ô-¨qÑ1Ô1ð 	.ð 	.ˆAÝ  °°A¸±E°	Ô!:Ñ;Ô;ˆLØ”JÔ%×)Ò)¨,Ñ7Ô7ˆEØÐ+Ð+Ð+Ø�Ø×&Ò& uÑ-Ô-Ð-Ð-Ý!Ð"5Ñ6Ô6ð 	ð 	‰HˆAˆuØˆ}Ý�sÐ#6Ñ7Ô7Ñ8Ô8ð ð �AØÐ 3Ð3Ð3Ø12Ð+¨AÑ.Ø˜ð 4øð !ˆØ(ð 	#ð 	#ˆEØÐ$Ð$Ð$Ø�OŠO˜EÑ"Ô"Ð"Ð"Ø×Ò˜hÑ'Ô'ˆˆå#0°°TÑ#:Ô#:Ð Ø#Ð/Ø×!Ò!Ð":¸NÑKÔKˆBØ Ð%Ð%ð-Ø+C×+IÒ+IØ˜^Ô,ñ,ô ,�D˜Ñ(Ð(øõ "ð -ð -ð -Ø˜^Ð,Ð,Ð,ð-øøøàˆIàŒ:Ð!Ð!Ð!Ø'€B„JÔØ€Is   ÈH. È.H>È=H>r3   ú	IO[bytes]r?   c                óv  — t          | ¦  «        }|j                             ¦   «         D ]5\  }}t          |t          ¦  «        r| j                             ||¦  «         Œ6t          ||| j        ¦  «        }t          || j        ¦  «        D ]}| 	                    |¦  «         Œd}t          | ¦  «        r|dz  }t          || d|¦  «         dt          | ¦  «        f|_        t          j        ||t          j        dd| j        z   dt"          |j                 ¦  «        g¦  «         | 	                    d¦  «         d S )Nr   r   r¶   rD   rŒ   ó    )rÖ   rL   Úitemsr�   ÚstrÚencoderinfoÚ
setdefaultrë   Ú_get_global_headerÚwriteÚget_interlaceÚ_write_local_headerÚencoderconfigr   Ú_saver¨   r•   rÐ   rž   )r˜   r3   rQ   Úim_outr´   Úvr6   rX   s           r&   Ú_write_single_framerû   d  s6  € õ
 ˜RÑ Ô €FØ”×!Ò!Ñ#Ô#ð ,ð ,‰ˆˆ1Ý�a�ÑÔð 	,ØŒN×%Ò% a¨Ñ+Ô+Ð+øÝ ¨°´Ñ@Ô@€Få ¨¬Ñ7Ô7ð ð ˆØ
�Š�‰Œˆˆð €EÝ�RÑÔð Ø˜‘
ˆÝ˜˜B ¨Ñ.Ô.Ð.à�}¨RÑ0Ô0Ð1€FÔÝ„OØ�•Y”_ U¨F°R´WÑ,<¸aÅÈÌÔAUÑVÔVÐWñô ð ð ‡H‚HˆU�O„O€O€O€Or%   Úbase_imÚim_frameú4tuple[Image.Image, tuple[int, int, int, int] | None]c                óð   — d„ | |fD ¦   «         }|d         |d         k    r*|                      d¦  «        }|                       d¦  «        } t          j        || ¦  «        }||                     d¬¦  «        fS )Nc                óR   — g | ]$}|j         rt          |j         j         ¦  «        nd ‘Œ%S )r%   )rQ   r(   )rÛ   r˜   s     r&   ú
<listcomp>z_getbbox.<locals>.<listcomp>ƒ  s>   € ð ð ð Ø=? R¤ZÐ8�ˆbŒjÔ Ñ!Ô!Ð!°Sðð ð r%   r   r   r€   F)Ú
alpha_only)r    r   Úsubtract_moduloÚgetbbox)rü   rý   Úpalette_bytesÚdeltas       r&   Ú_getbboxr  €  s‹   € ðð ØDKÈXÐCVðñ ô €Mð �QÔ˜=¨Ô+Ò+Ð+Ø×#Ò# FÑ+Ô+ˆØ—/’/ &Ñ)Ô)ˆÝÔ& x°Ñ9Ô9€EØ�%—-’-¨5�-Ñ1Ô1Ð1Ð1r%   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_FramerÍ   r˜   z tuple[int, int, int, int] | NoneÚbboxrØ   rñ   N)r   r   r   Ú__annotations__r$   r%   r&   r	  r	  �  s3   € € € € € € Ø€O€O�OØ*Ð*Ð*Ñ*ØÐÐÑÐÐr%   r	  c           	     ó   — | j                              d¦  «        }| j                              d| j                             d¦  «        ¦  «        }g }d }d}d }t          j        | g| j                              dg ¦  «        ¦  «        D �]}	t          j        |	¦  «        D �]}
t          |
                     ¦   «         ¦  «        }
|dk    rV|
j         	                    ¦   «         D ]<\  }}|dk    rŒt          |t          ¦  «        r| j                              ||¦  «         Œ=| j                              ¦   «         }d|
j        v r!|                     d|
j        d         ¦  «         t          |
||¦  «        }
t          |t          t          f¦  «        r||         |d<   n|€d|
j        v r|
j        d         |d<   t          |t          t          f¦  «        r||         |d<   |dz  }d }|�r‘|�rŽt!          ||
¦  «        \  }}|s8|                     d¦  «        r!|d         j         dxx         |d         z  cc<   �Œ˜|d         j                              d¦  «        dk    r·| j                              d| j                             d¦  «        ¦  «        }|�v|€\t#          |
|¦  «        }t%          j        d	|
j        |¦  «        }|d         j        j        }|€J ‚|                     ||j        ¦  «         t!          ||
¦  «        d         }�ntd
|
j        z   }�nh|                     d¦  «        �rO|
j        dk    �rCd|vr8|
j        €J ‚	 |
j                             |
¦  «        |d<   n# t4          $ r Y nw xY wd|v �r|
                     ¦   «         }t%          j        d	|j        |d         ¦  «        }|j        dk    r4|                     ¦   «         \  }}}}t9          j        d„ ||||¬¦  «        }ne|j        d	k    rCt%          j        d|j        ¦  «        }|                     |                     ¦   «         ¦  «         |}t9          j        d„ |¬¦  «        }|                      |tC          j"        |¦  «        ¬¦  «         nd }|
}| #                    tI          |p|
||¦  «        ¦  «         �Œ�ŒtK          |¦  «        dk    r&d| j         v r|d         j         d         | j         d<   dS |D ]Ÿ}|j        }
|j&        s0tO          |
|j         ¦  «        D ]}| (                    |¦  «         Œd
}nH|s
d|j         d<   |j&        d
|
j        z   k    r|
 )                    |j&        ¦  «        }
|j&        d d…         }tU          ||
||j         ¦  «         Œ dS )Nrt   Údisposalr   Úappend_imagesr„   r   ro   r   r�   r¶   ÚoptimizerÌ   r€   c                ó¼   —  | d          | d          | d          | d         | d         | d         ¦  «        | d         ¦  «        | d         ¦  «        dz  d¦  «        S )	Nr    r–   ÚrÚgÚbÚarx   rÌ   r$   ©Úargss    r&   ú<lambda>z(_write_multiple_frames.<locals>.<lambda>Ý  sv   € ¨_¨T°)¬_Ø$/ D¨¤KØ(3¨¨U¬Ø,7¨D°¬K¸¸S¼	À4ÈÄ9Ñ,MÔ,MÈtÐTWÌyñ)*ô )*ð )-¨S¬	ñ	%&ô %&ð '*ñ%*ð %(ñ	."ô 	."€ r%   )r  r  r  r  r‚   c                ó8   —  | d         | d         dz  d¦  «        S )Nr    r˜   rx   rÌ   r$   r  s    r&   r  z(_write_multiple_frames.<locals>.<lambda>ó  s   € ¨_¨T°)¬_¸TÀ$¼ZÈ#Ñ=MÈsÑ-SÔ-S€ r%   )r˜   )ÚmaskFTÚinclude_color_table)+rñ   r£   rL   Ú	itertoolsÚchainr   ÚIteratorrÖ   rƒ   rï   r�   rð   rò   rë   rÞ   r‰   r  Ú_get_backgroundr   Únewr•   r˜   rQ   r¸   rž   Ú_new_color_indexr”   Úsplitr   Úlambda_evalÚputdatar¹   r™   r   Úinvertrß   r	  r<   r
  ró   rô   ÚcropÚ_write_frame_data)r˜   r3   rQ   rt   r  Ú	im_framesÚprevious_imÚframe_countÚbackground_imÚ
imSequencerý   r´   rú   rñ   Ú
diff_framer  r
  r…   rI   Úfirst_paletter¥   r  r  r  r  r  Údelta_lÚ
frame_datar6   Úoffsets                                 r&   Ú_write_multiple_framesr1  “  sú  € ð Œ~×!Ò! *Ñ-Ô-€HØŒ~×!Ò! *¨b¬g¯kªk¸*Ñ.EÔ.EÑFÔF€Hà €IØ&*€KØ€KØ€MÝ”o r d¨B¬N×,>Ò,>¸ÐPRÑ,SÔ,SÑTÔTð ]Pñ ]Pˆ
Ý%Ô.¨zÑ:Ô:ð \	Pñ \	PˆHå& x§}¢}¡¤Ñ7Ô7ˆHØ˜aÒÐØ$œM×/Ò/Ñ1Ô1ð 8ð 8‘D�A�qØ˜NÒ*Ð*Ø Ý! !¥SÑ)Ô)ð 8Øœ×1Ò1°!°QÑ7Ô7Ð7øàœ.×-Ò-Ñ/Ô/ˆKØ ¤Ð.Ð.Ø×&Ò& ~°x´}À^Ô7TÑUÔUÐUÝ)¨(°G¸[ÑIÔIˆHÝ˜(¥T­5 MÑ2Ô2ð DØ*2°;Ô*?�˜JÑ'Ð'ØÐ! j°H´MÐ&AÐ&AØ*2¬-¸
Ô*C�˜JÑ'Ý˜(¥T­5 MÑ2Ô2ð @Ø*2°;Ô*?�˜JÑ'Ø˜1ÑˆKàˆJØñ C˜[ñ Cå& {°HÑ=Ô=‘��tØð à"—’ zÑ2Ô2ð YØ! "œÔ1°*Ð=Ð=Ô=ÀÈZÔAXÑXÐ=Ð=Ñ=ÙØ˜R”=Ô,×0Ò0°Ñ<Ô<ÀÒAÐAð œN×.Ò.Ø&¨¬¯ª°NÑ(CÔ(Cñô �Eð Ð(Ø(Ð0Ý)8¸À5Ñ)IÔ)I˜JÝ,1¬I°c¸8¼=È*Ñ,UÔ,U˜MØ,5°a¬L¬OÔ,C˜MØ#0Ð#<Ð#<Ð#<Ø)×4Ò4°]ÀMÔDVÑWÔWÐWÝ'¨°xÑ@Ô@ÀÔC˜™à%¨¬Ñ5˜™Ø —_’_ ZÑ0Ô0ñ )K°X´]ÀcÒ5IÑ5IØ%¨[Ð8Ð8Ø'Ô/Ð;Ð;Ð;ð!à (Ô 0× AÒ AÀ(Ñ KÔ Kð (¨Ñ7Ð7øõ  *ð !ð !ð !Ø ˜Dð!øøøà%¨Ð4Ñ4à%-§]¢]¡_¤_˜
Ý$œy¨¨e¬j¸+ÀnÔ:UÑVÔV˜Ø œ:¨Ò/Ð/Ø).¯ª©¬™J˜A˜q ! QÝ#,Ô#8ð	!"ð 	!"ð #$Ø"#Ø"#Ø"#ð$ñ $ô $˜D˜Dð"  %œz¨SÒ0Ð0å*/¬)°C¸¼Ñ*DÔ*D Ø '§¢°·²±´Ñ @Ô @Ð @Ø(/ Ý#,Ô#8Ø SÐ SØ#(ð$ñ $ô $˜Dð #×(Ò(¨µH´OÀDÑ4IÔ4IÐ(ÑJÔJÐJøà�Ø"ˆKØ×Ò�V JÐ$:°(¸DÀ+ÑNÔNÑOÔOÐOÑOñy\	Põ| ˆ9�~„~˜ÒÐØ˜œÐ'Ð'à)2°1¬Ô)AÀ*Ô)MˆBŒN˜:Ñ&Øˆuàð Hð Hˆ
Ø”=ˆØŒð 	)å'¨°*Ô2HÑIÔIð ð �Ø—’˜‘”��ØˆFˆFð ð EØ@D�
Ô&Ð'<Ñ=àŒ &¨8¬=Ñ"8Ò8Ð8Ø#Ÿ=š=¨¬Ñ9Ô9�Ø”_ R a RÔ(ˆFÝ˜"˜h¨°
Ô0FÑGÔGÐGÐGØˆ4s   Ì?MÍ
M*Í)M*Úfilenameústr | bytesc                ó,   — t          | ||d¬¦  «         d S )NT)Úsave_all)rø   )r˜   r3   r2  s      r&   Ú	_save_allr6    s   € Ý	ˆ"ˆb�( TÐ*Ñ*Ô*Ð*Ð*Ð*r%   r5  c                óŠ  — d| j         v s	d| j        v r4| j                              d| j                             d¦  «        ¦  «        }nd }| j                              dd¦  «         |rt	          | ||¦  «        st          | ||¦  «         |                     d¦  «         t          |d¦  «        r|                     ¦   «          d S d S )NrQ   r  Trq   Úflush)	rñ   rL   r£   rò   r1  rû   rô   Úhasattrr8  )r˜   r3   r2  r5  rQ   s        r&   rø   rø     sË   € ð �B”NÐ"Ð" i°2´7Ð&:Ð&:Ø”.×$Ò$ Y°´·²¸IÑ0FÔ0FÑGÔGˆˆàˆØ
Œ×!Ò! *¨dÑ3Ô3Ð3àð -Õ1°"°b¸'ÑBÔBð -Ý˜B  GÑ,Ô,Ð,à‡H‚HˆT�N„N€Nåˆr�7ÑÔð Ø
�Š‰
Œ
ˆ
ˆ
ˆ
ðð r%   r[   c                óp   — | j                              dd¦  «        }t          | j        ¦  «        dk     rd}|S )Nrª   r   é   r   )rñ   r£   Úminr•   )r˜   rª   s     r&   rõ   rõ   ,  s9   € Ø”×"Ò" ;°Ñ2Ô2€Iõ ˆ2Œ7�|„|�bÒÐØˆ	àÐr%   r0  útuple[int, int]rX   c                ó2  — 	 |j         d         }n# t          $ r d }Y nw xY wd|j         v rt          |j         d         dz  ¦  «        }nd}t          |j                              dd¦  «        ¦  «        }|€|dk    s|r…|�dnd}||dz  z  }|                      dt          d	¦  «        z   t          d
¦  «        z   t          |¦  «        z   t          |¦  «        z   t          |pd¦  «        z   t          d¦  «        z   ¦  «         |j                              d¦  «        }|r*t          |¦  «        }	t          |	¦  «        }
|
r
|dz  }||
z  }|                      dt          |d         ¦  «        z   t          |d         ¦  «        z   t          |j	        d         ¦  «        z   t          |j	        d         ¦  «        z   t          |¦  «        z   ¦  «         |r$|
r"|                      t          |	¦  «        ¦  «         |                      t          d¦  «        ¦  «         d S )Nr„   rt   rE   r   r  r   r   rr   rs   r~   r  rG   r|   rD   )rñ   ÚKeyErrorr[   r£   rô   r   Úo16Ú_get_palette_bytesÚ_get_color_table_sizer•   Ú_get_header_palette)r3   r˜   r0  rX   r„   rt   r  Úpacked_flagr  r  Úcolor_table_sizes              r&   rö   rö   6  sH  € ðØ”~ nÔ5ˆˆøÝð ð ð Øˆˆˆðøøøð �R”^Ð#Ð#Ý�r”~ jÔ1°BÑ6Ñ7Ô7ˆˆàˆå�2”>×%Ò% j°!Ñ4Ô4Ñ5Ô5€HàÐ 8¨q¢= =°H =Ø'Ð3�a�a¸ˆØ�x 1‘}Ñ$ˆà
�ŠØÝ�‰gŒgñå�‰eŒeñõ �‰oŒoñõ �(‰mŒmñ	õ
 �Ð" Ñ#Ô#ñ$õ �‰eŒeññ	
ô 	
ð 	
ð œ.×,Ò,Ð-BÑCÔCÐØð -Ý*¨2Ñ.Ô.ˆÝ0°Ñ?Ô?ÐØð 	-Ø˜C‘KˆEØÐ,Ñ,ˆEà‡H‚HØÝ
ˆf�QŒi‰.Œ.ñ	å
ˆf�QŒi‰.Œ.ñ	õ ˆbŒg�aŒj‰/Œ/ñ	õ ˆbŒg�aŒj‰/Œ/ñ		õ
 ˆU‰)Œ)ñ	ñô ð ð ð 5Ð/ð 5Ø
�ŠÕ$ ]Ñ3Ô3Ñ4Ô4Ð4Ø‡H‚H�R�‰UŒU�O„O€O€O€Os   ‚ �žc                ó"  — |                       ¦   «         }	 t          |d¦  «        5 }| j        dk    r$t          j        d|g|t          j        ¬¦  «         nÒdd|g}dg}t          j        |t          j        t          j        ¬¦  «        }t          j        ||j        |t          j        ¬¦  «        }|j        €J ‚|j         	                    ¦   «          | 
                    ¦   «         }	|	rt          j        |	|¦  «        ‚| 
                    ¦   «         }	|	rt          j        |	|¦  «        ‚d d d ¦  «         n# 1 swxY w Y   	 t          j        |¦  «         d S # t          $ r Y d S w xY w# 	 t          j        |¦  «         w # t          $ r Y w w xY wxY w)NÚwbrJ   Úppmtogif)ÚstdoutÚstderrÚppmquantÚ256)ÚstdinrI  rJ  )Ú_dumpÚopenrž   Ú
subprocessÚ
check_callÚDEVNULLÚPopenÚPIPErI  ÚcloseÚwaitÚCalledProcessErrorÚosÚunlinkÚOSError)
r˜   r3   r2  Útempfilerk   Ú	quant_cmdÚ	togif_cmdÚ
quant_procÚ
togif_procÚretcodes
             r&   Ú_save_netpbmra  h  s  € ð �xŠx‰zŒz€Hð$Ý�(˜DÑ!Ô!ð 	L QØŒw˜%ÒÐÝÔ%Ø Ð*°1½ZÔ=Oðñ ô ð ð ð (¨°Ð9�	Ø'˜L�	Ý'Ô-Ø¥j¤o½jÔ>Pðñ ô �
õ (Ô-ØØ$Ô+ØÝ%Ô-ð	ñ ô �
ð "Ô(Ð4Ð4Ð4ØÔ!×'Ò'Ñ)Ô)Ð)à$Ÿ/š/Ñ+Ô+�Øð LÝ$Ô7¸ÀÑKÔKÐKà$Ÿ/š/Ñ+Ô+�Øð LÝ$Ô7¸ÀÑKÔKÐKð=	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð@	ÝŒI�hÑÔÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøøð	ÝŒI�hÑÔÐÐøÝð 	ð 	ð 	ØˆDð	øøøøøøse   –E' ¦DD4Ä(E' Ä4D8Ä8E' Ä;D8Ä<E' Å E Å
E$Å#E$Å'FÅ)E>Å=FÅ>
FÆFÆ
FÆFúlist[int] | Nonec                óT  — | j         dv �r|�r|                     d¦  «        �rt          p
| j         dk    }|s| j        | j        z  dk     rÝg }t          |                      ¦   «         ¦  «        D ]\  }}|r|                     |¦  «         Œ|s t          |¦  «        t          |¦  «        k    r|S | j
        €J ‚t          | j
        j
        ¦  «        t          j        | j
        j         ¦  «        z  }d|dz
                       ¦   «         z  }t          |¦  «        |dz  k    r|dk    r|S dS )aL  
    Palette optimization is a potentially expensive operation.

    This function determines if the palette should be optimized using
    some heuristics, then returns the list of palette entries in use.

    :param im: Image object
    :param info: encoderinfo
    :returns: list of indexes of palette entries in use, or None
    )r�   r‚   r  r‚   i   Nr   r   )rž   r£   Ú_FORCE_OPTIMIZEÚwidthÚheightrà   Ú	histogramrß   r–   r<   rQ   r   ÚgetmodebandsÚ
bit_length)r˜   rL   Úoptimiseræ   r=   ÚcountÚnum_palette_colorsÚcurrent_palette_sizes           r&   râ   râ   �  sQ  € ð 
„w�*ÐÑ Ñ¨$¯(ª(°:Ñ*>Ô*>Ñõ #Ð4 b¤g°¢nˆØð 	+�r”x "¤)Ñ+¨iÒ7Ð7à"$ÐÝ% b§l¢l¡n¤nÑ5Ô5ð 2ð 2‘��5Øð 2Ø'×.Ò.¨qÑ1Ô1Ð1øàð +�3Ð2Ñ3Ô3µsÐ;NÑ7OÔ7OÒOÐOØ*Ð*à”:Ð)Ð)Ð)Ý!$ R¤ZÔ%7Ñ!8Ô!8½EÔ<NØ”
”ñ=ô =ñ "Ðð $%Ð);¸aÑ)?×(KÒ(KÑ(MÔ(MÑ#MÐ õ Ð'Ñ(Ô(Ð,@ÀAÑ,EÒEÐEà(¨1Ò,Ð,à*Ð*Øˆ4r%   r  c                ó¨   — | sdS t          | ¦  «        dk     rdS t          j        t          j        t          | ¦  «        dz  d¦  «        ¦  «        dz
  S )Nr   r}   r   r:   r   )r<   ÚmathÚceilÚlog)r  s    r&   rB  rB  Í  sV   € àð CØˆqÝ	ˆ]Ñ	Ô	˜aÒ	Ð	ØˆqåŒy�œ¥# mÑ"4Ô"4¸Ñ"9¸1Ñ=Ô=Ñ>Ô>ÀÑBÐBr%   c                ó�   — t          | ¦  «        }d|z  t          | ¦  «        dz  z
  }|dk    r| t          d¦  «        dz  |z  z  } | S )zä
    Returns the palette, null padded to the next power of 2 (*3) bytes
    suitable for direct inclusion in the GIF header

    :param palette_bytes: Unpadded palette bytes, in RGBRGB form
    :returns: Null padded palette
    r   r:   r   )rB  r<   r   )r  rE  Úactual_target_size_diffs      r&   rC  rC  ×  s]   € õ -¨]Ñ;Ô;Ðð  !Ð$4Ñ4½¸MÑ8JÔ8JÈaÑ8OÑOÐØ Ò"Ð"Ø�˜A™œ ™Ð%<Ñ<Ñ<ˆØÐr%   c                óè   ‡— | j         sdS t          | j         j         ¦  «        Š| j         j        dk    r>d                     ˆfd„t	          t          ‰¦  «        dz  ¦  «        D ¦   «         ¦  «        Š‰S )zš
    Gets the palette for inclusion in the gif header

    :param im: Image object
    :returns: Bytes, len<=768 suitable for inclusion in gif header
    r%   r€   c              3  ó>   •K  — | ]}‰|d z  |d z  dz   …         V — ŒdS )r~   r:   Nr$   )rÛ   r=   rQ   s     €r&   rÜ   z%_get_palette_bytes.<locals>.<genexpr>õ  s9   øè è € ÐXÐX¸!˜7 1 q¡5¨1¨q©5°1©9Ð#4Ô5ÐXÐXÐXÐXÐXÐXr%   r:   )rQ   r(   rž   Újoinr;   r<   )r˜   rQ   s    @r&   rA  rA  é  st   ø€ ð Œ:ð Øˆså�B”JÔ&Ñ'Ô'€GØ	„z„˜&Ò Ð Ø—(’(ÐXÐXÐXÐX½uÅSÈÁ\Ä\ÐUVÑEVÑ?WÔ?WÐXÑXÔXÑXÔXˆØ€Nr%   Úinfo_backgroundú=int | tuple[int, int, int] | tuple[int, int, int, int] | Nonec                óÚ   — d}|rft          |t          ¦  «        rO| j        €J ‚	 | j                             || ¦  «        }n+# t          $ r}t          |¦  «        dvr‚ Y d }~n
d }~ww xY w|}|S )Nr   )z$cannot allocate more than 256 colorsz/cannot add non-opaque RGBA color to RGB palette)r�   r‰   rQ   Úgetcolorr”   rð   )r˜   rw  rI   rl   s       r&   r  r  ù  s³   € ð €JØð )Ý�o¥uÑ-Ô-ð 	)ð ”:Ð)Ð)Ð)ð
ØœZ×0Ò0°À"ÑEÔE�
�
øÝð ð ð Ý�q‘6”6ð "ð ð ð ðð ð ð ð øøøøðøøøð )ˆJØÐs   ¤A  Á 
A&Á
A!Á!A&úlist[bytes]c                ó  — d}| j                              d¦  «        dk    sE|rEd|v s?|                     d¦  «        €*|                     d¦  «        s|                     d¦  «        rd}t          | |                     d	¦  «        ¦  «        }t          | ¦  «        }t	          |¦  «        }d
|z   t          | j        d         ¦  «        z   t          | j        d         ¦  «        z   t          |dz   ¦  «        t          |¦  «        t          d¦  «        z   t          |¦  «        g}|                     d¦  «        �~| 	                    dt          d¦  «        z   t          d¦  «        z   dz   t          d¦  «        z   t          d¦  «        z   t          |d         ¦  «        z   t          d¦  «        z   ¦  «         |                     d¦  «        rºdt          d¦  «        z   }|d         }t          |t          ¦  «        r|                     ¦   «         }t          dt          |¦  «        d¦  «        D ]1}	||	|	dz   …         }
|t          t          |
¦  «        ¦  «        |
z   z  }Œ2|t          d¦  «        z  }| 	                    |¦  «         |S )z2Return a list of strings representing a GIF headers   87arC   s   89ar„   r{   Nrt   rp   rI   s   GIFr   r   rG   rr   rx   rH   rz   r:   rv   )rL   r£   r  rA  rB  r@  r•   r   rC  rß   r�   rð   Úencoder;   r<   )r˜   rL   rC   rI   r  rE  ÚheaderÚcomment_blockrp   r=   Úsubblocks              r&   ró   ró     s  € ð €GØ	„w‡{‚{�9ÑÔ Ò'Ð'Øð (ð ˜dÐ"Ð"Ø�xŠx˜ÑÔÐ+Ø�xŠx˜
Ñ#Ô#ð ,à�xŠx˜	Ñ"Ô"ð ,ð
 ˆå   T§X¢X¨lÑ%;Ô%;Ñ<Ô<€Jå& rÑ*Ô*€MÝ,¨]Ñ;Ô;Ðð 	Ø
ñ	å
ˆbŒg�aŒj‰/Œ/ñ	õ ˆbŒg�aŒj‰/Œ/ñ	õ 	Ð˜cÑ!Ñ"Ô"å
ˆ:‰Œ�˜A™œÑå˜MÑ*Ô*ð€Fð ‡x‚x�ÑÔÐ#Ø�ŠØÝ�‰gŒgñå�‰fŒfñð ñõ �‰eŒeñ	õ
 �‰eŒeñõ �$�v”,ÑÔñ õ �‰eŒeññ		
ô 		
ð 		
ð ‡x‚x�	ÑÔð %Ø�r #™wœw™ˆà�y”/ˆÝ�g�sÑ#Ô#ð 	'Ø—n’nÑ&Ô&ˆGÝ�q�#˜g™,œ,¨Ñ,Ô,ð 	:ð 	:ˆAØ˜q 1 s¡7˜{Ô+ˆHØ�R¥ H¡¤Ñ.Ô.°Ñ9Ñ9ˆMˆMà�˜A™œÑˆØ�Š�mÑ$Ô$Ð$Ø€Mr%   Úparamsc                óþ   — 	 ||_         t          | ||d¦  «         t          j        || t          j        dd|j        z   dt          |j                 ¦  «        g¦  «         |                      d¦  «         |` d S # |` w xY w)Nr   rŒ   r¶   rî   )	rñ   rö   r   rø   r¨   r•   rÐ   rž   rô   )r3   rý   r0  r�  s       r&   r&  r&  R  s’   € ð!Ø%ˆÔõ 	˜B ¨&°!Ñ4Ô4Ð4åŒØØÝŒ_˜U F¨X¬]Ñ$:¸A½wÀxÄ}Ô?UÑVÔVÐWñ	
ô 	
ð 	
ð 	�Š�‰ŒˆàÐ Ð Ð øˆHÐ Ð Ð Ð Ð s   ‚A2A8 Á8A<údict[str, Any] | Noneú$tuple[list[bytes], list[int] | None]c                óÞ   — |€i }t          | |¦  «        }d|vrd| j        v r| j        d         |d<   t          | ||¦  «        }|j        | _        |j        | _        t          | |¦  «        }||fS )a  
    Legacy Method to get Gif data from image.

    Warning:: May modify image data.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: tuple of(list of header items, optimized palette)

    NrI   )râ   rL   rë   rQ   r˜   ró   )r˜   rQ   rL   ræ   Úim_modr~  s         r&   Ú	getheaderr‡  m  s„   € ð €|Øˆå'¨¨DÑ1Ô1Ðà˜4ÐÐ L°B´GÐ$;Ð$;ØœW \Ô2ˆˆ\Ñå  G¨TÑ2Ô2€FØ”€B„JØŒI€B„EÝ  DÑ)Ô)€FàÐ&Ð&Ð&r%   r¶   r   c                ó˜   — ddl m}  G d„ d|¦  «        }|                      ¦   «           |¦   «         }t          || ||¦  «         |j        S )aë  
    Legacy Method

    Return a list of strings representing this image.
    The first string is a local image header, the rest contains
    encoded image data.

    To specify duration, add the time in milliseconds,
    e.g. ``getdata(im_frame, duration=1000)``

    :param im: Image object
    :param offset: Tuple of (x, y) pixels. Defaults to (0, 0)
    :param \**params: e.g. duration or other encoder info parameters
    :returns: List of bytes containing GIF encoded frame data

    r   )ÚBytesIOc                  ó   — e Zd Zg Zdd„ZdS )úgetdata.<locals>.Collectorr7   r   r)   r[   c                óT   — | j                              |¦  «         t          |¦  «        S rÆ   )r7   rß   r<   )r5   r7   s     r&   rô   z getdata.<locals>.Collector.write£  s$   € ØŒI×Ò˜TÑ"Ô"Ð"Ý�t‘9”9Ðr%   N)r7   r   r)   r[   )r   r   r   r7   rô   r$   r%   r&   Ú	Collectorr‹     s-   € € € € € Øˆð	ð 	ð 	ð 	ð 	ð 	r%   r�  )Úior‰  r“   r&  r7   )r˜   r0  r�  r‰  r�  r3   s         r&   r¹   r¹   ‹  su   € ð& ÐÐÐÐÐðð ð ð ð �Gñ ô ð ð ‡G‚G�I„I€Ià	ˆ‰Œ€Bå�b˜"˜f fÑ-Ô-Ð-àŒ7€Nr%   z.gifz	image/gif)r'   r(   r)   r*   )r˜   rÍ   r)   rÍ   )r˜   rÍ   rQ   r×   rL   rØ   r)   rÍ   )r˜   rÍ   r3   rì   rQ   r×   r)   r?   )rü   rÍ   rý   rÍ   r)   rþ   )r˜   rÍ   r3   rì   rQ   r×   r)   r*   )r˜   rÍ   r3   rì   r2  r3  r)   r?   )F)
r˜   rÍ   r3   rì   r2  r3  r5  r*   r)   r?   )r˜   rÍ   r)   r[   )
r3   rì   r˜   rÍ   r0  r=  rX   r[   r)   r?   )r˜   rÍ   rL   rØ   r)   rb  )r  r(   r)   r[   )r  r(   r)   r(   )r˜   rÍ   r)   r(   )r˜   rÍ   rw  rx  r)   r[   )r˜   rÍ   rL   rØ   r)   r{  )
r3   rì   rý   rÍ   r0  r=  r�  rØ   r)   r?   )NN)r˜   rÍ   rQ   r×   rL   rƒ  r)   r„  )r¶   )r˜   rÍ   r0  r=  r�  r   r)   r{  )KÚ
__future__r   r  ro  rX  rP  Úenumr   Ú	functoolsr   Útypingr   r   r   r	   r
   r   Ú r   r   r   r   r   r   r   Ú_binaryr   rM   r   r   r@  Ú_utilr   ÚTYPE_CHECKINGr   Ú_typingr   r   r!   rœ   r-   r/   rÐ   rÖ   r(   rÝ   rÞ   r[   Ú_Paletterë   rû   r  r	  r1  r6  rø   rõ   rö   ra  rd  râ   rB  rC  rA  r  ró   r&  r‡  r¹   Úregister_openrÇ   Úregister_saveÚregister_save_allÚregister_extensionÚregister_mimer$   r%   r&   ú<module>rž     s|  ðð4 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à€Øð  ØÐÐÐÐÐØÐÐÐÐÐðð ð ð ð �gñ ô ð ð #Ô2Ð ð5ð 5ð 5ð 5ðfð fð fð fð f�9Ô&ñ fô fð fðZ ˜# CÐ
(Ð
(€ðð ð ð ð4 �˜	 4¨¤9¨lÔ.GÐGÔH€ðDð Dð Dð DðNð ð ð ð8
2ð 
2ð 
2ð 
2ð ð  ð  ð  ð  ˆZñ  ô  ð  ðð ð ð ðD+ð +ð +ð +ð
 MRðð ð ð ð ð&ð ð ð ð/ð /ð /ð /ðd-ð -ð -ð -ðd €ð-ð -ð -ð -ð`Cð Cð Cð Cðð ð ð ð$ð ð ð ð ð ð ð ð6;ð ;ð ;ð ;ð|!ð !ð !ð !ð8 UYð'ð 'ð 'ð 'ð 'ð> 06ð"ð "ð "ð "ð "ðP €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7Ø €Ô ˜Ô,¨fÑ 5Ô 5Ð 5Ø €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r%   