§
    œ"²ch+ ã                   óT  — 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Zd dlmZ d dl	m
Z
 d dl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  ej        e¦  «        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Z0dZ1dZ2dZ3d Z4d!Z5d"Z6d#Z7d$Z8d%Z9d&Z:d'Z;d(Z<d)Z=d*Z>d+Z?d,Z@d-ZAd.ZBd/ZCd0ZDd1ZEd2ZFd3ZGd4ZHd5ZId6ZJd7ZKi dd8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“ZLdY„ eL M                    ¦   «         D ¦   «         ZNi e"d dZddZd[fd\“e#d dZddZd[fd\“e"d dZd9dZd[fd]“e#d dZd9dZd[fd]“e"ddZddZd[fd^“e#ddZddZd[fd^“e"ddZd9dZd[fd_“e#ddZd9dZd[fd_“e"d dZdd`d[fda“e#d dZdd`d[fda“e"d dZd9d`d[fdb“e#d dZd9d`d[fdb“e"ddZdd`d[fdc“e#ddZdd`d[fdc“e"ddZd9d`d[fdd“e#ddZd9d`d[fdd“e"d dZdded[fdf“i e#d dZdded[fdf“e"d dZd9ded[fdg“e#d dZd9ded[fdg“e"ddZdded[fdh“e#ddZdded[fdh“e"ddZd9ded[fdi“e#ddZd9ded[fdi“e"d dZddjd[fdk“e#d dZddjd[fdk“e"d dZd9djd[fdl“e#d dZd9djd[fdl“e"ddZddjd[fdm“e#ddZddjd[fdm“e"ddZd9djd[fdn“e#ddZd9djd[fdn“e"ddZddod[fdp“e"d dZddqd[fdr“¥i e"ddZddqd[fdr“e#ddZddqd[fds“e"ddZd9dqd[fdt“e"dd`ddqd[fdu“e#dd`ddqd[fdv“e"d dwddxd[fdy“e#d dwddxd[fdz“e"ddZddxd[fd{“e"dd`ddxd[fd|“e#dd`ddxd[fd}“e"ddwddxd[fdy“e#ddwddxd[fdz“e"ddZdd~d`fd“e#ddZdd~d`fd“e"d9dZdd€d[fd�“e#d9dZdd€d[fd�“e"d9dZd9d€d[fd‚“¥i e#d9dZd9d€d[fd‚“e"d9dZddƒd[fd„“e#d9dZddƒd[fd„“e"d9dZddƒd…fd†“e#d9dZddƒd…fd†“e"d9dZdd‡dˆfd‰“e#d9dZdd‡dˆfd‰“e"d9dZddŠd‹fdŒ“e#d9dZddŠd‹fdŒ“e"d9dZddƒdZfd�“e#d9dZddƒdZfd�“e"d9dZdd‡dŽfd�“e#d9dZdd‡dŽfd�“e"d9dZddŠd�fd‘“e#d9dZddŠd�fd‘“e"d9dZddƒd`fd„“e#d9dZddƒd`fd„“¥i e"d9dZdd‡d’fd““e#d9dZdd‡d’fd““e"d9dZddŠd”fd•“e#d9dZddŠd”fd•“e"d9dZddƒd–fd„“e#d9dZddƒd–fd„“e"d9dZdd—d[fd˜“e#d9dZdd—d[fd™“e"d9dZddšd[fd›“e#d9dZddšd[fdœ“e"d9dZddšd…fd�“e#d9dZddšd…fdž“e"d9dZddšdZfdŸ“e#d9dZddšdZfd “e"d9dZddšd`fd›“e#d9dZddšd`fdœ“e"d;dZddZd[fd¡“¥i e#d;dZddZd[fd¡“e"d;dZd9dZd[fd¢“e#d;dZd9dZd[fd¢“e"d;dZdd`d[fd£“e#d;dZdd`d[fd£“e"d;dZd9d`d[fd¤“e#d;dZd9d`d[fd¤“e"d;dZdded[fd¥“e#d;dZdded[fd¥“e"d;dZd9ded[fd¦“e#d;dZd9ded[fd¦“e"d;dZddjd[fd§“e#d;dZddjd[fd§“e"d;dZdd~d`fd¨“e#d;dZdd~d`fd¨“e"d;dZd9djd[fd©“e#d;dZd9djd[fd©“¥e"d?dZddƒd[fdªe#d?dZddƒd[fdªe"d?dZdd‡d…fd«e#d?dZdd‡d…fd«e"d?dZddŠdˆfd¬e#d?dZddŠdˆfd¬e"d?dZddšd[fd­e"dAdZdd€d[fd®e#dAdZdd€d[fd®e"dEdZdd€d[fd¯e#dEdZdd€d[fd¯i¥ZO ePd°„ eO Q                    ¦   «         D ¦   «         ¦  «        ZRg d±¢ZSd²„ ZTd³„ ZUd´„ ZVi ZWi ZX G dµ„ d¶e¦  «        ZY G d·„ d¸e¦  «        ZZeWeZ_W        eXeZ_X         ejM        ¦   «         D ]M\  Z[Z\e\ ]                    d¹dº¦  «        Z\ e^eZd»e\z   eWe[         d         ¦  «          e^eZd¼e\z   eXe[         ¦  «         ŒN[W[X[[[\ G d½„ d¾eZ¦  «        Z_e_Z` G d¿„ dÀej        ¦  «        Zai dÁdÁe"dddZdf“dÂdÂe"dddjdf“dÃdÃe"ddd~d9f“dÄdÄe"d;ddjdf“dÅdÅe"d;dd~d9f“dÆdÇe"dd9dxdf“dÈdÈe"dddqdf“dÉdÉe"dd9dqdf“dÊdËe"dd;dxdf“dÌdÌe"d9dd€df“dÍdÍe"d9ddƒd f“dÎdÎe"d9ddƒd9f“dÏdÏe"d?ddƒdf“dÐdÐe"dAdd€df“dÑdÑe"dEdd€df“dÒdÒe#dd9dxdf“dÓdÓe#dddqdf“dÔe#dd9dqdfdÕe#dd;dxdfdÖœ¥Zbd×„ Zc G dØ„ dÙ¦  «        ZddÚ„ Ze ejf        eajg        eaeT¦  «          ejh        eajg        ec¦  «          eji        eajg        ee¦  «          ejj        eajg        dÛdÜg¦  «          ejk        eajg        dÝ¦  «         dS )Þé    N)ÚMutableMapping)ÚFraction)ÚNumberÚRationalé   )ÚImageÚ	ImageFileÚImageOpsÚImagePaletteÚTiffTags)Úi16be)Úi32be©Úo8©ÚTYPESFTé   s   IIs   MMé   i  i  i  i  i
  i  é  i  i  i  i  i  i  i(  i-  i1  i2  i;  i=  i@  iB  iC  éD  iE  iJ  iR  iS  i[  i  i  i˜‚  i»ƒ  éI†  is‡  ii‡  i¼  i  i–Æ  i—Æ  Úrawé   Ú
tiff_ccitté   Úgroup3é   Úgroup4é   Útiff_lzwé   Ú	tiff_jpegé   Újpegé   Útiff_adobe_deflatei€  Útiff_raw_16i€  Úpackbitsi)€  Útiff_thunderscani²€  Útiff_deflateit‡  Útiff_sgilogiu‡  Útiff_sgilog24imˆ  ÚlzmaiPÃ  ÚzstdiQÃ  Úwebpc                 ó   — i | ]\  }}||“Œ	S © r1   )Ú.0ÚkÚvs      ú5/usr/lib/python3/dist-packages/PIL/TiffImagePlugin.pyú
<dictcomp>r6   Š   s   € ÐBÐBÐB¡  A˜˜1ÐBÐBÐBó    ©r   r1   )Ú1z1;I)r9   z1;IR)r9   r9   )r9   z1;R)r   )ÚLzL;2I)r:   zL;2IR)r:   zL;2)r:   zL;2R)r   )r:   zL;4I)r:   zL;4IR)r:   zL;4)r:   zL;4R)r%   )r:   zL;I)r:   zL;IR)r:   r:   )r:   zL;R)é   )úI;16zI;12)é   )r<   r<   )úI;16Br>   )r<   zI;16R)ÚIúI;16S)r?   úI;16BS)r   )é    )ÚFúF;32F)rC   úF;32BF)r?   zI;32N)r?   úI;32S)r?   úI;32BS)r%   r%   )ÚLArH   )r%   r%   r%   )ÚRGBrI   )rI   zRGB;R)r%   r%   r%   r%   )ÚRGBArJ   ©r   )ÚRGBXrL   )r%   r%   r%   r%   r%   ©r   r   )rL   ÚRGBXX)r%   r%   r%   r%   r%   r%   )r   r   r   )rL   ÚRGBXXX)rJ   ÚRGBa)r   r   )rJ   ÚRGBaX)r   r   r   )rJ   ÚRGBaXX)r   r   )rJ   ÚRGBAX)r   r   r   )rJ   ÚRGBAXX)iç  )r=   r=   r=   )rI   zRGB;16L)rI   zRGB;16B)r=   r=   r=   r=   )rJ   zRGBA;16L)rJ   zRGBA;16B)rL   zRGBX;16L)rL   zRGBX;16B)rJ   zRGBa;16L)rJ   zRGBa;16B)ÚPzP;1)rU   zP;1R)rU   zP;2)rU   zP;2R)rU   zP;4)rU   zP;4R)rU   rU   )ÚPArV   )rU   zP;R)ÚCMYKrW   )rW   ÚCMYKX)rW   ÚCMYKXX)rW   zCMYK;16L)rI   rL   )ÚLABrZ   c              #   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )r   N)Úlen)r2   Úkey_tps     r5   ú	<genexpr>r^     s,   è è € ÐHÐH¨V�#˜f Qœi™.œ.ÐHÐHÐHÐHÐHÐHr7   )ó   MM *ó   II* s   MM* s   II *s   MM +s   II+ c                 ó$   — | d d…         t           v S ©Nr   )ÚPREFIXES©Úprefixs    r5   Ú_acceptrf     s   € Ø�"�1�"Œ:�Ð!Ð!r7   c                 ó˜   — t          | ¦  «        dk    }t          |rd| z  n| ¦  «                             |¦  «        }|r|d d d…         n|S )Nr   éÿÿÿÿ)ÚabsÚIFDRationalÚlimit_rational)ÚvalÚmax_valÚinvÚn_ds       r5   Ú_limit_rationalrp     sR   € Ý
ˆc‰(Œ(�QŠ,€CÝ
 Ð-�a˜#‘g�g¨#Ñ
.Ô
.×
=Ò
=¸gÑ
FÔ
F€CØÐ$ˆ3ˆtˆt�ˆtŒ9ˆ9 Ð$r7   c                 óø   — t          | ¦  «        }|j        |j        f}t          |¦  «        |k     rt	          | t          |¦  «        ¦  «        }t          |¦  «        |k    rt          |Ž } t	          | |¦  «        }|S ©N)r   Ú	numeratorÚdenominatorÚminrp   ri   Úmax)rl   rm   Úmin_valÚfracro   s        r5   Ú_limit_signed_rationalry     sp   € Ý�C‰=Œ=€DØ
Œ.˜$Ô*Ð
*€Cå
ˆ3�x„x�'ÒÐÝ˜c¥3 w¡<¤<Ñ0Ô0ˆå
ˆ3�x„x�'ÒÐÝ˜ˆnˆÝ˜c 7Ñ+Ô+ˆà€Jr7   c                   ó´  — e Zd ZdZ	 dZd)d„Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Z	  ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z  ed¦  «        Z! ed ¦  «        Z" ed!¦  «        Z# ed"¦  «        Z$ ed#¦  «        Z% ed$¦  «        Z& ed%¦  «        Z' ed&¦  «        Z( ed'¦  «        Z)d(S )*rj   zÀImplements a rational class where 0/0 is a legal value to match
    the in the wild use of exif rationals.

    e.g., DigitalZoomRatio - 0.00/0.00  indicates that no digital zoom was used
    )Ú
_numeratorÚ_denominatorÚ_valr   c                 óŽ  — t          |t          ¦  «        r&|j        | _        |j        | _        |j        | _        dS t          |t          ¦  «        r|j        | _        |j        | _        n|| _        || _        |dk    rt          d¦  «        | _        dS |dk    rt          |¦  «        | _        dS t          ||¦  «        | _        dS )z®
        :param value: either an integer numerator, a
        float/rational/other number, or an IFDRational
        :param denominator: Optional integer denominator
        Nr   Únanr   )	Ú
isinstancerj   rs   r{   rt   r|   r}   r   Úfloat)ÚselfÚvaluert   s      r5   Ú__init__zIFDRational.__init__=  s½   € õ �e�[Ñ)Ô)ð 	Ø#œoˆDŒOØ %Ô 1ˆDÔØœ
ˆDŒIØˆFå�e�XÑ&Ô&ð 	,Ø#œoˆDŒOØ %Ô 1ˆDÔÐà#ˆDŒOØ +ˆDÔà˜!ÒÐÝ˜e™œˆDŒIˆIˆIØ˜AÒÐÝ  ™œˆDŒIˆIˆIå  ¨Ñ4Ô4ˆDŒIˆIˆIr7   c                 ó   — | j         S rr   )r{   ©r‚   s    r5   rs   zIFDRational.numeratorW  s
   € àŒÐr7   c                 ó   — | j         S rr   )r|   r†   s    r5   rt   zIFDRational.denominator[  s   € àÔ Ð r7   c                 ó„   — | j         dk    r| j        | j         fS | j                             |¦  «        }|j        |j         fS )z…

        :param max_denominator: Integer, the maximum denominator value
        :returns: Tuple of (numerator, denominator)
        r   )rt   rs   r}   Úlimit_denominator)r‚   Úmax_denominatorÚfs      r5   rk   zIFDRational.limit_rational_  sF   € ð Ô˜qÒ Ð Ø”> 4Ô#3Ð3Ð3àŒI×'Ò'¨Ñ8Ô8ˆØŒ{˜AœMÐ)Ð)r7   c                 óD   — t          t          | j        ¦  «        ¦  «        S rr   )Ústrr�   r}   r†   s    r5   Ú__repr__zIFDRational.__repr__l  s   € Ý•5˜œÑ#Ô#Ñ$Ô$Ð$r7   c                 ó4   — | j                              ¦   «         S rr   )r}   Ú__hash__r†   s    r5   r�   zIFDRational.__hash__o  s   € ØŒy×!Ò!Ñ#Ô#Ð#r7   c                 óœ   — | j         }t          |t          ¦  «        r|j         }t          |t          ¦  «        rt          |¦  «        }||k    S rr   )r}   r€   rj   r�   )r‚   Úotherrl   s      r5   Ú__eq__zIFDRational.__eq__r  sI   € ØŒiˆÝ�e�[Ñ)Ô)ð 	Ø”JˆEÝ�e�UÑ#Ô#ð 	Ý˜‘*”*ˆCØ�eŠ|Ðr7   c                 ó*   — | j         | j        | j        gS rr   )r}   r{   r|   r†   s    r5   Ú__getstate__zIFDRational.__getstate__z  s   € Ø”	˜4œ?¨DÔ,=Ð>Ð>r7   c                 ór   — t                                | d¦  «         |\  }}}|| _        || _        || _        d S )Nr   )rj   r„   r}   r{   r|   )r‚   Ústater}   r{   r|   s        r5   Ú__setstate__zIFDRational.__setstate__}  s@   € Ý×Ò˜T 1Ñ%Ô%Ð%Ø).Ñ&ˆˆj˜,ØˆŒ	Ø$ˆŒØ(ˆÔÐÐr7   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó4   •—  t          | j        ‰¦  «        |Ž S rr   )Úgetattrr}   )r‚   ÚargsÚops     €r5   Údelegatez'IFDRational._delegate.<locals>.delegate…  s   ø€ Ø)•7˜4œ9 bÑ)Ô)¨4Ð0Ð0r7   r1   )r�   rž   s   ` r5   Ú	_delegatezIFDRational._delegate„  s#   ø€ ð	1ð 	1ð 	1ð 	1ð 	1ð ˆr7   Ú__add__Ú__radd__Ú__sub__Ú__rsub__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú__pow__Ú__rpow__Ú__pos__Ú__neg__Ú__abs__Ú	__trunc__Ú__lt__Ú__gt__Ú__le__Ú__ge__Ú__bool__Ú__ceil__Ú	__floor__Ú	__round__Nr8   )*Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r„   Úpropertyrs   rt   rk   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¹   r1   r7   r5   rj   rj   /  sd  € € € € € ðð ðð
 7€Ið5ð 5ð 5ð 5ð4 ðð ñ „Xðð ð!ð !ñ „Xð!ð*ð *ð *ð%ð %ð %ð$ð $ð $ðð ð ð?ð ?ð ?ð)ð )ð )ðð ð ðð ˆi˜	Ñ"Ô"€GØˆy˜Ñ$Ô$€HØˆi˜	Ñ"Ô"€GØˆy˜Ñ$Ô$€HØˆi˜	Ñ"Ô"€GØˆy˜Ñ$Ô$€HØ�)˜MÑ*Ô*€KØ�9˜^Ñ,Ô,€LØ�9˜^Ñ,Ô,€LØ�I˜oÑ.Ô.€MØˆi˜	Ñ"Ô"€GØˆy˜Ñ$Ô$€HØˆi˜	Ñ"Ô"€GØˆy˜Ñ$Ô$€HØˆi˜	Ñ"Ô"€GØˆi˜	Ñ"Ô"€GØˆi˜	Ñ"Ô"€GØ�	˜+Ñ&Ô&€IØˆY�xÑ Ô €FØˆY�xÑ Ô €FØˆY�xÑ Ô €FØˆY�xÑ Ô €FØˆy˜Ñ$Ô$€HØˆy˜Ñ$Ô$€HØ�	˜+Ñ&Ô&€IØ�	˜+Ñ&Ô&€I€I€Ir7   rj   c                   óf  — e Zd ZdZd>d„Z ed„ ¦  «        Z ed„ ¦  «        Z ed„ ¦  «        Zej	        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 e eeej        ddfej        ddfej        ddfej        ddfej         d d!fej!        d"d#fej"        d$d%fej#        ddfej$        d&d'fg	¦  «        ¦  «          ed(d(¦  «        d?d*„¦   «         Z% ed(¦  «        d+„ ¦   «         Z& ed,d(¦  «        d?d-„¦   «         Z' ed,¦  «        d.„ ¦   «         Z( ed/d0¦  «        d?d1„¦   «         Z) ed/¦  «        d2„ ¦   «         Z* ed3d(¦  «        d?d4„¦   «         Z+ ed3¦  «        d5„ ¦   «         Z, ed6d0¦  «        d?d7„¦   «         Z- ed6¦  «        d8„ ¦   «         Z.d9„ Z/d:„ Z0d@d<„Z1d=„ Z2dS )AÚImageFileDirectory_v2a  This class represents a TIFF tag directory.  To speed things up, we
    don't decode tags unless they're asked for.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v2()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        'Some Data'

    Individual values are returned as the strings or numbers, sequences are
    returned as tuples of the values.

    The tiff metadata type of each item is stored in a dictionary of
    tag types in
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types
    are read from a tiff file, guessed from the type added, or added
    manually.

    Data Structures:

        * ``self.tagtype = {}``

          * Key: numerical TIFF tag number
          * Value: integer corresponding to the data type from
            :py:data:`.TiffTags.TYPES`

          .. versionadded:: 3.0.0

    'Internal' data structures:

        * ``self._tags_v2 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data, as tuple for multiple values

        * ``self._tagdata = {}``

          * Key: numerical TIFF tag number
          * Value: undecoded byte string from file

        * ``self._tags_v1 = {}``

          * Key: numerical TIFF tag number
          * Value: decoded data in the v1 format

    Tags will be found in the private attributes ``self._tagdata``, and in
    ``self._tags_v2`` once decoded.

    ``self.legacy_api`` is a value for internal use, and shouldn't be changed
    from outside code. In cooperation with
    :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api``
    is true, then decoded tags will be populated into both ``_tags_v1`` and
    ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF
    save routine. Tags should be read from ``_tags_v1`` if
    ``legacy_api == true``.

    ó   II*     Nc                 ó  — t          |¦  «        s"dt          |¦  «        › d�}t          |¦  «        ‚|�|n	|dd…         | _        | j        t          k    rd| _        n)| j        t          k    rd| _        nd}t          |¦  «        ‚|d         dk    | _        || _        i | _	        	 |  
                    ¦   «          | j        r|                      d	|d
d…         ¦  «        n|                      d|dd…         ¦  «        \  | _        d| _        dS )a—  Initialize an ImageFileDirectory.

        To construct an ImageFileDirectory from a real file, pass the 8-byte
        magic header to the constructor.  To only set the endianness, pass it
        as the 'prefix' keyword argument.

        :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets
              endianness.
        :param prefix: Override the endianness of the file.
        znot a TIFF file (header z not valid)Nr   ú>ú<znot a TIFF IFDé+   ÚQr%   r:   r   F)rf   ÚreprÚSyntaxErrorÚ_prefixÚMMÚ_endianÚIIÚ_bigtiffÚgroupÚtagtypeÚresetÚ_unpackÚnextÚ_legacy_api)r‚   Úifhre   rÏ   Úmsgs        r5   r„   zImageFileDirectory_v2.__init__ë  s  € õ �s‰|Œ|ð 	#ØC­T°#©Y¬YÐCÐCÐCˆCÝ˜cÑ"Ô"Ð"Ø!'Ð!3�v�v¸¸R¸a¸R¼ˆŒØŒ<�2ÒÐØˆDŒLˆLØŒ\�RÒÐØˆDŒLˆLà"ˆCÝ˜cÑ"Ô"Ð"Ø˜Aœ "šˆŒØˆŒ
ØˆŒØ'Ø�
Š
‰Œˆà*.¬-ÐWˆD�LŠL˜˜c ! " "œgÑ&Ô&Ð&¸T¿\º\È#ÈsÐSTÐSUÐSUÌwÑ=WÔ=Wñ 	ˆŒð !ˆÔÐÐr7   c                 ó   — | j         S rr   )rÊ   r†   s    r5   ú<lambda>zImageFileDirectory_v2.<lambda>  ó   €  4¤<€ r7   c                 ó   — | j         S rr   )Ú_offsetr†   s    r5   rØ   zImageFileDirectory_v2.<lambda>  rÙ   r7   c                 ó   — | j         S rr   )rÔ   r†   s    r5   rØ   zImageFileDirectory_v2.<lambda>  s	   €  tÔ'7€ r7   c                 ó$   — d}t          |¦  «        ‚)Nz"Not allowing setting of legacy api)Ú	Exception)r‚   rƒ   rÖ   s      r5   Ú
legacy_apiz ImageFileDirectory_v2.legacy_api  s   € à2ˆÝ˜‰nŒnÐr7   c                 óZ   — i | _         i | _        i | _        i | _        d | _        d | _        d S rr   )Ú_tags_v1Ú_tags_v2Ú_tagdatarÐ   Ú_nextrÛ   r†   s    r5   rÑ   zImageFileDirectory_v2.reset  s0   € ØˆŒØˆŒØˆŒØˆŒØˆŒ
ØˆŒˆˆr7   c                 ó:   — t          t          | ¦  «        ¦  «        S rr   )r�   Údictr†   s    r5   Ú__str__zImageFileDirectory_v2.__str__  s   € Ý•4˜‘:”:‰ŒÐr7   c                 óD   ‡ — ˆ fd„‰                       ¦   «         D ¦   «         S )z�
        :returns: dict of name|key: value

        Returns the complete tag dictionary, with named tags where possible.
        c                 óV   •— i | ]%\  }}t          j        |‰j        ¦  «        j        |“Œ&S r1   )r   ÚlookuprÏ   Úname)r2   Úcoderƒ   r‚   s      €r5   r6   z/ImageFileDirectory_v2.named.<locals>.<dictcomp>%  s@   ø€ ð 
ð 
ð 
á��eõ ŒO˜D $¤*Ñ-Ô-Ô2°Eð
ð 
ð 
r7   )Úitemsr†   s   `r5   ÚnamedzImageFileDirectory_v2.named  s6   ø€ ð
ð 
ð 
ð 
à#Ÿzšz™|œ|ð
ñ 
ô 
ð 	
r7   c                 ón   — t          t          | j        ¦  «        t          | j        ¦  «        z  ¦  «        S rr   )r\   Úsetrã   râ   r†   s    r5   Ú__len__zImageFileDirectory_v2.__len__*  ó)   € Ý•3�t”}Ñ%Ô%­¨D¬MÑ(:Ô(:Ñ:Ñ;Ô;Ð;r7   c                 óü   — || j         vr?| j        |         }| j        |         }| j        |         \  }} || || j        ¦  «        | |<   | j         |         }| j        rt          |t          t          f¦  «        s|f}|S rr   )râ   rã   rÐ   Ú_load_dispatchrß   r€   ÚtupleÚbytes)r‚   ÚtagÚdataÚtypÚsizeÚhandlerrl   s          r5   Ú__getitem__z!ImageFileDirectory_v2.__getitem__-  sˆ   € Ø�d”mÐ#Ð#Ø”= Ô%ˆDØ”,˜sÔ#ˆCØ Ô/°Ô4‰MˆD�'Ø˜  d¨D¬OÑ<Ô<ˆD�‰IØŒm˜CÔ ˆØŒ?ð 	¥:¨cµE½5°>Ñ#BÔ#Bð 	Ø�&ˆCØˆ
r7   c                 ó&   — || j         v p|| j        v S rr   )râ   rã   ©r‚   r÷   s     r5   Ú__contains__z"ImageFileDirectory_v2.__contains__8  ó   € Ø�d”mÐ#Ð; s¨d¬mÐ';Ð;r7   c                 ó>   — |                       ||| j        ¦  «         d S rr   )Ú_setitemrß   )r‚   r÷   rƒ   s      r5   Ú__setitem__z!ImageFileDirectory_v2.__setitem__;  s    € Ø�Š�c˜5 $¤/Ñ2Ô2Ð2Ð2Ð2r7   c           	      óì  ‡— t           t          t          f}t          j        || j        ¦  «        Št          ||¦  «        r|gn|}|| j        v�r¸‰j        r‰j        | j        |<   �n t          j	        | j        |<   t          d„ |D ¦   «         ¦  «        r;t          d„ |D ¦   «         ¦  «        rt          j        nt          j        | j        |<   �n8t          d„ |D ¦   «         ¦  «        r–t          d„ |D ¦   «         ¦  «        rt          j        | j        |<   nñt          d„ |D ¦   «         ¦  «        rt          j        | j        |<   nÃt          d„ |D ¦   «         ¦  «        rt          j        nt          j        | j        |<   n‰t          d„ |D ¦   «         ¦  «        rt          j        | j        |<   n[t          d„ |D ¦   «         ¦  «        rt          j        | j        |<   n-t          d	„ |D ¦   «         ¦  «        rt          j        | j        |<   | j        |         t          j	        k    rd
„ |D ¦   «         }n'| j        |         t          j        k    rd„ |D ¦   «         }| j        |         t          j        k    ot          |t(          ¦  «        }|st+          ˆfd„|D ¦   «         ¦  «        }|r| j        n| j        }|sº‰j        dk    s7| j        |         t          j        k    s‰j        €�t3          |¦  «        dk    rz|sx|r(| j        |         t          j        t          j        fv r|f}	 |\  ||<   d S # t4          $ r7 t7          j        d|› dt3          |¦  «        › d�¦  «         |d         ||<   Y d S w xY w|||<   d S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rr   )r€   rj   ©r2   r4   s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>I  s,   è è € ÐBÐB°a•z !¥[Ñ1Ô1ÐBÐBÐBÐBÐBÐBr7   c              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr1   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>L  s&   è è € Ð6Ð6¨!˜q AšvÐ6Ð6Ð6Ð6Ð6Ð6r7   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rr   )r€   Úintr  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>O  ó,   è è € Ð<Ð<°� A¥sÑ+Ô+Ð<Ð<Ð<Ð<Ð<Ð<r7   c              3   ó6   K  — | ]}d |cxk    odk     nc V — ŒdS )r   r   Nr1   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>P  s6   è è € Ð:Ð:¨a˜1 ˜>˜>š>˜> Eš>˜>˜>˜>Ð:Ð:Ð:Ð:Ð:Ð:r7   c              3   ó6   K  — | ]}d |cxk     odk     nc V — ŒdS )i €ÿÿi €  Nr1   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>R  s>   è è € ÐBÐB°a˜X¨Ð1Ð1Ò1Ð1¨EÒ1Ð1Ð1Ð1ÐBÐBÐBÐBÐBÐBr7   c              3   ó"   K  — | ]
}|d k    V — ŒdS r  r1   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>W  s&   è è € Ð":Ð":¨a 1¨¢6Ð":Ð":Ð":Ð":Ð":Ð":r7   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rr   )r€   r�   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>Z  ó,   è è € Ð>Ð>°!� A¥uÑ-Ô-Ð>Ð>Ð>Ð>Ð>Ð>r7   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rr   )r€   r�   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>\  r  r7   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rr   )r€   rö   r  s     r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>^  r  r7   c                 óh   — g | ]/}t          |t          ¦  «        r|                     d d¦  «        n|‘Œ0S )ÚasciiÚreplace)r€   r�   Úencoder  s     r5   ú
<listcomp>z2ImageFileDirectory_v2._setitem.<locals>.<listcomp>b  sJ   € ð ð ð àõ 1;¸1½cÑ0BÔ0BÐI�—’˜ )Ñ,Ô,Ð,Èðð ð r7   c                 óZ   — g | ](}t          |t          ¦  «        rt          |¦  «        n|‘Œ)S r1   )r€   r
  r�   r  s     r5   r  z2ImageFileDirectory_v2._setitem.<locals>.<listcomp>g  s1   € ÐLÐLÐLÀ¥*¨QµÑ"4Ô"4Ð;•e˜A‘h”h�h¸!ÐLÐLÐLr7   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rr   )Úcvt_enum)r2   rƒ   Úinfos     €r5   r^   z1ImageFileDirectory_v2._setitem.<locals>.<genexpr>k  s/   øè è € ÐDÐD°E˜4Ÿ=š=¨Ñ/Ô/ÐDÐDÐDÐDÐDÐDr7   r   zMetadata Warning, tag z had too many entries: z, expected 1r   )r   rö   r�   r   rê   rÏ   r€   rÐ   ÚtypeÚ	UNDEFINEDÚallÚRATIONALÚSIGNED_RATIONALÚSHORTÚSIGNED_SHORTÚLONGÚSIGNED_LONGÚDOUBLEÚASCIIÚBYTEræ   rõ   rá   râ   Úlengthr\   Ú
ValueErrorÚwarningsÚwarn)	r‚   r÷   rƒ   rß   Ú	basetypesÚvaluesÚis_ifdÚdestr  s	           @r5   r  zImageFileDirectory_v2._setitem>  sê  ø€ Ý�U¥CÐ(ˆ	åŒ˜s D¤JÑ/Ô/ˆÝ& u¨iÑ8Ô8ÐC�%��¸eˆà�d”lÐ"Ñ"ØŒyð 6Ø$(¤I�”˜SÑ!Ñ!å$,Ô$6�”˜SÑ!ÝÐBÐB¸6ÐBÑBÔBÑBÔBð 6õ Ð6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6ð6�Ô)Ð)å%Ô5ð ”L Ñ%Ñ%õ
 Ð<Ð<°VÐ<Ñ<Ô<Ñ<Ô<ð 6ÝÐ:Ð:°6Ð:Ñ:Ô:Ñ:Ô:ð 	Ý,4¬N˜œ SÑ)Ð)ÝÐBÐB¸6ÐBÑBÔBÑBÔBð Ý,4Ô,A˜œ SÑ)Ð)õ  #Ð":Ð":°6Ð":Ñ":Ô":Ñ:Ô:ð6�HœM˜Må!)Ô!5ð œ SÑ)Ð)õ
 Ð>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ð 6Ý(0¬�D”L Ñ%Ð%ÝÐ<Ð<°VÐ<Ñ<Ô<Ñ<Ô<ð 6Ý(0¬�D”L Ñ%Ð%ÝÐ>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ð 6Ý(0¬�D”L Ñ%àŒ<˜Ô¥Ô 2Ò2Ð2ðð àðñ ô ˆFˆFð Œ\˜#Ô¥(Ô"3Ò3Ð3ØLÐLÀVÐLÑLÔLˆFà”˜cÔ"¥h¤mÒ3ÐP½
À6Í4Ñ8PÔ8PˆØð 	EÝÐDÐDÐDÐD¸VÐDÑDÔDÑDÔDˆFà *Ð=ˆtŒ}ˆ}°´ˆð ð 	ØŒ[˜AÒÐØŒ|˜CÔ ¥H¤MÒ1Ð1Ø”Ð#­¨F©¬°qÒ(8Ð(8ÀÐ(8ð ð #˜dœl¨3Ô/ÝÔ!ÝÔ(ð4ð ð ð !˜�ð&Ø%‘��c‘��øÝð &ð &ð &å”ð1¨Sð 1ð 1Ý˜6‘{”{ð1ð 1ð 1ñô ð ð # 1œI��S‘	�	�	�	ð&øøøð ˆD�‰IˆIˆIs   Ì"L+ Ì+=M,Í+M,c                 ó¨   — | j                              |d ¦  «         | j                             |d ¦  «         | j                             |d ¦  «         d S rr   )râ   Úpoprá   rã   rþ   s     r5   Ú__delitem__z!ImageFileDirectory_v2.__delitem__Ž  sP   € ØŒ×Ò˜#˜tÑ$Ô$Ð$ØŒ×Ò˜#˜tÑ$Ô$Ð$ØŒ×Ò˜#˜tÑ$Ô$Ð$Ð$Ð$r7   c                 ón   — t          t          | j        ¦  «        t          | j        ¦  «        z  ¦  «        S rr   )Úiterrð   rã   râ   r†   s    r5   Ú__iter__zImageFileDirectory_v2.__iter__“  ó)   € Ý•C˜œÑ&Ô&­¨T¬]Ñ);Ô);Ñ;Ñ<Ô<Ð<r7   c                 ó<   — t          j        | j        |z   |¦  «        S rr   )ÚstructÚunpackrÌ   )r‚   Úfmtrø   s      r5   rÒ   zImageFileDirectory_v2._unpack–  s   € ÝŒ}˜Tœ\¨CÑ/°Ñ6Ô6Ð6r7   c                 ó6   — t          j        | j        |z   g|¢R Ž S rr   )r8  ÚpackrÌ   )r‚   r:  r-  s      r5   Ú_packzImageFileDirectory_v2._pack™  s!   € ÝŒ{˜4œ<¨#Ñ-Ð7°Ð7Ð7Ð7Ð7r7   c                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 ó¬   •— ddl m} | j                             d¦  «        r&| j        dd …                              dd¦  «        |‰<   ‰| ft
          ‰<   | S )Nr   r   Úload_r   Ú_ú )r   r   rº   Ú
startswithr  rô   )Úfuncr   Úidxrú   s     €€r5   Ú	decoratorz9ImageFileDirectory_v2._register_loader.<locals>.decorator�  se   ø€ Ø'Ð'Ð'Ð'Ð'Ð'àŒ}×'Ò'¨Ñ0Ô0ð AØ!œ]¨1¨2¨2Ô.×6Ò6°s¸CÑ@Ô@��c‘
Ø"&¨ *�N˜3ÑØˆKr7   r1   )rE  rú   rF  s   `` r5   Ú_register_loaderz&ImageFileDirectory_v2._register_loaderœ  s*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð Ðr7   c                 ó   ‡ — ˆ fd„}|S )Nc                 ó   •— | t           ‰<   | S rr   )Ú_write_dispatch)rD  rE  s    €r5   rF  z9ImageFileDirectory_v2._register_writer.<locals>.decorator¨  s   ø€ Ø#'�O˜CÑ ØˆKr7   r1   )rE  rF  s   ` r5   Ú_register_writerz&ImageFileDirectory_v2._register_writer§  s$   ø€ ð	ð 	ð 	ð 	ð 	ð Ðr7   c                 ó–   ‡‡— ddl m} | \  }Š}|||<   t          j        d‰z   ¦  «        Š‰dˆˆfd„	ft          |<   ˆfd„t
          |<   d S )Nr   r   ú=Tc                 óX   •— |                       t          |¦  «        ‰z  › ‰› �|¦  «        S rr   )rÒ   r\   )r‚   rø   rß   r:  rú   s      €€r5   rØ   z7ImageFileDirectory_v2._register_basic.<locals>.<lambda>¶  s/   ø€ Ø—’¥ D¡	¤	¨TÑ 1Ð8°3Ð8Ð8¸$Ñ?Ô?ð r7   c                 óJ   •‡ — d                      ˆˆ fd„|D ¦   «         ¦  «        S )Nr7   c              3   óD   •K  — | ]}‰                      ‰|¦  «        V — Œd S rr   )r=  )r2   rƒ   r:  r‚   s     €€r5   r^   zJImageFileDirectory_v2._register_basic.<locals>.<lambda>.<locals>.<genexpr>»  s1   øè è € Ð@Ð@°�T—Z’Z  UÑ+Ô+Ð@Ð@Ð@Ð@Ð@Ð@r7   ©Újoin)r‚   r-  r:  s   ` €r5   rØ   z7ImageFileDirectory_v2._register_basic.<locals>.<lambda>º  s0   øø€ Ø�HŠHÐ@Ð@Ð@Ð@Ð@¸Ð@Ñ@Ô@Ñ@Ô@ð r7   ©T)r   r   r8  Úcalcsizerô   rJ  )Úidx_fmt_namer   rE  rë   r:  rú   s       @@r5   Ú_register_basicz%ImageFileDirectory_v2._register_basic®  s‹   øø€ Ø#Ð#Ð#Ð#Ð#Ð#à%‰ˆˆS�$Øˆˆc‰
ÝŒ˜s S™yÑ)Ô)ˆàðð ð ð ð ð ð
��sÑð 
ð  
ð  
ð  
�˜ÑÐÐr7   ÚHÚshortr:   ÚlongÚbzsigned byteÚhzsigned shortÚlzsigned longr‹   r�   ÚdÚdoublerÇ   Úlong8r   Tc                 ó   — |S rr   r1   ©r‚   rø   rß   s      r5   Ú	load_bytezImageFileDirectory_v2.load_byteÏ  ó   € àˆr7   c                 óP   — t          |t          ¦  «        rt          |f¦  «        }|S rr   )r€   r
  rö   ©r‚   rø   s     r5   Ú
write_bytez ImageFileDirectory_v2.write_byteÓ  s&   € å�d�CÑ Ô ð 	"Ý˜$˜‘>”>ˆDØˆr7   r   c                 ól   — |                      d¦  «        r
|d d…         }|                     dd¦  «        S )Nó    rh   zlatin-1r  )ÚendswithÚdecodera  s      r5   Úload_stringz!ImageFileDirectory_v2.load_stringÙ  s7   € à�=Š=˜ÑÔð 	Ø˜˜˜”9ˆDØ�{Š{˜9 iÑ0Ô0Ð0r7   c                 óª   — t          |t          ¦  «        rt          |¦  «        }t          |t          ¦  «        s|                     dd¦  «        }|dz   S )Nr  r  rh  )r€   r
  r�   rö   r  ©r‚   rƒ   s     r5   Úwrite_stringz"ImageFileDirectory_v2.write_stringß  sP   € õ �e�SÑ!Ô!ð 	Ý˜‘J”JˆEÝ˜%¥Ñ'Ô'ð 	5Ø—L’L ¨)Ñ4Ô4ˆEØ�u‰}Ðr7   r   r%   c           
      óØ   ‡‡— |                       t          |¦  «        dz  › d�|¦  «        }ˆfd„Št          ˆfd„t          |d d d…         |dd d…         ¦  «        D ¦   «         ¦  «        S )Nr   r:   c                 ó0   •— ‰r| |fnt          | |¦  «        S rr   ©rj   ©ÚarZ  rß   s     €r5   Úcombinez4ImageFileDirectory_v2.load_rational.<locals>.combineì  ó    ø€ Ø'Ð>�A�q�6�6­[¸¸AÑ->Ô->Ð>r7   c              3   ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S rr   r1   ©r2   ÚnumÚdenomrt  s      €r5   r^   z6ImageFileDirectory_v2.load_rational.<locals>.<genexpr>ï  ó3   øè è € ÐVÐV©Z¨S°%�W�W˜S %Ñ(Ô(ÐVÐVÐVÐVÐVÐVr7   r   r   ©rÒ   r\   rõ   Úzip©r‚   rø   rß   Úvalsrt  s     ` @r5   Úload_rationalz#ImageFileDirectory_v2.load_rationalè  ó‡   øø€ à�|Š|�s 4™yœy¨A™~Ð0Ð0Ð0°$Ñ7Ô7ˆð	?ð 	?ð 	?ð 	?ð 	?õ ÐVÐVÐVÐV½3¸tÀCÀCÀaÀC¼yÈ$ÈqÈtÐRSÈtÌ*Ñ;UÔ;UÐVÑVÔVÑVÔVÐVr7   c                 óF   ‡ — d                      ˆ fd„|D ¦   «         ¦  «        S )Nr7   c              3   óP   •K  — | ] } ‰j         d gt          |d¦  «        ¢R Ž V — Œ!dS )Ú2Ll   ÿÿ N)r=  rp   ©r2   rx   r‚   s     €r5   r^   z7ImageFileDirectory_v2.write_rational.<locals>.<genexpr>ó  sR   øè è € ð 
ð 
ØDHˆJˆDŒJ�tÐ?�o¨d°IÑ>Ô>Ð?Ð?Ð?ð
ð 
ð 
ð 
ð 
ð 
r7   rQ  ©r‚   r-  s   ` r5   Úwrite_rationalz$ImageFileDirectory_v2.write_rationalñ  s?   ø€ à�xŠxð 
ð 
ð 
ð 
ØLRð
ñ 
ô 
ñ 
ô 
ð 	
r7   r#   c                 ó   — |S rr   r1   ra  s      r5   Úload_undefinedz$ImageFileDirectory_v2.load_undefined÷  rc  r7   c                 ó   — |S rr   r1   rm  s     r5   Úwrite_undefinedz%ImageFileDirectory_v2.write_undefinedû  s   € àˆr7   é
   c           
      óØ   ‡‡— |                       t          |¦  «        dz  › d�|¦  «        }ˆfd„Št          ˆfd„t          |d d d…         |dd d…         ¦  «        D ¦   «         ¦  «        S )Nr   r\  c                 ó0   •— ‰r| |fnt          | |¦  «        S rr   rq  rr  s     €r5   rt  z;ImageFileDirectory_v2.load_signed_rational.<locals>.combine  ru  r7   c              3   ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S rr   r1   rw  s      €r5   r^   z=ImageFileDirectory_v2.load_signed_rational.<locals>.<genexpr>  rz  r7   r   r   r{  r}  s     ` @r5   Úload_signed_rationalz*ImageFileDirectory_v2.load_signed_rationalÿ  r€  r7   c                 óF   ‡ — d                      ˆ fd„|D ¦   «         ¦  «        S )Nr7   c           	   3   óR   •K  — | ]!} ‰j         d gt          |dd¦  «        ¢R Ž V — Œ"dS )Ú2liÿÿÿi   €N)r=  ry   r„  s     €r5   r^   z>ImageFileDirectory_v2.write_signed_rational.<locals>.<genexpr>
  sX   øè è € ð 
ð 
àð ˆDŒJ�tÐPÕ4°T¸9ÀhÑOÔOÐPÐPÐPð
ð 
ð 
ð 
ð 
ð 
r7   rQ  r…  s   ` r5   Úwrite_signed_rationalz+ImageFileDirectory_v2.write_signed_rational  s?   ø€ à�xŠxð 
ð 
ð 
ð 
àð
ñ 
ô 
ñ 
ô 
ð 	
r7   c                 ó    — |                      |¦  «        }t          |¦  «        |k    r%d|› dt          |¦  «        › d�}t          |¦  «        ‚|S )Nz&Corrupt EXIF data.  Expecting to read ú bytes but only got z. )Úreadr\   ÚOSError)r‚   Úfprú   ÚretrÖ   s        r5   Ú_ensure_readz"ImageFileDirectory_v2._ensure_read  sj   € Ø�gŠg�d‰mŒmˆÝˆs‰8Œ8�tÒÐðLØ%)ðLð LÝ?BÀ3¹x¼xðLð Lð Lð õ ˜#‘,”,ÐØˆ
r7   c           
      ó  — |                       ¦   «          |                     ¦   «         | _        	 | j        r*|                      d|                      |d¦  «        ¦  «        n)|                      d|                      |d¦  «        ¦  «        d         }t          |¦  «        D �]K}| j        r*|                      d|                      |d¦  «        ¦  «        n)|                      d|                      |d	¦  «        ¦  «        \  }}}}t          j        || j	        ¦  «        j
        }t          j        |d
¦  «        }	d|› d|› d|	› d|› d�	}
	 | j        |         \  }}n0# t          $ r# t                               |
d|› �z   ¦  «         Y Œäw xY w||z  }|| j        rdndk    r€|                     ¦   «         }|                      | j        rdnd|¦  «        \  }|
d|› d|› �z  }
|                     |¦  «         t%          j        ||¦  «        }|                     |¦  «         n
|d |…         }t)          |¦  «        |k    rFt+          j        d|› dt)          |¦  «        › d|› �¦  «         t                               |
¦  «         �Œß|st                               |
¦  «         �Œý|| j        |<   || j        |<   |
d|dk    rd|z  nt3          |¦  «        z   z  }
t                               |
¦  «         �ŒM| j        r*|                      d|                      |d¦  «        ¦  «        n)|                      d|                      |d¦  «        ¦  «        \  | _        d S # t6          $ r,}
t+          j        t9          |
¦  «        ¦  «         Y d }
~
d S d }
~
ww xY w)NrÇ   r%   rW  r   r   ÚHHQ8sé   ÚHHL4sr;   Úunknownztag: ú (ú
) - type: ú)z - unsupported type r   r:   z Tag Location: z - Data Location: z/Possibly corrupt EXIF data.  Expecting to read r•  z. Skipping tag ú
 - value: rB   ú<table: %d bytes>)rÑ   ÚtellrÛ   rÎ   rÒ   rš  Úranger   rê   rÏ   rë   r   Úgetrô   ÚKeyErrorÚloggerÚdebugÚseekr	   Ú
_safe_readr\   r*  r+  rã   rÐ   rÈ   rÓ   r—  r�   )r‚   r˜  Ú	tag_countÚir÷   rù   Úcountrø   ÚtagnameÚtypnamerÖ   Ú	unit_sizerû   rú   ÚhereÚoffsets                   r5   ÚloadzImageFileDirectory_v2.load  sÑ  € à�
Š
‰ŒˆØ—w’w‘y”yˆŒð=	ð ”=ðA�—’˜S $×"3Ò"3°B¸Ñ":Ô":Ñ;Ô;Ð;à—\’\ # t×'8Ò'8¸¸QÑ'?Ô'?Ñ@Ô@Øô	ˆIõ
 ˜9Ñ%Ô%ð ."ñ ."�ð ”}ðJ�D—L’L ¨$×*;Ò*;¸BÀÑ*CÔ*CÑDÔDÐDàŸš g¨t×/@Ò/@ÀÀRÑ/HÔ/HÑIÔIñ &��S˜% õ #œ/¨#¨t¬zÑ:Ô:Ô?�Ýœ) C¨Ñ3Ô3�ØI˜gÐIÐI¨ÐIÐI¸ÐIÐIÀ3ÐIÐIÐI�ðØ)-Ô)<¸SÔ)AÑ&�I˜w˜wøÝð ð ð Ý—L’L Ð'C¸cÐ'CÐ'CÑ!CÑDÔDÐDØ�Hðøøøð ˜yÑ(�Ø ¤Ð4˜1˜1°1Ò5Ð5ØŸ7š7™9œ9�DØ $§¢°D´MÐ-J¨S¨SÀsÈDÑ QÔ Q‘I�VØÐM¨TÐMÐMÀVÐMÐMÑM�CØ—G’G˜F‘O”O�OÝ$Ô/°°DÑ9Ô9�DØ—G’G˜D‘M”M�M�Mà   œ;�Då�t‘9”9 Ò$Ð$Ý”Mð/Ø-1ð/ð /ÝGJÈ4ÁyÄyð/ð /à),ð/ð /ñô ð õ
 —L’L Ñ%Ô%Ð%Ùàð Ý—L’L Ñ%Ô%Ð%Ùà%)�”˜cÑ"Ø$'�”˜SÑ!à�|Ø26¸²)°)Ð'¨$Ñ.Ð.ÅÀdÁÄññ �õ —’˜SÑ!Ô!Ð!Ñ!ð ”=ðA�—’˜S $×"3Ò"3°B¸Ñ":Ô":Ñ;Ô;Ð;à—\’\ # t×'8Ò'8¸¸QÑ'?Ô'?Ñ@Ô@ñ ˆTŒYˆYˆYøõ
 ð 	ð 	ð 	ÝŒM�#˜c™(œ(Ñ#Ô#Ð#ØˆFˆFˆFˆFˆFøøøøð	øøøs=   ¯DM ÅEÅM Å*FÆM ÆFÆG
M Í
NÍ!NÎNr   c                 ó  — |                       dt          | j        ¦  «        ¦  «        }g }|t          |¦  «        z   t          | j        ¦  «        dz  z   dz   }d }t          | j                             ¦   «         ¦  «        D �]’\  }}|t
          k    rt          |¦  «        }| j                             |¦  «        }t           	                    d|› d|› dt          |¦  «        › �¦  «         |t          j        k    ot          |t          ¦  «        }|rc| j        dk    rd}	nd	}	t!          |	|¬
¦  «        }
| j        |         }|                     ¦   «         D ]
\  }}||
|<   Œ|
                     |¦  «        }n.t          |t$          ¦  «        r|n|f} | j        |         | g|¢R Ž }t          j        || j        ¦  «        j        }|rdnt/          j        |d¦  «        }d|› d|› d|› d|› d�	}|dt          |¦  «        dk    rdt          |¦  «        z  nt1          |¦  «        z   z  }t           	                    |¦  «         |rd}nD|t          j        t          j        t          j        fv rt          |¦  «        }nt          |¦  «        }t          |¦  «        dk    r0|                     ||||                     dd¦  «        df¦  «         �ŒI|                     ||||                       d|¦  «        |f¦  «         |t          |¦  «        dz   dz  dz  z  }�Œ”|�^||         \  }}}}}|rd}t=          |¦  «        ‚|                       d|                      d|¦  «        d         |z   ¦  «        }|||||f||<   |D ]f\  }}}}}t           	                    |› d|› d|› dt          |¦  «        › dt          |¦  «        › �	¦  «         ||                       d||||¦  «        z  }Œg|dz  }|D ]$\  }}}}}||z  }t          |¦  «        dz  r|dz  }Œ%|S )NrW  r;   r   zTag z, Type: z	, Value: rÅ   s   II*    s   MM *   )rÏ   ÚifdrŸ  zsave: r   r¡  r¢  r£  r=   r¤  r   rh  r7   r:   r   z&multistrip support not yet implementedr   rB  rž  s       ) r=  r\   râ   Úsortedrí   ÚSTRIPOFFSETSrÐ   r§  r©  rª  rÈ   r   r#  r€   ræ   rÌ   rÁ   Útobytesrõ   rJ  rê   rÏ   rë   r   r�   r'  r&  r  ÚappendÚljustÚNotImplementedErrorrÒ   )r‚   r´  ÚresultÚentriesÚstripoffsetsr÷   rƒ   rù   r.  rÕ   r·  r-  Úifd_tagÚ	ifd_valuerø   r°  r±  rÖ   r¯  s                      r5   rº  zImageFileDirectory_v2.tobytes]  sb  € à—’˜C¥ T¤]Ñ!3Ô!3Ñ4Ô4ˆàˆØ�#˜f™+œ+Ñ%­¨D¬MÑ(:Ô(:¸RÑ(?Ñ?À!ÑCˆØˆõ ! ¤×!4Ò!4Ñ!6Ô!6Ñ7Ô7ð (	3ñ (	3‰JˆC�Ø•lÒ"Ð"Ý" 7™|œ|�Ø”,×"Ò" 3Ñ'Ô'ˆCÝ�LŠLÐH ÐHÐH¨SÐHÐH½4À¹;¼;ÐHÐHÑIÔIÐIØ�HœMÒ)ÐE­j¸ÅÑ.EÔ.EˆFØð @Ø”< 3Ò&Ð&Ø7�C�Cà7�CÝ+¨C°sÐ;Ñ;Ô;�Øœ sÔ+�Ø*0¯,ª,©.¬.ð -ð -Ñ&�G˜YØ#,�C˜‘L�LØ—{’{ 6Ñ*Ô*��å",¨UµEÑ":Ô":ÐH˜˜ÀÀ�Ø0�tÔ+¨CÔ0°Ð?¸Ð?Ð?Ð?�å”o c¨4¬:Ñ6Ô6Ô;ˆGØ%ÐD�e�e­5¬9°S¸)Ñ+DÔ+DˆGØF˜7ÐFÐF cÐFÐF°WÐFÐFÀÐFÐFÐFˆCØ�<Ý36°t±9´9À²?°?Ð#¥c¨$¡i¤iÑ/Ð/ÍÈFÉÌññ ˆCõ �LŠL˜ÑÔÐð ð $Ø��Ø�œ­¬½Ô8JÐKÐKÐKÝ˜D™	œ	��å˜F™œ�å�4‰yŒy˜AŠ~ˆ~Ø—’  S¨%°·²¸A¸uÑ1EÔ1EÀsÐKÑLÔLÐLÑLà—’  S¨%°·²¸CÀÑ1HÔ1HÈ$ÐOÑPÔPÐPØ�3˜t™9œ9 q™=¨QÑ.°Ñ2Ñ2�‘ð Ð#Ø+2°<Ô+@Ñ(ˆC��e˜U DØð /Ø>�Ý)¨#Ñ.Ô.Ð.Ø—J’J˜s D§L¢L°°eÑ$<Ô$<¸QÔ$?À&Ñ$HÑIÔIˆEØ$'¨¨e°U¸DÐ$@ˆG�LÑ!ð -4ð 	Bð 	BÑ(ˆC��e˜U DÝ�LŠL˜CÐJÐJ #ÐJÐJ¨ÐJÐJµ°U±´ÐJÐJ½dÀ4¹j¼jÐJÐJÑKÔKÐKØ�d—j’j ¨#¨s°E¸5ÑAÔAÑAˆFˆFð 	�+Ñˆð -4ð 	 ð 	 Ñ(ˆC��e˜U DØ�d‰NˆFÝ�4‰yŒy˜1‰}ð  Ø˜%‘�øàˆr7   c                 ó6  — |                      ¦   «         dk    r2|                     | j        |                      ddd¦  «        z   ¦  «         |                      ¦   «         }|                      |¦  «        }|                     |¦  «         |t          |¦  «        z   S )Nr   ÚHLé*   r%   )r¥  ÚwriterÊ   r=  rº  r\   )r‚   r˜  r´  r¾  s       r5   ÚsavezImageFileDirectory_v2.saveª  s}   € à�7Š7‰9Œ9˜Š>ˆ>à�HŠH�T”\ D§J¢J¨t°R¸Ñ$;Ô$;Ñ;Ñ<Ô<Ð<à—’‘”ˆØ—’˜fÑ%Ô%ˆØ
�Š�ÑÔÐØ�˜F™œÑ#Ð#r7   )rÂ   NNrS  rK   )3rº   r»   r¼   r½   r„   r¿   re   r´  rß   ÚsetterrÑ   rç   rî   rñ   rü   rÿ   r  r  r2  r5  rÒ   r=  rG  rK  rV  ÚlistÚmapr   r!  r#  ÚSIGNED_BYTEr"  r$  ÚFLOATr%  ÚIFDÚLONG8rb  rf  rk  rn  r  r†  rˆ  rŠ  r�  r“  rš  rµ  rº  rÇ  r1   r7   r5   rÁ   rÁ   ®  s  € € € € € ð:ð :ðx!ð !ð !ð !ð@ ˆXÐ/Ð/Ñ0Ô0€FØˆXÐ/Ð/Ñ0Ô0€FØ�Ð7Ð7Ñ8Ô8€JàÔðð ñ Ôððð ð ðð ð ð	
ð 	
ð 	
ð<ð <ð <ð	ð 	ð 	ð<ð <ð <ð3ð 3ð 3ðNð Nð Nð`%ð %ð %ð
=ð =ð =ð7ð 7ð 7ð8ð 8ð 8ð	ð 	ð 	ðð ð ð
ð 
ð 
ð  	€DØˆØà”  gÐ.Ø”  VÐ,ØÔ% s¨MÐ:ØÔ&¨¨^Ð<ØÔ% s¨MÐ:Ø”  gÐ.Ø” # xÐ0Ø”˜s FÐ+Ø”  gÐ.ð
ñ	
ô 	
ñô ð ð" Ð�a˜ÑÔðð ð ñ Ôðð Ð�aÑÔðð ñ Ôðð
 Ð�a˜ÑÔð1ð 1ð 1ñ Ôð1ð
 Ð�aÑÔðð ñ Ôðð Ð�a˜ÑÔðWð Wð Wñ ÔðWð Ð�aÑÔð
ð 
ñ Ôð
ð
 Ð�a˜ÑÔðð ð ñ Ôðð Ð�aÑÔðð ñ Ôðð Ð�b˜!ÑÔðWð Wð Wñ ÔðWð Ð�bÑÔð
ð 
ñ Ôð
ðð ð ðBð Bð BðHKð Kð Kð KðZ	$ð 	$ð 	$ð 	$ð 	$r7   rÁ   rB  rA  r@  Úwrite_c                   óš   ‡ — e Zd ZU dZˆ fd„Z ed„ ¦  «        Z ed„ ¦  «        Zee	d<   	 e
d„ ¦   «         Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zˆ xZS )ÚImageFileDirectory_v1aþ  This class represents the **legacy** interface to a TIFF tag directory.

    Exposes a dictionary interface of the tags in the directory::

        ifd = ImageFileDirectory_v1()
        ifd[key] = 'Some Data'
        ifd.tagtype[key] = TiffTags.ASCII
        print(ifd[key])
        ('Some Data',)

    Also contains a dictionary of tag types as read from the tiff image file,
    :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`.

    Values are returned as a tuple.

    ..  deprecated:: 3.0.0
    c                 óH   •—  t          ¦   «         j        |i |¤Ž d| _        d S )NT)Úsuperr„   rÔ   )r‚   rœ   ÚkwargsÚ	__class__s      €r5   r„   zImageFileDirectory_v1.__init__Ó  s-   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ØˆÔÐÐr7   c                 ó   — | j         S rr   )rá   r†   s    r5   rØ   zImageFileDirectory_v1.<lambda>×  s   €  ¤€ r7   c                 ó   — | j         S rr   )rã   r†   s    r5   rØ   zImageFileDirectory_v1.<lambda>Ø  s   €  D¤M€ r7   rÐ   c                 óp   —  | |j         ¬¦  «        }|j        |_        |j        |_        |j        |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`

        rd   )re   rã   rÐ   rÓ   )ÚclsÚoriginalr·  s      r5   Úfrom_v2zImageFileDirectory_v1.from_v2Þ  s:   € ð ˆc˜œÐ)Ñ)Ô)ˆØÔ(ˆŒØÔ&ˆŒØ”=ˆŒØˆ
r7   c                 óÆ   — t          | j        ¬¦  «        }t          | j        ¦  «        |_        t          | j        ¦  «        |_        t          | j        ¦  «        |_        |S )a2  Returns an
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`
        instance with the same data as is contained in the original
        :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`
        instance.

        :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2`

        rd   )rÁ   re   ræ   rã   rÐ   râ   )r‚   r·  s     r5   Úto_v2zImageFileDirectory_v1.to_v2ð  sN   € õ $¨4¬;Ð7Ñ7Ô7ˆÝ˜DœMÑ*Ô*ˆŒÝ˜4œ<Ñ(Ô(ˆŒÝ˜DœMÑ*Ô*ˆŒØˆ
r7   c                 ó&   — || j         v p|| j        v S rr   )rá   rã   rþ   s     r5   rÿ   z"ImageFileDirectory_v1.__contains__  r   r7   c                 ón   — t          t          | j        ¦  «        t          | j        ¦  «        z  ¦  «        S rr   )r\   rð   rã   rá   r†   s    r5   rñ   zImageFileDirectory_v1.__len__  rò   r7   c                 ón   — t          t          | j        ¦  «        t          | j        ¦  «        z  ¦  «        S rr   )r4  rð   rã   rá   r†   s    r5   r5  zImageFileDirectory_v1.__iter__  r6  r7   c                 ó>   — dD ]}|                       |||¦  «         Œd S ©N)FT)r  )r‚   r÷   rƒ   rß   s       r5   r  z!ImageFileDirectory_v1.__setitem__
  s4   € Ø'ð 	2ð 	2ˆJØ�MŠM˜#˜u jÑ1Ô1Ð1Ð1ð	2ð 	2r7   c           	      ó  — || j         vrQ| j        |         }| j        |         }| j        |         \  }}dD ]$}|                      | || ||¦  «        |¦  «         Œ%| j         |         }t          |t          t          f¦  «        s|f}|S râ  )rá   rã   rÐ   rô   r  r€   rõ   rö   )r‚   r÷   rø   rù   rú   rû   Úlegacyrl   s           r5   rü   z!ImageFileDirectory_v1.__getitem__  sž   € Ø�d”mÐ#Ð#Ø”= Ô%ˆDØ”,˜sÔ#ˆCØ Ô/°Ô4‰MˆD�'Ø'ð Hð H�Ø—’˜c 7 7¨4°°vÑ#>Ô#>ÀÑGÔGÐGÐGØŒm˜CÔ ˆÝ˜#¥¥u˜~Ñ.Ô.ð 	Ø�&ˆCØˆ
r7   )rº   r»   r¼   r½   r„   r¿   ÚtagsÚtagdataræ   Ú__annotations__ÚclassmethodrÛ  rÝ  rÿ   rñ   r5  r  rü   Ú__classcell__©rÕ  s   @r5   rÑ  rÑ  À  sí   ø€ € € € € € ðð ð$ ð  ð  ð  ð  ð ˆ8Ð.Ð.Ñ/Ô/€DØˆhÐ1Ð1Ñ2Ô2€Gð €M€M�MØ!àðð ñ „[ðð"ð ð ð"<ð <ð <ð<ð <ð <ð=ð =ð =ð2ð 2ð 2ð
ð 
ð 
ð 
ð 
ð 
ð 
r7   rÑ  c                   ó‚   ‡ — e Zd ZdZdZdZdˆ fd„	Zd„ Zed„ ¦   «         Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚTiffImageFileÚTIFFz
Adobe TIFFFNc                 ól   •— d | _         	 d | _        	 t          ¦   «                              ||¦  «         d S rr   )Útag_v2r÷   rÓ  r„   )r‚   r˜  ÚfilenamerÕ  s      €r5   r„   zTiffImageFile.__init__)  s7   ø€ ØˆŒØ5àˆŒØ"å‰Œ×Ò˜˜XÑ&Ô&Ð&Ð&Ð&r7   c                 ó*  — | j                              d¦  «        }|d         dk    r|| j                              d¦  «        z  }t          |¦  «        | _        d| _        | j        j        x| _        | _        d| _        | j         | _	        g | _
        d| _        t                               d¦  «         t                               d| j        › �¦  «         t                               dt          |¦  «        › �¦  «         |                      d	¦  «         dS )
z#Open the first image in a TIFF filer%   r   rÆ   Nrh   z*** TiffImageFile._open ***z- __first: z- ifh: r   )r˜  r–  rÁ   rï  r·  rÓ   Ú_TiffImageFile__firstÚ_TiffImageFile__nextÚ_TiffImageFile__frameÚ_fpÚ
_frame_posÚ	_n_framesr©  rª  rÈ   Ú_seek)r‚   rÕ   s     r5   Ú_openzTiffImageFile._open2  sé   € ð Œg�lŠl˜1‰oŒoˆØˆqŒ6�RŠ<ˆ<Ø�4”7—<’< ‘?”?Ñ"ˆCå+¨CÑ0Ô0ˆŒð ˆŒð &*¤[Ô%5Ð5ˆŒ�t”{ØˆŒØ”7ˆŒØˆŒØˆŒå�ŠÐ2Ñ3Ô3Ð3Ý�ŠÐ1 4¤<Ð1Ð1Ñ2Ô2Ð2Ý�ŠÐ*�t C™yœyÐ*Ð*Ñ+Ô+Ð+ð 	�
Š
�1‰Œˆˆˆr7   c                 ó.  — | j         €ˆ|                      ¦   «         }|                      t          | j        ¦  «        ¦  «         | j         €1|                      |                      ¦   «         dz   ¦  «         | j         ®1|                      |¦  «         | j         S )Nr   )r÷  r¥  rø  r\   rö  r«  )r‚   Úcurrents     r5   Ún_frameszTiffImageFile.n_framesM  s}   € àŒ>Ð!Ø—i’i‘k”kˆGØ�JŠJ•s˜4œ?Ñ+Ô+Ñ,Ô,Ð,Ø”.Ð(Ø—
’
˜4Ÿ9š9™;œ;¨™?Ñ+Ô+Ð+ð ”.Ð(à�IŠI�gÑÔÐØŒ~Ðr7   c                 óî   — |                       |¦  «        sdS |                      |¦  «         t          j        | j        ¦  «         t          j                             | j        | j        ¦  «        | _        dS )z%Select a given frame as current imageN)	Ú_seek_checkrø  r   Ú_decompression_bomb_checkrú   ÚcoreÚnewÚmodeÚim)r‚   Úframes     r5   r«  zTiffImageFile.seekW  sc   € à×Ò Ñ&Ô&ð 	ØˆFØ�
Š
�5ÑÔÐõ 	Ô'¨¬	Ñ2Ô2Ð2Ý”*—.’. ¤¨D¬IÑ6Ô6ˆŒˆˆr7   c                 óÂ  — | j         | _        | j                             ¦   «          t          | j        ¦  «        |k    �r‚| j        sd}t          |¦  «        ‚t                               d|› d| j	        › d| j        › d| j                             ¦   «         › �¦  «         | j         
                    | j        ¦  «         | j                             | j        ¦  «         t                               d| j                             ¦   «         z  ¦  «         | j                             | j        ¦  «         | j        j        | j        v rd| _        n| j        j        | _        | j        dk    r
|dz   | _        t          | j        ¦  «        dk    r| j        dk    | _        | xj	        dz  c_	        t          | j        ¦  «        |k    �°‚| j         
                    | j        |         ¦  «         | j                             | j        ¦  «         |                      ¦   «          t$                               | j        ¦  «        x| _        | _        || _	        |                      ¦   «          d S )	Nzno more images in TIFF filezSeeking to frame z, on frame z	, __next z, location: zLoading tags, location: %sr   r   )rõ  r˜  r¥  r\   rö  ró  ÚEOFErrorr©  rª  rô  r«  r»  rï  rµ  rÓ   r÷  Úis_animatedÚ_reload_exifrÑ  rÛ  r÷   r·  Ú_setup)r‚   r  rÖ   s      r5   rø  zTiffImageFile._seekb  s#  € Ø”(ˆŒð 	Œ�Š‰Œˆå�$”/Ñ"Ô" eÒ+Ñ+Ø”;ð $Ø3�Ý˜s‘m”mÐ#Ý�LŠLðD Eð Dð D°d´lð Dð DØœ+ðDð DØ37´7·<²<±>´>ðDð Dñô ð ð ŒG�LŠL˜œÑ%Ô%Ð%ØŒO×"Ò" 4¤;Ñ/Ô/Ð/Ý�LŠLÐ5¸¼¿º¹¼ÑFÑGÔGÐGØŒK×Ò˜TœWÑ%Ô%Ð%ØŒ{Ô 4¤?Ð2Ð2ð  �”�à"œkÔ.�”ØŒ{˜aÒÐØ!&¨¡�”Ý�4”?Ñ#Ô# qÒ(Ð(Ø#'¤;°!Ò#3�Ô ØˆLŒL˜AÑˆLŒLõ- �$”/Ñ"Ô" eÒ+Ñ+ð. 	Œ�Š�T”_ UÔ+Ñ,Ô,Ð,ØŒ×Ò˜œÑ!Ô!Ð!Ø×ÒÑÔÐå3×;Ò;¸D¼KÑHÔHÐHˆŒ�4”8ØˆŒØ�Š‰Œˆˆˆr7   c                 ó   — | j         S )zReturn the current frame number)rô  r†   s    r5   r¥  zTiffImageFile.tellˆ  s
   € àŒ|Ðr7   c                 ól   — t           | j        v r%|                      | j        t                    ¦  «        ni S )z™
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        )ÚXMPrï  Ú_getxmpr†   s    r5   ÚgetxmpzTiffImageFile.getxmpŒ  s.   € õ 25¸¼Ð1CÐ1Cˆt�|Š|˜DœK­Ô,Ñ-Ô-Ð-ÈÐKr7   c                 ó¬  — i }| j                              d¦  «        }|rµ|dd…         dk    r§t          |dd…         ¦  «        }t          j        |d         dz   dz  ¦  «        dz  }t          |d|z   d|z   …         ¦  «        }|d|z   d|z   |z   …         }d	|i||<   |t          j        d|z   |z   dz  ¦  «        dz  d…         }|dd…         dk    °§|S )
a5  
        Returns a dictionary of Photoshop "Image Resource Blocks".
        The keys are the image resource ID. For more information, see
        https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727

        :returns: Photoshop "Image Resource Blocks" in a dictionary.
        r   Nr   s   8BIMr!   r   r   r‹  rø   )rï  r§  Úi16ÚmathÚceilÚi32)r‚   Úblocksrl   ÚidÚnrú   rø   s          r5   Úget_photoshop_blocksz"TiffImageFile.get_photoshop_blocks•  sú   € ð ˆØŒk�oŠo˜fÑ%Ô%ˆØð 	@Ø�b�q�b”'˜WÒ$Ð$Ý˜˜Q˜q˜Sœ‘]”]�Ý”I˜s 1œv¨™z¨QÑ.Ñ/Ô/°!Ñ3�Ý˜3˜q 1™u r¨A¡v˜~Ô.Ñ/Ô/�Ø˜2 ™6 B¨¡F¨T¡MÐ1Ô2�Ø$ d˜^��r‘
à�$œ) R¨!¡V¨d¡]°aÑ$7Ñ8Ô8¸1Ñ<Ð>Ð>Ô?�ð �b�q�b”'˜WÒ$Ð$ð ˆr7   c                 óˆ   •— | j         r| j        r|                      ¦   «         S t          ¦   «                              ¦   «         S rr   )ÚtileÚuse_load_libtiffÚ_load_libtiffrÓ  rµ  )r‚   rÕ  s    €r5   rµ  zTiffImageFile.loadª  s;   ø€ ØŒ9ð 	(˜Ô.ð 	(Ø×%Ò%Ñ'Ô'Ð'Ý‰wŒw�|Š|‰~Œ~Ðr7   c                 ó~  — | j         r½t          j        j        t          j        j        t          j        j        t          j        j        t          j        j        t          j        j        t          j        j	        dœ 
                    | j         ¦  «        }|�0| j                             |¦  «        | _        | j        j        | _        | j        sod| _        | j                             ¦   «          |                      ¦   «         }t(          j                             ¦   «         D ]}||vrŒ|                     |¦  «         Œd S d S )N)r   r   r   r   r!   r#   r%   T)Ú_tile_orientationr   Ú	TransposeÚFLIP_LEFT_RIGHTÚ
ROTATE_180ÚFLIP_TOP_BOTTOMÚ	TRANSPOSEÚ
ROTATE_270Ú
TRANSVERSEÚ	ROTATE_90r§  r  Ú	transposerú   Ú_sizer  Ú!_close_exclusive_fp_after_loadingr˜  r¥  Úgetexifr   ÚTAGS_V2_GROUPSÚkeysÚget_ifd)r‚   ÚmethodÚexifÚkeys       r5   Úload_endzTiffImageFile.load_end¯  s  € ØÔ!ð 	*å”?Ô2Ý”?Ô-Ý”?Ô2Ý”?Ô,Ý”?Ô-Ý”?Ô-Ý”?Ô,ðð ÷ Šc�$Ô(Ñ)Ô)ð ð Ð!Øœ'×+Ò+¨FÑ3Ô3�”Ø!œWœ\�”
ð Ôð 	"Ø59ˆDÔ2ð ŒG�LŠL‰NŒNˆNð —<’<‘>”>ˆDÝÔ.×3Ò3Ñ5Ô5ð "ð "�Ø˜d�?�?ØØ—’˜SÑ!Ô!Ð!Ð!ð	"ð 	"ð"ð "r7   c                 ó”  — t           j                              | ¦  «         |                      ¦   «          t          | j        ¦  «        dk    sd}t          |¦  «        ‚| j        d         d         }t          | j        d         d         ¦  «        }	 t          | j        d¦  «        o*t          j
        | j                             ¦   «         ¦  «        }t          | j        d¦  «        r| j                             ¦   «          n# t
          $ r d}Y nw xY w|r||d<   t          j        | j        d	t          |¦  «        | j        ¦  «        }	 |                     | j        |¦  «         n$# t&          $ r}d
}t          |¦  «        |‚d}~ww xY w| j        o| j         }t          | j        d¦  «        rJt,                               d¦  «         |                     | j                             ¦   «         ¦  «        \  }}	n´|rOt,                               d¦  «         |s| j                             d¦  «         |                     d¦  «        \  }}	nct,                               d¦  «         | j                             d¦  «         |                     | j                             ¦   «         ¦  «        \  }}	|r&	 t          j        |¦  «         n# t
          $ r Y nw xY wg | _        d| _        |                      ¦   «          |r | j                             ¦   «          d| _        |	dk     rt          |	¦  «        ‚t           j                              | ¦  «        S )zWOverload method triggered when we detect a compressed tiff
        Calls out to libtiffr   zNot exactly one tiler   r   ÚfilenoÚflushFr   ÚlibtiffzCouldn't set the imageNÚgetvaluez5have getvalue. just sending in a string from getvaluez3have fileno, calling fileno version of the decoder.s   fpfpz+don't have fileno or getvalue. just reading)r   rµ  Úload_preparer\   r  r—  rÉ  Úhasattrr˜  ÚosÚdupr2  r3  Ú_getdecoderr  rõ   ÚdecoderconfigÚsetimager  r)  Ú_exclusive_fpr  r©  rª  rj  r5  r«  r–  ÚcloseÚreadonlyr0  )
r‚   rÖ   Úextentsrœ   r˜  ÚdecoderÚeÚclose_self_fpr  Úerrs
             r5   r  zTiffImageFile._load_libtiffÎ  s  € õ 	Œ×Ò˜ÑÔÐà×ÒÑÔÐå�4”9‰~Œ~ Ò"Ð"Ø(ˆCÝ˜#‘,”,Ðð ”)˜A”,˜q”/ˆÝ�D”I˜a”L ”OÑ$Ô$ˆð
	Ý˜œ (Ñ+Ô+ÐHµ´°t´w·~²~Ñ7GÔ7GÑ0HÔ0HˆBõ �t”w Ñ(Ô(ð  Ø”—’‘”�øøÝð 	ð 	ð 	ð ˆBˆBˆBð	øøøð
 ð 	ØˆD�‰GåÔ#ØŒI�y¥%¨¡+¤+¨tÔ/Añ
ô 
ˆð	&Ø×Ò˜TœW gÑ.Ô.Ð.Ð.øÝð 	&ð 	&ð 	&Ø*ˆCÝ˜#‘,”, AÐ%øøøøð	&øøøð Ô*ÐC°4Ô3CÐ/CˆÝ�4”7˜JÑ'Ô'ð 	4õ �LŠLÐPÑQÔQÐQØ—^’^ D¤G×$4Ò$4Ñ$6Ô$6Ñ7Ô7‰FˆAˆsˆsØð 	4å�LŠLÐNÑOÔOÐOØ ð  Ø”—’˜Q‘”�à—^’^ GÑ,Ô,‰FˆAˆsˆsõ �LŠLÐFÑGÔGÐGØŒG�LŠL˜‰OŒOˆOà—^’^ D¤G§L¢L¡N¤NÑ3Ô3‰FˆAˆsàð 	ðÝ”˜‘”��øÝð ð ð Ø�ðøøøð ˆŒ	ØˆŒà�Š‰Œˆð ð 	ØŒG�MŠM‰OŒOˆOØˆDŒGà�Š7ˆ7Ý˜#‘,”,ÐåŒ{×Ò Ñ%Ô%Ð%s=   ÂA.D  Ä DÄDÅE$ Å$
FÅ.F Æ FÊ-K Ë
KËKc                 óø  — d| j         v rd}t          |¦  «        ‚t          | j                              t          d¦  «                 | _        | j                              t          d¦  «        | _        | j                              t          d¦  «        }| j        dk    rd}| j                              t          d¦  «        }t                               d¦  «         t                               d| j        › �¦  «         t                               d	|› �¦  «         t                               d
| j        › �¦  «         t                               d|› �¦  «         t                               d| j                             t          ¦  «        › �¦  «         t          | j                              t          ¦  «        ¦  «        }t          | j                              t           ¦  «        ¦  «        }||f| _        t                               d| j        › �¦  «         | j                              t&          d¦  «        }t)          |¦  «        dk    r,t+          |¦  «        t-          |¦  «        cxk    rdk    rn nd}| j                              t.          d¦  «        }| j                              t0          d¦  «        }|dv rd}	n|dk    rd}	nd}	|	t)          |¦  «        z  }	t)          |¦  «        }
| j                              t2          | j        dk    r|dv rdnd¦  «        }|t4          k    r,t                               d|¦  «         d}t9          |¦  «        ‚||
k     r|d|…         }n||
k    r|
dk    r||z  }t)          |¦  «        |k    rd}t9          |¦  «        ‚| j         j        |||||f}t                               d|› �¦  «         	 t<          |         \  | _        }n># t@          $ r1}t                               d¦  «         d}t9          |¦  «        |‚d}~ww xY wt                               d|› �¦  «         t                               d| j        › �¦  «         | j        | j!        d<   | j                              tD          d¦  «        }| j                              tF          d¦  «        }|rt|rr| j                              tH          ¦  «        }|dk    r||f| j!        d <   n@|dk    r|d!z  |d!z  f| j!        d <   n'|€||f| j!        d <   ||f| j!        d"<   n||f| j!        d"<   dx}x}}g | _%        tL          p
| j        d#k    | _'        | j'        rã|dk    rJ|dd…         dz   |dd…         z   }t                               d|› �¦  «         t<          |         \  | _        }|d$k    rd%}d&|v r| (                    d&d'¦  «        }d(|v r| (                    d(d'¦  «        }|dk    r| j        d)k    r| j        dk    rd*}|| j        d+| j         j)        f}| j%         *                    d,dd||fd|f¦  «         �n¹tV          | j         v stX          | j         v �rqtV          | j         v r@| j         tV                   }| j                              tZ          |¦  «        }| j        d         }nP| j         tX                   }| j                              t\          ¦  «        }| j                              t^          ¦  «        }|D ]Ï}||z   |k    r|ta          |¦  «        z  d-z  }nd}|}| j        dk    r||         }||	z  }|t          |¦  «        df}| j%         *                    | j        ||t-          ||z   |¦  «        t-          ||z   |¦  «        f||f¦  «         ||z   }|| j        d         k    r!d||z   }}|| j        d         k    r	dx}}|dz  }ŒÐn+t                               d.¦  «         d}t9          |¦  «        ‚tb          | j         v r| j         tb                   | j!        d/<   | j        d0v rId1„ | j         td                   D ¦   «         }tg          j4        d2d3 5                    |¦  «        ¦  «        | _6        | j                              d4¦  «        | _7        dS )5z-Setup this image object based on current tagsi¼  z+Windows Media Photo files not yet supportedr   r   r"   r!   z*** Summary ***z- compression: z- photometric_interpretation: z- planar_configuration: z- fill_order: z- YCbCr subsampling: z- size: r8   r1   )r   r!   r%   r   r   r   )r   r!   z.More samples per pixel than can be decoded: %sz#Invalid value for samples per pixelNzunknown data organizationzformat key: z- unsupported formatzunknown pixel modez- raw mode: z- pil mode: Úcompressionr   ÚdpigR¸…ëQ@Ú
resolutionr   r<   úI;16Nz;16Bz;16Nz;16Lr$   rI   Fr4  r%   z- unsupported data organizationÚicc_profile©rU   rV   c                 ó2   — g | ]}t          |d z  ¦  «        ‘ŒS ©r   r   )r2   rZ  s     r5   r  z(TiffImageFile._setup.<locals>.<listcomp>  s"   € ÐCÐCÐC¨•r˜!˜s™(‘|”|ÐCÐCÐCr7   úRGB;Lr7   i  )8rï  r—  ÚCOMPRESSION_INFOr§  ÚCOMPRESSIONÚ_compressionÚPLANAR_CONFIGURATIONÚ_planar_configurationÚPHOTOMETRIC_INTERPRETATIONÚ	FILLORDERr©  rª  r÷   ÚYCBCRSUBSAMPLINGr
  Ú
IMAGEWIDTHÚIMAGELENGTHr'  rú   ÚSAMPLEFORMATr\   rv   ru   ÚBITSPERSAMPLEÚEXTRASAMPLESÚSAMPLESPERPIXELÚMAX_SAMPLESPERPIXELÚerrorrÉ   re   Ú	OPEN_INFOr  r¨  r  ÚX_RESOLUTIONÚY_RESOLUTIONÚRESOLUTION_UNITr  ÚREAD_LIBTIFFr  r  r´  r»  r¹  ÚTILEOFFSETSÚROWSPERSTRIPÚ	TILEWIDTHÚ
TILELENGTHÚsumÚ
ICCPROFILEÚCOLORMAPr   r   rR  Úpaletter  )r‚   rÖ   ÚphotoÚ	fillorderÚxsizeÚysizeÚsample_formatÚ	bps_tupleÚextra_tupleÚ	bps_countÚbps_actual_countÚsamples_per_pixelr/  ÚrawmoderB  ÚxresÚyresÚresunitÚxÚyÚlayerrs  Úoffsetsr[  Úwr´  ÚstrideÚtile_rawmoderk  s                                r5   r	  zTiffImageFile._setup+  sœ  € ð �T”[Ð Ð Ø?ˆCÝ˜#‘,”,Ðõ -¨T¬[¯_ª_½[È!Ñ-LÔ-LÔMˆÔØ%)¤[§_¢_Õ5IÈ1Ñ%MÔ%MˆÔ"ð ”—’Õ :¸AÑ>Ô>ˆð Ô Ò+Ð+ØˆEà”K—O’O¥I¨qÑ1Ô1ˆ	å�ŠÐ&Ñ'Ô'Ð'Ý�ŠÐ: tÔ'8Ð:Ð:Ñ;Ô;Ð;Ý�ŠÐ=°eÐ=Ð=Ñ>Ô>Ð>Ý�ŠÐL°Ô0JÐLÐLÑMÔMÐMÝ�ŠÐ1 iÐ1Ð1Ñ2Ô2Ð2Ý�ŠÐM¨T¬X¯\ª\Õ:JÑ-KÔ-KÐMÐMÑNÔNÐNõ �D”K—O’O¥JÑ/Ô/Ñ0Ô0ˆÝ�D”K—O’O¥KÑ0Ô0Ñ1Ô1ˆØ˜E�\ˆŒ
å�ŠÐ+ ¤	Ð+Ð+Ñ,Ô,Ð,àœŸš­°dÑ;Ô;ˆÝˆ}ÑÔ Ò!Ð!¥c¨-Ñ&8Ô&8½CÀÑ<NÔ<NÐ&SÐ&SÒ&SÐ&SÐRSÒ&SÐ&SÐ&SÐ&SÐ&Sð !ˆMà”K—O’O¥M°4Ñ8Ô8ˆ	Ø”k—o’o¥l°BÑ7Ô7ˆØ�IÐÐØˆIˆIØ�aŠZˆZØˆIˆIàˆIØ•S˜Ñ%Ô%Ñ%ˆ	Ý˜y™>œ>ÐØ œKŸOšOÝØÔ" kÒ1Ð1°e¸v°o°oˆAˆAÈ1ñ
ô 
Ðð
 Õ2Ò2Ð2å�LŠLØ@ÐBSñô ð ð 8ˆCÝ˜cÑ"Ô"Ð"àÐ/Ò/Ð/ð "Ð"4Ð#4Ð"4Ô5ˆIˆIØÐ!1Ò1Ð1Ð6FÈ!Ò6KÐ6Kð "Ð$5Ñ5ˆIåˆy‰>Œ>Ð.Ò.Ð.Ø-ˆCÝ˜cÑ"Ô"Ð"ð ŒKÔØØØØØð
ˆõ 	�ŠÐ) CÐ)Ð)Ñ*Ô*Ð*ð	*Ý!*¨3¤ÑˆDŒI�w�wøÝð 	*ð 	*ð 	*Ý�LŠLÐ/Ñ0Ô0Ð0Ø&ˆCÝ˜cÑ"Ô"¨Ð)øøøøð	*øøøõ
 	�ŠÐ- GÐ-Ð-Ñ.Ô.Ð.Ý�ŠÐ/ D¤IÐ/Ð/Ñ0Ô0Ð0à#'Ô#4ˆŒ	�-Ñ àŒ{�Š�|¨QÑ/Ô/ˆØŒ{�Š�|¨QÑ/Ô/ˆàð 	5�Dð 	5Ø”k—o’o¥oÑ6Ô6ˆGØ˜!Š|ˆ|Ø$(¨$ <�”	˜%Ñ Ð Ø˜A’�Ø$(¨4¡K°¸±Ð#=�”	˜%Ñ Ð Ø�Ø$(¨$ <�”	˜%Ñ ð +/°¨*�”	˜,Ñ'Ð'à*.°¨*�”	˜,Ñ'ð ÐˆÐˆA�ØˆŒ	Ý ,Ð J°Ô0AÀUÒ0JˆÔØÔ ð Y	#ð ˜AŠ~ˆ~à˜"˜1˜"”g ‘n s¨1¨2¨2¤wÑ.�Ý—’Ð1¨CÐ1Ð1Ñ2Ô2Ð2õ &/¨s¤^Ñ"�”	˜7ð
 ˜&Ò Ð Ø!�Ø˜Ð Ð Ø!Ÿ/š/¨&°&Ñ9Ô9�Ø˜Ð Ð Ø!Ÿ/š/¨&°&Ñ9Ô9�ð
 ˜’
�
ØÔ%¨Ò/Ð/ØÔ.°!Ò3Ð3à�ð ˜$Ô+¨U°D´KÔ4FÐGˆAØŒI×Ò˜i¨!¨Q°°uÐ)=¸qÀ!ÐDÑEÔEÐEÑEå˜Tœ[Ð(Ð(­K¸4¼;Ð,FÑ,Få˜tœ{Ð*Ð*Øœ+¥lÔ3�Ø”K—O’O¥L°%Ñ8Ô8�Ø”I˜a”L��ð œ+¥kÔ2�Ø”K—O’O¥IÑ.Ô.�Ø”K—O’O¥JÑ/Ô/�à!ð #ð #�Ø�q‘5˜5’=�=Ø¥ Y¡¤Ñ/°!Ñ3�F�Fà�Fà&�ØÔ-°Ò2Ð2à#*¨5¤>�Là˜iÑ'�Fà!¥3 v¡;¤;°Ð2�Ø”	× Ò àÔ)Ø˜A�s 1 q¡5¨%Ñ0Ô0µ#°a¸!±e¸UÑ2CÔ2CÐDØØð	ñô ð ð ˜‘E�Ø˜œ	 !œÒ$Ð$Ø˜a !™e�q�AØ˜DœI aœLÒ(Ð(Ø !˜	˜˜AØ ™
˜øð7#õ: �LŠLÐ:Ñ;Ô;Ð;Ø-ˆCÝ˜cÑ"Ô"Ð"õ ˜œÐ$Ð$Ø'+¤{µ:Ô'>ˆDŒI�mÑ$ð Œ9˜Ð#Ð#ØCÐC¨T¬[½Ô-BÐCÑCÔCˆGÝ'Ô+¨G°S·X²X¸gÑ5FÔ5FÑGÔGˆDŒLà!%¤§¢°Ñ!8Ô!8ˆÔÐÐs   ÏO Ï
PÏ",PÐP)NN)rº   r»   r¼   ÚformatÚformat_descriptionr(  r„   rù  r¿   rü  r«  rø  r¥  r  r  rµ  r0  r  r	  ré  rê  s   @r5   rì  rì  #  s  ø€ € € € € à€FØ%ÐØ(-Ð%ð'ð 'ð 'ð 'ð 'ð 'ðð ð ð6 ðð ñ „Xðð	7ð 	7ð 	7ð$ð $ð $ðLð ð ðLð Lð Lðð ð ð*ð ð ð ð ð
"ð "ð "ð>[&ð [&ð [&ðz`9ð `9ð `9ð `9ð `9ð `9ð `9r7   rì  r9   r:   rH   rU   rV   r?   rF   r<   r@   rC   rD   rI   rL   rJ   rW   ÚYCbCrrZ   rG   r>   rA   rE   )rA   rE   c                 óì  — 	 t           | j                 \  }}}}}}n-# t          $ r }	d| j        › d�}
t          |
¦  «        |	‚d }	~	ww xY wt	          |¬¦  «        }| j        }| j        }	 |d         }nA# t          $ r4 | j                             d¦  «        }t          |t          ¦  «        rd }Y nw xY w|€d}n|dk    rd}n|dk    rd	}t          p|dk    }d
|t          <   | j        d         |t          <   | j        d
         |t          <   d|v r	|d         }nNd|v rH|d         }t          |t           ¦  «        r*t#          j        ¦   «         }|                     |¦  «         |}ni }t(                               dt-          |¦  «        z  ¦  «         t          |t.          ¦  «        r|                     ¦   «         }|D ]“}t          |t"          j        ¦  «        r9|t2          j                             ¦   «         v r|                     |¦  «        ||<   n|                     |¦  «        ||<   	 |j        |         |j        |<   Œ„# t<          $ r Y Œ�w xY wt?          | d¦  «        r\t@          tB          tD          tF          tH          tJ          fD ]5}|| j&        v r*| j&        |         ||<   | j&        j        |         |j        |<   Œ6|                     d| j                             d¦  «        ¦  «        }|r
||tN          <   tP          dftB          dftD          dftB          dftD          dft@          dftR          dftT          dftV          dftX          dff
D ]\  }}||v r||         ||<   Œ|                     d¦  «        }|r*d|t@          <   |d         |tB          <   |d
         |tD          <   |dk    r4||tZ          <   t]          |¦  «        d
k    rt]          |¦  «        |t^          <   |�
||t`          <   |d
k    r
||tb          <   td          |vr||td          <   n©| j        dv r |td                   dk    r�| j        dk    rp|  3                    ¦   «         }|                     ¦   «         }ti          |j5        ¦  «        D ]0}ti          |j6        ¦  «        D ]}|||f         dk    rdnd|||f<   ŒŒ1|} nto          j8        | ¦  «        } | j        d v rw| j9         :                    d!d"¦  «        }g }t]          |¦  «        d#z  }ti          d#¦  «        D ].}|d$„ |||z  ||d
z   z  …         D ¦   «         z  }|dgd%|z
  z  z  }Œ/||tv          <   t]          |¦  «        | j        d         |d         z  d&z   d'z  z  }|rl|                     d(tx          ¦  «        }|dk    rd
nt{          ||z  | j        d
         ¦  «        } |dk    r$t{          | d&z   d'z  d'z  | j        d
         ¦  «        } n| j        d
         } | dk    rd
} |dk    rd
n|| z  }!| j        d
         | z   d
z
  | z  }"| |t|          <   |!d)k    rt2          j?        |j        t€          <   |!f|"d
z
  z  || j        d
         z  |!|"d
z
  z  z
  fz   |t€          <   tƒ          ti          d|!|"z  |!¦  «        ¦  «        |t„          <   t†                               |d
¦  «        |tˆ          <   | j        d*k    r>tŠ          d+tŒ          d,i G                    ¦   «         D ]\  }#}$| H                    |#|$¦  «         Œt’          t”          t–          t˜          g}%|�rd-|v r[|d-         }&t          |&t          ¦  «        r|&dk     s|&d.k    rd/}
t›          |
¦  «        ‚|dk    rd0}
t›          |
¦  «        ‚|&|tœ          <   t(                               d1¦  «         t(                               d2tŸ          | G                    ¦   «         ¦  «        z  ¦  «         d}'t?          |d3¦  «        rR	 | P                    d¦  «         t£          jR        | S                    ¦   «         ¦  «        }'n# t¨          jU        $ r Y nw xY wi }(|%tŒ          t€          t„          t¬          t®          gz  }%tZ          |d         i})i }*t?          | d4¦  «        r| jX                             ¦   «         }*i t³          | di ¦  «        ¥|*¥}+tb          |+v r|+tb          = tµ          j[        | G                    ¦   «         |+ G                    ¦   «         ¦  «        D ]ï\  }#}$|#t2          j\        vrut"          j]        j^        sŒ%|#|j        v r|j        |#         |(|#<   nIt          |$t          t¾          tÀ          t           f¦  «        sŒht3          ja        |#¦  «        jb        },|,r|,|(|#<   |#|)vrc|#|%vr_t          |$tÀ          ¦  «        r|$ c                    d5d6¦  «        d7z   |)|#<   ŒÂt          |$tÈ          ¦  «        rt¿          |$¦  «        |)|#<   Œê|$|)|#<   Œðtb          |)v r9t]          |)tb                   ¦  «        d
k    r|)tb                   d         |)tb          <   t(                               d8tŸ          |) G                    ¦   «         ¦  «        z  ¦  «         | j        d9v rd:}t-          |) G                    ¦   «         ¦  «        }-|- e                    ¦   «          |||'||-|(f}.t#          jf        | j        d;|.|¦  «        }	|	 g                    | j9        d<| j        z   ¦  «         	 |	 c                    d>¦  «        \  }/}0}1|'s| h                    |1¦  «         |0rnŒ4|0dk     rd?|0› d@�}
t          |
¦  «        ‚nC|%D ]}#||#= Œ| i                    |¦  «        }2tÕ          jk        | |dd<| j        z   |2||d
ffg¦  «         dA|v r	|| _l        d S d S )BNzcannot write mode z as TIFFrd   rF  r   r"   r$   r*   r&   r   r   Útiffinfor.  zTiffinfo Keys: %srï  rJ  ÚdescriptionrH  Úx_resolutionÚy_resolutionÚresolution_unitÚsoftwareÚ	date_timeÚartistÚ	copyrightrG  r   r8   )r9   r:   r9   éÿ   rK  rI   rN  r   c                 ó   — g | ]}|d z  ‘ŒS rM  r1   r  s     r5   r  z_save.<locals>.<listcomp>¯  s   € ÐMÐMÐM Q˜˜S™ÐMÐMÐMr7   r   r#   r%   Ú
strip_sizer   rƒ  )r   r   )r   rŽ  é€   rŽ  r‘  rŽ  Úqualityéd   zInvalid quality settingz5quality setting only supported for 'jpeg' compressionzSaving using libtiff encoderz	Items: %sr2  r÷   r  r  rh  zConverted items: %s)r>   r<   rI  r4  rM   Ti @  zencoder error z when writing image fileÚ_debug_multipage)mÚ	SAVE_INFOr  r¨  r—  rÁ   ÚencoderinfoÚencoderconfigr  r§  r€   r
  ÚWRITE_LIBTIFFrR  rú   rW  rX  rö   r   ÚExifrµ  r©  rª  rÉ  rÑ  rÝ  r   r*  r+  r,  rÐ   rÞ   r7  rb  r`  ra  ÚIPTC_NAA_CHUNKÚPHOTOSHOP_CHUNKr  rï  ri  ÚIMAGEDESCRIPTIONÚSOFTWAREÚ	DATE_TIMEÚARTISTÚ	COPYRIGHTrZ  r\   r\  r[  rY  rT  Úcopyr¦  ÚheightÚwidthr
   Úinvertr  Ú
getpaletterj  Ú
STRIP_SIZEru   re  r#  ÚSTRIPBYTECOUNTSrõ   r¹  ÚCOMPRESSION_INFO_REVrP  rV  ÚREFERENCEBLACKWHITErí   Ú
setdefaultrf  rg  rd  ÚTILEBYTECOUNTSr)  ÚJPEGQUALITYr¸  r«  r8  r9  r2  ÚioÚUnsupportedOperationÚTRANSFERFUNCTIONÚSUBIFDr÷   r›   Ú	itertoolsÚchainÚLIBTIFF_COREr   Úlibtiff_support_custom_tagsr�   r�   rê   r  r  rj   ÚsortÚ_getencoderr<  rÆ  rÇ  r	   Ú_saver”  )3r  r˜  rð  rv  re   rl  r�  ÚbitsÚextrarB  rÖ   r·  r–  r—  rF  r4  r  r.  r/  Úiccrë   rG  Úinverted_imÚpxr{  rz  ÚlutÚcolormapÚcolorsr®  r  Úim_strip_sizeÚrows_per_stripÚstrip_byte_countsÚstrips_per_imager÷   rƒ   Ú	blocklistr’  rõ  ÚtypesÚattsÚ
legacy_ifdÚsupplied_tagsr  rå  rs  r\  Úsr]  r´  s3                                                      r5   r·  r·  .  s@  € ð"Ý6?ÀÄÔ6HÑ3ˆ�˜ ¨¨e¨eøÝð "ð "ð "Ø4 2¤7Ð4Ð4Ð4ˆÝ�c‰lŒl Ð!øøøøð"øøøõ   vÐ
.Ñ
.Ô
.€Cà”.€KØÔ$€MðØ! -Ô0ˆˆøÝð ð ð Ø”g—k’k -Ñ0Ô0ˆÝ�k¥3Ñ'Ô'ð 	àˆKøøð	øøøð
 ÐØˆˆØ	˜Ò	#Ð	#àˆˆØ	˜Ò	&Ð	&Ø*ˆåÐ3˜{¨eÒ3€Gð !"€CÕÑà”g˜a”j€C�
�OØ”w˜q”z€C�Ñð �[Ð Ð Ø˜:Ô&ˆˆØ	�;Ð	Ð	Ø˜6Ô"ˆÝ�d�EÑ"Ô"ð 	Ý”:‘<”<ˆDØ�IŠI�d‰OŒOˆOØˆDøàˆÝ
‡L‚LÐ$¥t¨D¡z¤zÑ1Ñ2Ô2Ð2Ý�$Õ-Ñ.Ô.ð Ø�zŠz‰|Œ|ˆØð ð ˆÝ�d�EœJÑ'Ô'ð 	%¨Cµ8Ô3J×3OÒ3OÑ3QÔ3QÐ,QÐ,QØ—|’| CÑ(Ô(ˆC�‰HˆHà—x’x ‘}”}ˆC�‰Hð	Ø#œ|¨CÔ0ˆCŒK˜ÑÐøÝð 	ð 	ð 	ØˆDð	øøøõ
 ˆr�8ÑÔð :õ ÝÝÝÝÝð
ð 
	:ð 
	:ˆCð �b”iÐÐØœ9 Sœ>��C‘Ø#%¤9Ô#4°SÔ#9�”˜CÑ øð �/Š/˜-¨¬¯ª°]Ñ)CÔ)CÑ
DÔ
D€CØ
ð Øˆ�J‰õ 
˜=Ð)Ý	�|Ð$Ý	�|Ð$Ý	�~Ð&Ý	�~Ð&Ý	Ð+Ð,Ý	�:ÐÝ	�KÐ Ý	�ÐÝ	�KÐ ðð )ð )‰	ˆˆTð �;ÐÐØ" 4Ô(ˆC�‰Høà
�/Š/˜%Ñ
 Ô
 €CØ
ð #Ø ˆ�OÑØ œFˆ�LÑØ œFˆ�LÑàˆt‚|€|Ø!ˆ�MÑÝˆt‰9Œ9˜Š>ˆ>Ý#& t¡9¤9ˆC•Ñ ØÐØ!ˆ�LÑØ�‚{€{Ø"ˆ�LÑå!¨Ð,Ð,Ø*/ˆÕ&Ñ'Ð'Ø	Œ�JÐ	Ð	 3Õ'AÔ#BÀaÒ#GÐ#GØŒ7�cŠ>ˆ>ØŸ'š'™)œ)ˆKØ×!Ò!Ñ#Ô#ˆBÝ˜;Ô-Ñ.Ô.ð =ð =�Ý˜{Ô0Ñ1Ô1ð =ð =�AØ$& q¨! t¤H°¢O O˜q˜q¸�B�q˜!�t‘H�Hð=àˆBˆBå” Ñ$Ô$ˆBà	„w�+ÐÐØŒe×Ò˜u gÑ.Ô.ˆØˆÝ�S‘”˜Q‘ˆÝ�q‘”ð 	-ð 	-ˆAØÐMÐM¨#¨f°q©j¸6ÀQÈÁUÑ;KÐ.KÔ*LÐMÑMÔMÑMˆHØ˜˜˜s V™|Ñ,Ñ,ˆHˆHØ ˆ�H‰å�‰YŒY˜2œ7 1œ:¨¨Q¬Ñ/°!Ñ3¸Ñ9Ñ:€Fàð $Ø#Ÿš¨µjÑAÔAˆØ$¨šk˜k˜˜­s°=ÀFÑ3JÈBÌGÐTUÌJÑ/WÔ/Wˆà˜&Ò Ð Ý  >°AÑ#5¸!Ñ";¸qÑ!@À"Ä'È!Ä*ÑMÔMˆNøàœ œˆØ˜ÒÐØˆØ# qš[˜[˜˜¨f°~Ñ.EÐØœ œ
 ^Ñ3°aÑ7¸NÑJÐØ&€C�ÑØ˜EÒ!Ð!Ý'/¤}ˆŒ•OÑ$Ø-Ð/Ð3CÀaÑ3GÑHØ�”˜”ÑÐ/Ð3CÀaÑ3GÑHÑHðLñ €C�Ñõ ÝˆaÐ"Ð%5Ñ5Ð7HÑIÔIñô €C�Ñõ ,×/Ò/°¸QÑ?Ô?€C�Ñà	„w�'ÒÐå˜fÝÐ!=ð
÷ Š%‰'Œ'ð	'ð 	'‰JˆC�ð �NŠN˜3 Ñ&Ô&Ð&Ð&å�J­µ^ÐD€IØñ s
Ø˜Ð#Ð#Ø! )Ô,ˆGÝ˜g¥sÑ+Ô+ð &¨w¸ª{¨{¸gÈºm¸mØ/�Ý  ‘o”oÐ%Ø˜fÒ$Ð$ØM�Ý  ‘o”oÐ%Ø&ˆC•Ñå�ŠÐ3Ñ4Ô4Ð4Ý�Š�[¥6¨#¯)ª)©+¬+Ñ#6Ô#6Ñ6Ñ7Ô7Ð7ØˆÝ�2�xÑ Ô ð 	ðØ—’˜‘
”
�
Ý”f˜RŸYšY™[œ[Ñ)Ô)��øÝÔ*ð ð ð Ø�ðøøøð ˆð 	ÝÝÝÝÝð
ñ 	
ˆ	õ ˜t AœwÐ'ˆð ˆ
Ý�2�uÑÔð 	(ØœŸš™œˆJð D�7 2 x°Ñ4Ô4ÐC¸
ÐCˆÝ˜=Ð(Ð(Ø�lÐ+å#œ/¨#¯)ª)©+¬+°}×7JÒ7JÑ7LÔ7LÑMÔMð 	&ð 	&‰JˆC�ð
 �(Ô/Ð/Ð/Ý”zÔ=ð Øà˜#œ+Ð%Ð%Ø!$¤¨SÔ!1�E˜#‘J�JÝ$ U­Sµ%½½eÐ,DÑEÔEð *Øå#œ?¨3Ñ/Ô/Ô4�DØð *Ø%)˜˜c™
Ø˜$ˆˆ 3¨iÐ#7Ð#7Ý˜e¥SÑ)Ô)ð &Ø %§¢¨W°iÑ @Ô @À5Ñ H�D˜‘I�IÝ ¥{Ñ3Ô3ð &Ý % e¡¤�D˜‘I�Ià %�D˜‘Iøå˜4ÐÐ¥C¨­\Ô(:Ñ$;Ô$;¸qÒ$@Ð$@Ø!%¥lÔ!3°AÔ!6ˆD•Ñå�ŠÐ*­V°D·J²J±L´LÑ-AÔ-AÑAÑBÔBÐBð Œ7Ð'Ð'Ð'ØˆGõ
 �D—J’J‘L”LÑ!Ô!ˆØ�	Š	‰ŒˆØ�k 3¨°$¸Ð>ˆÝÔ˜bœg y°!°]ÑCÔCˆØ	�
Š
�2”5˜& 2¤7Ñ*Ñ+Ô+Ð+ð	à—h’h˜yÑ)Ô)‰GˆAˆq�!Øð Ø—’˜‘”�Øð Øð	ð ˆqŠ5ˆ5Ø> 1Ð>Ð>Ð>ˆCÝ˜#‘,”,Ðð ð
 ð 	ð 	ˆCØ�C��Ø—’˜"‘”ˆåŒØ��e˜V b¤gÑ-¨v¸ÀÈÐ7KÐLÐMñ	
ô 	
ð 	
ð
 ˜[Ð(Ð(à!ˆÔÐÐð )Ð(sJ   ‚ œ
A¦AÁAÁ(A1 Á1;B/Â.B/È'H=È=
I
É	I
ß;` à`à`c                   ó´   — e Zd Zg d¢Zh d£Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zej        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d„ZdS )ÚAppendingTiffWriter)r   r   r   r   r   r%   r   r   r   r   r%   r   r%   >   é  é  é	  é   r   r   Fc                 óD  — t          |d¦  «        r|| _        d| _        nN|| _        d| _        	 t	          ||rdnd¦  «        | _        n%# t
          $ r t	          |d¦  «        | _        Y nw xY w| j                             ¦   «         | _        |                      ¦   «          d S )Nr–  FTzw+bzr+b)	r7  r‹   Úclose_fprë   Úopenr—  r¥  Ú	beginningÚsetup)r‚   Úfnr  s      r5   r„   zAppendingTiffWriter.__init__i  s£   € Ý�2�vÑÔð 		)ØˆDŒFØ!ˆDŒMˆMàˆDŒIØ ˆDŒMð)Ý˜b¨3Ð"9 % %°EÑ:Ô:�”�øÝð )ð )ð )Ý˜b %™œ�”��ð)øøøàœŸš™œˆŒØ�
Š
‰Œˆˆˆs   ¯A	 Á	A+Á*A+c                 ó¾  — | j                              | j        t          j        ¦  «         d | _        d| _        | j                              d¦  «        x| _        }|s	d| _	        d S d| _	        |dk    r|  
                    d¦  «         n-|dk    r|  
                    d¦  «         nd	}t          |¦  «        ‚|                      ¦   «          |                      ¦   «          d S )
Nr   r   TFr`   rÅ   r_   rÄ   zInvalid TIFF file header)r‹   r«  rÓ  r8  ÚSEEK_SETÚwhereToWriteNewIFDOffsetÚoffsetOfNewPager–  ÚIIMMÚisFirstÚ	setEndianÚRuntimeErrorÚskipIFDsÚgoToEnd)r‚   ÚiimmrÖ   s      r5   rÔ  zAppendingTiffWriter.setupw  sÐ   € àŒ�Š�D”N¥B¤KÑ0Ô0Ð0à(,ˆÔ%Ø ˆÔàœ6Ÿ;š; q™>œ>Ð)ˆŒ	�DØð 	àˆDŒLØˆFàˆŒØ�=Ò Ð Ø�NŠN˜3ÑÔÐÐØ�]Ò"Ð"Ø�NŠN˜3ÑÔÐÐà,ˆCÝ˜sÑ#Ô#Ð#à�Š‰ŒˆØ�Š‰Œˆˆˆr7   c                 óÊ  — | j         rd S | j                             | j        ¦  «         | j                             d¦  «        }|sd S || j        k    rd}t          |¦  «        ‚|                      ¦   «         }|| j        z  }| j                             | j        ¦  «         |  	                    |¦  «         | j                             |¦  «         |  
                    ¦   «          d S )Nr   z1IIMM of new page doesn't match IIMM of first page)rÛ  r‹   r«  rÙ  r–  rÚ  rÝ  ÚreadLongrØ  Ú	writeLongÚfixIFD)r‚   rà  rÖ   Ú
ifd_offsets       r5   ÚfinalizezAppendingTiffWriter.finalize�  sÒ   € ØŒ<ð 	ØˆFð 	Œ�Š�DÔ(Ñ)Ô)Ð)àŒv�{Š{˜1‰~Œ~ˆØð 	ð ˆFà�4”9ÒÐØEˆCÝ˜sÑ#Ô#Ð#à—]’]‘_”_ˆ
Ø�dÔ*Ñ*ˆ
ØŒ�Š�DÔ1Ñ2Ô2Ð2Ø�Š�zÑ"Ô"Ð"ØŒ�Š�JÑÔÐØ�Š‰Œˆˆˆr7   c                 óV   — |                       ¦   «          |                      ¦   «          d S rr   )ræ  rÔ  r†   s    r5   ÚnewFramezAppendingTiffWriter.newFrame©  s    € à�Š‰ŒˆØ�
Š
‰Œˆˆˆr7   c                 ó   — | S rr   r1   r†   s    r5   Ú	__enter__zAppendingTiffWriter.__enter__®  s   € Øˆr7   c                 ó<   — | j         r|                      ¦   «          dS )NF)rÑ  r>  )r‚   Úexc_typeÚ	exc_valueÚ	tracebacks       r5   Ú__exit__zAppendingTiffWriter.__exit__±  s   € ØŒ=ð 	Ø�JŠJ‰LŒLˆLØˆur7   c                 óD   — | j                              ¦   «         | j        z
  S rr   )r‹   r¥  rÙ  r†   s    r5   r¥  zAppendingTiffWriter.tell¶  s   € ØŒv�{Š{‰}Œ}˜tÔ3Ñ3Ð3r7   c                 ó”   — |t           j        k    r
|| j        z  }| j                             ||¦  «         |                      ¦   «         S rr   )r8  r×  rÙ  r‹   r«  r¥  )r‚   r´  Úwhences      r5   r«  zAppendingTiffWriter.seek¹  s@   € Ø•R”[Ò Ð Ø�dÔ*Ñ*ˆFàŒ�Š�F˜FÑ#Ô#Ð#Ø�yŠy‰{Œ{Ðr7   c                 ó<  — | j                              dt          j        ¦  «         | j                              ¦   «         }d|dz  z
  }d|cxk     rdk     r*n n'| j                              t          |¦  «        ¦  «         | j                              ¦   «         | _        d S )Nr   r=   )r‹   r«  r8  ÚSEEK_ENDr¥  rÆ  rö   rÙ  )r‚   ÚposÚ	pad_bytess      r5   rß  zAppendingTiffWriter.goToEndÀ  sŽ   € ØŒ�Š�A•r”{Ñ#Ô#Ð#ØŒf�kŠk‰mŒmˆð ˜˜r™‘Mˆ	ØˆyÐÐÒÐ˜2ÒÐÐÐÐØŒF�LŠL�˜yÑ)Ô)Ñ*Ô*Ð*Ø#œvŸ{š{™}œ}ˆÔÐÐr7   c                 ón   — || _         | j         dz   | _        | j         dz   | _        | j         dz   | _        d S )Nr:   rW  ÚHHL)ÚendianÚlongFmtÚshortFmtÚ	tagFormat)r‚   rù  s     r5   rÜ  zAppendingTiffWriter.setEndianÊ  s7   € ØˆŒØ”{ SÑ(ˆŒØœ cÑ)ˆŒØœ uÑ,ˆŒˆˆr7   c                 ó,  — 	 |                       ¦   «         }|dk    r#| j                             ¦   «         dz
  | _        d S | j                             |¦  «         |                      ¦   «         }| j                             |dz  t          j        ¦  «         Œ”)NTr   r   r;   )râ  r‹   r¥  rØ  r«  Ú	readShortr8  ÚSEEK_CUR)r‚   rå  Únum_tagss      r5   rÞ  zAppendingTiffWriter.skipIFDsÐ  s}   € ð	4ØŸš™œˆJØ˜QŠˆØ04´·²±´ÀÑ0A�Ô-Ø�àŒF�KŠK˜
Ñ#Ô#Ð#Ø—~’~Ñ'Ô'ˆHØŒF�KŠK˜ 2™¥r¤{Ñ3Ô3Ð3ð	4r7   c                 ó6   — | j                              |¦  «        S rr   )r‹   rÆ  re  s     r5   rÆ  zAppendingTiffWriter.writeÛ  s   € ØŒv�|Š|˜DÑ!Ô!Ð!r7   c                 ón   — t          j        | j        | j                             d¦  «        ¦  «        \  }|S )Nr   )r8  r9  rû  r‹   r–  rm  s     r5   rþ  zAppendingTiffWriter.readShortÞ  s(   € Ý”= ¤°´·²¸A±´Ñ?Ô?‰ˆØˆr7   c                 ón   — t          j        | j        | j                             d¦  «        ¦  «        \  }|S rb   )r8  r9  rú  r‹   r–  rm  s     r5   râ  zAppendingTiffWriter.readLongâ  s(   € Ý”= ¤¨t¬v¯{ª{¸1©~¬~Ñ>Ô>‰ˆØˆr7   c                 óò   — | j                              dt          j        ¦  «         | j                              t          j        | j        |¦  «        ¦  «        }|�|dk    rd|› d�}t          |¦  «        ‚d S d S )Néþÿÿÿr   úwrote only ú bytes but wanted 4©	r‹   r«  r8  rÿ  rÆ  r8  r<  rú  rÝ  ©r‚   rƒ   Úbytes_writtenrÖ   s       r5   ÚrewriteLastShortToLongz*AppendingTiffWriter.rewriteLastShortToLongæ  ów   € ØŒ�Š�B�œÑ$Ô$Ð$ØœŸš¥V¤[°´¸uÑ%EÔ%EÑFÔFˆØÐ$¨¸!Ò);Ð);ØB ÐBÐBÐBˆCÝ˜sÑ#Ô#Ð#ð %Ð$Ð);Ð);r7   c                 óò   — | j                              dt          j        ¦  «         | j                              t          j        | j        |¦  «        ¦  «        }|�|dk    rd|› d�}t          |¦  «        ‚d S d S )Nr  r   r  ú bytes but wanted 2)	r‹   r«  r8  rÿ  rÆ  r8  r<  rû  rÝ  r	  s       r5   ÚrewriteLastShortz$AppendingTiffWriter.rewriteLastShortí  sw   € ØŒ�Š�B�œÑ$Ô$Ð$ØœŸš¥V¤[°´ÀÑ%FÔ%FÑGÔGˆØÐ$¨¸!Ò);Ð);ØB ÐBÐBÐBˆCÝ˜sÑ#Ô#Ð#ð %Ð$Ð);Ð);r7   c                 óò   — | j                              dt          j        ¦  «         | j                              t          j        | j        |¦  «        ¦  «        }|�|dk    rd|› d�}t          |¦  «        ‚d S d S )Néüÿÿÿr   r  r  r  r	  s       r5   ÚrewriteLastLongz#AppendingTiffWriter.rewriteLastLongô  r  r7   c                 ó¨   — | j                              t          j        | j        |¦  «        ¦  «        }|�|dk    rd|› d�}t          |¦  «        ‚d S d S )Nr   r  r  )r‹   rÆ  r8  r<  rû  rÝ  r	  s       r5   Ú
writeShortzAppendingTiffWriter.writeShortû  s_   € ØœŸš¥V¤[°´ÀÑ%FÔ%FÑGÔGˆØÐ$¨¸!Ò);Ð);ØB ÐBÐBÐBˆCÝ˜sÑ#Ô#Ð#ð %Ð$Ð);Ð);r7   c                 ó¨   — | j                              t          j        | j        |¦  «        ¦  «        }|�|dk    rd|› d�}t          |¦  «        ‚d S d S )Nr   r  r  )r‹   rÆ  r8  r<  rú  rÝ  r	  s       r5   rã  zAppendingTiffWriter.writeLong  s_   € ØœŸš¥V¤[°´¸uÑ%EÔ%EÑFÔFˆØÐ$¨¸!Ò);Ð);ØB ÐBÐBÐBˆCÝ˜sÑ#Ô#Ð#ð %Ð$Ð);Ð);r7   c                 ó`   — |                       ¦   «          | j                             ¦   «          d S rr   )ræ  r‹   r>  r†   s    r5   r>  zAppendingTiffWriter.close  s"   € Ø�Š‰ŒˆØŒ�Š‰Œˆˆˆr7   c                 ó"  — |                       ¦   «         }t          |¦  «        D �]i}t          j        | j        | j                             d¦  «        ¦  «        \  }}}| j        |         }||z  }|dk    }|s3|                      ¦   «         }	|	| j	        z  }	|  
                    |	¦  «         || j        v r³| j                             ¦   «         }
|r>|                      ||dk    |dk    ¬¦  «         | j                             |
dz   ¦  «         nT| j                             |	¦  «         |                      ||dk    |dk    ¬¦  «         | j                             |
¦  «         d x}	}
�ŒB|r%| j                             dt          j        ¦  «         �Œkd S )Nr%   r   r   )ÚisShortÚisLong)rþ  r¦  r8  r9  rü  r‹   r–  Ú
fieldSizesrâ  rÙ  r  ÚTagsr¥  Ú
fixOffsetsr«  r8  rÿ  )r‚   r   r®  r÷   Ú
field_typer¯  Ú
field_sizeÚ
total_sizeÚis_localr´  Úcur_poss              r5   rä  zAppendingTiffWriter.fixIFD  s™  € Ø—>’>Ñ#Ô#ˆå�x‘”ð 	,ñ 	,ˆAÝ%+¤]°4´>À4Ä6Ç;Â;ÈqÁ>Ä>Ñ%RÔ%RÑ"ˆC�˜Uàœ¨Ô4ˆJØ# eÑ+ˆJØ! Q’ˆHØð -ØŸš™œ�Ø˜$Ô.Ñ.�Ø×$Ò$ VÑ,Ô,Ð,à�d”iÐÐØœ&Ÿ+š+™-œ-�àð 
)Ø—O’OØ¨
°aªÀ*ÐPQÂ/ð $ñ ô ð ð ”F—K’K ¨!¡Ñ,Ô,Ð,Ð,à”F—K’K Ñ'Ô'Ð'Ø—O’OØ¨
°aªÀ*ÐPQÂ/ð $ñ ô ð ð ”F—K’K Ñ(Ô(Ð(à#'Ð'�˜™àð ,à”—’˜A�rœ{Ñ+Ô+Ð+ùð=	,ð 	,r7   c                 óV  — |s|sd}t          |¦  «        ‚t          |¦  «        D �]}|r|                      ¦   «         n|                      ¦   «         }|| j        z  }|rœ|dk    r–|dk    rd}t          |¦  «        ‚|                      |¦  «         | j                             dt          j	        ¦  «         |  
                    t          j        ¦  «         | j                             dt          j	        ¦  «         ŒÕ|r|                      |¦  «         Œí|                      |¦  «         �Œd S )Nz offset is neither short nor longr   r   znot implementediöÿÿÿr%   )rÝ  r¦  rþ  râ  rÙ  r  r‹   r«  r8  rÿ  r  r   r#  r  r  )r‚   r¯  r  r  rÖ   r®  r´  s          r5   r  zAppendingTiffWriter.fixOffsets.  s0  € Øð 	$˜vð 	$Ø4ˆCÝ˜sÑ#Ô#Ð#å�u‘”ð 	-ñ 	-ˆAØ)0ÐE�T—^’^Ñ%Ô%Ð%°d·m²m±o´oˆFØ�dÔ*Ñ*ˆFØð -˜6 Uš?˜?à˜A’:�:Ø+�CÝ& sÑ+Ô+Ð+ð ×+Ò+¨FÑ3Ô3Ð3Ø”—’˜C¥¤Ñ-Ô-Ð-Ø—’¥¤Ñ.Ô.Ð.Ø”—’˜A�rœ{Ñ+Ô+Ð+Ð+Øð -Ø×%Ò% fÑ-Ô-Ð-Ð-à×$Ò$ VÑ,Ô,Ð,Ñ,ð%	-ð 	-r7   N)F)FF)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  r1   r7   r5   rË  rË  P  s“  € € € € € ðð ð €Jð, *Ð)Ð)€Dðð ð ð ðð ð ð2ð ð ð2ð ð ð
ð ð ðð ð ð
4ð 4ð 4ð #%¤+ð ð ð ð ð-ð -ð -ð-ð -ð -ð	4ð 	4ð 	4ð"ð "ð "ðð ð ðð ð ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ðð ð ð!,ð !,ð !,ðF-ð -ð -ð -ð -ð -r7   rË  c                 óÌ  — | j                              ¦   «         }| j        }t          |                     dg ¦  «        ¦  «        }t          | d¦  «        s|st          | ||¦  «        S |                      ¦   «         }	 t          |¦  «        5 }| g|z   D ]Š}||_         ||_        t          |d¦  «        sd}	n|j	        }	t          |	¦  «        D ]P}
|                     |
¦  «         |                     ¦   «          t          |||¦  «         |                     ¦   «          ŒQŒ‹	 d d d ¦  «         n# 1 swxY w Y   |                      |¦  «         d S # |                      |¦  «         w xY w)NÚappend_imagesrü  r   )r–  r¡  r—  rÉ  r§  r7  r·  r¥  rË  rü  r¦  r«  rµ  rè  )r  r˜  rð  r–  r—  r$  Úcur_idxÚtfÚimsÚnfrrE  s              r5   Ú	_save_allr)  H  s¨  € Ø”.×%Ò%Ñ'Ô'€KØÔ$€MÝ˜Ÿš¨¸"Ñ=Ô=Ñ>Ô>€MÝ�2�zÑ"Ô"ð '¨=ð 'Ý�R˜˜XÑ&Ô&Ð&à�gŠg‰iŒi€GðÝ  Ñ$Ô$ð 	"¨Ø�t˜mÑ+ð "ð "�Ø"-�”Ø$1�Ô!Ý˜s JÑ/Ô/ð 'Ø�C�Càœ,�Cå  ™:œ:ð "ð "�CØ—H’H˜S‘M”M�MØ—H’H‘J”J�JÝ˜#˜r 8Ñ,Ô,Ð,Ø—K’K‘M”M�M�Mð	"ð"ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	�Š�ÑÔÐÐÐøˆ�Š�ÑÔÐÐøøøs1   Á<E ÂBD*ÄE Ä*D.Ä.E Ä1D.Ä2E ÅE#z.tifz.tiffz
image/tiff)lr­  r±  Úloggingr  r8  r8  r*  Úcollections.abcr   Ú	fractionsr   Únumbersr   r   Ú r   r	   r
   r   r   Ú_binaryr   r  r   r  r   r   Ú	getLoggerrº   r©  rc  r˜  ÚIFD_LEGACY_APIr¦  rÍ   rË   rW  rX  rZ  rP  rT  rU  rœ  r¹  r\  re  r§  r`  ra  rR  rb  r¯  r�  rž  rŸ  Ú	PREDICTORrj  rf  rg  rd  r«  r°  r[  rY  Ú
JPEGTABLESrV  r©  r   rš  r›  ri  ÚEXIFIFDr  r¬  ÚIMAGEJ_META_DATA_BYTE_COUNTSÚIMAGEJ_META_DATArO  rí   r¨  r_  rv   r+  r]  rc   rf   rp   ry   rô   rJ  rj   rÁ   rE  rë   r  ÚsetattrrÑ  ÚImageFileDirectoryrì  r•  r·  rË  r)  Úregister_openr�  Úregister_saveÚregister_save_allÚregister_extensionsÚregister_mimer1   r7   r5   ú<module>r>     sÙ  ððR 
€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð €Ø€Ø€Ø€
à
€Ø
€ð €
Ø€Ø€Ø€Ø Ð Ø€	ØÐ Ø€Ø€Ø€Ø€Ø€Ø€ØÐ Ø€ØÐ Ø€Ø€	Ø	€Ø€	Ø€Ø€	Ø€
Ø€Ø€Ø	€Ø€Ø€Ø€
ØÐ ØÐ Ø€	Ø€Ø€Ø€
Ø
€Ø	€Ø€ð  %Ð ØÐ ðà€uðð €|ðð €xð	ð
 €xðð €zðð €{ðð €vðð Ððð 
ˆ=ðð 
ˆ:ðð 
Ððð 
ˆ>ðð 
ˆ=ðð 
ˆ?ðð  
ˆ6ð!ð" 
ˆ6ð#ð$ 
ˆ6ð%Ð ð* CÐBÐ)9×)?Ò)?Ñ)AÔ)AÐBÑBÔBÐ ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ð	vð
 ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð 
ðvð ˆˆD�!�T˜2Ð 
ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð ˆˆD�!�T˜2Ð ðvð  ˆˆD�!�T˜2Ð ð!vð" ˆˆD�!�T˜2Ð ð#vð$ ˆˆD�!�T˜2Ð ð%vð& ˆˆD�!�T˜2Ð ð'vð vð( ˆˆD�!�T˜2Ð ð)vð* ˆˆD�!�T˜2Ð ð+vð, ˆˆD�!�T˜2Ð ð-vð. ˆˆD�!�T˜2Ð ð/vð0 ˆˆD�!�T˜2Ð ð1vð2 ˆˆD�!�T˜2Ð ð3vð4 ˆˆD�!�T˜2Ð ð5vð6 ˆˆD�!�T˜2Ð ð7vð8 ˆˆD�!�T˜2Ð ð9vð: ˆˆD�!�T˜2Ð ð;vð< ˆˆD�!�T˜2Ð ð=vð> ˆˆD�!�T˜2Ð 
ð?vð@ ˆˆD�!�T˜2Ð 
ðAvðB ˆˆD�!�T˜2Ð ðCvðD ˆˆD�!�T˜2Ð ðEvðF ˆˆD�!�U˜BÐÐ!1ðGvðH ˆˆD�!�U˜BÐÐ!1ðIvð vð vðJ ˆˆD�!�U˜BÐÐ!1ðKvðL ˆˆD�!�U˜BÐÐ!3ðMvðN ˆˆD�!�U˜BÐÐ!2ðOvðP ˆˆD�!�U˜BÐ ðQvðR ˆˆD�!�U˜BÐ ðSvðT ˆˆD�!�U˜BÐ ðUvðV ˆˆD�!�U˜BÐ ðWvðX ˆˆD�!�U˜BÐ ðYvðZ ˆˆD�!�U˜BÐ ð[vð\ ˆˆD�!�U˜BÐ ð]vð^ ˆˆD�!�U˜BÐ ð_vð` ˆˆD�!�U˜BÐ ðavðb ˆˆD�!�V˜TÐ" Lðcvðd ˆˆD�!�V˜TÐ" Lðevðf ˆˆD�!�Y Ð# ^ðgvðh ˆˆD�!�Y Ð# ^ðivðj ˆˆD�!�Y Ð#Ð%5ðkvð vð vðl ˆˆD�!�Y Ð#Ð%5ðmvðn ˆˆD�!�\ 2Ð&Ð(8ðovðp ˆˆD�!�\ 2Ð&Ð(8ðqvðr ˆˆD�!�\ 4Ð(Ð*:ðsvðt ˆˆD�!�\ 4Ð(Ð*:ðuvðv ˆˆD�!�_ fÐ-Ð/@ðwvðx ˆˆD�!�_ fÐ-Ð/@ðyvðz ˆˆD�!Ð'¨Ð3Ð5Gð{vð| ˆˆD�!Ð'¨Ð3Ð5Gð}vð~ ˆˆD�!�\ 4Ð(Ð*:ðvð@ ˆˆD�!�\ 4Ð(Ð*:ðAvðB ˆˆD�!�_ fÐ-Ð/@ðCvðD ˆˆD�!�_ fÐ-Ð/@ðEvðF ˆˆD�!Ð'¨Ð3Ð5GðGvðH ˆˆD�!Ð'¨Ð3Ð5GðIvðJ ˆˆD�!�\ 4Ð(Ð*:ðKvðL ˆˆD�!�\ 4Ð(Ð*:ðMvð vð vðN ˆˆD�!�_ fÐ-Ð/@ðOvðP ˆˆD�!�_ fÐ-Ð/@ðQvðR ˆˆD�!Ð'¨Ð3Ð5GðSvðT ˆˆD�!Ð'¨Ð3Ð5GðUvðV ˆˆD�!�\ 6Ð*Ð,<ðWvðX ˆˆD�!�\ 6Ð*Ð,<ðYvðZ ˆˆD�!�\ 2Ð&Ð(:ð[vð\ ˆˆD�!�\ 2Ð&Ð(:ð]vð^ ˆˆD�!Ð% rÐ*Ð,@ð_vð` ˆˆD�!Ð% rÐ*Ð,@ðavðb ˆˆD�!Ð% tÐ,Ð.Bðcvðd ˆˆD�!Ð% tÐ,Ð.Bðevðf ˆˆD�!Ð% tÐ,Ð.Bðgvðh ˆˆD�!Ð% tÐ,Ð.Bðivðj ˆˆD�!Ð% tÐ,Ð.Bðkvðl ˆˆD�!Ð% tÐ,Ð.Bðmvðn ˆˆD�!�T˜2Ð ðovð vð vðp ˆˆD�!�T˜2Ð ðqvðr ˆˆD�!�T˜2Ð ðsvðt ˆˆD�!�T˜2Ð ðuvðv ˆˆD�!�T˜2Ð ðwvðx ˆˆD�!�T˜2Ð ðyvðz ˆˆD�!�T˜2Ð ð{vð| ˆˆD�!�T˜2Ð ð}vð~ ˆˆD�!�T˜2Ð ðvð@ ˆˆD�!�T˜2Ð ðAvðB ˆˆD�!�T˜2Ð ðCvðD ˆˆD�!�T˜2Ð ðEvðF ˆˆD�!�T˜2Ð 
ðGvðH ˆˆD�!�T˜2Ð 
ðIvðJ ˆˆD�!�V˜TÐ" LðKvðL ˆˆD�!�V˜TÐ" LðMvðN ˆˆD�!�T˜2Ð ðOvðP ˆˆD�!�T˜2Ð ðQvð vðR ˆˆD�!�\ 2Ð&Ð(8ØˆˆD�!�\ 2Ð&Ð(8ØˆˆD�!�_ dÐ+Ð->ØˆˆD�!�_ dÐ+Ð->ØˆˆD�!Ð'¨Ð0Ð2DØˆˆD�!Ð'¨Ð0Ð2DØˆˆD�!Ð% rÐ*Ð,@ð ˆˆD�!�Y Ð# _ØˆˆD�!�Y Ð# _ØˆˆD�!�Y Ð# ^ØˆˆD�!�Y Ð# ^ðkvð v€	ðp �cÐHÐH°y·~²~Ñ7GÔ7GÐHÑHÔHÑHÔHÐ ðð ð €ð"ð "ð "ð%ð %ð %ðð ð ð" €Ø€ð|'ð |'ð |'ð |'ð |'�(ñ |'ô |'ð |'ð~E$ð E$ð E$ð E$ð E$˜Nñ E$ô E$ð E$ðP (6Ð Ô $Ø(7Ð Ô %Ø�”‘”ð Jð J�I€CˆØ�<Š<˜˜SÑ!Ô!€DØ€GÐ! 7¨T¡>°>À#Ô3FÀqÔ3IÑJÔJÐJØ€GÐ! 8¨d¡?°OÀCÔ4HÑIÔIÐIÐIØ�O S¨$ðXð Xð Xð Xð XÐ1ñ Xô Xð Xðx +Ð ðh9ð h9ð h9ð h9ð h9�IÔ'ñ h9ô h9ð h9ðdð ˆ#ˆr�1�a˜˜tÐ	$ðð ˆ#ˆr�1�a˜˜tÐ	$ð	ð
 	ˆ4��Q˜˜6 1Ð
%ðð ˆ#ˆr�1�a˜˜tÐ	$ðð 	ˆ4��Q˜˜6 1Ð
%ðð ˆ'�2�q˜!˜U DÐ	)ðð ˆV�R˜˜A˜u dÐ+ðð ˆg�r˜1˜a ¨Ð-ðð ˆ'�2�q˜!˜U DÐ	)ðð 
ˆE�2�q˜!˜Y¨Ð-ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨QÐ/ðð ˆV�R˜˜A˜|¨TÐ2ðð  ˆg�r˜1˜a ¨DÐ1ð!ð" 
ˆE�2�q˜!˜Y¨Ð-ð#ð$ ˆx˜˜Q  5¨$Ð/ð%ð& ˆg�r˜1˜a ¨Ð-ð'ð( ˜˜Q  5¨$Ð/Ø˜˜Q  5¨$Ð/ð+ð ð €	ð2_"ð _"ð _"ðD	u-ð u-ð u-ð u-ð u-ñ u-ô u-ð u-ðpð ð ð> €Ô �MÔ(¨-¸Ñ AÔ AÐ AØ €Ô �MÔ(¨%Ñ 0Ô 0Ð 0Ø €Ô ˜Ô,¨iÑ 8Ô 8Ð 8à €Ô ˜-Ô.°¸Ð0AÑ BÔ BÐ Bà €Ô �MÔ(¨,Ñ 7Ô 7Ð 7Ð 7Ð 7r7   