§
    aÒ³g­Æ  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl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 ddlmZ dd	lmZ dd
lmZ ddlmZ  ddlm!Z" erddlm#Z#  ej$        e%¦  «        Z& ej'        d¦  «        j(        Z)dZ*ddddddddddddddddœZ+ ej'        d ¦  «        Z,ej-        Z.	 d!e.z  Z/	  G d"„ d#e¦  «        Z0 G d$„ d%e¦  «        Z1dod)„Z2dpdqd-„Z3 G d.„ d/¦  «        Z4 G d0„ d1e5¦  «        Z6 G d2„ d3¦  «        Z7 G d4„ d5e¦  «        Z8 G d6„ d7e4¦  «        Z9drd:„Z: G d;„ d<ej        ¦  «        Z;d=d>d?d@dAdBdCdCdCdDdEdFdGdHdIdJœZ<dsdO„Z= G dP„ dQ¦  «        Z> G dR„ dS¦  «        Z? G dT„ dUe¦  «        Z@dtda„ZAdudd„ZBe=defdvdg„ZCdwdk„ZD ejE        e;jF        e;e:¦  «          ejG        e;jF        eC¦  «          ejH        e;jF        eB¦  «          ejI        e;jF        dldmg¦  «          ejJ        e;jF        dn¦  «         dS )xé    )ÚannotationsN)ÚCallable)ÚIntEnum)ÚIOÚTYPE_CHECKINGÚAnyÚ
NamedTupleÚNoReturnÚcasté   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú_imagings   \w\w\w\ws   ‰PNG

)Ú1r   )ÚLúL;2)r   úL;4)r   r   )úI;16úI;16B)ÚRGBr   )r   zRGB;16B)ÚPúP;1)r   úP;2)r   úP;4)r   r   )ÚLAr#   )ÚRGBAzLA;16B)r$   r$   )r$   zRGBA;16B))r   r   )é   r   )é   r   )é   r   )é   r   )r'   r%   )r(   r%   )r   é   )r%   r)   )r&   r)   )r'   r)   )r'   r&   )r(   r&   )r'   é   )r(   r*   s   ^ÿ* ÿ*$é@   c                  ó   — e Zd ZdZ	 dZ	 dZdS )ÚDisposalr   r   r%   N)Ú__name__Ú
__module__Ú__qualname__ÚOP_NONEÚOP_BACKGROUNDÚOP_PREVIOUS© ó    úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/PIL/PngImagePlugin.pyr-   r-   h   s1   € € € € € Ø€Gðð €Mðð
 €Kðð r5   r-   c                  ó   — e Zd ZdZ	 dZdS )ÚBlendr   r   N)r.   r/   r0   Ú	OP_SOURCEÚOP_OVERr4   r5   r6   r8   r8   }   s%   € € € € € Ø€Iðð
 €Gðð r5   r8   ÚsÚbytesÚreturnc                ó’   — t          j        ¦   «         }|                     | t          ¦  «        }|j        rd}t          |¦  «        ‚|S )Nz=Decompressed data too large for PngImagePlugin.MAX_TEXT_CHUNK)ÚzlibÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)r;   ÚdobjÚ	plaintextÚmsgs       r6   Ú_safe_zlib_decompressrH   ‹   sE   € ÝÔÑÔ€DØ—’ ¥>Ñ2Ô2€IØÔð ØMˆÝ˜‰oŒoÐØÐr5   ÚdataÚseedÚintc                ó2   — t          j        | |¦  «        dz  S )Nl   ÿÿ )r?   Úcrc32)rI   rJ   s     r6   Ú_crc32rN   ”   s   € ÝŒ:�d˜DÑ!Ô! JÑ.Ð.r5   c                  ó`   — e Zd Zdd„Zdd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
d#d„Zd$d%d„ZdS )&ÚChunkStreamÚfpú	IO[bytes]r=   ÚNonec                ó"   — || _         g | _        d S ©N)rQ   Úqueue)ÚselfrQ   s     r6   Ú__init__zChunkStream.__init__�   s   € Ø$&ˆŒØ:<ˆŒ
ˆ
ˆ
r5   útuple[bytes, int, int]c                ó²  — d}| j         €J ‚| j        r8| j                             ¦   «         \  }}}| j                              |¦  «         nL| j                              d¦  «        }|dd…         }| j                              ¦   «         }t          |¦  «        }t          |¦  «        s.t          j	        s"dt          |¦  «        › d�}t          |¦  «        ‚|||fS )z.Fetch a new chunk. Returns header information.Nr'   r&   zbroken PNG file (chunk ú))rQ   rV   ÚpopÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)rW   ÚcidÚposÚlengthr;   rG   s         r6   r^   zChunkStream.read¡   sÐ   € àˆàŒwÐ"Ð"Ð"ØŒ:ð 	Ø#œzŸ~š~Ñ/Ô/ÑˆC��fØŒG�LŠL˜ÑÔÐÐà”—’˜Q‘”ˆAØ�A�B�B”%ˆCØ”'—,’,‘.”.ˆCÝ˜‘V”VˆFå�c‰{Œ{ð 	'ÝÔ2ð 'Ø<µ°S±	´	Ð<Ð<Ð<�Ý! #Ñ&Ô&Ð&à�C˜ÐÐr5   c                ó   — | S rU   r4   ©rW   s    r6   Ú	__enter__zChunkStream.__enter__¶   s   € Øˆr5   ÚargsÚobjectc                ó.   — |                       ¦   «          d S rU   )Úclose)rW   rk   s     r6   Ú__exit__zChunkStream.__exit__¹   s   € Ø�
Š
‰Œˆˆˆr5   c                ó"   — d x| _         | _        d S rU   )rV   rQ   ri   s    r6   rn   zChunkStream.close¼   s   € Ø#Ð#ˆŒ
�T”W�W�Wr5   re   r<   rf   rK   rg   c                óR   — | j         €J ‚| j                              |||f¦  «         d S rU   )rV   Úappend©rW   re   rf   rg   s       r6   ÚpushzChunkStream.push¿   s3   € ØŒzÐ%Ð%Ð%ØŒ
×Ò˜3  VÐ,Ñ-Ô-Ð-Ð-Ð-r5   c                óœ   — t                                d|||¦  «          t          | d|                     d¦  «        › �¦  «        ||¦  «        S )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoders   s       r6   ÚcallzChunkStream.callÃ   sN   € õ 	�ŠÐ&¨¨S°&Ñ9Ô9Ð9Ø<�w�tÐ; c§j¢j°Ñ&9Ô&9Ð;Ð;Ñ<Ô<¸SÀ&ÑIÔIÐIr5   rI   c                óÊ  — t           j        r&|d         dz	  dz  r|                      ||¦  «         dS | j        €J ‚	 t	          |t	          |¦  «        ¦  «        }t          | j                             d¦  «        ¦  «        }||k    r"dt          |¦  «        › d�}t          |¦  «        ‚dS # t          j
        $ r(}dt          |¦  «        › d�}t          |¦  «        |‚d}~ww xY w)	zRead and verify checksumr   é   r   Nr&   z(broken PNG file (bad header checksum in r[   z(broken PNG file (incomplete checksum in )r   rb   Úcrc_skiprQ   rN   r`   r^   rc   rd   ÚstructÚerror)rW   re   rI   Úcrc1Úcrc2rG   Úes          r6   ÚcrczChunkStream.crcÉ   sù   € õ Ô*ð 	°°A´¸!±¸a±ð 	Ø�MŠM˜#˜tÑ$Ô$Ð$ØˆFàŒwÐ"Ð"Ð"ð	*Ý˜$¥ s¡¤Ñ,Ô,ˆDÝ�t”w—|’| A‘”Ñ'Ô'ˆDØ�tŠ|ˆ|ØMÅÀcÁÄÐMÐMÐM�Ý! #Ñ&Ô&Ð&ð ˆ|øõ Œ|ð 	*ð 	*ð 	*ØI½TÀ#¹Y¼YÐIÐIÐIˆCÝ˜cÑ"Ô"¨Ð)øøøøð	*øøøs   ½A,B+ Â+C"Â:#CÃC"c                óL   — | j         €J ‚| j                              d¦  «         dS )zRead checksumNr&   )rQ   r^   )rW   re   rI   s      r6   r   zChunkStream.crc_skipÞ   s'   € ð ŒwÐ"Ð"Ð"ØŒ�Š�Q‰Œˆˆˆr5   ó   IENDÚendchunkúlist[bytes]c                ó:  — g }| j         €J ‚	 	 |                      ¦   «         \  }}}n)# t          j        $ r}d}t	          |¦  «        |‚d }~ww xY w||k    rnD|                      |t          j        | j         |¦  «        ¦  «         |                     |¦  «         ŒŽ|S )NTztruncated PNG file)	rQ   r^   r€   r�   ÚOSErrorr…   r   Ú
_safe_readrr   )rW   rˆ   Úcidsre   rf   rg   r„   rG   s           r6   ÚverifyzChunkStream.verifyä   sº   € ð ˆàŒwÐ"Ð"Ð"ð
	ð*Ø#'§9¢9¡;¤;Ñ ��S˜&˜&øÝ”<ð *ð *ð *Ø*�Ý˜c‘l”l¨Ð)øøøøð*øøøð �hŠˆØØ�HŠH�S�)Ô.¨t¬w¸Ñ?Ô?Ñ@Ô@Ð@Ø�KŠK˜ÑÔÐð
	ð ˆs   Ž' §A¶AÁAN©rQ   rR   r=   rS   )r=   rY   )r=   rP   )rk   rl   r=   rS   ©r=   rS   )re   r<   rf   rK   rg   rK   r=   rS   )re   r<   rf   rK   rg   rK   r=   r<   )re   r<   rI   r<   r=   rS   )r‡   )rˆ   r<   r=   r‰   )r.   r/   r0   rX   r^   rj   ro   rn   rt   r|   r…   r   rŽ   r4   r5   r6   rP   rP   œ   så   € € € € € ð=ð =ð =ð =ð ð  ð  ð  ð*ð ð ð ðð ð ð ð$ð $ð $ð $ð.ð .ð .ð .ðJð Jð Jð Jð*ð *ð *ð *ð*ð ð ð ðð ð ð ð ð ð r5   rP   c                  óD   — e Zd ZU dZded<   ded<   e	 ddd
„¦   «         ZdS )ÚiTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    zstr | bytes | NoneÚlangÚtkeyNÚtextÚstrú
str | Noner=   c                óX   — t                                | |¦  «        }||_        ||_        |S )zÇ
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )r–   Ú__new__r“   r”   )Úclsr•   r“   r”   rW   s        r6   r™   ziTXt.__new__  s*   € õ �{Š{˜3 Ñ%Ô%ˆØˆŒ	ØˆŒ	Øˆr5   )NN)r•   r–   r“   r—   r”   r—   r=   r’   )r.   r/   r0   Ú__doc__Ú__annotations__Ústaticmethodr™   r4   r5   r6   r’   r’   ú   s`   € € € € € € ðð ð ÐÐÑØÐÐÑààDHðð ð ð ñ „\ðð ð r5   r’   c                  ó@   — e Zd ZdZdd„Zddd„Z	 	 	 ddd„Z	 ddd„ZdS )ÚPngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    r=   rS   c                ó   — g | _         d S rU   )Úchunksri   s    r6   rX   zPngInfo.__init__  s   € Ø79ˆŒˆˆr5   Fre   r<   rI   Ú
after_idatÚboolc                ó@   — | j                              |||f¦  «         dS )a"  Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        N)r¡   rr   )rW   re   rI   r¢   s       r6   ÚaddzPngInfo.add  s'   € ð 	Œ×Ò˜C  zÐ2Ñ3Ô3Ð3Ð3Ð3r5   Ú Úkeyústr | bytesÚvaluer“   r”   Úzipc                ó*  — t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }t          |t          ¦  «        s|                     dd¦  «        }|r<|                      d|dz   |z   dz   |z   dz   t	          j        |¦  «        z   ¦  «         dS |                      d|dz   |z   dz   |z   dz   |z   ¦  «         dS )	zùAppends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        úlatin-1Ústrictúutf-8ó   iTXts     ó    s      N)Ú
isinstancer<   Úencoder¥   r?   Úcompress)rW   r§   r©   r“   r”   rª   s         r6   Úadd_itxtzPngInfo.add_itxt*  s)  € õ$ ˜#�uÑ%Ô%ð 	2Ø—*’*˜Y¨Ñ1Ô1ˆCÝ˜%¥Ñ'Ô'ð 	4Ø—L’L ¨(Ñ3Ô3ˆEÝ˜$¥Ñ&Ô&ð 	2Ø—;’;˜w¨Ñ1Ô1ˆDÝ˜$¥Ñ&Ô&ð 	2Ø—;’;˜w¨Ñ1Ô1ˆDàð 	UØ�HŠHØØ�kÑ! DÑ(¨5Ñ0°4Ñ7¸%Ñ?Å$Ä-ÐPUÑBVÔBVÑVñô ð ð ð ð
 �HŠH�W˜c I™o°Ñ4°uÑ<¸tÑCÀeÑKÈeÑSÑTÔTÐTÐTÐTr5   ústr | bytes | iTXtc                ó8  — t          |t          ¦  «        r6|                      |||j        �|j        nd|j        �|j        nd|¬¦  «        S t          |t
          ¦  «        s@	 |                     dd¦  «        }n(# t          $ r |                      |||¬¦  «        cY S w xY wt          |t
          ¦  «        s|                     dd¦  «        }|r0|                      d|dz   t          j
        |¦  «        z   ¦  «         dS |                      d|d	z   |z   ¦  «         dS )
zæAppends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        Nr5   )rª   r¬   r­   ó   zTXtó     ó   tEXtr°   )r±   r’   r´   r“   r”   r<   r²   ÚUnicodeErrorr¥   r?   r³   )rW   r§   r©   rª   s       r6   Úadd_textzPngInfo.add_textM  s@  € õ �e�TÑ"Ô"ð 	Ø—=’=ØØØ#œjÐ4�”
�
¸#Ø#œjÐ4�”
�
¸#Øð !ñ ô ð õ ˜%¥Ñ'Ô'ð 	:ð:ØŸš Y°Ñ9Ô9��øÝð :ð :ð :Ø—}’} S¨%°S�}Ñ9Ô9Ð9Ð9Ð9ð:øøøõ ˜#�uÑ%Ô%ð 	2Ø—*’*˜Y¨Ñ1Ô1ˆCàð 	3Ø�HŠH�W˜c G™m­d¬m¸EÑ.BÔ.BÑBÑCÔCÐCÐCÐCà�HŠH�W˜c E™k¨EÑ1Ñ2Ô2Ð2Ð2Ð2s   Á"A9 Á9"BÂBNr�   ©F)re   r<   rI   r<   r¢   r£   r=   rS   )r¦   r¦   F)r§   r¨   r©   r¨   r“   r¨   r”   r¨   rª   r£   r=   rS   )r§   r¨   r©   rµ   rª   r£   r=   rS   )r.   r/   r0   r›   rX   r¥   r´   r»   r4   r5   r6   rŸ   rŸ     s•   € € € € € ðð ð
:ð :ð :ð :ð
4ð 
4ð 
4ð 
4ð 
4ð  ØØð!Uð !Uð !Uð !Uð !UðH HMð!3ð !3ð !3ð !3ð !3ð !3ð !3r5   rŸ   c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_RewindStatez dict[str | tuple[int, int], Any]Úinfozlist[ImageFile._Tile]Útilez
int | NoneÚseq_numN©r.   r/   r0   rœ   r4   r5   r6   r¾   r¾   u  s6   € € € € € € Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑÐÐr5   r¾   c                  óÀ   ‡ — e Zd Zd ˆ fd„Zd!d„Zd"d	„Zd"d
„Zd#d„Zd#d„Zd$d„Z	d$d„Z
d#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zd#d„Zˆ xZS )%Ú	PngStreamrQ   rR   r=   rS   c                ó  •— t          ¦   «                              |¦  «         i | _        i | _        d| _        d| _        g | _        d | _        d | _        d | _	        d | _
        t          i g d ¦  «        | _        d| _        d S )N©r   r   r¦   r   )ÚsuperrX   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numr¾   Úrewind_stateÚtext_memory)rW   rQ   Ú	__class__s     €r6   rX   zPngStream.__init__|  s€   ø€ Ý‰Œ×Ò˜ÑÔÐð :<ˆŒØ.0ˆŒØˆŒØˆŒØ.0ˆŒØ48ˆŒØ.2ˆÔØ'+ˆÔØ$(ˆŒÝ(¨¨R°Ñ6Ô6ˆÔàˆÔÐÐr5   ÚchunklenrK   c                óz   — | xj         |z  c_         | j         t          k    rd| j         › d�}t          |¦  «        ‚d S )Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)rÒ   ÚMAX_TEXT_MEMORYrD   )rW   rÔ   rG   s      r6   Úcheck_text_memoryzPngStream.check_text_memory�  sY   € ØÐÔ˜HÑ$ÐÔØÔ�oÒ-Ð-ð6ØÔ#ð6ð 6ð 6ð õ ˜S‘/”/Ð!ð .Ð-r5   c                ót   — t          | j                             ¦   «         | j        | j        ¦  «        | _        d S rU   )r¾   rÈ   ÚcopyrÌ   rÐ   rÑ   ri   s    r6   Úsave_rewindzPngStream.save_rewind–  s5   € Ý(ØŒL×ÒÑÔØŒLØŒMñ
ô 
ˆÔÐÐr5   c                ó�   — | j         j                             ¦   «         | _        | j         j        | _        | j         j        | _        d S rU   )rÑ   r¿   rÙ   rÈ   rÀ   rÌ   rÁ   rÐ   ri   s    r6   ÚrewindzPngStream.rewind�  s9   € ØÔ(Ô-×2Ò2Ñ4Ô4ˆŒØÔ(Ô-ˆŒØÔ)Ô1ˆŒˆˆr5   rf   rg   r<   c                óî  — | j         €J ‚t          j        | j         |¦  «        }|                     d¦  «        }t                               d|d |…         ¦  «         ||dz            }t                               d|¦  «         |dk    rd|› d�}t          |¦  «        ‚	 t          ||dz   d …         ¦  «        }n2# t          $ r t          j	        rd }n‚ Y nt          j        $ r d }Y nw xY w|| j        d	<   |S )
Nr°   ziCCP profile name %rr   zCompression method %sr   úUnknown compression method z in iCCP chunkr%   Úicc_profile)rQ   r   rŒ   Úfindrx   ry   rd   rH   rD   rb   r?   r�   rÈ   )rW   rf   rg   r;   ÚiÚcomp_methodrG   rß   s           r6   Ú
chunk_iCCPzPngStream.chunk_iCCP¢  s$  € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð �FŠF�5‰MŒMˆÝ�ŠÐ+¨Q¨r°¨r¬UÑ3Ô3Ð3Ø˜˜A™”hˆÝ�ŠÐ,¨kÑ:Ô:Ð:Ø˜!ÒÐØK°ÐKÐKÐKˆCÝ˜cÑ"Ô"Ð"ð	Ý/°°!°a±%°'°'´
Ñ;Ô;ˆKˆKøÝð 	ð 	ð 	ÝÔ.ð Ø"��àð �õ Œzð 	ð 	ð 	ØˆKˆKˆKð	øøøà&1ˆŒ�]Ñ#Øˆs   ÂB9 Â9C(ÃC(Ã'C(c                óª  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |d¦  «        t          |d¦  «        f| _        	 t          |d         |d         f         \  | _        | _	        n# t          $ r Y nw xY w|d         r
d| j        d	<   |d
         rd}t          |¦  «        ‚|S )Né   zTruncated IHDR chunkr   r&   r'   é	   é   r   Ú	interlaceé   zunknown filter category)rQ   r   rŒ   rb   rD   r`   rÊ   Ú_MODESrË   Ú
im_rawmodeÚ	ExceptionrÈ   rd   ©rW   rf   rg   r;   rG   s        r6   Ú
chunk_IHDRzPngStream.chunk_IHDR¾  sì   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�BŠ;ˆ;ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý˜1˜a‘y”y¥# a¨¡)¤)Ð+ˆŒð	Ý,2°A°a´D¸!¸A¼$°<Ô,@Ñ)ˆDŒL˜$œ/˜/øÝð 	ð 	ð 	ØˆDð	øøøàˆRŒ5ð 	*Ø()ˆDŒL˜Ñ%ØˆRŒ5ð 	#Ø+ˆCÝ˜cÑ"Ô"Ð"Øˆs   Á/(B Â
B%Â$B%r
   c                ó  — d| j         v r)t          j        d| j         d         || j        ¦  «        g}n6| j        �
d| j         d<   t          j        dd| j        z   || j        ¦  «        g}|| _        || _        d}t          |¦  «        ‚)NÚbboxrª   TÚdefault_imagerÆ   zimage data found)	rÈ   r   Ú_Tilerë   rÏ   rÊ   rÌ   Úim_idatÚEOFError)rW   rf   rg   rÀ   rG   s        r6   Ú
chunk_IDATzPngStream.chunk_IDATÓ  s‡   € à�T”\Ð!Ð!Ý”O E¨4¬<¸Ô+?ÀÀdÄoÑVÔVÐWˆDˆDàÔÐ+Ø04�”˜_Ñ-Ý”O E¨6°D´LÑ+@À#ÀtÄÑWÔWÐXˆDØˆŒØˆŒØ ˆÝ�s‰mŒmÐr5   c                ó$   — d}t          |¦  «        ‚)Nzend of PNG image)rô   )rW   rf   rg   rG   s       r6   Ú
chunk_IENDzPngStream.chunk_IENDà  s   € Ø ˆÝ�s‰mŒmÐr5   c                ót   — | j         €J ‚t          j        | j         |¦  «        }| j        dk    r	d|f| _        |S )Nr   r   )rQ   r   rŒ   rË   rÍ   ©rW   rf   rg   r;   s       r6   Ú
chunk_PLTEzPngStream.chunk_PLTEä  sA   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØŒ<˜3ÒÐØ# Q˜hˆDŒOØˆr5   c                ó¼  — | j         €J ‚t          j        | j         |¦  «        }| j        dk    rKt                               |¦  «        r&|                     d¦  «        }|dk    r
|| j        d<   nm|| j        d<   nb| j        dv rt          |¦  «        | j        d<   nA| j        dk    r6t          |¦  «        t          |d¦  «        t          |d¦  «        f| j        d<   |S )	Nr   r°   r   Útransparency)r   r   r   r   r%   r&   )	rQ   r   rŒ   rË   Ú_simple_paletteÚmatchrà   rÈ   Úi16)rW   rf   rg   r;   rá   s        r6   Ú
chunk_tRNSzPngStream.chunk_tRNSì  sÝ   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØŒ<˜3ÒÐÝ×$Ò$ QÑ'Ô'ð 	1ð —F’F˜5‘M”M�Ø˜’6�6Ø34�D”L Ñ0øð 01�”˜^Ñ,Ð,ØŒ\Ð/Ð/Ð/Ý+.¨q©6¬6ˆDŒL˜Ñ(Ð(ØŒ\˜UÒ"Ð"Ý+.¨q©6¬6µ3°q¸!±9´9½cÀ!ÀQ¹i¼iÐ+GˆDŒL˜Ñ(Øˆr5   c                ó€   — | j         €J ‚t          j        | j         |¦  «        }t          |¦  «        dz  | j        d<   |S )Nç     jø@Úgamma)rQ   r   rŒ   r`   rÈ   rù   s       r6   Ú
chunk_gAMAzPngStream.chunk_gAMA  s@   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆÝ # A¡¤¨Ñ 1ˆŒ�WÑØˆr5   c                óà   — | j         €J ‚t          j        | j         |¦  «        }t          j        dt          |¦  «        dz  › d�|¦  «        }t          d„ |D ¦   «         ¦  «        | j        d<   |S )Nú>r&   ÚIc              3  ó    K  — | ]	}|d z  V — Œ
dS )r  Nr4   )Ú.0Úelts     r6   ú	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>  s&   è è € Ð,PÐ,PÀ¨S°8©^Ð,PÐ,PÐ,PÐ,PÐ,PÐ,Pr5   Úchromaticity)rQ   r   rŒ   r€   ÚunpackÚlenÚtuplerÈ   )rW   rf   rg   r;   Úraw_valss        r6   Ú
chunk_cHRMzPngStream.chunk_cHRM  su   € ð ŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆÝ”=Ð!3¥S¨¡V¤V¨q¡[Ð!3Ð!3Ð!3°QÑ7Ô7ˆÝ',Ð,PÐ,PÀxÐ,PÑ,PÔ,PÑ'PÔ'PˆŒ�^Ñ$Øˆr5   c                ó¶   — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚|d         | j        d<   |S )Nr   zTruncated sRGB chunkr   Úsrgb)rQ   r   rŒ   rb   rD   rÈ   rí   s        r6   Ú
chunk_sRGBzPngStream.chunk_sRGB  se   € ð ŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ø  œtˆŒ�VÑØˆr5   c                ó@  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |d¦  «        t          |d¦  «        }}|d         }|dk    r|dz  |dz  f}|| j        d<   n|dk    r||f| j        d	<   |S )
Nræ   zTruncated pHYs chunkr   r&   r'   r   ç¦
F%uš?ÚdpiÚaspect)rQ   r   rŒ   rb   rD   r`   rÈ   )	rW   rf   rg   r;   rG   ÚpxÚpyÚunitr  s	            r6   Ú
chunk_pHYszPngStream.chunk_pHYs#  s¸   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ý�Q˜‘”�C  1™IœIˆBˆØ�ŒtˆØ�1Š9ˆ9Ø�v‘+˜r F™{Ð*ˆCØ"%ˆDŒL˜ÑÐØ�QŠYˆYØ%'¨ VˆDŒL˜Ñ"Øˆr5   c                ó‚  — | j         €J ‚t          j        | j         |¦  «        }	 |                     dd¦  «        \  }}n# t          $ r |}d}Y nw xY w|rj|                     dd¦  «        }|                     dd¦  «        }|dk    r|n|| j        |<   || j        |<   |                      t          |¦  «        ¦  «         |S )Nr°   r   r5   r¬   r­   Úreplaces   exif)
rQ   r   rŒ   ÚsplitrD   r{   rÈ   rÉ   r×   r  )rW   rf   rg   r;   ÚkÚvÚk_strÚv_strs           r6   Ú
chunk_tEXtzPngStream.chunk_tEXt5  sÞ   € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	àˆAØˆAˆAˆAð	øøøð ð 	/Ø—H’H˜Y¨Ñ1Ô1ˆEØ—H’H˜Y¨	Ñ2Ô2ˆEà'(¨G¢| | ! !¸ˆDŒL˜ÑØ"'ˆDŒL˜ÑØ×"Ò"¥3 u¡:¤:Ñ.Ô.Ð.àˆs   ¥? ¿AÁAc                óX  — | j         €J ‚t          j        | j         |¦  «        }	 |                     dd¦  «        \  }}n# t          $ r |}d}Y nw xY w|r	|d         }nd}|dk    rd|› d�}t          |¦  «        ‚	 t          |dd …         ¦  «        }n2# t          $ r t          j        rd}n‚ Y nt          j	        $ r d}Y nw xY w|rb| 
                    dd¦  «        }| 
                    dd	¦  «        }	|	x| j        |<   | j        |<   |                      t          |	¦  «        ¦  «         |S )
Nr°   r   r5   r   rÞ   z in zTXt chunkr¬   r­   r  )rQ   r   rŒ   r  rD   rd   rH   rb   r?   r�   r{   rÈ   rÉ   r×   r  )
rW   rf   rg   r;   r   r!  râ   rG   r"  r#  s
             r6   Ú
chunk_zTXtzPngStream.chunk_zTXtI  s‡  € àŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	ØˆAØˆAˆAˆAð	øøøð ð 	Ø˜Aœ$ˆKˆKàˆKØ˜!ÒÐØK°ÐKÐKÐKˆCÝ˜cÑ"Ô"Ð"ð	Ý% a¨¨¨¤eÑ,Ô,ˆAˆAøÝð 	ð 	ð 	ÝÔ.ð Ø��àð �õ Œzð 	ð 	ð 	ØˆAˆAˆAð	øøøð ð 	/Ø—H’H˜Y¨Ñ1Ô1ˆEØ—H’H˜Y¨	Ñ2Ô2ˆEà8=Ð=ˆDŒL˜Ñ $¤,¨uÑ"5Ø×"Ò"¥3 u¡:¤:Ñ.Ô.Ð.àˆs'   ¥? ¿AÁAÁ<B ÂCÂ0CÃCc                ó†  — | j         €J ‚t          j        | j         |¦  «        x}}	 |                     dd¦  «        \  }}n# t          $ r |cY S w xY wt          |¦  «        dk     r|S |d         |d         |dd …         }}}	 |                     dd¦  «        \  }}	}
n# t          $ r |cY S w xY w|dk    rJ|dk    rB	 t          |
¦  «        }
n3# t          $ r t          j        r|cY S ‚ t          j	        $ r |cY S w xY w|S |dk    r
|
| j
        d<   	 |                     dd¦  «        }|                     d	d¦  «        }|	                     d	d¦  «        }|
                     d	d¦  «        }n# t          $ r |cY S w xY wt          |||¦  «        x| j
        |<   | j        |<   |                      t          |¦  «        ¦  «         |S )
Nr°   r   r%   r   s   XML:com.adobe.xmpÚxmpr¬   r­   r®   )rQ   r   rŒ   r  rD   r  rH   rb   r?   r�   rÈ   r{   rº   r’   rÉ   r×   )rW   rf   rg   Úrr;   r   ÚcfÚcmr“   Útkr!  r"  Úlang_strÚtk_strr#  s                  r6   Ú
chunk_iTXtzPngStream.chunk_iTXtl  s0  € àŒwÐ"Ð"Ð"ÝÔ$ T¤W¨fÑ5Ô5Ð5ˆˆAð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøåˆq‰6Œ6�AŠ:ˆ:ØˆHØ�a”D˜!˜Aœ$  ! " "¤�ˆBˆð	ØŸ'š' %¨Ñ+Ô+‰KˆD�"�a�aøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøà�Š7ˆ7Ø�QŠwˆwðÝ-¨aÑ0Ô0�A�AøÝ!ð ð ð Ý Ô6ð Ø ˜˜˜àÝ”zð ð ð Ø�H�H�Hðøøøð �ØÐ$Ò$Ð$Ø"#ˆDŒL˜Ñð	Ø—H’H˜Y¨Ñ1Ô1ˆEØ—{’{ 7¨HÑ5Ô5ˆHØ—Y’Y˜w¨Ñ1Ô1ˆFØ—H’H˜W hÑ/Ô/ˆEˆEøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøõ 59¸ÀÈ&Ñ4QÔ4QÐQˆŒ�UÑ˜dœl¨5Ñ1Ø×Ò�s 5™zœzÑ*Ô*Ð*àˆsN   §A ÁAÁAÂB ÂB-Â,B-Â=C ÃC;Ã'C;Ã:C;ÄAE* Å*E9Å8E9c                óf   — | j         €J ‚t          j        | j         |¦  «        }d|z   | j        d<   |S )Nó   Exif  Úexif)rQ   r   rŒ   rÈ   rù   s       r6   Ú
chunk_eXIfzPngStream.chunk_eXIf—  s:   € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ.°Ñ2ˆŒ�VÑØˆr5   c                óŒ  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚| j        �d | _        t          j        d¦  «         |S t          |¦  «        }|dk    s|dk    rt          j        d¦  «         |S || _        t          |d¦  «        | j	        d<   d| _
        |S )	Nr'   z"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possibler   l        r&   Úloopz
image/apng)rQ   r   rŒ   rb   rD   rÏ   ÚwarningsÚwarnr`   rÈ   rÎ   )rW   rf   rg   r;   rG   Ún_framess         r6   Ú
chunk_acTLzPngStream.chunk_acTLž  sÒ   € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø6ˆCÝ˜S‘/”/Ð!ØÔÐ'Ø#ˆDÔÝŒMÐPÑQÔQÐQØˆHÝ�q‘6”6ˆØ�qŠ=ˆ=˜H zÒ1Ð1ÝŒMÐPÑQÔQÐQØˆHØ#ˆÔÝ" 1 a™yœyˆŒ�VÑØ".ˆÔØˆr5   c                ó  — | j         €J ‚t          j        | j         |¦  «        }|dk     rt          j        r|S d}t	          |¦  «        ‚t          |¦  «        }| j        €|dk    s| j        �| j        |dz
  k    rd}t          |¦  «        ‚|| _        t          |d¦  «        t          |d¦  «        }}t          |d¦  «        t          |d	¦  «        }	}| j        \  }
}||z   |
k    s	|	|z   |k    rd
}t          |¦  «        ‚||	||z   |	|z   f| j	        d<   t          |d¦  «        t          |d¦  «        }}|dk    rd}t          |¦  «        t          |¦  «        z  dz  | j	        d<   |d         | j	        d<   |d         | j	        d<   |S )Né   z"APNG contains truncated fcTL chunkr   r   ú#APNG contains frame sequence errorsr&   r'   rç   r(   zAPNG contains invalid framesrð   é   é   éd   éè  Údurationé   Údisposalé   Úblend)rQ   r   rŒ   rb   rD   r`   rÐ   rd   rÊ   rÈ   rÿ   Úfloat)rW   rf   rg   r;   rG   ÚseqÚwidthÚheightr  r  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r6   Ú
chunk_fcTLzPngStream.chunk_fcTL³  s—  € ØŒwÐ"Ð"Ð"ÝÔ  ¤¨&Ñ1Ô1ˆØ�BŠ;ˆ;ÝÔ.ð Ø�Ø6ˆCÝ˜S‘/”/Ð!Ý�!‰fŒfˆØŒMÐ! c¨Q¢h hØŒMÐ%¨$¬-¸3À¹7Ò*BÐ*Bà7ˆCÝ˜cÑ"Ô"Ð"ØˆŒÝ˜A˜q™	œ	¥3 q¨!¡9¤9ˆvˆÝ�Q˜‘”�S  B™ZœZˆBˆØ”\‰
ˆˆdØ�‰:˜ÒÐ  V¡¨dÒ 2Ð 2Ø0ˆCÝ˜cÑ"Ô"Ð"Ø " B¨¨U©
°B¸±KÐ@ˆŒ�VÑÝ" 1 b™zœz­3¨q°"©:¬:�9ˆ	Ø˜Š>ˆ>ØˆIÝ#(¨Ñ#3Ô#3µe¸IÑ6FÔ6FÑ#FÈÑ#MˆŒ�ZÑ Ø#$ R¤5ˆŒ�ZÑ Ø ! "¤ˆŒ�WÑØˆr5   c                óh  — | j         €J ‚|dk     r9t          j        rt          j        | j         |¦  «        }|S d}t	          |¦  «        ‚t          j        | j         d¦  «        }t          |¦  «        }| j        |dz
  k    rd}t          |¦  «        ‚|| _        |                      |dz   |dz
  ¦  «        S )Nr&   z"APNG contains truncated fDAT chunkr   r<  )	rQ   r   rb   rŒ   rD   r`   rÐ   rd   rõ   )rW   rf   rg   r;   rG   rG  s         r6   Ú
chunk_fdATzPngStream.chunk_fdATÑ  s´   € ØŒwÐ"Ð"Ð"Ø�AŠ:ˆ:ÝÔ.ð ÝÔ(¨¬°&Ñ9Ô9�Ø�Ø6ˆCÝ˜S‘/”/Ð!ÝÔ  ¤¨!Ñ,Ô,ˆÝ�!‰fŒfˆØŒ=˜C !™GÒ#Ð#Ø7ˆCÝ˜cÑ"Ô"Ð"ØˆŒØ�Š˜s Q™w¨°©
Ñ3Ô3Ð3r5   r�   )rÔ   rK   r=   rS   r�   )rf   rK   rg   rK   r=   r<   )rf   rK   rg   rK   r=   r
   )r.   r/   r0   rX   r×   rÚ   rÜ   rã   rî   rõ   r÷   rú   r   r  r  r  r  r$  r&  r/  r3  r9  rN  rP  Ú__classcell__©rÓ   s   @r6   rÄ   rÄ   {  sÏ  ø€ € € € € ðð ð ð ð ð ð""ð "ð "ð "ð
ð 
ð 
ð 
ð2ð 2ð 2ð 2ð
ð ð ð ð8ð ð ð ð*ð ð ð ðð ð ð ðð ð ð ðð ð ð ð*ð ð ð ðð ð ð ðð ð ð ð"ð ð ð ð$ð ð ð ð(!ð !ð !ð !ðF)ð )ð )ð )ðVð ð ð ðð ð ð ð*ð ð ð ð<4ð 4ð 4ð 4ð 4ð 4ð 4ð 4r5   rÄ   Úprefixr£   c                ó(   — | d d…         t           k    S )Nr'   )Ú_MAGIC)rS  s    r6   Ú_acceptrV  æ  s   € Ø�"�1�"Œ:�ÒÐr5   c                  óŠ   ‡ — e Zd ZdZdZdd„Zedd„¦   «         Zdd„Zdd„Z	ddd„Z
dd„Zdd„Zd d„Zdd„Zd!d„Zd"ˆ fd„Zˆ xZS )#ÚPngImageFileÚPNGzPortable network graphicsr=   rS   c                ó|  — t          | j                             d¦  «        ¦  «        sd}t          |¦  «        ‚| j        | _        d| _        g | _        t          | j        ¦  «        | _        	 | j                             ¦   «         \  }}}	 | j         	                    |||¦  «        }nŠ# t          $ r Y nšt          $ rr t                               d|||¦  «         t          j        | j        |¦  «        }|dd…                              ¦   «         r| j                             ||f¦  «         Y nw xY w| j                             ||¦  «         Œá| j        j        | _        | j        j        | _        | j        j        | _        d | _        | j        j        | _        | j        j        | _        | j        j        pd| _        | j                              dd	¦  «        | _!        | j        j"        r)| j        j"        \  }}tG          j$        ||¦  «        | _%        |d
k    r|dz
  | _&        n|| _&        | j        j        �vd	| _'        | j         (                    ¦   «          | j&        | _)        | j         *                    ¦   «         | _+        | j!        r| xj        dz  c_        |  ,                    d¦  «         | j        dk    | _-        d S )Nr'   znot a PNG filer   Tú%r %s %s (unknown)r   r%   rñ   Fó   fdATr&   ).rV  rQ   r^   rd   Ú_fpÚ_PngImageFile__frameÚprivate_chunksrÄ   Úpngr|   rô   ÚAttributeErrorrx   ry   r   rŒ   Úislowerrr   r…   rË   Ú_moderÊ   Ú_sizerÈ   r¿   Ú_textrÌ   rÀ   rÎ   Úcustom_mimetyperÏ   r8  Úgetrñ   rÍ   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrÚ   Ú_PngImageFile__rewind_idatr_   Ú_PngImageFile__rewindÚ_seekÚis_animated)rW   rG   re   rf   rg   r;   ÚrawmoderI   s           r6   Ú_openzPngImageFile._openò  sŽ  € Ý�t”w—|’| A‘”Ñ'Ô'ð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"Ø”7ˆŒØˆŒð
 VXˆÔÝ%.¨t¬wÑ%7Ô%7ˆŒð	!ð  $œxŸ}š}™œÑˆC��fð9Ø”H—M’M # s¨FÑ3Ô3��øÝð ð ð Ø�Ý!ð 9ð 9ð 9Ý—’Ð1°3¸¸VÑDÔDÐDÝÔ(¨¬°&Ñ9Ô9�Ø�q˜�s”8×#Ò#Ñ%Ô%ð 9ØÔ'×.Ò.°°Q¨xÑ8Ô8Ð8øøð	9øøøð ŒH�LŠL˜˜aÑ Ô Ð ð!	!ð2 ”XÔ%ˆŒ
Ø”XÔ%ˆŒ
Ø”HÔ$ˆŒ	Ø37ˆŒ
Ø”HÔ$ˆŒ	Ø#œxÔ:ˆÔØœÔ,Ð1°ˆŒØ!œYŸ]š]¨?¸EÑBÔBˆÔàŒ8Ôð 	;Ø œHÔ/‰MˆG�TÝ'Ô+¨G°TÑ:Ô:ˆDŒLà�'Š>ˆ>Ø"(¨1¡*ˆDÔÐà"(ˆDÔàŒ8ÔÐ+Ø5:ˆDÔ2ØŒH× Ò Ñ"Ô"Ð"Ø!%Ô!4ˆDÔØ œHŸMšM™OœOˆDŒMØÔ!ð #à�” Ñ"�”Ø�JŠJ�q‰MŒMˆMØœ=¨1Ò,ˆÔÐÐs   ÂB( Â(
D/Â4A8D/Ä.D/údict[str, str | iTXt]c                óæ   — | j         €[| j        r$| j        }|                      | j        dz
  ¦  «         |                      ¦   «          | j        r|                      |¦  «         | j         €J ‚| j         S )Nr   )re  ro  r^  r]   r8  Úload)rW   Úframes     r6   r•   zPngImageFile.text5  sy   € ð Œ:Ðð Ôð -Øœ�à—	’	˜$œ-¨!Ñ+Ñ,Ô,Ð,Ø�IŠI‰KŒKˆKØÔð !Ø—	’	˜%Ñ Ô Ð ØŒzÐ%Ð%Ð%ØŒzÐr5   c                óV  — | j         €d}t          |¦  «        ‚| j                              | j        d         d         dz
  ¦  «         | j        €J ‚| j                             ¦   «          | j                             ¦   «          | j        r| j                              ¦   «          d| _         dS )zVerify PNG fileNz)verify must be called directly after openr   r%   r'   )rQ   ÚRuntimeErrorr]   rÀ   r`  rŽ   rn   Ú_exclusive_fp)rW   rG   s     r6   rŽ   zPngImageFile.verifyE  sš   € ð Œ7ˆ?Ø=ˆCÝ˜sÑ#Ô#Ð#ð 	Œ�Š�T”Y˜q”\ !”_ qÑ(Ñ)Ô)Ð)àŒxÐ#Ð#Ð#ØŒ�ŠÑÔÐØŒ�ŠÑÔÐàÔð 	ØŒG�MŠM‰OŒOˆOØˆŒˆˆr5   ru  rK   c                ó^  — |                       |¦  «        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   Tr   zno more images in APNG file)Ú_seek_checkr^  rn  Úrangerô   r]   )rW   ru  Ú
last_frameÚfr„   rG   s         r6   r]   zPngImageFile.seekW  sÍ   € Ø×Ò Ñ&Ô&ð 	ØˆFØ�4”<ÒÐØ�JŠJ�q˜$ÑÔÐà”\ˆ
Ý�t”| aÑ'¨°©Ñ3Ô3ð 	+ð 	+ˆAð+Ø—
’
˜1‘”��øÝð +ð +ð +Ø—	’	˜*Ñ%Ô%Ð%Ø3�Ý˜s‘m”m¨Ð*øøøøð+øøøð	+ð 	+s   ÁA4Á4
B*Á>'B%Â%B*FrÜ   r£   c                óH	  — | j         €J ‚|  d }|dk    �r
|ry| j                             | j        ¦  «         | j                              ¦   «          | j        | _        d | _        | j         j        | _	        | j         j
        | _        | j        | _        d | _        d | _        | j	                             dd¦  «        | _        | j	                             d¦  «        | _        | j	                             d¦  «        | _        | j	                             d¦  «        }d| _        �nx|| j        dz   k    rd|› �}t)          |¦  «        ‚|                      ¦   «          | j        r%| j                             | j        | j        ¦  «         | j                             ¦   «         | _        | j        | _        | j        r&t5          j        | j        | j        ¦  «         d| _        d}	 | j                             d
¦  «         	 | j                              ¦   «         \  }}}n# t:          j        t>          f$ r Y nãw xY w|dk    rd}tA          |¦  «        ‚|dk    r|rd}t?          |¦  «        ‚d	}	 | j          !                    |||¦  «         n�# tD          $ r Y nƒt@          $ r3 |dk    r|d
z  }|r	|| _        Y ndt5          j        | j        |¦  «         Y nFtF          $ r: tH           %                    d|||¦  «         t5          j        | j        |¦  «         Y nw xY w�Œ4|| _        | j         j
        | _        | j	                             d¦  «        | _        | j	                             d¦  «        | _        | j	                             d¦  «        }| j        sd}tA          |¦  «        ‚|r|| _        | j        €&| j        tL          j'        k    rtL          j(        | _        d | _        | j        tL          j'        k    rN| j        rE| j                             ¦   «         | _        |  )                    | j        | j        ¦  «        | _        d S d S | j        tL          j(        k    rVtT          j+         ,                    | j-        | j.        ¦  «        | _        |  )                    | j        | j        ¦  «        | _        d S d S )Nr   rñ   FrC  rE  rð   r   zcannot seek to frame Tr&   r‡   zNo more images in APNG fileó   fcTLzAPNG missing frame datar\  r[  zimage not found in APNG frame)/r`  r]  r]   rm  rÜ   rl  rj  Ú_imrÈ   r¿   rÌ   rÀ   rQ   Ú_prev_imÚdisposerg  rñ   Ú
dispose_opÚblend_opr^  rD   rt  ÚimÚpasteÚdispose_extentrÙ   r   rŒ   r^   r€   r�   rd   rô   r|   ÚUnicodeDecodeErrorra  rx   ry   r-   r3   r2   Ú_cropr   ÚcoreÚfillÚmodeÚsize)	rW   ru  rÜ   r‡  rG   Úframe_startre   rf   rg   s	            r6   rn  zPngImageFile._seekf  ss  € ØŒxÐ#Ð#Ð#àÐ1ØˆØ�AŠ:‰:Øð #Ø”—’˜dœmÑ,Ô,Ð,Ø”—’Ñ!Ô!Ð!Ø&*Ô&8�Ô#Ø�”Ø œHÔ,�”	Ø œHÔ,�”	Øœ(�”Ø ˆDŒMØˆDŒLØ!%¤§¢¨ÀÑ!FÔ!FˆDÔØ"œiŸmšm¨JÑ7Ô7ˆDŒOØ œIŸMšM¨'Ñ2Ô2ˆDŒMØ!œYŸ]š]¨6Ñ2Ô2ˆNØˆDŒL‰Là˜œ qÑ(Ò(Ð(Ø5¨eÐ5Ð5�Ý  ‘o”oÐ%ð �IŠI‰KŒKˆKàŒ|ð AØ”—’˜dœl¨DÔ,?Ñ@Ô@Ð@Ø œGŸLšL™NœNˆDŒMà”hˆDŒGð Ô"ð (ÝÔ$ T¤W¨dÔ.AÑBÔBÐBØ&'�Ô#ØˆKð:Ø”—’˜Q‘”�ðØ'+¤x§}¢}¡¤Ñ$�C˜˜f˜føÝœ¥kÐ2ð ð ð Ø�Eðøøøð ˜'’>�>Ø7�CÝ" 3™-œ-Ð'Ø˜'’>�>Ø"ð /à7˜Ý)¨#Ñ.Ô.Ð.Ø"&�Kð:Ø”H—M’M # s¨FÑ3Ô3Ð3Ð3øÝ)ð ð ð Ø�EÝð :ð :ð :Ø˜g’~�~Ø !™˜Ø&ð "Ø28˜DÔ/Ø!˜EÝÔ(¨¬°&Ñ9Ô9Ð9Ð9Ð9Ý%ð :ð :ð :Ý—L’LÐ!5°s¸CÀÑHÔHÐHÝÔ(¨¬°&Ñ9Ô9Ð9Ð9Ð9ð:øøøñ;:ðB !ˆDŒLØœÔ(ˆDŒIØ"œiŸmšm¨JÑ7Ô7ˆDŒOØ œIŸMšM¨'Ñ2Ô2ˆDŒMØ!œYŸ]š]¨6Ñ2Ô2ˆNà”9ð $Ø5�Ý˜s‘m”mÐ#Øð 	TØESˆDÔð Œ=Ð  T¤_½Ô8LÒ%LÐ%LÝ&Ô4ˆDŒOàˆŒØŒ?�hÔ2Ò2Ð2ØŒ}ð MØ#œ}×1Ò1Ñ3Ô3�”Ø#Ÿzšz¨$¬,¸Ô8KÑLÔL�”��ðMð Mð Œ_¥Ô 6Ò6Ð6Ý œ:Ÿ?š?¨4¬9°d´iÑ@Ô@ˆDŒLØŸ:š: d¤l°DÔ4GÑHÔHˆDŒLˆLˆLð 7Ð6s7   Ç6H ÈH-È,H-É#J  Ê 
L
ÊL
Ê+L
ËA L
Ì	L
c                ó   — | j         S rU   )r^  ri   s    r6   r_   zPngImageFile.tellÈ  s
   € ØŒ|Ðr5   c                ó®   — | j                              d¦  «        r| j        dz   | _        | j        | _        t
          j                             | ¦  «         dS )z"internal: prepare to read PNG filerè   )r   N)r¿   rg  Údecoderconfigrj  Ú_PngImageFile__idatr   Úload_prepareri   s    r6   r“  zPngImageFile.load_prepareË  sQ   € ð Œ9�=Š=˜Ñ%Ô%ð 	;Ø!%Ô!3°dÑ!:ˆDÔàÔ)ˆŒÝÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r5   Ú
read_bytesr<   c                ó  — | j         €J ‚| j        dk    rª| j                             d¦  «         | j                              ¦   «         \  }}}|dvr| j                              |||¦  «         dS |dk    r9	 | j                              |||¦  «         n# t          $ r Y nw xY w|dz
  | _        n|| _        | j        dk    °ª|dk    r| j        }nt          || j        ¦  «        }| j        |z
  | _        | j                             |¦  «        S )zinternal: read more image dataNr   r&   )ó   IDATs   DDATr\  r5   r\  )r`  r’  rQ   r^   rt   r|   rô   Úmin)rW   r”  re   rf   rg   s        r6   Ú	load_readzPngImageFile.load_readÔ  s$  € ð ŒxÐ#Ð#Ð#ØŒk˜QÒÐð ŒG�LŠL˜‰OŒOˆOà#œxŸ}š}™œÑˆC��fàÐ5Ð5Ð5Ø”—’˜c 3¨Ñ/Ô/Ð/Ø�sà�gŠ~ˆ~ðØ”H—M’M # s¨FÑ3Ô3Ð3Ð3øÝð ð ð Ø�Dðøøøà$ q™j�”�à$�”ð% Œk˜QÒÐð* ˜Š?ˆ?ØœˆJˆJå˜Z¨¬Ñ5Ô5ˆJà”k JÑ.ˆŒàŒw�|Š|˜JÑ'Ô'Ð's   Á5B Â
BÂBc                ó|  — | j         €J ‚| j        dk    r| j                             | j        ¦  «         	 | j                             d¦  «         	 | j                              ¦   «         \  }}}n# t          j        t          f$ r Y �nAw xY w|dk    r�n5|dk    r,| j        r%d| _        | j          	                    |||¦  «         �n	 | j          
                    |||¦  «         nã# t          $ r Y nÙt          $ rP |dk    r|dz  }	 t          j        | j        |¦  «         n&# t          $ r}t          j        rY d}~Y n�|‚d}~ww xY wY nt"          $ rs t$                               d|||¦  «         t          j        | j        |¦  «        }|d	d
…                              ¦   «         r| j                             ||df¦  «         Y nw xY w�Œ“| j         j        | _        | j        s"| j                              ¦   «          d| _         dS | j        �r0| j        t8          j        k    �r|                      | j        | j         ¦  «        }| j        j!        dk    r+d| j"        v r"| #                    d| j"        d         ¦  «        }n�| j        j!        dk    rkd| j"        v rb| j"        d         }tI          |tJ          ¦  «        r| &                    |¦  «         n*tI          |tN          ¦  «        r| (                    |¦  «         | )                    d¦  «        }| j         *                    || j         |¦  «         | j        | _        dS dS dS )z%internal: finished reading image dataNr   Tr&   r‡   r  r\  r[  r   r%   r   rü   r$   r   )+r`  r’  rQ   r^   r€   r�   rd   ro  rj  rt   r|   rˆ  rô   r   rŒ   r‹   rb   ra  rx   ry   rb  r_  rr   rÉ   re  rn   r�  r„  r8   r:   r‰  r…  r‡  rŒ  r¿   Úconvert_transparentr±   r<   ÚputpalettealphasrK   ÚputpalettealphaÚconvertr†  )	rW   re   rf   rg   r„   r;   ÚupdatedÚmaskÚts	            r6   Úload_endzPngImageFile.load_endö  s|  € àŒxÐ#Ð#Ð#ØŒ;˜!ÒÐØŒG�LŠL˜œÑ%Ô%Ð%ð"	?ØŒG�LŠL˜‰OŒOˆOðØ#'¤8§=¢=¡?¤?Ñ ��S˜&˜&øÝ”L¥+Ð.ð ð ð Ø‘ðøøøð �gŠ~ˆ~ÙØ˜’� DÔ$4�à&'�Ô#Ø”—’˜c 3¨Ñ/Ô/Ð/Ùð?Ø”—’˜c 3¨Ñ/Ô/Ð/Ð/øÝ%ð ð ð Ø�Ýð 	 ð 	 ð 	 Ø˜'’>�>Ø˜a‘K�Fð ÝÔ(¨¬°&Ñ9Ô9Ð9Ð9øÝð  ð  ð  Ý Ô6ð  Ø˜˜˜˜˜à˜øøøøð	 øøøð :Ð9õ "ð ?ð ?ð ?Ý—’Ð1°3¸¸VÑDÔDÐDÝÔ(¨¬°&Ñ9Ô9�Ø�q˜�s”8×#Ò#Ñ%Ô%ð ?ØÔ'×.Ò.°°Q¸¨~Ñ>Ô>Ð>øøð	?øøøñ="	?ðF ”XÔ%ˆŒ
ØÔð 	(ØŒH�NŠNÑÔÐØˆDŒHˆHˆHàŒ}ñ ( ¤µ%´-Ò!?Ñ!?ØŸ*š* T¤W¨dÔ.AÑBÔB�Ø”7”< 5Ò(Ð(¨^¸t¼yÐ-HÐ-HØ"×6Ò6Ø ¤	¨.Ô 9ñô �D�Dð ”w”| sÒ*Ð*¨~ÀÄÐ/JÐ/JØ œI nÔ5˜Ý% a­Ñ/Ô/ð 7Ø#×4Ò4°QÑ7Ô7Ð7Ð7Ý'¨­3Ñ/Ô/ð 7Ø#×3Ò3°AÑ6Ô6Ð6Ø"Ÿ?š?¨6Ñ2Ô2�DØ”×#Ò# G¨TÔ-@À$ÑGÔGÐGØœ-�”��ð(ð (Ð!?Ð!?sa   ÁA. Á.BÂBÃC# Ã#
GÃ/GÄDÄGÄ
EÄ)D=Ä5GÄ;D=Ä=EÅGÅA9GÇGúdict[int, Any] | Nonec                ó°   — d| j         vr|                      ¦   «          d| j         vrd| j         vrd S |                      ¦   «                              ¦   «         S )Nr2  zRaw profile type exif)r¿   rt  ÚgetexifÚ_get_merged_dictri   s    r6   Ú_getexifzPngImageFile._getexif4  sU   € Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKØ˜œÐ"Ð"Ð'>ÀdÄiÐ'OÐ'OØ�4Ø�|Š|‰~Œ~×.Ò.Ñ0Ô0Ð0r5   ú
Image.Exifc                ó~   •— d| j         vr|                      ¦   «          t          ¦   «                              ¦   «         S )Nr2  )r¿   rt  rÇ   r¤  )rW   rÓ   s    €r6   r¤  zPngImageFile.getexif;  s1   ø€ Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKå‰wŒw�ŠÑ Ô Ð r5   r�   )r=   rr  )ru  rK   r=   rS   r¼   )ru  rK   rÜ   r£   r=   rS   )r=   rK   )r”  rK   r=   r<   )r=   r¢  )r=   r§  )r.   r/   r0   ÚformatÚformat_descriptionrq  Úpropertyr•   rŽ   r]   rn  r_   r“  r˜  r¡  r¦  r¤  rQ  rR  s   @r6   rX  rX  î  s3  ø€ € € € € Ø€FØ4ÐðA-ð A-ð A-ð A-ðF ðð ð ñ „Xððð ð ð ð$+ð +ð +ð +ð`Ið `Ið `Ið `Ið `IðDð ð ð ð/ð /ð /ð /ð (ð  (ð  (ð  (ðD<(ð <(ð <(ð <(ð|1ð 1ð 1ð 1ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !r5   rX  )r   ó   r°   )úL;1r¬  r°   )r   ó   r°   )r   ó   r°   )r   ó   r°   )r#   r°  r¯  )r   ó   r°   )r    r¬  ó   )r!   r®  r²  )r"   r¯  r²  )r   r°  r²  )r   r°  r®  )r$   r°  ó   )r   r­  r   r   r   r#   r  r   r   r    r!   r"   r   r   r$   rQ   rR   re   rS   c                ó<  — d                      |¦  «        }|                      t          t          |¦  «        ¦  «        |z   ¦  «         |                      |¦  «         t	          |t	          |¦  «        ¦  «        }|                      t          |¦  «        ¦  «         dS )z'Write a PNG chunk (including CRC field)r5   N)ÚjoinÚwriteÚo32r  rN   )rQ   re   rI   Ú	byte_datar…   s        r6   Úputchunkr¹  Y  s}   € ð —’˜‘”€Ià‡H‚H�S•�Y‘”Ñ Ô  3Ñ&Ñ'Ô'Ð'Ø‡H‚HˆYÑÔÐÝ
��F 3™KœKÑ
(Ô
(€CØ‡H‚H�S�‰XŒXÑÔÐÐÐr5   c                  ó   — e Zd Zdd„Zdd
„ZdS )Ú_idatrQ   rR   ÚchunkúCallable[..., None]r=   rS   c                ó"   — || _         || _        d S rU   )rQ   r¼  )rW   rQ   r¼  s      r6   rX   z_idat.__init__g  s   € ØˆŒØˆŒ
ˆ
ˆ
r5   rI   r<   c                ó>   — |                       | j        d|¦  «         d S )Nr–  )r¼  rQ   ©rW   rI   s     r6   r¶  z_idat.writek  s    € Ø�
Š
�4”7˜G TÑ*Ô*Ð*Ð*Ð*r5   N)rQ   rR   r¼  r½  r=   rS   ©rI   r<   r=   rS   ©r.   r/   r0   rX   r¶  r4   r5   r6   r»  r»  d  s<   € € € € € ðð ð ð ð+ð +ð +ð +ð +ð +r5   r»  c                  ó   — e Zd Zdd	„Zdd„ZdS )Ú_fdatrQ   rR   r¼  r½  rÁ   rK   r=   rS   c                ó0   — || _         || _        || _        d S rU   )rQ   r¼  rÁ   )rW   rQ   r¼  rÁ   s       r6   rX   z_fdat.__init__r  s   € ØˆŒØˆŒ
ØˆŒˆˆr5   rI   r<   c                ó„   — |                       | j        dt          | j        ¦  «        |¦  «         | xj        dz  c_        d S )Nr\  r   )r¼  rQ   r·  rÁ   rÀ  s     r6   r¶  z_fdat.writew  s:   € Ø�
Š
�4”7˜G¥S¨¬Ñ%6Ô%6¸Ñ=Ô=Ð=ØˆŒ˜ÑˆŒˆˆr5   N)rQ   rR   r¼  r½  rÁ   rK   r=   rS   rÁ  rÂ  r4   r5   r6   rÄ  rÄ  o  s<   € € € € € ðð ð ð ð
ð ð ð ð ð r5   rÄ  c                  ó.   — e Zd ZU ded<   ded<   ded<   dS )Ú_FrameúImage.Imager…  z tuple[int, int, int, int] | Nonerð   zdict[str, Any]ÚencoderinfoNrÂ   r4   r5   r6   rÈ  rÈ  |  s3   € € € € € € Ø€O€O�OØ*Ð*Ð*Ñ*ØÐÐÑÐÐr5   rÈ  r…  rÉ  r¼  r½  rŒ  r–   rp  rñ   úImage.Image | NoneÚappend_imagesúlist[Image.Image]c                óú  — | j                              d¦  «        }| j                              d| j                             dd¦  «        ¦  «        }| j                              d| j                             dt          j        ¦  «        ¦  «        }	| j                              d| j                             dt
          j        ¦  «        ¦  «        }
|rt          j        |¦  «        }nt          j        | g|¦  «        }g }d}|D �]ï}t          j
        |¦  «        D �]Ö}|j        |k    r|                     ¦   «         }n|                     |¦  «        }| j                              ¦   «         }t          |t          t           f¦  «        r||         |d<   n|€d|j        v r|j        d         |d<   t          |	t          t           f¦  «        r|	|         |d<   t          |
t          t           f¦  «        r|
|         |d<   |dz  }|�rÆ|d         }|j                              d¦  «        }|j                              d¦  «        }|t          j        k    rt%          |¦  «        dk     rt          j        }|t          j        k    r|j                             ¦   «         }t*          j                             d	| j        d
¦  «        }|j        }|r|                     |¦  «        }n
d| j        z   }|                     ||¦  «         n%|t          j        k    r|d         j        }n|j        }t9          j        |                     d	¦  «        |                     d	¦  «        ¦  «        }|                     d¬¦  «        }|sS||                     d¦  «        k    r:||                     d¦  «        k    r!d|v r|j         dxx         |d         z  cc<   �Œ¯nd }|                     tA          |||¦  «        ¦  «         �ŒØ�Œñt%          |¦  «        dk    r|s|d         j        S  ||dtC          t%          |¦  «        ¦  «        tC          |¦  «        ¦  «         |r€| j        |k    r|                      |¦  «        } tE          j#        | tI          tJ          tL                   tO          ||¦  «        ¦  «        tE          j(        dd| j        z   d|¦  «        g¦  «         d}tS          |¦  «        D �] \  }}|j        }|j        sd|j        z   }n|j        }|                     |¦  «        }|j        }|j         }tU          tW          |                     dd¦  «        ¦  «        ¦  «        }|                     d|	¦  «        }|                     d|
¦  «        } ||dtC          |¦  «        tC          |d         ¦  «        tC          |d         ¦  «        tC          |d         ¦  «        tC          |d         ¦  «        tY          |¦  «        tY          d¦  «        t[          |¦  «        t[          |¦  «        ¦  «         |dz  }|dk    rd|sbtE          j#        |tI          tJ          tL                   tO          ||¦  «        ¦  «        tE          j(        dd|j        z   d|¦  «        g¦  «         �Œ¶t]          |||¦  «        }tE          j#        |tI          tJ          tL                   |¦  «        tE          j(        dd|j        z   d|¦  «        g¦  «         |j/        }�Œ"d S )NrA  r5  r   rC  rE  r   éÿÿÿÿr%   r$   )r   r   r   r   rÆ   éþÿÿÿF)Ú
alpha_onlys   acTLrª   r  r@  )0rÊ  rg  r¿   r-   r1   r8   r9   Ú	itertoolsÚchainr   ÚIteratorrŒ  rÙ   r�  r±   Úlistr  r3   r  r2   r…  r   rŠ  r‹  r�  rð   Úcropr†  r   Úsubtract_moduloÚgetbboxrr   rÈ  r·  r   Ú_saver   r   r<   r»  rò   Ú	enumeraterK   ÚroundÚo16r   rÄ  rÁ   ) r…  rQ   r¼  rŒ  rp  rñ   rÌ  rA  r5  rC  rE  rÓ  Ú	im_framesÚframe_countÚim_seqÚim_framerÊ  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imr‚  rð   ÚdeltarÁ   ru  Ú
frame_datar�  Úframe_durationÚframe_disposalÚframe_blendÚfdat_chunkss                                    r6   Ú_write_multiple_framesrë  ‚  s’  € ð Œ~×!Ò! *Ñ-Ô-€HØŒ>×Ò˜f b¤g§k¢k°&¸!Ñ&<Ô&<Ñ=Ô=€DØŒ~×!Ò! *¨b¬g¯kªk¸*ÅhÔFVÑ.WÔ.WÑXÔX€HØŒN×Ò˜w¨¬¯ª°G½U¼_Ñ(MÔ(MÑNÔN€Eàð 5Ý” Ñ.Ô.ˆˆå”   mÑ4Ô4ˆà €IØ€KØð 3Bñ 3BˆÝ%Ô.¨vÑ6Ô6ð 2	Bñ 2	BˆHØŒ} Ò$Ð$Ø#Ÿ=š=™?œ?��à#×+Ò+¨DÑ1Ô1�Øœ.×-Ò-Ñ/Ô/ˆKÝ˜(¥T­5 MÑ2Ô2ð DØ*2°;Ô*?�˜JÑ'Ð'ØÐ! j°H´MÐ&AÐ&AØ*2¬-¸
Ô*C�˜JÑ'Ý˜(¥T­5 MÑ2Ô2ð @Ø*2°;Ô*?�˜JÑ'Ý˜%¥$­ Ñ/Ô/ð :Ø',¨[Ô'9�˜GÑ$Ø˜1ÑˆKàñ !Ø$ Rœ=�Ø (Ô 4× 8Ò 8¸Ñ DÔ D�Ø%Ô1×5Ò5°gÑ>Ô>�
Ø ¥HÔ$8Ò8Ð8½SÀ¹^¼^ÈaÒ=OÐ=OÝ$,Ô$:�Mà ¥HÔ$:Ò:Ð:Ø&œk×.Ò.Ñ0Ô0�GÝ#œjŸošo¨f°b´g¸|ÑLÔL�GØ#œ=�DØð 0Ø")§,¢,¨tÑ"4Ô"4˜˜à%¨¬Ñ/˜Ø—M’M '¨4Ñ0Ô0Ð0Ð0Ø"¥hÔ&:Ò:Ð:Ø'¨œmÔ.�G�Gà&œk�GÝ"Ô2Ø×$Ò$ VÑ,Ô,¨g¯oªo¸fÑ.EÔ.Eñô �ð —}’}°�}Ñ6Ô6�àðà%¨¯ª¸Ñ)DÔ)DÒDÐDØ" k§o¢o°gÑ&>Ô&>Ò>Ð>Ø" kÐ1Ð1àÔ(¨Ð4Ð4Ô4¸ÀJÔ8OÑOÐ4Ð4Ñ4Ùøà�Ø×Ò�V H¨d°KÑ@Ô@ÑAÔAÐAÑAñe2	Bõh ˆ9�~„~˜ÒÐ =ÐØ˜Œ|ŒÐð 
€EØ
ØÝ�C�	‰NŒNÑÔÝˆD‰	Œ	ñ	ô ð ð ð 
ØŒ7�dŠ?ˆ?Ø—’˜DÑ!Ô!ˆBÝŒØÝ••E”�E " eÑ,Ô,Ñ-Ô-ÝŒ_˜U F¨R¬WÑ$4°a¸ÑAÔAÐBñ	
ô 	
ð 	
ð €GÝ& yÑ1Ô1ð **ñ **ÑˆˆzØ”=ˆØŒð 	+Ø˜HœMÑ)ˆDˆDà”?ˆDØ—}’} TÑ*Ô*ˆHØŒ}ˆØ Ô,ˆÝ�U ;§?¢?°:¸qÑ#AÔ#AÑBÔBÑCÔCˆØ$Ÿš¨°XÑ>Ô>ˆØ!—o’o g¨uÑ5Ô5ˆàˆØØÝ�‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ��Q”‰LŒLÝ�ÑÔÝ�‰IŒIÝˆ~ÑÔÝˆ{‰OŒOñ	
ô 	
ð 	
ð 	�1‰ˆà�AŠ:ˆ:˜mˆ:åŒOØÝ•R�”Y¥ b¨%Ñ 0Ô 0Ñ1Ô1Ý” ¨°´Ñ(>ÀÀ7ÑKÔKÐLñô ð ñ õ    E¨7Ñ3Ô3ˆKÝŒOØÝ•R�”Y Ñ,Ô,Ý” ¨°´Ñ(>ÀÀ7ÑKÔKÐLñô ð ð
 "Ô)ˆG‰GØˆ4r5   Úfilenamer¨   c                ó,   — t          | ||d¬¦  «         d S )NT)Úsave_all)rÙ  )r…  rQ   rì  s      r6   Ú	_save_allrï    s   € Ý	ˆ"ˆb�( TÐ*Ñ*Ô*Ð*Ð*Ð*r5   Frî  c                ó´  ‡(— |�r| j                              d| j                             d¦  «        ¦  «        }t          ¦   «         }t          ¦   «         Š(| j                              dg ¦  «        }t	          j        | g|¦  «        D ]M}t          j        |¦  «        D ]6}	|                     |	j	        ¦  «         ‰(                     |	j
        ¦  «         Œ7ŒNdD ]}
|
|v r nŒ	|                     ¦   «         }
t          ˆ(fd„t          d¦  «        D ¦   «         ¦  «        }n| j
        }| j	        }
|
}|
dk    rŸd| j         v rt          d| j         d         z  d	¦  «        }nU| j        rLt!          t          t#          | j                             ¦   «         d         ¦  «        d
z  d	¦  «        d¦  «        }nd	}|dk    r|dk    rd}n|dk    rd}nd}|d|› �z  }| j                              dd¦  «        | j                              dd¦  «        | j                              dd¦  «        | j                              dd¦  «        f| _        	 t(          |         \  }}}n(# t*          $ r}d|
› d�}t-          |¦  «        |‚d }~ww xY w|                     t0          ¦  «          ||dt3          |d         ¦  «        t3          |d         ¦  «        ||ddd¦	  «	         g d¢}| j                              d| j                             d¦  «        ¦  «        }|r>d}|dz   t5          j        |¦  «        z   } ||d|¦  «         |                     d¦  «         | j                              d ¦  «        }|ršg d!¢}|j        D ]Ž}|d d…         \  }}||v r#|                     |¦  «          ||||¦  «         Œ6||v r ||||¦  «         ŒH|dd…                              ¦   «         r*t#          |¦  «        d
k    o|d         }|s ||||¦  «         Œ�| j	        dk    r_|d
z  }| j                              d"¦  «        d |…         }t#          |¦  «        |k     r|dz  }t#          |¦  «        |k     ° ||d#|¦  «         | j                              d$| j                             d$d ¦  «        ¦  «        }|s|dk    �r| j	        dk    rk|} tC          |tD          ¦  «        r ||d%|d | …         ¦  «         �n@t!          dt          d&|¦  «        ¦  «        }d'|z  dz   }! ||d%|!d | …         ¦  «         �n| j	        d(v r9t!          dt          d)|¦  «        ¦  «        } ||d%tG          |¦  «        ¦  «         nÁ| j	        d"k    rA|\  }"}#}$ ||d%tG          |"¦  «        tG          |#¦  «        z   tG          |$¦  «        z   ¦  «         nud$| j         v rd*}t-          |¦  «        ‚nZ| j	        dk    rO| j         $                    ¦   «         d+k    r2| j                              d+d,¦  «        }!|}  ||d%|!d | …         ¦  «         | j                              d-¦  «        }%|%r[ ||d.t3          tK          |%d         d/z  d0z   ¦  «        ¦  «        t3          tK          |%d         d/z  d0z   ¦  «        ¦  «        d1¦  «         |rAd2d3g}|j        D ]5}|d d…         \  }}||v r"|                     |¦  «          ||||¦  «         Œ6| j                              d4¦  «        }&|&r[tC          |&tL          j'        ¦  «        r|& (                    d5¦  «        }&|& )                    d6¦  «        r
|&d7d …         }& ||d8|&¦  «         | }'|rtU          | |||
|||¦  «        }'|'r`tW          j,        |'t[          t\          tD                   t_          ||¦  «        ¦  «        tW          j0        d9d:|'j
        z   d|¦  «        g¦  «         |r]|j        D ]U}|d d…         \  }}|dd…                              ¦   «         r*t#          |¦  «        d
k    o|d         }|r ||||¦  «         ŒV ||d;d¦  «         tc          |d<¦  «        r| 2                    ¦   «          d S d S )=Nrñ   rÌ  )r$   r   r   c              3  óP   •‡K  — | ]Št          ˆfd „‰D ¦   «         ¦  «        V — Œ dS )c              3  ó(   •K  — | ]}|‰         V — Œd S rU   r4   )r	  Ú
frame_sizerá   s     €r6   r  z"_save.<locals>.<genexpr>.<genexpr>-  s'   øè è € Ð?Ð?¨:˜ AœÐ?Ð?Ð?Ð?Ð?Ð?r5   N)Úmax)r	  rá   Úsizess    @€r6   r  z_save.<locals>.<genexpr>-  sA   øøè è € ÐRÐRÀA•SÐ?Ð?Ð?Ð?¸Ð?Ñ?Ô?Ñ?Ô?ÐRÐRÐRÐRÐRÐRr5   r%   r   Úbitsr   é   r)   r(   r&   ú;ÚoptimizeFÚcompress_levelrÏ  Úcompress_typeÚ
dictionaryr5   zcannot write mode z as PNGs   IHDRr   r°   )s   cHRMs   gAMAs   sBITó   sRGBs   tIMErß   s   ICC Profiler¸   s   iCCPrý  Úpnginfo)s   sPLTr¯   r¹   r·   r   s   PLTErü   s   tRNSéÿ   ó   ÿ)r   r   r  r   iÿÿ  z%cannot use transparency for this moder$   ÚAr  s   pHYsr  g      à?r¬  s   bKGDs   hISTr2  r'   r1  r*   s   eXIfrª   rÆ   r‡   Úflush)3rÊ  rg  r¿   ÚsetrÒ  rÓ  r   rÔ  r¥   rŒ  r�  r\   r  r{  r—  ri  rô  r  ÚgetdataÚencoderconfigÚ	_OUTMODESÚKeyErrorr‹   r¶  rU  r·  r?   r³   Úremover¡   rb  r…  Ú
getpaletter±   r<   rÜ  ÚgetpalettemoderK   r   ÚExifÚtobytesÚ
startswithrë  r   rÙ  r   r   r»  rò   Úhasattrr  ))r…  rQ   rì  r¼  rî  rñ   ÚmodesrÌ  rß  rà  rŒ  r�  ÚoutmodeÚcolorsrö  rp  Ú	bit_depthÚ
color_typer„   rG   r¡   ÚiccÚnamerI   r¿   Úchunks_multiple_allowedÚ
info_chunkre   r¢   Úpalette_byte_numberÚpalette_bytesrü   Úalpha_bytesÚalphaÚredÚgreenÚbluer  r2  Ú	single_imrõ  s)                                           @r6   rÙ  rÙ    sg	  ø€ ð ñ Øœ×*Ò*Ø˜RœWŸ[š[¨Ñ9Ô9ñ
ô 
ˆõ ‘”ˆÝ‘”ˆØœ×*Ò*¨?¸BÑ?Ô?ˆÝ”o r d¨MÑ:Ô:ð 	)ð 	)ˆFÝ)Ô2°6Ñ:Ô:ð )ð )�Ø—	’	˜(œ-Ñ(Ô(Ð(Ø—	’	˜(œ-Ñ(Ô(Ð(Ð(ð)ð )ð 	ð 	ˆDØ�uˆ}ˆ}Ø�ð ð —9’9‘;”;ˆDÝÐRÐRÐRÐRÍÈqÉÌÐRÑRÔRÑRÔRˆˆàŒwˆØŒwˆà€GØˆs‚{€{ð �R”^Ð#Ð#å˜˜bœn¨VÔ4Ñ4°cÑ:Ô:ˆFˆFð Œzð Ý�S¥ R¤Z×%7Ò%7Ñ%9Ô%9¸!Ô%<Ñ!=Ô!=ÀÑ!BÀCÑHÔHÈ!ÑLÔL��à�à�RŠ<ˆ<Ø˜Š{ˆ{Ø��Ø˜1’�Ø��à�Ø�z˜4�z�zÑ!ˆGð 	Œ×Ò˜: uÑ-Ô-Ø
Œ×ÒÐ+¨RÑ0Ô0Ø
Œ×Ò˜?¨BÑ/Ô/Ø
Œ×Ò˜<¨Ñ-Ô-ð	€BÔð"Ý)2°7Ô);Ñ&ˆ�˜J˜JøÝð "ð "ð "Ø0 4Ð0Ð0Ð0ˆÝ�c‰lŒl Ð!øøøøð"øøøð ‡H‚H�VÑÔÐà	€EØ
ØÝˆD�ŒG‰ŒÝˆD�ŒG‰ŒØØØØØñ
ô 
ð 
ð ;Ð:Ð:€Fà
Œ.×
Ò
˜]¨B¬G¯KªK¸Ñ,FÔ,FÑ
GÔ
G€CØ
ð ð ˆØ�g‰~¥¤¨cÑ 2Ô 2Ñ2ˆØˆˆb�'˜4Ñ Ô Ð ð 	�Š�gÑÔÐàŒ>×Ò˜iÑ(Ô(€DØð )Ø"FÐ"FÐ"FÐØœ+ð 	)ð 	)ˆJØ" 2 A 2œ‰IˆC�Ø�fˆ}ˆ}Ø—’˜cÑ"Ô"Ð"Ø��b˜#˜tÑ$Ô$Ð$Ð$ØÐ/Ð/Ð/Ø��b˜#˜tÑ$Ô$Ð$Ð$Ø�Q�q�S”×!Ò!Ñ#Ô#ð )å  ™_œ_°Ò1ÐC°jÀ´m�
Ø!ð )Ø�E˜"˜c 4Ñ(Ô(Ð(øà	„w�#‚~€~Ø$ q™jÐØœ×(Ò(¨Ñ/Ô/Ð0DÐ1DÐ0DÔEˆÝ�-Ñ Ô Ð#6Ò6Ð6Ø˜UÑ"ˆMõ �-Ñ Ô Ð#6Ò6Ð6àˆˆb�'˜=Ñ)Ô)Ð)à”>×%Ò% n°b´g·k²kÀ.ÐRVÑ6WÔ6WÑXÔX€Làð 4�| qÒ(Ñ(ØŒ7�cŠ>ˆ>à ˆKÝ˜,­Ñ.Ô.ð 8Ø��b˜' <°°°Ô#=Ñ>Ô>Ð>Ñ>å" 1¥c¨#¨|Ñ&<Ô&<Ñ=Ô=�Ø ,Ñ.°Ñ6�Ø��b˜' 5¨¨+¨Ô#6Ñ7Ô7Ð7Ñ7ØŒWÐ/Ð/Ð/Ý˜q¥# e¨\Ñ":Ô":Ñ;Ô;ˆLØˆE�"�g�s <Ñ0Ô0Ñ1Ô1Ð1Ð1ØŒW˜ÒÐØ+ÑˆC�˜ØˆE�"�g�s 3™xœx­#¨e©*¬*Ñ4µs¸4±y´yÑ@ÑAÔAÐAÐAà ¤Ð/Ð/ð >�Ý˜c‘l”lÐ"ð	 0ð Œ7�cŠ>ˆ>˜bœe×2Ò2Ñ4Ô4¸Ò>Ð>Ø”E×$Ò$ V¨SÑ1Ô1ˆEØ ˆKØˆE�"�g˜u \ k \Ô2Ñ3Ô3Ð3à
Œ.×
Ò
˜UÑ
#Ô
#€CØ
ð 
ØˆØØÝ•�C˜”F˜V‘O cÑ)Ñ*Ô*Ñ+Ô+Ý•�C˜”F˜V‘O cÑ)Ñ*Ô*Ñ+Ô+Øñ	
ô 	
ð 	
ð ð %Ø˜7Ð#ˆØœ+ð 	%ð 	%ˆJØ" 2 A 2œ‰IˆC�Ø�fˆ}ˆ}Ø—’˜cÑ"Ô"Ð"Ø��b˜#˜tÑ$Ô$Ð$øàŒ>×Ò˜fÑ%Ô%€DØð !Ý�d�EœJÑ'Ô'ð 	#Ø—<’< ‘?”?ˆDØ�?Š?˜?Ñ+Ô+ð 	Ø˜˜˜”8ˆDØˆˆb�'˜4Ñ Ô Ð à$&€IØð 
Ý*Ø��E˜4 ¨-¸ñ
ô 
ˆ	ð ð 
ÝŒØÝ••E”�E " eÑ,Ô,Ñ-Ô-ÝŒ_˜U F¨Y¬^Ñ$;¸QÀÑHÔHÐIñ	
ô 	
ð 	
ð ð )Øœ+ð 	)ð 	)ˆJØ" 2 A 2œ‰IˆC�Ø�1�Q�3Œx×ÒÑ!Ô!ð )å  ™_œ_°Ò1ÐC°jÀ´m�
Øð )Ø�E˜"˜c 4Ñ(Ô(Ð(øà	€Eˆ"ˆg�sÑÔÐåˆr�7ÑÔð Ø
�Š‰
Œ
ˆ
ˆ
ˆ
ðð s   É I É
I7ÉI2É2I7Úparamsr   ú list[tuple[bytes, bytes, bytes]]c                ó€   ‡— ddl m} g Šdˆfd
„} |¦   «         }	 || _        t          | |d|¦  «         | `n# | `w xY w‰S )z4Return a list of PNG chunks representing this image.r   )ÚBytesIOrQ   rR   re   r<   rI   r=   rS   c                ó¶   •— d                      |¦  «        }t          t          |t          |¦  «        ¦  «        ¦  «        }‰                     |||f¦  «         d S )Nr5   )rµ  r·  rN   rr   )rQ   re   rI   r¸  r…   r¡   s        €r6   rr   zgetchunks.<locals>.appendï  sN   ø€ Ø—H’H˜T‘N”Nˆ	Ý•&˜¥F¨3¡K¤KÑ0Ô0Ñ1Ô1ˆØ�Š�s˜I sÐ+Ñ,Ô,Ð,Ð,Ð,r5   r¦   ©rQ   rR   re   r<   rI   r<   r=   rS   )Úior#  rÊ  rÙ  )r…  r   r#  rr   rQ   r¡   s        @r6   Ú	getchunksr'  é  s‚   ø€ àÐÐÐÐÐà€Fð-ð -ð -ð -ð -ð -ð
 
ˆ‰Œ€BðØˆŒÝˆb�"�b˜&Ñ!Ô!Ð!àˆNˆNøˆBˆNÐÐÐÐà€Ms   ›7 ·;z.pngz.apngz	image/png)r;   r<   r=   r<   )r   )rI   r<   rJ   rK   r=   rK   )rS  r<   r=   r£   r%  )r…  rÉ  rQ   rR   r¼  r½  rŒ  r–   rp  r–   rñ   rË  rÌ  rÍ  r=   rË  )r…  rÉ  rQ   rR   rì  r¨   r=   rS   )r…  rÉ  rQ   rR   rì  r¨   r¼  r½  rî  r£   r=   rS   )r…  rÉ  r   r   r=   r!  )KÚ
__future__r   rÒ  ÚloggingÚrer€   r6  r?   Úcollections.abcr   Úenumr   Útypingr   r   r   r	   r
   r   r¦   r   r   r   r   r   Ú_binaryr   rÿ   r   r`   r   r   rÜ  r   r·  r   Ú	getLoggerr.   rx   Úcompilerþ   ra   rU  rê   rý   Ú	SAFEBLOCKrB   rÖ   r-   r8   rH   rN   rP   r–   r’   rŸ   r¾   rÄ   rV  rX  r  r¹  r»  rÄ  rÈ  rë  rï  rÙ  r'  Úregister_openr©  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer4   r5   r6   ú<module>r7     sK  ððB #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !àð ØÐÐÐÐÐà	ˆÔ	˜8Ñ	$Ô	$€à	ˆŒ�LÑ	!Ô	!Ô	'€ð 
€ð ØØØØàØàØØØàØàØ!ð+
ð 
€ð2 �"”*Ð0Ñ1Ô1€àÔ$€ðð
 �~Ñ%€ððð ð ð ð ˆwñ ô ð ð*ð ð ð ð ˆGñ ô ð ðð ð ð ð/ð /ð /ð /ð /ð[ð [ð [ð [ð [ñ [ô [ð [ð|ð ð ð ð ˆ3ñ ô ð ð6Y3ð Y3ð Y3ð Y3ð Y3ñ Y3ô Y3ð Y3ð@ð ð ð ð �:ñ ô ð ðd4ð d4ð d4ð d4ð d4�ñ d4ô d4ð d4ðV ð  ð  ð  ðQ!ð Q!ð Q!ð Q!ð Q!�9Ô&ñ Q!ô Q!ð Q!ðr
 
!Ø$Ø$Ø$Ø	 Ø
"Ø	$Ø'Ø(Ø$Ø$Ø$Ø	 Ø$Ø&ð!ð €	ð(ð ð ð ð+ð +ð +ð +ð +ñ +ô +ð +ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð ð  ð  ð  ð  ˆZñ  ô  ð  ðKð Kð Kð Kð\+ð +ð +ð +ð "*ØðNð Nð Nð Nð Nðjð ð ð ð2 €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7à €Ô ˜,Ô-°¸Ð/@Ñ AÔ AÐ Aà €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r5   