§
    œ"²cY,  ã                   óž  — d dl mZ ddlmZmZ 	 ddlmZ dZn# e$ r dZY nw xY wddddœZdddœZ	d	d
d
dœZ
d„ Z G d„ dej        ¦  «        Zd„ Zd„ Z ej        ej        ee¦  «         era ej        ej        e¦  «         ej        r ej        ej        e¦  «          ej        ej        d¦  «          ej        ej        d¦  «         dS dS )é    )ÚBytesIOé   )ÚImageÚ	ImageFile)Ú_webpTF)ÚRGBXÚRGBAÚRGB)r
   r	   r
   r	   )s   VP8 s   VP8Xs   VP8Lc                 óŒ   — | d d…         dk    }| dd…         dk    }| dd…         t           v }|r|r|rt          s	 dS dS d S d S d S )	Né   s   RIFFé   é   s   WEBPé   zEimage file could not be identified because WEBP support not installedT)Ú_VP8_MODES_BY_IDENTIFIERÚ	SUPPORTED)ÚprefixÚis_riff_file_formatÚis_webp_fileÚis_valid_vp8_modes       ú5/usr/lib/python3/dist-packages/PIL/WebPImagePlugin.pyÚ_acceptr      sŒ   € Ø   ! œ*¨Ò/ÐØ˜!˜B˜$”< 7Ò*€LØ˜r "˜uœÕ)AÐAÐàð ˜|ð Ð0Að Ýð 	àWðð ð ˆtðð ð ð ð ð ó    c                   ód   ‡ — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	d„ Z
dd	„Zd
„ Zd„ Zˆ fd„Zˆ fd„Zˆ xZS )ÚWebPImageFileÚWEBPz
WebP imager   c                 óâ  — t           j        s•t          j        | j                             ¦   «         ¦  «        \  }}}| _        }}|r
|| j        d<   |r
|| j        d<   ||f| _        t          |¦  «        | _        dd| j	        z   d| j        fg| _
        d| _        d| _        d S t          j        | j                             ¦   «         ¦  «        | _        | j                             ¦   «         \  }}}}}}	||f| _        || j        d<   |d	z	  d
z  |dz	  d
z  |dz	  d
z  |d
z  f\  }
}}}||||
f| j        d<   || _        | j        dk    | _        |	dk    rdn|	| _        |	| _        g | _
        | j                             d¦  «        }| j                             d¦  «        }| j                             d¦  «        }|r
|| j        d<   |r
|| j        d<   |r
|| j        d<   |                      d¬¦  «         d S )NÚicc_profileÚexifÚraw©r   r   r   r   FÚloopé   éÿ   r   r   Ú
backgroundr   r
   ÚICCPÚEXIFzXMP Úxmp)Úreset)r   ÚHAVE_WEBPANIMÚ
WebPDecodeÚfpÚreadÚmodeÚinfoÚ_sizer   ÚsizeÚtileÚn_framesÚis_animatedÚWebPAnimDecoderÚ_decoderÚget_infoÚrawmodeÚ	get_chunkÚ_reset)ÚselfÚdataÚwidthÚheightr   r   Ú
loop_countÚbgcolorÚframe_countr-   Úbg_aÚbg_rÚbg_gÚbg_br'   s                  r   Ú_openzWebPImageFile._open,   s*  € ÝÔ"ð 	å@EÔ@PØ”—’‘”ñAô AÑ=ˆD�%˜ ¤¨K¸ð ð 7Ø+6�”	˜-Ñ(Øð )Ø$(�”	˜&Ñ!Ø ˜ˆDŒJÝ˜d‘m”mˆDŒGØ ¨$¬)Ñ!3°Q¸¼	ÐBÐCˆDŒIØˆDŒMØ$ˆDÔØˆFõ Ô-¨d¬g¯lªl©n¬nÑ=Ô=ˆŒð AEÄ×@VÒ@VÑ@XÔ@XÑ=ˆˆv�z 7¨K¸Ø˜F�]ˆŒ
Ø&ˆŒ	�&Ñà˜‰]˜dÑ"Ø˜‰]˜dÑ"Ø˜‰\˜TÑ!Ø�d‰Nð	"
Ñˆˆd�D˜$ð $(¨¨t°TÐ":ˆŒ	�,ÑØ#ˆŒØœ=¨1Ò,ˆÔØ! Vš^˜^�E�E°ˆŒ	ØˆŒØˆŒ	ð ”m×-Ò-¨fÑ5Ô5ˆØŒ}×&Ò& vÑ.Ô.ˆØŒm×%Ò% fÑ-Ô-ˆØð 	3Ø'2ˆDŒI�mÑ$Øð 	%Ø $ˆDŒI�fÑØð 	#Ø"ˆDŒI�eÑð 	�Š˜%ˆÑ Ô Ð Ð Ð r   c                 ód   — d| j         vrd S |                      ¦   «                              ¦   «         S )Nr   )r.   ÚgetexifÚ_get_merged_dict©r:   s    r   Ú_getexifzWebPImageFile._getexif`   s.   € Ø˜œÐ"Ð"Ø�4Ø�|Š|‰~Œ~×.Ò.Ñ0Ô0Ð0r   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.
        r'   )r.   Ú_getxmprI   s    r   ÚgetxmpzWebPImageFile.getxmpe   s.   € ð 27¸$¼)Ð1CÐ1Cˆt�|Š|˜DœI eÔ,Ñ-Ô-Ð-ÈÐKr   c                 óB   — |                       |¦  «        sd S || _        d S ©N)Ú_seek_checkÚ_WebPImageFile__logical_frame©r:   Úframes     r   ÚseekzWebPImageFile.seekn   s-   € Ø×Ò Ñ&Ô&ð 	ØˆFð  %ˆÔÐÐr   Tc                 óf   — |r| j                              ¦   «          d| _        d| _        d| _        d S )Nr   éÿÿÿÿ)r5   r(   Ú_WebPImageFile__physical_frameÚ_WebPImageFile__loadedÚ_WebPImageFile__timestamp)r:   r(   s     r   r9   zWebPImageFile._resetu   s;   € Øð 	"ØŒM×ÒÑ!Ô!Ð!Ø !ˆÔØˆŒØˆÔÐÐr   c                 ó  — | j                              ¦   «         }| xj        dz  c_        |€:|                      ¦   «          |                      d¦  «         d}t          |¦  «        ‚|\  }}|| j        z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r5   Úget_nextrW   r9   rT   ÚEOFErrorrY   )r:   ÚretÚmsgr;   Ú	timestampÚdurations         r   Ú	_get_nextzWebPImageFile._get_next|   s–   € àŒm×$Ò$Ñ&Ô&ˆØÐÔ Ñ"ÐÔð ˆ;Ø�KŠK‰MŒMˆMØ�IŠI�a‰LŒLˆLØ<ˆCÝ˜3‘-”-Ðð ‰ˆˆiØ˜tÔ/Ñ/ˆØ$ˆÔð 	�XÑˆ	Ø�Y Ð(Ð(r   c                 ó¶   — | j         |k    rd S || j         k     r|                      ¦   «          | j         |k     r!|                      ¦   «          | j         |k     °d S d S rO   )rW   r9   ra   rR   s     r   Ú_seekzWebPImageFile._seek‘   sj   € ØÔ  EÒ)Ð)ØˆFØ�4Ô(Ò(Ð(Ø�KŠK‰MŒMˆMØÔ# eÒ+Ð+Ø�NŠNÑÔÐð Ô# eÒ+Ð+Ð+Ð+Ð+Ð+r   c                 óÈ  •— t           j        r¶| j        | j        k    r¦|                      | j        ¦  «         |                      ¦   «         \  }}}|| j        d<   || j        d<   | j        | _        | j        r | j        r| j         	                    ¦   «          t          |¦  «        | _        dd| j        z   d| j        fg| _        t          ¦   «                              ¦   «         S )Nr_   r`   r   r    r   )r   r)   rX   rQ   rc   ra   r.   r+   Ú_exclusive_fpÚcloser   r0   r7   r1   ÚsuperÚload)r:   r;   r_   r`   Ú	__class__s       €r   rh   zWebPImageFile.load™   sÎ   ø€ ÝÔð 	KØŒ} Ô 4Ò4Ð4Ø—
’
˜4Ô/Ñ0Ô0Ð0ð -1¯NªNÑ,<Ô,<Ñ)��i Ø)2�”	˜+Ñ&Ø(0�”	˜*Ñ%Ø $Ô 4�”ð ”7ð $˜tÔ1ð $Ø”G—M’M‘O”O�OÝ! $™-œ-�”Ø# V¨d¬iÑ%7¸¸D¼LÐIÐJ�”	å‰wŒw�|Š|‰~Œ~Ðr   c                 ój   •— t           j        s t          ¦   «                              ¦   «         S | j        S rO   )r   r)   rg   ÚtellrQ   )r:   ri   s    €r   rk   zWebPImageFile.tell¬   s)   ø€ ÝÔ"ð 	"Ý‘7”7—<’<‘>”>Ð!àÔ#Ð#r   )T)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrX   rQ   rE   rJ   rM   rT   r9   ra   rc   rh   rk   Ú__classcell__)ri   s   @r   r   r   %   sØ   ø€ € € € € à€FØ%ÐØ€HØ€Oð2!ð 2!ð 2!ðh1ð 1ð 1ð
Lð Lð Lð%ð %ð %ðð ð ð ð)ð )ð )ð*ð ð ðð ð ð ð ð&$ð $ð $ð $ð $ð $ð $ð $ð $r   r   c                 óB
  — | j                              ¦   «         }t          |                     dg ¦  «        ¦  «        }d}| g|z   D ]}|t	          |dd¦  «        z  }Œ|dk    rt          | ||¦  «         d S d}d|v r	|d         }ned| j        v r\| j        d         }t          |t          ¦  «        r:|  	                    ¦   «         }|r||dz  |dz   dz  …         \  }	}
}|	|
|df}n|||df}| j                              d	| j                             d	d¦  «        ¦  «        }| j                              d
d¦  «        }| j                              dd¦  «        }| j                              dd ¦  «        }| j                              dd ¦  «        }| j                              dd¦  «        }d}| j                              dd¦  «        }| j                              dd¦  «        }| j                              dd¦  «        }| j                              d¦  «        pd}| j                              dd¦  «        }t          |t          j        ¦  «        r|                     ¦   «         }| j                              dd¦  «        }|rd}|€|rdnd}|€|rdnd}t          |t          t          f¦  «        r,t          |¦  «        dk    st          d„ |D ¦   «         ¦  «        sd|› �}t!          |¦  «        ‚|\  }}}}|dz  |dz  z  |d z  z  |dz  z  }t#          j        | j        d         | j        d         |||||||¦	  «	        }d}d} |                      ¦   «         }!	 | g|z   D �];}t	          |dd¦  «        }"t+          |"¦  «        D �]}#|                     |#¦  «         |                     ¦   «          |}$|j        }%|j        t2          vrSd!|j        v p.d"|j        v p%|j        d#k    od!|j                             ¦   «         v }&|&rd$nd%}%|                     |%¦  «        }$|%d%k    rd&}%|                     |$                     d'|%¦  «        | |$j        d         |$j        d         |%|||¦  «         t          |t          t          f¦  «        r| ||         z  } n| |z  } |dz  }�Œ�Œ=	 |                      |!¦  «         n# |                      |!¦  «         w xY w|                     d | ddd||d¦  «         |                     |||¦  «        }'|'€d(}t!          |¦  «        ‚|                     |'¦  «         d S ))NÚappend_imagesr   r2   r   )r   r   r   r   r$   é   r#   r`   r!   Úminimize_sizeFÚkminÚkmaxÚallow_mixedÚlosslessÚqualityéP   Úmethodr   Ú r   r'   é	   é   é   r   c              3   ó6   K  — | ]}d |cxk    odk     nc V — ŒdS )r   é   N© )Ú.0Úvs     r   ú	<genexpr>z_save_all.<locals>.<genexpr>ë   s6   è è € Ð4Ð4 A�1˜�<�<’<�<˜C’<�<�<�<Ð4Ð4Ð4Ð4Ð4Ð4r   z:Background color is not an RGBA tuple clamped to (0-255): r"   r   r   ÚAÚaÚPr	   r
   r   r   ú1cannot write file as WebP (encoder returned None)) ÚencoderinfoÚcopyÚlistÚgetÚgetattrÚ_saver.   Ú
isinstanceÚintÚ
getpaletter   ÚExifÚtobytesÚtupleÚlenÚallÚOSErrorr   ÚWebPAnimEncoderr0   rk   ÚrangerT   rh   r-   Ú_VALID_WEBP_MODESÚimÚgetpalettemodeÚconvertÚaddÚassembleÚwrite)(r�   r+   Úfilenamer‹   rs   ÚtotalÚimsr$   ÚpaletteÚrÚgÚbr`   r!   ru   rv   rw   rx   Úverbosery   rz   r|   r   r   r'   r^   rB   rC   rD   rA   ÚencÚ	frame_idxr_   Úcur_idxÚnfrÚidxrS   r7   Úalphar;   s(                                           r   Ú	_save_allr±   ³   s¥  € Ø”.×%Ò%Ñ'Ô'€KÝ˜Ÿš¨¸"Ñ=Ô=Ñ>Ô>€Mð €EØˆt�mÑ#ð -ð -ˆØ•˜˜j¨!Ñ,Ô,Ñ,ˆˆØ�‚z€zÝˆb�"�hÑÔÐØˆà€JØ�{Ð"Ð"Ø  Ô.ˆ
ˆ
Ø	˜œÐ	 Ð	 Ø”W˜\Ô*ˆ
Ý�j¥#Ñ&Ô&ð 	Gð —m’m‘o”oˆGØð GØ! *¨q¡.°JÀ±NÀaÑ3GÐ"GÔH‘��1�aØ  A s˜^�
�
à(¨*°jÀ#ÐF�
àŒ~×!Ò! *¨b¬g¯kªk¸*ÀaÑ.HÔ.HÑIÔI€HØŒ>×Ò˜f aÑ(Ô(€DØ”N×&Ò& ¸Ñ>Ô>€MØŒ>×Ò˜f dÑ+Ô+€DØŒ>×Ò˜f dÑ+Ô+€DØ”.×$Ò$ ]°EÑ:Ô:€KØ€GØŒ~×!Ò! *¨eÑ4Ô4€HØŒn× Ò  ¨BÑ/Ô/€GØŒ^×Ò ¨!Ñ,Ô,€FØ”.×$Ò$ ]Ñ3Ô3Ð9°r€KØŒ>×Ò˜f bÑ)Ô)€DÝ�$�œ
Ñ#Ô#ð Ø�|Š|‰~Œ~ˆØ
Œ.×
Ò
˜U BÑ
'Ô
'€CØð Øˆð €|ØÐ#ˆqˆq !ˆØ€|ØÐ$ˆrˆr 1ˆõ �z¥D­% =Ñ1Ô1ðåˆz‰?Œ?˜aÒÐÝÐ4Ð4¨Ð4Ñ4Ô4Ñ4Ô4ð  ð XÈ:ÐWÐWˆÝ�c‰lŒlÐð (Ñ€Dˆ$��dØ˜"‘* ¨¡Ñ,°¸±	Ñ:¸dÀa¹iÑH€Jõ Ô
Ø
Œ�Œ
Ø
Œ�Œ
ØØØØØØØñ
ô 
€Cð €IØ€IØ�gŠg‰iŒi€Gð-Ø�4˜-Ñ'ð )	ñ )	ˆCå˜#˜z¨1Ñ-Ô-ˆCå˜S‘z”zð %ñ %�Ø—’˜‘”�Ø—’‘
”
�
ð �Øœ(�Ø”8Õ#4Ð4Ð4à˜sœx˜ð PØ #¤(˜?ðPàœH¨šOÐN°°s´v×7LÒ7LÑ7NÔ7NÐ0Nð ð
 ).Ð8˜f˜f°5�GØŸKšK¨Ñ0Ô0�Eà˜eÒ#Ð#à$�Gð —’Ø—M’M %¨Ñ1Ô1ØØ”J˜q”MØ”J˜q”MØØØØñ	ô 	ð 	õ ˜h­­u¨Ñ6Ô6ð *Ø ¨)Ô!4Ñ4�I�Ià Ñ)�IØ˜Q‘�	‘	ñK%ð	)	ðX 	�Š�ÑÔÐÐøˆ�Š�ÑÔÐÐøøøð ‡G‚GˆD�)˜Q  2 x°¸!Ñ<Ô<Ð<ð �<Š<˜ T¨3Ñ/Ô/€DØ€|ØAˆÝ�c‰lŒlÐà‡H‚HˆT�N„N€N€N€Ns   ÍER* Ò*Sc                 ó¼  — | j                              dd¦  «        }| j                              dd¦  «        }| j                              d¦  «        pd}| j                              dd¦  «        }t          |t          j        ¦  «        r|                     ¦   «         }|                     d	¦  «        r
|d
d …         }| j                              dd¦  «        }| j                              dd¦  «        }| j                              d¦  «        rdnd}	| j        t          vr?d| j        v pd| j        v p| j        dk    od| j	        v }
|  
                    |
rdnd¦  «        } t          j        |                      ¦   «         | j        d         | j        d         |t          |¦  «        | j        |||	||¦  «        }|€d}t          |¦  «        ‚|                     |¦  «         d S )Nry   Frz   r{   r   r}   r   r   s   Exif  é   r'   r|   r   Úexactr   r   r‡   rˆ   r‰   Útransparencyr	   r
   rŠ   )r‹   rŽ   r‘   r   r”   r•   Ú
startswithr-   Ú_VALID_WEBP_LEGACY_MODESr.   rŸ   r   Ú
WebPEncoder0   Úfloatr™   r¢   )r�   r+   r£   ry   rz   r   r   r'   r|   r´   r°   r;   r^   s                r   r�   r�   @  sÉ  € ØŒ~×!Ò! *¨eÑ4Ô4€HØŒn× Ò  ¨BÑ/Ô/€GØ”.×$Ò$ ]Ñ3Ô3Ð9°r€KØŒ>×Ò˜f cÑ*Ô*€DÝ�$�œ
Ñ#Ô#ð Ø�|Š|‰~Œ~ˆØ‡‚�Ñ'Ô'ð Ø�A�B�BŒxˆØ
Œ.×
Ò
˜U BÑ
'Ô
'€CØŒ^×Ò ¨!Ñ,Ô,€FØ”×#Ò# GÑ,Ô,Ð3ˆAˆA°!€Eà	„wÕ.Ð.Ð.à�2”7ˆNð >Ø�b”gˆ~ð>à”˜3’Ð< >°R´WÐ#<ð 	ð
 �ZŠZ %Ð2˜˜¨UÑ3Ô3ˆåÔØ
�
Š
‰ŒØ
Œ�Œ
Ø
Œ�Œ
ØÝˆg‰ŒØ
ŒØØØØØñô €Dð €|ØAˆÝ�c‰lŒlÐà‡H‚HˆT�N„N€N€N€Nr   z.webpz
image/webpN)Úior   r}   r   r   r   r   ÚImportErrorrœ   r·   r   r   r   r±   r�   Úregister_openro   Úregister_saver)   Úregister_save_allÚregister_extensionÚregister_mimerƒ   r   r   ú<module>rÁ      s±  ðØ Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ð Ð ðØÐÐÐÐÐà€I€IøØð ð ð Ø€I€I€Iðøøøð "¨4¸Ð=Ð=Ð à#'°Ð6Ð6Ð ð ØØðð Ð ð
ð 
ð 
ðK$ð K$ð K$ð K$ð K$�IÔ'ñ K$ô K$ð K$ð\Jð Jð JðZ&ð &ð &ðR €Ô �MÔ(¨-¸Ñ AÔ AÐ AØð <Ø€EÔ˜Ô,¨eÑ4Ô4Ð4ØÔð AØˆÔ Ô 4°iÑ@Ô@Ð@Ø€EÔ˜]Ô1°7Ñ;Ô;Ð;Ø€EÔ˜Ô,¨lÑ;Ô;Ð;Ð;Ð;ð<ð <s   � ™#¢#