§
    œ"²c½µ  ã                   ó”  — 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	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 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¦  «        Z& G d!„ d"e¦  «        Z'd#„ Z(d$„ Z)dLd%„Z* G d&„ d'¦  «        Z+ G d(„ d)e,¦  «        Z- G d*„ d+¦  «        Z. G d,„ d-e+¦  «        Z/d.„ Z0 G d/„ d0ej        ¦  «        Z1d1d2d3d4d5d6d7d7d8d9d:d;d<d=d>œZ2d?„ Z3 G d@„ dA¦  «        Z4 G dB„ dC¦  «        Z5dD„ Z6dE„ Z7e3dFfdG„Z8dH„ Z9 e	j:        e1j;        e1e0¦  «          e	j<        e1j;        e8¦  «          e	j=        e1j;        e7¦  «          e	j>        e1j;        dIdJg¦  «          e	j?        e1j;        dK¦  «         dS )Mé    N)ÚIntEnumé   )ÚImageÚ
ImageChopsÚ	ImageFileÚImagePaletteÚImageSequence)Úi16be)Úi32be)Úo8)Úo16be)Úo32be)Ú	deprecates   \w\w\w\ws   ‰PNG

)Ú1r   )ÚLúL;2)r   úL;4)r   r   )ÚIú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© ó    ú4/usr/lib/python3/dist-packages/PIL/PngImagePlugin.pyr%   r%   c   s1   € € € € € Ø€Gðð €Mðð
 €Kðð r-   r%   c                   ó   — e Zd ZdZ	 dZdS )ÚBlendr   r   N)r&   r'   r(   Ú	OP_SOURCEÚOP_OVERr,   r-   r.   r0   r0   x   s%   € € € € € Ø€Iðð
 €Gðð r-   r0   c                 óH  — t           dt          di                     ¦   «         D ]c\  }}|                      |¦  «        rI| t	          |¦  «        d …         } | |j        v r)t          |› | › �d|j        › d| › �¦  «         ||          c S Œddt          › d| › d�}t          |¦  «        ‚)NÚAPNG_DISPOSE_ÚAPNG_BLEND_é
   ú.zmodule 'z' has no attribute 'ú')	r%   r0   ÚitemsÚ
startswithÚlenÚ__members__r   r&   ÚAttributeError)ÚnameÚenumÚprefixÚmsgs       r.   Ú__getattr__rB   †   sÄ   € Ý! ?µE¸=ÐI×OÒOÑQÔQð "ð "‰ˆˆfØ�?Š?˜6Ñ"Ô"ð 	"Ø�˜F™œ˜˜Ô&ˆDØ�tÔ'Ð'Ð'Ý˜VÐ+ TÐ+Ð+¨R°D´MÐ1JÐ1JÀDÐ1JÐ1JÑKÔKÐKØ˜D”zÐ!Ð!Ð!øØ
:•XÐ
:Ð
:°4Ð
:Ð
:Ð
:€CÝ
˜Ñ
Ô
Ðr-   c                 ó’   — t          j        ¦   «         }|                     | t          ¦  «        }|j        rd}t          |¦  «        ‚|S )NzDecompressed Data Too Large)ÚzlibÚdecompressobjÚ
decompressÚMAX_TEXT_CHUNKÚunconsumed_tailÚ
ValueError)ÚsÚdobjÚ	plaintextrA   s       r.   Ú_safe_zlib_decompressrM   ‘   sE   € ÝÔÑÔ€DØ—’ ¥>Ñ2Ô2€IØÔð Ø+ˆÝ˜‰oŒoÐØÐr-   c                 ó2   — t          j        | |¦  «        dz  S )Nl   ÿÿ )rD   Úcrc32)ÚdataÚseeds     r.   Ú_crc32rR   š   s   € ÝŒ:�d˜DÑ!Ô! JÑ.Ð.r-   c                   óL   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd„ZdS )ÚChunkStreamc                 ó"   — || _         g | _        d S ©N)ÚfpÚqueue)ÚselfrW   s     r.   Ú__init__zChunkStream.__init__£   s   € àˆŒØˆŒ
ˆ
ˆ
r-   c                 ó   — d}| 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 ú))rX   ÚpoprW   ÚseekÚreadÚtellÚi32Úis_cidr   ÚLOAD_TRUNCATED_IMAGESÚreprÚSyntaxError)rY   ÚcidÚposÚlengthrJ   rA   s         r.   r_   zChunkStream.read¨   sÂ   € àˆàŒ:ð 	Ø#œzŸ~š~Ñ/Ô/ÑˆC��fØŒG�LŠL˜ÑÔÐÐà”—’˜Q‘”ˆAØ�A�B�B”%ˆCØ”'—,’,‘.”.ˆCÝ˜‘V”VˆFå�c‰{Œ{ð 	'ÝÔ2ð 'Ø<µ°S±	´	Ð<Ð<Ð<�Ý! #Ñ&Ô&Ð&à�C˜ÐÐr-   c                 ó   — | S rV   r,   ©rY   s    r.   Ú	__enter__zChunkStream.__enter__¼   s   € Øˆr-   c                 ó.   — |                       ¦   «          d S rV   )Úclose)rY   Úargss     r.   Ú__exit__zChunkStream.__exit__¿   s   € Ø�
Š
‰Œˆˆˆr-   c                 ó"   — d x| _         | _        d S rV   )rX   rW   rj   s    r.   rm   zChunkStream.closeÂ   s   € Ø#Ð#ˆŒ
�T”W�W�Wr-   c                 ó@   — | j                              |||f¦  «         d S rV   )rX   Úappend©rY   rf   rg   rh   s       r.   ÚpushzChunkStream.pushÅ   s%   € àŒ
×Ò˜3  VÐ,Ñ-Ô-Ð-Ð-Ð-r-   c                 óœ   — t                                d|||¦  «          t          | d|                     d¦  «        z   ¦  «        ||¦  «        S )z"Call the appropriate chunk handlerzSTREAM %r %s %sÚchunk_Úascii)ÚloggerÚdebugÚgetattrÚdecoders   s       r.   ÚcallzChunkStream.callÉ   sJ   € õ 	�ŠÐ&¨¨S°&Ñ9Ô9Ð9Ø<�w�t˜X¨¯
ª
°7Ñ(;Ô(;Ñ;Ñ<Ô<¸SÀ&ÑIÔIÐIr-   c                 ó¸  — t           j        r&|d         dz	  dz  r|                      ||¦  «         dS 	 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   rc   Úcrc_skiprR   ra   rW   r_   rd   re   ÚstructÚerror)rY   rf   rP   Úcrc1Úcrc2rA   Úes          r.   ÚcrczChunkStream.crcÏ   së   € õ Ô*ð 	°°A´¸!±¸a±ð 	Ø�MŠM˜#˜tÑ$Ô$Ð$ØˆFð	*Ý˜$¥ 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Â1#CÃCc                 ó:   — | j                              d¦  «         dS )zRead checksumr   N)rW   r_   )rY   rf   rP   s      r.   r   zChunkStream.crc_skipã   s   € ð 	Œ�Š�Q‰Œˆˆˆr-   ó   IENDc                 ó(  — g }	 	 |                       ¦   «         \  }}}n)# t          j        $ r}d}t          |¦  «        |‚d }~ww xY w||k    rnD|                      |t          j        | j        |¦  «        ¦  «         |                     |¦  «         ŒŽ|S )NTztruncated PNG file)	r_   r€   r�   ÚOSErrorr…   r   Ú
_safe_readrW   rr   )rY   ÚendchunkÚcidsrf   rg   rh   r„   rA   s           r.   ÚverifyzChunkStream.verifyè   s¬   € ð
 ˆð
	ð*Ø#'§9¢9¡;¤;Ñ ��S˜&˜&øÝ”<ð *ð *ð *Ø*�Ý˜c‘l”l¨Ð)øøøøð*øøøð �hŠˆØØ�HŠH�S�)Ô.¨t¬w¸Ñ?Ô?Ñ@Ô@Ð@Ø�KŠK˜ÑÔÐð
	ð ˆs   … žA­?¿AN)r‡   )r&   r'   r(   rZ   r_   rk   ro   rm   rt   r|   r…   r   r�   r,   r-   r.   rT   rT   ¢   s²   € € € € € ðð ð ð
 ð  ð  ð(ð ð ðð ð ð$ð $ð $ð.ð .ð .ðJð Jð Jð*ð *ð *ð(ð ð ð
ð ð ð ð ð r-   rT   c                   ó*   — e Zd ZdZedd„¦   «         ZdS )ÚiTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    Nc                 ó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
        )ÚstrÚ__new__ÚlangÚtkey)ÚclsÚtextr“   r”   rY   s        r.   r’   ziTXt.__new__  s*   € õ �{Š{˜3 Ñ%Ô%ˆØˆŒ	ØˆŒ	Øˆr-   )NN)r&   r'   r(   Ú__doc__Ústaticmethodr’   r,   r-   r.   r�   r�   þ   s>   € € € € € ðð ð ðð ð ñ „\ðð ð r-   r�   c                   ó0   — e Zd ZdZd„ Zd	d„Zd
d„Zd	d„ZdS )ÚPngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c                 ó   — g | _         d S rV   )Úchunksrj   s    r.   rZ   zPngInfo.__init__  s   € ØˆŒˆˆr-   Fc                 óŠ   — ||g}|r|                      d¦  «         | j                              t          |¦  «        ¦  «         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

        TN)rr   rœ   Útuple)rY   rf   rP   Ú
after_idatÚchunks        r.   ÚaddzPngInfo.add  sI   € ð �d�ˆØð 	Ø�LŠL˜ÑÔÐØŒ×Ò�5 ™<œ<Ñ(Ô(Ð(Ð(Ð(r-   Ú c                 ó*  — 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)Ú
isinstanceÚbytesÚencoder¡   rD   Úcompress)rY   ÚkeyÚvaluer“   r”   Úzips         r.   Ú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ÐTr-   c                 ó  — t          |t          ¦  «        r$|                      |||j        |j        |¬¦  «        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

        )r¯   r¤   r¥   ó   zTXtó     ó   tEXtr¨   N)r©   r�   r°   r“   r”   rª   r«   ÚUnicodeErrorr¡   rD   r¬   )rY   r­   r®   r¯   s       r.   Úadd_textzPngInfo.add_textH  s  € õ �e�TÑ"Ô"ð 	NØ—=’=  e¨U¬Z¸¼È�=ÑMÔMÐMõ ˜%¥Ñ'Ô'ð 	:ð:ØŸš 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   ÁA' Á'"BÂBN©F)r¢   r¢   F)r&   r'   r(   r—   rZ   r¡   r°   r¶   r,   r-   r.   rš   rš     sm   € € € € € ðð ð
ð ð ð)ð )ð )ð )ðUð Uð Uð Uð83ð 3ð 3ð 3ð 3ð 3r-   rš   c                   ó–   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )Ú	PngStreamc                 óä   •— t          ¦   «                              |¦  «         i | _        i | _        d| _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d| _        d S )N©r   r   r   )ÚsuperrZ   Úim_infoÚim_textÚim_sizeÚim_modeÚim_tileÚ
im_paletteÚim_custom_mimetypeÚim_n_framesÚ_seq_numÚrewind_stateÚtext_memory)rY   rW   Ú	__class__s     €r.   rZ   zPngStream.__init__i  st   ø€ Ý‰Œ×Ò˜ÑÔÐð ˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØ"&ˆÔØˆÔØˆŒØ ˆÔàˆÔÐÐr-   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_MEMORYrI   )rY   ÚchunklenrA   s      r.   Úcheck_text_memoryzPngStream.check_text_memoryz  sY   € ØÐÔ˜HÑ$ÐÔØÔ�oÒ-Ð-ð6ØÔ#ð6ð 6ð 6ð õ ˜S‘/”/Ð!ð .Ð-r-   c                 ó^   — | j                              ¦   «         | j        | j        dœ| _        d S )N)ÚinfoÚtileÚseq_num)r½   ÚcopyrÁ   rÅ   rÆ   rj   s    r.   Úsave_rewindzPngStream.save_rewindƒ  s2   € à”L×%Ò%Ñ'Ô'Ø”LØ”}ð
ð 
ˆÔÐÐr-   c                 ór   — | j         d         | _        | j         d         | _        | j         d         | _        d S )NrÎ   rÏ   rÐ   )rÆ   r½   rÁ   rÅ   rj   s    r.   ÚrewindzPngStream.rewindŠ  s3   € ØÔ(¨Ô0ˆŒØÔ(¨Ô0ˆŒØÔ)¨)Ô4ˆŒˆˆr-   c                 óâ  — t          j        | j        |¦  «        }|                     d¦  «        }t                               d|d |…         ¦  «         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 %rzCompression method %sr   úUnknown compression method z in iCCP chunkr   Úicc_profile)r   rŠ   rW   Úfindrx   ry   re   rM   rI   rc   rD   r�   r½   )rY   rg   rh   rJ   ÚiÚcomp_methodrA   r×   s           r.   Ú
chunk_iCCPzPngStream.chunk_iCCP�  s  € õ Ô  ¤¨&Ñ1Ô1ˆð �FŠF�5‰MŒMˆÝ�ŠÐ+¨Q¨r°¨r¬UÑ3Ô3Ð3Ý�ŠÐ,¨a°¬dÑ3Ô3Ð3Ø˜”dˆØ˜!ÒÐØK°ÐKÐKÐKˆCÝ˜cÑ"Ô"Ð"ð	Ý/°°!°a±%°'°'´
Ñ;Ô;ˆKˆKøÝð 	ð 	ð 	ÝÔ.ð Ø"��àð �õ Œzð 	ð 	ð 	ØˆKˆKˆKð	øøøà&1ˆŒ�]Ñ#Øˆs   ÂB3 Â3C"ÃC"Ã!C"c                 ó˜  — 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)r   rŠ   rW   rc   rI   ra   r¿   Ú_MODESrÀ   Ú
im_rawmodeÚ	Exceptionr½   re   ©rY   rg   rh   rJ   rA   s        r.   Ú
chunk_IHDRzPngStream.chunk_IHDR«  sà   € õ Ô  ¤¨&Ñ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c                 ó¸   — d| j         v rd| j         d         || j        fg}n%| j        �
d| j         d<   dd| j        z   || j        fg}|| _        || _        t          ‚)NÚbboxr¯   TÚdefault_imager»   )r½   rã   rÄ   r¿   rÁ   Úim_idatÚEOFError)rY   rg   rh   rÏ   s       r.   Ú
chunk_IDATzPngStream.chunk_IDATÀ  so   € ð �T”\Ð!Ð!Ø˜DœL¨Ô0°#°t´ÐGÐHˆDˆDàÔÐ+Ø04�”˜_Ñ-Ø˜F T¤\Ñ1°3¸¼ÐHÐIˆDØˆŒØˆŒÝˆr-   c                 ó   — t           ‚rV   )rë   )rY   rg   rh   s      r.   Ú
chunk_IENDzPngStream.chunk_IENDÍ  s	   € õ ˆr-   c                 ób   — t          j        | j        |¦  «        }| j        dk    r	d|f| _        |S )Nr   r   )r   rŠ   rW   rÀ   rÂ   ©rY   rg   rh   rJ   s       r.   Ú
chunk_PLTEzPngStream.chunk_PLTEÒ  s5   € õ Ô  ¤¨&Ñ1Ô1ˆØŒ<˜3ÒÐØ# Q˜hˆDŒOØˆr-   c                 óª  — 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   )	r   rŠ   rW   rÀ   Ú_simple_paletteÚmatchrØ   r½   Úi16)rY   rg   rh   rJ   rÙ   s        r.   Ú
chunk_tRNSzPngStream.chunk_tRNSÚ  sÐ   € õ Ô  ¤¨&Ñ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˜Ñ(Øˆr-   c                 ón   — t          j        | j        |¦  «        }t          |¦  «        dz  | j        d<   |S )Nç     jø@Úgamma)r   rŠ   rW   ra   r½   rð   s       r.   Ú
chunk_gAMAzPngStream.chunk_gAMAï  s2   € åÔ  ¤¨&Ñ1Ô1ˆÝ # A¡¤¨Ñ 1ˆŒ�WÑØˆr-   c                 óÌ   — t          j        | j        |¦  «        }t          j        dt          |¦  «        dz  z  |¦  «        }t          d„ |D ¦   «         ¦  «        | j        d<   |S )Nz>%dIr   c              3   ó    K  — | ]	}|d z  V — Œ
dS )rú   Nr,   )Ú.0Úelts     r.   ú	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>û  s&   è è € Ð,PÐ,PÀ¨S°8©^Ð,PÐ,PÐ,PÐ,PÐ,PÐ,Pr-   Úchromaticity)r   rŠ   rW   r€   Úunpackr;   rž   r½   )rY   rg   rh   rJ   Úraw_valss        r.   Ú
chunk_cHRMzPngStream.chunk_cHRMõ  s`   € õ Ô  ¤¨&Ñ1Ô1ˆÝ”= ­3¨q©6¬6°Q©;Ñ!7¸Ñ;Ô;ˆÝ',Ð,PÐ,PÀxÐ,PÑ,PÔ,PÑ'PÔ'PˆŒ�^Ñ$Øˆr-   c                 ó¤   — t          j        | j        |¦  «        }|dk     rt           j        r|S d}t	          |¦  «        ‚|d         | j        d<   |S )Nr   zTruncated sRGB chunkr   Úsrgb)r   rŠ   rW   rc   rI   r½   rå   s        r.   Ú
chunk_sRGBzPngStream.chunk_sRGBþ  sW   € õ Ô  ¤¨&Ñ1Ô1ˆØ�AŠ:ˆ:ÝÔ.ð Ø�Ø(ˆCÝ˜S‘/”/Ð!Ø  œtˆŒ�VÑØˆr-   c                 ó.  — 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)r   rŠ   rW   rc   rI   ra   r½   )	rY   rg   rh   rJ   rA   ÚpxÚpyÚunitr  s	            r.   Ú
chunk_pHYszPngStream.chunk_pHYs  s¬   € õ Ô  ¤¨&Ñ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˜Ñ"Øˆr-   c                 óp  — 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   r-   r¤   r¥   ÚreplaceÚexif)
r   rŠ   rW   ÚsplitrI   r{   r½   r¾   rÌ   r;   )rY   rg   rh   rJ   ÚkÚvÚv_strs          r.   Ú
chunk_tEXtzPngStream.chunk_tEXt   sÐ   € õ Ô  ¤¨&Ñ1Ô1ˆð	Ø—7’7˜5 !Ñ$Ô$‰DˆAˆqˆqøÝð 	ð 	ð 	àˆAØˆAˆAˆAð	øøøð ð 	/Ø—’˜ HÑ-Ô-ˆAØ—H’H˜Y¨	Ñ2Ô2ˆEà#$¨¢; ;˜a˜a°EˆDŒL˜‰OØ#ˆDŒL˜‰OØ×"Ò"¥3 u¡:¤:Ñ.Ô.Ð.àˆs   œ6 ¶AÁAc                 óF  — 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   r-   r   rÖ   z in zTXt chunkr¤   r¥   r  )r   rŠ   rW   r  rI   re   rM   rc   rD   r�   r{   r½   r¾   rÌ   r;   )rY   rg   rh   rJ   r  r  rÚ   rA   s           r.   Ú
chunk_zTXtzPngStream.chunk_zTXt4  sy  € õ Ô  ¤¨&Ñ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Ñ-Ô-ˆAØ—’˜ IÑ.Ô.ˆAà01Ð1ˆDŒL˜‰O˜dœl¨1™oØ×"Ò"¥3 q¡6¤6Ñ*Ô*Ð*àˆs'   œ6 ¶AÁAÁ3B ÂB:Â'B:Â9B:c                 óT  — 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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   r¤   r¥   r¦   )r   rŠ   rW   r  rI   r;   rM   rc   rD   r�   r{   rµ   r�   r½   r¾   rÌ   )rY   rg   rh   ÚrrJ   r  ÚcfÚcmr“   Útkr  s              r.   Ú
chunk_iTXtzPngStream.chunk_iTXtW  s
  € õ Ô$ 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ðøøøð �ð	Ø—’˜ HÑ-Ô-ˆAØ—;’;˜w¨Ñ1Ô1ˆDØ—’˜7 HÑ-Ô-ˆBØ—’˜ (Ñ+Ô+ˆAˆAøÝð 	ð 	ð 	ØˆHˆHˆHð	øøøõ -1°°D¸"Ñ,=Ô,=Ð=ˆŒ�Q‰˜$œ, q™/Ø×Ò�s 1™vœvÑ&Ô&Ð&àˆsL   ž8 ¸AÁAÁ:B ÂB$Â#B$Â4C ÃC2ÃC2Ã1C2Ã8AE ÅE ÅE c                 óT   — t          j        | j        |¦  «        }d|z   | j        d<   |S )Nó   Exif  r  )r   rŠ   rW   r½   rð   s       r.   Ú
chunk_eXIfzPngStream.chunk_eXIf€  s,   € ÝÔ  ¤¨&Ñ1Ô1ˆØ.°Ñ2ˆŒ�VÑØˆr-   c                 óz  — 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)r   rŠ   rW   rc   rI   rÄ   ÚwarningsÚwarnra   r½   rÃ   )rY   rg   rh   rJ   rA   Ún_framess         r.   Ú
chunk_acTLzPngStream.chunk_acTL†  sÄ   € ÝÔ  ¤¨&Ñ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ÑØ".ˆÔØˆr-   c                 óü  — 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)r   rŠ   rW   rc   rI   ra   rÅ   re   r¿   r½   r÷   Úfloat)rY   rg   rh   rJ   rA   ÚseqÚwidthÚheightr  r  Úim_wÚim_hÚ	delay_numÚ	delay_dens                 r.   Ú
chunk_fcTLzPngStream.chunk_fcTLš  s‰  € ÝÔ  ¤¨&Ñ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ÑØˆr-   c                 óV  — |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,  )	r   rc   rŠ   rW   rI   ra   rÅ   re   rì   )rY   rg   rh   rJ   rA   r7  s         r.   Ú
chunk_fdATzPngStream.chunk_fdAT·  s¦   € Ø�AŠ:ˆ:ÝÔ.ð ÝÔ(¨¬°&Ñ9Ô9�Ø�Ø6ˆCÝ˜S‘/”/Ð!ÝÔ  ¤¨!Ñ,Ô,ˆÝ�!‰fŒfˆØŒ=˜C !™GÒ#Ð#Ø7ˆCÝ˜cÑ"Ô"Ð"ØˆŒØ�Š˜s Q™w¨°©
Ñ3Ô3Ð3r-   )r&   r'   r(   rZ   rÌ   rÒ   rÔ   rÛ   ræ   rì   rî   rñ   rø   rü   r  r  r  r  r  r   r#  r)  r>  r@  Ú__classcell__©rÈ   s   @r.   r¹   r¹   h  sf  ø€ € € € € ðð ð ð ð ð""ð "ð "ð
ð 
ð 
ð5ð 5ð 5ð
ð ð ð8ð ð ð*ð ð ðð ð ð
ð ð ðð ð ð*ð ð ðð ð ðð ð ð ð ð ð$ð ð ð(!ð !ð !ðF'ð 'ð 'ðRð ð ðð ð ð(ð ð ð:4ð 4ð 4ð 4ð 4ð 4ð 4r-   r¹   c                 ó(   — | d d…         t           k    S )Nr   )Ú_MAGIC)r@   s    r.   Ú_acceptrE  Ë  s   € Ø�"�1�"Œ:�ÒÐr-   c                   óz   ‡ — e Zd ZdZdZd„ Zed„ ¦   «         Zd„ Zd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚPngImageFileÚPNGzPortable network graphicsc                 ó|  — 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   ).rE  rW   r_   re   Ú_fpÚ_PngImageFile__frameÚprivate_chunksr¹   Úpngr|   rë   r=   rx   ry   r   rŠ   Úislowerrr   r…   rÀ   Úmoder¿   Ú_sizer½   rÎ   Ú_textrÁ   rÏ   rÃ   Úcustom_mimetyperÄ   r(  Úgetré   rÂ   r   ÚrawÚpaletteÚ_PngImageFile__prepare_idatÚ!_close_exclusive_fp_after_loadingrÒ   Ú_PngImageFile__rewind_idatr`   Ú_PngImageFile__rewindÚ_seekÚis_animated)rY   rA   rf   rg   rh   rJ   ÚrawmoderP   s           r.   Ú_openzPngImageFile._openØ  sŒ  € å�t”w—|’| A‘”Ñ'Ô'ð 	#Ø"ˆCÝ˜cÑ"Ô"Ð"Ø”7ˆŒØˆŒð
 !ˆÔÝ˜TœWÑ%Ô%ˆŒð	!ð
  $œ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Ñ Ô Ð ð#	!ð4 ”HÔ$ˆŒ	Ø”XÔ%ˆŒ
Ø”HÔ$ˆŒ	ØˆŒ
Ø”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/c                 óÔ   — | j         €[| j        r$| j        }|                      | j        dz
  ¦  «         |                      ¦   «          | j        r|                      |¦  «         | j         S )Nr   )rS  r]  rM  r^   r(  Úload)rY   Úframes     r.   r–   zPngImageFile.text  sk   € ð Œ:Ðð Ôð -Øœ�à—	’	˜$œ-¨!Ñ+Ñ,Ô,Ð,Ø�IŠI‰KŒKˆKØÔð !Ø—	’	˜%Ñ Ô Ð ØŒzÐr-   c                 óD  — | j         €d}t          |¦  «        ‚| j                              | j        d         d         dz
  ¦  «         | j                             ¦   «          | j                             ¦   «          | j        r| j                              ¦   «          d| _         dS )zVerify PNG fileNz)verify must be called directly after openr   r   r   )rW   ÚRuntimeErrorr^   rÏ   rO  r�   rm   Ú_exclusive_fp)rY   rA   s     r.   r�   zPngImageFile.verify,  sŒ   € ð Œ7ˆ?Ø=ˆCÝ˜sÑ#Ô#Ð#ð 	Œ�Š�T”Y˜q”\ !”_ qÑ(Ñ)Ô)Ð)àŒ�ŠÑÔÐØŒ�ŠÑÔÐàÔð 	ØŒG�MŠM‰OŒOˆOØˆŒˆˆr-   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_checkrM  r\  Úrangerë   r^   )rY   rb  Ú
last_frameÚfr„   rA   s         r.   r^   zPngImageFile.seek=  sÍ   € Ø×Ò Ñ&Ô&ð 	ØˆFØ�4”<ÒÐØ�JŠJ�q˜$ÑÔÐà”\ˆ
Ý�t”| aÑ'¨°©Ñ3Ô3ð 	+ð 	+ˆAð+Ø—
’
˜1‘”��øÝð +ð +ð +Ø—	’	˜*Ñ%Ô%Ð%Ø3�Ý˜s‘m”m¨Ð*øøøøð+øøøð	+ð 	+s   ÁA4Á4
B*Á>'B%Â%B*Fc                 ó&	  — |dk    �r|r‡| j                              | j        ¦  «         | j                             ¦   «          | j        | _        d | _        | j        rd | _        | j        j	        | _
        | j        j        | _        | j         | _        d | _        d | _        | j
                             dd¦  «        | _        | j
                             d¦  «        | _        | j
                             d¦  «        | _        | j
                             d¦  «        | _        d| _        �ns|| 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t@          ‚| j        €&| j        tL          j'        k    rtL          j(        | _        | j        tL          j'        k    rE| j                             ¦   «         | _        |  )                    | j        | j        ¦  «        | _        d S | j        tL          j(        k    rVtT          j+         ,                    | j-        | j.        ¦  «        | _        |  )                    | j        | j        ¦  «        | _        d S d | _        d S )Nr   ré   Fr3  r5  rè   r   zcannot seek to frame Tr   r‡   zNo more images in APNG fileó   fcTLzAPNG missing frame datarK  rJ  )/rL  r^   r[  rO  rÔ   rZ  rX  ÚimÚpyaccessr½   rÎ   rÁ   rÏ   rW   Ú_prev_imÚdisposerU  ré   Ú
dispose_opÚblend_opÚdispose_extentrM  rI   ra  ÚpasterÑ   r   rŠ   r_   r€   r�   re   rë   r|   ÚUnicodeDecodeErrorr=   rx   ry   r%   r+   r*   Ú_cropr   ÚcoreÚfillrQ  Úsize)rY   rb  rÔ   rA   Úframe_startrf   rg   rh   s           r.   r\  zPngImageFile._seekL  s7  € Ø�AŠ:‰:Øð 	#Ø”—’˜dœmÑ,Ô,Ð,Ø”—’Ñ!Ô!Ð!Ø&*Ô&8�Ô#Ø�”Ø”=ð )Ø$(�D”MØ œHÔ,�”	Ø œHÔ,�”	Øœ(�”Ø ˆDŒMØˆDŒLØ!%¤§¢¨ÀÑ!FÔ!FˆDÔØ"œiŸmšm¨JÑ7Ô7ˆDŒOØ œIŸMšM¨'Ñ2Ô2ˆDŒMØ"&¤)§-¢-°Ñ"7Ô"7ˆDÔØˆ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Ø"&¤)§-¢-°Ñ"7Ô"7ˆDÔà”9ð Ý�ð Œ=Ð  T¤_½Ô8LÒ%LÐ%LÝ&Ô4ˆDŒOàŒ?�hÔ2Ò2Ð2Øœ=×-Ò-Ñ/Ô/ˆDŒLØŸ:š: d¤l°DÔ4GÑHÔHˆDŒLˆLˆLØŒ_¥Ô 6Ò6Ð6Ý œ:Ÿ?š?¨4¬9°d´iÑ@Ô@ˆDŒLØŸ:š: d¤l°DÔ4GÑHÔHˆDŒLˆLˆLàˆDŒLˆLˆLs7   Ç<H ÈH3È2H3É)J Ê
LÊLÊ1LËA LÌLc                 ó   — | j         S rV   )rM  rj   s    r.   r`   zPngImageFile.tell©  s
   € ØŒ|Ðr-   c                 ó®   — | j                              d¦  «        r| j        dz   | _        | j        | _        t
          j                             | ¦  «         dS )z"internal: prepare to read PNG filerà   )r   N)rÎ   rU  ÚdecoderconfigrX  Ú_PngImageFile__idatr   Úload_preparerj   s    r.   r  zPngImageFile.load_prepare¬  sQ   € ð Œ9�=Š=˜Ñ%Ô%ð 	;Ø!%Ô!3°dÑ!:ˆDÔàÔ)ˆŒÝÔ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r-   c                 ó  — | 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 datar   r   )ó   IDATs   DDATrK  r-   rK  )r~  rW   r_   rO  rt   r|   rë   Úmin)rY   Ú
read_bytesrf   rg   rh   s        r.   Ú	load_readzPngImageFile.load_readµ  s  € ð Œ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   Á,B	 Â	
BÂBc                 óÄ  — | j         dk    r| j                             | j         ¦  «         	 | j                             d¦  «         	 | j                             ¦   «         \  }}}n# t          j        t          f$ r Y �nw xY w|dk    r�n|dk    r+| j        r$d| _        | j         	                    |||¦  «         nÛ	 | j         
                    |||¦  «         n»# t          $ r Y n±t          $ r( |dk    r|dz  }t          j        | j        |¦  «         Y nt          $ rs t                                d|||¦  «         t          j        | j        |¦  «        }|dd	…                              ¦   «         r| j                             ||df¦  «         Y nw xY w�Œj| j        j        | _        | j        s"| j                             ¦   «          d
| _        d
S | j        r…| j        t4          j        k    rr|                      | j        | j        ¦  «        }| j                             || j        |                      d¦  «        ¦  «         | j        | _        | j!        rd
| _!        d
S d
S d
S d
S )z%internal: finished reading image datar   Tr   r‡   rl  rK  rJ  r   r   Nr   )"r~  rW   r_   rO  r€   r�   re   r]  rX  rt   r|   ru  rë   r   rŠ   r=   rx   ry   rP  rN  rr   r¾   rS  rm   ro  rr  r0   r2   rv  rm  rs  rt  Úconvertrn  )rY   rf   rg   rh   rJ   Úupdateds         r.   Úload_endzPngImageFile.load_endÖ  sŽ  € àŒ;˜!ÒÐØŒG�LŠL˜œÑ%Ô%Ð%ð	?ØŒG�LŠL˜‰OŒOˆOðØ#'¤8§=¢=¡?¤?Ñ ��S˜&˜&øÝ”L¥+Ð.ð ð ð Ø‘ðøøøð �gŠ~ˆ~ÙØ˜’� DÔ$4�à&'�Ô#Ø”—’˜c 3¨Ñ/Ô/Ð/Øð?Ø”—’˜c 3¨Ñ/Ô/Ð/Ð/øÝ%ð ð ð Ø�Ýð 6ð 6ð 6Ø˜'’>�>Ø˜a‘K�FÝÔ$ T¤W¨fÑ5Ô5Ð5Ð5Ð5Ý!ð ?ð ?ð ?Ý—’Ð1°3¸¸VÑDÔDÐDÝÔ(¨¬°&Ñ9Ô9�Ø�q˜�s”8×#Ò#Ñ%Ô%ð ?ØÔ'×.Ò.°°Q¸¨~Ñ>Ô>Ð>øøð	?øøøñ1	?ð: ”XÔ%ˆŒ
ØÔð 	)ØŒH�NŠNÑÔÐØˆDŒHˆHˆHàŒ}ð ) ¤µ%´-Ò!?Ð!?ØŸ*š* T¤W¨dÔ.AÑBÔB�Ø”×#Ò#Ø˜TÔ0°'·/²/À&Ñ2IÔ2Iñô ð ð œ-�”Ø”=ð )Ø$(�D”M�M�Mð)ð )Ð!?Ð!?ð)ð )s1   ÁA% Á%A?Á>A?Â<C Ã
FÃ%.FÄA9FÆFc                 ó°   — d| j         vr|                      ¦   «          d| j         vrd| j         vrd S |                      ¦   «                              ¦   «         S )Nr  zRaw profile type exif)rÎ   ra  ÚgetexifÚ_get_merged_dictrj   s    r.   Ú_getexifzPngImageFile._getexif  sU   € Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKØ˜œÐ"Ð"Ð'>ÀdÄiÐ'OÐ'OØ�4Ø�|Š|‰~Œ~×.Ò.Ñ0Ô0Ð0r-   c                 ó~   •— d| j         vr|                      ¦   «          t          ¦   «                              ¦   «         S )Nr  )rÎ   ra  r¼   rŠ  )rY   rÈ   s    €r.   rŠ  zPngImageFile.getexif  s1   ø€ Ø˜œÐ"Ð"Ø�IŠI‰KŒKˆKå‰wŒw�ŠÑ Ô Ð r-   c                 óX   — d| j         v r |                      | j         d         ¦  «        ni S )z™
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        zXML:com.adobe.xmp)rÎ   Ú_getxmprj   s    r.   ÚgetxmpzPngImageFile.getxmp  s5   € ð # d¤iÐ/Ð/ð �LŠL˜œÐ#6Ô7Ñ8Ô8Ð8àð	
r-   r·   )r&   r'   r(   ÚformatÚformat_descriptionr_  Úpropertyr–   r�   r^   r\  r`   r  r„  rˆ  rŒ  rŠ  r�  rA  rB  s   @r.   rG  rG  Ó  s  ø€ € € € € à€FØ4ÐðC-ð C-ð C-ðJ ðð ñ „Xððð ð ð"+ð +ð +ð[ ð [ ð [ ð [ ðzð ð ð/ð /ð /ð(ð (ð (ðB-)ð -)ð -)ð^1ð 1ð 1ð!ð !ð !ð !ð !ð
ð 
ð 
ð 
ð 
ð 
ð 
r-   rG  )r   ó    )úL;1r”  )r   s    )r   s    )r   s    )r   s   )r   s    )r   s   )r   s   )r   s   )r   s   )r   s   )r   s   )r   r•  r   r   r   r   r   zI;16r   r   r   r   r   r   c                 ó<  — d                      |¦  «        }|                      t          t          |¦  «        ¦  «        |z   ¦  «         |                      |¦  «         t	          |t	          |¦  «        ¦  «        }|                      t          |¦  «        ¦  «         dS )z'Write a PNG chunk (including CRC field)r-   N)ÚjoinÚwriteÚo32r;   rR   ©rW   rf   rP   r…   s       r.   Úputchunkr›  6  sx   € ð �8Š8�D‰>Œ>€Dà‡H‚H�S•�T‘”‰^Œ^˜cÑ!Ñ"Ô"Ð"Ø‡H‚HˆT�N„N€NÝ
�•v˜c‘{”{Ñ
#Ô
#€CØ‡H‚H�S�‰XŒXÑÔÐÐÐr-   c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_idatc                 ó"   — || _         || _        d S rV   )rW   r    )rY   rW   r    s      r.   rZ   z_idat.__init__D  s   € ØˆŒØˆŒ
ˆ
ˆ
r-   c                 ó>   — |                       | j        d|¦  «         d S )Nr�  )r    rW   ©rY   rP   s     r.   r˜  z_idat.writeH  s    € Ø�
Š
�4”7˜G TÑ*Ô*Ð*Ð*Ð*r-   N©r&   r'   r(   rZ   r˜  r,   r-   r.   r�  r�  A  s2   € € € € € ðð ð ð+ð +ð +ð +ð +r-   r�  c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_fdatc                 ó0   — || _         || _        || _        d S rV   )rW   r    rÐ   )rY   rW   r    rÐ   s       r.   rZ   z_fdat.__init__O  s   € ØˆŒØˆŒ
ØˆŒˆˆr-   c                 ó„   — |                       | j        dt          | j        ¦  «        |¦  «         | xj        dz  c_        d S )NrK  r   )r    rW   r™  rÐ   r   s     r.   r˜  z_fdat.writeT  s:   € Ø�
Š
�4”7˜G¥S¨¬Ñ%6Ô%6¸Ñ=Ô=Ð=ØˆŒ˜ÑˆŒˆˆr-   Nr¡  r,   r-   r.   r£  r£  L  s2   € € € € € ðð ð ð
ð ð ð ð r-   r£  c                 óÊ  — | j                              d| j                             d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|                     ¦   «         }n8|dk    r|                     || j        ¬¦  «        }n|                     |¦  «        }| j                              ¦   «         }t          |t           t"          f¦  «        r||         |d<   t          |t           t"          f¦  «        r||         |d<   t          |	t           t"          f¦  «        r|	|         |d<   |dz  }|�rã|d	         }|d
                              d¦  «        }|d
                              d¦  «        }|t          j        k    rt'          |¦  «        dk     rt          j        }|t          j        k    r�|d                              ¦   «         }t*          j                             d| j        d¦  «        }|d         }|r|                     |¦  «        }n
d| j        z   }|                     ||¦  «         n'|t          j        k    r|d         d         }n|d         }t7          j        |                     d¦  «        |                     d¦  «        ¦  «        }|                     ¦   «         }|sl||                     d¦  «        k    rS||                     d¦  «        k    r:t          |t           t"          f¦  «        r|d
         dxx         |d         z  cc<   �ŒÓnd }|                     |||dœ¦  «         �Œñ�Œ
 ||dt?          t'          |¦  «        ¦  «        t?          |¦  «        ¦  «         |r1tA          j!        | tE          ||¦  «        dd| j        z   d|fg¦  «         d}tG          |¦  «        D �]Æ\  }}|d         }|d         sd|j        z   }n|d         }|                     |¦  «        }|j        }|d
         }tI          tK          |                     d|¦  «        ¦  «        ¦  «        }|                     d|¦  «        }|                     d|	¦  «        } ||dt?          |¦  «        t?          |d         ¦  «        t?          |d         ¦  «        t?          |d         ¦  «        t?          |d         ¦  «        tM          |¦  «        tM          d¦  «        tO          |¦  «        tO          |¦  «        ¦  «         |dz  }|dk    r5|s3tA          j!        |tE          ||¦  «        dd|j        z   d|fg¦  «         �Œ‹tQ          |||¦  «        }tA          j!        ||dd|j        z   d|fg¦  «         |j)        }�ŒÈd S )Nr1  r   r%  r3  r5  r   )rW  r   éÿÿÿÿÚencoderinfor   rm  r   )r   r   r   r   rè   r»   éþÿÿÿr   )rm  rè   r¨  s   acTLr¯   rl  r0  )*r¨  rU  rÎ   r%   r)   r0   r1   Ú	itertoolsÚchainr	   ÚIteratorrQ  rÑ   r†  rW  r©   Úlistrž   r+   r;   r*   r   rw  rx  ry  Úcroprt  r   Úsubtract_moduloÚgetbboxrr   r™  r   Ú_saver�  Ú	enumerateÚintÚroundÚo16r   r£  rÐ   )rm  rW   r    r^  ré   Úappend_imagesr1  r%  r3  r5  r«  Ú	im_framesÚframe_countÚim_seqÚim_framer¨  ÚpreviousÚprev_disposalÚ
prev_blendÚbase_imrp  rè   ÚdeltarÐ   rb  Ú
frame_datary  Úframe_durationÚframe_disposalÚframe_blendÚfdat_chunkss                                  r.   Ú_write_multiple_framesrÅ  Y  s<  € ØŒ~×!Ò! *¨b¬g¯kªk¸*ÀaÑ.HÔ.HÑIÔI€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Øð 4Yñ 4YˆÝ%Ô.¨vÑ6Ô6ð 3	Yñ 3	YˆHØŒ} Ò'Ð'Ø#Ÿ=š=™?œ?��à˜c’>�>Ø'×/Ò/°ÀÄÐ/ÑLÔL�H�Hà'×/Ò/°Ñ8Ô8�HØœ.×-Ò-Ñ/Ô/ˆKÝ˜(¥T­5 MÑ2Ô2ð @Ø*2°;Ô*?�˜JÑ'Ý˜(¥T­5 MÑ2Ô2ð @Ø*2°;Ô*?�˜JÑ'Ý˜%¥$­ Ñ/Ô/ð :Ø',¨[Ô'9�˜GÑ$Ø˜1ÑˆKàñ !Ø$ Rœ=�Ø (¨Ô 7× ;Ò ;¸JÑ GÔ G�Ø% mÔ4×8Ò8¸ÑAÔA�
Ø ¥HÔ$8Ò8Ð8½SÀ¹^¼^ÈaÒ=OÐ=OÝ$,Ô$:�Mà ¥HÔ$:Ò:Ð:Ø& tœn×1Ò1Ñ3Ô3�GÝ#œjŸošo¨f°b´g¸|ÑLÔL�GØ# FÔ+�DØð 0Ø")§,¢,¨tÑ"4Ô"4˜˜à%¨¬Ñ/˜Ø—M’M '¨4Ñ0Ô0Ð0Ð0Ø"¥hÔ&:Ò:Ð:Ø'¨œm¨DÔ1�G�Gà& tœn�GÝ"Ô2Ø×$Ò$ UÑ+Ô+¨W¯_ª_¸UÑ-CÔ-Cñô �ð —}’}‘”�àðà%¨¯ª¸Ñ)DÔ)DÒDÐDØ" k§o¢o°gÑ&>Ô&>Ò>Ð>å! (­Tµ5¨MÑ:Ô:ð WØ  Ô/°
Ð;Ð;Ô;¸{È:Ô?VÑVÐ;Ð;Ñ;Ùøà�Ø×Ò H°dÈ;ÐWÐWÑXÔXÐXÑXñg3	Yðl 
€EØ
ØÝ�C�	‰NŒNÑÔÝˆD‰	Œ	ñ	ô ð ð ð WÝŒ˜�E " eÑ,Ô,°°vÀÄÑ7GÈÈGÐ/TÐ.UÑVÔVÐVà€GÝ& yÑ1Ô1ð **ñ **ÑˆˆzØ˜dÔ#ˆØ˜&Ô!ð 	+Ø˜HœMÑ)ˆDˆDà˜fÔ%ˆDØ—}’} TÑ*Ô*ˆHØŒ}ˆØ  Ô/ˆÝ�U ;§?¢?°:¸xÑ#HÔ#HÑIÔIÑJÔJˆØ$Ÿš¨°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ØÝ�b˜%Ñ Ô Ø˜ (¤-Ñ/°°GÐ<Ð=ñô ð ñ õ    E¨7Ñ3Ô3ˆKÝŒOØØØ˜ (¤-Ñ/°°GÐ<Ð=ñô ð ð
 "Ô)ˆG‰GðU**ð **r-   c                 ó,   — t          | ||d¬¦  «         d S )NT)Úsave_all)r±  )rm  rW   Úfilenames      r.   Ú	_save_allrÉ  Ö  s   € Ý	ˆ"ˆb�( TÐ*Ñ*Ô*Ð*Ð*Ð*r-   Fc                 ó”  — |rß| j                              d| j                             d¦  «        ¦  «        }t          ¦   «         }| j                              dg ¦  «        }|rt	          j        |¦  «        }nt	          j        | g|¦  «        }|D ]3}	t          j        |	¦  «        D ]}
|                     |
j	        ¦  «         ŒŒ4dD ]}||v r nŒ	| 
                    ¦   «         }n| 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|› �}| 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|                     t*          ¦  «          ||dt-          | j        d         ¦  «        t-          | j        d         ¦  «        |ddd¦  «         g d¢}| j                              d| j                             d¦  «        ¦  «        }|r>d}|dz   t1          j        |¦  «        z   } ||d|¦  «         |                     d¦  «         | j                              d¦  «        }|r‰g d ¢}|j        D ]}}|d d
…         \  }}||v r#|                     |¦  «          ||||¦  «         Œ6||v r ||||¦  «         ŒH|dd
…                              ¦   «         r|d
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|}t?          |t@          ¦  «        r ||d$|d |…         ¦  «         �n@t          dt          d%|¦  «        ¦  «        }d&|z  dz   } ||d$|d |…         ¦  «         �n| j	        d'v r9t          dt          d(|¦  «        ¦  «        } ||d$tC          |¦  «        ¦  «         nÁ| j	        d!k    rA|\  }} }! ||d$tC          |¦  «        tC          | ¦  «        z   tC          |!¦  «        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-t-          tG          |"d         d.z  d/z   ¦  «        ¦  «        t-          tG          |"d         d.z  d/z   ¦  «        ¦  «        d0¦  «         |rAd1d2g}|j        D ]5}|d d
…         \  }}||v r"|                     |¦  «          ||||¦  «         Œ6| j                              d3¦  «        }#|#r[t?          |#tH          j%        ¦  «        r|# &                    d4¦  «        }#|# '                    d5¦  «        r
|#d6d …         }# ||d7|#¦  «         |rtQ          | |||||¦  «         n1tS          j*        | tW          ||¦  «        d8d9| j        z   d|fg¦  «         |rL|j        D ]D}|d d
…         \  }}|dd
…                              ¦   «         r|d
d…         }|r ||||¦  «         ŒE ||d:d¦  «         tY          |d;¦  «        r| -                    ¦   «          d S d S )<Nré   r¶  )r   r   r   r   Úbitsr   é   r!   r    r   r   ú;ÚoptimizeFÚcompress_levelr§  Úcompress_typeÚ
dictionaryr-   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ô   iÿÿ  z%cannot use transparency for this moder   ÚAr  s   pHYsr
  g      à?ó   s   bKGDs   hISTr  r   r"  r"   s   eXIfr¯   r»   r‡   Úflush).r¨  rU  rÎ   Úsetrª  r«  r	   r¬  r¡   rQ  r]   r‚  rW  Úmaxr;   ÚgetdataÚencoderconfigÚ	_OUTMODESÚKeyErrorr‰   r˜  rD  r™  ry  rD   r¬   Úremoverœ   rP  rm  Ú
getpaletter©   rª   rµ  Úgetpalettemoder³  r   ÚExifÚtobytesr:   rÅ  r   r±  r�  ÚhasattrrØ  )$rm  rW   rÈ  r    rÇ  ré   Úmodesr¶  r«  r¹  rº  rQ  ÚcolorsrË  r^  r„   rA   rœ   Úiccr>   rP   rÎ   Úchunks_multiple_allowedÚ
info_chunkrf   rŸ   Úpalette_byte_numberÚpalette_bytesró   Úalpha_bytesÚalphaÚredÚgreenÚbluer  r  s$                                       r.   r±  r±  Ú  sæ  € ð ð Øœ×*Ò*Ø˜RœWŸ[š[¨Ñ9Ô9ñ
ô 
ˆõ ‘”ˆØœ×*Ò*¨?¸BÑ?Ô?ˆØð 	9Ý”O MÑ2Ô2ˆEˆEå”O R D¨-Ñ8Ô8ˆEØð 	)ð 	)ˆFÝ)Ô2°6Ñ:Ô:ð )ð )�Ø—	’	˜(œ-Ñ(Ô(Ð(Ð(ð)à(ð 	ð 	ˆDØ�uˆ}ˆ}Ø�ð ð —9’9‘;”;ˆDøàŒwˆàˆ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’�Ø��à�ØÐ#Ð#˜TÐ#Ð#ˆDð 	Œ×Ò˜: uÑ-Ô-Ø
Œ×ÒÐ+¨RÑ0Ô0Ø
Œ×Ò˜?¨BÑ/Ô/Ø
Œ×Ò˜<¨Ñ-Ô-ð	€BÔð"Ý! $œ‰ˆ��øÝð "ð "ð "Ø0 4Ð0Ð0Ð0ˆÝ�c‰lŒl Ð!øøøøð"øøøð ‡H‚H�VÑÔÐà	€EØ
ØÝˆBŒG�AŒJ‰ŒÝˆBŒG�AŒJ‰ŒØØØØñ	ô 	ð 	ð ;Ð:Ð:€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”×!Ò!Ñ#Ô#ð )à'¨¨!¨œ_�
Ø!ð )Ø�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Ñ Ô Ð àð WÝ˜r 2 u¨g°}ÀmÑTÔTÐTÐTåŒ˜�E " eÑ,Ô,°°vÀÄÑ7GÈÈGÐ/TÐ.UÑVÔVÐVàð )Øœ+ð 	)ð 	)ˆJØ" 2 A 2œ‰IˆC�Ø�1�Q�3Œx×ÒÑ!Ô!ð )à'¨¨!¨œ_�
Øð )Ø�E˜"˜c 4Ñ(Ô(Ð(øà	€Eˆ"ˆg�sÑÔÐåˆr�7ÑÔð Ø
�Š‰
Œ
ˆ
ˆ
ˆ
ðð s   Ç=H È
H3ÈH.È.H3c                 óŒ   —  G d„ d¦  «        }d„ } |¦   «         }	 || _         t          | |d|¦  «         | ` n# | ` w xY w|j        S )z4Return a list of PNG chunks representing this image.c                   ó   — e Zd Zg Zd„ Zd„ ZdS )úgetchunks.<locals>.collectorc                 ó   — d S rV   r,   r   s     r.   r˜  z"getchunks.<locals>.collector.write§  s   € ØˆDr-   c                 ó:   — | j                              |¦  «         d S rV   )rP   rr   )rY   r    s     r.   rr   z#getchunks.<locals>.collector.appendª  s   € ØŒI×Ò˜UÑ#Ô#Ð#Ð#Ð#r-   N)r&   r'   r(   rP   r˜  rr   r,   r-   r.   Ú	collectorró  ¤  s7   € € € € € Øˆð	ð 	ð 	ð	$ð 	$ð 	$ð 	$ð 	$r-   rö  c                 ó´   — d                      |¦  «        }t          t          |t          |¦  «        ¦  «        ¦  «        }|                      |||f¦  «         d S )Nr-   )r—  r™  rR   rr   rš  s       r.   rr   zgetchunks.<locals>.append­  sM   € Ø�xŠx˜‰~Œ~ˆÝ•&˜�v c™{œ{Ñ+Ô+Ñ,Ô,ˆØ
�	Š	�3˜˜cÐ"Ñ#Ô#Ð#Ð#Ð#r-   N)r¨  r±  rP   )rm  Úparamsrö  rr   rW   s        r.   Ú	getchunksrù  ¡  s…   € ð$ð $ð $ð $ð $ñ $ô $ð $ð$ð $ð $ð
 
ˆ‰Œ€BðØˆŒÝˆb�"�d˜FÑ#Ô#Ð#àˆNˆNøˆBˆNÐÐÐÐàŒ7€Ns   œ8 ¸<z.pngz.apngz	image/png)r   )@rª  ÚloggingÚrer€   r&  rD   r?   r   r¢   r   r   r   r   r	   Ú_binaryr
   r÷   r   ra   r   r   rµ  r   r™  Ú
_deprecater   Ú	getLoggerr&   rx   Úcompilerö   rb   rD  râ   rõ   Ú	SAFEBLOCKrG   rÊ   r%   r0   rB   rM   rR   rT   r‘   r�   rš   r¹   rE  rG  rÝ  r›  r�  r£  rÅ  rÉ  r±  rù  Úregister_openr‘  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer,   r-   r.   ú<module>r     s|  ððD Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !à	ˆÔ	˜8Ñ	$Ô	$€à	ˆŒ�LÑ	!Ô	!Ô	'€ð 
€ð ØØØØàØàØØØàØàØ!ð+
ð 
€ð2 �"”*Ð0Ñ1Ô1€àÔ$€ðð
 �~Ñ%€ððð ð ð ð ˆwñ ô ð ð*ð ð ð ð ˆGñ ô ð ðð ð ðð ð ð/ð /ð /ð /ðYð Yð Yð Yð Yñ Yô Yð Yðxð ð ð ð ˆ3ñ ô ð ð,M3ð M3ð M3ð M3ð M3ñ M3ô M3ð M3ðh\4ð \4ð \4ð \4ð \4�ñ \4ô \4ð \4ðF ð  ð  ðJ
ð J
ð J
ð J
ð J
�9Ô&ñ J
ô J
ð J
ðd
 
ØØØØ	Ø
Ø	Ø"ØØØØ	ØØ!ðð €	ð&ð ð ð+ð +ð +ð +ð +ñ +ô +ð +ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðz*ð z*ð z*ðz+ð +ð +ð #+°Uð @ð @ð @ð @ðNð ð ð> €Ô �LÔ'¨°wÑ ?Ô ?Ð ?Ø €Ô �LÔ'¨Ñ /Ô /Ð /Ø €Ô ˜Ô+¨YÑ 7Ô 7Ð 7à €Ô ˜,Ô-°¸Ð/@Ñ AÔ AÐ Aà €Ô �LÔ'¨Ñ 5Ô 5Ð 5Ð 5Ð 5r-   