§
    �Øj… ã                  ó‚$  — U d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
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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dddddddddœ
d„Z eej                             d¦  «        ej        ¬	¦  «        a eej                             d
¦  «        ej        ¬	¦  «        a e¦   «         Z da!d„ Z"d„ Z#d„ Z$ddddddddddœ	d„Z%ddddddddddœ	d„Z&�d‚d„Z'�dƒd„Z(d„ Z) e*ej+        dz    e,d¦  «        z   ¦  «        Z-d„ Z.d„ Z/ e/dd¦  «        Z0 e.dd¦  «        Z1 G d„ d¦  «        Z2 e2¦   «         Z3dZ4de5d<   	 ddl6Z7n# e8$ r Y nw xY wda9d „ Z:d!„ Z;ej                             d"¦  «        Z<e<�z e'e=› d#e<›d$�¦  «          e'e=› d%ej        d&         › �¦  «         e<dk    rddl<Z<n1ddlZej>         ?                    d'e<¦  «         @                    ¦   «         Z<e<jA        jB        jC        ZCnA	 dd(lmCZC n# eD$ r ddlCZCY nw xY w eEeCd)¦  «        r eCjF        ¦   «           eCjG        ¦   «          d*„ ZHdd+lImJZJ dd,lImKZK dd-lImLZL dd.lImMZM dd/lImNZN dd0lImOZO dd1lImPZP dd2lImQZQ eCjR        ZSdZT eUd3„ eS V                    d4¦  «        D ¦   «         ¦  «        ZWeWeCjX        eCjY        eCjZ        fk    s"J d5eW›d6eCjX        eCjY        eCjZ        f›�¦   «         ‚eNeSdfZ[eSZ\eNZ]dZ^d7d8œd9„Z_e_Z`eaebz  ecz  Zdeje        ed         Zfeje        eg         Zheje        ei         Zjejk        eldf         Zmeje        ejn                 Zoeje        ep         Zqd:Zrd;Zsd<Ztd=Zud>„ Zv�d„d?„Zwd@„ Zx�d„dA„ZydB„ ZzdZ{dCZ| G dD„ dE¦  «        Z} G dF„ dG¦  «        Z~ G dH„ dI¦  «        Z G dJ„ dK¦  «        Z€ G dL„ dM¦  «        Z� G dN„ dO¦  «        Z‚e1rejƒ        Z„ G dP„ dQ¦  «        Z…e…Z† G dR„ dS¦  «        Z‡ G dT„ dU¦  «        Zˆ G dV„ dW¦  «        Z‰ G dX„ dY¦  «        ZŠ G dZ„ d[¦  «        Z‹ G d\„ d]e‹¦  «        ZŒ eŒ¦   «         Z� G d^„ d_¦  «        ZŽ G d`„ da¦  «        Z�ddblm�Z�  G dc„ dd¦  «        Z‘	 	 	 	 	 	 �d…de„Z’ G df„ dg¦  «        Z“ G dh„ di¦  «        Z” G dj„ dk¦  «        Z• G dl„ dm¦  «        Z– G dn„ do¦  «        Z— G dp„ dq¦  «        Z˜ G dr„ ds¦  «        Z™ G dt„ du¦  «        Zš G dv„ dw¦  «        Z› G dx„ dy¦  «        Zœ	 ej�        ež         ZŸ	 eCj          ¡                    ¦   «         D ]=\  Z¢Z£e¢ ¤                    dz¦  «        r#e¢ ¤                    d{¦  «        rŒ0 e¥eŸe¢e£¦  «         Œ>	 deCj§        z  eCj¨        z  eCj©        z  eCjª        z  eCj«        z  eCj¬        z  Z­eCj®        dk    sJ ‚e¯eCj¯        k    sJ ‚e°eCj°        k    sJ ‚[Ÿ[¢[£ej±        Z²d|Z³i Z´e³D ]Zµeµe´eµ ¶                    ¦   «         <   Œd}e´d~<   de´d€<   d�e´d‚<   dƒe´d„<   d…e´d†<   d‡e´dˆ<   d‰e´dŠ<   d‹e´dŒ<   d�e´dŽ<   d�e´d�<   d‘e´d’<   d“e´d”<   d•e´d–<   d—e´d˜<   d™Z·d™Z¸dšZ¹d›Zºdœa»g a¼da½da¾eCj¿        Z¿eCjÀ        ZÀeCjÁ        ZÁeCjÂ        ZÂeCjÃ        ZÃeCjÄ        ZÄeCjÅ        ZÅeCjÆ        ZÆdZÇdZÈd�ZÉdZÊdZËd�ZÌdžZÍdŸZÎd ZÏdZÐd�ZÑdŸZÒd¡ZÓd¢ZÔd£ZÕd¤ZÖdZ×d�ZØdZÙdZÚd�ZÛdžZÜdŸZÝd ZÞd¥Zßd¦Zàd¡Zád§Zâd¨Zãd©ZädªZåd«ZædZçdZèd�ZédžZêdZëd�ZìdŸZíd¡Zîd¢ZïdZðdZñd�ZòdžZódŸZôeCjõ        ZöeCj÷        ZøeCjù        ZúeCjû        ZüeCjý        ZþeCjÿ        �Z eC�j        �ZeC�j        �ZeC�j        �ZeC�j        �ZeC�j	        �Z
eC�j        �ZeC�j        �ZeC�j        �ZeWd¬k    r	eC�j        �ZeWd­k    r	eC�j        �ZeC�j        �ZeC�j        �ZeC�j        �ZeC�j        �ZeC�j        �ZeC�j        �Z eC�j!        �Z"�e�Z#�e�Z$deöz  eøz  �ez  �ez  �Z%deöz  eøz  �ez  �ez  �Z&deöz  eøz  �ez  eúz  �ez  �Z'�e'�Z(deøz  �ez  eþz  �ez  �Z)deöz  eøz  �ez  eúz  �ez  �Z*deöz  eøz  �ez  eúz  �ez  �Z+deöz  eøz  �ez  �ez  �Z,deöz  eøz  �ez  �ez  �Z-d�Z.d�Z/d��Z0d�a1d�Z2d��Z3dž�Z4d®�Z5d¯�Z6d°�Z7d±�Z8d²�Z9d³�Z:d´�Z;dµ�Z<d¶�Z=d·�Z>d¸�Z?d¹�Z@dº�ZAd»�ZBd¼�ZCd½�ZDd¾„ d¿„ dÀ„ dÁ„ dÂ„ dÃ„ dÄ„ dÅœ�ZE G dÆ„ dÇ�eF¦  «        �ZG G dÈ„ dÉ�eF¦  «        �ZH G dÊ„ dË�eG¦  «        �ZI e€�e2¦  «        �ZJ e€�e3¦  «        �ZK e€�e4¦  «        �ZLdÌ�ZMdÍ�ZNdÎ�ZOdÏ�ZPdÐ�ZQdÑ�ZRdÒ�ZSdÓ�ZTdÔ�ZUdÕ�ZVdÖ�ZWd×�ZXdØ�ZYdÙ�ZZdÚ�Z[dÛ�Z\dÜ�Z]dÝ�Z^dÞ�Z_dß�Z`dà�Zadá�Zbdâ�Zcdã�Zddä�Zedå�Zfdæ�Zgdç�Zhdè�Zidé�Zjdê�Zkdë�Zldì�Zmdí�Zndî�Zodï�Zpdð�Zqdñ�Zrdò�Zsdó�Ztdô�Zudõ�Zvdö�Zwd÷�Zxdø�Zydù�Zzdú�Z{dû�Z|dü�Z}dý�Z~dþ�Zdÿ�Z€�d �Z�	 d�d�l‚�mƒ�Zƒ�m„�Z„  �eƒ�j…        ¦   «         �Z†�e†� ‡                    ¦   «         D ]�Zˆ�e„�eˆ         �e†�eˆ         �d<   Œ�[ƒ�[„n# e8$ r i �Z†Y nw xY w�d�Z‰�d�ZŠ�d„ �Z‹�d„ �ZŒ�d„ �Z��d„ �ZŽ�d	„ �Z��d
„ �Z��d„ �Z‘�d„ �Z’�d„ �Z“�d„ �Z”�d„ �Z•�d„ �Z–�d„ �Z—�d„ �Z˜�d„ �Z™�d„ �Zš�d„ �Z›�d„ �Zœ�d„ �Z��d†�d„�Zž�d†�d„�ZŸ�d„ �Z �d„ �Z¡�d „ �Z¢�d!„ �Z£�d"„ �Z¤�d#„ �Z¥�d$„ �Z¦�d%„ �Z§�d&„ �Z¨�d'„ �Z©�d(„ �Zª�d)„ �Z«�d*„ �Z¬�d+„ �Z­�d,„ �Z®�d-„ �Z¯�d.„ �Z°�d/„ �Z±�d0„ �Z²�d‡�d2„�Z³�d3„ �Z´�d4„ �Zµ�d5„ �Z¶�d6„ �Z·�d7„ �Z¸�d8„ �Z¹�d9„ �Zº�d:„ �Z»�d;„ �Z¼�d<„ �Z½�d=„ �Z¾�d>„ �Z¿�d?„ �ZÀ�d@„ �ZÁ�dA„ �ZÂ�dB„ �ZÃ�dC„ �ZÄ�dD„ �ZÅ�dE„ �ZÆ�dˆ�dJ„�ZÇ�d‰�dM„�ZÈ�dN„ �ZÉ�dO„ �ZÊ�dP„ �ZË�dQ„ �ZÌ�dR„ �ZÍ�dS„ �ZÎ�dT„ �ZÏ�dU„ �ZÐ�dV„ �ZÑ�dW„ �ZÒ�dX„ �ZÓ�dY„ �ZÔ�dZ„ �ZÕ�d[„ �ZÖ�d\„ �Z×�d]„ �ZØ�d^„ �ZÙ�d_„ �ZÚd�aÛ�d`„ �ZÜ�da„ �ZÝ�db„ �ZÞ�dc„ �Zß�dd„ �Zà�de„ �Zá�df„ �Zâ�dg„ �Zã�dh„ �Zä�di„ �Zå�dj„ �Zæ�dk„ �Zç�dl„ �Zè�dm„ �Zé�dn„ �Zê�do„ �Zë�dp„ �Zì�dq„ �Zí�dr„ �Zî�ds„ �Zï�dt„ �Zð�du„ �Zñ�dv„ �Zò�dw„ �Zó�dx„ �Zô�dy„ �Zõ�dz„ �Zö�d{„ �Z÷�d|„ �Zø�d}„ �Zù�d~„ �Zú�d„ �Zû�d€„ �Zü�d�„ �Zý�d‚„ �Zþ�dƒ„ �Zÿ�d„„ �Z �d…„ �Z�d†„ �Z�d‡„ �Z�dˆ„ �Z�d‰„ �Z�dŠ„ �Z�d‹„ �Z�dŒ„ �Z�d�„ �Z	�dŽ„ �Z
�d�„ �Z�d�„ �Z�d‘„ �Z�d’„ �Z�d“„ �Z�d”„ �Z�d•„ �Z�d–„ �Z�d—„ �Z�d˜„ �Z�d™„ �Z�dš„ �Z�d›„ �Z�dœ�Z�d��Z�dž�Z�dŸ�Z�d �Z�d¡�Z�d¢�Z�d£�Z�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´�Z0�dµ�Z1�d¶�Z2dÇ�Z3�d·�Z4�d¸„ �Z5�dŠ�dº„�Z6�d‹�d¼„�Z7�dŒ�dÀ„�Z8�d��dÂ„�Z9�dŽ�dÅ„�Z:�d��dÇ„�Z;�d��dÈ„�Z<�d‘�dÊ„�Z=�d’�dÌ„�Z>�d“�dÏ„�Z?�dÐ„ �Z@�dÑ„ �ZA�d”�dÓ„�ZB�dÔ„ �ZC�d•�dÕ„�ZD�dÖ„ �ZE�d×„ �ZF�dØ„ �ZG�d–�dÝ„�ZH�d—�dß„�ZI�d˜�dà„�ZJddd�dáœ�d™�dç„�ZK�dš�d›�dë„�ZL�dœ�dï„�ZM�dð„ �ZN�dñ„ �ZO�dò„ �ZP�dó„ �ZQ�dô„ �ZR�dõ„ �ZS�dö„ �ZT�d÷„ �ZU�dø„ �ZV�dù„ �ZW�dú„ �ZX�dû„ �ZY�dü„ �ZZ�dý„ �Z[�dþ„ �Z\�dÿ„ �Z]�d „ �Z^�d„ �Z_�d„ �Z` G �d„ �deC�ja        ¦  «        �Zb�d„ �Zc�d„ �Zd�d„ �Ze�d„ �Zf�d	„ �Zg�d
„ �Zh�d„ �Zi�d„ �Zj�d„ �Zk�d„ �Zl�d„ �Zm�d„ �Zn�d„ �Zo�d„ �Zp�d„ �Zq�d��d„�Zr G �d„ �deC�js        ¦  «        �Zt G �d„ �deC�ju        ¦  «        �Zv G �d„ �deC�jw        ¦  «        �Zx�d„ �Zy G �d„ �deC�ju        ¦  «        �Zz G �d „ �d!eC�ju        ¦  «        �Z{�dž�dŸ�d$„�Z|�d �d%„�Z}�d¡�d'„�Z~�d¢�d+„�Z�d,„ �Z€�d-„ �Z��d.„ �Z‚�d/„ �Zƒ�d0„ �Z„�d£�d1„�Z… G �d2„ �d3�e†¦  «        �Z‡�d4„ �Zˆ�d¤�d¥�d8„�Z‰�d¦�d9„�ZŠ�d:„ �Z‹�d§�d¨�d>„�ZŒdddddd�d?œ�d@„�Z�dddddd�d?œ�dA„�ZŽ�dB„ �Z��dC„ �Z��dD„ �Z‘�dE„ �Z’�dF„ �Z“�dG„ �Z”�dH„ �Z•�dI„ �Z–�dJ„ �Z—�dK„ �Z˜�dL„ �Z™�dM„ �Zš�dN„ �Z›�dO„ �Zœ�dP„ �Z��dQ„ �Zž�d©�dR„�ZŸ�dª�dS„�Z �dT„ �Z¡�dU„ �Z¢�dƒ�dV„�Z£�d«�dX„�Z¤�d¬�dZ„�Z¥�d¬�d[„�Z¦�d\„ �Z§�d]„ �Z¨�d^„ �Z©d�Zªd��Z«dž�Z¬dŸ�Z­�d­�d`„�Z®�da„ �Z¯�db eg¦   «         d�db eg¦   «         d�dcdd�ddœ	�de„�Z°d�dcddødddddd�dfœ
�dg„�Z± G �dh„ �di¦  «        �Z²e<s$ eC�j³        �eî¦  «          eC�j´        �eï¦  «         �dj„ �Zµ e�j¶        �eµ¦  «         d�dkl�m·�Z· �e·�j·        �Z· eg¦   «         �Z¸�e·D ]6\  �Z¹�Zº�Z»�Z¼�eº�dlz  �e»�dlz  �e¼�dlz  f�e¸�e¹ ¶                    ¦   «         <   Œ7�dm„ �Z½�dn„ �Z¾�d„�do„�Z¿d�dpl�mÀ�ZÀ �eÀ�jÁ        �ZÁ�eÀ�jÂ        �ZÂ�eÀ�jÃ        �ZÃ�eÀ�jÄ        �ZÄ�eÀ�jÅ        �ZÅd�dql�mÆ�ZÆ  G �dr„ �ds�eÇ¦  «        �ZÈ�dt„ �ZÉ	 e]�ZÊ�due]› �dve\› �dwe�jË        d         › d4e�jË        d         › �dxe�jÌ        › �dye�jÍ        �dzk    rd¤nd£› �d{�Z 	 dd�lÎ�ZÎn# e8�eÏf$ r d�ZÎY nw xY w�d|„ �ZÐ�d}„ �ZÑ�d~„ �ZÒ�d„ �ZÓ�d€„ �ZÔ�d�„ �ZÕ�eÐe…�_Ö        �eÑe…�_×        �eÒe…�_Ø        �eÓe…�_Ù        �eÔ�ZÚ�eÕ�ZÛdS (®  zk
PyMuPDF implemented on top of MuPDF Python bindings.

License:

    SPDX-License-Identifier: GPL-3.0-only
é    )ÚannotationsNé   )Úextra©
ÚtextÚfdÚstreamÚpathÚpath_appendÚ	pyloggingÚpylogging_loggerÚpylogging_levelÚpylogging_nameÚdefaultc        
        ób  ‡‡— | ��D|                       d¦  «        rt          | dd…         ¦  «        }�n|                       d¦  «        r| dd…         }nö|                       d¦  «        r| dd…         }nÖ|                       d¦  «        r³d}t          ¦   «         }
| d	d…                              d
¦  «        }|D ]F}|sŒ|                     dd¦  «        }t	          |¦  «        dk    sJ d|›d�¦   «         ‚|\  }}||
|<   ŒG|
                     d¦  «        Š‰�t          ‰¦  «        Š|
                     dd¦  «        }nJ d| ›d�¦   «         ‚|�t          j        |dd¬¦  «        }nË|�'t          |d¦  «        sJ ‚t          |d¦  «        sJ ‚|}n¢|�t          j        |d¦  «        }nŠ|�t          j        |d¦  «        }nr	 |€‰€‰€|�gddl	}‰€|€d}| 
                    |¦  «        Št          ‰|j        ¦  «        sJ ‚‰€‰                     ¦   «         Š G ˆˆfd„d¦  «        } |¦   «         }n|	}|S )a‚  
    Returns a stream that writes to a specified destination, which can be a
    file descriptor, a file, an existing stream or Python's `logging' system.
    
    Args:
        text: text specification of destination.
            fd:<int> - write to file descriptor.
            path:<str> - write to file.
            path+:<str> - append to file.
            logging:<items> - write to Python `logging` module.
                items: comma-separated <name=value> pairs.
                    level=<int>
                    name=<str>.
                Other names are ignored.
        
        fd: an int file descriptor.
        stream: something with methods .write(text) and .flush().
            If specified we simply return <stream>.
        path: a file path.
            If specified we return a stream that writes to this file.
        path_append: a file path.
            If specified we return a stream that appends to this file.
        pylogging*:
            if any of these args is not None, we return a stream that writes to
            Python's `logging` module.
            
            pylogging:
                Unused other than to activate use of logging module.
            pylogging_logger:
                A logging.Logger; If None, set from <pylogging_name>.
            pylogging_level:
                An int log level, if None we use
                pylogging_logger.getEffectiveLevel().
            pylogging_name:
                Only used if <pylogging_logger> is None:
                    If <pylogging_name> is None, we set it to 'pymupdf'.
                    Then we do: pylogging_logger = logging.getLogger(pylogging_name)
    Nzfd:é   zpath:é   zpath+zlogging:Té   ú,ú=r   é   zNeed `=` in item=ú.ÚlevelÚnameÚpymupdfr   z?Expected prefix `fd:`, `path:`. `path+:` or `logging:` in text=ÚwF)ÚmodeÚclosefdÚwriteÚflushÚac                  ó"   •— e Zd Zˆ ˆfd„Zd„ ZdS )ú_make_output.<locals>.Outc                óf   •— |                      d¦  «        }|r‰                     ‰|¦  «         d S d S )Nú
)ÚrstripÚlog)Úselfr   r   r   s     €€ú…/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/pymupdf/__init__.pyr   z_make_output.<locals>.Out.write•   sG   ø€ ð —{’{ 4Ñ(Ô(�Øð @Ø$×(Ò(¨¸$Ñ?Ô?Ð?Ð?Ð?ð@ð @ó    c                ó   — d S ©N© ©r(   s    r)   r    z_make_output.<locals>.Out.flushœ   s   € Ø�r*   N)Ú__name__Ú
__module__Ú__qualname__r   r    )r   r   s   €€r)   ÚOutr#   ”   sH   ø€ € € € € ð@ð @ð @ð @ð @ð @ðð ð ð ð r*   r2   )Ú
startswithÚintÚdictÚsplitÚlenÚgetÚioÚopenÚhasattrÚloggingÚ	getLoggerÚ
isinstanceÚLoggerÚgetEffectiveLevel)r   r   r	   r
   r   r   r   r   r   r   Úitems_dÚitemsÚitemÚnvÚnÚvÚretr<   r2   s         ``           r)   Ú_make_outputrH   .   sÇ  øø€ ðf Ñà�?Š?˜5Ñ!Ô!ð 	\Ý�T˜!˜"˜"”X‘”ˆB‰BØ�_Š_˜WÑ%Ô%ð 	\Ø˜˜˜”8ˆDˆDØ�_Š_˜WÑ%Ô%ð 	\Ø˜q˜r˜rœ(ˆKˆKØ�_Š_˜ZÑ(Ô(ð 	\ØˆIÝ‘f”fˆGØ˜˜˜”H—N’N 3Ñ'Ô'ˆEàð ð �Øð ØØ—Z’Z  QÑ'Ô'�Ý˜2‘w”w !’|�|�|Ð%<°DÐ%<Ð%<Ð%<‘|”|�|Ø‘��1Ø�˜‘
�
Ø%Ÿkšk¨'Ñ2Ô2ˆOØÐ*Ý"% oÑ"6Ô"6�Ø$Ÿ[š[¨°Ñ;Ô;ˆNˆNà[Ð[ÐSWÐ[Ð[Ð[Ñ[Ô[�1à	€~ÝŒg�b˜s¨EÐ2Ñ2Ô2ˆˆØ	Ð	Ý�v˜wÑ'Ô'Ð'Ð'Ð'Ý�v˜wÑ'Ô'Ð'Ð'Ð'ØˆˆØ	Ð	ÝŒg�d˜CÑ Ô ˆˆØ	Ð	 ÝŒg�k 3Ñ'Ô'ˆˆðØÐ$ØÐ+ØÐ*ØÐ)àˆˆˆØÐ#ØÐ%Ø!*�Ø&×0Ò0°Ñ@Ô@ÐÝÐ*¨G¬NÑ;Ô;Ð;Ð;Ð;ØÐ"Ø.×@Ò@ÑBÔBˆOð		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ñ 		ô 		ð 		ð ˆc‰eŒeˆˆàˆØ€Jr*   ÚPYMUPDF_MESSAGE)r   r   ÚPYMUPDF_LOGFc                 ó   — t           S r,   ©Ú_g_log_itemsr-   r*   r)   Ú
_log_itemsrN   ­   s   € ÝÐr*   c                ó
   — | a d S r,   )Ú_g_log_items_active)Úactives    r)   Ú_log_items_activerR   °   s   € à ÐÐÐr*   c                 ó   — t           d d …= d S r,   rL   r-   r*   r)   Ú_log_items_clearrT   ´   s   € Ý�Q�Q�Qˆˆˆr*   ©	r   r   r	   r
   r   r   r   r   r   c        	        óB   — t          | ||||||||t          ¬¦
  «
        adS )zO
    Sets destination of PyMuPDF messages. See _make_output() for details.
    r   N)rH   Ú_g_out_messagerU   s	            r)   Úset_messagesrX   ¸   s:   € õ  "ØØØØØ#ØØ-Ø+Ø)Ý"ðñ ô €N€N€Nr*   c        	        óB   — t          | ||||||||t          ¬¦
  «
        adS )zh
    Sets destination of PyMuPDF development/debugging logging. See
    _make_output() for details.
    r   N)rH   Ú
_g_out_logrU   s	            r)   Úset_logr[   Õ   s:   € õ" ØØØØØ#ØØ-Ø+Ø)Ýðñ ô €J€J€Jr*   Ú c                ó˜  — 	 t          j        d¬¦  «        }||         }	 t          j                             |j        ¦  «        }n# t          $ r
 |j        }Y nw xY w|j        }|j        }|› d|› d|› d| › �} ~n# t          $ r Y nw xY wt          rt                               | ¦  «         t          rt          | t          d¬¦  «         dS dS )z0
    For development/debugging diagnostics.
    r   )Úcontextú:z(): r   ©Úfiler    N)ÚinspectÚstackÚosr
   ÚrelpathÚfilenameÚ	ExceptionÚlinenoÚfunctionÚStopIterationrP   rM   ÚappendrZ   Úprint)r   Úcallerrc   Úframe_recordrf   Úlineri   s          r)   r'   r'   ó   s  € ðÝ” aÐ(Ñ(Ô(ˆð ˜V”}ˆð	-Ý”w—’ |Ô'<Ñ=Ô=ˆHˆHøÝð 	-ð 	-ð 	-Ø#Ô,ˆHˆHˆHð	-øøøàÔ"ˆØÔ(ˆØÐ8Ð8˜TÐ8Ð8 HÐ8Ð8°$Ð8Ð8ˆØˆEøõ ð ð ð Øˆðøøøõ ð "Ý×Ò˜DÑ!Ô!Ð!Ýð .Ýˆd�¨1Ð-Ñ-Ô-Ð-Ð-Ð-ð.ð .s"   ‚A9  $A ÁAÁAÁ9
BÂBc                óF   — t           rt          | t           d¬¦  «         dS dS )z
    For user messages.
    r   r`   N)rW   rl   ©r   s    r)   Úmessagerr     s1   € õ ð 2Ýˆd�¨qÐ1Ñ1Ô1Ð1Ð1Ð1ð2ð 2r*   c                 ón   — dd l } t          d¦  «         t          |                      ¦   «         ¦  «         d S )Nr   zexception_info:)Ú	tracebackr'   Ú
format_exc)rt   s    r)   Úexception_inforv     s=   € ØÐÐÐÝÐÑÔÐÝˆ	×ÒÑÔÑÔÐÐÐr*   z
()<>[]{}/%c                óÈ   — t           j                             | ¦  «        }|€|}n"|dk    rd}n|dk    rd}nJ d| › d|›�¦   «         ‚||k    rt          d	| › d|›�¦  «         |S )
ú}
    Returns `True`, `False` or `default` depending on whether $<name> is '1',
    '0' or unset. Otherwise assert-fails.
    NÚ1TÚ0Fr   zUnrecognised value for ú: úUsing non-default setting from )rd   Úenvironr8   r'   ©r   r   rF   rG   s       r)   Úget_env_boolr     sŽ   € õ
 	Œ
�Š˜ÑÔ€AØ€yØˆˆØ	
ˆcŠˆØˆˆØ	
ˆcŠˆØˆˆà9Ð9¨DÐ9Ð9°AÐ9Ð9Ñ9Ô9ˆqØ
ˆg‚~€~ÝÐ;¨dÐ;Ð;°aÐ;Ð;Ñ<Ô<Ð<Ø€Jr*   c                ó¢   — t           j                             | ¦  «        }|€|}nt          |¦  «        }||k    rt	          d| › d|› �¦  «         |S )rx   Nr|   r{   )rd   r}   r8   r4   r'   r~   s       r)   Úget_env_intr�   1  s[   € õ
 	Œ
�Š˜ÑÔ€AØ€yØˆˆå�!‰fŒfˆØ
ˆg‚~€~ÝÐ9¨dÐ9Ð9°aÐ9Ð9Ñ:Ô:Ð:Ø€Jr*   ÚPYMUPDF_EXCEPTIONS_VERBOSEÚPYMUPDF_USE_EXTRATc                  ó   — e Zd Zd„ ZdS )Ú_Globalsc                ó>   — d| _         d| _        d| _        d| _        d S ©Nr   )Úno_device_cachingÚsmall_glyph_heightsÚsubset_fontnamesÚskip_quad_correctionsr.   s    r)   Ú__init__z_Globals.__init__L  s(   € Ø!"ˆÔØ#$ˆÔ Ø !ˆÔØ%&ˆÔ"Ð"Ð"r*   N©r/   r0   r1   rŒ   r-   r*   r)   r…   r…   K  s#   € € € € € ð'ð 'ð 'ð 'ð 'r*   r…   z typing.Optional[typing.Callable]Ú_get_layoutc                 ó
   — da dS )z:For users who never want to see the layout recommendation.FN)Ú_recommend_layoutr-   r*   r)   Úno_recommend_layoutr‘   _  s   € ð ÐÐÐr*   c                 óÊ   — d} 	 	 t           rQt          €Lt          j        d¦  «        dk    r6t          j                             d¦  «        st          | ¦  «         da dS dS dS dS dS )z;Check if we should recommend installing the layout package.zVConsider using the pymupdf_layout package for a greatly improved page layout analysis.r   NÚPYMUPDF_SUGGEST_LAYOUT_ANALYZERrz   zpymupdf.layoutF)r�   rŽ   rd   ÚgetenvÚ	importlibÚutilÚ	find_specrl   )Úmsgs    r)   Ú_warn_layout_oncer™   e  s�   € àd€Cð 	
ð"åð"õ Ðõ ŒIÐ7Ñ8Ô8¸CÒ?Ð?õ ”×(Ò(Ð)9Ñ:Ô:ð @õ
 	ˆc‰
Œ
ˆ
Ø!ÐÐÐð"ð "ð  Ðð @Ð?Ð?Ð?r*   ÚMUPDF_CPPYYz: $MUPDF_CPPYY=z% so attempting to import mupdf_cppyy.z: $PYTHONPATH=Ú
PYTHONPATHÚmupdf_cppyy)ÚmupdfÚinternal_check_ndebugc                ój   — |                       d¦  «        }|dk    r
| d|…         } t          | ¦  «        S )z<
    Converts string to int, ignoring trailing 'rc...'.
    Úrcr   N)Úfindr4   )r   r    s     r)   Ú_int_rcr¢   —  s5   € ð 
�Š�4‰Œ€BØ	ˆQ‚w€wØ�C�R�CŒyˆÝˆt‰9Œ9Ðr*   )Úmupdf_location)Úpymupdf_git_branch)Úpymupdf_git_diff)Úpymupdf_git_sha)Úpymupdf_version)Úpymupdf_version_tuple)Úswig_version)Úswig_version_tuplec                ó,   — g | ]}t          |¦  «        ‘ŒS r-   )r¢   ©Ú.0Úis     r)   ú
<listcomp>r¯   µ  s   € ÐKÐKÐK¨Q�g a™jœjÐKÐKÐKr*   r   z8Inconsistent MuPDF version numbers: mupdf_version_tuple=zM != (mupdf.FZ_VERSION_MAJOR, mupdf.FZ_VERSION_MINOR, mupdf.FZ_VERSION_PATCH)=z%g©Úfmtc               ó¬   — t          | t          t          f¦  «        r$d}| D ]}|r|dz  }|t          ||¬¦  «        z  }Œ|S t	          j        || ¦  «        S )zÐ
    Returns `value` formatted with mupdf.fz_format_double() if available,
    otherwise with Python's `%`.

    If `value` is a list or tuple, we return a space-separated string of
    formatted values.
    r\   ú r°   )r>   ÚlistÚtupleÚ	_format_gr�   Úfz_format_double)Úvaluer±   rG   rF   s       r)   r¶   r¶   Ä  sp   € õ �%�$¥˜Ñ'Ô'ð 2ØˆØð 	)ð 	)ˆAØð Ø�s‘
�Ø•9˜Q CÐ(Ñ(Ô(Ñ(ˆCˆCØˆ
åÔ% c¨5Ñ1Ô1Ð1r*   Úmatrix_likeÚ
point_likeÚ	quad_likeÚ	rect_likec                óF  — t          | t          ¦  «        r| j        rt          d¦  «        ‚| j        } t          | t
          j        ¦  «        r| S t          | t
          j        ¦  «        r|                      ¦   «         S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)zz
    Returns document as a mupdf.FzDocument, upcasting as required. Raises
    'document closed' exception if closed.
    údocument closedNr   údocument is NoneúUnrecognised type(document)=)
r>   ÚDocumentÚ	is_closedÚ
ValueErrorÚthisr�   Ú
FzDocumentÚPdfDocumentÚsuperÚtype)Údocuments    r)   Ú_as_fz_documentrÊ   è  s¦   € õ
 �(�HÑ%Ô%ð !ØÔð 	0ÝÐ.Ñ/Ô/Ð/Ø”=ˆÝ�(�EÔ,Ñ-Ô-ð 4ØˆÝ	�H�eÔ/Ñ	0Ô	0ð 4Ø�~Š~ÑÔÐØ	Ð	Ø%Ð%Ñ%Ô%ˆqà3Ð3¥$ x¡.¤.Ð3Ð3Ñ3Ô3ˆqr*   c                ó`  — t          | t          ¦  «        r| j        rt          d¦  «        ‚| j        } t          | t
          j        ¦  «        r| S t          | t
          j        ¦  «        r!t          j        | ¦  «        }|r	|j        sJ ‚|S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)a  
    Returns `document` downcast to a mupdf.PdfDocument. If downcast fails (i.e.
    `document` is not actually a `PdfDocument`) then we assert-fail if `required`
    is true (the default) else return a `mupdf.PdfDocument` with `.m_internal`
    false.
    r¾   Nr   r¿   rÀ   )
r>   rÁ   rÂ   rÃ   rÄ   r�   rÆ   rÅ   Ú
m_internalrÈ   )rÉ   ÚrequiredrG   s      r)   Ú_as_pdf_documentrÎ   ú  sÀ   € õ �(�HÑ%Ô%ð !ØÔð 	0ÝÐ.Ñ/Ô/Ð/Ø”=ˆÝ�(�EÔ-Ñ.Ô.ð 
4ØˆÝ	�H�eÔ.Ñ	/Ô	/ð 4ÝÔ Ñ)Ô)ˆØð 	"Ø”>Ð!Ð!�>Øˆ
Ø	Ð	Ø%Ð%Ñ%Ô%ˆqà3Ð3¥$ x¡.¤.Ð3Ð3Ñ3Ô3ˆqr*   c                ó  — t          | t          ¦  «        r| j        } t          | t          j        ¦  «        r|                      ¦   «         S t          | t          j        ¦  «        r| S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)z@
    Returns page as a mupdf.FzPage, upcasting as required.
    Nr   úpage is NoneúUnrecognised type(page)=)r>   ÚPagerÄ   r�   ÚPdfPagerÇ   ÚFzPagerÈ   ©Úpages    r)   Ú_as_fz_pager×     s†   € õ �$�ÑÔð ØŒyˆÝ�$�œÑ&Ô&ð 0Ø�zŠz‰|Œ|ÐÝ	�D�%œ,Ñ	'Ô	'ð 0ØˆØ	ˆØ!�/Ñ!Ô!ˆqà/Ð/¥$ t¡*¤*Ð/Ð/Ñ/Ô/ˆqr*   c                ó4  — t          | t          ¦  «        r| j        } t          | t          j        ¦  «        r| S t          | t          j        ¦  «        r!t          j        | ¦  «        }|r	|j        sJ ‚|S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)zé
    Returns `page` downcast to a mupdf.PdfPage. If downcast fails (i.e. `page`
    is not actually a `PdfPage`) then we assert-fail if `required` is true (the
    default) else return a `mupdf.PdfPage` with `.m_internal` false.
    Nr   rÐ   rÑ   )	r>   rÒ   rÄ   r�   rÓ   rÔ   Úpdf_page_from_fz_pagerÌ   rÈ   )rÖ   rÍ   rG   s      r)   Ú_as_pdf_pagerÚ      s¢   € õ �$�ÑÔð ØŒyˆÝ�$�œÑ&Ô&ð 
0ØˆÝ	�D�%œ,Ñ	'Ô	'ð 0ÝÔ)¨$Ñ/Ô/ˆØð 	"Ø”>Ð!Ð!�>Øˆ
Ø	ˆØ!�/Ñ!Ô!ˆqà/Ð/¥$ t¡*¤*Ð/Ð/Ñ/Ô/ˆqr*   c                óZ   — t          j        | ¦  «        }|j        st          d¦  «        ‚|S )a8  
    Wrapper for mupdf.pdf_annot_page() which raises an exception if <annot>
    is not bound to a page instead of returning a mupdf.PdfPage with
    `.m_internal=None`.

    [Some other MuPDF functions such as pdf_update_annot()` already raise a
    similar exception if a pdf_annot's .page field is null.]
    úAnnot is not bound to a page)r�   Úpdf_annot_pagerÌ   ÚRuntimeError)ÚannotrÖ   s     r)   Ú_pdf_annot_pagerà   5  s2   € õ Ô Ñ&Ô&€DØŒ?ð ;ÝÐ9Ñ:Ô:Ð:Ø€Kr*   )ÚAAÚFTÚFfÚDAÚOptÚTUÚIÚTMÚDVÚMaxLenÚQÚDSÚDRÚTIÚRVÚTÚVc                  ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dRd	„Z
dSd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdTd„Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ ZdUd„Zd„ Zd„ Zd„ ZdVd„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,„ Z+d-„ Z,d.„ Z-dWd/„Z.dXd0„Z/d1„ Z0dYd2„Z1d3„ Z2dZd4„Z3d5„ Z4d6„ Z5dRd7„Z6d8„ Z7d9„ Z8d:„ Z9d;„ Z:dRd<„Z;ed=„ ¦   «         Z<	 	 	 	 	 	 	 	 	 d[d\dN„Z=d]dO„Z>edP„ ¦   «         Z?edQ„ ¦   «         Z@dS )^ÚAnnotc                óL   — t          |t          j        ¦  «        sJ ‚|| _        d S r,   )r>   r�   ÚPdfAnnotrÄ   ©r(   rß   s     r)   rŒ   zAnnot.__init__a  s%   € Ý˜5¥%¤.Ñ1Ô1Ð1Ð1Ð1ØˆŒ	ˆ	ˆ	r*   c                ó*   — t          | j        ¦  «        S r,   )ÚboolrÄ   r.   s    r)   Ú__bool__zAnnot.__bool__e  s   € Ý�D”I‰ŒÐr*   c                óJ   — t          | dd¦  «        }d| j        d         › d|› �S )NÚparentz<>ú'r   z' annotation on )ÚgetattrrÈ   )r(   rû   s     r)   Ú__repr__zAnnot.__repr__h  s/   € Ý˜˜x¨Ñ.Ô.ˆØ9�4”9˜Q”<Ð9Ð9°Ð9Ð9Ð9r*   c                ó*   — |                       ¦   «         S r,   )rþ   r.   s    r)   Ú__str__zAnnot.__str__l  s   € Ø�}Š}‰ŒÐr*   c                ó:   — t          | dd¦  «        r	d| _        d S d S )NÚthisownF)rý   r  r.   s    r)   Ú_erasezAnnot._eraseo  s+   € Ý�4˜ EÑ*Ô*ð 	!Ø ˆDŒLˆLˆLð	!ð 	!r*   c                óš  — | j         }t          j        |¦  «        t          j        k    rd S t	          ¦   «         }	 t          j        t          j        |¦  «        d¦  «        }|j        r-t          d¦  «         t          j	        |¦  «        }||t          <   t          j        t          j        |¦  «        d¦  «        }|j        r,t          j        |¦  «        }t          |¦  «        |t          <   n
d|t          <   t          j        t          j        |¦  «        t          d¦  «        ¦  «        }d}|j        rt          j        |¦  «        }||t"          <   n&# t$          $ r t&          rt)          ¦   «          Y d S w xY w|}|s|S | j        |d<   t,                               | ¦  «        \  }}	}
||d<   |	|d	<   |
|d
<   | j        d         }||d<   |S )NÚROzIgnoring redaction key '/RO'.ÚOverlayTextr\   rë   r   ÚrectÚ
text_colorÚfontnameÚfontsizeÚfill)rÄ   r�   Úpdf_annot_typeÚPDF_ANNOT_REDACTr5   Úpdf_dict_getsÚpdf_annot_objrÌ   Úmessage_warningÚ
pdf_to_numÚdictkey_xrefÚpdf_to_text_stringÚJM_UnicodeFromStrÚdictkey_textÚpdf_dict_getÚPDF_NAMEÚ
pdf_to_intÚdictkey_alignrg   Úg_exceptions_verboserv   r  ÚTOOLSÚ	_parse_daÚcolors)r(   rß   ÚvaluesÚobjÚxrefr   ÚalignÚvalr  r	  r
  r  s               r)   Ú_get_redact_valueszAnnot._get_redact_valuess  sÊ  € Ø”	ˆÝÔ Ñ&Ô&­%Ô*@Ò@Ð@ØˆFå‘”ˆð	ÝÔ%¥eÔ&9¸%Ñ&@Ô&@À$ÑGÔGˆCØŒ~ð ,ÝÐ ?Ñ@Ô@Ð@ÝÔ'¨Ñ,Ô,�Ø'+�•|Ñ$ÝÔ%¥eÔ&9¸%Ñ&@Ô&@À-ÑPÔPˆCØŒ~ð *ÝÔ/°Ñ4Ô4�Ý'8¸Ñ'>Ô'>�•|Ñ$Ð$à')�•|Ñ$ÝÔ$¥UÔ%8¸Ñ%?Ô%?ÅÈ#ÁÄÑOÔOˆCØˆEØŒ~ð .ÝÔ(¨Ñ-Ô-�Ø$)ˆF•=Ñ!Ð!øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8ØˆFˆFð	øøøð ˆàð 	ØˆJØ”iˆˆF‰Ý).¯ª¸Ñ)>Ô)>Ñ&ˆ
�H˜hØ&ˆˆLÑØ"ˆˆJ‰Ø"ˆˆJ‰ØŒ{˜6Ô"ˆØˆˆF‰Øˆ
s   »DE ÅE9Å8E9c                ó  — t           rSt          | j        t          j        ¦  «        sJ ‚t          j        | j        ¦  «        }t          |t          ¦  «        sJ ‚|S d }d }| j        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          j	        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        }|r|j        rt          |¦  «        }|S )NÚAPÚN)Úg_use_extrar>   rÄ   r�   rõ   r   ÚAnnot_getAPÚbytesr  Úpdf_dict_getlr  Úpdf_is_streamÚpdf_load_streamrÌ   ÚJM_BinFromBuffer)r(   rG   ÚrÚresrß   Ú	annot_objÚaps          r)   Ú_getAPzAnnot._getAPš  sð   € Ýð 	Ý˜tœy­%¬.Ñ9Ô9Ð9Ð9Ð9ÝÔ# D¤IÑ.Ô.ˆCÝ˜s¥EÑ*Ô*Ð*Ð*Ð*ØˆJàˆAØˆCØ”IˆEÝ˜u¥e¤nÑ5Ô5Ð5Ð5Ð5ÝÔ+¨UÑ3Ô3ˆIÝÔ$ iµ¸$±´ÅÈ#ÁÄÑOÔOˆBÝÔ" BÑ'Ô'ð 1ÝÔ+¨RÑ0Ô0�Øð *�s”~ð *Ý$ SÑ)Ô)�ØˆHr*   r   c                óÂ  — 	 | j         }t          j        |¦  «        }t          |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        st          t          ¦  «        ‚t          j	        |¦  «        st          t          ¦  «        ‚t          |¦  «        }|j        st          t          ¦  «        ‚t          |                     ¦   «         ||d¦  «         |rGt          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        |¦  «         d S d S # t"          $ r t$          rt'          ¦   «          Y d S Y d S w xY w)Nr%  r&  r   ÚRectÚBBox)rÄ   r�   r  rà   r*  r  rÌ   rÞ   ÚMSG_BAD_APNr+  ÚJM_BufferFromBytesrÃ   ÚMSG_BAD_BUFFERÚJM_update_streamÚdocÚpdf_dict_get_rectÚpdf_dict_put_rectrg   r  rv   )	r(   Úbuffer_r  rß   r0  rÖ   Úapobjr/  Úbboxs	            r)   Ú_setAPzAnnot._setAP­  sX  € ð	9Ø”IˆEÝÔ+¨UÑ3Ô3ˆIÝ" 5Ñ)Ô)ˆDÝÔ'¨µH¸T±N´NÅHÈSÁMÄMÑRÔRˆEØÔ#ð 1Ý"¥KÑ0Ô0Ð0ÝÔ&¨Ñ.Ô.ð 1Ý"¥KÑ0Ô0Ð0Ý$ gÑ.Ô.ˆCØ”>ð 2Ý ¥.Ñ1Ô1Ð1Ý˜dŸhšh™jœj¨%°°aÑ8Ô8Ð8Øð HÝÔ.°	½8ÀFÑ;KÔ;KÑLÔL�ÝÔ'¨µ¸Ñ0@Ô0@À$ÑGÔGÐGÐGÐGðHð Høõ ð 	9ð 	9ð 	9Ý#Ð8­Ñ(8Ô(8Ð(8Ð(8Ð(8Ð(8Ð8Ð8Ð8ð	9øøøs   ‚D2D8 Ä8EÅEéÿÿÿÿNc                ó
  — | j         }|j        sJ ‚t          j        |¦  «        }t	          |¦  «        }|                     ¦   «         }t          j        |¦  «        }	t          |¦  «        \  }
}	 |
dk    s;|	t          j        t          j	        t          j
        t          j        t          j        fvr#t          j        |t          d¦  «        ¦  «         n#|
dk    rt          j        ||d |
…         ¦  «         |dk    rdnd}|	t          j        t          j	        t          j        t          j        t          j        t          j
        t          j        t          j        t          j        t          j        t          j        fvrd}|r#t          j        |t          d¦  «        |¦  «         |	t          j        k    r$|
dk    rt          j        ||d |
…         ¦  «         n}|
dk    rwt          j        |                     ¦   «         |
¦  «        }t3          |
¦  «        D ]}t          j        |||         ¦  «         Œt          j        |t          d¦  «        |¦  «         t          j        |¦  «         t          j        |¦  «         d|_        n:# t>          $ r-}t@          rtC          ¦   «          tE          d|› �¦  «         ‚ d }~ww xY w|dk     s|dk    r|sdS 	 t          j#        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        stI          tJ          ¦  «        ‚t          j&        |t          d	¦  «        ¦  «        }|j        s#t          j'        |t          d	¦  «        d
¦  «        }t          j(        |                     ¦   «         d¦  «        }|dk    ro|dk     rit          j)        |t          d¦  «        |¦  «         t          j)        |t          d¦  «        |¦  «         t          j)        |t          d¦  «        |¦  «         |rFt          j*        |t          d¦  «        |¦  «         t          j*        |t          d¦  «        |¦  «         t          j&        |t          d¦  «        ¦  «        }|j        s#t          j'        |t          d¦  «        d
¦  «        }t          j        |t          d¦  «        |¦  «         n:# t>          $ r-}t@          rtC          ¦   «          tE          d|› �¦  «         ‚ d }~ww xY wdS )Nr   ÚICr   ÚRotatezcannot update annot: Tr%  r&  Ú	Resourcesr   r   ÚCAÚcaÚBMÚ	ExtGStateÚHz#cannot set opacity or blend mode
: )+rÄ   rÌ   r�   r  rà   r:  r  ÚJM_color_FromSequenceÚPDF_ANNOT_SQUAREÚPDF_ANNOT_CIRCLEÚPDF_ANNOT_LINEÚPDF_ANNOT_POLY_LINEÚPDF_ANNOT_POLYGONÚpdf_dict_delr  Úpdf_set_annot_interior_colorÚPDF_ANNOT_CARETÚPDF_ANNOT_FREE_TEXTÚPDF_ANNOT_FILE_ATTACHMENTÚPDF_ANNOT_INKÚPDF_ANNOT_STAMPÚPDF_ANNOT_TEXTÚpdf_dict_put_intÚpdf_set_annot_colorÚpdf_new_arrayÚrangeÚpdf_array_push_realÚpdf_dict_putÚpdf_dirty_annotÚpdf_update_annotÚresynth_requiredrg   r  rv   rr   r*  rÞ   r6  r  Úpdf_dict_put_dictÚpdf_new_dictÚpdf_dict_put_realÚpdf_dict_put_name)r(   ÚopacityÚ
blend_modeÚ
fill_colorÚrotaterß   r0  rÖ   ÚpdfÚtype_ÚnfcolÚfcolÚ
insert_rotÚcolr®   Úer1  Ú	resourcesÚalp0Úextgs                       r)   Ú_update_appearancezAnnot._update_appearanceÁ  s®  € Ø”	ˆØÔÐÐÐÝÔ'¨Ñ/Ô/ˆ	Ý˜uÑ%Ô%ˆØ�hŠh‰jŒjˆÝÔ$ eÑ,Ô,ˆÝ+¨JÑ7Ô7‰ˆˆtð1	ð ˜Šzˆz˜UÝÔ*ÝÔ*ÝÔ(ÝÔ-ÝÔ+ð+ð ð õ Ô" I­x¸©~¬~Ñ>Ô>Ð>Ð>Ø˜’�ÝÔ2°E¸4ÀÀÀ¼<ÑHÔHÐHà$¨šk˜k˜˜¨qˆJØÝÔ)ÝÔ*ÝÔ-ÝÔ3ÝÔ'ÝÔ(ÝÔ-ÝÔ+ÝÔ*ÝÔ)ÝÔ(ðð ð ð �
àð NÝÔ& yµ(¸8Ñ2DÔ2DÀfÑMÔMÐMð �Ô1Ò1Ð1Ø˜1’9�9ÝÔ-¨e°T¸&¸5¸&´\ÑBÔBÐBøØ˜’�ÝÔ)¨$¯(ª(©*¬*°eÑ<Ô<�Ý ™œð <ð <�AÝÔ-¨c°4¸´7Ñ;Ô;Ð;Ð;ÝÔ" 9­h°t©n¬n¸cÑBÔBÐBÝÔ! %Ñ(Ô(Ð(ÝÔ" 5Ñ)Ô)Ð)Ø#$ˆCÔ Ð øÝð 	ð 	ð 	Ý#ð !ÝÑ Ô Ð ÝÐ0¨QÐ0Ð0Ñ1Ô1Ð1Øøøøøð		øøøð �aŠKˆK˜7 aš<˜<°˜<Ø�4ð 	ÝÔ$ÝÔ'¨Ñ.Ô.Ý˜T‘N”NÝ˜S‘M”Mñô ˆBð
 ”=ð 1Ý"¥KÑ0Ô0Ð0åÔ*¨Bµ¸Ñ0EÔ0EÑFÔFˆIØÔ'ð SÝ!Ô3°R½À+Ñ9NÔ9NÐPQÑRÔR�	åÔ% t§x¢x¡z¤z°1Ñ5Ô5ˆDØ˜!Š|ˆ| ¨!¢ ÝÔ'¨­x¸©~¬~¸wÑGÔGÐGÝÔ'¨­x¸©~¬~¸wÑGÔGÐGÝÔ'¨µH¸T±N´NÀGÑLÔLÐLàð PÝÔ'¨­x¸©~¬~¸zÑJÔJÐJÝÔ'¨µH¸T±N´NÀJÑOÔOÐOåÔ% yµ(¸;Ñ2GÔ2GÑHÔHˆDØ”?ð UÝÔ.°	½8ÀKÑ;PÔ;PÐRSÑTÔT�åÔ ¥h¨s¡m¤m°TÑ:Ô:Ð:Ð:øåð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8ÝÐ?¸AÐ?Ð?Ñ@Ô@Ð@Øøøøøð	øøøð
 ˆts2   Á/HJ Ê
J<Ê(J7Ê7J<ËG<S Ó
TÓ(S?Ó?Tc                ó  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        s1t          t          j        t          j        j	        ¦  «        ¦  «        }n1t          j
        |t          d¦  «        ¦  «        }t          |¦  «        }t          |¦  «        |                      ¦   «         j        z  }||                      ¦   «         j        z  }|S )zannotation appearance bboxr%  r&  r5  )ÚCheckParentrÄ   r�   r  r*  r  rÌ   ÚJM_py_from_rectÚFzRectÚFixed_INFINITEr;  r4  Ú
get_parentÚtransformation_matrixÚderotation_matrix)r(   rß   r0  r1  r"  r  s         r)   Úapn_bboxzAnnot.apn_bbox$  sÑ   € õ 	�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	(Ý!¥%¤,­u¬|Ô/JÑ"KÔ"KÑLÔLˆCˆCåÔ*¨2­x¸Ñ/?Ô/?Ñ@Ô@ˆDÝ! $Ñ'Ô'ˆCå�3‰iŒi˜$Ÿ/š/Ñ+Ô+ÔAÑAˆØˆt�ŠÑ Ô Ô2Ñ2ˆØˆ
r*   c                óô  — 	 t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          j        t          j        |¦  «        t          j        t          j        ¦  «        }|j	        s t          t          j        ¦   «         ¦  «        S t          j        |t          j        ¦  «        }t          |¦  «        }t          |¦  «        }|S # t          $ r t           rt#          ¦   «          ‚ w xY w)zannotation appearance matrix)rv  rÄ   r>   r�   rõ   r*  r  ÚPDF_ENUM_NAME_APÚPDF_ENUM_NAME_NrÌ   ÚJM_py_from_matrixÚFzMatrixÚpdf_dict_get_matrixÚPDF_ENUM_NAME_MatrixÚMatrixrg   r  rv   )r(   rß   r1  Úmatr"  s        r)   Ú
apn_matrixzAnnot.apn_matrix5  sã   € ð	Ý˜ÑÔÐØ”IˆEÝ˜e¥U¤^Ñ4Ô4Ð4Ð4Ð4ÝÔ$ÝÔ'¨Ñ.Ô.ÝÔ*ÝÔ)ñô ˆBð
 ”=ð ;Ý(­¬Ñ)9Ô)9Ñ:Ô:Ð:ÝÔ+¨BµÔ0JÑKÔKˆCÝ# CÑ(Ô(ˆCå˜‘+”+ˆCàˆJøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚BC Â>C Ã!C7c           
     óŠ  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }d}|j        r#t          t          j        |¦  «        ¦  «        }|S t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j
        |¦  «        rêt          j        |¦  «        }t          |¦  «        D ]Æ}t          j        ||¦  «        }t          j
        |¦  «        r›t          j        |¦  «        }t          |¦  «        D ]w}	t          j        ||	¦  «        }
t          j        |
t          d¦  «        ¦  «        dk    r:t          t          j        t          j        ||	¦  «        ¦  «        ¦  «        }|c c S ŒxŒÇ|S )zannotation BlendModerH  Nr%  r&  rE  rI  r   )rv  rÄ   r�   r  r  r  rÌ   r  Úpdf_to_namer*  Úpdf_is_dictÚpdf_dict_lenr\  Úpdf_dict_get_valÚpdf_dict_get_keyÚ
pdf_objcmp)r(   rß   r0  r  rg  rE   r®   Úobj1ÚmÚjÚobj2s              r)   Ú	blendmodezAnnot.blendmodeM  s§  € õ 	�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬NÑ;Ô;ˆØˆ
ØŒ>ð 	Ý*­5Ô+<¸SÑ+AÔ+AÑBÔBˆJØÐåÔ!ØÝ˜‘”Ý˜‘”Ý˜Ñ%Ô%Ý˜Ñ%Ô%ñô ˆõ Ô˜SÑ!Ô!ð 
	.ÝÔ" 3Ñ'Ô'ˆAÝ˜1‘X”Xð .ð .�ÝÔ-¨c°1Ñ5Ô5�ÝÔ$ TÑ*Ô*ð .ÝÔ*¨4Ñ0Ô0�AÝ" 1™XœXð .ð .˜Ý$Ô5°d¸AÑ>Ô>˜Ý Ô+¨Dµ(¸4±.´.ÑAÔAÀQÒFÐFÝ):½5Ô;LÍUÔMcÐdhÐjkÑMlÔMlÑ;mÔ;mÑ)nÔ)n˜JØ#-Ð-Ð-Ð-Ð-Ð-ð Gøð Ðr*   c                óL  — t          | ¦  «         | j        d         }|t          j        t          j        t          j        t          j        t          j        t          j        t          j	        fvrt          ¦   «         S t          j        | j        ¦  «        }t          |¦  «        }|S )zBorder information.r   )rv  rÈ   r�   rM  rT  rV  rN  rO  rP  rL  r5   r  rÄ   ÚJM_annot_border)r(   ÚatypeÚaorG   s       r)   ÚborderzAnnot.borderm  sˆ   € õ 	�DÑÔÐØ”	˜!”ˆØÝÔ&ÝÔ)ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ðð ð õ ‘6”6ˆMÝÔ  ¤Ñ+Ô+ˆÝ˜bÑ!Ô!ˆØˆ
r*   r   c                óÐ   — t          | ¦  «         | j        }t          j        t          j        |¦  «        ¦  «        }t          ddd|¬¦  «        }t          j        |||¦  «         dS )z!Clean appearance contents stream.r   r   )ÚrecurseÚinstance_formsÚasciiÚsanitizeN)rv  rÄ   r�   Úpdf_get_bound_documentr  Ú_make_PdfFilterOptionsÚpdf_filter_annot_contents)r(   r�  rß   rj  Úfilter_s        r)   Úclean_contentszAnnot.clean_contents€  sd   € å�DÑÔÐØ”	ˆÝÔ*­5Ô+>¸uÑ+EÔ+EÑFÔFˆÝ(°À1ÈAÐX`ÐaÑaÔaˆÝÔ'¨¨U°GÑ<Ô<Ð<Ð<Ð<r*   c                óò   — 	 t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          t          j        |¦  «        ¦  «        S # t          $ r t          rt          ¦   «          ‚ w xY w)zColor definitions.)
rv  rÄ   r>   r�   rõ   ÚJM_annot_colorsr  rg   r  rv   rö   s     r)   r  zAnnot.colorsˆ  s|   € ð	Ý˜ÑÔÐØ”IˆEÝ˜e¥U¤^Ñ4Ô4Ð4Ð4Ð4Ý"¥5Ô#6°uÑ#=Ô#=Ñ>Ô>Ð>øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚AA Á!A6c                ó  — t          | ¦  «         | j        }t          j        |¦  «        }t	          |¦  «        }	 t          |¦  «        }|snt          j        ||¦  «         Œ(t          j        |t          d¦  «        ¦  «         t          j	        | 
                    ¦   «         t          d¦  «        ¦  «        }t          j        |¦  «        }d}t          |dz
  dd¦  «        D ]m}t          j        ||¦  «        }	t          j	        |	t          d¦  «        ¦  «        }
|	j        sŒAt          j        |
|¦  «        st          j        ||¦  «         d}Œn|r7t          j        | 
                    ¦   «         t          d¦  «        |¦  «         dS dS )z*Delete 'Popup' and responding annotations.r   ÚPopupÚAnnotsr   rA  ÚParentN)rv  rÄ   r�   r  rà   ÚJM_find_annot_irtÚpdf_delete_annotrQ  r  r  r  Úpdf_array_lenr\  Úpdf_array_getrÌ   rŽ  Úpdf_array_deleter^  )r(   rß   r0  rÖ   Ú	irt_annotÚannotsrE   Úfoundr®   ÚoÚps              r)   Údelete_responseszAnnot.delete_responses”  sƒ  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	Ý˜uÑ%Ô%ˆð	4Ý)¨%Ñ0Ô0ˆIØð ØÝÔ" 4¨Ñ3Ô3Ð3ð		4õ
 	Ô˜9¥h¨wÑ&7Ô&7Ñ8Ô8Ð8åÔ# D§H¢H¡J¤Jµ¸Ñ0BÔ0BÑCÔCˆÝÔ Ñ'Ô'ˆØˆÝ�q˜‘s˜B Ñ#Ô#ð 	ð 	ˆAÝÔ# F¨AÑ.Ô.ˆAÝÔ" 1¥h¨xÑ&8Ô&8Ñ9Ô9ˆAØ”<ð ØÝÔ# A yÑ1Ô1ð ÝÔ& v¨qÑ1Ô1Ð1Ø�øØð 	GÝÔ˜tŸxšx™zœz­8°HÑ+=Ô+=¸vÑFÔFÐFÐFÐFð	Gð 	Gr*   c                óî  — t          | ¦  «         t          ¦   «         }d}d}d}| j        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        st          dt          ¦  «         t          j        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }n=t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j        |t          d	¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j	        |t          d
¦  «        t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t#          |¦  «        |t$          <   t'          |¦  «        |t(          <   ||t*          <   ||t,          <   |S )zAttached file information.rA  NÚFSÚEFÚFúbad PDF: file entry not foundÚUFÚDescÚLengthÚParamsÚSize)rv  r5   rÄ   r�   r  r  rU  Ú	TypeErrorÚMSG_BAD_ANNOT_TYPEr*  r  rÌ   ÚRAISEPYÚJM_Exc_FileDataErrorr  r  r  ÚJM_EscapeStrFromStrÚdictkey_filenamer  Údictkey_descrÚdictkey_lengthÚdictkey_size)r(   r/  ÚlengthÚsizeÚdescrß   r0  rk  r	   Úfsr±  rf   s               r)   Ú	file_infozAnnot.file_info¯  s   € õ 	�DÑÔÐÝ‰fŒfˆØˆØˆØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ$ UÑ+Ô+ˆØ•EÔ3Ò3Ð3ÝÕ/Ñ0Ô0Ð0ÝÔ$ØÝ˜‘”Ý˜‘”Ý˜‘”ñ	ô ˆð Ô ð 	LÝÐ4Õ6JÑKÔKÐKåÔ 	­8°D©>¬>Ñ:Ô:ˆåÔ˜r¥8¨D¡>¤>Ñ2Ô2ˆØŒ<ð 	7ÝÔ/°Ñ2Ô2ˆHˆHåÔ" 2¥x°¡}¤}Ñ5Ô5ˆAØŒ|ð 7Ý Ô3°AÑ6Ô6�åÔ˜r¥8¨FÑ#3Ô#3Ñ4Ô4ˆØŒ<ð 	/ÝÔ+¨AÑ.Ô.ˆDåÔ˜v¥x°Ñ'9Ô'9Ñ:Ô:ˆØŒ<ð 	)ÝÔ% aÑ(Ô(ˆFåÔ ­°Ñ(:Ô(:½HÀVÑ<LÔ<LÑMÔMˆØŒ<ð 	'ÝÔ# AÑ&Ô&ˆDå!4°XÑ!>Ô!>ˆÕÑÝ/°Ñ5Ô5ˆ�]ÑØ%ˆ�^ÑØ!ˆ�\ÑØˆ
r*   c                óV   — t          | ¦  «         | j        }t          j        |¦  «        S )zFlags field.)rv  rÄ   r�   Úpdf_annot_flagsrö   s     r)   ÚflagszAnnot.flagsá  s*   € õ 	�DÑÔÐØ”	ˆÝÔ$ UÑ+Ô+Ð+r*   c                óÄ  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j
        st          dt          ¦  «         t          j        |¦  «        }t          |¦  «        }|S )zRetrieve attached file content.rµ  r¶  r·  r¸  )rv  rÄ   r�   r  r  rU  r¾  r¿  r*  r  rÌ   rÀ  rÁ  r,  r-  )r(   rß   r0  rÈ   r	   Úbufr/  s          r)   Úget_filezAnnot.get_fileè  sÀ   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ# EÑ*Ô*ˆØ•5Ô2Ò2Ð2ÝÕ/Ñ0Ô0Ð0ÝÔ$ Yµ¸±´ÅÈÁÄÕPXÐY\ÑP]ÔP]Ñ^Ô^ˆØÔ ð 	LÝÐ4Õ6JÑKÔKÐKÝÔ# FÑ+Ô+ˆÝ˜sÑ#Ô#ˆØˆ
r*   c                óØ   — t          | ¦  «         d}| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|S )z*Get annotation optional content reference.r   ÚOC©rv  rÄ   r�   r  r  r  rÌ   r  )r(   Úocrß   r0  r  s        r)   Úget_oczAnnot.get_oc÷  sc   € å�DÑÔÐØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬NÑ;Ô;ˆØŒ>ð 	'ÝÔ! #Ñ&Ô&ˆBØˆ	r*   c                ó,  — 	 t          | d¦  «        }n�# t          $ rt t          | j        ¦  «        }t	          |t
          j        ¦  «        sJ ‚|j        r!t          | 	                    ¦   «         ¦  «        nd }t          ||¦  «        }|| _        Y nw xY w|S )Nrû   )rý   ÚAttributeErrorrà   rÄ   r>   r�   rÓ   rÌ   rÁ   r:  rÒ   rû   )r(   rG   rÖ   rÉ   s       r)   rz  zAnnot.get_parent  sœ   € ð	Ý˜4 Ñ*Ô*ˆCˆCøÝð 	ð 	ð 	Ý" 4¤9Ñ-Ô-ˆDÝ˜t¥U¤]Ñ3Ô3Ð3Ð3Ð3Ø04´ÐI•x §¢¡¤Ñ,Ô,Ð,ÀTˆHÝ�t˜XÑ&Ô&ˆCàˆDŒKˆKˆKð	øøøð ˆ
s   ‚ “A;BÂBc                óò  — t          | ¦  «         t          t          t          dœ}t	          |¦  «        t
          u r(|                     |                     ¦   «         d¦  «        }|rt          |dz  |dz  ¦  «        }t          |¦  «        }|}|st          j        ¦   «         }t          j        | j        ||t          j        d¦  «        |¦  «        }t          |¦  «        }	|r|	                     ||¦  «         |	S )zannotation Pixmap)ÚgrayÚrgbÚcmykNéH   r   )rv  ÚcsGRAYÚcsRGBÚcsCMYKrÈ   Ústrr8   Úlowerr…  ÚJM_matrix_from_pyr�   Úfz_device_rgbÚpdf_new_pixmap_from_annotrÄ   ÚFzSeparationsÚPixmapÚset_dpi)
r(   ÚmatrixÚdpiÚ
colorspaceÚalphaÚcspacesÚctmÚcsÚpixrG   s
             r)   Ú
get_pixmapzAnnot.get_pixmap  sí   € õ 	�DÑÔÐÝ!­%½Ð@Ð@ˆÝ�
ÑÔ�sÐ"Ð"Ø Ÿš Z×%5Ò%5Ñ%7Ô%7¸Ñ>Ô>ˆJØð 	0Ý˜C "™H c¨B¡hÑ/Ô/ˆFÝ Ñ'Ô'ˆØˆØð 	'ÝÔ$Ñ&Ô&ˆBåÔ-¨d¬i¸¸bÅ%ÔBUÐVWÑBXÔBXÐZ_Ñ`Ô`ˆÝ�S‰kŒkˆØð 	"Ø�KŠK˜˜SÑ!Ô!Ð!Øˆ
r*   c                óf  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|t          j        k    s|j        st          t          ¦  «        ‚t          j        |t          d¦  «        ¦  «        j        rt          dt          ¦  «         t          ¦   «         }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d	<   t          j        |t          d
¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |d¦  «        }|j        rt          j        |¦  «        |d<   t          j        |¦  «        }t'          |¦  «        }||d<   |S )zRetrieve sound stream.ÚSoundr·  zunsupported sound streamÚRÚrateÚCÚchannelsÚBÚbpsÚEÚencodingÚCOÚcompressionr	   )rv  rÄ   r�   r  r  r  r  ÚPDF_ANNOT_SOUNDrÌ   r¾  r¿  rÀ  rÁ  r5   Úpdf_to_realr  r‰  r  r,  r-  )	r(   rß   r0  rÈ   Úsoundr/  r  rÐ  r	   s	            r)   Ú	get_soundzAnnot.get_sound'  sä  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ# EÑ*Ô*ˆÝÔ" 9­h°wÑ.?Ô.?Ñ@Ô@ˆØ•5Ô(Ò(Ð(°Ô0@Ð(ÝÕ/Ñ0Ô0Ð0ÝÔ˜e¥X¨c¡]¤]Ñ3Ô3Ô>ð 	GÝÐ/Õ1EÑFÔFÐFÝ‰fŒfˆÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	1ÝÔ+¨CÑ0Ô0ˆC�‰KÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	4Ý#Ô.¨sÑ3Ô3ˆC�
‰OÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	/ÝÔ)¨#Ñ.Ô.ˆC�‰JÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	5Ý#Ô/°Ñ4Ô4ˆC�
‰OÝÔ! %¨Ñ.Ô.ˆØŒ>ð 	8Ý!&Ô!2°3Ñ!7Ô!7ˆC�ÑÝÔ# EÑ*Ô*ˆÝ! #Ñ&Ô&ˆØˆˆH‰Øˆ
r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   ©ÚutilsÚget_text©r(   ÚargsÚkwargss      r)   r  zAnnot.get_textG  ó"   € ÝŒ~˜dÐ4 TÐ4Ð4Ð4¨VÐ4Ð4Ð4r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )r  Úget_textboxr  s      r)   r  zAnnot.get_textboxJ  s#   € ÝÔ  Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7r*   c                ó  — t          | ¦  «         t          j        |¦  «        }|rjt          t          d¦  «        sJ dt          › d�¦   «         ‚t          |¦  «        }|                     ¦   «         |_        |xj        t          j	        z  c_        | j
        }t          j        ||¦  «        }t          |¦  «        }|                      ¦   «         }t          |t          j        ¦  «        r||_        nt          j        |¦  «        |_        |S )zMake annotation TextPage.ÚFZ_STEXT_CLIP_RECTzMuPDF-z% does not support FZ_STEXT_CLIP_RECT.)rv  r�   ÚFzStextOptionsr;   Úmupdf_versionÚJM_rect_from_pyÚinternalÚcliprÎ  r  rÄ   ÚFzStextPageÚTextPagerz  r>   ÚweakrefÚ	ProxyTyperû   Úproxy)	r(   r  rÎ  ÚoptionsÚclip2rß   Ú	stextpagerG   r²  s	            r)   Úget_textpagezAnnot.get_textpageM  sí   € å�DÑÔÐÝÔ& uÑ-Ô-ˆØð 	6Ý�5Ð"6Ñ7Ô7ÐvÐvÐ9vÅ-Ð9vÐ9vÐ9vÑvÔvÐ7Ý# DÑ)Ô)ˆEØ Ÿ>š>Ñ+Ô+ˆGŒLØˆMŒM�UÔ5Ñ5ˆMŒMØ”	ˆÝÔ% e¨WÑ5Ô5ˆ	Ý�yÑ!Ô!ˆØ�OŠOÑÔˆÝ�a�Ô*Ñ+Ô+ð 	*ØˆCŒJˆJå œ qÑ)Ô)ˆCŒJØˆ
r*   c                ó¬   — t          | ¦  «         | j        }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        rdndS )z Check if annotation has a Popup.r¦  TF)rv  rÄ   r�   r  r  r  rÌ   )r(   rß   r  s      r)   Ú	has_popupzAnnot.has_popup`  sO   € õ 	�DÑÔÐØ”	ˆÝÔ ¥Ô!4°UÑ!;Ô!;½XÀgÑ=NÔ=NÑOÔOˆØ”~Ð0ˆtˆt¨5Ð0r*   c                ó”  — t          | ¦  «         | j        }t          ¦   «         }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j
        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        d¦  «        }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j        |¦  «        ¦  «        |t           <   t	          j        t	          j        |¦  «        d¦  «        }t	          j        |¦  «        |t"          <   t	          j        t	          j        |¦  «        d¦  «        }t          t	          j        |¦  «        ¦  «        |t$          <   |S )zVarious information details.ÚNamerð   ÚCreationDateÚMÚSubjÚNM)rv  rÄ   r5   r  r�   Úpdf_annot_contentsÚdictkey_contentr  r  r  r‰  Údictkey_namer  Údictkey_titler  Údictkey_creationDateÚdictkey_modDateÚdictkey_subjectÚ
dictkey_id)r(   rß   r/  r±  s       r)   Úinfoz
Annot.infoh  s¶  € õ 	�DÑÔÐØ”	ˆÝ‰fŒfˆå0µÔ1IÈ%Ñ1PÔ1PÑQÔQˆ�OÑåÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÑLÔLˆÝ-­eÔ.?ÀÑ.BÔ.BÑCÔCˆ�LÑõ Ô�uÔ2°5Ñ9Ô9½8ÀC¹=¼=ÑIÔIˆÝ.­uÔ/GÈÑ/JÔ/JÑKÔKˆ�MÑõ Ô¥Ô 3°EÑ :Ô :¸NÑKÔKˆÝ$5µeÔ6NÈqÑ6QÔ6QÑ$RÔ$RˆÕ Ñ!õ Ô�uÔ2°5Ñ9Ô9½8ÀC¹=¼=ÑIÔIˆÝ0µÔ1IÈ!Ñ1LÔ1LÑMÔMˆ�OÑõ Ô¥Ô 3°EÑ :Ô :¸FÑCÔCˆÝ$Ô7¸Ñ:Ô:ˆ�OÑõ Ô¥Ô 3°EÑ :Ô :¸DÑAÔAˆÝ+­EÔ,DÀQÑ,GÔ,GÑHÔHˆ�J‰àˆ
r*   c                ó¶   — | j         }t          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        S )z%
        annotation IRT xref
        ÚIRTr   )rÄ   r�   r  r  r  rÌ   r  )r(   rß   r0  Úirts       r)   Úirt_xrefzAnnot.irt_xrefŠ  sS   € ð
 ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ  )­X°e©_¬_Ñ=Ô=ˆØŒ~ð 	Ø�1ÝÔ Ñ%Ô%Ð%r*   c                óR   — t          | ¦  «         t          j        | j        ¦  «        S )z-Get 'open' status of annotation or its Popup.)rv  r�   Úpdf_annot_is_openrÄ   r.   s    r)   Úis_openzAnnot.is_open–  s%   € õ 	�DÑÔÐÝÔ& t¤yÑ1Ô1Ð1r*   c                ó²   — | j         }t          j        |¦  «        }|t          j        k    rdS t	          t          d¦  «        sJ ‚t          j        |¦  «        S )zannotation languageNÚfz_string_from_text_language2)rÄ   r�   Úpdf_annot_languageÚFZ_LANG_UNSETr;   r5  )r(   Ú
this_annotÚlangs      r)   ÚlanguagezAnnot.languageœ  sV   € ð ”Yˆ
ÝÔ'¨
Ñ3Ô3ˆØ•5Ô&Ò&Ð&ØˆFÝ•uÐ=Ñ>Ô>Ð>Ð>Ð>ÝÔ2°4Ñ8Ô8Ð8r*   c                ó²   — t          | ¦  «         | j        }t          j        |¦  «        sdS t          j        |¦  «        }t          j        |¦  «        }||fS )zLine end codes.N)rv  rÄ   r�   Ú pdf_annot_has_line_ending_stylesÚpdf_annot_line_start_styleÚpdf_annot_line_end_style)r(   rß   ÚlstartÚlends       r)   Ú	line_endszAnnot.line_ends¦  s[   € õ 	�DÑÔÐØ”	ˆåÔ5°eÑ<Ô<ð 	ØˆFÝÔ1°%Ñ8Ô8ˆÝÔ-¨eÑ4Ô4ˆØ�tˆ|Ðr*   c                óÔ  — t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚|j        sJ ‚t          j        |¦  «        }|t          j        k    rt          j        |¦  «        }nt          j	        |¦  «        }|j        rt          |¦  «        nd}|sdS d|_        |                     ¦   «         j                             ¦   «         |                      ¦   «         j                             ¦   «         k    sJ ‚||j        j        t!          |¦  «        <   |j        d         t          j        k    r+t%          ¦   «         }t&                               ||¦  «         |}|S )zNext annotation.NTr   )rv  rÄ   r>   r�   rõ   rÌ   r  ÚPDF_ANNOT_WIDGETÚpdf_next_annotÚpdf_next_widgetró   r  rz  Úm_internal_valuerû   Ú_annot_refsÚidrÈ   ÚWidgetr  Ú_fill_widget)r(   r8  rk  rß   r"  Úwidgets         r)   Únextz
Annot.next²  s@  € õ 	�DÑÔÐØ”Yˆ
Ý˜*¥e¤nÑ5Ô5Ð5Ð5Ð5ØÔ$Ð$Ð$Ð$ÝÔ$ ZÑ0Ô0ˆØ•EÔ*Ò*Ð*ÝÔ(¨Ñ4Ô4ˆEˆEåÔ)¨*Ñ5Ô5ˆEà#Ô.Ð8�e�E‰lŒlˆl°DˆØð 	Ø�4ØˆŒØ�~Š~ÑÔÔ$×5Ò5Ñ7Ô7¸4¿?º?Ñ;LÔ;LÔ;Q×;bÒ;bÑ;dÔ;dÒdÐdÐdÐdØ*-ˆŒ
Ô�r #™wœwÑ'àŒ8�AŒ;�%Ô0Ò0Ð0Ý‘X”XˆFÝ×Ò˜s FÑ+Ô+Ð+ØˆCØˆ
r*   c                óè   — t          | ¦  «         | j        }d}t          j        t          j        |¦  «        t          j        ¦  «        }t          j        |¦  «        rt          j        |¦  «        }|S )zOpacity.rA  )rv  rÄ   r�   r  r  ÚPDF_ENUM_NAME_CAÚpdf_is_numberrÿ  )r(   rß   ÚopyrG  s       r)   rf  zAnnot.opacityÌ  sf   € õ 	�DÑÔÐØ”	ˆØˆÝÔ¥Ô!4°UÑ!;Ô!;½UÔ=SÑTÔTˆÝÔ˜rÑ"Ô"ð 	(ÝÔ# BÑ'Ô'ˆCØˆ
r*   c                óÞ  — t          | ¦  «         t          j        t          j        j        ¦  «        }| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        r"t          j	        |t          d¦  «        ¦  «        }t          |¦  «        }t          |¦  «        |                      ¦   «         j        z  }||                      ¦   «         j        z  }|S )zannotation 'Popup' rectangler¦  r4  )rv  r�   rx  ry  rÄ   r  r  r  rÌ   r;  rw  r4  rz  r{  r|  )r(   r  rß   r0  r  r"  s         r)   Ú
popup_rectzAnnot.popup_rect×  sÄ   € õ 	�DÑÔÐÝŒ|�EœLÔ7Ñ8Ô8ˆØ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ  )­X°gÑ->Ô->Ñ?Ô?ˆØŒ>ð 	BÝÔ*¨3µ¸Ñ0@Ô0@ÑAÔAˆDå˜dÑ#Ô#ˆõ �3‰iŒi˜$Ÿ/š/Ñ+Ô+ÔAÑAˆØˆt�ŠÑ Ô Ô2Ñ2ˆàˆ
r*   c                óØ   — t          | ¦  «         d}| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|S )zannotation 'Popup' xrefr   r¦  rÔ  )r(   r   rß   r0  r  s        r)   Ú
popup_xrefzAnnot.popup_xrefê  sg   € õ 	�DÑÔÐØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°WÑ,=Ô,=Ñ>Ô>ˆØŒ>ð 	)ÝÔ# CÑ(Ô(ˆDØˆr*   c                óÔ   — t           rt          j        | j        ¦  «        }nt	          j        | j        ¦  «        }t          |¦  «        }|                      ¦   «         }||j        z  }|S )zannotation rectangle)	r'  r   ÚAnnot_rect3rÄ   r�   Úpdf_bound_annotr4  rz  r|  )r(   r"  r²  s      r)   r  z
Annot.rectö  sb   € õ ð 	3ÝÔ# T¤YÑ/Ô/ˆCˆCåÔ'¨¬	Ñ2Ô2ˆCÝ�3‰iŒiˆð �OŠOÑÔˆð 	ˆqÔ"Ñ"ˆØˆ
r*   c           	     óä  — t          j        | j        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        dk    rœt          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «         t          j        t          j        |d¦  «        ¦  «         fS dS )z6
        annotation delta values to rectangle
        ÚRDé   r   r   r   r   N)r�   r  rÄ   r  r  r«  rÿ  r¬  )r(   r0  Úarrs      r)   Ú
rect_deltazAnnot.rect_delta
  sÈ   € õ
 Ô'¨¬	Ñ2Ô2ˆ	ÝÔ  )­X°d©^¬^Ñ<Ô<ˆÝÔ Ñ$Ô$¨Ò)Ð)åÔ%¥uÔ':¸CÀÑ'CÔ'CÑDÔDÝÔ%¥uÔ':¸CÀÑ'CÔ'CÑDÔDÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔEÐEÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔEÐEð	ð ð *Ð)r*   c                óÊ   — t          | ¦  «         | j        }t          j        t          j        |¦  «        t          j        ¦  «        }|j        sdS t          j        |¦  «        S )zannotation rotationrA  )rv  rÄ   r�   r  r  ÚPDF_ENUM_NAME_RotaterÌ   r  )r(   rß   Úrotations      r)   r_  zAnnot.rotation  sZ   € õ 	�DÑÔÐØ”	ˆÝÔ%¥uÔ':¸5Ñ'AÔ'AÅ5ÔC]Ñ^Ô^ˆØÔ"ð 	Ø�2ÝÔ Ñ*Ô*Ð*r*   c                óª  — t          | ¦  «         |                      ¦   «         }|j        }|j        }||| z  z  }| j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j	        st          t          ¦  «        ‚t          |¦  «        }t          j        |t          d¦  «        |¦  «         dS )z1
        Set annotation appearance bbox.
        r%  r&  r5  N)rv  rz  Úrotation_matrixr{  rÄ   r�   r  r*  r  rÌ   rÞ   r6  r  r<  )	r(   r?  rÖ   Úrotr†  rß   r0  r1  r  s	            r)   Úset_apn_bboxzAnnot.set_apn_bbox#  sÀ   € õ 	�DÑÔÐØ�ŠÑ Ô ˆØÔ"ˆØÔ(ˆØ��s�d‘
ÑˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	-Ý¥Ñ,Ô,Ð,Ý˜tÑ$Ô$ˆÝÔ ¥H¨VÑ$4Ô$4°dÑ;Ô;Ð;Ð;Ð;r*   c                óT  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        st          t          ¦  «        ‚t          |¦  «        }t          j
        |t          d¦  «        |¦  «         dS )z!Set annotation appearance matrix.r%  r&  r…  N)rv  rÄ   r�   r  r*  r  rÌ   rÞ   r6  rã  Úpdf_dict_put_matrix)r(   ré  rß   r0  r1  r†  s         r)   Úset_apn_matrixzAnnot.set_apn_matrix4  s�   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	-Ý¥Ñ,Ô,Ð,Ý Ñ'Ô'ˆÝÔ! "¥h¨xÑ&8Ô&8¸#Ñ>Ô>Ð>Ð>Ð>r*   c                ó    — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        |¦  «         dS )zSet annotation BlendMode.rH  N©rv  rÄ   r�   r  re  r  )r(   rg  rß   r0  s       r)   Úset_blendmodezAnnot.set_blendmode?  sH   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ 	­8°D©>¬>¸:ÑFÔFÐFÐFÐFr*   c                óî  — t          | ¦  «         | j        dd…         \  }}|t          j        t          j        t          j        t          j        t          j        t          j        t          j	        fvrt          d|› d�¦  «         dS |t          j        t          j        t          j        t          j	        fvr|dk    rt          d|› d�¦  «         d}t          |¦  «        t          ur||||dœ}|                     d	d¦  «         |                     d
d¦  «         |                     dd¦  «         |                     dd¦  «         |d	         €d|d	<   |d         €d|d<   t          |d         d¦  «        r?t          |d         ¦  «        |d<   |d         D ]}t          |t           ¦  «        sd|d<    nŒ| j        }	t          j        |	¦  «        }
t          j        |
¦  «        }t)          |||
¦  «        S )zbSet border properties.

        Either a dict, or direct arguments width, style, dashes or clouds.Nr   zCannot set border for 'ú'.r   zCannot set cloudy border for 'rA  )ÚwidthÚstyleÚdashesÚcloudsrl  rm  rn  ro  Ú__getitem__)rv  rÈ   r�   rM  rT  rV  rN  rO  rP  rL  rr   r5   Ú
setdefaultr;   rµ   r>   r4   rÄ   r  rž  ÚJM_annot_set_border)r(   r˜  rl  rm  rn  ro  r–  ÚatnamerC   rß   r0  rj  s               r)   Ú
set_borderzAnnot.set_borderF  s  € õ 	�DÑÔÐØœ	 " 1 "œ‰ˆˆvØÝÔ&ÝÔ)ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ðð ð õ Ð8¨fÐ8Ð8Ð8Ñ9Ô9Ð9Ø�4ØÝÔ&ÝÔ)ÝÔ'ÝÔ&ð	ð ð ð ˜ŠzˆzÝÐC¸ÐCÐCÐCÑDÔDÐDØ�Ý�‰<Œ<�tÐ#Ð#Ø$¨uÀÐRXÐYÐYˆFØ×Ò˜' 2Ñ&Ô&Ð&Ø×Ò˜' 4Ñ(Ô(Ð(Ø×Ò˜( DÑ)Ô)Ð)Ø×Ò˜( BÑ'Ô'Ð'Ø�'Œ?Ð"Ø ˆF�7‰OØ�(ÔÐ#Ø!ˆF�8ÑÝ�6˜(Ô# ]Ñ3Ô3ð 	Ý$ V¨HÔ%5Ñ6Ô6ˆF�8ÑØ˜xÔ(ð ð �Ý! $­Ñ,Ô,ð Ø'+�F˜8Ñ$Ø�Eðð ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ*¨IÑ6Ô6ˆÝ" F¨C°Ñ;Ô;Ð;r*   c                ó|  — | j         d         t          j        k    rt          d¦  «        ‚t	          | ¦  «         |                      ¦   «         j        }t          |¦  «        t          ur||dœ}|                     d¦  «        }|                     d¦  «        }t          j	        t          j
        t          j        t          j        t          j        t          j        f}|g dfv r|                     | j        dd¦  «         ns|�qt#          |d
¦  «        rt%          |¦  «        g}t'          |¦  «         t)          |¦  «        dv sJ ‚dt+          |¦  «        › d�}|                     | j        d|¦  «         |r/| j         d         |vr t-          d| j         d         › d�¦  «         d	S |g dfv r|                     | j        dd¦  «         d	S |�st#          |d
¦  «        rt%          |¦  «        g}t'          |¦  «         t)          |¦  «        dv sJ ‚dt+          |¦  «        › d�}|                     | j        d|¦  «         d	S d	S )z\Set 'stroke' and 'fill' colors.

        Use either a dict or the direct arguments.
        r   z'cannot be used for FreeText annotations©r  Ústroker  rw  r-   rö  ú[]NÚ	__float__©r   r   rZ  ú[ú]z,Warning: fill color ignored for annot type 'r   rk  rC  )rÈ   r�   rT  rÃ   rv  rz  rû   r5   r8   rM  rL  rN  rO  rP  r  Úxref_set_keyr   r;   ÚfloatÚ
CheckColorr7   r¶   rr   )r(   r  rw  r  r:  Úfill_annotsÚss          r)   Ú
set_colorszAnnot.set_colorsu  sR  € ð
 Œ9�QŒ<�5Ô4Ò4Ð4ÝÐFÑGÔGÐGå�DÑÔÐØ�oŠoÑÔÔ&ˆÝ�‰<Œ<�tÐ#Ð#Ø"¨fÐ5Ð5ˆFØ�zŠz˜&Ñ!Ô!ˆØ—’˜HÑ%Ô%ˆåÔ-­uÔ/EÅuÔG[Õ]bÔ]vÕx}ô  yPÝÔ-ð0ˆð �b˜"�XÐÐØ×Ò˜TœY¨¨TÑ2Ô2Ð2Ð2ØÐÝ�v˜{Ñ+Ô+ð )Ý ™-œ-˜�Ý�vÑÔÐÝ�v‘;”; )Ð+Ð+Ð+Ð+Ø(•I˜fÑ%Ô%Ð(Ð(Ð(ˆAØ×Ò˜TœY¨¨QÑ/Ô/Ð/àð 	�D”I˜a”L¨Ð3Ð3ÝÐSÀ4Ä9ÈQÄ<ÐSÐSÐSÑTÔTÐTØˆFØ�B˜�8ÐÐØ×Ò˜TœY¨¨dÑ3Ô3Ð3Ð3Ð3ØÐÝ�t˜[Ñ)Ô)ð %Ý˜d™œ�}�Ý�tÑÔÐÝ�t‘9”9 	Ð)Ð)Ð)Ð)Ø&•I˜d‘O”OÐ&Ð&Ð&ˆAØ×Ò˜TœY¨¨aÑ0Ô0Ð0Ð0Ð0ð Ðr*   c                ó\   — t          | ¦  «         | j        }t          j        ||¦  «         dS )zSet annotation flags.N)rv  rÄ   r�   Úpdf_set_annot_flags)r(   rÎ  rß   s      r)   Ú	set_flagszAnnot.set_flagsž  s0   € å�DÑÔÐØ”	ˆÝÔ! %¨Ñ/Ô/Ð/Ð/Ð/r*   c                ó"  — t          | ¦  «         t          |¦  «        t          u rp|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }d}| j        }t          j        |¦  «        }|rt          j        ||¦  «         |rÃ|rt          j        ||¦  «         |r5t          j	        t          j
        |¦  «        t          d¦  «        |¦  «         |r5t          j	        t          j
        |¦  «        t          d¦  «        |¦  «         |r>t          j        t          j
        |¦  «        d	t          j        |¦  «        ¦  «         dS dS dS )
zSet various properties.ÚcontentNÚtitleÚcreationDateÚmodDateÚsubjectr   r!  r"  )rv  rÈ   r5   r8   rÄ   r�   Úpdf_annot_has_authorÚpdf_set_annot_contentsÚpdf_set_annot_authorÚpdf_dict_put_text_stringr  r  Úpdf_dict_putsÚpdf_new_text_string)	r(   r,  r‡  rˆ  r‰  rŠ  r‹  rß   Ú	is_markups	            r)   Úset_infozAnnot.set_info¤  s’  € å�DÑÔÐÝ�‰:Œ:�ÐÐØ—h’h˜y¨$Ñ/Ô/ˆGØ—H’H˜W dÑ+Ô+ˆEØŸ8š8 N°DÑ9Ô9ˆLØ—h’h˜y¨$Ñ/Ô/ˆGØ—h’h˜y¨$Ñ/Ô/ˆGØˆDØ”	ˆåÔ.¨uÑ5Ô5ˆ	àð 	9ÝÔ(¨°Ñ8Ô8Ð8Øð 	làð 9ÝÔ*¨5°%Ñ8Ô8Ð8àð sÝÔ.­uÔ/BÀ5Ñ/IÔ/IÍ8ÐTbÑKcÔKcÐeqÑrÔrÐràð cÝÔ.­uÔ/BÀ5Ñ/IÔ/IÍ8ÐTWÉ=Ì=ÐZaÑbÔbÐbàð lÝÔ#¥EÔ$7¸Ñ$>Ô$>ÀÍÔHaÐbiÑHjÔHjÑkÔkÐkÐkÐkð	lð 	lðlð lr*   c                ó<  — | j         }t          j        |¦  «        }t          |¦  «        }|dk     s*|t          j        |                     ¦   «         ¦  «        k    rt          t          ¦  «        ‚t          j        |                     ¦   «         |d¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        t          j        |¦  «        ¦  «        }|dk     rt          t          ¦  «        ‚t          j        |t          d¦  «        |¦  «         dS )z)
        Set annotation IRT xref
        r   r   ÚSubtyper.  N)rÄ   r�   r  rà   Úpdf_xref_lenr:  rÃ   ÚMSG_BAD_XREFÚpdf_new_indirectr  r  Úpdf_annot_type_from_stringr‰  ÚMSG_IS_NO_ANNOTr^  )r(   r   rß   r0  rÖ   r/  ÚsubtÚirt_subts           r)   Úset_irt_xrefzAnnot.set_irt_xrefÂ  så   € ð ”	ˆÝÔ'¨Ñ/Ô/ˆ	Ý˜uÑ%Ô%ˆØ�!Š8ˆ8�t�uÔ1°4·8²8±:´:Ñ>Ô>Ò>Ð>Ý�lÑ+Ô+Ð+ÝÔ$ d§h¢h¡j¤j°$¸Ñ:Ô:ˆÝÔ! 3­°Ñ(;Ô(;Ñ<Ô<ˆÝÔ3µUÔ5FÈÑ5MÔ5MÑNÔNˆØ�aŠ<ˆ<Ý�oÑ.Ô.Ð.ÝÔ˜I¥x°¡¤¸Ñ<Ô<Ð<Ð<Ð<r*   c                ó¢   — t          | ¦  «         | j        }|st          j        }nt          j        |¦  «        }t          j        ||¦  «         dS )zSet annotation language.N)rv  rÄ   r�   r7  Úfz_text_language_from_stringÚpdf_set_annot_language)r(   r:  r8  r9  s       r)   Úset_languagezAnnot.set_languageÒ  sS   € å�DÑÔÐØ”Yˆ
Øð 	@ÝÔ&ˆDˆDåÔ5°hÑ?Ô?ˆDÝÔ$ Z°Ñ6Ô6Ð6Ð6Ð6r*   c                ó¨   — t          | ¦  «         | j        }t          j        |¦  «        rt          j        |||¦  «         dS t          d¦  «         dS )zSet line end codes.zbad annot type for line endsN)rv  rÄ   r�   r<  Ú pdf_set_annot_line_ending_stylesr  )r(   ÚstartÚendrß   s       r)   Úset_line_endszAnnot.set_line_endsÜ  sZ   € å�DÑÔÐØ”	ˆÝÔ1°%Ñ8Ô8ð 	<ÝÔ2°5¸%ÀÑEÔEÐEÐEÐEåÐ:Ñ;Ô;Ð;Ð;Ð;r*   c                ó    — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        |¦  «         dS )zSet /Name (icon) of annotation.r  Nrh  )r(   r   rß   r0  s       r)   Úset_namezAnnot.set_nameå  sJ   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ 	­8°FÑ+;Ô+;¸TÑBÔBÐBÐBÐBr*   c                óì   — t          | ¦  «         | j        }t          j        |¦  «        }|s$t          j        |t          d¦  «        ¦  «         dS t          t          j        |¦  «        ||¦  «         dS )z Set / remove annotation OC xref.rÓ  N)rv  rÄ   r�   r  rQ  r  ÚJM_add_oc_objectrž  )r(   rÕ  rß   r0  s       r)   Úset_oczAnnot.set_ocì  ss   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	Øð 	UÝÔ˜y­(°4©.¬.Ñ9Ô9Ð9Ð9Ð9å�UÔ9¸)ÑDÔDÀiÐQSÑTÔTÐTÐTÐTr*   c                óè   — t          | ¦  «         | j        }t          |dd¦  «        st          j        |d¦  «         dS t          j        ||¦  «         |dk     rt          |¦  «        }d|_        dS dS )zSet opacity.ç        ç      ð?r   N)rv  rÄ   Ú_INRANGEr�   Úpdf_set_annot_opacityrà   Útransparency)r(   rf  rß   rÖ   s       r)   Úset_opacityzAnnot.set_opacityö  s�   € å�DÑÔÐØ”	ˆÝ˜  cÑ*Ô*ð 	ÝÔ'¨¨qÑ1Ô1Ð1ØˆFÝÔ# E¨7Ñ3Ô3Ð3Ø�SŠ=ˆ=Ý" 5Ñ)Ô)ˆDØ !ˆDÔÐÐð ˆ=r*   c                ó\   — t          | ¦  «         | j        }t          j        ||¦  «         dS )z-Set 'open' status of annotation or its Popup.N)rv  rÄ   r�   Úpdf_set_annot_is_open)r(   r3  rß   s      r)   Úset_openzAnnot.set_open  s0   € å�DÑÔÐØ”	ˆÝÔ# E¨7Ñ3Ô3Ð3Ð3Ð3r*   c                óÜ   — t          | ¦  «         | j        }t          |¦  «        }t          |¦  «        }t	          j        t          |¦  «        |¦  «        }t	          j        ||¦  «         dS )z@
        Create annotation 'Popup' or update rectangle.
        N)rv  rÄ   rà   ÚJM_rotate_page_matrixr�   Úfz_transform_rectr  Úpdf_set_annot_popup)r(   r  rß   Úpdfpagerb  r.  s         r)   Ú	set_popupzAnnot.set_popup  sf   € õ 	�DÑÔÐØ”	ˆÝ! %Ñ(Ô(ˆÝ# GÑ,Ô,ˆÝÔ#¥O°DÑ$9Ô$9¸3Ñ?Ô?ˆÝÔ! %¨Ñ+Ô+Ð+Ð+Ð+r*   c                óª  — t          | ¦  «         | j        }t          |¦  «        }t          |¦  «        }t	          j        t          |¦  «        |¦  «        }t	          j        |¦  «        st	          j        |¦  «        rt          t          ¦  «        ‚	 t	          j        ||¦  «         dS # t          $ r}t          d|› �¦  «         Y d}~dS d}~ww xY w)zSet annotation rectangle.zcannot set rect: NF)rv  rÄ   rà   r·  r�   r¸  r  Úfz_is_empty_rectÚfz_is_infinite_rectrÃ   ÚMSG_BAD_RECTÚpdf_set_annot_rectrg   rr   )r(   r  rß   rº  rb  r.  rp  s          r)   Úset_rectzAnnot.set_rect  sß   € å�DÑÔÐØ”	ˆå! %Ñ(Ô(ˆÝ# GÑ,Ô,ˆÝÔ#¥O°DÑ$9Ô$9¸3Ñ?Ô?ˆÝÔ! !Ñ$Ô$ð 	,­Ô(AÀ!Ñ(DÔ(Dð 	,Ý�lÑ+Ô+Ð+ð	ÝÔ$ U¨AÑ.Ô.Ð.Ð.Ð.øÝð 	ð 	ð 	ÝÐ+¨Ð+Ð+Ñ,Ô,Ð,Ø�5�5�5�5�5øøøøð	øøøs   ÂB+ Â+
CÂ5CÃCc                óD  — t          | ¦  «         | j        }t          j        |¦  «        }|t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        t          j        t          j        fvrdS |}|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °|t          j        k    r|dz  dk    rd}t          j        |¦  «        }t          j        |t#          d¦  «        |¦  «         dS )zSet annotation rotation.Nr   éh  éZ   rD  )rv  rÄ   r�   r  rS  rM  rT  rU  rV  rN  rO  rP  rL  rW  rX  r  rY  r  )r(   ri  rß   rÈ   rb  r0  s         r)   Úset_rotationzAnnot.set_rotation#  s  € å�DÑÔÐà”	ˆÝÔ# EÑ*Ô*ˆØÝÔ%ÝÔ&ÝÔ)ÝÔ/ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ÝÔ%ÝÔ$ðð ð ð ˆFØˆØ�AŠgˆgØ�3‰JˆCð �AŠgˆgà�SŠjˆjØ�3‰JˆCð �SŠjˆjà•5Ô,Ò,Ð,°°r±¸Q²°ØˆCÝÔ'¨Ñ.Ô.ˆ	ÝÔ˜y­(°8Ñ*<Ô*<¸cÑBÔBÐBÐBÐBr*   c                ó^  — t          | ¦  «         | j        j        sdS t          j        | j        ¦  «        }t          j        |¦  «        }t          j        t          j        | j        ¦  «        d¦  «        }|j        rt          j        |¦  «        r||fS t          j	        |¦  «        }|||fS )zannotation typeÚnullÚIT)
rv  rÄ   rÌ   r�   r  Úpdf_string_from_annot_typer  r  Úpdf_is_namer‰  )r(   rk  Úcr±  Úits        r)   rÈ   z
Annot.typeA  s§   € õ 	�DÑÔÐØŒyÔ#ð 	Ø�6ÝÔ$ T¤YÑ/Ô/ˆÝÔ,¨UÑ3Ô3ˆÝÔ¥Ô!4°T´YÑ!?Ô!?ÀÑFÔFˆØŒ|ð 	�uÔ0°Ñ3Ô3ð 	Ø˜1�:ÐÝÔ˜qÑ!Ô!ˆØ�q˜"ˆ~Ðr*   Trg  ÚOptStrrf  ÚOptFloatr
  r~  r	  r  ÚOptSeqÚborder_colorrh  Ú	cross_outrø   ri  r4   c
                ó\  — t          j        | j        ¦  «        }
|r3t          j        |
t	          d¦  «        ¦  «        }|st          d¦  «        ‚t          | ¦  «         d„ }| j        d         }| j         	                    dd¦  «        }| j         	                    dd¦  «        }| j
        d	         }|�|}n| j
        d
         }d}| j        }|	dk    r=|	dk     r|	dz  }	|	dk     °|	dk    r|	dz  }	|	dk    °|t           j        k    r|	dz  dk    rd}	|€| j        }t          |d¦  «        s| j        }d|cxk    rdk     sn |rd}nd}|t           j        k    rvt!          |¦  «         t!          |¦  «         t"                               | ¦  «        \  }}}|dk    rd}|r|}|r|}|dk    r|}t'          | t)          |¦  «        |||¦  «         d}|                      ||||	¬¦  «        }|du rt-          d¦  «        ‚|t           j        k    rS|                      ¦   «         }d|cxk    rdk     r0n n-|                     d¦  «        s|                      d|z   ¦  «         dS  ||d¦  «        } ||d¦  «        }|                      ¦   «         j        }| }|rDdd                     t;          t<          |¦  «        ¦  «        z   dz   }|                     d¦  «        }nd}| j         r| j         \  }} nd\  }} |                      ¦   «         }| !                    ¦   «         }!d}"|t           j"        k    �r;|r’d}"|!dd…         }!|!\  }#}$}%}&}'|! #                    |%¦  «         |! #                    |$¦  «         |! #                    |&¦  «         |! #                    |$¦  «         |! #                    |'¦  «         |! #                    d¦  «         |dk    s|d k    r†d}"|dk    r%tI          |¦  «                             ¦   «         d!z   gng }(|!D ]R})|) %                    d"¦  «        rŒ|) %                    d#¦  «        r|d k    r
|dd…         })|( #                    |)¦  «         ŒS|(}!d$                     |!¦  «        }|t           j&        t           j'        fv r‚d$                     |!dd…         ¦  «        d$z   }d}"|d k    r/|t           j&        k    r	||z   d%z   }nA|t           j'        k    r|dz   }n+|t           j&        k    r|d&z   }n|t           j'        k    r|dz   }|�||z   }| (                    d'd(d¦  «        }d}"|r|                     d¦  «        |z   }d}"d)|z   d*z   }|| z   dk    �r•|t           j&        t           j'        fv �rzdt"          j)        t"          j*        t"          j+        t"          j,        t"          j-        t"          j.        t"          j/        t"          j0        t"          j1        f
}*te          dt)          |*¦  «        ¦  «        }+d+tg          d| j        d         ¦  «        z  },| j4        |, |, |,|,fz   }d}"| j5        }-||+v r\tm          |-d         ¦  «        |z  }.tm          |-d         ¦  «        |z  }/ |*|         | |.|/d|¦  «        }0||0                     ¦   «         z  }| |+v r\tm          |-d,         ¦  «        |z  }.tm          |-d         ¦  «        |z  }/ |*|          | |.|/d|¦  «        }0||0                     ¦   «         z  }|"rF|r-|  7                    |¦  «         |                      |d¬-¦  «         n|                      |d¬-¦  «         |t           j8        t           j9        t           j:        t           j;        t           j<        t           j'        t           j&        t           j=        t           j>        t           j?        f
vrdS | j@        }1|1dk    rdS | j4        jA        | j4        jB        z   d+z  }2|1dk    r�t‡          |t‰          dd¦  «        z
  ¦  «        d.k     rdS | j4         E                    |2| ¦  «        }3|  7                    |3j4        ¦  «         |  F                    t‰          dd¦  «        ¦  «         dS t‰          |1¦  «        }4| j4         E                    |2|4¦  «        }3|  7                    |3j4        ¦  «         |  F                    ||4z  ¦  «         dS )/a"  Update annot appearance.

        Notes:
            Depending on the annot type, some parameters make no sense,
            while others are only available in this method to achieve the
            desired result. This is especially true for 'FreeText' annots.
        Args:
            blend_mode: set the blend mode, all annotations.
            opacity: set the opacity, all annotations.
            fontsize: set fontsize, 'FreeText' only.
            fontname: set the font, 'FreeText' only.
            border_color: set border color, 'FreeText' only.
            text_color: set text color, 'FreeText' only.
            fill_color: set fill color, all annotations.
            cross_out: draw diagonal lines, 'Redact' only.
            rotate: set rotation, 'FreeText' and some others.
        ÚRCú-cannot set border_color if rich_text is Falsec                óX   — t          | |¦  «        }|sdS |dz                        ¦   «         S )zHReturn valid PDF color operator for a given color sequence.
            r*   r%   )Ú	ColorCodeÚencode)rï  ÚcodeÚccs      r)   Úcolor_stringz"Annot.update.<locals>.color_stringr  s6   € õ ˜2˜tÑ$Ô$ˆBØð Ø�sØ˜‘I×%Ò%Ñ'Ô'Ð'r*   r   rn  Nrl  rA  rw  r  rÃ  rÄ  ry  r   ú/H gs
r\   é   )rf  rg  rh  ri  FzError updating annotation.s   /H gss   /H gs
ÚfrË  r{  r³   z] 0 d
úutf-8©r   r   Tó   Sr*   s    wó   ws   RGó   
ó   bó   ss   
S
s
   
S
[] 0 d
ó   q
s   
Q
r   éþÿÿÿ©r  çñhãˆµøä>)Gr�   r  rÄ   r  r  rÃ   rv  rÈ   r˜  r8   r  r‡  rT  r“  r;   rf  r  r  r  ÚJM_make_annot_DAr7   rt  rÞ   r2  r3   r@  rz  r{  ÚjoinÚmaprá  r×  rA  Ú
splitlinesr  rk   r¶   ÚendswithrP  rO  ÚreplaceÚ
_le_squareÚ
_le_circleÚ_le_diamondÚ_le_openarrowÚ_le_closedarrowÚ_le_buttÚ_le_ropenarrowÚ_le_rclosedarrowÚ	_le_slashr\  Úmaxr  ÚverticesÚPointrÁ  rS  rM  rU  rV  rN  rL  rW  rX  r_  ÚtlÚbrÚabsr…  Úmorphrf  )5r(   rg  rf  r
  r	  r  rÐ  rh  rÑ  ri  r0  Úis_rich_textrÚ  Ú
annot_typeÚdtÚbwidthrw  r  r  ÚapnmatÚopa_codeÚtcolÚfnameÚfsizer"  r1  ÚbfillÚbstrokeÚp_ctmÚimatrn  Úline_end_leÚline_end_riÚap_tabÚ
ap_updatedÚ_ÚLLÚLRÚURÚULÚntabro   Úle_funcsÚle_funcs_rangeÚdÚpointsÚp1Úp2Úleftrb  r!  Úquadr†  s5                                                        r)   ÚupdatezAnnot.updateO  s	  € õ8 Ô'¨¬	Ñ2Ô2ˆ	àð 	RÝ Ô-¨i½À$¹¼ÑHÔHˆLØð RÝ Ð!PÑQÔQÐQÝ�DÑÔÐð	(ð 	(ð 	(ð ”Y˜q”\ˆ
àŒ[�_Š_˜X tÑ,Ô,ˆØ”—’ ¨"Ñ-Ô-ˆØ”˜XÔ&ˆØÐ!ØˆDˆDà”;˜vÔ&ˆDØˆØ”ˆØ�RŠ<ˆ<Ø˜1’*�*Ø˜#‘�ð ˜1’*�*à˜C’-�-Ø˜#‘�ð ˜C’-�-à�UÔ6Ò6Ð6¸6ÀB¹;È!Ò;KÐ;KØ�ð
 ÐØœˆJÝ�w Ñ,Ô,ð 	#Ø”lˆGà�ÐÐÒÐ˜!ÒÐÐÐ˜zÐØ ˆHˆHàˆHà�Ô2Ò2Ð2Ý�zÑ"Ô"Ð"Ý�zÑ"Ô"Ð"Ý!&§¢°Ñ!6Ô!6ÑˆD�%˜ð ˜ŠzˆzØ�Øð "Ø!�Øð !Ø �Ø˜!Š|ˆ|Ø �Ý˜T¥3 t¡9¤9¨d°E¸5ÑAÔAÐAØˆJð
 ×%Ò%ØØ!ØØð	 &ñ 
ô 
ˆð �%ˆ<ˆ<ÝÐ;Ñ<Ô<Ð<à�Ô2Ò2Ð2à—’‘”ˆBØ�GÐÐÒÐ˜aÒÐÐÐÐ¨¯ª°hÑ(?Ô(?ÐØ—’˜J¨™OÑ,Ô,Ð,ØˆFà�˜T 3Ñ'Ô'ˆØ�,˜v sÑ+Ô+ˆà—’Ñ!Ô!Ô7ˆØˆvˆàð 	Ø˜3Ÿ8š8¥C­¨R¡L¤LÑ1Ô1Ñ1°IÑ=ˆFØ—]’] 7Ñ+Ô+ˆFˆFàˆFàŒ>ð 	,Ø'+¤~Ñ$ˆK˜˜à'+Ñ$ˆK˜ð �[Š[‰]Œ]ˆØ—’‘”ˆØˆ
à�Ô/Ò/Ñ/Øð 	$Ø!�
Ø   œ�Ø$*Ñ!��2�r˜2˜rØ—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜dÑ#Ô#Ð#à˜Šzˆz˜W¨š^˜^Ø!�
Ø?EÈºz¸z�	 &Ñ)Ô)×0Ò0Ñ2Ô2°UÑ:Ð;Ð;Èr�Ø"ð &ð &�DØ—}’} TÑ*Ô*ð !Ø Ø—}’} UÑ+Ô+ð ,°¸3²°Ø& s¨ sœ|˜Ø—K’K Ñ%Ô%Ð%Ð%Ø�à—’˜FÑ#Ô#ˆBà�%Ô1µ5Ô3LÐMÐMÐMØ—’˜F 3 B 3œKÑ(Ô(¨5Ñ0ˆBØˆJØ˜Š|ˆ|Ø¥Ô!8Ò8Ð8Ø˜e™ dÑ*�B�BØ¥5Ô#<Ò<Ð<Ø˜d™�Bøà¥Ô!8Ò8Ð8Ø˜d™�B�BØ¥5Ô#<Ò<Ð<Ø˜d™�BàÐØ˜"‘ˆBà—’˜HÐ&6¸Ñ:Ô:ˆBØˆJàð 	Ø—’ Ñ)Ô)¨BÑ.ˆBØˆJà�b‰[˜8Ñ#ˆð ˜Ñ$ qÒ(Ñ(¨Z½EÔ<SÕUZÔUnÐ;oÐ-oÑ-oà�eÔ.µÔ0@ÝÔ)­5Ô+>ÝÔ-­u¬~ÝÔ,­eÔ.DÝœð	)ˆHõ
 # 1¥c¨(¡m¤mÑ4Ô4ˆNØ•C˜˜4œ; wÔ/Ñ0Ô0Ñ0ˆAØ”9   Q B¨¨1˜~Ñ-ˆDØˆJØ”]ˆFØ˜nÐ,Ð,Ý˜6 !œ9Ñ%Ô%¨Ñ,�Ý˜6 !œ9Ñ%Ô%¨Ñ,�Ø,�x Ô,¨T°2°r¸5À*ÑMÔM�Ø�d—k’k‘m”mÑ#�Ø˜nÐ,Ð,Ý˜6 "œ:Ñ&Ô&¨Ñ-�Ý˜6 "œ:Ñ&Ô&¨Ñ-�Ø,�x Ô,¨T°2°r¸4ÀÑLÔL�Ø�d—k’k‘m”mÑ#�àð 	(Øð (Ø—’˜dÑ#Ô#Ð#Ø—’˜B Q�Ñ'Ô'Ð'Ð'à—’˜B Q�Ñ'Ô'Ð'ð
 ÝÔ%ÝÔ&ÝÔ/ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ÝÔ%ÝÔ$ðð ð ð ˆFàŒmˆØ�"Š9ˆ9ØˆFàŒYŒ\˜DœIœLÑ(¨AÑ-ˆà�!Š8ˆ8Ý�6�F 1 a™LœLÑ(Ñ)Ô)¨DÒ0Ð0Ø�Ø”9—?’? 1 v gÑ.Ô.ˆDØ�MŠM˜$œ)Ñ$Ô$Ð$Ø×Ò¥ q¨!¡¤Ñ-Ô-Ð-ØˆFå�S‰kŒkˆØŒy�Š˜q #Ñ&Ô&ˆØ�Š�d”iÑ Ô Ð Ø×Ò˜F S™LÑ)Ô)Ð)Ð)Ð)r*   c                óî  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }	|	j        st          dt          ¦  «         t          j        |t          d¦  «        ¦  «        }
t          |¦  «        }|r|j        st!          t"          ¦  «        ‚|r‘t%          ||	|d¦  «         t          j        |¦  «        \  }}t          j        |¦  «        }t          j        |	t          d¦  «        |¦  «         t          j        |	|t          d¦  «        t          d¦  «        ¦  «         |r¯t          j        |	t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         t          j        |	t          d	¦  «        |¦  «         t          j        |
t          d	¦  «        |¦  «         t          j        |t          d
¦  «        |¦  «         |rFt          j        |	t          d	¦  «        |¦  «         t          j        |
t          d	¦  «        |¦  «         |rHt          j        |	t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         dS dS )zUpdate attached file.rµ  r¶  r·  úbad PDF: no /EF objectr   ÚDLr¼  r½  r¹  ÚContentsrº  N)rv  rÄ   r�   r  rž  r  rU  r¾  r¿  r*  r  rÌ   rÀ  rÁ  r  r7  rÃ   r8  r9  Úfz_buffer_storageÚpdf_new_intr^  Úpdf_dict_putlr�  )r(   r=  rf   Ú	ufilenamerÉ  rß   r0  rj  rÈ   r	   rÊ  r/  r7   r  Úls                  r)   Úupdate_filezAnnot.update_fileK  s�  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ*¨9Ñ5Ô5ˆÝÔ# EÑ*Ô*ˆØ•5Ô2Ò2Ð2ÝÕ/Ñ0Ô0Ð0ÝÔ$ Yµ¸±´ÅÈÁÄÕPXÐY\ÑP]ÔP]Ñ^Ô^ˆàÔ ð 	EÝÐ-Õ/CÑDÔDÐDåÔ 	­8°D©>¬>Ñ:Ô:ˆõ ! Ñ)Ô)ˆØð 	.˜3œ>ð 	.Ý�nÑ-Ô-Ð-Øð 	QÝ˜S &¨#¨qÑ1Ô1Ð1åÔ,¨SÑ1Ô1‰FˆC�ÝÔ! #Ñ&Ô&ˆAÝÔ˜v¥x°¡~¤~°qÑ9Ô9Ð9ÝÔ ¨­8°HÑ+=Ô+=½xÈÑ?OÔ?OÑPÔPÐPàð 	VÝÔ*¨6µ8¸C±=´=À(ÑKÔKÐKÝÔ*¨2­x¸©}¬}¸hÑGÔGÐGÝÔ*¨6µ8¸D±>´>À8ÑLÔLÐLÝÔ*¨2­x¸©~¬~¸xÑHÔHÐHÝÔ*¨9µh¸zÑ6JÔ6JÈHÑUÔUÐUàð 	JÝÔ*¨6µ8¸D±>´>À9ÑMÔMÐMÝÔ*¨2­x¸©~¬~¸yÑIÔIÐIàð 	GÝÔ*¨6µ8¸FÑ3CÔ3CÀTÑJÔJÐJÝÔ*¨2­x¸Ñ/?Ô/?ÀÑFÔFÐFÐFÐFð	Gð 	Gr*   c           	     ó�  — t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |¦  «        }t          j        ¦   «         }t          j        ¦   «         }t          j	        |||¦  «         t          |¦  «        }t          j        ||¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s"t          j        |t          d¦  «        ¦  «        }|j        s"t          j        |t          d¦  «        ¦  «        }|j        st          j        |d¦  «        }|j        rÆg }t!          dt          j        |¦  «        d¦  «        D ]ž}	t          j        t          j        ||	¦  «        ¦  «        }
t          j        t          j        ||	dz   ¦  «        ¦  «        }t          j        |
|¦  «        }t          j        ||¦  «        }|                     |j        |j        f¦  «         ŒŸ|S t          j        |d¦  «        }|j        �rg }t!          t          j        |¦  «        ¦  «        D ]ð}	g }t          j        ||	¦  «        }t!          dt          j        |¦  «        d¦  «        D ]ž}t          j        t          j        ||¦  «        ¦  «        }
t          j        t          j        ||dz   ¦  «        ¦  «        }t          j        |
|¦  «        }t          j        ||¦  «        }|                     |j        |j        f¦  «         ŒŸ|                     |¦  «         Œñ|S d	S )
zannotation vertex pointsÚVerticesÚLÚ
QuadPointsÚCLr   r   r   ÚInkListN)rv  rÄ   r>   r�   rõ   r  rà   r‚  rx  Úpdf_page_transformÚJM_derotate_page_matrixÚ	fz_concatr  r  rÌ   r  r\  r«  rÿ  r¬  ÚFzPointÚfz_transform_pointrk   ÚxÚy)r(   rß   r0  rÖ   Úpage_ctmÚdummyÚderotr±  r/  r®   r4  r5  ÚpointÚres1Úo1r‘  s                   r)   rù  zAnnot.verticesv  sî  € õ 	�DÑÔÐØ”	ˆÝ˜%¥¤Ñ0Ô0Ð0Ð0Ð0ÝÔ'¨Ñ.Ô.ˆ	Ý˜uÑ%Ô%ˆÝ”>Ñ#Ô#ˆÝ”‘”ˆÝÔ   u¨hÑ7Ô7Ð7Ý'¨Ñ-Ô-ˆÝ”? 8¨UÑ3Ô3ˆõ Ô˜y­(°:Ñ*>Ô*>Ñ?Ô?ˆØŒ|ÐP¥EÔ$6°yÅ(È3Á-Ä-Ñ$PÔ$P ØŒ|ÐY¥EÔ$6°yÅ(È<ÑBXÔBXÑ$YÔ$Y ØŒ|ÐH¥EÔ$7¸	À4Ñ$HÔ$H àŒ<ð 
	ð ˆCÝ˜1�eÔ1°!Ñ4Ô4°aÑ8Ô8ð 0ð 0�ÝÔ%¥eÔ&9¸!¸QÑ&?Ô&?Ñ@Ô@�ÝÔ%¥eÔ&9¸!¸Q¸q¹SÑ&AÔ&AÑBÔB�Ýœ a¨Ñ+Ô+�ÝÔ0°¸ÑAÔA�Ø—
’
˜UœW e¤gÐ.Ñ/Ô/Ð/Ð/ØˆJåÔ 	¨9Ñ5Ô5ˆØŒ<ñ 	ð ˆCÝ�5Ô.¨qÑ1Ô1Ñ2Ô2ð 	!ð 	!�Ø�ÝÔ(¨¨AÑ.Ô.�Ý˜q¥%Ô"5°bÑ"9Ô"9¸1Ñ=Ô=ð 5ð 5�AÝÔ)­%Ô*=¸bÀ!Ñ*DÔ*DÑEÔE�AÝÔ)­%Ô*=¸bÀ!ÀAÁ#Ñ*FÔ*FÑGÔG�AÝ!œM¨!¨QÑ/Ô/�EÝ!Ô4°U¸HÑEÔE�EØ—K’K %¤'¨5¬7Ð!3Ñ4Ô4Ð4Ð4Ø—
’
˜4Ñ Ô Ð Ð ØˆJð	ð 	r*   c                óz   — t          | ¦  «         | j        }t          j        t          j        |¦  «        ¦  «        S )zannotation xref number)rv  rÄ   r�   r  r  rö   s     r)   r   z
Annot.xref¬  s5   € õ 	�DÑÔÐØ”	ˆÝÔ¥Ô 3°EÑ :Ô :Ñ;Ô;Ð;r*   ©r   )rA  NNrA  ©r   )NNNr   r‡   )NrA  NNrA  ©NNN©NNNNNNr,   )	NNr   NNNNTrA  )rg  rÍ  rf  rÎ  r
  r~  r	  rÍ  r  rÏ  rÐ  rÏ  rh  rÏ  rÑ  rø   ri  r4   ©NNNN)Ar/   r0   r1   rŒ   rù   rþ   r   r  r#  r2  r@  rt  Úpropertyr}  r‡  r“  r˜  r¢  r  r³  rË  rÎ  rÑ  rÖ  rz  rñ  r  r  r  r  r  r,  r0  r3  r:  rA  rL  rf  rR  rT  r  r\  r_  rc  rf  ri  rt  r‚  r…  r“  r�  r¡  r¦  r¨  r«  r²  rµ  r»  rÁ  rÅ  rÈ   r  r(  rù  r   r-   r*   r)   ró   ró   _  sJ  € € € € € ðð ð ðð ð ð:ð :ð :ðð ð ð!ð !ð !ð%ð %ð %ðNð ð ð&9ð 9ð 9ð 9ð(að að að aðF ðð ñ „Xðð  ðð ñ „Xðð. ðð ñ „Xðð> ðð ñ „Xðð$=ð =ð =ð =ð ð	ð 	ñ „Xð	ðGð Gð Gð6 ð/ð /ñ „Xð/ðb ð,ð ,ñ „Xð,ðð ð ð	ð 	ð 	ðð ð ðð ð ð ð(ð ð ð@5ð 5ð 5ð8ð 8ð 8ðð ð ð ð& ð1ð 1ñ „Xð1ð ðð ñ „XððB ð	&ð 	&ñ „Xð	&ð ð2ð 2ñ „Xð2ð
 ð9ð 9ñ „Xð9ð ð	ð 	ñ „Xð	ð ðð ñ „Xðð2 ðð ñ „Xðð ðð ñ „Xðð$ ð	ð 	ñ „Xð	ð ðð ñ „Xðð& ðð ñ „Xðð ð+ð +ñ „Xð+ð<ð <ð <ð"	?ð 	?ð 	?ðGð Gð Gð-<ð -<ð -<ð -<ð^'1ð '1ð '1ð '1ðR0ð 0ð 0ðlð lð lð lð<=ð =ð =ð 7ð 7ð 7ð 7ð<ð <ð <ðCð Cð CðUð Uð Uð Uð
"ð 
"ð 
"ð4ð 4ð 4ð	,ð 	,ð 	,ðð ð ð Cð Cð Cð Cð< ðð ñ „Xðð !%Ø#ØØ"Ø $Ø"&Ø $Ø!Øðz*ð z*ð z*ð z*ð z*ðx)Gð )Gð )Gð )GðV ð3ð 3ñ „Xð3ðj ð<ð <ñ „Xð<ð <ð <r*   ró   c                  ól   — e Zd Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
ed
„ ¦   «         Zd„ Zd„ ZdS )ÚArchivec                óx   — t          ¦   «         | _        t          j        ¦   «         | _        |r | j        |Ž  dS dS )zõ
        Archive(dirname [, path]) - from folder
        Archive(file [, path]) - from file name or object
        Archive(data, name) - from memory item
        Archive() - empty archive
        Archive(archive [, path]) - from archive
        N)r´   Ú_subarchivesr�   Úfz_new_multi_archiverÄ   Úadd©r(   r  s     r)   rŒ   zArchive.__init__µ  sG   € õ !™FœFˆÔÝÔ.Ñ0Ô0ˆŒ	Øð 	ØˆDŒH�tÐÐÐÐð	ð 	r*   c                ó0   — dt          | j        ¦  «        › �S )NzArchive, sub-archives: )r7   rF  r.   s    r)   rþ   zArchive.__repr__Â  s   € ØA­¨TÔ->Ñ)?Ô)?ÐAÐAÐAr*   Nc                ó<   — t          j        | j        ||¦  «         d S r,   )r�   Úfz_mount_multi_archiverÄ   )r(   Úsubarchr
   s      r)   Ú	_add_archzArchive._add_archÅ  s   € ÝÔ$ d¤i°¸$Ñ?Ô?Ð?Ð?Ð?r*   c                ód   — t          j        |¦  «        }t          j        | j        ||¦  «         d S r,   )r�   Úfz_open_directoryrL  rÄ   )r(   Úfolderr
   Úsubs       r)   Ú_add_dirzArchive._add_dirÈ  s/   € ÝÔ% vÑ.Ô.ˆÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óÐ   — t          |¦  «        }t          j        t          j        ¦   «         ¦  «        }t          j        |||¦  «         t          j        | j        ||¦  «         d S r,   )r7  r�   Úfz_new_tree_archiveÚFzTreeÚfz_tree_archive_add_bufferrL  rÄ   )r(   Úmemoryr   r
   ÚbuffrR  s         r)   Ú_add_treeitemzArchive._add_treeitemÌ  sW   € Ý! 6Ñ*Ô*ˆÝÔ'­¬©¬Ñ8Ô8ˆÝÔ(¨#¨t°TÑ:Ô:Ð:ÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óš   — |dk    rt          j        |¦  «        }nt          j        |¦  «        }t          j        | j        ||¦  «         d S ©Nr   )r�   Úfz_open_zip_archiveÚfz_open_tar_archiverL  rÄ   )r(   Úfilepathrk  r
   rR  s        r)   Ú_add_ziptarfilezArchive._add_ziptarfileÒ  sJ   € Ø�AŠ:ˆ:ÝÔ+¨XÑ6Ô6ˆCˆCåÔ+¨XÑ6Ô6ˆCÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óà   — t          |¦  «        }t          j        |¦  «        }|dk    rt          j        |¦  «        }nt          j        |¦  «        }t          j        | j        ||¦  «         d S r\  )r7  r�   Úfz_open_bufferÚfz_open_zip_archive_with_streamÚfz_open_tar_archive_with_streamrL  rÄ   )r(   rX  rk  r
   rY  r	   rR  s          r)   Ú_add_ziptarmemoryzArchive._add_ziptarmemoryÙ  sg   € Ý! 6Ñ*Ô*ˆÝÔ% tÑ,Ô,ˆØ�!Š8ˆ8ÝÔ7¸Ñ@Ô@ˆCˆCåÔ7¸Ñ@Ô@ˆCÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óp	  ‡ — d„ }ˆ fd„}t          |t          j        ¦  «        rt          |¦  «        }t          |t          ¦  «        �rt          j                             |¦  «        r5‰                      ||¦  «          |t	          j        |¦  «        |d¦  «        S t          j         	                    |¦  «        rŽt          |t          ¦  «        r|dk    sJ d|›d�¦   «         ‚t          j        |d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ‰                      ||¦  «          ||gdd	¦  «        S t          d
|›�¦  «        ‚ ||¦  «        rEt          |t          ¦  «        r
|d|›d�k    sJ ‚‰                      ||¦  «          ||gdd	¦  «        S t          |t          j        ¦  «        rzt#          |dd¦  «        }|€1|j                             ¦   «         }‰                      |d|¦  «         n‰                      |d|¦  «          ||                     ¦   «         |d¦  «        S t          |t.          j        ¦  «        r t#          |j        dd¦  «        }|€R|j        }t          |t          j        ¦  «        s|j        }‰                      |                     ¦   «         d|¦  «         n‰                      |d|¦  «          ||                     ¦   «         |d¦  «        S t          |t8          ¦  «        r#‰                      ||¦  «          |g |d¦  «        S t          |t<          ¦  «        �r#t?          |¦  «        dk    �r|\  }	}
t          |
t          ¦  «        sJ dtA          |
¦  «        ›�¦   «         ‚ ||	¦  «        r‰                      |	|
|¬¦  «         n©t          |	t          ¦  «        ryt          j         	                    |	¦  «        rYt          j        |	d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ‰                      ||
|¬¦  «         nJ dtA          |	¦  «        ›d�¦   «         ‚ ||
g|d	¦  «        S tC          |d¦  «        r|D ]}‰  "                    ||¦  «         ŒdS tG          dtA          |¦  «        › d�¦  «        ‚)a±  
        Add a sub-archive.

        Args:
            content:
                The content to be added. May be one of:
                    `str` - must be path of directory or file.
                    `bytes`, `bytearray`, `io.BytesIO` - raw data.
                    `zipfile.Zipfile`.
                    `tarfile.TarFile`.
                    `pymupdf.Archive`.
                    A two-item tuple `(data, name)`.
                    List or tuple (but not tuple with length 2) of the above.
            path: (str) a "virtual" path name, under which the elements
                of content can be retrieved. Use it to e.g. cope with
                duplicate element names.
        c                óP   — t          | t          t          t          j        f¦  «        S r,   )r>   r)  Ú	bytearrayr9   ÚBytesIO©r4  s    r)   Úis_binary_dataz#Archive.add.<locals>.is_binary_dataô  s   € Ý˜a¥%­µB´JÐ!?Ñ@Ô@Ð@r*   c                ój  •— t          || |¬¦  «        }|dk    s‰j        g k    r‰j                             |¦  «         d S ‰j        d         }|d         dk    s|d         |d         k    r‰j                             |¦  «         d S |d                              |d         ¦  «         |‰j        d<   d S )N)r±   Úentriesr
   ÚtreerA  r±   r
   rm  )r5   rF  rk   Úextend)rm  Úmountr±   rM  Últreer(   s        €r)   Úmake_subarchz!Archive.add.<locals>.make_subarch÷  sÆ   ø€ Ý˜s¨G¸%Ð@Ñ@Ô@ˆGØ�fŠ}ˆ} Ô 1°RÒ 7Ð 7ØÔ!×(Ò(¨Ñ1Ô1Ð1Ð1Ð1àÔ)¨"Ô-�Ø˜”< 6Ò)Ð)¨U°6¬]¸gÀf¼oÒ-MÐ-MØÔ%×,Ò,¨WÑ5Ô5Ð5Ð5Ð5à˜)Ô$×+Ò+¨G°IÔ,>Ñ?Ô?Ð?Ø,1�DÔ% bÑ)Ð)Ð)r*   Údirr\   z'Need name for binary content, but path=r   ÚrbNrn  zNot a file or directory: rf   r   Úzipr   r   ÚtarÚmultir   zUnexpected type(name)=)r
   zUnexpected type(data)=rp  zUnrecognised type )$r>   ÚpathlibÚPathrá  rd   r
   ÚisdirrS  ÚlistdirÚisfiler9   r:   ÚreadrZ  rÃ   ÚzipfileÚZipFilerý   ÚfpÚgetvaluere  r`  ÚnamelistÚtarfileÚTarFileÚfileobjri  ÚgetnamesrD  rN  rµ   r7   rÈ   r;   rH  r¾  )r(   r‡  r
   rk  rr  rÝ  Úffrf   r€  Údatar   rC   s   `           r)   rH  zArchive.addâ  sx  ø€ ð$	Að 	Að 	Að
	2ð 
	2ð 
	2ð 
	2ð 
	2õ �g�wœ|Ñ,Ô,ð 	#Ý˜'‘l”lˆGå�g�sÑ#Ô#ñ *	3ÝŒw�}Š}˜WÑ%Ô%ð JØ—’˜g tÑ,Ô,Ð,Ø#�|¥B¤J¨wÑ$7Ô$7¸¸uÑEÔEÐEÝ”—’ Ñ(Ô(ð JÝ! $­Ñ,Ô,ð F°¸²°°ØE¸TÐEÐEÐEñ 2<´Ð;å”W˜W dÑ+Ô+ð "¨qØŸš™œ�Bð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "à×"Ò" 2 tÑ,Ô,Ð,Ø#�| T F¨D°&Ñ9Ô9Ð9å Ð!H¸WÐ!HÐ!HÑIÔIÐIàˆ^˜GÑ$Ô$ð 	3Ý˜d¥CÑ(Ô(ð B¨Tð 6BØ9=ð6Bð 6Bð 6Bò .Bð .Bð .Bð Bà×Ò˜w¨Ñ-Ô-Ð-Ø�<  ¨¨fÑ5Ô5Ð5å˜¥¤Ñ1Ô1ð 	3Ý˜w¨
°DÑ9Ô9ˆHØÐØ”Z×(Ò(Ñ*Ô*�Ø×&Ò& r¨1¨dÑ3Ô3Ð3Ð3à×$Ò$ X¨q°$Ñ7Ô7Ð7Ø�< × 0Ò 0Ñ 2Ô 2°D¸%Ñ@Ô@Ð@å˜¥¤Ñ1Ô1ð 	3Ý˜wœ°¸Ñ=Ô=ˆHØÐØ”_�Ý! "¥b¤jÑ1Ô1ð $Øœ�BØ×&Ò& r§{¢{¡}¤}°a¸Ñ>Ô>Ð>Ð>à×$Ò$ X¨q°$Ñ7Ô7Ð7Ø�< × 0Ò 0Ñ 2Ô 2°D¸%Ñ@Ô@Ð@å˜¥Ñ)Ô)ð 	3Ø�NŠN˜7 DÑ)Ô)Ð)Ø�<  D¨'Ñ2Ô2Ð2å�g�uÑ%Ô%ñ 	C­#¨g©,¬,¸!Ò*;Ñ*;à ‰JˆD�$Ý˜d¥CÑ(Ô(ÐEÐEÐ*E½¸T¹
¼
Ð*EÐ*EÑEÔEÐ(Øˆ~˜dÑ#Ô#ð 7Ø×"Ò" 4¨°DÐ"Ñ9Ô9Ð9Ð9Ý˜D¥#Ñ&Ô&ð 7Ý”7—>’> $Ñ'Ô'ð <Ýœ  tÑ,Ô,ð &°ØŸVšV™XœX˜ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &à×&Ò& r¨4°dÐ&Ñ;Ô;Ð;øà6Ð6­¨T©
¬
Ð6Ð6Ð6Ñ6Ô6�qØ�<  ¨¨fÑ5Ô5Ð5å�W˜mÑ,Ô,ð 	Càð %ð %�Ø—’˜˜tÑ$Ô$Ð$Ð$ØˆFõ ÐAµ°g±´ÐAÐAÐAÑBÔBÐBs$   Ã:DÄDÄ"DÏ=PÐP"Ð%P"c                ó   — | j         S )z'
        List of sub archives.
        )rF  r.   s    r)   Ú
entry_listzArchive.entry_listK  s   € ð
 Ô Ð r*   c                ó6   — t          j        | j        |¦  «        S r,   )r�   Úfz_has_archive_entryrÄ   ©r(   r   s     r)   Ú	has_entryzArchive.has_entryR  s   € ÝÔ)¨4¬9°dÑ;Ô;Ð;r*   c                óT   — t          j        | j        |¦  «        }t          |¦  «        S r,   )r�   Úfz_read_archive_entryrÄ   r-  )r(   r   rY  s      r)   Ú
read_entryzArchive.read_entryU  s$   € ÝÔ*¨D¬I°tÑ<Ô<ˆÝ Ñ&Ô&Ð&r*   r,   )r/   r0   r1   rŒ   rþ   rN  rS  rZ  r`  re  rH  rB  rŠ  rŽ  r‘  r-   r*   r)   rD  rD  ´  sï   € € € € € ðð ð ðBð Bð Bð@ð @ð @ð @ð<ð <ð <ð <ð<ð <ð <ð <ð<ð <ð <ð <ð<ð <ð <ð <ðgð gð gð gðR ð!ð !ñ „Xð!ð<ð <ð <ð'ð 'ð 'ð 'ð 'r*   rD  c                  ó˜  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdKd„Z	d	„ Z
d
„ Zd„ ZdLd„Zd„ ZdMd„ZdKd„Zd„ ZdNd„Zd„ Zd„ Zd„ ZdKd„ZdKd„Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#e$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/d.„ Z0d/„ Z1e$d0„ ¦   «         Z2d1„ Z3d2„ Z4d3„ Z5dOd5„Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;dOd;„Z<d<„ Z=d=„ Z>d>„ Z?d?„ Z@d@„ ZAdA„ ZBdB„ ZC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPdC„ZDdD„ ZEdQdF„ZFdG„ ZGdH„ ZHe$dI„ ¦   «         ZIe$dJ„ ¦   «         ZJe	ZKe	ZLe	ZMdS )RÚXmlc                ó   — | S r,   r-   r.   s    r)   Ú	__enter__zXml.__enter__\  ó   € Øˆr*   c                ó   — d S r,   r-   rI  s     r)   Ú__exit__zXml.__exit___  ó   € Øˆr*   c                ó  — t          |t          j        ¦  «        r	|| _        d S t          |t          ¦  «        r/t          j        |¦  «        }t          j        |¦  «        | _        d S J dt          |¦  «        › �¦   «         ‚)Nr   zUnsupported type for rhs: )r>   r�   ÚFzXmlrÄ   rá  Úfz_new_buffer_from_copied_dataÚfz_parse_xml_from_html5rÈ   )r(   ÚrhsrY  s      r)   rŒ   zXml.__init__b  su   € Ý�c�5œ;Ñ'Ô'ð 	?ØˆDŒIˆIˆIÝ˜�SÑ!Ô!ð 	?ÝÔ7¸Ñ<Ô<ˆDÝÔ5°dÑ;Ô;ˆDŒIˆIˆIà>Ð>µ4¸±9´9Ð>Ð>Ñ>Ô>�1r*   c                ó4   ‡— ˆfd„Šd}g } ‰| ||¦  «        }|S )Nc           	     ó¾  •— | �Ù| j         r(|                     |d| j        › d�f¦  «         | j        } Œ1|                     |d| j        › �f¦  «         |                      ¦   «                              ¦   «         D ]#\  }}|                     |d|› d|› d�f¦  «         Œ$| j        }|r ‰|||dz   ¦  «        }|                     |d| j        › �f¦  «         | j        } | ­Ù|S )Nú"ú(r   z 'rü   r   ú))Úis_textrk   r   rL  ÚtagnameÚget_attributesrB   Úfirst_child)ÚnoderB   ÚshiftÚkrF   ÚchildÚ	show_nodes         €r)   r¬  z%Xml._get_node_tree.<locals>.show_nodel  s  ø€ ØÐ"Ø”<ð Ø—L’L %Ð)9¨T¬YÐ)9Ð)9Ð)9Ð!:Ñ;Ô;Ð;Øœ9�DØØ—’˜eÐ%7¨¬Ð%7Ð%7Ð8Ñ9Ô9Ð9Ø ×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ð 9ð 9‘D�A�qØ—L’L %¨¨Q¨¨°!¨¨¨Ð!7Ñ8Ô8Ð8Ð8ØÔ(�Øð ?Ø%˜I e¨U°E¸A±IÑ>Ô>�EØ—’˜eÐ%7¨¬Ð%7Ð%7Ð8Ñ9Ô9Ð9Ø”y�ð Ð"ð ˆLr*   r   r-   )r(   r©  rB   r¬  s      @r)   Ú_get_node_treezXml._get_node_treek  s@   ø€ ð	ð 	ð 	ð 	ð 	ð  ˆØˆØ�	˜$  uÑ-Ô-ˆØˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd bulleted list ("ul" tag)Úul©Úcreate_elementÚappend_child©r(   r«  s     r)   Úadd_bullet_listzXml.add_bullet_list�  ó.   € à×#Ò# DÑ)Ô)ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó°   — |                       d¦  «        }|�||v r| S |                      d¦  «         |€|}n|d|z   z  }|                      d|¦  «         | S )z5Set some class via CSS. Replaces complete class spec.ÚclassNr³   ©Úget_attribute_valueÚremove_attributeÚset_attribute)r(   r   Úclss      r)   Ú	add_classzXml.add_class‡  sp   € à×&Ò& wÑ/Ô/ˆØˆ?˜t s˜{˜{ØˆKØ×Ò˜gÑ&Ô&Ð&Øˆ;ØˆCˆCà�3˜‘:ÑˆCØ×Ò˜7 CÑ(Ô(Ð(Øˆr*   Nc                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a "code" tagrØ  ©r±  rÈ   rá  r²  Úcreate_text_nodeÚspan_bottom©r(   r   r«  Úprevs       r)   Úadd_codezXml.add_code”  s|   € à×#Ò# FÑ+Ô+ˆÝ�‰:Œ:�ÐÐØ×Ò˜t×4Ò4°TÑ:Ô:Ñ;Ô;Ð;Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )z!Add monospaced lines ("pre" node)Úprer°  r³  s     r)   Úadd_codeblockzXml.add_codeblockŸ  ó.   € à×#Ò# EÑ*Ô*ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd description list ("dl" tag)Údlr°  r³  s     r)   Úadd_description_listzXml.add_description_list¥  rµ  r*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd "div" tagÚdivr°  r³  s     r)   Úadd_divisionzXml.add_division«  rÈ  r*   r   c                óô   — |t          dd¦  «        vrt          d¦  «        ‚| j        }d|› �}|                      |¦  «        }|dvr|                      |¦  «         |S | j                             |¦  «         |S )zAdd header tagr   é   zHeader level must be in [1, 6]Úh)Úh1Úh2Úh3Úh4Úh5Úh6r²  )r\  rÃ   r¥  r±  r²  rû   )r(   r   Úthis_tagÚnew_tagr«  s        r)   Ú
add_headerzXml.add_header±  s‰   € à�˜a ™œÐ#Ð#ÝÐ=Ñ>Ô>Ð>Ø”<ˆØ�e�+�+ˆØ×#Ò# GÑ,Ô,ˆØÐDÐDÐDØ×Ò˜eÑ$Ô$Ð$ØˆLØŒ× Ò  Ñ'Ô'Ð'Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd horizontal line ("hr" tag)Úhrr°  r³  s     r)   Úadd_horizontal_linezXml.add_horizontal_line¾  rµ  r*   c                óT  — |                       d¦  «        }|�|                     d|› ¦  «         |�|                     d|› ¦  «         |�|                     dd|› �¦  «         |�|                     d|› ¦  «         |                     d|› ¦  «         |                      |¦  «         |S )	zAdd image node (tag "img").ÚimgNrl  Úheightrm  zfloat: r!  Úsrc)r±  r»  r²  )r(   r   rl  rà  Úimgfloatr!  r«  s          r)   Ú	add_imagezXml.add_imageÄ  sÅ   € à×#Ò# EÑ*Ô*ˆØÐØ×Ò ¨E¨Ñ4Ô4Ð4ØÐØ×Ò ¨V¨+Ñ6Ô6Ð6ØÐØ×Ò Ð)=°8Ð)=Ð)=Ñ>Ô>Ð>ØÐØ×Ò ¨E¨Ñ4Ô4Ð4Ø×Ò˜E d 9Ñ-Ô-Ð-Ø×Ò˜%Ñ Ô Ð Øˆr*   c                ó4  — |                       d¦  «        }t          |t          ¦  «        s|}|                     d|¦  «         |                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a hyperlink ("a" tag)r!   Úhref)r±  r>   rá  r»  r²  rÀ  rÁ  )r(   rå  r   r«  rÃ  s        r)   Úadd_linkzXml.add_linkÓ  s˜   € à×#Ò# CÑ(Ô(ˆÝ˜$¥Ñ$Ô$ð 	ØˆDØ×Ò˜F DÑ)Ô)Ð)Ø×Ò˜4×0Ò0°Ñ6Ô6Ñ7Ô7Ð7Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó–   — | j         dvrt          d| j         ¦  «        ‚|                      d¦  «        }|                      |¦  «         |S )z8Add item ("li" tag) under a (numbered or bulleted) list.)Úolr¯  zcannot add list item toÚli)r¥  rÃ   r±  r²  r³  s     r)   Úadd_list_itemzXml.add_list_itemà  sN   € àŒ<˜|Ð+Ð+ÝÐ6¸¼ÑEÔEÐEØ×#Ò# DÑ)Ô)ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                óÜ   — |                       d¦  «        }|dk    r#|                     dt          |¦  «        ¦  «         |�|                     d|¦  «         |                      |¦  «         |S )zAdd numbered list ("ol" tag)rè  r   r¤  NrÈ   )r±  r»  rá  r²  )r(   r¤  Únumtyper«  s       r)   Úadd_number_listzXml.add_number_listè  so   € à×#Ò# DÑ)Ô)ˆØ�1Š9ˆ9Ø×Ò ­¨U©¬Ñ4Ô4Ð4ØÐØ×Ò ¨Ñ0Ô0Ð0Ø×Ò˜%Ñ Ô Ð Øˆr*   c                ó¦   — |                       d¦  «        }| j        dk    r|                      |¦  «         n| j                             |¦  «         |S )zAdd "p" tagr²  )r±  r¥  r²  rû   r³  s     r)   Úadd_paragraphzXml.add_paragraphò  sT   € à×#Ò# CÑ(Ô(ˆØŒ<˜3ÒÐØ×Ò˜eÑ$Ô$Ð$Ð$àŒK×$Ò$ UÑ+Ô+Ð+Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S ©NÚspanr°  r³  s     r)   Úadd_spanzXml.add_spanû  s.   € Ø×#Ò# FÑ+Ô+ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó°   — |                       d¦  «        }|�||v r| S |                      d¦  «         |€|}n|d|z   z  }|                      d|¦  «         | S )z;Set some style via CSS style. Replaces complete style spec.rm  Nú;r¸  )r(   r   rm  s      r)   Ú	add_stylezXml.add_style 	  sq   € à×(Ò(¨Ñ1Ô1ˆØÐ ¨  ØˆKØ×Ò˜gÑ&Ô&Ð&Øˆ=ØˆEˆEà�S˜4‘ZÑˆEØ×Ò˜7 EÑ*Ô*Ð*Øˆr*   c                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a subscript ("sub" tag)rR  r¿  rÂ  s       r)   Úadd_subscriptzXml.add_subscript	  ó|   € à×#Ò# EÑ*Ô*ˆÝ�‰:Œ:�ÐÐØ×Ò˜t×4Ò4°TÑ:Ô:Ñ;Ô;Ð;Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a superscript ("sup" tag)Úsupr¿  rÂ  s       r)   Úadd_superscriptzXml.add_superscript	  rù  r*   c                óX  — |                      ¦   «         }t          |¦  «        }|                      ¦   «         }|€| }t          |¦  «        D ]^\  }}|                     |                      |¦  «        ¦  «         ||dz
  k     r(|                     |                      d¦  «        ¦  «         Œ_| S )z"Add text. Line breaks are honored.Nr   rü  )rì  r7   rÁ  Ú	enumerater²  rÀ  r±  )r(   r   ÚlinesÚ
line_countrÃ  r®   ro   s          r)   Úadd_textzXml.add_text#	  s«   € à—’Ñ!Ô!ˆÝ˜‘Z”Zˆ
Ø×ÒÑ!Ô!ˆØˆ<ØˆDå  Ñ'Ô'ð 	=ð 	=‰GˆAˆtØ×Ò˜d×3Ò3°DÑ9Ô9Ñ:Ô:Ð:Ø�: ‘>Ò!Ð!Ø×!Ò! $×"5Ò"5°dÑ";Ô";Ñ<Ô<Ð<øØˆr*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_append_childrÄ   r³  s     r)   r²  zXml.append_child1	  s   € ÝÔ! 4¤9¨e¬jÑ9Ô9Ð9Ð9Ð9r*   c                ó´   — |                       d¦  «        }|                     |¦  «         |                      ¦   «         }|€| }|                     |¦  «         |S rñ  )r±  rö  rÁ  r²  )r(   rm  rò  rÃ  s       r)   Úappend_styled_spanzXml.append_styled_span4	  s[   € Ø×"Ò" 6Ñ*Ô*ˆØ�Š�uÑÔÐØ×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜$ÑÔÐØˆr*   c                óN   — t          t          j        | j        ¦  «        ¦  «        S r,   )r“  r�   Úfz_dom_bodyrÄ   r.   s    r)   ÚbodytagzXml.bodytag=	  s   € Ý•EÔ% t¤yÑ1Ô1Ñ2Ô2Ð2r*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S r,   )r�   Úfz_dom_clonerÄ   r“  ©r(   rG   s     r)   Úclonez	Xml.clone@	  s    € ÝÔ  $¤)Ñ,Ô,ˆÝ�C‰yŒyÐr*   c                óæ   — t          | ¦  «        t          u r| S t          | ¦  «        t          u rdt          | ¦  «        › d�S t          | ¦  «        t          t
          fv rdt	          | ¦  «        › �S | S )Nzrgb(r£  rÛ  )rÈ   rá  r4   ÚsRGB_to_rgbrµ   r´   )Úcolors    r)   Ú
color_textzXml.color_textD	  sp   € å�‰;Œ;�#ÐÐØˆLÝ�‰;Œ;�#ÐÐØ/�+ eÑ,Ô,Ð/Ð/Ð/Ð/Ý�‰;Œ;�5¥$˜-Ð'Ð'Ø'�˜u™œÐ'Ð'Ð'Øˆr*   c                óP   — t          t          j        | j        |¦  «        ¦  «        S r,   )r“  r�   Úfz_dom_create_elementrÄ   )r(   Útags     r)   r±  zXml.create_elementN	  s   € Ý•EÔ/°´¸CÑ@Ô@ÑAÔAÐAr*   c                óP   — t          t          j        | j        |¦  «        ¦  «        S r,   )r“  r�   Úfz_dom_create_text_noderÄ   )r(   r   s     r)   rÀ  zXml.create_text_nodeQ	  s   € Ý•EÔ1°4´9¸dÑCÔCÑDÔDÐDr*   c                ó¢   — |                       ¦   «         }|D ]7}t          d|d         z  |d                              dd¦  «        z   ¦  «         Œ8dS )z)Print a list of the node tree below self.z  r   r   r%   ú\nN)r­  rr   rî  )r(   rB   rC   s      r)   Údebugz	Xml.debugT	  s`   € à×#Ò#Ñ%Ô%ˆØð 	Cð 	CˆDÝ�D˜4 œ7‘N T¨!¤W§_¢_°T¸5Ñ%AÔ%AÑAÑBÔBÐBÐBð	Cð 	Cr*   c                ój   — t          j        | j        |||¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_findrÄ   rÌ   r“  ©r(   r  ÚattÚmatchrG   s        r)   r¡   zXml.findZ	  s:   € ÝÔ ¤¨C°°eÑ<Ô<ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ój   — t          j        | j        |||¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_find_nextrÄ   rÌ   r“  r  s        r)   Ú	find_nextzXml.find_next_	  s:   € ÝÔ$ d¤i°°c¸5ÑAÔAˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó�   — t          j        | j        ¦  «        rd S t          j        | ¦  «        }|j        rt          |¦  «        S d S r,   )r�   Úfz_xml_textrÄ   Úfz_dom_first_childrÌ   r“  r  s     r)   r§  zXml.first_childd	  sL   € åÔ˜dœiÑ(Ô(ð 	àˆFÝÔ&¨Ñ-Ô-ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó>   — |sJ ‚t          j        | j        |¦  «        S r,   )r�   Úfz_dom_attributerÄ   ©r(   Úkeys     r)   r¹  zXml.get_attribute_valuem	  s    € Øˆ
ˆ
ˆsÝÔ% t¤y°#Ñ6Ô6Ð6r*   c                ó¸   — t          j        | j        ¦  «        rd S t          ¦   «         }d}	 t          j        | j        |¦  «        \  }}|r|sn|||<   |dz  }Œ-|S ©Nr   r   )r�   r"  rÄ   r5   Úfz_dom_get_attribute)r(   Úresultr®   r"  r'  s        r)   r¦  zXml.get_attributesq	  sw   € ÝÔ˜dœiÑ(Ô(ð 	àˆFÝ‘”ˆØˆð	ÝÔ1°4´9¸aÑ@Ô@‰HˆC�Øð ˜cð ØØˆF�C‰LØ�‰FˆAð	ð ˆr*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_insert_afterrÄ   ©r(   r¨  s     r)   Úinsert_afterzXml.insert_after	  s   € ÝÔ! 4¤9¨d¬iÑ8Ô8Ð8Ð8Ð8r*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_insert_beforerÄ   r.  s     r)   Úinsert_beforezXml.insert_before‚	  s   € ÝÔ" D¤I¨t¬yÑ9Ô9Ð9Ð9Ð9r*   c                ó(  — |                      ¦   «         }t          |¦  «        }t          |¦  «        D ]^\  }}|                      |                      |¦  «        ¦  «         ||dz
  k     r(|                      |                      d¦  «        ¦  «         Œ_| S )Nr   rü  )rì  r7   rþ  r²  rÀ  r±  )r(   r   rÿ  r   r®   ro   s         r)   Úinsert_textzXml.insert_text…	  s�   € Ø—’Ñ!Ô!ˆÝ˜‘Z”Zˆ
Ý  Ñ'Ô'ð 	=ð 	=‰GˆAˆtØ×Ò˜d×3Ò3°DÑ9Ô9Ñ:Ô:Ð:Ø�: ‘>Ò!Ð!Ø×!Ò! $×"5Ò"5°dÑ";Ô";Ñ<Ô<Ð<øØˆr*   c                ó   — | j         duS )zCheck if this is a text node.Nrq   r.   s    r)   r¤  zXml.is_textŽ	  s   € ð Œy Ð$Ð$r*   c                ó6   — | j         }|€dS 	 |j        }|s|S |}Œ)zReturn last child node.N)r§  rL  )r(   r«  rL  s      r)   Ú
last_childzXml.last_child“	  s9   € ð Ô ˆØˆ=Ø�4ð	Ø”:ˆDØð Ø�ØˆEð		r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_nextrÄ   rÌ   r“  r  s     r)   rL  zXml.nextŸ	  s4   € åÔ ¤Ñ+Ô+ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_parentrÄ   rÌ   r“  r  s     r)   rû   z
Xml.parent¥	  s4   € åÔ! 4¤9Ñ-Ô-ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_previousrÄ   rÌ   r“  r  s     r)   ÚpreviouszXml.previous«	  s4   € åÔ# T¤YÑ/Ô/ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_dom_removerÄ   r.   s    r)   Úremovez
Xml.remove±	  s   € ÝÔ˜TœYÑ'Ô'Ð'Ð'Ð'r*   c                óB   — |sJ ‚t          j        | j        |¦  «         d S r,   )r�   Úfz_dom_remove_attributerÄ   r&  s     r)   rº  zXml.remove_attribute´	  s&   € Øˆ
ˆ
ˆsÝÔ% t¤y°#Ñ6Ô6Ð6Ð6Ð6r*   c                óN   — t          t          j        | j        ¦  «        ¦  «        S r,   )r“  r�   Úfz_xml_rootrÄ   r.   s    r)   ÚrootzXml.root¸	  s   € å•EÔ% t¤yÑ1Ô1Ñ2Ô2Ð2r*   c                óú   — t          |t          ¦  «        r|}nJ|t          k    rd}n<|t          k    rd}n.|t          k    rd}n |t
          k    rd}nt          d|›�¦  «        ‚|                      d|› �¦  «         | S )z Set text alignment via CSS styler  ÚcenterÚrightÚjustifyzUnrecognised align=ztext-align: )r>   rá  ÚTEXT_ALIGN_LEFTÚTEXT_ALIGN_CENTERÚTEXT_ALIGN_RIGHTÚTEXT_ALIGN_JUSTIFYrÃ   rö  )r(   r!  Úts      r)   Ú	set_alignzXml.set_align¼	  s�   € å�u�cÑ"Ô"ð 	7ØˆAˆAØ•oÒ%Ð%ØˆAˆAØÕ'Ò'Ð'ØˆAˆAØÕ&Ò&Ð&ØˆAˆAØÕ(Ò(Ð(ØˆAˆAåÐ5¨UÐ5Ð5Ñ6Ô6Ð6Ø�ŠÐ) aÐ)Ð)Ñ*Ô*Ð*Øˆr*   c                óD   — |sJ ‚t          j        | j        ||¦  «         d S r,   )r�   Úfz_dom_add_attributerÄ   )r(   r'  r¸   s      r)   r»  zXml.set_attributeÍ	  s(   € Øˆ
ˆ
ˆsÝÔ" D¤I¨s°EÑ:Ô:Ð:Ð:Ð:r*   c                ó\   — |                       d|                      |¦  «        › �¦  «         | S )z"Set background color via CSS stylezbackground-color: )rö  r  ©r(   r  s     r)   Úset_bgcolorzXml.set_bgcolorÑ	  s.   € à�ŠÐD¨D¯OªO¸EÑ,BÔ,BÐDÐDÑEÔEÐEØˆr*   Tc                óD   — |rd}nd}|                       d|› �¦  «         | S )zSet bold on / off via CSS styleÚboldÚnormalzfont-weight: ©r  ©r(   r"  s     r)   Úset_boldzXml.set_boldÖ	  s8   € àð 	ØˆCˆCàˆCØ×ÒÐ 5°Ð 5Ð 5Ñ6Ô6Ð6Øˆr*   c                ó\   — |                       d|                      |¦  «        › �¦  «         | S )zSet text color via CSS stylezcolor: )r  r  rT  s     r)   Ú	set_colorzXml.set_colorß	  s0   € à×ÒÐ B¨$¯/ª/¸%Ñ*@Ô*@Ð BÐ BÑCÔCÐCØˆr*   c                ó6   — |                       d|› �¦  «         | S )z(Set number of text columns via CSS stylez	columns: rY  )r(   Úcolss     r)   Úset_columnszXml.set_columnsä	  s$   € à×ÒÐ 2¨DÐ 2Ð 2Ñ3Ô3Ð3Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z"Set font-family name via CSS stylezfont-family: rY  )r(   Úfonts     r)   Úset_fontzXml.set_fonté	  s$   € à×ÒÐ 6°Ð 6Ð 6Ñ7Ô7Ð7Øˆr*   c                ót   — t          |¦  «        t          u rd}nd}d|› |› �}|                      |¦  «         | S )z Set font size name via CSS styler\   Úpxzfont-size: )rÈ   rá  r  )r(   r
  re  r   s       r)   Úset_fontsizezXml.set_fontsizeî	  sJ   € å�‰>Œ>�SÐ Ð ØˆBˆBàˆBØ+˜XÐ+ rÐ+Ð+ˆØ×Ò Ñ%Ô%Ð%Øˆr*   c                ó”   — | j         }|                     dd|¦  «        rt          d|› d�¦  «        ‚|                      d|¦  «         | S )zSet a unique id.NrH  zid 'z' already exists)rF  r¡   rÃ   r»  )r(   ÚuniquerF  s      r)   Úset_idz
Xml.set_idø	  sX   € ð ŒyˆØ�9Š9�T˜4 Ñ(Ô(ð 	>ÝÐ< FÐ<Ð<Ð<Ñ=Ô=Ð=Ø×Ò˜4 Ñ(Ô(Ð(Øˆr*   c                óD   — |rd}nd}|                       d|› �¦  «         | S )z!Set italic on / off via CSS styleÚitalicrX  zfont-style: rY  rZ  s     r)   Ú
set_italiczXml.set_italic
  s8   € àð 	ØˆCˆCàˆCØ×ÒÐ 4¨sÐ 4Ð 4Ñ5Ô5Ð5Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z>Set inter-line spacing value via CSS style - block-level only.z-mupdf-leading: ©rö  )r(   Úleadings     r)   Úset_leadingzXml.set_leading

  s"   € à�ŠÐ3¨'Ð3Ð3Ñ4Ô4Ð4Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z,Set inter-letter spacing value via CSS stylezletter-spacing: rY  ©r(   Úspacings     r)   Úset_letter_spacingzXml.set_letter_spacing
  s$   € à×ÒÐ <°7Ð <Ð <Ñ=Ô=Ð=Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z6Set line height name via CSS style - block-level only.zline-height: rn  )r(   Ú
lineheights     r)   Úset_lineheightzXml.set_lineheight
  s"   € à�ŠÐ3 zÐ3Ð3Ñ4Ô4Ð4Øˆr*   c                ó6   — |                       d|› �¦  «         | S )zSet margin values via CSS stylez	margins: rY  rZ  s     r)   Úset_marginszXml.set_margins
  s$   € à×ÒÐ 1¨CÐ 1Ð 1Ñ2Ô2Ð2Øˆr*   c                ó6   — |                       d|› �¦  «         | S )zSet opacity via CSS stylez	opacity: rY  )r(   rf  s     r)   r²  zXml.set_opacity
  s$   € à×ÒÐ 5¨GÐ 5Ð 5Ñ6Ô6Ð6Øˆr*   c                ó0   — |                       d¦  «         | S )z$Insert a page break after this node.zpage-break-after: alwaysrn  r.   s    r)   Úset_pagebreak_afterzXml.set_pagebreak_after#
  s   € à�ŠÐ1Ñ2Ô2Ð2Øˆr*   c                ó0   — |                       d¦  «         | S )z%Insert a page break before this node.zpage-break-before: alwaysrn  r.   s    r)   Úset_pagebreak_beforezXml.set_pagebreak_before(
  s   € à�ŠÐ2Ñ3Ô3Ð3Øˆr*   c                ó¾  — | j         }|                     ¦   «         }|�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�| 	                    |¦  «         |	�| 
                    |	¦  «         |
�|                     |
¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     ¦   «          |�|                     ¦   «          |�|                     |¦  «         |�|                      |¦  «         |�|                      |¦  «         g }|                     d¦  «        }|�|                     |¦  «         |j        }|r1|                     |                     d¦  «        ¦  «         |j        }|°1|                      dd                     |¦  «        ¦  «         |                     ¦   «          | S )z`Set any or all properties of a node.

        To be used for existing nodes preferably.
        Nrm  rõ  )rF  rÎ  rP  rU  r[  r]  r`  rc  rf  Úset_text_indentrl  rp  rt  rw  ry  r|  r~  Úset_word_spacingri  r½  r¹  rk   r§  r»  rê  rA  )r(   r!  ÚbgcolorrW  r  Úcolumnsrb  r
  Úindentrk  ro  Úletter_spacingrv  ÚmarginsÚpagebreak_afterÚpagebreak_beforeÚword_spacingÚunqidr¼  rF  ÚtempÚstylesÚ	top_styler«  s                           r)   Úset_propertieszXml.set_properties-
  s…  € ð2 ŒyˆØ× Ò Ñ"Ô"ˆØÐØ�NŠN˜5Ñ!Ô!Ð!ØÐØ×Ò˜WÑ%Ô%Ð%ØÐØ�MŠM˜$ÑÔÐØÐØ�NŠN˜5Ñ!Ô!Ð!ØÐØ×Ò˜WÑ%Ô%Ð%ØÐØ�MŠM˜$ÑÔÐØÐØ×Ò˜hÑ'Ô'Ð'ØÐØ× Ò  Ñ(Ô(Ð(ØÐØ�OŠO˜FÑ#Ô#Ð#ØÐØ×Ò˜WÑ%Ô%Ð%ØÐ%Ø×#Ò# NÑ3Ô3Ð3ØÐ!Ø×Ò 
Ñ+Ô+Ð+ØÐØ×Ò˜WÑ%Ô%Ð%ØÐ&Ø×$Ò$Ñ&Ô&Ð&ØÐ'Ø×%Ò%Ñ'Ô'Ð'ØÐ#Ø×!Ò! ,Ñ/Ô/Ð/ØÐØ�KŠK˜ÑÔÐØˆ?Ø�NŠN˜3ÑÔÐàˆØ×,Ò,¨WÑ5Ô5ˆ	ØÐ Ø�MŠM˜)Ñ$Ô$Ð$ØÔ ˆØð 	&Ø�MŠM˜%×3Ò3°GÑ<Ô<Ñ=Ô=Ð=ØÔ%ˆEð ð 	&ð 	×Ò˜7 C§H¢H¨VÑ$4Ô$4Ñ5Ô5Ð5Ø�Š‰ŒˆØˆr*   c                ó6   — |                       d|› �¦  «         | S )z;Set text indentation name via CSS style - block-level only.ztext-indent: rn  )r(   r„  s     r)   r€  zXml.set_text_indenty
  s"   € à�ŠÐ/ vÐ/Ð/Ñ0Ô0Ð0Øˆr*   Ú	underlinec                ó6   — |                       d|› �¦  «         | S )Nztext-decoration: rY  rZ  s     r)   Úset_underlinezXml.set_underline~
  s$   € Ø×ÒÐ 9°CÐ 9Ð 9Ñ:Ô:Ð:Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z*Set inter-word spacing value via CSS stylezword-spacing: rY  rr  s     r)   r�  zXml.set_word_spacing‚
  s$   € à×ÒÐ :°Ð :Ð :Ñ;Ô;Ð;Øˆr*   c                óÔ   — | }| j         }|€dS |j        r|j        }|€n|j        °|�|j        dk    rdS 	 |€|S |j        dv s|j        r|j        }Œ|j        dk    r
|}|j        }n|S Œ4)z$Find deepest level in stacked spans.Nrò  T)r!   rR  rû  Úbody)r7  r¤  r>  r¥  rL  r§  )r(   rû   r«  s      r)   rÁ  zXml.span_bottom‡
  s©   € àˆØ”ˆØˆ=Ø�4ØŒmð 	Ø”NˆEØˆ}Øð Œmð 	ð ˆ=˜EœM¨VÒ3Ð3Ø�4ð
	Øˆ}Ø�ØŒ}Ð 9Ð9Ð9¸U¼]Ð9Øœ
�ØØŒ} Ò&Ð&Ø�ØÔ)��à�ð
	r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Ú
fz_xml_tagrÄ   r.   s    r)   r¥  zXml.tagname 
  s   € åÔ ¤Ñ+Ô+Ð+r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   r"  rÄ   r.   s    r)   r   zXml.text¤
  s   € åÔ  $¤)Ñ,Ô,Ð,r*   r,   r>  rA  ©r   N©T)NNNNNNNNNNNNNNNNNN)r�  )Nr/   r0   r1   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  Ústaticmethodr  r±  rÀ  r  r¡   r   rB  r§  r¹  r¦  r/  r2  r4  r¤  r7  rL  rû   r>  rA  rº  rF  rP  r»  rU  r[  r]  r`  rc  rf  ri  rl  rp  rt  rw  ry  r²  r|  r~  rŽ  r€  r’  r�  rÁ  r¥  r   Úadd_varÚadd_sampÚadd_kbdr-   r*   r)   r“  r“  Z  s.  € € € € € ðð ð ðð ð ð?ð ?ð ?ðð ð ð,ð ð ðð ð ð	ð 	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ð ðð ð ðð ð ð ðð ð ð ðð ð ðð ð ð ðð ð ðð ð ð
ð ð ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ðð ð ð:ð :ð :ðð ð ð3ð 3ð 3ðð ð ð ðð ñ „\ððBð Bð BðEð Eð EðCð Cð Cðð ð ð
ð ð ð
 ðð ñ „Xðð7ð 7ð 7ðð ð ð9ð 9ð 9ð:ð :ð :ðð ð ð ð%ð %ñ „Xð%ð ð	ð 	ñ „Xð	ð ðð ñ „Xðð
 ðð ñ „Xðð
 ðð ñ „Xðð
(ð (ð (ð7ð 7ð 7ð ð3ð 3ñ „Xð3ðð ð ð";ð ;ð ;ðð ð ð
ð ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ðð ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð ØØØØØØØØØØØØØ Ø!ØØØð'Jð Jð Jð JðXð ð ð
ð ð ð ðð ð ð
ð ð ð2 ð,ð ,ñ „Xð,ð ð-ð -ñ „Xð-ð €GØ€HØ€G€G€Gr*   r“  c                  óL   — e Zd Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú
Colorspacec                óÚ  — t          |t          j        ¦  «        r	|| _        dS |t          k    r*t          j        t          j        j        ¦  «        | _        dS |t          k    r*t          j        t          j        j        ¦  «        | _        dS |t          k    r*t          j        t          j        j	        ¦  «        | _        dS t          j        t          j        j	        ¦  «        | _        dS )z!Supported are GRAY, RGB and CMYK.N)
r>   r�   ÚFzColorspacerÄ   ÚCS_GRAYÚ
Fixed_GRAYÚCS_CMYKÚ
Fixed_CMYKÚCS_RGBÚ	Fixed_RGB)r(   rk  s     r)   rŒ   zColorspace.__init__¯
  s²   € å�u�eÔ0Ñ1Ô1ð 		IØˆDŒIˆIˆIØ•gÒÐÝÔ*­5Ô+=Ô+HÑIÔIˆDŒIˆIˆIØ•gÒÐÝÔ*­5Ô+=Ô+HÑIÔIˆDŒIˆIˆIØ•fŠ_ˆ_ÝÔ*­5Ô+=Ô+GÑHÔHˆDŒIˆIˆIåÔ*­5Ô+=Ô+GÑHÔHˆDŒIˆIˆIr*   c                ó6   — d| j                  }d|› d| j        › �S )N)r\   ÚGRAYr\   ÚRGBÚCMYKzColorspace(CS_z) - )rE   r   ©r(   r4  s     r)   rþ   zColorspace.__repr__¼
  s&   € Ø+¨D¬FÔ3ˆØ2 Ð2Ð2 t¤yÐ2Ð2Ð2r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_colorspace_namerÄ   r.   s    r)   Ú_namezColorspace._nameÀ
  s   € ÝÔ'¨¬	Ñ2Ô2Ð2r*   c                ó4   — t          j        | j        ¦  «        S )zSize of one pixel.)r�   Úfz_colorspace_nrÄ   r.   s    r)   rE   zColorspace.nÃ
  ó   € õ Ô$ T¤YÑ/Ô/Ð/r*   c                ó*   — |                       ¦   «         S )zName of the Colorspace.©r°  r.   s    r)   r   zColorspace.nameÈ
  s   € ð �zŠz‰|Œ|Ðr*   N)	r/   r0   r1   rŒ   rþ   r°  rB  rE   r   r-   r*   r)   r   r   ­
  sz   € € € € € ðIð Ið Ið3ð 3ð 3ð3ð 3ð 3ð ð0ð 0ñ „Xð0ð ðð ñ „Xðð ð r*   r   c                  ó   — e Zd Zd„ ZdS )ÚDeviceWrapperc                ó¸  — t          |t          j        ¦  «        r|\  }|| _        d S t          |t          d ¦  «        rƒ|\  }}t          |¦  «        }t          j        |¦  «        r-t          j        t          j        ¦   «         |¦  «        | _        d S t          j	        t          j        ¦   «         ||¦  «        | _        d S t          |t          j
        ¦  «        r|\  }t          j        |¦  «        | _        d S t          |t          j        d ¦  «        r5|\  }}t          j        |¦  «        }	t          j        ||	¦  «        | _        d S t          d|›�¦  «        ‚)Nz%Unrecognised args for DeviceWrapper: )Ú
args_matchr�   ÚFzDevicerÄ   rç  ÚJM_irect_from_pyÚfz_is_infinite_irectÚfz_new_draw_devicer‚  Úfz_new_draw_device_with_bboxÚFzDisplayListÚfz_new_list_devicer  r  Úfz_new_stext_devicerg   )
r(   r  ÚdeviceÚpmr  r?  rÊ  ÚtprÎ  Úoptss
             r)   rŒ   zDeviceWrapper.__init__Ï
  s?  € Ý�t�Uœ^Ñ,Ô,ð 	OØ‰GˆFØˆDŒIˆIˆIÝ˜�v tÑ,Ô,ð 	OØ‰HˆB�Ý# TÑ*Ô*ˆDÝÔ)¨4Ñ0Ô0ð \Ý!Ô4µe´nÑ6FÔ6FÈÑKÔK�”	�	�	å!Ô>ÅÄÑ@PÔ@PÐRTÐVZÑ[Ô[�”	�	�	Ý˜�uÔ2Ñ3Ô3ð 	OØ‰CˆBÝÔ0°"Ñ5Ô5ˆDŒIˆIˆIÝ˜�uÔ0°$Ñ7Ô7ð 	OØ‰IˆB�ÝÔ'¨Ñ/Ô/ˆDÝÔ1°2°tÑ<Ô<ˆDŒIˆIˆIåÐMÀTÐMÐMÑNÔNÐNr*   Nr�   r-   r*   r)   r·  r·  Î
  s(   € € € € € ðOð Oð Oð Oð Or*   r·  c                  óF   — e Zd Zd„ Zd„ Zd
d„Zdd„Zed„ ¦   «         Zd	„ Z	dS )ÚDisplayListc                óD   — t          | ¦  «        t          urd S d| _        d S ©NF)rÈ   rÇ  r  r.   s    r)   Ú__del__zDisplayList.__del__æ
  s"   € Ý�D‰zŒz�[Ð(Ð(¨&¨&ØˆŒˆˆr*   c                óH  — t          |¦  «        dk    rAt          |d         t          j        ¦  «        r!t          j        |d         ¦  «        | _        d S t          |¦  «        dk    r/t          |d         t          j        ¦  «        r|d         | _        d S J d|›�¦   «         ‚)Nr   r   zUnrecognised args=)r7   r>   r�   rx  r¿  rÄ   rI  s     r)   rŒ   zDisplayList.__init__ê
  sˆ   € Ýˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ%´,Ñ?Ô?ˆ>ÝÔ+¨D°¬GÑ4Ô4ˆDŒIˆIˆIÝ�‰YŒY˜!Š^ˆ^¥
¨4°¬7µEÔ4GÑ HÔ Hˆ^Ø˜QœˆDŒIˆIˆIà-Ð- dÐ-Ð-Ñ-Ô-�1r*   Nr   c                óÆ   — t          |t          ¦  «        r|j        }n#t          j        t          j        j        ¦  «        }t          | j        ||||d ¦  «        }d|_        |S ©NT)r>   r   rÄ   r�   r¢  r¨  ÚJM_pixmap_from_display_listr  )r(   ré  rë  rì  r  r"  s         r)   rñ  zDisplayList.get_pixmapò
  s[   € Ý�j¥*Ñ-Ô-ð 	JØ#œˆJˆJåÔ+­EÔ,>Ô,HÑIÔIˆJÝ)¨$¬)°V¸ZÈÐPTÐVZÑ[Ô[ˆØˆŒØˆ
r*   r   c                ó|   — t          j        ¦   «         }||_        t          j        | j        |¦  «        }d|_        |S )z#Make a TextPage from a DisplayList.T)r�   r  rÎ  r  rÄ   r  )r(   rÎ  Ústext_optionsr"  s       r)   r  zDisplayList.get_textpageû
  s8   € åÔ,Ñ.Ô.ˆØ#ˆÔÝÔ ¤	¨=Ñ9Ô9ˆØˆŒØˆ
r*   c                óp   — t          t          j        | j        ¦  «        ¦  «        }t	          |¦  «        }|S r,   )rw  r�   Úfz_bound_display_listrÄ   r4  rZ  s     r)   r  zDisplayList.rect  s,   € å�eÔ9¸$¼)ÑDÔDÑEÔEˆÝ�3‰iŒiˆØˆ
r*   c                ó    — t          j        | j        |j        t	          |¦  «        t          |¦  «        t          j        ¦   «         ¦  «         d S r,   )r�   Úfz_run_display_listrÄ   rÂ  rã  r  ÚFzCookie)r(   Údwr�  Úareas       r)   ÚrunzDisplayList.run	  sL   € ÝÔ!Ø”	Ø”	Ý! !Ñ$Ô$Ý Ñ%Ô%Ý”Ñ Ô ñ	ô 	ð 	ð 	ð 	r*   )NNr   N)r   )
r/   r0   r1   rÊ  rŒ   rñ  r  rB  r  rØ  r-   r*   r)   rÇ  rÇ  å
  s„   € € € € € ðð ð ð.ð .ð .ðð ð ð ðð ð ð ð ðð ñ „Xðð
ð ð ð ð r*   rÇ  c                  ój	  — e Zd Z�d?d„Z�d@d„Zd„ Zd„ Zej        d«�dAd„¦   «         Z	e
j        dk    r$ej        �dBd„¦   «         Z	ej        �dCd„¦   «         Z	d«d„Z	�dDd„Z�dEd„Z�dFd„Zd„ Z�dGd„Zd„ Zd„ Zd„ Z	 	 	 �dH�dId'„Z	 	 	 	 �dJ�dKd*„Zd+„ Z�dLd.„Z�dMd/„Zd0„ Zd1„ Zd2„ Z�dNd3„Zd4„ Z�dOd6„Zd«�dPd<„Zd=„ Z d>„ Z!d?„ Z"d@„ Z#dA„ Z$�dQdB„Z%dC„ Z&dD„ Z'dE„ Z(�dRdH„Z)dI„ Z*dJ„ Z+dK„ Z,dL„ Z-�dSdM„Z.e/dN„ ¦   «         Z0�dQdO„Z1�dTdQ„Z2dR„ Z3dS„ Z4dTdTdUœ�dUdX„Z5e/dY„ ¦   «         Z6dZ„ Z7d[„ Z8�dVd\„Z9�dW�dXd_„Z:d`„ Z;�dW�dYda„Z<db„ Z=	 	 	 �dM�dZdj„Z>�dEdk„Z?�d[dl„Z@�d\dn„ZA�d]dp„ZB�d^dr„ZC	 	 	 	 �dN�d_dt„ZD�d`du„ZEdv„ ZF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dadz„ZGd{„ ZH�dWd|„ZI	 	 	 �db�dcd�„ZJ�dWd‚„ZKdƒ„ ZLd„„ ZM�ddd…„ZNd†„ ZO�ded‡„ZPdˆ„ ZQ�df�dgdŠ„ZR�df�dgd‹„ZSdŒ„ ZT�dfd�„ZUdddddxdTdŽœ�dhd—„ZV	 	 	 	 	 �di�djd „ZW�dkd¡„ZXd¢„ ZY	 �dl�dmd¤„ZZd¥„ Z[�dnd¦„Z\�dnd§„Z]d¨„ Z^	 	 	 	 	 	 	 	 �dod©„Z_	 	 	 	 	 	 	 �dp�dqdµ„Z`d d d d dPdPdPdddPdd¶œd·„Zae/d¸„ ¦   «         Zbe/d¹„ ¦   «         Zce/dº„ ¦   «         Zde/d»„ ¦   «         Zee/d¼„ ¦   «         Zfe/d½„ ¦   «         Zgd¾„ Zhd¿„ ZidÀ„ ZjdÁ„ ZkdÂ„ ZldÃ„ ZmdÄ„ ZndÅ„ Zo�drdÆ„ZpdÇ„ ZqdÈ„ Zre/dÉ„ ¦   «         Zse/dÊ„ ¦   «         ZtdË„ Zu�dsdÌ„Zv�dl�dtdÏ„ZwdÐ„ ZxdÑ„ ZydÒ„ Zze/�dudÓ„¦   «         Z{�dW�dXdÔ„Z|e/dÕ„ ¦   «         Z}�drdÖ„Z~e/d×„ ¦   «         Z	 	 	 �dR�dvdØ„Z€dÙ„ Z�dÚ„ Z‚e/dÛ„ ¦   «         ZƒdÜ„ Z„dÝ„ Z…dÞ„ Z†e/�dFdß„¦   «         Z‡e/�dFdà„¦   «         Zˆ�dM�dwdå„Z‰dæ„ ZŠ�dxdç„Z‹e/dè„ ¦   «         ZŒdé„ Z��dydê„ZŽdë„ Z��dzdì„Z�	 	 	 	 	 	 	 	 	 	 �d{dí„Z‘�d|dî„Z’dï„ Z“	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d}dð„Z”dñ„ Z•dò„ Z–	 	 	 	 	 	 	 	 	 	 	 	 	 �d~�d�d „Z—	 	 	 	 �d€�d��d„Z˜�d„ Z™�dr�d„Zš�d‚�d„Z›d«�d„Zœ�dƒ�d„Z��dr�d„�d
„Zž�d…�d„ZŸ	 	 	 	 �d†�d‡�d„Z �dˆ�d„Z¡�d‰�d„Z¢�d„ Z£	 �d|�dŠ�d„Z¤	 	 	 	 	 	 	 	 �d‹�dŒ�d „Z¥�d!„ Z¦�d��dŽ�d$„Z§d«�d%„Z¨�dr�d&„Z©�d��d'„Zªe/�d(„ ¦   «         Z«	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d��d)„Z¬�d*„ Z­e/�d+„ ¦   «         Z®d�d,œ�d‘�d0„Z¯�d1„ Z°�d2„ Z±�d3„ Z²�d4„ Z³d«�d5„Z´�d6„ Zµ�d7„ Z¶�dx�d8„Z·�d9„ Z¸�d:„ Z¹�d;„ Zº�d<„ Z»�d=Z¼ e/�d>„ ¦  «        Z½e´Z¾dS (’  rÁ   Úreturnrø   c                ó~  — t          |¦  «        t          u r|| j        k     rdS dS t          |¦  «        t          t          fvst          |¦  «        dk    rdS |\  }}	 t          |t          ¦  «        r|dk     s|| j        k    rdS 	 t          |t          ¦  «        r|dk     s||                      |¦  «        k    rdS dS )NTFr   r   )	rÈ   r4   Ú
page_countrµ   r´   r7   r>   Úchapter_countÚchapter_page_count)r(   ÚlocÚchapterÚpnos       r)   Ú__contains__zDocument.__contains__  sÑ   € Ý�‰9Œ9�ÐÐØ�T”_Ò$Ð$Ø�tØ�5Ý�‰9Œ9�U¥D˜MÐ)Ð)­S°©X¬X¸ª]¨]Ø�5Ø‰ˆ�ð	Ý! '­3Ñ/Ô/ð	à˜Q’;�;Ø˜dÔ0Ò0Ð0à�5ð	Ý! #¥sÑ+Ô+ð	à˜’7�7Ø˜$×1Ò1°'Ñ:Ô:Ò:Ð:à�5Øˆtr*   ÚNonec                óŒ  — | j         st          d¦  «        ‚t          |¦  «        t          u r|                      |¦  «        S t          |¦  «        t
          t          t          fv r|                      |¦  «        S t          |¦  «        t          urt          d¦  «        ‚| j
        }|j        r|j        nd}|j        r|j        n|}|j        r|j        nd}|dk     r||z  }|dk     °||k    rt          d¦  «        ‚|dk     r||z  }|dk     °||k    rt          d¦  «        ‚|                      t          |||¦  «        ¦  «        S )Nú	is no PDFzbad argument typer   r   úbad page number(s))Úis_pdfrÃ   rÈ   r4   Údelete_pager´   rµ   r\  Údelete_pagesÚslicerÜ  r¤  ÚstopÚstep)r(   r®   Úpcr¤  rë  rì  s         r)   Ú__delitem__zDocument.__delitem__.  sP  € ØŒ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�‰7Œ7•cˆ>ˆ>Ø×#Ò# AÑ&Ô&Ð&Ý�‰7Œ7•t�U¥EÐ*Ð*Ð*Ø×$Ò$ QÑ'Ô'Ð'Ý�‰7Œ7�%ÐÐÝÐ0Ñ1Ô1Ð1ØŒ_ˆØœ7Ð)�”�¨ˆØœÐ'ˆqŒvˆv RˆØœÐ&ˆqŒvˆv QˆØ�aŠiˆiØ�R‰KˆEð �aŠiˆià�BŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ø�QŠhˆhØ�B‰JˆDð �QŠhˆhà�"Š9ˆ9ÝÐ1Ñ2Ô2Ð2Ø× Ò ¥ u¨d°DÑ!9Ô!9Ñ:Ô:Ð:r*   c                ó   — | S r,   r-   r.   s    r)   r•  zDocument.__enter__E  r–  r*   c                ó.   — |                       ¦   «          d S r,   ©ÚcloserI  s     r)   r˜  zDocument.__exit__H  ó   € Ø�
Š
‰Œˆˆˆr*   r   r®   r4   rÒ   c                ó   — d S r,   r-   ©r(   r®   s     r)   rp  zDocument.__getitem__K  s   € àˆr*   )r   é	   rê  ú
list[Page]c                ó   — d S r,   r-   rõ  s     r)   rp  zDocument.__getitem__P  ó   € àˆCr*   útuple[int, int]c                ó   — d S r,   r-   rõ  s     r)   rp  zDocument.__getitem__T  rù  r*   c                ó¸  ‡ — t          |t          ¦  «        r5ˆ fd„t          |                     t	          ‰ ¦  «        ¦  «        Ž D ¦   «         S t          |t
          ¦  «        sOt          |t          ¦  «        r,t	          |¦  «        dk    rt          d„ |D ¦   «         ¦  «        sJ d|›d�¦   «         ‚|‰ vrt          d|› d�¦  «        ‚‰  	                    |¦  «        S )Nc                ó    •— g | ]
}‰|         ‘ŒS r-   r-   )r­   r‘  r(   s     €r)   r¯   z(Document.__getitem__.<locals>.<listcomp>Z  s   ø€ ÐBÐBÐB �D˜”GÐBÐBÐBr*   r   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r,   )r>   r4   ©r­   r4  s     r)   ú	<genexpr>z'Document.__getitem__.<locals>.<genexpr>[  s0   è è € ÐRqÐRqÐjkÕS]Ð^_ÕadÑSeÔSeÐRqÐRqÐRqÐRqÐRqÐRqr*   zInvalid item number: i=r   úpage z not in document)
r>   rê  r\  Úindicesr7   r4   rµ   ÚallÚ
IndexErrorÚ	load_pagerõ  s   ` r)   rp  zDocument.__getitem__X  så   ø€ Ý�a�ÑÔð 	CØBÐBÐBÐB¥U¨A¯IªIµc¸$±i´iÑ,@Ô,@Ð%AÐBÑBÔBÐBÝ˜!�SÑ!Ô!ð 	.¥j°µEÑ&:Ô&:ð 	.½sÀ1¹v¼vÈº{¸{ÍsÐRqÐRqÐopÐRqÑRqÔRqÑOqÔOq¸{¸{Ø-¨Ð-Ð-Ð-ñ @K¼{Ðrà�Dˆ=ˆ=ÝÐ8 QÐ8Ð8Ð8Ñ9Ô9Ð9Ø�~Š~˜aÑ Ô Ð r*   Né   c	                óÈ  — t           }	da 	 d| _        d| _        d| _        d| _        g | _        i | _        i | _        i | _        t          j	        ¦   «         | _
        t          |t          j        ¦  «        r|}
|
| _        d| _        	 |	a dS |}|}t!          |¦  «        }t          j        |¦  «        s|j        |j        z
  }|j        |j        z
  }|| _        || _        t          |t0          j        ¦  «        rt5          |j        ¦  «        }nkt          |t8          ¦  «        rt5          |¦  «        }nF|st5          ¦   «         }n5t          |t4          ¦  «        s t;          dt=          |¦  «        ›d�¦  «        ‚|��o|�|€|}t          |t>          t@          f¦  «        rntt          |tB          ¦  «        rt?          |¦  «        }nOt          |tD          j#        ¦  «        r| $                    ¦   «         }n t;          dt=          |¦  «        ›d�¦  «        ‚|| _        t          |t>          t@          f¦  «        sJ ‚tK          |¦  «        dk    rtM          d¦  «        ‚t          j'        t          j(        |¦  «        tK          |¦  «        ¦  «        }	 t          j)        |r|nd	||j        ¦  «        }�n# tT          $ r.}tV          d
k    rtY          ¦   «          t[          d¦  «        |‚d}~ww xY w|�rº|rJ ‚t          |t8          ¦  «        rn[t]          |d¦  «        rt9          |¦  «        }n;t]          |d¦  «        r|j        }n#t;          dt=          |¦  «        ›d|›d�¦  «        ‚|| _        t^          j0         1                    |¦  «        ste          d|› d�¦  «        ‚t^          j0         3                    |¦  «        st[          d|› d�¦  «        ‚t^          j0         4                    |¦  «        dk    rtM          d|›d�¦  «        ‚|r|}n,t1          j        |¦  «        j5         6                    d¦  «        }	 t          j7        |¦  «        }t          j)        |||j        ¦  «        }ni# tT          $ r5}tV          d
k    rtY          ¦   «          t[          d|›d|› d�¦  «        |‚d}~ww xY wt          j        ¦   «         }t          j8        |¦  «        }|dk    r|dk    rt          j9        ||||¦  «         n+t          j:        |¦  «        rt          j9        |ddd¦  «         || _        d| _;        | j;        rÓtx           =                    ¦   «         | _>        | j?        rd| _        n|  @                    ¦   «          |r'| A                    ¦   «          B                    d¦  «        s|rgd| A                    ¦   «         v rQ	 |  C                    ¦   «         }n;# tT          $ r.}tV          d
k    rtY          ¦   «          t[          d¦  «        |‚d}~ww xY wtˆ          rNt          | j        t          j        ¦  «        | _        | j        rtŠ          jF        | _G        ntŠ          jH        | _G        |	a dS # |	a w xY w)aV  Creates a document. Use 'open' as a synonym.

        Notes:
            Basic usages:
            open() - new PDF document
            open(filename) - string or pathlib.Path, must have supported
                    file extension.
            open(type, buffer) - type: valid extension, buffer: bytes object.
            open(stream=buffer, filetype=type) - keyword version of previous.
            open(filename, fileype=type) - filename with unrecognized extension.
            rect, width, height, fontsize: layout reflowable document
            on open (e.g. EPUB). Ignored if n/a.
        r   FNTzbad archive: type(archive)=r   zbad stream: type(stream)=zCannot open empty stream.r\   r   zFailed to open streamÚabsoluter   zbad filename: type(filename)=z
 filename=zno such file: 'rü   z' is no filez!Cannot open empty file: filename=zFailed to open file z	 as type i�  iX  r  Úsvgúcannot open broken document)IÚJM_mupdf_show_errorsrÂ   Úis_encryptedÚmetadataÚ	FontInfosÚ	GraftmapsÚ
ShownPagesÚInsertedImagesr  ÚWeakValueDictionaryÚ
_page_refsr>   r�   rÆ   rÄ   Úthis_is_pdfr  r¾  Úx1Úx0Úy1Úy0r°  r	   rx  ry  rD  r   rá  r¾  rÈ   r)  Ú
memoryviewrh  r9   ri  r�  r7   ÚEmptyFileErrorÚfz_open_memoryÚpython_buffer_dataÚ$fz_open_document_with_stream_and_dirrg   r  rv   ÚFileDataErrorr;   rd   r
   ÚexistsÚFileNotFoundErrorr|  ÚgetsizeÚsuffixÚstripÚfz_open_filerÅ   Úfz_layout_documentÚfz_is_document_reflowabler  r  Úgen_idÚ	_graft_idÚ
needs_passÚinit_docrâ  rí  Úconvert_to_pdfr'  r   Úpage_count_pdfÚpage_count2Úpage_count_fz)r(   rf   r	   Úfiletyper  rl  rà  r
  ÚarchiveÚJM_mupdf_show_errors_oldÚpdf_documentr   rÑ  r.  Ú	fz_streamr:  rp  r"  rj  r  s                       r)   rŒ   zDocument.__init__a  s¼  € õ$ $8Ð Ø ÐðF	<Ø %ˆDŒNØ %ˆDÔØ %ˆDÔØ#ˆDŒMØ!ˆDŒNØ!ˆDŒNØ!ˆDŒOØ#%ˆDÔÝ&Ô:Ñ<Ô<ˆDŒOÝ˜(¥EÔ$5Ñ6Ô6ð Ø'�Ø(�”	Ø#'�Ô Øðp $<Ð Ð Ð ðm ˆAØˆAÝ Ñ%Ô%ˆAÝÔ,¨QÑ/Ô/ð  Ø”D˜1œ4‘K�Ø”D˜1œ4‘K�à!ˆDŒJØ ˆDŒKÝ˜'¥7¤<Ñ0Ô0ð CÝ! '¤,Ñ/Ô/��Ý˜G¥SÑ)Ô)ð CÝ! 'Ñ*Ô*��Øð CÝ!™)œ)��Ý ­Ñ1Ô1ð CÝÐ Aµ°W±´Ð AÐ AÐ AÑBÔBÐBØÑ!ØÐ'¨HÐ,<ð  (�HÝ˜f¥u­jÐ&9Ñ:Ô:ð EØÝ ­	Ñ2Ô2ð EÝ" 6™]œ]�F�FÝ ­¬
Ñ3Ô3ð EØ#Ÿ_š_Ñ.Ô.�F�Få#Ð$Cµ4¸±<´<Ð$CÐ$CÐ$CÑDÔDÐDð %�”å! &­5µ*Ð*=Ñ>Ô>Ð>Ð>Ð>Ý�v‘;”; !Ò#Ð#õ )Ð)DÑEÔEÐEå!Ô0µÔ1IÈ&Ñ1QÔ1QÕSVÐW]ÑS^ÔS^Ñ_Ô_�	ðHÝÔDÐQYÐEaÀXÀXÐ_aÐclÐnuÔnzÑ{Ô{�C‘CøÝ ð Hð Hð HÝ+¨aÒ/Ð/µNÑ4DÔ4DÐ4DÝ'Ð(?Ñ@Ô@ÀaÐGøøøøðHøøøð ñ ",Ø!Ð!Ð!�zÝ˜h­Ñ,Ô,ð UØÝ˜X zÑ2Ô2ð UÝ" 8™}œ}�H�HÝ˜X vÑ.Ô.ð UØ'œ}�H�Hå#Ð$SµT¸(±^´^Ð$SÐ$SÀxÐ$SÐ$SÐ$SÑTÔTÐTØ%�”
õ ”w—~’~ hÑ/Ô/ð RÝ+Ð,I¸hÐ,IÐ,IÐ,IÑJÔJÐJÝœŸš¨Ñ1Ô1ð RÝ'Ð(B¨HÐ(BÐ(BÐ(BÑCÔCÐCÝ”W—_’_ XÑ.Ô.°!Ò3Ð3Ý(Ð)PÀHÐ)PÐ)PÐ)PÑQÔQÐQàð FØ%�F�Få$œ\¨(Ñ3Ô3Ô:×@Ò@ÀÑEÔE�FðfÝ %Ô 2°8Ñ <Ô <�IÝÔDÀVÈYÐX_ÔXdÑeÔe�C�CøÝ ð fð fð fÝ+¨aÒ/Ð/µNÑ4DÔ4DÐ4DÝ'Ð(]¸xÐ(]Ð(]ÐTZÐ(]Ð(]Ð(]Ñ^Ô^ÐdeÐeøøøøðføøøõ
 Ô'Ñ)Ô)�ÝÔ& sÑ+Ô+�à�1Šuˆu˜˜Qš˜ÝÔ(¨¨a°°HÑ=Ô=Ð=Ð=ÝÔ0°Ñ5Ô5ð <ÝÔ(¨¨c°3¸Ñ;Ô;Ð;àˆDŒIð  ˆDŒLàŒ|ð RÝ!&§¢¡¤�”Ø”?ð $Ø(,�DÔ%Ð%à—M’M‘O”O�Oð ð R §¢Ñ 0Ô 0× 9Ò 9¸%Ñ @Ô @ð RÀHð RÐQVÐZb×ZhÒZhÑZjÔZjÐQjÐQjðRØ ×/Ò/Ñ1Ô1˜˜øÝ$ð Rð Rð RÝ/°!Ò3Ð3½Ñ8HÔ8HÐ8HÝ+Ð,IÑJÔJÐPQÐQøøøøðRøøøõ ð ;Ý#-¨t¬y½%Ô:KÑ#LÔ#L�Ô ØÔ#ð ;Ý',Ô';�DÔ$Ð$å',Ô':�DÔ$à#;Ð Ð Ð øÐ#;Ð Ð;Ð;Ð;Ð;s‚   ‹A:Y Â
HY ÊJ. Ê,Y Ê.
K&Ê8)K!Ë!K&Ë&EY Ð4/Q$ Ñ#Y Ñ$
R#Ñ.0RÒR#Ò#DY Ö4W	 ×Y ×	
X×)W<×<XØAY ÙY!c                ó   — | j         S r,   )rÜ  r.   s    r)   Ú__len__zDocument.__len__þ  s
   € ØŒÐr*   rá  c                óž   — | j         rdnd}| j        €&| j        dk    r|› d| j        d›d�S |› d| j        › d�S |› d| j        › d| j        d›d�S )	Nzclosed r\   zDocument(<new PDF, doc# r  z>)z
Document('ú')z', <memory, doc# )rÂ   r	   r   r(  )r(   rÂ   s     r)   rþ   zDocument.__repr__  s€   € Ø!%¤Ð7�I�I°Rˆ	ØŒ;ÐØŒy˜BŠˆØ#ÐQÐQ¸T¼^ÐQÐQÐQÐQÐQØÐ8Ð8¨4¬9Ð8Ð8Ð8Ð8ØÐWÐW t¤yÐWÐWÀ4Ä>ÐWÐWÐWÐWÐWr*   c           	     óø  — | j         s| j        rt          d¦  «        ‚t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        rt          j	        |¦  «        st          d	¦  «        ‚t          j        |¦  «        }t          ||¦  «        }t          j        |||¦  «         dS )
zAdd new form font.údocument closed or encryptedr   ©rÍ   NÚRootÚAcroFormrí   ÚFontzPDF has no form fonts yet)rÂ   r  rÃ   rÎ   rÌ   r�   r*  Úpdf_trailerr  rŠ  rÞ   Úpdf_new_nameÚJM_pdf_obj_from_strr^  )r(   r   rb  rj  Úfontsrª  rF   s          r)   Ú_addFormFontzDocument._addFormFont	  sø   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ#ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜‘”Ý˜Ñ Ô ñô ˆð Ôð 	=¥uÔ'8¸%Ñ'@Ô'@ð 	=ÝÐ ;Ñ<Ô<Ð<ÝÔ Ñ%Ô%ˆÝ  dÑ+Ô+ˆÝÔ˜E 1 aÑ(Ô(Ð(Ð(Ð(r*   Úidxc                ód   — |                       ¦   «         |         }|                      |¦  «         dS )z$Delete TOC / bookmark item by index.N)Úget_outline_xrefsÚ_remove_toc_item)r(   rC  r   s      r)   Údel_toc_itemzDocument.del_toc_item  s4   € ð
 ×%Ò%Ñ'Ô'¨Ô,ˆØ×Ò˜dÑ#Ô#Ð#Ð#Ð#r*   c                ó  — | j         s| j        rt          d¦  «        ‚g }t          | d¬¦  «        }|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }t          ||¦  «        }t          |¦  «        }t          j        |¦  «        }t          j        ||¦  «         t          j        |t          d¦  «        ¦  «         t          |¦  «        D ]*}t          ||¦  «        \  }	}
t          j        ||
¦  «         Œ+|                     |¦  «         |}|                      ¦   «          |S )zDelete the TOC.r9  r   r:  r;  ÚOutlinesÚFirst)rÂ   r  rÃ   rÎ   rÌ   r�   r  r>  r  ÚJM_outline_xrefsr7   r  Úpdf_delete_objectrQ  r\  ÚJM_INT_ITEMrk   r*  )r(   Úxrefsrj  rF  ÚolrootÚfirstÚ
xref_countÚolroot_xrefr®   r  r   r"  s               r)   Ú_delToCzDocument._delToC%  su  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆLåÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆåÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆLåÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆå  ¨Ñ.Ô.ˆÝ˜‘Z”Zˆ
åÔ& vÑ.Ô.ˆÝÔ  [Ñ1Ô1Ð1ÝÔ˜4¥¨*Ñ!5Ô!5Ñ6Ô6Ð6å�zÑ"Ô"ð 	/ð 	/ˆAÝ! %¨Ñ+Ô+‰GˆAˆtÝÔ# C¨Ñ.Ô.Ð.Ð.Ø�Š�[Ñ!Ô!Ð!ØˆØ�Š‰ŒˆØˆ
r*   c                óœ   — t          | ¦  «        }t          j        ||¦  «         |j        j        rt          j        |j        ¦  «         d S d S r,   )rÎ   r�   Úpdf_delete_pagerÌ   Úrev_page_mapÚll_pdf_drop_page_tree)r(   rá  rj  s      r)   Ú_delete_pagezDocument._delete_pageE  sR   € Ý˜tÑ$Ô$ˆÝÔ˜s CÑ(Ô(Ð(ØŒ>Ô&ð 	9ÝÔ'¨¬Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9r*   c                óÂ   — t          | ¦  «        }t          |dt          j        |¦  «        dz
  ¦  «        st	          t
          ¦  «        ‚t          j        ||¦  «         dS )zDelete object.r   N)rÎ   r¯  r�   r–  rÃ   r—  rL  ©r(   r   rj  s      r)   Ú_deleteObjectzDocument._deleteObjectK  sZ   € å˜tÑ$Ô$ˆÝ˜˜a¥Ô!3°CÑ!8Ô!8¸Ñ!:Ñ;Ô;ð 	,Ý�lÑ+Ô+Ð+ÝÔ  TÑ*Ô*Ð*Ð*Ð*r*   rA  Údoc1ú
'Document'Údoc2Ú	from_pageÚto_pageÚstart_atc                óò  ‡— d„ }|dk     rd}n||j         k    r|j         dz
  }n|}|dk     s||j         k    r|j         dz
  }n|}|dk     rt          d¦  «        ‚|Š||k    rdnd}t          t          |||z   |¦  «        ¦  «        }	ˆfd„t          t	          |	¦  «        ¦  «        D ¦   «         }
g }g }t          t	          |	¦  «        ¦  «        D ]f}|	|         }|
|         }|                     |¦  «        }|                      |¦  «        }|                     |¦  «         |                     |¦  «         Œgt          t	          |¦  «        ¦  «        D �]$}||	|                  }|                     ¦   «         }t	          |¦  «        dk    rd}Œ;| |
|                  }t          j	        ¦   «         }t          |¦  «        }t          j        |t          j        d¦  «        |¦  «         t          t          j        |¦  «        ¦  «        }g }|D ]C}|d         t          k    r|d	         |	vrŒ ||||	|¦  «        }|r|                     |¦  «         ŒD|g k    r"|                     t#          |¦  «        ¦  «         �Œ&dS )
zÃInsert links contained in copied page range into destination PDF.

        Parameter values **must** equal those of method insert_pdf(), which must
        have been previously executed.
        c           	     óÔ  — | d         |z  }t          t          |¦  «        ¦  «        }| d         t          k    rZt          d         }|                     | d         ¦  «        }| d         |z  } |||         |j        |j        | d         |¦  «        }	�nU| d         t          k    rÙ| d         dk    r‹t          d         }|                      dt          dd¦  «        ¦  «        }
t          |
¦  «        t          urt          dd¦  «        }
 || d         |
j        |
j        | d         | d	         | d	         |¦  «        }	n­t          d
         }t          | d         ¦  «        }|dd…         }| d	         } ||||¦  «        }	nk| d         t          k    r't          d         } || d	         | d	         |¦  «        }	n3| d         t          k    r t          d         } || d         |¦  «        }	nd}	|	S )z5Create annotation object string for a passed-in link.ÚfromÚkindÚgoto1rÖ   ÚtoÚzoomr   Úgotor1ra   Úgotor2r   rA  ÚlaunchÚurir\   )r¶   rµ   Ú	LINK_GOTOÚ
annot_skelÚindexr4  r5  Ú
LINK_GOTORr8   rú  rÈ   Úget_pdf_strÚLINK_LAUNCHÚLINK_URI)ÚlnkÚxref_dstÚpno_srcrî  r.  r  ÚtxtrC  r²  rß   Úpntrg  rÝ  s                r)   Ú	cre_annotz%Document._do_links.<locals>.cre_annotb  sÜ  € ð �F”˜cÑ!ˆAÝ�U 1™XœXÑ&Ô&ˆDØ�6Œ{�iÒ'Ð'Ý  Ô)�Ø—m’m C¨¤KÑ0Ô0�Ø˜”I ‘O�Ø˜˜H SœM¨1¬3°´°S¸´[À$ÑGÔG�‘à�V”¥
Ò*Ð*Ø�v”; !Ò#Ð#Ý$ XÔ.�CØŸ'š' $­¨a°©¬Ñ4Ô4�CÝ˜C‘y”y­Ð-Ð-Ý# A q™kœk˜Ø˜CØ˜FœØœØœØ˜FœØ˜FœØ˜FœØñô �E�Eõ % XÔ.�CÝ$ S¨¤YÑ/Ô/�BØ˜A˜b˜Dœ�BØ˜Fœ�AØ˜C  A tÑ,Ô,�E�Eà�V”¥Ò+Ð+Ý  Ô*�Ø˜˜C œK¨¨V¬°dÑ;Ô;��à�V”¥Ò(Ð(Ý  Ô'�Ø˜˜C œJ¨Ñ-Ô-��ð �àˆLr*   r   r   z'start_at' must be >= 0rA  c                ó   •— g | ]}‰|z   ‘ŒS r-   r-   )r­   r®   Úsas     €r)   r¯   z&Document._do_links.<locals>.<listcomp>§  s   ø€ Ð7Ð7Ð7˜a�2˜‘6Ð7Ð7Ð7r*   Nre  rÖ   )rÜ  rÃ   r´   r\  r7   Ú	page_xrefrk   Ú	get_linksr�   r‚  rÚ   r/  rx  r…  Úfz_invert_matrixrm  Ú_addAnnot_FromStringrµ   )r\  r^  r_  r`  ra  ry  r€  rÄ  Úincrrv  Úpno_dstÚxref_srcru  r®   Úp_srcÚp_dstÚold_xrefÚnew_xrefÚpage_srcÚlinksÚpage_dstrî  Úpage_src_pdf_documentÚictmÚlink_tabr'  Ú
annot_textr{  s                              @r)   Ú	_do_linkszDocument._do_linksR  s´  ø€ ð ,	ð ,	ð ,	ðb �qŠ=ˆ=ØˆBˆBØ˜$œ/Ò)Ð)Ø” 1Ñ$ˆBˆBàˆBà�QŠ;ˆ;˜' T¤_Ò4Ð4Ø” 1Ñ$ˆBˆBàˆBà�aŠ<ˆ<ÝÐ6Ñ7Ô7Ð7Øˆà˜"’H�Hˆqˆq "ˆõ •u˜R  d¡¨DÑ1Ô1Ñ2Ô2ˆØ7Ð7Ð7Ð7¥5­¨W©¬Ñ#6Ô#6Ð7Ñ7Ô7ˆð ˆØˆÝ•s˜7‘|”|Ñ$Ô$ð 	&ð 	&ˆAØ˜A”JˆEØ˜A”JˆEØ—~’~ eÑ,Ô,ˆHØ—~’~ eÑ,Ô,ˆHØ�OŠO˜HÑ%Ô%Ð%Ø�OŠO˜HÑ%Ô%Ð%Ð%õ •s˜8‘}”}Ñ%Ô%ð  	@ñ  	@ˆAØ˜G AœJÔ'ˆHØ×&Ò&Ñ(Ô(ˆEõ
 �5‰zŒz˜QŠˆØ�ØØ˜G AœJÔ'ˆHõ ”.Ñ"Ô"ˆCÝ$0°Ñ$:Ô$:Ð!ÝÔ$Ð%:½E¼LÈ¹O¼OÈSÑQÔQÐQÝ�%Ô0°Ñ5Ô5Ñ6Ô6ˆDàˆHØð 0ð 0�Ø�V”9¥	Ò)Ð)¨q°¬yÀÐ/GÐ/GØØ&˜Y q¨(°G¸TÑBÔB�
Øð 0Ø—O’O JÑ/Ô/Ð/øØ˜2Š~ˆ~Ø×-Ò-­u°X©¬Ñ?Ô?Ð?ùðA 	@ð  	@r*   rv  rá  c           	     óæ  ‡,‡-‡.— |j         sdS d„ Š,d„ Š.ˆ-fd„Š-ˆ-fd„}dˆ,ˆ.fd„	}d„ }	t          j        | ¦  «        }
t          j        |¦  «        }| j         rˆ |	| ¦  «        }|                     t	          d	¦  «        ¦  «        }|                     t	          d
¦  «        ¦  «        }|                     ¦   «         s#|                     t	          d
¦  «        d¦  «        }�n–t          j         |	|¦  «        ¦  «        }|                     t	          d	¦  «        ¦  «         |                     t	          d	¦  «        d¦  «         |                     t	          d
¦  «        ¦  «         |                     t	          d
¦  «        d¦  «         t          j	        ||¦  «        }t          j
        |
|¦  «        }|                     t	          d	¦  «        ¦  «        }|                     t	          d
¦  «        ¦  «        }|                     ¦   «         }t          j        |
|d¦  «        }t          j        t          j        |
¦  «        t	          d¦  «        ¦  «        }|                     t	          d¦  «        |¦  «         ||k    rt          ||dz   ¦  «        }nt          ||dz
  d¦  «        }i }|D ]|}||         }d„ |                     ¦   «         D ¦   «         D ]S}t          j        ||d¦  «        }|                     t	          d¦  «        ¦  «          ||¦  «        \  }}|r	d|g dœ||<   ŒTŒ}|                     ¦   «         D ]¢}t          j        ||¦  «        }t          j	        ||¦  «        }t          j
        |
|¦  «        } ‰-|g ¦  «        }|                     ¦   «         } t          j        |
| d¦  «        }!|                     |!¦  «         | ||         d<   |||         d<   Œ£t          t)          |¦  «        ¦  «        D �]k}| ||z            }"|||                  }d„ |                     ¦   «         D ¦   «         }#|#sŒ=t          j        |"¦  «        }$t          j        |$                     ¦   «         t	          d¦  «        ¦  «        }%t          j        |%¦  «        s5t          j        |$                     ¦   «         t	          d¦  «        d¦  «        }%|#D �]™}t          j        ||¦  «        }t          j        t          j        |d¦  «        ¦  «        }&t          j        |                     t	          d¦  «        ¦  «        ¦  «        }|dk    r­	 t          j	        ||¦  «        }'n,# t2          $ r}(t5          d|›d|(› �¦  «         Y d}(~(Œ´d}(~(ww xY wt          j
        |
|'¦  «        })|)                     ¦   «         }t          j        |
|d¦  «        }*t          j        |%|*¦  «         t          j        ||*¦  «         n\||         }|d                              |¦  «        }+|d         |+         }t          j        |
|d¦  «        }*t          j        |%|*¦  «         |&rt          j        ||*¦  «         �Œ›�Œm ||
||¬¦  «         dS )zµInsert widgets of copied page range into target PDF.

        Parameter values **must** equal those of method insert_pdf() which
        must have been previously executed.
        Nc                ót  — t          |                      ¦   «         ¦  «        D ]•}|                      |¦  «        }|                     t	          d¦  «        ¦  «        }t          |                     ¦   «         ¦  «        D ]:}|                     |¦  «        }|                     t	          d¦  «        |¦  «         Œ;Œ–dS )z3 Make sure all kids have correct "Parent" pointers.ÚKidsr¨  N)r\  r«  r¬  r  r  r^  )Úacro_fieldsr®   rû   Úkidsr‘  Úkids         r)   Úclean_kid_parentsz/Document._do_widgets.<locals>.clean_kid_parentsé  sÀ   € å˜;×4Ò4Ñ6Ô6Ñ7Ô7ð Að A�Ø$×2Ò2°1Ñ5Ô5�Ø×*Ò*­8°FÑ+;Ô+;Ñ<Ô<�Ý˜t×1Ò1Ñ3Ô3Ñ4Ô4ð Að A�AØ×,Ò,¨QÑ/Ô/�CØ×$Ò$¥X¨hÑ%7Ô%7¸Ñ@Ô@Ð@Ð@ðAðAð Ar*   c           	     ó¨  — d„ }d„ }t          j        | |¦  «        }t          j        | |¦  «        }|                     t          d¦  «        ¦  «        }	|                     t          d¦  «        ¦  «        }
|	                     ¦   «         r || |||	||
¦  «         dS |
                     ¦   «         r || |||
||	¦  «         dS  || ||||||¦  «         dS )a~  Called for each pair of widgets having the same name.

            Args:
                pdf: target MuPDF document
                acro_fields: object Root/AcroForm/Fields
                xref1, xref2: widget xrefs having same names
                name: (str) the name

            Result:
                Defined or updated widget parent that points to both widgets.
            c                óî  — t          j        | |d¦  «        }t          j        | |d¦  «        }|                     |¦  «        }|                     |¦  «         |                     ¦   «         sqt          j        | |¦  «        }	|	                     t          d¦  «        ¦  «         |	                     t          d¦  «        |¦  «         | 	                    |¦  «         dS t          |                     ¦   «         ¦  «        D ]w}
|                     |
¦  «        }|                     t          d¦  «        |¦  «         t          j        | |                     ¦   «         d¦  «        }| 	                    |¦  «         ŒxdS )zûMerge widget in xref2 into "Kids" list of widget xref1.

                Args:
                    xref1, kids1: target widget and its "Kids" array.
                    xref2, kids2: source wwidget and its "Kids" array (may be empty).
                r   rð   r¨  N)r�   r˜  Úpdf_array_findr­  Úpdf_is_arrayÚpdf_load_objectrQ  r  r^  Úpdf_array_pushr\  r«  r¬  r  )rj  r’  Úxref1Úkids1Úxref2Úkids2Úw1_indÚw2_indrC  rK  r®   r”  Úkid_inds                r)   Ú	re_targetz=Document._do_widgets.<locals>.join_widgets.<locals>.re_targetÿ  sc  € õ Ô/°°U¸AÑ>Ô>�ÝÔ/°°U¸AÑ>Ô>�à!×0Ò0°Ñ8Ô8�Ø×,Ò,¨SÑ1Ô1Ð1à×)Ò)Ñ+Ô+ð 6Ý"Ô2°3¸Ñ>Ô>�Fð ×'Ò'­°©¬Ñ6Ô6Ð6Ø×'Ò'­°Ñ(:Ô(:¸FÑCÔCÐCð ×(Ò(¨Ñ0Ô0Ð0Ð0Ð0å" 5×#6Ò#6Ñ#8Ô#8Ñ9Ô9ð 6ð 6˜Ø#×1Ò1°!Ñ4Ô4˜Ø×(Ò(­°(Ñ);Ô);¸VÑDÔDÐDÝ"'Ô"8¸¸c¿nºnÑ>NÔ>NÐPQÑ"RÔ"R˜Ø×,Ò,¨WÑ5Ô5Ð5Ð5ð	6ð 6r*   c                óh  — t          j        | d¦  «        }|                     t          d¦  «        |¦  «         |                     t          d¦  «        d¦  «        }t          j        | |¦  «        }	|	                     ¦   «         }
t          j        | |
d¦  «        }|                     t          d¦  «        ¦  «        }| 	                    t          d¦  «        ¦  «         |	 
                    t          d¦  «        |¦  «         |                     t          d¦  «        ¦  «        }| 	                    t          d¦  «        ¦  «         |	 
                    t          d¦  «        |¦  «         | 	                    t          d¦  «        ¦  «         | 
                    t          d¦  «        |¦  «         | 	                    t          d¦  «        ¦  «         | 
                    t          d¦  «        |¦  «         t          j        | |d¦  «        }t          j        | |d¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «        }|                     |¦  «         |                     |¦  «        }|                     |¦  «         |                     |¦  «         d	S )
aÐ  Make new "Parent" for two widgets with same name.

                Args:
                    xref1, w1: first widget
                    xref2, w2: second widget
                    name: field name

                Result:
                    Both widgets have no "Kids". We create a new object with the
                    name and a "Kids" array containing the widgets.
                    Original widgets must be removed from AcroForm/Fields.
                r   rð   r‘  r   r   râ   rá   r¨  N)r�   rc  r�  r  Úpdf_dict_put_arrayÚpdf_add_objectr  r˜  r  rQ  r^  r›  r˜  r­  )rj  r’  rœ  Úw1rž  Úw2r   Únewr“  Únew_objÚnew_obj_xrefÚnew_indÚftÚaaÚind1Úind2rC  s                    r)   Ú
new_targetz>Document._do_widgets.<locals>.join_widgets.<locals>.new_target  sD  € õ Ô(¨¨aÑ0Ô0�Ø×,Ò,­X°c©]¬]¸DÑAÔAÐAØ×-Ò-­h°vÑ.>Ô.>ÀÑBÔB�ÝÔ.¨s°CÑ8Ô8�Ø&×1Ò1Ñ3Ô3�ÝÔ0°°lÀAÑFÔF�ð —_’_¥X¨d¡^¤^Ñ4Ô4�Ø—’¥¨¡¤Ñ/Ô/Ð/Ø×$Ò$¥X¨d¡^¤^°RÑ8Ô8Ð8à—_’_¥X¨d¡^¤^Ñ4Ô4�Ø—’¥¨¡¤Ñ/Ô/Ð/Ø×$Ò$¥X¨d¡^¤^°RÑ8Ô8Ð8ð —’¥¨¡¤Ñ.Ô.Ð.Ø—’¥¨Ñ 2Ô 2°GÑ<Ô<Ð<Ø—’¥¨¡¤Ñ.Ô.Ð.Ø—’¥¨Ñ 2Ô 2°GÑ<Ô<Ð<õ Ô-¨c°5¸!Ñ<Ô<�ÝÔ-¨c°5¸!Ñ<Ô<�Ø×#Ò# DÑ)Ô)Ð)Ø×#Ò# DÑ)Ô)Ð)ð "×0Ò0°Ñ6Ô6�Ø×,Ò,¨SÑ1Ô1Ð1Ø!×0Ò0°Ñ6Ô6�Ø×,Ò,¨SÑ1Ô1Ð1à×*Ò*¨7Ñ3Ô3Ð3Ð3Ð3r*   r‘  N)r�   rš  r  r  r™  )rj  r’  rœ  rž  r   r£  r±  r§  r¨  r�  rŸ  s              r)   Újoin_widgetsz*Document._do_widgets.<locals>.join_widgetsò  s  € ð6ð 6ð 6ð<04ð 04ð 04õd Ô& s¨EÑ2Ô2ˆBÝÔ& s¨EÑ2Ô2ˆBØ—O’O¥H¨VÑ$4Ô$4Ñ5Ô5ˆEØ—O’O¥H¨VÑ$4Ô$4Ñ5Ô5ˆEð ×!Ò!Ñ#Ô#ð IØ�	˜#˜{¨E°5¸%ÀÑGÔGÐGÐGÐGØ×#Ò#Ñ%Ô%ð IØ�	˜#˜{¨E°5¸%ÀÑGÔGÐGÐGÐGà�
˜3 ¨U°B¸¸rÀ4ÑHÔHÐHÐHÐHr*   c           	     óº  •— t          j        | t          d¦  «        ¦  «        }|                     ¦   «         s|S t	          |                     ¦   «         ¦  «        D ]}|                     |¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        r ‰||¦  «        }ŒX|                     | 	                    ¦   «         ¦  «         Œ€|S )z^Return xref list of leaf kids for a parent.

            Call with an empty list.
            r‘  )
r�   r  r  r™  r\  r«  r¬  rŠ  rk   r  )rû   Ú	kids_listr“  r®   r”  Úget_kidss        €r)   rµ  z&Document._do_widgets.<locals>.get_kids\  sÑ   ø€ õ
 Ô% f­h°vÑ.>Ô.>Ñ?Ô?ˆDØ×$Ò$Ñ&Ô&ð !Ø Ð Ý˜4×-Ò-Ñ/Ô/Ñ0Ô0ð 7ð 7�Ø×(Ò(¨Ñ+Ô+�ÝÔ$¥UÔ%7¸½XÀfÑ=MÔ=MÑ%NÔ%NÑOÔOð 7Ø ( ¨¨iÑ 8Ô 8�I�Ià×$Ò$ S§^¢^Ñ%5Ô%5Ñ6Ô6Ð6Ð6ØÐr*   c                óV  •— g }|                       t          d¦  «        ¦  «        }|                     ¦   «         }|dk    r||fS |                      t          d¦  «        ¦  «        }|                     ¦   «         s#|                     t          d¦  «        d¦  «        }d}t          |                     ¦   «         ¦  «        D ]C}|                     |¦  «                             ¦   «         |                      ¦   «         k    rd} nŒD|s|                     | ¦  «          ‰||¦  «        }||fS )z:Get the xref of top "Parent" and the list of leaf widgets.r¨  r   r‘  r   FT)	r  r  r  r™  r¥  r\  r«  r¬  r›  )rK  r´  rû   Úparent_xrefr“  Úin_kidsr®   rµ  s          €r)   Ú
kids_xrefsz(Document._do_widgets.<locals>.kids_xrefsl  s:  ø€ àˆIØ×(Ò(­°(Ñ);Ô);Ñ<Ô<ˆFØ ×+Ò+Ñ-Ô-ˆKØ˜aÒÐØ" IÐ-Ð-à×&Ò&¥x°Ñ'7Ô'7Ñ8Ô8ˆDà×$Ò$Ñ&Ô&ð FØ×0Ò0µ¸&Ñ1AÔ1AÀ1ÑEÔE�ØˆGÝ˜4×-Ò-Ñ/Ô/Ñ0Ô0ð ð �Ø×%Ò% aÑ(Ô(×3Ò3Ñ5Ô5¸×9JÒ9JÑ9LÔ9LÒLÐLØ"�GØ�Eð Mð ð ,Ø×#Ò# FÑ+Ô+Ð+Ø ˜ ¨Ñ3Ô3ˆIØ 	Ð)Ð)r*   Fc                ó|  •— i }t          t          j        |¦  «        ¦  «        D ]}}t          j        ||¦  «        }|                     ¦   «         }t          j        |t          d¦  «        ¦  «        }|                     |g ¦  «        }|                     |¦  «         |||<   Œ~| 	                    ¦   «         D ]y\  }	}t          |¦  «        dk     rŒ|dd…         \  }
}|r ‰| ||
||	¦  «         Œ8|	d|› d�z   }t          j        | |¦  «        }|                     t          d¦  «        |¦  «         Œz ‰|¦  «         dS )z6Handle any widget name duplicates caused by the merge.rð   r   Nz [r|  )r\  r�   r«  r¬  r  Úpdf_dict_get_text_stringr  r8   rk   rB   r7   rš  r�  )rj  r’  Újoin_duplicatesÚnamesr®   Úwobjectr   rð   rN  r   Úxref0rœ  Únewnamer•  r²  s                €€r)   Údeduplicate_namesz/Document._do_widgets.<locals>.deduplicate_names‚  sW  ø€ àˆEõ �5Ô.¨{Ñ;Ô;Ñ<Ô<ð !ð !�ÝÔ-¨k¸1Ñ=Ô=�Ø×)Ò)Ñ+Ô+�õ Ô2°7½HÀS¹M¼MÑJÔJ�ØŸ	š	 ! RÑ(Ô(�Ø—’˜TÑ"Ô"Ð"Ø ��a‘�à$Ÿ{š{™}œ}ð 	Mð 	M‘��eÝ�u‘:”: ’>�>ØØ$ R a Rœy‘��uØ"ð MØ �L  k°5¸%ÀÑFÔFÐFÐFà" ]¨% ] ] ]Ñ2�GÝ#Ô3°C¸Ñ?Ô?�GØ×4Ò4µX¸c±]´]ÀGÑLÔLÐLÐLàÐ˜kÑ*Ô*Ð*Ð*Ð*r*   c                óx   — t          j        | ¦  «        }t          j        t          j        |¦  «        d¦  «        S )z,Retrieve the AcroForm dictionary form a PDF.úRoot/AcroForm)r�   Úpdf_document_from_fz_documentÚpdf_dict_getpr>  )r:  rj  s     r)   Úget_acroformz*Document._do_widgets.<locals>.get_acroformž  s0   € åÔ5°cÑ:Ô:ˆCåÔ&¥uÔ'8¸Ñ'=Ô'=¸ÑOÔOÐOr*   ÚFieldsrü  r   r   r;  r<  r   rA  c                ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r-   ©r�   rC  ©r­   r   Úwtyper  s       r)   r¯   z(Document._do_widgets.<locals>.<listcomp>Ò  s6   € ð ð ð á"�D˜% Ø�EÔ2Ò2Ð2ð à2Ð2Ð2r*   ÚP)r†  Úold_kidsÚnew_kidsr†  rÎ  c                ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r-   rÉ  rÊ  s       r)   r¯   z(Document._do_widgets.<locals>.<listcomp>ö  s6   € ð ð ð á"�D˜% Ø�EÔ2Ò2Ð2ð à2Ð2Ð2r*   r§  zAA/Cr¨  zcannot copy widget at xref=r{   rÍ  )r¼  ©F)Úis_form_pdfr�   rÄ  r  r  r™  r¥  Úpdf_deep_copy_objrQ  Úpdf_graft_mapped_objectr¦  r  r˜  r>  r^  r\  Úannot_xrefsÚkeysrš  r›  r7   rÙ   r  rŠ  rÅ  rg   r  ro  )/rv  rá  Úgraftmapr_  r`  ra  r¼  r¹  rÁ  rÆ  ÚtarpdfÚsrcpdfÚacror’  Útar_coÚ
acro_graftÚacro_tarÚtar_xrefÚacro_tar_indrF  Ú	src_rangeÚparentsr®   Úsrc_pager   Úw_objr·  rÍ  rû   Úparent_graftÚ
parent_tarÚkids_xrefs_newÚparent_xref_newÚ
parent_indÚtar_pageÚw_xrefsÚtar_page_pdfÚ
tar_annotsÚis_aacÚw_obj_graftrp  Ú	w_obj_tarÚw_obj_tar_indrC  r•  rµ  r²  s/                                               @@@r)   Ú_do_widgetszDocument._do_widgetsØ  s  øøø€ ð Œð 	ØˆFð	Að 	Að 	Aðh	Ið h	Ið h	IðT	ð 	ð 	ð 	ð 	ð 	*ð 	*ð 	*ð 	*ð 	*ð,	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð8	Pð 	Pð 	Põ Ô4°SÑ9Ô9ˆÝÔ4°SÑ9Ô9ˆàŒ?ð 	Bà�< Ñ$Ô$ˆDà×+Ò+­H°XÑ,>Ô,>Ñ?Ô?ˆKØ×&Ò&¥x°¡~¤~Ñ6Ô6ˆFØ×&Ò&Ñ(Ô(ð DØ×0Ò0µ¸$±´ÀÑCÔC�ùõ Ô*¨<¨<¸Ñ+<Ô+<Ñ=Ô=ˆDð ×Ò�h xÑ0Ô0Ñ1Ô1Ð1Ø×#Ò#¥H¨XÑ$6Ô$6¸Ñ:Ô:Ð:Ø×Ò�h t™nœnÑ-Ô-Ð-Ø×#Ò#¥H¨T¡N¤N°AÑ6Ô6Ð6õ Ô6°xÀÑFÔFˆJõ Ô+¨F°JÑ?Ô?ˆHØ"×/Ò/µ¸Ñ0BÔ0BÑCÔCˆKØ×*Ò*­8°D©>¬>Ñ:Ô:ˆFð  ×*Ò*Ñ,Ô,ˆHÝ Ô1°&¸(ÀAÑFÔFˆLÝÔ%¥eÔ&7¸Ñ&?Ô&?ÅÈ&ÑAQÔAQÑRÔRˆDØ×Ò�h zÑ2Ô2°LÑAÔAÐAà˜ÒÐÝ˜i¨°1©Ñ5Ô5ˆIˆIå˜i¨°1©°bÑ9Ô9ˆIàˆð ð 	ð 	ˆAØ˜1”vˆHðð à&.×&:Ò&:Ñ&<Ô&<ðñ ô ð ð �õ
 Ô.¨v°t¸QÑ?Ô?�Ø×"Ò"¥8¨C¡=¤=Ñ1Ô1Ð1ð )3¨
°5Ñ(9Ô(9Ñ%�˜XØð à$%Ø$,Ø$&ð,ð ,�G˜KÑ(øðð" —L’L‘N”Nð 		7ð 		7ˆDÝÔ*¨6°4Ñ8Ô8ˆFÝ Ô8¸À6ÑJÔJˆLÝÔ-¨f°lÑCÔCˆJØ%˜X j°"Ñ5Ô5ˆNØ(×3Ò3Ñ5Ô5ˆOÝÔ/°¸ÈÑKÔKˆJØ×&Ò& zÑ2Ô2Ð2Ø(7ˆG�DŒM˜*Ñ%Ø(6ˆG�DŒM˜*Ñ%Ð%å•s˜9‘~”~Ñ&Ô&ð 8	@ñ 8	@ˆAà˜8 a™<Ô(ˆHð ˜9 Qœ<Ô(ˆHðð à&.×&:Ò&:Ñ&<Ô&<ðñ ô ˆGð
 ð Øõ !Ô6°xÑ@Ô@ˆLõ Ô+¨L×,<Ò,<Ñ,>Ô,>ÅÈÑ@RÔ@RÑSÔSˆJÝÔ% jÑ1Ô1ð Ý"Ô5Ø ×$Ò$Ñ&Ô&­°Ñ(:Ô(:¸Añô �
ð  ð @ñ @�ÝÔ-¨f°dÑ;Ô;�õ Ô*­5Ô+>¸uÀfÑ+MÔ+MÑNÔN�õ $Ô.Ø×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ñô �ð  !Ò#Ð#ð!Ý&+Ô&CÀHÈeÑ&TÔ&T˜˜øÝ$ð !ð !ð !Ý'Ð(MÀÐ(MÐ(MÈ!Ð(MÐ(MÑNÔNÐNØ ˜˜˜˜øøøøð!øøøõ !&Ô 4°V¸[Ñ IÔ I�IØ(×3Ò3Ñ5Ô5�HÝ$)Ô$:¸6À8ÈQÑ$OÔ$O�MÝÔ(¨°]ÑCÔCÐCÝÔ(¨°mÑDÔDÐDÐDà$ [Ô1�FØ  Ô,×2Ò2°4Ñ8Ô8�CØ% jÔ1°#Ô6�HÝ$)Ô$:¸6À8ÈQÑ$OÔ$O�MÝÔ(¨°]ÑCÔCÐCð ð @ÝÔ(¨°Ñ?Ô?Ð?ùñ=@ð@ 	Ð˜& +¸ÐOÑOÔOÐOÐOÐOs   Õ UÕ
U?Õ U:Õ:U?c           	     ó¼  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }t          j        |t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        }t          |¦  «        }|S )Nr;  ÚNamesÚEmbeddedFilesr   r   r¶  r·  )rÎ   r�   r*  r>  r  r¬  r,  r-  )r(   rC  rj  r½  ÚentryÚfilespecrÐ  Úconts           r)   Ú_embeddedFileGetzDocument._embeddedFileGet*  s¹   € Ý˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô# E¨1¨S©5°©7Ñ3Ô3ˆÝÔ& u­h°t©n¬n½hÀs¹m¼mÑLÔLˆÝÔ# HÑ-Ô-ˆÝ Ñ$Ô$ˆØˆr*   rC   útyping.Union[int, str]c                óÊ   — |                       ¦   «         }||v r|                     |¦  «        }n4|t          t          |¦  «        ¦  «        v r|}nt	          d|› d�¦  «        ‚|S )Nrü   z' not in EmbeddedFiles array.)Úembfile_namesro  r\  r7   rÃ   )r(   rC   Ú	filenamesrC  s       r)   Ú_embeddedFileIndexzDocument._embeddedFileIndex9  sp   € Ø×&Ò&Ñ(Ô(ˆ	Ø�9ÐÐØ—/’/ $Ñ'Ô'ˆCˆCØ•U�3˜y™>œ>Ñ*Ô*Ð*Ð*ØˆCˆCåÐD ÐDÐDÐDÑEÔEÐEØˆ
r*   c           	     ó�  — t          | ¦  «        }t          |¦  «        }|j        st          t          ¦  «        ‚t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j	        |¦  «        sˆt          j
        t          j        |¦  «        t          d¦  «        ¦  «        }	t          j        |d¦  «        }t          j        |	|t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          |||||d¦  «        }
t          j        t          j        |
t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        |t          j        |¦  «        ¦  «         t          j        ||
¦  «         |S )Nr;  rò  ró  é   r   r¶  r·  )rÎ   r7  rÌ   r¾  r8  r�   r*  r>  r  r™  r  r[  r%  ÚJM_embed_filer  r›  r‘  )r(   r   r=  rf   r&  rÉ  rj  rˆ  r½  rF  Ú	fileentryr   s               r)   Ú_embfile_addzDocument._embfile_addC  s‰  € Ý˜tÑ$Ô$ˆÝ! 'Ñ*Ô*ˆØŒð 	-Ý�^Ñ,Ô,Ð,åÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô! %Ñ(Ô(ð 		ÝÔ%¥eÔ&7¸Ñ&<Ô&<½hÀvÑ>NÔ>NÑOÔOˆDÝÔ'¨¨QÑ/Ô/ˆEÝÔØØÝ˜WÑ%Ô%Ý˜_Ñ-Ô-Ý˜WÑ%Ô%ñô ð õ " # t¨X°yÀ$ÈÑJÔJˆ	ÝÔÝÔ# I­x¸©~¬~½xÈ¹}¼}ÑMÔMñô ˆõ 	Ô˜U¥EÔ$=¸dÑ$CÔ$CÑDÔDÐDÝÔ˜U IÑ.Ô.Ð.Øˆr*   c           	     ó:  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        ||dz   ¦  «         t          j        ||¦  «         d S )Nr;  rò  ró  r   )rÎ   r�   r*  r>  r  r­  )r(   rC  rj  r½  s       r)   Ú_embfile_delzDocument._embfile_delb  s�   € Ý˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ 	Ô˜u c¨A¡gÑ.Ô.Ð.ÝÔ˜u cÑ*Ô*Ð*Ð*Ð*r*   c           	     ó¬  — t          | ¦  «        }d}d}t          j        |¦  «        }t          j        |t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }t          j        |t	          d¦  «        ¦  «        }	|	j        rt          j        |	¦  «        }||d<   t          j	        t          j        |t	          d	¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   t          j	        t          j        |t	          d
¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   t          j	        t          j        |t	          d¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   d}d}t          j        |t	          d¦  «        t	          d	¦  «        ¦  «        }t          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nKt          j        |t	          d¦  «        t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }||t           <   ||t"          <   |S )Nr   r;  rò  ró  r   r   ÚCIÚ
collectionr·  r¹  rº  rA  r¶  r»  r!  r¼  r½  )rÎ   r�   r>  r*  r  r¬  r  rÌ   r  r  rÂ  rÃ  Údictkey_ufilenamer  rÄ  r  rÆ  rÅ  )r(   rC  Úinfodictrj  r   Úci_xrefÚtrailerr½  r±  Úcir   Úlen_r!  r   s                 r)   Ú_embfile_infozDocument._embfile_infon  s^  € Ý˜tÑ$Ô$ˆØˆØˆåÔ# CÑ(Ô(ˆåÔ#ØÝ˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô  q¨¡u¨Q¡wÑ/Ô/ˆÝÔ ¥8¨D¡>¤>Ñ2Ô2ˆØŒ=ð 	+ÝÔ& rÑ*Ô*ˆGØ!(ˆ�ÑÝÔ'­Ô(:¸1½hÀs¹m¼mÑ(LÔ(LÑMÔMˆÝ%8¸Ñ%>Ô%>ˆÕ!Ñ"åÔ'­Ô(:¸1½hÀt¹n¼nÑ(MÔ(MÑNÔNˆÝ&9¸$Ñ&?Ô&?ˆÕ"Ñ#åÔ'­Ô(:¸1½hÀvÑ>NÔ>NÑ(OÔ(OÑPÔPˆÝ"3°DÑ"9Ô"9ˆ•ÑàˆØˆÝÔ'¨­8°D©>¬>½8ÀC¹=¼=ÑIÔIˆ	ÝÔ 	Ñ*Ô*ˆÝÔ˜y­(°8Ñ*<Ô*<Ñ=Ô=ˆØŒ<ð 	'ÝÔ# AÑ&Ô&ˆDåÔ˜y­(°4©.¬.Ñ9Ô9ˆØŒ<ð 	)ÝÔ! !Ñ$Ô$ˆBˆBåÔ# I­x¸Ñ/AÔ/AÅ8ÈFÑCSÔCSÑTÔTˆAØŒ|ð )ÝÔ% aÑ(Ô(�Ø!#ˆ•ÑØ#'ˆ•Ñ Øˆr*   c           	     óî  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        rqt          j        |¦  «        }t          d|d¦  «        D ]M}t          t          j	        t          j
        ||¦  «        ¦  «        ¦  «        }|                     |¦  «         ŒLdS dS )z Get list of embedded file names.r;  rò  ró  r   r   N)rÎ   r�   r*  r>  r  r™  r«  r\  rÂ  r  r¬  rk   )r(   r‚  rj  r½  rE   r®   r"  s          r)   Ú_embfile_nameszDocument._embfile_names�  só   € å˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô˜eÑ$Ô$ð 	%ÝÔ# EÑ*Ô*ˆAÝ˜1˜a ‘^”^ð %ð %�Ý)ÝÔ0Ý!Ô/°°qÑ9Ô9ñô ñô �ð
 —’ Ñ$Ô$Ð$Ð$ð	%ð 	%ð%ð %r*   c           	     ó`  — t          | ¦  «        }d}t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }	t          j        |	t	          d¦  «        t	          d¦  «        ¦  «        }
|
j        st          d	t          ¦  «         t          |¦  «        }|r"|j        r|j        st          t          ¦  «        ‚|j        rš|r˜|j        r‘t          ||
|d¦  «         t          j        |¦  «        \  }}t          j        |¦  «        }t          j        |
t	          d
¦  «        |¦  «         t          j        |
|t	          d¦  «        t	          d¦  «        ¦  «         t          j        |
¦  «        }|r#t          j        |	t	          d¦  «        |¦  «         |r#t          j        |	t	          d¦  «        |¦  «         |r#t          j        |	t	          d¦  «        |¦  «         |S )Nr   r;  rò  ró  r   r   r¶  r·  r   r!  r¼  r½  r¹  rº  )rÎ   r�   r*  r>  r  r¬  rÌ   rÀ  rÁ  r7  r¾  r8  r9  r#  r$  r^  r%  r  r�  )r(   rC  r=  rf   r&  rÉ  rj  r   r½  rô  rõ  r/  r7   r  r'  s                  r)   Ú_embfile_updzDocument._embfile_upd±  s  € Ý˜tÑ$Ô$ˆØˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô# E¨1¨S©5°©7Ñ3Ô3ˆåÔ& u­h°t©n¬n½hÀs¹m¼mÑLÔLˆØÔ"ð 	EÝÐ-Õ/CÑDÔDÐDÝ  Ñ)Ô)ˆØð 	-�wÔ)ð 	-°#´.ð 	-Ý�^Ñ,Ô,Ð,ØŒ>ð 	S˜gð 	S¨'Ô*<ð 	SÝ˜S (¨C°Ñ3Ô3Ð3åÔ,¨SÑ1Ô1‰FˆC�ÝÔ! #Ñ&Ô&ˆAÝÔ˜x­°$©¬¸Ñ;Ô;Ð;ÝÔ ¨!­X°hÑ-?Ô-?ÅÈ&ÑAQÔAQÑRÔRÐRÝÔ Ñ)Ô)ˆØð 	KÝÔ*¨5µ(¸3±-´-ÀÑJÔJÐJàð 	MÝÔ*¨5µ(¸4±.´.À)ÑLÔLÐLàð 	JÝÔ*¨5µ(¸6Ñ2BÔ2BÀDÑIÔIÐIØˆr*   c           	     ó   — | j         rt          d¦  «        ‚t          rt          j        | j        |¦  «        S t          | ¦  «        }d}d}d}d}t          j        t          j	        |¦  «        t          d¦  «        ¦  «        }|j        sdS t          j        |t          d¦  «        ¦  «        }|j        sdS t          j        |t          d	¦  «        ¦  «        }	|	j        sdS g }
t          |	|
¦  «        }
t          |
¦  «        }t          |¦  «        }|sdS ||k    rt          d
¦  «        ‚t          |¦  «        D �]Â}t!          |
|         ¦  «        }||         }|d         }t#          |t$          ¦  «        st          d¦  «        ‚|
|         |t&          <   t          j        ||¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|dk    rd||<   n|dk    rd||<   n|dk    r
d||<   d||<   t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|dk     rd||<   n|dk    rd||<   t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        r–t          j        |¦  «        dk    r~t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        f}||t4          <   d}t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        s0t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        r?t          j        |¦  «        dk    r't          j        t          j        |d¦  «        ¦  «        }t9          |¦  «        ||<   ||d<   |||<   �ŒÄdS )z4Add color info to all items of an extended TOC list.r¾   rh  rW  rk  Úcollapser;  NrI  rJ  z$internal error finding outline xrefsr   zneed non-simple TOC formatr·  r   Tr   ÚCountr   Frö  ÚDestÚAÚDr   rZ  )rÂ   rÃ   r'  r   ÚDocument_extend_toc_itemsrÄ   rÎ   r�   r  r>  r  rÌ   rK  r7   r  r\  r4   r>   r5   r  rš  r  r™  r«  rÿ  r¬  Údictkey_colorr*  r~  )r(   rB   rj  rh  rW  rk  r  rF  rO  rP  rN  rE   r�  r®   r   rC   ÚitemdictÚbmrÎ  Úcountro  r  Úzr  s                           r)   Ú_extend_toc_itemszDocument._extend_toc_itemsÕ  s×  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	FÝÔ2°D´I¸uÑEÔEÐEÝ˜tÑ$Ô$ˆØˆØˆØˆØˆåÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆØŒð 	ØˆFÝÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆFÝÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆØÔð 	ØˆFØˆÝ  ¨Ñ.Ô.ˆÝ�‰JŒJˆÝ�‰JŒJˆØð 	ØˆFØ�Š6ˆ6ÝÐDÑEÔEÐEõ �q‘”ð %	ñ %	ˆAÝ�u˜Q”x‘=”=ˆDØ˜”8ˆDØ˜A”wˆHÝ˜h­Ñ-Ô-ð @Ý Ð">Ñ?Ô?Ð?Ø%*¨1¤XˆH•\Ñ"ÝÔ& s¨DÑ1Ô1ˆBÝÔ$¥eÔ&8¸½XÀc¹]¼]Ñ&KÔ&KÑLÔLˆEØ˜ŠzˆzØ#'�˜Ñ Ð Ø˜!’�Ø!%�˜‘�Ø˜!’�Ø#'�˜Ñ Ø!%�˜‘ÝÔ$¥eÔ&8¸½XÀgÑ=NÔ=NÑ&OÔ&OÑPÔPˆEØ�qŠyˆyØ%)�˜Ñ"Ð"Ø˜’�Ø%*�˜Ñ"ÝÔ$ R­°#©¬Ñ7Ô7ˆCÝÔ! #Ñ&Ô&ð 0­5Ô+>¸sÑ+CÔ+CÀqÒ+HÐ+HåÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFÝÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFÝÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFð�ð
 +0��Ñ'ØˆAÝÔ$ R­°&Ñ)9Ô)9Ñ:Ô:ˆCØ”>ð L­Ô);¸CÑ)@Ô)@ð LÝÔ)¨"­h°s©m¬m½XÀc¹]¼]ÑKÔK�ÝÔ! #Ñ&Ô&ð C­5Ô+>¸sÑ+CÔ+CÀqÒ+HÐ+HÝÔ%¥eÔ&9¸#¸qÑ&AÔ&AÑBÔB�Ý" 1™XœXˆH�T‰NØˆD�‰GØˆE�!‰H‰HðK%	ð %	r*   rÖ   c                óJ   — t          |¦  «        }|| j        v r
| j        |= dS dS )z&Remove a page from document page dict.N)rH  r  )r(   rÖ   Úpids      r)   Ú_forget_pagezDocument._forget_page  s2   € å�‰hŒhˆØ�$”/Ð!Ð!à” Ð$Ð$Ð$ð "Ð!r*   r   ÚbfnameÚextÚorderingÚlimitc                ó†  — t          | ¦  «        }|}|dk     rd}|dk    r1t          j        |¦  «        \  }	}
}t          j        d |	|
|d¦  «        }ntt          j        |¦  «        \  }	}
|	rt          j        ||	|
dd¦  «        }nBt          ||¦  «        }|j        st          d|d›d�¦  «        ‚t          j        d ||d¦  «        }g }t          |¦  «        D ]j}t          j
        ||¦  «        }t          j        ||d¦  «        }|dk    r|}|dk    r|                     ||f¦  «         ŒS|                     |df¦  «         Œk|S )Né   r   zfont at xref r  z is not supportedr­  )rÎ   r�   Úfz_lookup_cjk_fontÚfz_new_font_from_memoryÚfz_lookup_base14_fontÚJM_get_fontbufferrÌ   rg   Úfz_new_font_from_bufferr\  Úfz_encode_characterÚfz_advance_glyphrk   )r(   r   r"  r#  r$  r%  rC  rj  Úmylimitrˆ  rÈ  ro  rb  rÐ  Úwlistr®   ÚglyphÚadvs                     r)   Ú_get_char_widthszDocument._get_char_widths"  sn  € Ý˜tÑ$Ô$ˆØˆØ�SŠ=ˆ=ØˆGØ�qŠ=ˆ=Ý %Ô 8¸Ñ BÔ BÑˆD�$˜ÝÔ0°°t¸TÀ5È!ÑLÔLˆDˆDåÔ4°VÑ<Ô<‰JˆD�$Øð HÝÔ4°V¸TÀ4ÈÈAÑNÔN��å'¨¨TÑ2Ô2�Ø”~ð OÝ#Ð$M°DÐ$MÐ$MÐ$MÐ$MÑNÔNÐNåÔ4°T¸3ÀÀQÑGÔG�ØˆÝ�w‘”ð 	,ð 	,ˆAÝÔ-¨d°AÑ6Ô6ˆEÝÔ(¨¨u°aÑ8Ô8ˆCØ˜1Š}ˆ}Ø�Ø�qŠyˆyØ—’˜u c˜lÑ+Ô+Ð+Ð+à—’˜u c˜lÑ+Ô+Ð+Ð+Øˆr*   c           	     ó¸  — t          | ¦  «        }g }t          j        d¦  «        }t          j        t          j        |¦  «        t          d¦  «        |¦  «        }|j        s|S t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|j        rt          ||¦  «         |S t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }|j        rt          ||¦  «         |S t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|j        rt          j
        |¦  «        s|S t          j        |¦  «        }t          |¦  «        D ]Y}t          j        t          j        t          j        ||¦  «        t          d¦  «        ¦  «        ¦  «        }t          ||¦  «         ŒZ|S )NÚ
PageLabelsr;  ÚNumsr‘  )rÎ   r�   r?  r*  r>  r  rÌ   Úpdf_resolve_indirectr  ÚJM_get_page_labelsr™  r«  r\  r¬  )	r(   rj  r    Ú
pagelabelsr  Únumsr“  rE   r®   s	            r)   Ú_get_page_labelszDocument._get_page_labels@  s°  € Ý˜tÑ$Ô$ˆØˆÝÔ'¨Ñ5Ô5ˆ
ÝÔ!¥5Ô#4°SÑ#9Ô#9½8ÀFÑ;KÔ;KÈZÑXÔXˆØŒ~ð 	ØˆIåÔ)­5Ô+=¸sÅHÈVÑDTÔDTÑ+UÔ+UÑVÔVˆØŒ?ð 	Ý˜r 4Ñ(Ô(Ð(ØˆIåÔ)­5Ô+>¸sÅHÈVÑDTÔDTÕV^Ð_eÑVfÔVfÑ+gÔ+gÑhÔhˆØŒ?ð 	Ý˜r 4Ñ(Ô(Ð(ØˆIåÔ)­5Ô+=¸sÅHÈVÑDTÔDTÑ+UÔ+UÑVÔVˆØŒð 	¥eÔ&8¸Ñ&>Ô&>ð 	ØˆIÝÔ Ñ%Ô%ˆÝ�q‘”ð 	)ð 	)ˆAÝÔ-ÝÔ&ÝÔ+¨D°!Ñ4Ô4Ý  Ñ(Ô(ñô ñô ˆDõ ˜r 4Ñ(Ô(Ð(Ð(Øˆ	r*   c                óŒ   — 	 t          j        | j        |¦  «        S # t          $ r t          dk    rt          ¦   «          Y dS w xY w)zGet metadata.r   r\   )r�   Úfz_lookup_metadata2rÄ   rg   r  rv   r&  s     r)   Ú_getMetadatazDocument._getMetadata`  sT   € ð	ÝÔ,¨d¬i¸Ñ=Ô=Ð=øÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<Ø�2�2ð	øøøs   ‚ œ#AÁAc                óz  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        }|j        sŸt	          j	        |d¦  «        }t	          j
        |t          d¦  «        t          d¦  «        ¦  «         t	          j        ||¦  «        }t	          j
        |t          d¦  «        |¦  «         t	          j        |t          d¦  «        ¦  «        }t	          j        |¦  «        S )z/Get xref of Outline Root, create it if missing.r9  r;  rI  rZ  ÚType)rÂ   r  rÃ   rÎ   r�   r  r>  r  rÌ   rc  r^  r¦  r  )r(   rj  rF  rO  Úind_objs        r)   Ú_getOLRootNumberzDocument._getOLRootNumberh  s  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆåÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆåÔ# T­8°JÑ+?Ô+?Ñ@Ô@ˆØÔ ð 	EÝÔ'¨¨aÑ0Ô0ˆFÝÔ ­°Ñ(8Ô(8½(À:Ñ:NÔ:NÑOÔOÐOÝÔ*¨C°Ñ8Ô8ˆGÝÔ ¥h¨zÑ&:Ô&:¸GÑDÔDÐDÝÔ'¨­x¸
Ñ/CÔ/CÑDÔDˆFÝÔ Ñ(Ô(Ð(r*   c                ó¤  — t          | d¬¦  «        }|j        sdS g }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        rxt          j        |¦  «        }t          |¦  «        D ]T}t          j        ||¦  «        }t          j	        |¦  «        }t          j        |¦  «        }|                     |¦  «         ŒU|S )zGet PDF file id.r   r:  NÚID)rÎ   rÌ   r�   r  r>  r  r«  r\  r¬  r  ÚbinasciiÚhexlifyrk   )	r(   rj  ÚidlistÚidentityrE   r®   r±  r   Úhex_s	            r)   Ú_getPDFfileidzDocument._getPDFfileidy  sÇ   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFØˆÝÔ%¥eÔ&7¸Ñ&<Ô&<½hÀt¹n¼nÑMÔMˆØÔð 	$ÝÔ# HÑ-Ô-ˆAÝ˜1‘X”Xð $ð $�ÝÔ'¨°!Ñ4Ô4�ÝÔ/°Ñ2Ô2�ÝÔ'¨Ñ-Ô-�Ø—’˜dÑ#Ô#Ð#Ð#Øˆr*   c                óð  — | j         s| j        rt          d¦  «        ‚| j        }t	          |t
          j        ¦  «        rt          j        |¦  «        nt          j        |¦  «        }|}|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          | ¦  «        }t          j        ||¦  «        }t          j        |t
          j        ¦  «        }g }	g }
|j        rt          |||	|d|
¦  «         |	S )z,List fonts, images, XObjects used on a page.r9  r   )rÂ   r  rÃ   rÄ   r>   r�   rÆ   Úpdf_count_pagesÚfz_count_pagesÚMSG_BAD_PAGENOrÎ   Úpdf_lookup_page_objÚpdf_dict_get_inheritableÚPDF_ENUM_NAME_ResourcesrÌ   ÚJM_scan_resources)r(   rá  Úwhatr:  Ú	pageCountrE   rj  ÚpagerefÚrsrcÚlisteÚtracers              r)   Ú_getPageInfozDocument._getPageInfo‰  sÿ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝ2<¸SÅ%ÔBSÑ2TÔ2TÐs•EÔ)¨#Ñ.Ô.Ð.ÕZ_ÔZnÐorÑZsÔZsˆ	ØˆØ�!ŠeˆeØ�‰NˆAð �!Šeˆeà�	Š>ˆ>Ý�nÑ-Ô-Ð-Ý˜tÑ$Ô$ˆÝÔ+¨C°Ñ3Ô3ˆÝÔ-¨gµuÔ7TÑUÔUˆØˆØˆØŒ?ð 	AÝ˜c 4¨°°a¸Ñ@Ô@Ð@Øˆr*   c                ó„   — t          | ¦  «        }|s|st          t          ¦  «        ‚t          |d||dddddd¦
  «
        }|S )z;
        Utility: insert font from file or binary.
        Nr   rA  )rÎ   rÃ   ÚMSG_FILE_OR_BUFFERÚJM_insert_font)r(   ÚfontfileÚ
fontbufferrj  r¸   s        r)   Ú_insert_fontzDocument._insert_font�  sS   € õ ˜tÑ$Ô$ˆØð 	2 
ð 	2ÝÕ0Ñ1Ô1Ð1Ý˜s D¨(°JÀÀ1ÀaÈÈAÈrÑRÔRˆØˆr*   c                óæ   — | j         }t          |t          j        ¦  «        sJ ‚	 t          j        |¦  «        }n*# t
          $ r t          dk    rt          ¦   «          Y dS w xY wt          |¦  «        S )zLoad first outline.r   N)	rÄ   r>   r�   rÅ   Úfz_load_outlinerg   r  rv   ÚOutline)r(   r:  rè  s      r)   Ú_loadOutlinezDocument._loadOutline§  s   € àŒiˆÝ˜3¥Ô 0Ñ1Ô1Ð1Ð1Ð1ð	ÝÔ&¨Ñ,Ô,ˆBˆBøÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<ØˆFˆFð	øøøõ ˜‰|Œ|Ðs   ¥: º#A!Á A!c                óB   — | j         rt          d¦  «        ‚J d¦   «         ‚)z)Make an array page number -> page object.r¾   r   z_make_page_map() is no-op)rÂ   rÃ   r.   s    r)   Ú_make_page_mapzDocument._make_page_map²  s)   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø.Ð.Ñ.Ô.ˆqr*   c                óº  — t          | ¦  «        }d}t          ||¦  «        \  }}}	t          j        |t	          d¦  «        ¦  «        }
t          ||¦  «        \  }}}t          j        |t	          d¦  «        ¦  «        }|r|}n|dz   }t          j        |
|¦  «        }|s)|dk    r#t          j        |t	          d¦  «        |¦  «         t          j        |||¦  «         |dk    �r|}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz   ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °q|s�t          j        |
|	¦  «         |}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz
  ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °qn±|r{|}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz   ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °qn4|	|k     rt          j        |
|	¦  «         nt          j        |
|	dz   ¦  «         |j        j        rt          j        |j        ¦  «         |                      ¦   «          dS )z"Move or copy a PDF page reference.r   r‘  r   r¨  r  N)rÎ   Úpdf_lookup_page_locr�   r  r  rŽ  r^  Úpdf_array_insertrÌ   Úpdf_dict_get_intrY  r­  rV  rW  Ú_reset_page_refs)r(   rá  ÚnbÚbeforeÚcopyrj  ÚsameÚpage1Úparent1Úi1r�  Úpage2Úparent2Úi2rŸ  Úposrû   r  s                     r)   Ú_move_copy_pagezDocument._move_copy_page¸  sæ  € å˜tÑ$Ô$ˆØˆõ 1°#°sÑ;Ô;Ñˆˆw˜åÔ" G­X°fÑ-=Ô-=Ñ>Ô>ˆå0°#°rÑ:Ô:Ñˆˆw˜ÝÔ" G­X°fÑ-=Ô-=Ñ>Ô>ˆØð 	ØˆCˆCà�q‘&ˆCõ Ô ¨Ñ.Ô.ˆð ð 	D˜ š	˜	ÝÔ ¥x°Ñ'9Ô'9¸7ÑCÔCÐCÝÔ  u¨cÑ2Ô2Ð2à�1Š9‰9ØˆFØÔ#ð IÝÔ.°½ÀÑ8IÔ8IÑJÔJ�ÝÔ&¨µ¸Ñ0AÔ0AÀ5È1Á9ÑMÔMÐMÝÔ+¨VµX¸hÑ5GÔ5GÑHÔH�ð Ô#ð Ið ð MÝÔ&¨¨rÑ2Ô2Ð2Ø �ØÔ'ð MÝ!Ô2°F½HÀWÑ<MÔ<MÑNÔN�EÝÔ*¨FµH¸WÑ4EÔ4EÀuÈqÁyÑQÔQÐQÝ"Ô/°½À(Ñ9KÔ9KÑLÔL�Fð Ô'ð Møð
 ð 
;Ø �ØÔ'ð MÝ!Ô2°F½HÀWÑ<MÔ<MÑNÔN�EÝÔ*¨FµH¸WÑ4EÔ4EÀuÈqÁyÑQÔQÐQÝ"Ô/°½À(Ñ9KÔ9KÑLÔL�Fð Ô'ð Møð
 ˜’8�8ÝÔ*¨E°2Ñ6Ô6Ð6Ð6åÔ*¨E°2¸±6Ñ:Ô:Ð:ØŒ>Ô&ð 	9ÝÔ'¨¬Ñ8Ô8Ð8à×ÒÑÔÐÐÐr*   éS  éJ  c                ó  — | j         s| j        rt          d¦  «        ‚t          rt	          j        | j        |||¦  «         n°t          | ¦  «        }t          j	        t          j	        j
        ¦  «        }||_        ||_        t          j        ¦   «         }|dk     rt          t          ¦  «        ‚t          j        |d¦  «        }t          j        ||d||¦  «        }t          j        |||¦  «         |                      ¦   «          | |         S )zMake a new PDF page.r9  rA  r   r   )rÂ   r  rÃ   r'  r   Ú_newPagerÄ   rÎ   r�   rx  Ú
Fixed_UNITr  r  ÚFzBufferrN  Úpdf_add_new_dictÚpdf_add_pageÚpdf_insert_pagerj  )	r(   rá  rl  rà  rj  ÚmediaboxÚcontentsrq  Úpage_objs	            r)   rz  zDocument._newPageð  sú   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ýð 	7ÝŒN˜DœI s¨E°6Ñ:Ô:Ð:Ð:å" 4Ñ(Ô(ˆCÝ”|¥E¤LÔ$;Ñ<Ô<ˆHØˆHŒKØ ˆHŒKÝ”~Ñ'Ô'ˆHØ�RŠxˆxÝ ¥.Ñ1Ô1Ð1õ Ô.¨s°AÑ6Ô6ˆIÝÔ)¨3°¸!¸YÈÑQÔQˆHÝÔ! 3¨¨XÑ6Ô6Ð6ð 	×ÒÑÔÐØ�CŒyÐr*   c                óD   — t          | ¦  «        }t          ||¦  «         d S r,   )rÎ   Ú_remove_dest_range)r(   Únumbersrj  s      r)   Ú_remove_links_tozDocument._remove_links_to  s%   € Ý˜tÑ$Ô$ˆÝ˜3 Ñ(Ô(Ð(Ð(Ð(r*   c                ó–  — t          | ¦  «        }t          j        ||d¦  «        }t          j        |t	          d¦  «        ¦  «         t          j        |t	          d¦  «        ¦  «         t          j        |d¦  «        }t          d¦  «        D ]}t          j        |d¦  «         Œt          j        |t	          d¦  «        |¦  «         d S )Nr   r  r  r   çš™™™™™é?rö  )	rÎ   r�   r˜  rQ  r  r[  r\  r]  r^  )r(   r   rj  rC   r  r®   s         r)   rF  zDocument._remove_toc_item  sµ   € å˜tÑ$Ô$ˆÝÔ% c¨4°Ñ3Ô3ˆÝÔ˜D¥(¨6Ñ"2Ô"2Ñ3Ô3Ð3ÝÔ˜D¥(¨3¡-¤-Ñ0Ô0Ð0ÝÔ# S¨!Ñ,Ô,ˆÝ�q‘”ð 	3ð 	3ˆAÝÔ% u¨cÑ2Ô2Ð2Ð2ÝÔ˜D¥(¨3¡-¤-°Ñ7Ô7Ð7Ð7Ð7r*   c                óÞ   — t          | dd¦  «        rdS d„ | j                             ¦   «         D ¦   «         }|D ]}|r|                     ¦   «          d}Œ| j                             ¦   «          dS )z,Invalidate all pages in document dictionary.rÂ   TNc                ó   — g | ]}|‘ŒS r-   r-   ©r­   r²  s     r)   r¯   z-Document._reset_page_refs.<locals>.<listcomp>  s   € Ð5Ð5Ð5�q�Ð5Ð5Ð5r*   )rý   r  r  r  Úclear)r(   ÚpagesrÖ   s      r)   rj  zDocument._reset_page_refs  s€   € å�4˜ dÑ+Ô+ð 	ØˆFØ5Ð5˜DœO×2Ò2Ñ4Ô4Ð5Ñ5Ô5ˆØð 	ð 	ˆDØð Ø—’‘”�Ø�øØŒ×ÒÑÔÐÐÐr*   c                ó  — t          | ¦  «        }t          j        d¦  «        }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        ||¦  «         t          j        |t          j        |d¦  «        |t          d¦  «        ¦  «         |  	                    ¦   «         }|  
                    |d¬¦  «        }|                     dd|› d	�¦  «        }|                      ||¦  «         d S )
Nr5  r;  r   r6  T©Ú
compressedz/Nums[]z/Nums[r|  )rÎ   r�   r?  r  r>  r  rQ  r%  r[  Úpdf_catalogÚxref_objectrî  Úupdate_object)r(   Úlabelsrj  r9  rF  r   r   s          r)   Ú_set_page_labelszDocument._set_page_labels"  sè   € Ý˜tÑ$Ô$ˆÝÔ'¨Ñ5Ô5ˆ
ÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆÝÔ˜4 Ñ,Ô,Ð,ÝÔ˜D¥%Ô"5°c¸1Ñ"=Ô"=¸zÍ8ÐTZÑK[ÔK[Ñ\Ô\Ð\à×ÒÑ!Ô!ˆØ×Ò °ÐÑ6Ô6ˆØ�|Š|˜IÐ'9°Ð'9Ð'9Ð'9Ñ:Ô:ˆØ×Ò˜4 Ñ&Ô&Ð&Ð&Ð&r*   c                óÈ  — t          | ¦  «        }t          j        ||d¦  «        }|r#t          j        |t	          d¦  «        |¦  «         |rUt          j        |t	          d¦  «        ¦  «         t          ||¦  «        }	t          j        |t	          d¦  «        |	¦  «         t          j        |t	          d¦  «        |¦  «         |rht          j	        |d¦  «        }
t          d¦  «        D ]}||         }t          j        |
|¦  «         Œ t          j        |t	          d¦  «        |
¦  «         n$|�"t          j        |t	          d¦  «        ¦  «         |�‡t          j        |t	          d	¦  «        ¦  «        j        rbt          j        |t	          d	¦  «        ¦  «        }|dk     r|d
u s
|dk    r2|du r0|dz  }t          j        |t	          d	¦  «        |¦  «         dS dS dS dS dS )zB
        "update" bookmark by letting it point to nowhere
        r   ÚTitler  r  r·  r   rö  Nr  FTrA  )rÎ   r�   r˜  r�  r  rQ  r@  r^  rY  r[  r\  r]  r  rÌ   ri  )r(   r   Úactionrˆ  rÎ  r  r  rj  rC   r  rË  r®   rÝ  s                r)   Ú_update_toc_itemzDocument._update_toc_item.  sï  € õ ˜tÑ$Ô$ˆÝÔ% s¨D°!Ñ4Ô4ˆØð 	LÝÔ*¨Dµ(¸7Ñ2CÔ2CÀUÑKÔKÐKØð 	:ÝÔ ¥h¨vÑ&6Ô&6Ñ7Ô7Ð7Ý% s¨FÑ3Ô3ˆCÝÔ ¥h¨s¡m¤m°SÑ9Ô9Ð9ÝÔ ¥h¨s¡m¤m°UÑ;Ô;Ð;Øð 	5ÝÔ# S¨!Ñ,Ô,ˆAÝ˜1‘X”Xð 1ð 1�Ø˜!”H�ÝÔ)¨1¨aÑ0Ô0Ð0Ð0ÝÔ ¥h¨s¡m¤m°QÑ7Ô7Ð7Ð7ØÐÝÔ ¥h¨s¡m¤mÑ4Ô4Ð4ØÐÝÔ! 4­°'Ñ):Ô):Ñ;Ô;ÔFð HÝÔ*¨Dµ(¸7Ñ2CÔ2CÑDÔD�Ø˜’E�E˜h¨%Ð/Ð/°Q¸²U°U¸xÈ4Ð?OÐ?OØ˜R™�AÝÔ*¨Dµ(¸7Ñ2CÔ2CÀQÑGÔGÐGÐGÐGð  ÐðHð Hà5:°UÐ?OÐ?Or*   c           	     ó&  — t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          ¦   «         }|j        rƒt          j        |¦  «        rot          j        |¦  «        }t          |¦  «        D ]K}t          j
        ||¦  «        }|                     t          t          j        |¦  «        ¦  «        ¦  «         ŒL|S )z&Get list of field font resource names.r   r:  Nr;  r<  rí   r=  )rÎ   rÌ   r�   r*  r>  r  r´   rŠ  r‹  r\  r�  rk   r  r‰  )r(   rj  rA  rW  rE   r®   rÝ  s          r)   Ú	FormFontszDocument.FormFontsJ  s   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜‘”Ý˜Ñ Ô ñô ˆõ ‘”ˆØÔð 	F¥Ô 1°%Ñ 8Ô 8ð 	FÝÔ" 5Ñ)Ô)ˆAÝ˜1‘X”Xð Fð F�ÝÔ*¨5°!Ñ4Ô4�Ø—’Õ.­uÔ/@ÀÑ/CÔ/CÑDÔDÑEÔEÐEÐEØˆr*   c                óz   — t          | ¦  «        }t          ||||¦  «         t          j        |j        ¦  «         dS )zAdd a new OC layer.N)rÎ   ÚJM_add_layer_configr�   Úll_pdf_read_ocgrÌ   )r(   r   ÚcreatorÚonrj  s        r)   Ú	add_layerzDocument.add_layer_  s<   € å˜tÑ$Ô$ˆÝ˜S $¨°Ñ4Ô4Ð4ÝÔ˜sœ~Ñ.Ô.Ð.Ð.Ð.r*   r   c                ó.  — d}t          | ¦  «        }t          j        |d¦  «        }t          j        |t	          d¦  «        t	          d¦  «        ¦  «         t          j        |t	          d¦  «        |¦  «         t          j        |t	          d¦  «        d¦  «        }	|s#t          j        |	t	          d¦  «        ¦  «         n^t          |t          ¦  «        s"J d	t          |¦  «        ›d
t          ›�¦   «         ‚t          j        |	t          j        |¦  «        ¦  «         t          j        |t	          d¦  «        d¦  «        }
t          j        d¦  «        }t          j        |
|d¦  «        }t          j        |t	          d¦  «        d¦  «         |r$t          j        |t	          d¦  «        |¦  «         n#t          j        |t	          d¦  «        d¦  «         t          j        ||¦  «        }t          |¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        ||¦  «         |dk    r{t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        st%          t&          ¦  «        ‚t          j        ||¦  «        }|j        st%          t&          ¦  «        ‚n"t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }t          j        ||¦  «         |rMt          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }nLt          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }t          j        ||¦  «         t          j        |j        ¦  «         t          j        |¦  «        }|S )zAdd new optional content group.r   r   r@  ÚOCGr  ÚIntentr   ÚViewz)fixme: intent is not a str. type(intent)=ú type=ÚUsageÚCreatorInfoÚCreatorÚPyMuPDFr•  ÚArtworkÚOCGsrA  ÚConfigsr  ÚOrderr   ÚONÚOFF)rÎ   r�   r}  r^  r  r�  r¥  r›  r>   rá  rÈ   r?  rb  re  r¦  ÚJM_ensure_ocpropertiesr  r™  rÃ   ÚMSG_BAD_OC_CONFIGr¬  rÌ   rž  r  )r(   r   Úconfigr   ÚintentÚusager   rj  ÚocgÚintentsÚuse_forÚci_nameÚcre_infoÚindocgÚocpr  Úcfgs                    r)   Úadd_ocgzDocument.add_ocge  s—  € àˆÝ˜tÑ$Ô$ˆõ Ô$ S¨!Ñ,Ô,ˆÝÔ˜3¥¨Ñ 0Ô 0µ(¸5±/´/ÑBÔBÐBÝÔ& s­H°VÑ,<Ô,<¸dÑCÔCÐCÝÔ*¨3µ¸Ñ0BÔ0BÀAÑFÔFˆØð 	FÝÔ  ­(°6Ñ*:Ô*:Ñ;Ô;Ð;Ð;Ý˜F¥CÑ(Ô(ð 	FØLÐLµT¸&±\´\ÐLÐLÅTÐLÐLÑLÔL�1õ Ô  ­%Ô*<¸VÑ*DÔ*DÑEÔEÐEÝÔ)¨#­x¸Ñ/@Ô/@À!ÑDÔDˆÝÔ$ ]Ñ3Ô3ˆÝÔ*¨7°G¸QÑ?Ô?ˆÝÔ& xµ¸)Ñ1DÔ1DÀiÑPÔPÐPØð 	NÝÔ# H­h°yÑ.AÔ.AÀ5ÑIÔIÐIÐIåÔ# H­h°yÑ.AÔ.AÀ9ÑMÔMÐMÝÔ% c¨3Ñ/Ô/ˆõ % SÑ)Ô)ˆÝÔ  ¥h¨vÑ&6Ô&6Ñ7Ô7ˆÝÔ˜S &Ñ)Ô)Ð)à�BŠ;ˆ;ÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆCÝÔ% cÑ*Ô*ð 5Ý Õ"3Ñ4Ô4Ð4ÝÔ% c¨6Ñ2Ô2ˆCØ”>ð 5Ý Õ"3Ñ4Ô4Ð4ð5õ Ô$ S­(°3©-¬-Ñ8Ô8ˆCåÔ  ¥h¨wÑ&7Ô&7Ñ8Ô8ˆØŒ~ð 	FÝÔ*¨3µ¸Ñ0AÔ0AÀ1ÑEÔEˆCÝÔ˜S &Ñ)Ô)Ð)Øð 	GÝÔ$ S­(°4©.¬.Ñ9Ô9ˆCØ”>ð GÝÔ.¨sµH¸T±N´NÀAÑFÔF�øåÔ# C­°%©¬Ñ9Ô9ˆCØ”>ð GÝÔ-¨cµ8¸E±?´?ÀAÑFÔF�ÝÔ˜S &Ñ)Ô)Ð)õ 	Ô˜cœnÑ-Ô-Ð-åÔ Ñ'Ô'ˆØˆr*   c                ó¼   — | j         rt          d¦  «        ‚t          j        | j        |¦  «        }|r)d| _        d| _        |                      ¦   «          d| _        |S )zDecrypt document.r¾   FT)rÂ   rÃ   r�   Úfz_authenticate_passwordrÄ   r  r*  r  )r(   Úpasswordr"  s      r)   ÚauthenticatezDocument.authenticate«  s`   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ,¨T¬Y¸ÑAÔAˆØð 	 Ø %ˆDÔØ %ˆDÔØ�MŠM‰OŒOˆOØˆDŒLØˆ
r*   c                ó^   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        S )z-Check whether incremental saves are possible.r   r:  F)rÎ   rÌ   r�   Úpdf_can_be_saved_incrementally©r(   rj  s     r)   Úcan_save_incrementallyzDocument.can_save_incrementally·  s4   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ3°CÑ8Ô8Ð8r*   T)r¯  Úwidgetsr¯  rÇ  c               ó„   — t          | ¦  «        }t          j        |t          |¦  «        t          |¦  «        ¦  «         dS )aú  Convert annotations or fields to permanent content.

        Notes:
            Converts annotations or widgets to permanent page content, like
            text and vector graphics, as appropriate.
            After execution, pages will still look the same, but no longer
            have annotations, respectively no fields.
            If widgets are selected the PDF will no longer be a Form PDF.

        Args:
            annots: convert annotations
            widgets: convert form fields

        N)rÎ   r�   Úpdf_bake_documentr4   )r(   r¯  rÇ  rj  s       r)   ÚbakezDocument.bake¾  s8   € õ ˜tÑ$Ô$ˆÝÔ ¥S¨¡[¤[µ#°g±,´,Ñ?Ô?Ð?Ð?Ð?r*   c                ó`   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        S )zNumber of chapters.r¾   )rÂ   rÃ   r�   Úfz_count_chaptersrÄ   r.   s    r)   rÝ  zDocument.chapter_countÐ  s0   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ&¨¬	Ñ2Ô2Ð2r*   c                óÎ   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        }|dk     s||k    rt          d¦  «        ‚t          j        | j        |¦  «        }|S )zPage count of chapter.r¾   r   zbad chapter number)rÂ   rÃ   r�   rÌ  rÄ   Úfz_count_chapter_pages)r(   rà  Úchaptersr�  s       r)   rÞ  zDocument.chapter_page_count×  sh   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ*¨D¬IÑ6Ô6ˆØ�QŠ;ˆ;˜' XÒ-Ð-ÝÐ2Ñ3Ô3Ð3ÝÔ,¨d¬i¸ÑAÔAˆØˆr*   c                óÔ   — t          | dd¦  «        rt          d¦  «        ‚t          | d¦  «        r| j        rd| _        |                      ¦   «          d| _        i | _        d| _        dS )zClose document.rÂ   Tr¾   Ú_outlineN)rý   rÃ   r;   rÑ  rj  rÂ   r  rÄ   r.   s    r)   rò  zDocument.closeá  sv   € å�4˜ dÑ+Ô+ð 	0ÝÐ.Ñ/Ô/Ð/å�4˜Ñ$Ô$ð 	!¨¬ð 	!Ø ˆDŒMØ×ÒÑÔÐð !ˆŒàˆŒð ˆŒ	ˆ	ˆ	r*   c                ó¬  — | j         s| j        rt          d¦  «        ‚| j        }|}|}t	          j        |¦  «        }|dk     rd}||dz
  k    r|dz
  }|dk     r|dz
  }||dz
  k    r|dz
  }t          t          ¦  «        }t          ||||¦  «        }	t          t          ¦  «        }
t          ||
¦  «        D ]}t          t          |         › ¦  «         Œ|	S )z[Convert document to a PDF, selecting page range and optional rotation. Output bytes object.r9  r   r   )rÂ   r  rÃ   rÄ   r�   rM  r7   ÚJM_mupdf_warnings_storeÚJM_convert_to_pdfr\  rr   )r(   r_  r`  ri  Úfz_docr€  rÄ  ÚsrcCountÚlen0r:  Úlen1r®   s               r)   r+  zDocument.convert_to_pdfó  sý   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø”ˆØˆØˆÝÔ'¨Ñ/Ô/ˆØ�Š6ˆ6ØˆBØ�˜1‘ÒÐØ˜A‘ˆBØ�Š6ˆ6Ø˜A‘ˆBØ�˜1‘ÒÐØ˜A‘ˆBÝÕ*Ñ+Ô+ˆÝ ¨¨B°Ñ7Ô7ˆÝÕ*Ñ+Ô+ˆÝ�t˜TÑ"Ô"ð 	5ð 	5ˆAÝÕ.¨qÔ1Ð3Ñ4Ô4Ð4Ð4Øˆ
r*   rá  rg  c                ó  — | j         rt          d¦  «        ‚t          | ¦  «        }|t          |¦  «        vs|t          d|¦  «        vrt          d¦  «        ‚d}d}|dk    r|dz
  }d}|                      ||||¦  «        S )zéCopy a page within a PDF document.

        This will only create another reference of the same page object.
        Args:
            pno: source page number
            to: put before this page, '-1' means after last page.
        r¾   rA  ræ  r   r   ©rÂ   rÃ   r7   r\  rv  ©r(   rá  rg  rÜ  rl  rm  s         r)   Ú	copy_pagezDocument.copy_page
  sš   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/å˜‘Y”Yˆ
à�5 Ñ,Ô,Ð,Ð,Ø�U 2 zÑ2Ô2Ð2Ð2åÐ1Ñ2Ô2Ð2ØˆØˆØ�Š8ˆ8Ø˜a‘ˆBØˆFà×#Ò# C¨¨V°TÑ:Ô:Ð:r*   c                ó  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }|j        r$t	          j	        |t          d¦  «        ¦  «         dS dS )zDelete XML metadata.r9  r;  ÚMetadataN)
rÂ   r  rÃ   rÎ   r�   r  r>  r  rÌ   rQ  )r(   rj  rF  s      r)   Údel_xml_metadatazDocument.del_xml_metadata#  sŒ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒ?ð 	<ÝÔ ¥h¨zÑ&:Ô&:Ñ;Ô;Ð;Ð;Ð;ð	<ð 	<r*   c                ó,   — |                       |¦  «        S )z% Delete one page from a PDF.
        )ré  )r(   rá  s     r)   rè  zDocument.delete_page,  s   € ð × Ò  Ñ%Ô%Ð%r*   c                ó^  — | j         st          d¦  «        ‚| j        rt          d¦  «        ‚| j        }dx}}|rŸ|rt          d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|dk     r||z  }|dk     °|dk     r||z  }|dk     °||cxk    r|k     sn t          d¦  «        ‚t          t          ||d	z   ¦  «        ¦  «        }�nt          |¦  «        d
k    s|g k    rt          d¦  «        ‚t          |¦  «        d
k    r‰|\  }}t          |¦  «        t          u rt          |¦  «        t          u st          d¦  «        ‚||k    r||}}||cxk    r|k     sn t          d¦  «        ‚t          t          ||d	z   ¦  «        ¦  «        }nMt          |d         t          ¦  «        r|d         }|dk     r||z  }|dk     °|f}nt          |d         ¦  «        }t          t          t          t          |¦  «        ¦  «        ¦  «        }|g k    rt          d¦  «         dS |                     ¦   «          |d         dk     s|d         |k    rt          d¦  «        ‚t!          |¦  «        }|                      ¦   «         }	t%          |                      ¦   «         ¦  «        D ]-\  }
}|	|
         d
         d	z
  |v r|                      |¦  «         Œ.|                      |¦  «         t-          |¦  «        D ]}
|                      |
¦  «         Œ|                      ¦   «          dS )a6  Delete pages from a PDF.

        Args:
            Either keywords 'from_page'/'to_page', or two integers to
            specify the first/last page to delete.
            Or a list/tuple/range object, which can contain arbitrary
            page numbers.
            Or a single integer page number.
        rå  r¾   rA  z*cannot mix keyword and positional argumentr_  r`  r   ræ  r   r   z need 1 or 2 positional argumentszboth arguments must be intznothing to deleteN)rç  rÃ   rÂ   rÜ  r8   rµ   r\  r7   rÈ   r4   r>   r´   rë  Úsetrr   ÚsortÚ	frozensetÚget_tocrþ  rE  rF  r†  ÚreversedrX  rj  )r(   r  ÚkwrÜ  rÝ  rO  r…  rá  Úfrozen_numbersÚtocr®   r   s               r)   ré  zDocument.delete_pages1  s`  € ð Œ{ð 	*Ý˜[Ñ)Ô)Ð)ØŒ>ð 	0ÝÐ.Ñ/Ô/Ð/à”_ˆ
Øˆ
ˆˆAØð 	)Øð OÝ Ð!MÑNÔNÐNØ—’�{ BÑ'Ô'ˆAØ—’�y "Ñ%Ô%ˆAØ�a’%�%Ø�Z‘�ð �a’%�%à�a’%�%Ø�Z‘�ð �a’%�%à˜Ð&Ð&Ò&Ð&˜JÒ&Ð&Ð&Ð&Ý Ð!5Ñ6Ô6Ð6Ý�E ! Q¨¡U™OœOÑ,Ô,ˆG‰Gå�4‰yŒy˜1Š}ˆ} ¨¢
 
Ý Ð!CÑDÔDÐDÝ�4‰yŒy˜AŠ~ˆ~Ø‘��1Ý˜Q™œ¥3˜˜­4°©7¬7µc¨>¨>Ý$Ð%AÑBÔBÐBØ�q’5�5Ø˜a�q�AØ˜AÐ*Ð*Ò*Ð* 
Ò*Ð*Ð*Ð*Ý$Ð%9Ñ:Ô:Ð:Ý¥ a¨¨Q©¡¤Ñ0Ô0��Ý˜D œG¥SÑ)Ô)ð )Ø˜1”g�Ø˜A’g�gØ˜:Ñ%�Cð ˜A’g�gà˜&��å  Q¤™.œ.�å•s�3¥ G¡¤Ñ-Ô-Ñ.Ô.ˆØ�bŠ=ˆ=ÝÐ'Ñ(Ô(Ð(ØˆFØ�Š‰ŒˆØ�1Œ:˜Š>ˆ>˜W Rœ[¨JÒ6Ð6ÝÐ1Ñ2Ô2Ð2Ý" 7Ñ+Ô+ˆØ�lŠl‰nŒnˆÝ  ×!7Ò!7Ñ!9Ô!9Ñ:Ô:ð 	,ð 	,‰GˆAˆtØ�1Œv�aŒy˜1‰} Ð.Ð.Ø×%Ò% dÑ+Ô+Ð+øà×Ò˜nÑ-Ô-Ð-å˜'Ñ"Ô"ð 	!ð 	!ˆAØ×Ò˜aÑ Ô Ð Ð à×ÒÑÔÐÐÐr*   r   r=  Ú
ByteStringrf   rÍ  r&  rÉ  c                ó‚  — |                       ¦   «         }||v rt          d|› d�¦  «        ‚|€|}|€|}|€|}|                      |||||¬¦  «        }t          ¦   «         }|                      |dd¦  «         |                      |dt          |¦  «        ¦  «         |                      |dt          |¦  «        ¦  «         |S )	a\  Add an item to the EmbeddedFiles array.

        Args:
            name: name of the new item, must not already exist.
            buffer_: (binary data) the file content.
            filename: (str) the file name, default: the name
            ufilename: (unicode) the file name, default: filename
            desc: (str) the description.
        zName 'z' already exists.N©r=  rf   r&  rÉ  r@  z/EmbeddedFileúParams/CreationDateúParams/ModDate)rú  rÃ   r  Úget_pdf_nowr}  rq  )	r(   r   r=  rf   r&  rÉ  rû  r   Údates	            r)   Úembfile_addzDocument.embfile_addv  sí   € ð  ×&Ò&Ñ(Ô(ˆ	Ø�9ÐÐÝÐ= dÐ=Ð=Ð=Ñ>Ô>Ð>ØÐØˆHØÐØ ˆIØˆ<ØˆDØ× Ò ØØØ!Ø#Øð !ñ ô ˆõ ‰}Œ}ˆØ×Ò˜$ ¨Ñ8Ô8Ð8Ø×Ò˜$Ð 5µ{À4Ñ7HÔ7HÑIÔIÐIØ×Ò˜$Ð 0µ+¸dÑ2CÔ2CÑDÔDÐDØˆr*   c                óD   — t          |                      ¦   «         ¦  «        S )zGet number of EmbeddedFiles.)r7   rú  r.   s    r)   Úembfile_countzDocument.embfile_countœ  s   € å�4×%Ò%Ñ'Ô'Ñ(Ô(Ð(r*   c                óV   — |                       |¦  «        }|                      |¦  «        S )aT  Delete an entry from EmbeddedFiles.

        Notes:
            The argument must be name or index of an EmbeddedFiles item.
            Physical deletion of data will happen on save to a new
            file with appropriate garbage option.
        Args:
            item: name or number of item.
        Returns:
            None
        )rü  r  ©r(   rC   rC  s      r)   Úembfile_delzDocument.embfile_del   s+   € ð ×%Ò% dÑ+Ô+ˆØ× Ò  Ñ%Ô%Ð%r*   r)  c                óV   — |                       |¦  «        }|                      |¦  «        S )z¯Get the content of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            (bytes) The file content.
        )rü  r÷  rõ  s      r)   Úembfile_getzDocument.embfile_get¯  s+   € ð ×%Ò% dÑ+Ô+ˆØ×$Ò$ SÑ)Ô)Ð)r*   r5   c                óØ  — |                       |¦  «        }d|                      ¦   «         |         i}|                      ||¦  «        }|                      |d¦  «        \  }}|dk    r||d<   |                      |d¦  «        \  }}|dk    r||d<   |                      |d¦  «        \  }}|dk    r;t	          j        |                     ¦   «         ¦  «                             ¦   «         |d<   |S )	z­Get information of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            Information dictionary.
        r   rí  rÇ  r‰  rî  rŠ  zParams/CheckSumÚchecksum)rü  rú  r  Úxref_get_keyrE  rF  r×  Údecode)r(   rC   rC  r  r   rO  rð  Úmd5s           r)   Úembfile_infozDocument.embfile_infoº  sò   € ð ×%Ò% dÑ+Ô+ˆØ˜D×.Ò.Ñ0Ô0°Ô5Ð6ˆØ×!Ò! # xÑ0Ô0ˆØ×#Ò# DÐ*?Ñ@Ô@‰ˆˆ4Ø�Š;ˆ;Ø'+ˆH�^Ñ$Ø×#Ò# DÐ*:Ñ;Ô;‰ˆˆ4Ø�Š;ˆ;Ø"&ˆH�YÑØ×"Ò" 4Ð):Ñ;Ô;‰ˆˆ3Ø�Š;ˆ;Ý#+Ô#3°C·J²J±L´LÑ#AÔ#A×#HÒ#HÑ#JÔ#JˆH�ZÑ Øˆr*   r´   c                ó4   — g }|                       |¦  «         |S )z#Get list of names of EmbeddedFiles.)r  )r(   rû  s     r)   rú  zDocument.embfile_namesÐ  s!   € àˆ	Ø×Ò˜IÑ&Ô&Ð&ØÐr*   ÚOptBytesc                óÈ   — |                       |¦  «        }|                      |||||¬¦  «        }t          ¦   «         }|                      |dt	          |¦  «        ¦  «         |S )a­  Change an item of the EmbeddedFiles array.

        Notes:
            Only provided parameters are changed. If all are omitted,
            the method is a no-op.
        Args:
            item: number or name of item.
            buffer_: (binary data) the new file content.
            filename: (str) the new file name.
            ufilename: (unicode) the new filen ame.
            desc: (str) the new description.
        rì  rî  )rü  r  rï  r}  rq  )	r(   rC   r=  rf   r&  rÉ  rC  r   rð  s	            r)   Úembfile_updzDocument.embfile_updÖ  sq   € ð& ×%Ò% dÑ+Ô+ˆØ× Ò ØØØ!Ø#Øð !ñ ô ˆõ ‰}Œ}ˆØ×Ò˜$Ð 0µ+¸dÑ2CÔ2CÑDÔDÐDØˆr*   c           
     óf  — t          | ¦  «        }t          j        ||¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        �r‚t          j        |¦  «                             d¦  «        �sZt          j        |t	          d¦  «        ¦  «        }|j        rt          j	        |¦  «        r#t          j        |t	          d¦  «        ¦  «        }	n|}	t          ||¦  «        }
|
dk    r"|s t          ||¦  «        }t          |¦  «        }nd}|sRt          t          j        |	¦  «        ¦  «        t          |
¦  «        t          t          j        |¦  «        ¦  «        |f}n�t          t          t          j        |	¦  «        ¦  «        t           t          |
¦  «        t"          t          t          j        |¦  «        ¦  «        t$          |i}n#|sd	}nt          d
t           d
t"          d
t$          di}|S )zD
        Get a font by xref. Returns a tuple or dictionary.
        r@  r•  r=  ÚCIDFontTypeÚBaseFontr  ún/ar*   )r\   r\   r\   r*   r\   )rÎ   r�   rš  r  r  Úpdf_name_eqr‰  r3   rÌ   Úpdf_is_nullÚJM_get_fontextensionr+  r-  rÂ  r  r&  Údictkey_extÚdictkey_typer%  )r(   r   Ú	info_onlyÚnamedrj  r  rk  ÚsubtypeÚbasefontÚbnamer#  r=  Úbytes_r    s                 r)   Úextract_fontzDocument.extract_fontõ  sþ  € õ
 ˜tÑ$Ô$ˆÝÔ# C¨Ñ.Ô.ˆÝÔ" 3­°Ñ(8Ô(8Ñ9Ô9ˆÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆÝÔ˜e¥X¨fÑ%5Ô%5Ñ6Ô6ñ %	ÝÔ)¨7Ñ3Ô3×>Ò>¸}ÑMÔMñ%	õ Ô)¨#­x¸
Ñ/CÔ/CÑDÔDˆHØÔ&ð !­%Ô*;¸HÑ*EÔ*Eð !ÝÔ*¨3µ¸Ñ0@Ô0@ÑAÔA��à �Ý& s¨DÑ1Ô1ˆCØ�eŠ|ˆ| Iˆ|Ý+¨C°Ñ6Ô6�Ý)¨'Ñ2Ô2��à�Øð å+­EÔ,=¸eÑ,DÔ,DÑEÔEÝ)¨#Ñ.Ô.Ý)­%Ô*;¸GÑ*DÔ*DÑEÔEØð	��õ %Õ&9½%Ô:KÈEÑ:RÔ:RÑ&SÔ&SÝ#Õ%6°sÑ%;Ô%;Ý$Õ&7½Ô8IÈ'Ñ8RÔ8RÑ&SÔ&SÝ'¨ð	��ð ð Ø$��õ % bÝ# RÝ$ bÝ'¨ð	�ð ˆ	r*   c                ó  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |dt          j        |¦  «        dz
  ¦  «        st          t          ¦  «        ‚t          j        ||d¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        st          d¦  «        ‚t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nd}t          j        ||¦  «        }t!          ¦   «         }t#          ||¦  «         ||t$          <   t          j        |                     ¦   «         ¦  «        |t*          <   |S )	z(Get image by xref. Returns a dictionary.r9  r   r   r•  ÚImageznot an imageÚSMaskÚMask)rÂ   r  rÃ   rÎ   r¯  r�   r–  r—  r˜  r  r  r  Úpdf_dict_getarÌ   r  Úpdf_load_imager5   Ú_make_image_dictÚdictkey_smaskr¯  rë  Údictkey_cs_name)	r(   r   rj  r  r  r±  Úsmaskrß  r    s	            r)   Úextract_imagezDocument.extract_image&  s]  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<å˜tÑ$Ô$ˆå˜˜a¥Ô!3°CÑ!8Ô!8¸Ñ!:Ñ;Ô;ð 	,Ý�lÑ+Ô+Ð+åÔ$ S¨$°Ñ2Ô2ˆÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆåÔ  ­(°7Ñ*;Ô*;Ñ<Ô<ð 	.Ý˜nÑ-Ô-Ð-åÔ ¥X¨gÑ%6Ô%6½ÀÑ8HÔ8HÑIÔIˆØŒ<ð 	ÝÔ$ QÑ'Ô'ˆEˆEàˆEõ Ô" 3¨Ñ,Ô,ˆÝ‰VŒVˆÝ˜˜bÑ!Ô!Ð!Ø!ˆ�=ÑÝ#Ô6°s·~²~Ñ7GÔ7GÑHÔHˆ�?ÑØˆ	r*   r   Féÿ  c                óV   — |                       |||||||||	|
|||||||||||¬¦  «        S )z8
        Save PDF using some different defaults
        )ÚgarbageÚcleanÚdeflateÚdeflate_imagesÚdeflate_fontsÚincrementalrœ  ÚexpandÚlinearÚprettyÚ
encryptionÚpermissionsÚowner_pwÚuser_pwÚ	no_new_idÚpreserve_metadataÚuse_objstmsÚcompression_effortÚraise_on_repairÚreproducible)Úsave)r(   rf   r   r!  r"  r#  r$  r%  rœ  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  s                         r)   Úez_savezDocument.ez_saveD  s^   € ð6 �yŠyØØØØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ#Ø"3Ø'Ø#5Ø /Ø)ð+ ñ ô ð 	r*   c                óŒ   — | j         s| j        rt          d¦  «        ‚t          j        | j        |¦  «        }|j        |j        fS )z-Find new location after layouting a document.r9  )rÂ   r  rÃ   r�   Úfz_lookup_bookmark2rÄ   rà  rÖ   )r(   r  Úlocations      r)   Úfind_bookmarkzDocument.find_bookmarkw  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ÝÔ,¨d¬i¸Ñ<Ô<ˆØÔ ¤Ð.Ð.r*   c                ó
  — t          | ¦  «        }t          j        |¦  «        }	 t          |d|dz
  ¦  «        rt          |d|dz
  ¦  «        st	          t
          ¦  «        ‚t          j        t          j        ||¦  «        ¦  «        }t          j        |¦  «        }t          j	        |t          d¦  «        ¦  «        }|j        �r”t          j        |¦  «        }t          j        ||¦  «        }	t          |¦  «        D �]7}
t          j        ||
¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        rŒ]t          j        |d¦  «        j        rŒxt          j        t          j        |¦  «        ¦  «        }t          j        |¦  «        }t          j        |||¦  «         t          j        ||d¦  «        }t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |	|¦  «         �Œ9t          j        |t          d¦  «        |	¦  «         t1          |¦  «        }|rv|j        rot          j        |t          j        d	¦  «        t          j        ¦   «         d¦  «        }t9          |||d¦  «         t          j        |t          d
¦  «        |¦  «         t          j        |¦  «        }t          j        |||¦  «         t          j        ||d¦  «        }t          j        |||¦  «         t          j        |j        ¦  «         n# t          j        |j        ¦  «         w xY w|                      ¦   «          dS )zMake a full page duplicate.r   r   rA  r§  r•  r¦  r.  rÌ  ó    r"  N) rÎ   r�   rL  r¯  rÃ   rN  r7  rO  rÒ  r  r  rÌ   r«  r[  r\  r¬  r  r  Úpdf_create_objectÚpdf_update_objectr˜  rQ  r›  r^  ÚJM_read_contentsÚpdf_add_streamrœ  ÚPdfObjr9  r  rW  rj  )r(   rá  rg  rj  rÜ  ro  rr  Ú
old_annotsrE   Ú
new_annotsr®   r±  r  Úcopy_or   r/  r�  s                    r)   Úfullcopy_pagezDocument.fullcopy_page~  s-  € å˜tÑ$Ô$ˆÝÔ*¨CÑ0Ô0ˆ
ð0	9Ý˜S ! Z°!¡^Ñ4Ô4ð 2Ý# B¨¨J¸©NÑ;Ô;ð2õ !¥.Ñ1Ô1Ð1åÔ.µÔ0IÈ3ÐPSÑ0TÔ0TÑUÔUˆEåÔ+¨UÑ3Ô3ˆEÝÔ+¨UµH¸XÑ4FÔ4FÑGÔGˆJð Ô$ñ KÝÔ'¨Ñ4Ô4�Ý"Ô0°#°qÑ9Ô9�
Ý˜q™œð >ñ >�AÝÔ+¨Z¸Ñ;Ô;�AÝ#Ô0°!µX¸iÑ5HÔ5HÑIÔI�GÝÔ(¨'µ8¸GÑ3DÔ3DÑEÔEð !Ø ÝÔ*¨A¨uÑ5Ô5Ô@ð !Ø Ý"Ô4µeÔ6PÐRSÑ6TÔ6TÑUÔU�FÝ Ô2°CÑ8Ô8�DÝÔ+¨S°$¸Ñ?Ô?Ð?Ý"Ô3°S¸$ÀÑBÔB�FÝÔ&¨µ¸Ñ0AÔ0AÑBÔBÐBÝÔ&¨µ¸±´Ñ>Ô>Ð>ÝÔ(¨*°fÑ=Ô=Ð=Ñ=ÝÔ" E­8°HÑ+=Ô+=¸zÑJÔJÐJõ # EÑ*Ô*ˆCð ð K�s”~ð Kå Ô/°µeÔ6ZÐ\`Ñ6aÔ6aÕchÔcoÑcqÔcqÐstÑuÔu�Ý  # x°°aÑ8Ô8Ð8ÝÔ" E­8°JÑ+?Ô+?ÀÑJÔJÐJõ Ô*¨CÑ0Ô0ˆDÝÔ# S¨$°Ñ6Ô6Ð6åÔ*¨C°°qÑ9Ô9ˆEÝÔ! 3¨¨EÑ2Ô2Ð2åÔ'¨¬Ñ8Ô8Ð8Ð8ø�EÔ'¨¬Ñ8Ô8Ð8Ð8øøøà×ÒÑÔÐÐÐs   ¥LM ÍM,r'  r:  ÚfontdictÚOptDictc                ó  — t          | |¦  «        }|€Ö|€$t          j        | |¦  «        \  }}}}	}
||||	|
dœ}n(|d         }|d         }|d         }|d         }|d         }|dk    rt          d	¦  «        ‚|d
v rd}nd}|dv rd}n|dv rd}n|dv rd}n	|dv rd}nd}||d<   |dk    rt          }n|dk    rt
          }nd}||d<   ||d<   ||g}| j                             |¦  «         n |d         }|d         }|d         }|d         }|€d}nt          |¦  «        }t          d|¦  «        }||k    r|S |dk     r-|  
                    ||d         |d         |d         ||¦  «        }nd}||d<   ||d<   t          | |¦  «         |S )a¹  Get list of glyph information of a font.

        Notes:
            Must be provided by its XREF number. If we already dealt with the
            font, it will be recorded in doc.FontInfos. Otherwise we insert an
            entry there.
            Finally we return the glyphs for the font. This is a list of
            (glyph, width) where glyph is an integer controlling the char
            appearance, and width is a float controlling the char's spacing:
            width * fontsize is the actual space.
            For 'simple' fonts, glyph == ord(char) will usually be true.
            Exceptions are 'Symbol' and 'ZapfDingbats'. We are providing data for these directly here.
        N)r   rÈ   r#  ÚascenderÚ	descenderr   r#  rÈ   r$  Úsimpler\   zxref is not a font)ÚType1ÚMMType1ÚTrueTypeTF)ÚFangtiÚMingr   )ÚHeitiÚSongr   )ÚGothicÚMinchor   )ÚDotumÚBatangr   rA  ÚZapfDingbatsÚSymbolÚglyphsr'  )ÚCheckFontInfor  Ú_get_font_propertiesrÃ   Úzapf_glyphsÚsymbol_glyphsr  rk   r7   rø  r3  ÚUpdateFontInfo)r:  r   r%  rC  rD  Úfontinfor   r#  ÚstypeÚascÚdscr$  rI  rW  Úoldlimitr/  s                   r)   Úget_char_widthszDocument.get_char_widths¶  sA  € õ( !  dÑ+Ô+ˆØÐØÐÝ-2Ô-GÈÈTÑ-RÔ-RÑ*��c˜5 # sà Ø!ØØ #Ø!$ðð ��ð   Ô'�Ø˜u”o�Ø  Ô(�Ø# JÔ/�Ø! (Ô+�à�bŠyˆyÝ Ð!5Ñ6Ô6Ð6ð Ð8Ð8Ð8Ø��à�ð Ð)Ð)Ð)Ø��ØÐ*Ð*Ð*Ø��ØÐ-Ð-Ð-Ø��ØÐ,Ð,Ð,Ø��à�à!'ˆH�XÑà�~Ò%Ð%Ý$��Ø˜Ò!Ð!Ý&��à�à!'ˆH�XÑØ#+ˆH�ZÑ Ø˜hÐ'ˆHØŒM× Ò  Ñ*Ô*Ð*Ð*à ”{ˆHØ˜hÔ'ˆFØ˜hÔ'ˆFØ 
Ô+ˆHàˆ>ØˆHˆHå˜6‘{”{ˆHå�c˜5‘/”/ˆà�hÒÐØˆMà�aŠ<ˆ<Ø×)Ò)Ø�h˜vÔ&¨°¬¸À*Ô9MÈwÐX[ñô ˆFˆFð ˆFà#ˆ�ÑØˆ�‰Ý�s˜HÑ%Ô%Ð%àˆr*   c                óÊ  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }|j        sdS |dk    r#t          j        |t	          d¦  «        ¦  «        }n5t          j        t          j        |t	          d¦  «        ¦  «        |¦  «        }|j        st          t          ¦  «        ‚t          |¦  «        }|S )z,Content of ON, OFF, RBGroups of an OC layer.r;  ÚOCPropertiesNrA  r  r­  )rÎ   r�   r*  r>  r  rÌ   r  r¬  rÃ   r²  ÚJM_get_ocg_arrays)r(   r³  rj  r¼  r  r    s         r)   Ú	get_layerzDocument.get_layer  sÓ   € å˜tÑ$Ô$ˆÝÔ!ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(ñô ˆð
 Œ~ð 	ØˆFØ�RŠ<ˆ<ÝÔ$ c­8°C©=¬=Ñ9Ô9ˆCˆCåÔ%ÝÔ&¨­X°iÑ-@Ô-@ÑAÔAØñô ˆCð Œ~ð 	1ÝÕ/Ñ0Ô0Ð0Ý Ñ$Ô$ˆØˆ	r*   c                óè  — t          | ¦  «        }t          j        |¦  «        }|dk    rft          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        sd}g }t          j        ¦   «         }t          |¦  «        D ]=}t          j	        |||¦  «         ||j
        |j        dœ}|                     |¦  «         Œ>|S )zShow optional OC layers.r   r;  rd  r­  r   )Únumberr   rŸ  )rÎ   r�   Úpdf_count_layer_configsr*  r>  r  r™  ÚPdfLayerConfigr\  Úpdf_layer_config_infor   rŸ  rk   )r(   rj  rE   r  r    r,  r®   rC   s           r)   Ú
get_layerszDocument.get_layers1  sõ   € å˜tÑ$Ô$ˆÝÔ)¨3Ñ/Ô/ˆØ�Š6ˆ6ÝÔ%ÝÔ% sÑ+Ô+Ý˜VÑ$Ô$Ý˜^Ñ,Ô,Ý˜YÑ'Ô'ñ	ô ˆCõ Ô% sÑ+Ô+ð Ø�ØˆÝÔ#Ñ%Ô%ˆÝ�q‘”ð 	ð 	ˆAÝÔ'¨¨a°Ñ6Ô6Ð6àØ œIØ#œ|ðð ˆDð
 �IŠI�tÑÔÐÐØˆ	r*   c                ó¨   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }d}t	          |¦  «         t          j        |¦  «        }|S )zMake new xref.r9  r   )rÂ   r  rÃ   rÎ   ÚENSURE_OPERATIONr�   r;  )r(   rj  r   s      r)   Úget_new_xrefzDocument.get_new_xrefJ  sZ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØˆÝ˜ÑÔÐÝÔ& sÑ+Ô+ˆØˆr*   c                ó2  — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|                      |d¦  «        \  }}|dk    rdS t	          |                     d	d
¦  «        ¦  «        }|S )zšReturn optional content object xref for an image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject.
        údocument close or encryptedr•  r   ©ú/Imageú/Formúbad object type at xref rÓ  r   r   ú0 Rr\   )rÂ   r  rÃ   rû  r4   rî  )r:  r   rO  r   rÕ  r    s         r)   rÖ  zDocument.get_ocT  s²   € ð Œ=ð 	<˜CÔ,ð 	<ÝÐ:Ñ;Ô;Ð;Ø×"Ò" 4¨Ñ3Ô3‰ˆˆ4Ø�Š;ˆ;˜$Ð&9Ð9Ð9ÝÐ>¸Ð>Ð>Ñ?Ô?Ð?Ø× Ò   tÑ,Ô,‰ˆˆ2Ø�Š;ˆ;Ø�1Ý�—’˜E 2Ñ&Ô&Ñ'Ô'ˆØˆ	r*   c           	     ój  — t          j        d¦  «        }t          | ¦  «        }t          j        t          j        t          j        |¦  «        t          d¦  «        ¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          ¦   «         }t          j        |¦  «        s|S t          j	        |¦  «        }t          |¦  «        D �]ä}t          j        ||¦  «        }t          j        |¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }	t          j        |t          d¦  «        |t          d¦  «        ¦  «        }
d}|
j        rt          j        |
¦  «        }t!          ¦   «         }t          j        |t          d	¦  «        ¦  «        }|j        rÆt          j        |¦  «        r(|                     t          j        |¦  «        ¦  «         nŠt          j        |¦  «        rvt          j	        |¦  «        }t          |¦  «        D ]R}t          j        ||¦  «        }t          j        |¦  «        r'|                     t          j        |¦  «        ¦  «         ŒSt          j        ¦   «         }t          j        ||||¦  «        }|	|| |d
œ}|}|||<   �Œæ|S )z&Show existing optional content groups.r¨  r;  rd  r¬  r  r§  r•  Nr¤  )r   r´  r   rµ  )r�   r?  rÎ   r*  r  r>  r  r5   r™  r«  r\  r¬  r  r  rÌ   r‰  r´   rÊ  rk   ÚPdfResourceStackÚpdf_is_ocg_hidden)r(   r  rj  Úocgsr    rE   r®   r¶  r   r   r  rµ  r·  r´  r�  r‘  r±  Úresource_stackÚhiddenrC   r‹  s                        r)   Úget_ocgszDocument.get_ocgse  su  € åÔ Ñ/Ô/ˆÝ˜tÑ$Ô$ˆÝÔ"ÝÔ"¥EÔ$5°sÑ$;Ô$;½XÀfÑ=MÔ=MÑNÔNÝ˜Ñ(Ô(Ý˜Ñ Ô ñô ˆõ
 ‰VŒVˆÝÔ! 4Ñ(Ô(ð 	ØˆIÝÔ Ñ&Ô&ˆÝ�q‘”ð 	ñ 	ˆAÝÔ% t¨QÑ/Ô/ˆCÝÔ# SÑ)Ô)ˆDÝÔ+­UÔ-?ÀÅhÈvÑFVÔFVÑ-WÔ-WÑXÔXˆDÝÔ% s­H°WÑ,=Ô,=¸rÅ8ÈIÑCVÔCVÑWÔWˆCØˆEØŒ~ð 0ÝÔ)¨3Ñ/Ô/�Ý‘f”fˆGÝÔ'¨­h°xÑ.@Ô.@ÑAÔAˆFØÔ ð CÝÔ$ fÑ-Ô-ð CØ—N’N¥EÔ$5°vÑ$>Ô$>Ñ?Ô?Ð?Ð?ÝÔ'¨Ñ0Ô0ð CÝÔ+¨VÑ4Ô4�AÝ" 1™XœXð Cð C˜Ý!Ô/°¸Ñ;Ô;˜Ý Ô,¨aÑ0Ô0ð CØ#ŸNšN­EÔ,=¸qÑ,AÔ,AÑBÔBÐBøÝ"Ô3Ñ5Ô5ˆNÝÔ,¨c°>À5È#ÑNÔNˆFà Ø%Ø$˜*Ø"ð	ð ˆDð ˆDØˆB�‰I‰IØˆ	r*   c                óŒ  — |t          |                      ¦   «         ¦  «        vrt          d¦  «        ‚|                      |d¬¦  «        }d|vrt          d¦  «        ‚t	          |¦  «        }|                     d¦  «        }|                     d|¦  «        }|dk     s|dk     rd	}nU||d
z   |…                              dd¦  «                             ¦   «         }t          t          t          |¦  «        ¦  «        }|                     d¦  «        }|dk     rd	}nW|                     d|¦  «        }|dk     r|                     d|¦  «        }|dk     rt          d¦  «        ‚||dz   |dz   …         }|                     d¦  «        }|dk     rd	}�n0dx}	}
|}|	dk     s|	|
k    rH|dz  }||k     st          d¦  «        ‚||         dk    r|	dz  }	||         dk    r|
dz  }
|	dk     °B|	|
k    °H||dz   |dz   …         }|                     dd¦  «                             dd¦  «                             dd¦  «        }|                     dd¦  «                             dd¦  «                             dd ¦  «        }dd	l}	 |                     |¦  «        }n/# t          $ r" t          ¦   «          t          d!|›�¦  «         ‚ w xY w||||d"œS )#aˆ  Return the definition of an OCMD (optional content membership dictionary).

        Recognizes PDF dict keys /OCGs (PDF array of OCGs), /P (policy string) and
        /VE (visibility expression, PDF array). Via string manipulation, this
        info is converted to a Python dictionary with keys "xref", "ocgs", "policy"
        and "ve" - ready to recycle as input for 'set_ocmd()'.
        úbad xrefTr�  ú
/Type/OCMDzbad object typeú/OCGs[r|  r   Nrþ  rv  r³   ú/P/r‡  r   zbad object at xrefr   r   z/VE[r   r{  z/Andz"and",z/Notz"not",z/Orz"or",z 0 R]ú 0 Rr   z][z],[zbad /VE key: )r   rz  ÚpolicyÚve)r\  Úxref_lengthrÃ   r’  r7   r¡   rî  r6   r´   rë  r4   ÚjsonÚloadsrg   rv   rr   )r:  r   r   ÚtextlenÚp0r  rz  r„  r…  ÚlpÚrpr‡  s               r)   Úget_ocmdzDocument.get_ocmd‘  sû  € ð •u˜SŸ_š_Ñ.Ô.Ñ/Ô/Ð/Ð/Ý˜ZÑ(Ô(Ð(Ø�Š˜t°ˆÑ5Ô5ˆØ˜tÐ#Ð#ÝÐ.Ñ/Ô/Ð/Ý�d‘)”)ˆà�YŠY�xÑ Ô ˆØ�YŠY�s˜BÑÔˆØ�Š6ˆ6�R˜!’V�VØˆDˆDà˜˜Q™ ˜Ô$×,Ò,¨U°CÑ8Ô8×>Ò>Ñ@Ô@ˆDÝ��C ™œÑ'Ô'ˆDà�YŠY�uÑÔˆØ�Š6ˆ6ØˆFˆFà—’˜4 Ñ$Ô$ˆBØ�AŠvˆvØ—Y’Y˜t RÑ(Ô(�Ø�AŠvˆvÝ Ð!5Ñ6Ô6Ð6à˜b 1™f r¨A¡v˜oÔ.�à�YŠY�vÑÔˆØ�Š6ˆ6ØˆB‰BàˆKˆB�ØˆBØ�q’&�&˜B "šH˜HØ�a‘�Ø˜G’|�|Ý$Ð%9Ñ:Ô:Ð:Ø˜”8˜s’?�?Ø˜!‘G�BØ˜”8˜s’?�?Ø˜!‘G�Bð �q’&�&˜B "šH˜Hð �b˜1‘f˜r A™v�oÔ&ˆBà—
’
˜6 8Ñ,Ô,ß’˜ Ñ*Ô*ß’˜ Ñ(Ô(ð ð
 —’˜G SÑ)Ô)×1Ò1°&¸#Ñ>Ô>×FÒFÀtÈUÑSÔSˆBØˆKˆKˆKðØ—Z’Z ‘^”^��øÝð ð ð ÝÑ Ô Ð ÝÐ.¨Ð.Ð.Ñ/Ô/Ð/Øðøøøð  d°fÀBÐGÐGÐGs   É:J Ê,J<c                ó„  — g }t          | d¬¦  «        }|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }|j        s|S t          ||¦  «        }|S )z!Get list of outline xref numbers.r   r:  r;  rI  rJ  )rÎ   rÌ   r�   r  r>  r  rK  )r(   rN  rj  rF  rO  rP  s         r)   rE  zDocument.get_outline_xrefsÔ  sÄ   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆLÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆØŒð 	ØˆLÝÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆLÝÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆØÔð 	ØˆLÝ  ¨Ñ.Ô.ˆØˆr*   Úfullc                ó.  — | j         s| j        rt          d¦  «        ‚| j        sdS t	          |¦  «        t
          ur4	 |j        }n+# t          $ r t          ¦   «          t          d¦  «        ‚w xY w|  	                    |d¦  «        }|sd„ |D ¦   «         S |S )z1Retrieve a list of fonts used on a page.
        r9  r-   zneed a Page or page numberr   c                ó"   — g | ]}|d d…         ‘ŒS ©NrA  r-   ©r­   rF   s     r)   r¯   z+Document.get_page_fonts.<locals>.<listcomp>õ  ó    € Ð(Ð(Ð(˜q�A�c�r�c”FÐ(Ð(Ð(r*   )
rÂ   r  rÃ   rç  rÈ   r4   rh  rg   rv   rY  ©r(   rá  r�  r"  s       r)   Úget_page_fontszDocument.get_page_fontsæ  sÃ   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ý�‰9Œ9�CÐÐð?Ø”j��øÝð ?ð ?ð ?ÝÑ Ô Ð Ý Ð!=Ñ>Ô>Ð>ð?øøøð ×Ò  QÑ'Ô'ˆØð 	)Ø(Ð( CÐ(Ñ(Ô(Ð(Øˆ
s   ¾A Á(A.c                óš   — | j         s| j        rt          d¦  «        ‚| j        sdS |                      |d¦  «        }|sd„ |D ¦   «         S |S )z2Retrieve a list of images used on a page.
        r9  r-   r   c                ó"   — g | ]}|d d…         ‘ŒS r’  r-   r“  s     r)   r¯   z,Document.get_page_images.<locals>.<listcomp>  r”  r*   ©rÂ   r  rÃ   rç  rY  r•  s       r)   Úget_page_imageszDocument.get_page_imagesø  sl   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ø×Ò  QÑ'Ô'ˆØð 	)Ø(Ð( CÐ(Ñ(Ô(Ð(Øˆ
r*   c                ó>   — d„ |                       ¦   «         D ¦   «         S )zÙReturn page label definitions in PDF document.

        Returns:
            A list of dictionaries with the following format:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int}.
        c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r-   )r  Ú	rule_dict)r­   rC   s     r)   r¯   z,Document.get_page_labels.<locals>.<listcomp>  s"   € ÐJÐJÐJ¨$•” Ñ%Ô%ÐJÐJÐJr*   )r;  r.   s    r)   Úget_page_labelszDocument.get_page_labels  s%   € ð KÐJ°$×2GÒ2GÑ2IÔ2IÐJÑJÔJÐJr*   c                óà   — g }|s|S |                       ¦   «         }|g k    r|S t          | j        ¦  «        D ]6}t          j        ||¦  «        }||k    r|                     |¦  «         |r nŒ7|S )a"  Return a list of page numbers with the given label.

        Args:
            doc: PDF document object (resp. 'self').
            label: (str) label.
            only_one: (bool) stop searching after first hit.
        Returns:
            List of page numbers having this label.
        )r;  r\  rÜ  r  Úget_label_pnork   )r:  ÚlabelÚonly_oner…  r”  r®   Úplabels          r)   Úget_page_numberszDocument.get_page_numbers  sŽ   € ð ˆØð 	ØˆNØ×%Ò%Ñ'Ô'ˆØ�RŠ<ˆ<ØˆNÝ�s”~Ñ&Ô&ð 	ð 	ˆAÝÔ(¨¨FÑ3Ô3ˆFØ˜ŠˆØ—’˜qÑ!Ô!Ð!Øð Ø�EøØˆr*   ©ré  rê  rë  r  rì  r¯  ré  r¹   rë  r   r  r¼   rì  ú'Pixmap'c               óh   — |€t           }|€t          }| |                              ||||||¬¦  «        S )a  Create pixmap of document page by page number.

        Notes:
            Convenience function calling page.get_pixmap.
        Args:
            pno: (int) page number
            matrix: pymupdf.Matrix for transformation (default: pymupdf.Identity).
            colorspace: (str,pymupdf.Colorspace) rgb, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) include alpha channel
            annots: (bool) also render annotations
        Nr¥  )ÚIdentityrß  rñ  )r:  rá  ré  rê  rë  r  rì  r¯  s           r)   Úget_page_pixmapzDocument.get_page_pixmap(  sK   € ð. ˆ>ÝˆFØÐÝˆJØ�3Œx×"Ò"ØØ JØØØð #ñ ô ð 	r*   r   ÚoptionrÎ  ÚOptIntÚtextpageú
'TextPage'rã  ú
typing.Anyc                ó@   — | |                               ||||¬¦  «        S )a>  Extract a document page's text by page number.

        Notes:
            Convenience function calling page.get_text().
        Args:
            pno: page number
            option: (str) text, words, blocks, html, dict, json, rawdict, xhtml or xml.
        Returns:
            output from page.TextPage().
        )r  rÎ  rã  )r  )r:  rá  rª  r  rÎ  r¬  rã  s          r)   Úget_page_textzDocument.get_page_textK  s%   € ð& �3Œx× Ò  ¨d¸%ÀdÐ ÑKÔKÐKr*   c                ó~   — | j         s| j        rt          d¦  «        ‚| j        sdS |                      |d¦  «        }|S )z4Retrieve a list of XObjects used on a page.
        r9  r-   r   r™  )r(   rá  r"  s      r)   Úget_page_xobjectszDocument.get_page_xobjects`  sP   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ø×Ò  QÑ'Ô'ˆØˆ
r*   c                ó  — t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }d}|j        rt          j        |¦  «        }|S )zGet the /SigFlags value.r   r:  rA  r;  r<  ÚSigFlags)rÎ   rÌ   r�   r*  r>  r  r  )r(   rj  ÚsigflagsÚsigflags       r)   Úget_sigflagszDocument.get_sigflagsj  s‹   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�2ÝÔ&ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜Ñ$Ô$ñ	ô ˆð ˆØÔð 	1ÝÔ& xÑ0Ô0ˆGØˆr*   rI  c                óâ   ‡ ‡‡— ˆ ˆˆfd„Š‰ j         rt          d¦  «        ‚‰                      ¦   «          ‰ j        }|sg S d}g } ‰|||¦  «        }‰ j        r‰s‰                      |¦  «         |S )a  Create a table of contents.

        Args:
            simple: a bool to control output. Returns a list, where each entry consists of outline level, title, page number and link destination (if simple = False). For details see PyMuPDF's documentation.
        c                óØ  •— | ræ| j         j        rÚ| j        r| j        }nd}| j        sF| j        r<| j        dk    r&‰                     | j        ¦  «        }|d         dz   }n| j        dz   }nd}nd}‰	s/t          j        | ‰¦  «        }| 	                    ||||g¦  «         n| 	                    |||g¦  «         | j
        r ‰| j
        ||dz   ¦  «        }| j        } | r| j         j        °Ú|S )zPRecursively follow the outline item chain and record item information in a list.r³   rA  r   r   )rÄ   rÌ   rˆ  Úis_externalrl  rÖ   Úresolve_linkr  ÚgetLinkDictrk   ÚdownrL  )
ÚolItemrW  Úlvlrˆ  ÚresolverÖ   Úlinkr:  rš  rI  s
          €€€r)   rš  z!Document.get_toc.<locals>.recurseƒ  s'  ø€ àð %˜Vœ[Ô3ð %Ø”<ð  Ø"œL�E�Eà�EàÔ)ð 
Ø”zð "Ø!œ;¨"Ò,Ð,Ø&)×&6Ò&6°v´zÑ&BÔ&B˜GØ#*¨1¤:°¡>˜D˜Dà#)¤;°¡?˜D˜Dà!˜˜à�Dàð 5Ý Ô,¨V°SÑ9Ô9�DØ—L’L # u¨d°DÐ!9Ñ:Ô:Ð:Ð:à—L’L # u¨dÐ!3Ñ4Ô4Ð4à”;ð AØ#˜G F¤K°¸¸a¹Ñ@Ô@�EØœ�ð5 ð %˜Vœ[Ô3ð %ð6 ˆLr*   r¾   r   )rÂ   rÃ   r*  Úoutlinerç  r  )r:  rI  r¾  r¿  rW  ré  rš  s   ``    @r)   rå  zDocument.get_tocz  s¬   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð@ Œ=ð 	0ÝÐ.Ñ/Ô/Ð/Ø�Š‰ŒˆØ”ˆØð 	ØˆIØˆØˆØˆg�f˜e SÑ)Ô)ˆØŒ:ð 	'˜fð 	'Ø×!Ò! #Ñ&Ô&Ð&Øˆ
r*   c                ó  — d}t          | d¬¦  «        }|j        rBt          j        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }|�+|j        r$t          j        |¦  «        }t          |¦  «        }nd}|S )zGet document XML metadata.Nr   r:  r;  rÞ  r\   )rÎ   rÌ   r�   r*  r>  r  r,  ÚJM_UnicodeFromBuffer)r(   Úxmlrj  rY  r    s        r)   Úget_xml_metadatazDocument.get_xml_metadata°  s�   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	ÝÔ%ÝÔ% cÑ*Ô*Ý˜VÑ$Ô$Ý˜ZÑ(Ô(ñô ˆCð
 ˆ?˜sœ~ˆ?ÝÔ(¨Ñ-Ô-ˆDÝ% dÑ+Ô+ˆBˆBàˆBØˆ	r*   c                ó  — | j         rt          d¦  «        ‚| j        st          d¦  «        ‚t          | j        ¦  «        D ]J}|                      |¦  «        D ]2}|d         t          j        k    s|d         t          j        k    s  dS Œ3ŒKdS )z0Check whether there are annotations on any page.r¾   rå  r   TF)	rÂ   rÃ   rç  r\  rÜ  Úpage_annot_xrefsr�   ÚPDF_ANNOT_LINKrC  ©r:  r®   rC   s      r)   Ú
has_annotszDocument.has_annotsÁ  s¢   € àŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�s”~Ñ&Ô&ð 	 ð 	 ˆAØ×,Ò,¨QÑ/Ô/ð  ð  �à˜Qœ¥5Ô#7Ò7Ð7¸4À¼7ÅeÔF\Ò;\Ð;\Ø˜4˜4˜4øð ð ˆur*   c                óð   — | j         rt          d¦  «        ‚| j        st          d¦  «        ‚t          | j        ¦  «        D ]4}|                      |¦  «        D ]}|d         t          j        k    r  dS ŒŒ5dS )z*Check whether there are links on any page.r¾   rå  r   TF)rÂ   rÃ   rç  r\  rÜ  rÈ  r�   rÉ  rÊ  s      r)   Ú	has_linkszDocument.has_linksÎ  s•   € àŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�s”~Ñ&Ô&ð 	 ð 	 ˆAØ×,Ò,¨QÑ/Ô/ð  ð  �Ø˜”7�eÔ2Ò2Ð2Ø˜4˜4˜4ð 3ð ð ˆur*   c                óP  ‡ — ‰ j         rt          d¦  «        ‚‰                      ¦   «         ‰ _        t	          ˆ fd„ddddddd	d
dddœ
                     ¦   «         D ¦   «         ¦  «        ‰ _        ‰                      d¦  «        dk    rd n‰                      d¦  «        ‰ j        d<   d S )Nz,cannot initialize - document still encryptedc                óD   •— g | ]\  }}|‰                      |¦  «        f‘ŒS r-   )r>  )r­   rª  rF   r(   s      €r)   r¯   z%Document.init_doc.<locals>.<listcomp>ß  s=   ø€ ð ð ð Ù58°Q°q˜˜4×,Ò,¨QÑ/Ô/Ð0ðð ð r*   Úformatz
info:Titlezinfo:Authorzinfo:Subjectzinfo:Keywordszinfo:Creatorzinfo:Producerzinfo:CreationDatezinfo:ModDatezinfo:Trapped)
rÐ  rˆ  Úauthorr‹  ÚkeywordsrŸ  Úproducerr‰  rŠ  Útrappedr)  rã  )r  rÃ   rc  rÑ  r5   rB   r  r>  r.   s   `r)   r*  zDocument.init_docÚ  sØ   ø€ ØÔð 	MÝÐKÑLÔLÐLØ×)Ò)Ñ+Ô+ˆŒÝðð ð ð à%-Ø$0Ø%2Ø&4Ø'6Ø&4Ø'6Ø+>Ø&4Ø&4ð=ð =÷ $še™gœgðñ ô ñô ˆŒð  /3×.?Ò.?ÀÑ.MÔ.MÈvÒ.UÐ.U d dÐ[_×[lÒ[lÐmyÑ[zÔ[zˆŒ�lÑ#Ð#Ð#r*   c
                óÂ  — d}
t          |t          ¦  «        rH|j        j        dk    rt          t          |¦  «        }t          d|                     ¦   «         ¦  «        }
n't          |t
          ¦  «        r|}
nt          |¦  «        }
|
st          d¦  «        ‚|
j        s$|
 	                    ¦   «         }t          d|¦  «        }
|  
                    |
||||||||	¬¦	  «	        S )zß
        Insert an arbitrary supported document to an existing PDF.

        The infile may be given as a filename, a Document or a Pixmap. Other
        parameters - where applicable - equal those of insert_pdf().
        Nr   Úpngzbad infile parameterrj  )r_  r`  ra  ri  rˆ  r¯  Úshow_progressÚfinal)r>   rç  rë  rE   rß  rÁ   ÚtobytesrÃ   rç  r+  Ú
insert_pdf)r(   Úinfiler_  r`  ra  ri  rˆ  r¯  r×  rØ  rá  Úpdfbytess               r)   Úinsert_filezDocument.insert_fileð  só   € ð" ˆÝ�f�fÑ%Ô%ð 	#ØÔ Ô" QÒ&Ð&Ý¥ vÑ.Ô.�Ý˜5 &§.¢.Ñ"2Ô"2Ñ3Ô3ˆCˆCÝ˜¥Ñ)Ô)ð 	#ØˆCˆCå˜6Ñ"Ô"ˆCØð 	5ÝÐ3Ñ4Ô4Ð4ØŒzð 	,Ø×)Ò)Ñ+Ô+ˆHÝ˜5 (Ñ+Ô+ˆCØ�ŠØØ#ØØ!ØØØØ+Øð ñ 
ô 
ð 
	r*   Úhelvr=  útyping.Union[str, list, None]r
  r~  rl  rà  r	  r]  r  rÏ  c	                óŽ   — |                       |||¬¦  «        }	t          |¦  «        sdS |	                     d|||||¬¦  «        }
|
S )zÔCreate a new PDF page and insert some text.

        Notes:
            Function combining pymupdf.Document.new_page() and pymupdf.Page.insert_text().
            For parameter details see these methods.
        )rá  rl  rà  r   )é2   rÝ  )r
  r	  r]  r  )Únew_pagerø   r4  )r:  rá  r   r
  rl  rà  r	  r]  r  rÖ   r    s              r)   Úinsert_pagezDocument.insert_page  sa   € ð" �|Š| ¨5¸ˆ|Ñ@Ô@ˆÝ�D‰zŒzð 	Ø�1Ø×ÒØØØØØØð ñ 
ô 
ˆð ˆ	r*   )r_  r`  ra  ri  rˆ  r¯  rÇ  r¼  r×  rØ  Ú_gmapc               ó  — | j         s| j        rt          d¦  «        ‚| j        |j        k    rt          d¦  «        ‚|r|D ]}|                     ¦   «          Œ|}|dk     r| j        }| j        }|j        }|}|}|}t          |d¦  «        }t          ||dz
  ¦  «        }|dk     r|dz
  }t          ||dz
  ¦  «        }|dk     r|}t          ||¦  «        }t          |¦  «        |
cxk    rdk    rin nft          j
                             |j        ¦  «        }|sd}t          j
                             | j        ¦  «        }|sd}t          d|› d|› d�¦  «         |j        }| j                             |d	¦  «        }|€t!          | ¦  «        }|| j        |<   t"          r$t%          | j        |j        |||||||
||¦  «         nbt)          | ¦  «        }t)          |¦  «        }|j        r|j        st-          d
¦  «        ‚t/          |¦  «         t1          |||||||||
|¦
  «
         |                      ¦   «          |r|                      ||||¬¦  «         |r|                      ||||||	¬¦  «         |dk    rd	| j        |<   d	S d	S )a½  Insert a page range from another PDF.

        Args:
            docsrc: PDF to copy from. Must be different object, but may be same file.
            from_page: (int) first source page to copy, 0-based, default 0.
            to_page: (int) last source page to copy, 0-based, default last page.
            start_at: (int) from_page will become this page number in target.
            rotate: (int) rotate copied pages, default -1 is no change.
            links: (int/bool) whether to also copy links.
            annots: (int/bool) whether to also copy annotations.
            widgets: (int/bool) whether to also copy form fields.
            join_duplicates: (int/bool) join or rename duplicate widget names.
            show_progress: (int) progress message interval, 0 is no messages.
            final: (bool) indicates last insertion from this source PDF.
            _gmap: internal use only

        Copy sequence reversed if from_page > to_page.r9  z'source and target cannot be same objectr   r   z
memory PDFzInserting 'z' at 'rü   Nzsource or target not a PDF)r_  r`  ra  )r_  r`  ra  r¼  )rÂ   r  rÃ   r(  Úrepair_flat_rbgsrÜ  rø  Úminr7   rd   r
   Úbasenamer   rr   r  r8   ÚGraftmapr'  Úextra_FzDocument_insert_pdfrÄ   rÎ   rÌ   r¾  rn  ÚJM_merge_rangerj  rŽ  rð  )r(   Údocsrcr_  r`  ra  ri  rˆ  r¯  rÇ  r¼  r×  rØ  rä  rÖ   r{  ÚoutCountrÖ  r€  rÄ  ÚinnameÚoutnameÚisrtÚpdfoutÚpdfsrcs                           r)   rÚ  zDocument.insert_pdf9  s  € ðL Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ>˜VÔ-Ò-Ð-ÝÐFÑGÔGÐGØð 	(Øð (ð (�Ø×%Ò%Ñ'Ô'Ð'Ð'ØˆØ�Š6ˆ6Ø”ˆBØ”?ˆØÔ$ˆð ˆØˆØˆõ ��Q‰ZŒZˆÝ��X ‘\Ñ"Ô"ˆà�Š6ˆ6Ø˜A‘ˆBÝ��X ‘\Ñ"Ô"ˆà�Š6ˆ6ØˆBÝ��XÑÔˆåˆv‰;Œ;˜Ð*Ð*Ò*Ð*¨Ò*Ð*Ð*Ð*Ð*Ý”W×%Ò% f¤kÑ2Ô2ˆFØð &Ø%�Ý”g×&Ò& t¤yÑ1Ô1ˆGØð 'Ø&�ÝÐ: &Ð:Ð:°Ð:Ð:Ð:Ñ;Ô;Ð;ð ÔˆØ”×"Ò" 4¨Ñ.Ô.ˆØˆ=å˜T‘N”NˆEØ#(ˆDŒN˜4Ñ åð 	då'Ø”IØ”KØØØØØØØ!ØØñô ð ð õ & dÑ+Ô+ˆFÝ% fÑ-Ô-ˆFàÔ$ð ?¨FÔ,=ð ?ÝÐ!=Ñ>Ô>Ð>Ý˜VÑ$Ô$Ð$Ý˜6 6¨2¨r°2°v¸uÀfÈmÐ]bÑcÔcÐcð 	×ÒÑÔÐØð 	Jà�NŠN˜6¨R¸ÀbˆNÑIÔIÐIØð 	tØ×Ò˜V U°bÀ"ÈrÐcrÐÑsÔsÐsØ�AŠ:ˆ:Ø#'ˆDŒN˜4Ñ Ð Ð ð ˆ:r*   c                ój   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|rdndS )Nr   r:  FT)rÎ   rÌ   r�   Úpdf_has_unsaved_changes©r(   rj  r.  s      r)   Úis_dirtyzDocument.is_dirty³  sB   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ)¨#Ñ.Ô.ˆØÐ#ˆtˆt˜eÐ#r*   c                ó^   — t          | d¬¦  «        }|j        rt          j        |¦  «        S dS )z9
        Check whether we have a linearized PDF.
        r   r:  F)rÎ   rÌ   r�   Úpdf_doc_was_linearizedrÅ  s     r)   Úis_fast_webaccesszDocument.is_fast_webaccess»  s6   € õ
 ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	5ÝÔ/°Ñ4Ô4Ð4Øˆur*   c                ó|  — t          | d¬¦  «        }|j        sdS d}	 t          j        t          j        |¦  «        t          j        t          j        t          j        ¦  «        }t          j        |¦  «        rt          j	        |¦  «        }n&# t          $ r t          rt          ¦   «          Y dS w xY w|dk    r|S dS )z Either False or PDF field count.r   r:  FrA  )rÎ   rÌ   r�   r*  r>  ÚPDF_ENUM_NAME_RootÚPDF_ENUM_NAME_AcroFormÚPDF_ENUM_NAME_Fieldsr™  r«  rg   r  rv   )r(   rj  r  Úfieldss       r)   rÑ  zDocument.is_form_pdfÅ  sÏ   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5Øˆð	ÝÔ(ÝÔ% cÑ*Ô*ÝÔ,ÝÔ0ÝÔ.ñ	ô ˆFõ Ô! &Ñ)Ô)ð 4ÝÔ+¨FÑ3Ô3�øøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Ø�5�5ð	øøøð �AŠ:ˆ:ØˆLØˆus   žA/B ÂB1Â0B1c                óŽ   — t          | j        t          j        ¦  «        rdS t          j        | j        j        ¦  «        rd}nd}|S )zCheck for PDF.TF)r>   rÄ   r�   rÆ   Úll_pdf_specificsrÌ   r  s     r)   rç  zDocument.is_pdfÜ  sK   € õ �d”i¥Ô!2Ñ3Ô3ð 	Ø�4õ
 Ô! $¤)Ô"6Ñ7Ô7ð 	ØˆCˆCàˆCØˆ
r*   c                óp   — | j         rt          d¦  «        ‚t          t          j        | ¦  «        ¦  «        S )z Check if document is layoutable.r¾   )rÂ   rÃ   rø   r�   r&  r.   s    r)   Úis_reflowablezDocument.is_reflowableë  s6   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý•EÔ3°DÑ9Ô9Ñ:Ô:Ð:r*   c                ój   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|rdS dS )zCheck whether PDF was repaired.r   r:  FT)rÎ   rÌ   r�   Úpdf_was_repairedrõ  s      r)   Úis_repairedzDocument.is_repairedò  sG   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ" 3Ñ'Ô'ˆØð 	Ø�4Øˆur*   c                óð   — | j         s| j        rt          d¦  «        ‚d}d}t          | ¦  «        }t	          j        |¦  «        }t	          j        |¦  «        }t          |¦  «        t          |¦  «        dœS )z(Show if undo and / or redo are possible.r9  r   )ÚundoÚredo)rÂ   r  rÃ   rÎ   r�   Úpdf_can_undoÚpdf_can_redorø   )r(   r  r  rj  s       r)   Újournal_can_dozDocument.journal_can_doý  sv   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆØˆÝ˜tÑ$Ô$ˆÝÔ! #Ñ&Ô&ˆÝÔ! #Ñ&Ô&ˆÝ˜T™
œ
­D°©J¬JÐ7Ð7Ð7r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zActivate document journalling.r9  N)rÂ   r  rÃ   rÎ   r�   Úpdf_enable_journalrÅ  s     r)   Újournal_enablezDocument.journal_enable  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ  Ñ%Ô%Ð%Ð%Ð%r*   c                ó„   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }|j        o|j        j        }|S )z Check if journalling is enabled.r9  )rÂ   r  rÃ   rÎ   rÌ   Újournal)r(   rj  Úenableds      r)   Újournal_is_enabledzDocument.journal_is_enabled  sH   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØ”.Ð; S¤^Ô%;ˆØˆr*   c                ój  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |t
          ¦  «        rt          j        ||¦  «         n8t          |¦  «        }t          j	        |¦  «        }t          j
        ||¦  «         |j        j        st          dt          ¦  «         dS dS )zLoad a journal from a file.r9  z!Journal and document do not matchN)rÂ   r  rÃ   rÎ   r>   rá  r�   Úpdf_load_journalr7  rb  Úpdf_deserialise_journalrÌ   r  rÀ  rÁ  )r(   rf   rj  r/  Ústms        r)   Újournal_loadzDocument.journal_load  s¼   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝ�h¥Ñ$Ô$ð 	4ÝÔ" 3¨Ñ1Ô1Ð1Ð1å$ XÑ.Ô.ˆCÝÔ& sÑ+Ô+ˆCÝÔ)¨#¨sÑ3Ô3Ð3ØŒ~Ô%ð 	PÝÐ8Õ:NÑOÔOÐOÐOÐOð	Pð 	Pr*   c                óˆ   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        ||¦  «        }|S )z#Show operation name for given step.r9  )rÂ   r  rÃ   rÎ   r�   Úpdf_undoredo_step)r(   rì  rj  r   s       r)   Újournal_op_namezDocument.journal_op_name%  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ& s¨DÑ1Ô1ˆØˆr*   c                ó”   — | j         s| j        rt          d¦  «        ‚d}t          | ¦  «        }t	          j        |¦  «        \  }}||fS )zShow journalling state.r9  r   )rÂ   r  rÃ   rÎ   r�   Úpdf_undoredo_state)r(   Ústepsrj  r    s       r)   Újournal_positionzDocument.journal_position-  sU   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆÝ˜tÑ$Ô$ˆÝÔ,¨SÑ1Ô1‰	ˆˆEØ�5ˆyÐr*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zMove forward in the journal.r9  T)rÂ   r  rÃ   rÎ   r�   Úpdf_redorÅ  s     r)   Újournal_redozDocument.journal_redo6  óG   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝŒ�sÑÔÐØˆtr*   c                ó&  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |t
          ¦  «        rt          j        ||¦  «         dS t          |¦  «        }t          j	        ||¦  «         | 
                    ¦   «          dS )zSave journal to a file.r9  N)rÂ   r  rÃ   rÎ   r>   rá  r�   Úpdf_save_journalÚJM_new_output_fileptrÚpdf_write_journalÚfz_close_output)r(   rf   rj  Úouts       r)   Újournal_savezDocument.journal_save>  s•   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝ�h¥Ñ$Ô$ð 	"ÝÔ" 3¨Ñ1Ô1Ð1Ð1Ð1å'¨Ñ1Ô1ˆCÝÔ# C¨Ñ-Ô-Ð-Ø×ÒÑ!Ô!Ð!Ð!Ð!r*   c                óî   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }|j        j        st          d¦  «        ‚|rt          j        ||¦  «         dS t          j	        |¦  «         dS )zBegin a journalling operation.r9  zJournalling not enabledN)
rÂ   r  rÃ   rÎ   rÌ   r  rÞ   r�   Úpdf_begin_operationÚpdf_begin_implicit_operation)r(   r   rj  s      r)   Újournal_start_opzDocument.journal_start_opJ  s†   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØŒ~Ô%ð 	;ÝÐ 9Ñ:Ô:Ð:Øð 	4ÝÔ% c¨4Ñ0Ô0Ð0Ð0Ð0åÔ.¨sÑ3Ô3Ð3Ð3Ð3r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zEnd a journalling operation.r9  N)rÂ   r  rÃ   rÎ   r�   Úpdf_end_operationrÅ  s     r)   Újournal_stop_opzDocument.journal_stop_opV  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ Ñ$Ô$Ð$Ð$Ð$r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zMove backwards in the journal.r9  T)rÂ   r  rÃ   rÎ   r�   Úpdf_undorÅ  s     r)   Újournal_undozDocument.journal_undo]  r"  r*   c                óª   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|t          j        k    rdS t          j        |¦  «        S )zDocument language.r   r:  N)rÎ   rÌ   r�   Úpdf_document_languager7  r5  )r(   rj  r9  s      r)   r:  zDocument.languagee  sY   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ*¨3Ñ/Ô/ˆØ•5Ô&Ò&Ð&ØˆFÝÔ2°4Ñ8Ô8Ð8r*   c                ó|   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        }|j        |j        fS )z Id (chapter, page) of last page.r¾   )rÂ   rÃ   r�   Úfz_last_pagerÄ   rà  rÖ   )r(   Úlast_locs     r)   Úlast_locationzDocument.last_locationp  s?   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ% d¤iÑ0Ô0ˆØÔ ¤Ð.Ð.r*   c                óf  — t          | ¦  «        }t          j        ¦   «         }t          j        |¦  «        }g }t	          |¦  «        D ]h}t          j        |||¦  «         |j        dk    rd}n|j        dk    rd}nd}||j        |j        ||j	        |j
        dœ}|                     |¦  «         Œi|S )z-Show OC visibility status modifiable by user.r   Úcheckboxr   Úradioboxr¡  )rh  r   ÚdepthrÈ   r   Úlocked)rÎ   r�   ÚPdfLayerConfigUiÚpdf_count_layer_config_uir\  Úpdf_layer_config_ui_inforÈ   r   r=  Úselectedr>  rk   )r(   rj  r,  rE   r    r®   rk  rC   s           r)   Úlayer_ui_configszDocument.layer_ui_configsx  sÃ   € å˜tÑ$Ô$ˆÝÔ%Ñ'Ô'ˆÝÔ+¨SÑ1Ô1ˆØˆÝ�q‘”ð 	ð 	ˆAÝÔ*¨C°°DÑ9Ô9Ð9ØŒy˜AŠ~ˆ~Ø"��Ø”˜a’�Ø"��à�àØ œIØ!œZØ!Øœ-Ø"œkðð ˆDð �IŠI�d‰OŒOˆOˆOØˆ	r*   c                ó¸  — | j         s| j        rt          d¦  «        ‚| j        }t	          j        |¦  «        sdS |}|}t          |¦  «        }t	          j        |¦  «        s|j        |j	        z
  }|j
        |j        z
  }|dk    s|dk    rt          d¦  «        ‚t	          j        ||||¦  «         |                      ¦   «          |                      ¦   «          dS )z Re-layout a reflowable document.r9  Nr­  zbad page size)rÂ   r  rÃ   rÄ   r�   r&  r  r¾  r  r  r  r  r%  rj  r*  )	r(   r  rl  rà  r
  r:  r   rÑ  r.  s	            r)   ÚlayoutzDocument.layout‘  sá   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝÔ.°Ñ4Ô4ð 	ØˆFØˆØˆÝ˜DÑ!Ô!ˆÝÔ(¨Ñ+Ô+ð 	Ø”�q”t‘ˆAØ”�q”t‘ˆAØ�Š8ˆ8�q˜C’x�xÝ˜oÑ.Ô.Ð.ÝÔ  # q¨!¨XÑ6Ô6Ð6à×ÒÑÔÐØ�Š‰Œˆˆˆr*   Úcssrk   c                ó  — | j         s| j        rt          d¦  «        ‚| j        }t	          j        |¦  «        sdS t          |t          ¦  «        r|sdS t          t          |¦  «        ¦  «        }t	          j
        |||¦  «         dS )zÒApply CSS to a reflowable document.

        If 'append' evaluates to True, the CSS will be appended to
        the default CSS of this document type.
        Otherwise the default CSS will be ignored.
        r9  N)rÂ   r  rÃ   rÄ   r�   r&  r>   rá  r4   rø   Úfz_style_document)r(   rF  rk   r:  s       r)   Ú	apply_csszDocument.apply_css¥  s’   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝÔ.¨sÑ3Ô3ð 	ØˆFÝ˜#�sÑ#Ô#ð 	¨3ð 	ØˆFÝ•T˜&‘\”\Ñ"Ô"ˆÝÔ  V¨SÑ1Ô1Ð1Ð1Ð1r*   c                ó  — | j         s| j        rt          d¦  «        ‚|€d}|| vrt          d¦  «        ‚t          |¦  «        t          u r|dk     r| j        }|dk     r||z  }|dk     °t          |t          ¦  «        rt          j        | j	        |¦  «        }n |\  }}t          j
        | j	        ||¦  «        }t          || ¦  «        }d|_        | |_        || j        t          |¦  «        <   t!          j        ¦   «         |_        ||_        |S )z¤Load a page.

        'page_id' is either a 0-based page number or a tuple (chapter, pno),
        with chapter number and page number within that chapter.
        r9  Nr   zpage not in documentT)rÂ   r  rÃ   rÈ   r4   rÜ  r>   r�   Úfz_load_pagerÄ   Úfz_load_chapter_pagerÒ   r  rû   r  rH  r  r  rG  rh  )r(   Úpage_idÚnprÖ   rà  Úpagenumr"  s          r)   r  zDocument.load_page¶  s  € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Øˆ?ØˆGØ˜$ÐÐÝÐ3Ñ4Ô4Ð4Ý�‰=Œ=�CÐÐ G¨a¢K KØ”ˆBØ˜A’+�+Ø˜2‘�ð ˜A’+�+å�g�sÑ#Ô#ð 	KÝÔ% d¤i°Ñ9Ô9ˆDˆDà&ÑˆG�WÝÔ-¨d¬i¸À'ÑJÔJˆDÝ�4˜ÑÔˆàˆŒØˆŒ
Ø#&ˆŒ�˜3™œÑ Ý!Ô5Ñ7Ô7ˆŒØˆŒ
Øˆ
r*   c                ó*  — | j         rt          d¦  «        ‚| j        }t          j        dd¦  «        }t          j        |¦  «        }|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          j        ||¦  «        }|j        |j	        fS )zConvert pno to (chapter, page).r¾   rA  r   )
rÂ   rÃ   rÄ   r�   Úfz_make_locationrM  rN  Úfz_location_from_page_numberrà  rÖ   )r(   rá  Úthis_docrß  rÜ  s        r)   Úlocation_from_page_numberz"Document.location_from_page_numberÔ  sœ   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø”9ˆÝÔ$ R¨Ñ,Ô,ˆÝÔ)¨(Ñ3Ô3ˆ
Ø�AŠgˆgØ�:ÑˆCð �AŠgˆgà�*ÒÐÝ�nÑ-Ô-Ð-ÝÔ0°¸3Ñ?Ô?ˆØŒ{˜CœHÐ$Ð$r*   c                ó¾   — | j         s| j        rt          d¦  «        ‚t          j        |Ž }t          j        | j        j        |                     ¦   «         ¦  «        }|S )z.Make a page pointer before layouting document.r9  )	rÂ   r  rÃ   r�   Ú
FzLocationÚll_fz_make_bookmark2rÄ   rÌ   r  )r(   rß  Úmarks      r)   Úmake_bookmarkzDocument.make_bookmarkâ  sV   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ÝÔ Ð$ˆÝÔ)¨4¬9Ô+?ÀÇÂÁÄÑPÔPˆØˆr*   c                ó˜  — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    ri S |d         dk    rEt          |d                              ¦   «         d         ¦  «        }|                      |d¬¦  «        }n|d         d	k    r	|d         }nd}|�|dd
…         dk    r|dd…         dk    si S ddddœ}|d
d…                              d¦  «        }|dd…         D ]S}	 |                     ¦   «         \  }}n-# t
          $ r  t          dk    rt          ¦   «          |cY c S w xY w|dk    rd||<   ŒT|S )zReturn the PDF MarkInfo value.r   NÚMarkInforÇ  r   r   Tr�  r5   r   ú<<ræ  ú>>F©ÚMarkedÚUserPropertiesÚSuspectsú/Útrue)r‘  rû  r4   r6   r’  rg   r  rv   )r(   r   r    r"  ÚvalidrF   r'  r¸   s           r)   ÚmarkinfozDocument.markinfoê  s‡  € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t ZÑ0Ô0ˆØˆaŒ5�FŠ?ˆ?ØˆIØˆaŒ5�FŠ?ˆ?Ý�r˜!”u—{’{‘}”} QÔ'Ñ(Ô(ˆDØ×"Ò" 4°DÐ"Ñ9Ô9ˆCˆCØ�ŒU�fŠ_ˆ_Ø�Q”%ˆCˆCàˆCØˆ;˜s 2 A 2œw¨$š˜°3°r°s°s´8¸tÒ3CÐ3CØˆIØ °EÀuÐMÐMˆØ�!�B�$Œi�oŠo˜cÑ"Ô"ˆØ�Q�R�R”ð 	"ð 	"ˆAðØŸWšW™YœY‘
��U�UøÝð ð ð Ý'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø�����ðøøøð ˜ŠˆØ!��c‘
øØˆs   Ã9DÄ%D;Ä:D;c                ó  — | j         rt          d¦  «        ‚t          | ¦  «        }|t          |¦  «        vs|t          d|¦  «        vrt          d¦  «        ‚d}d}|dk    r|dz
  }d}|                      ||||¦  «        S )z¡Move a page within a PDF document.

        Args:
            pno: source page number.
            to: put before this page, '-1' means after last page.
        r¾   rA  ræ  r   r   rÚ  rÛ  s         r)   Ú	move_pagezDocument.move_page  s™   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý˜‘Y”Yˆ
Ø•u˜ZÑ(Ô(Ð(Ð(¨Bµe¸BÀ
Ñ6KÔ6KÐ,KÐ,KÝÐ1Ñ2Ô2Ð2ØˆØˆØ�Š8ˆ8Ø˜a‘ˆBØˆFà×#Ò# C¨¨V°TÑ:Ô:Ð:r*   c                ó   — | j         S r,   rµ  r.   s    r)   r   zDocument.name  s
   € àŒzÐr*   c                óœ  — | j         sdS t          | ¦  «        }d}d}t          j        t          j        |¦  «        d¦  «        }t          j        ||¦  «        }t          j        |¦  «        rt          j        |¦  «        }|r!t          j        ||t          j	        ¦  «         n t          j        ||t          j
        ¦  «         |€|dk    S |S )z"Get/set the NeedAppearances value.NrA  ÚNeedAppearancesrÃ  r   )rÑ  rÎ   r�   rÅ  r>  r  Úpdf_is_boolÚpdf_to_boolr�  ÚPDF_TRUEÚ	PDF_FALSE)r(   r¸   rj  ÚoldvalÚappkeyÚformÚapps          r)   Úneed_appearanceszDocument.need_appearances   sÐ   € àÔð 	Ø�4å˜tÑ$Ô$ˆØˆØ"ˆåÔ"ÝÔ! #Ñ&Ô&Øñô ˆõ Ô! $¨Ñ/Ô/ˆÝÔ˜SÑ!Ô!ð 	,ÝÔ& sÑ+Ô+ˆFØð 	?ÝÔ  f­e¬nÑ=Ô=Ð=Ð=åÔ  f­e¬oÑ>Ô>Ð>Øˆ=Ø˜Q’;ÐØˆr*   c                óØ   — | j         rt          d¦  «        ‚t          | j        t          j        ¦  «        r| j        n| j                             ¦   «         }t	          j        |¦  «        }|S )zIndicate password required.r¾   )rÂ   rÃ   r>   rÄ   r�   rÅ   rÇ   Úfz_needs_password)r(   rÉ   rG   s      r)   r)  zDocument.needs_pass8  s]   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý *¨4¬9µeÔ6FÑ GÔ GÐ^�4”9�9ÈTÌYÏ_Ê_ÑM^ÔM^ˆÝÔ% xÑ0Ô0ˆØˆ
r*   c                óB   — |                       |||¬¦  «         | |         S )aX  Create and return a new page object.

        Args:
            pno: (int) insert before this page. Default: after last page.
            width: (float) page width in points. Default: 595 (ISO A4 width).
            height: (float) page height in points. Default 842 (ISO A4 height).
        Returns:
            A pymupdf.Page object.
        ©rl  rà  )rz  )r:  rá  rl  rà  s       r)   râ  zDocument.new_pageA  s%   € ð 	�Š�S ¨fˆÑ5Ô5Ð5Ø�3Œxˆr*   c                óÞ  — | j         s| j        rt          d¦  «        ‚t          |¦  «        t          u rd|f}|| vrt          d¦  «        ‚t          |¦  «        | j        k    rdS t          | ¦  «        }|d         }t          |t          ¦  «        st          t          t          ¦  «         |}|d         }|}t          j        ||¦  «        }t          j        ||¦  «        }|j        |j        fS )z!Get (chapter, page) of next page.r9  r   úpage id not in documentr-   r   )rÂ   r  rÃ   rÈ   r4   rµ   r9  rÊ   r>   rÀ  ÚMSG_BAD_PAGEIDÚPyExc_ValueErrorr�   rQ  Úfz_next_pagerà  rÖ   )r(   rM  rS  r"  rà  rá  rß  Únext_locs           r)   Únext_locationzDocument.next_locationS  sò   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰=Œ=�CÐÐØ˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ý�‰>Œ>˜TÔ/Ò/Ð/Ø�2Ý" 4Ñ(Ô(ˆØ�qŒkˆÝ˜#�sÑ#Ô#ð 	6Ý•NÕ$4Ñ5Ô5Ð5ØˆØ�qŒkˆØˆÝÔ$ W¨cÑ2Ô2ˆÝÔ% x°Ñ5Ô5ˆØÔ ¤Ð.Ð.r*   c                ó¶  — t           rt          j        | j        |¦  «        S t	          | j        t
          j        ¦  «        r!t          j        | j        ¦  «        }| j        }n(t          j        | j        ¦  «        }t          | ¦  «        }|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          j        ||¦  «        }t          |¦  «        }|S r‡   )r'  r   rÈ  rÄ   r>   r�   rÆ   rL  rM  rÎ   rÃ   rN  rO  ÚJM_get_annot_xref_list)r(   rE   rÜ  r2  r‚  r¯  s         r)   rÈ  zDocument.page_annot_xrefsh  sÈ   € Ýð 	9ÝÔ)¨4¬9°aÑ8Ô8Ð8å�d”i¥Ô!2Ñ3Ô3ð 	2ÝÔ.¨t¬yÑ9Ô9ˆJØœ9ˆLˆLåÔ-¨d¬iÑ8Ô8ˆJÝ+¨DÑ1Ô1ˆLØ�!ŠeˆeØ�‰OˆAð �!ŠeˆeàˆzŠ>ˆ>Ý�nÑ-Ô-Ð-ÝÔ,¨\¸1Ñ=Ô=ˆÝ'¨Ñ1Ô1ˆØˆr*   c                ó  — | j         rt          d¦  «        ‚t          r|                      | ¦  «        S t	          | j        t          j        ¦  «        rt          j        | j        ¦  «        S t          j	        | j        ¦  «        S )zNumber of pages.r¾   )
rÂ   rÃ   r'  r-  r>   rÄ   r�   rÅ   rM  rL  r.   s    r)   rÜ  zDocument.page_countz  sv   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	*Ø×#Ò# DÑ)Ô)Ð)Ý�t”y¥%Ô"2Ñ3Ô3ð 	5ÝÔ'¨¬Ñ3Ô3Ð3åÔ(¨$¬)Ñ4Ô4Ð4r*   c                ód  — | j         rt          d¦  «        ‚| j        }t          j        |¦  «        }|}|dk     r||z  }|dk     °t          | ¦  «        }||k    rt          t          ¦  «        ‚t          j        ||¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|S )z2Get CropBox of page number (without loading page).r¾   r   )rÂ   rÃ   rÄ   r�   rM  rÎ   rN  rO  Ú
JM_cropboxrw  r4  )	r(   rá  rS  rÜ  rE   rj  rU  Úcropboxr"  s	            r)   Úpage_cropboxzDocument.page_cropbox†  s´   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø”9ˆÝÔ)¨8Ñ4Ô4ˆ
ØˆØ�!ŠeˆeØ�‰OˆAð �!Šeˆeå˜tÑ$Ô$ˆØ�
Š?ˆ?Ý�nÑ-Ô-Ð-ÝÔ+¨S°!Ñ4Ô4ˆÝ˜WÑ%Ô%ˆÝ˜gÑ&Ô&ˆå�3‰iŒiˆàˆ
r*   c                óø   — t          |¦  «        t          u r| j        }|dk     r||z  }|dk     °d|f}|| vrt          d¦  «        ‚|\  }}t	          j        ||¦  «        }t	          j        | j        |¦  «        }|S )z&Convert (chapter, pno) to page number.r   ry  )rÈ   r4   rÜ  rÃ   r�   rQ  Úfz_page_number_from_locationrÄ   )r(   rM  rN  rà  rá  rß  Úpage_ns          r)   Úpage_number_from_locationz"Document.page_number_from_locationš  sŽ   € å�‰=Œ=�CÐÐØ”ˆBØ˜A’+�+Ø˜2‘�ð ˜A’+�+à˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ø‰ˆ�ÝÔ$ g¨sÑ3Ô3ˆÝÔ3°T´YÀÑDÔDˆØˆr*   c                óp  — t           rt          j        | j        |¦  «        S | j        rt          d¦  «        ‚t          j        | j        ¦  «        }|}|dk     r||z  }|dk     °t          | ¦  «        }d}||k    rt          t          ¦  «        ‚t          j
        t          j        ||¦  «        ¦  «        }|S )zGet xref of page number.r¾   r   )r'  r   r|  rÄ   rÂ   rÃ   r�   rM  rÎ   rN  r  rO  )r(   rá  rÜ  rE   rj  r   s         r)   r|  zDocument.page_xref¨  s¶   € åð 	4Ý”? D¤I¨sÑ3Ô3Ð3ØŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ)¨$¬)Ñ4Ô4ˆ
ØˆØ�!ŠeˆeØ�‰OˆAð �!Šeˆeå˜tÑ$Ô$ˆØˆØ�
Š?ˆ?Ý�nÑ-Ô-Ð-ÝÔ¥Ô 9¸#¸qÑ AÔ AÑBÔBˆØˆr*   c                ó¾   — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    rdS |d         dk    r|d         dd…         S dS )z)Return the PDF PageLayout value.
        r   NÚ
PageLayoutrÇ  Ú
SinglePager   r   ©r‘  rû  ©r(   r   r    s      r)   Ú
pagelayoutzDocument.pagelayout¹  sn   € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t \Ñ2Ô2ˆØˆaŒ5�FŠ?ˆ?Ø�<ØˆaŒ5�FŠ?ˆ?Ø�a”5˜˜˜”9ÐØˆ|r*   c                ó¾   — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    rdS |d         dk    r|d         dd…         S dS )z'Return the PDF PageMode value.
        r   NÚPageModerÇ  ÚUseNoner   r   rŽ  r�  s      r)   ÚpagemodezDocument.pagemodeÇ  sn   € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t ZÑ0Ô0ˆØˆaŒ5�FŠ?ˆ?Ø�9ØˆaŒ5�FŠ?ˆ?Ø�a”5˜˜˜”9ÐØˆyr*   r¤  rë  rì  úcollections.abc.Iterable[Page]c              #  ó`  K  — | j         sdS |pd}|dk     r|| j         z  }|dk     °|t          | j         ¦  «        vrt          d¦  «        ‚|�|| j         k    r|n| j         }|dk    rt          d¦  «        ‚|€||k    rd}nd}t          |||¦  «        D ]}|                      |¦  «        V — ŒdS )z}Return a generator iterator over a page range.

        Arguments have the same meaning as for the range() built-in.
        Nr   zbad start page numberzarg 3 must not be zerorA  r   )rÜ  r\  rÃ   r  )r(   r¤  rë  rì  rá  s        r)   r�  zDocument.pagesÕ  sö   è è € ð
 Œð 	ØˆFà�
˜ˆØ�aŠiˆiØ�T”_Ñ$ˆEð �aŠiˆià�˜dœoÑ.Ô.Ð.Ð.ÝÐ4Ñ5Ô5Ð5ð Ð'¨D°D´OÒ,CÐ,CˆtˆtÈÌˆð �1Š9ˆ9ÝÐ5Ñ6Ô6Ð6Øˆ<Ø�tŠ|ˆ|Ø��à�å˜  dÑ+Ô+ð 	(ð 	(ˆCØ—>’> #Ñ&Ô&Ð'Ð'Ð'Ð'ð	(ð 	(r*   c                óÎ   — t          | d¬¦  «        }d}|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        }|S )zGet xref of PDF catalog.r   r:  r;  )rÎ   rÌ   r�   r  r>  r  r  )r(   rj  r   rF  s       r)   r‘  zDocument.pdf_catalogò  sb   € å˜t¨aÐ0Ñ0Ô0ˆØˆØŒ~ð 	ØˆKÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆÝÔ Ñ%Ô%ˆØˆr*   c                ó2   — |                       d||¬¦  «        S )zGet PDF trailer as a string.rA  )r�  rœ  )r’  )r(   r�  rœ  s      r)   r>  zDocument.pdf_trailerü  s   € à×Ò ¨zÀÐÑGÔGÐGr*   c                óø  — | j         rdS | j        }t          j        |¦  «        }|j        rt          j        |¦  «        S d}t          j        |t          j        ¦  «        s|t          j        z  }t          j        |t          j	        ¦  «        s|t          j
        z  }t          j        |t          j        ¦  «        s|t          j        z  }t          j        |t          j        ¦  «        s|t          j        z  }|S )zDocument permissions.r   l   üÿ )r  rÄ   r�   rÄ  rÌ   Úpdf_document_permissionsÚfz_has_permissionÚFZ_PERMISSION_PRINTÚPDF_PERM_PRINTÚFZ_PERMISSION_EDITÚPDF_PERM_MODIFYÚFZ_PERMISSION_COPYÚPDF_PERM_COPYÚFZ_PERMISSION_ANNOTATEÚPDF_PERM_ANNOTATE)r(   r:  rj  Úperms       r)   r*  zDocument.permissions   sè   € ð Ôð 	Ø�1ØŒYˆÝÔ1°#Ñ6Ô6ˆð Œ>ð 	7ÝÔ1°#Ñ6Ô6Ð6ð ˆåÔ& s­EÔ,EÑFÔFð 	/Ø�%Ô.Ñ.ˆDÝÔ& s­EÔ,DÑEÔEð 	0Ø�%Ô/Ñ/ˆDÝÔ& s­EÔ,DÑEÔEð 	.Ø�%Ô-Ñ-ˆDÝÔ& s­EÔ,HÑIÔIð 	2Ø�%Ô1Ñ1ˆDØˆr*   c                ó*  — | j         s| j        rt          d¦  «        ‚t          |¦  «        t          u rd|f}|| vrt          d¦  «        ‚|dk    rdS |\  }}t          j        ||¦  «        }t          j        | j        |¦  «        }|j	        |j
        fS )z%Get (chapter, page) of previous page.r9  r   ry  rß  r-   )rÂ   r  rÃ   rÈ   r4   r�   rQ  Úfz_previous_pagerÄ   rà  rÖ   )r(   rM  rà  rá  rß  Úprev_locs         r)   Úprev_locationzDocument.prev_location  sª   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰=Œ=�CÐÐØ˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ø�vÒÐØ�2Ø‰ˆ�ÝÔ$ W¨cÑ2Ô2ˆÝÔ)¨$¬)°SÑ9Ô9ˆØÔ ¤Ð.Ð.r*   c                ó  — i }|j         }|j                             ¦   «         D ]
\  }}|||<   Œ|j        j        j        }|j                             ¦   «         }d|_        |                     ¦   «          d}t           	                    d¦  «         |  
                    |¦  «        }|                     ¦   «         D ]\  }}||         }||j        |<   Œ|dk    rn4|j                             ¦   «         }	|	|k    sJ d|›d|d›d|	d›�¦   «         ‚|S )zMake a fresh copy of a page.Néd   r   z	refs_old=z m_internal_old=z#xz m_internal_new=)rh  rG  rB   rÄ   rÌ   ÚrefsrF  r  r  Ústore_shrinkr  )
r(   rÖ   r@  rá  rª  rF   Úrefs_oldÚm_internal_oldrß   Úm_internal_news
             r)   Úreload_pagezDocument.reload_page)  s7  € àˆ
ØŒkˆØÔ$×*Ò*Ñ,Ô,ð 	ð 	‰DˆAˆqØˆJ�q‰MˆMð4 ”9Ô'Ô,ˆØœ×3Ò3Ñ5Ô5ˆàˆŒ	Ø�Š‰ŒˆØˆÝ×Ò˜3ÑÔÐØ�~Š~˜cÑ"Ô"ˆð ×$Ò$Ñ&Ô&ð 	(ð 	(‰DˆAˆqØ˜q”MˆEà"'ˆDÔ˜QÑÐØ�qŠ=ˆ=ð
 ð "œY×7Ò7Ñ9Ô9ˆNØ! ^Ò3Ð3Ð3ØL�xÐLÐL >ÐLÐLÐL¸ÐLÐLÐLñ 4Ô3Ð3àˆr*   c                ób   — t          | d¬¦  «        }|j        rt          j        |¦  «         dS dS )z8
        If we are a PDF document, does repair.
        Fr:  N)rÎ   rÌ   r�   Úpdf_check_documentrÅ  s     r)   ÚrepairzDocument.repaird  sA   € õ ˜t¨eÐ4Ñ4Ô4ˆØŒ>ð 	*ÝÔ$ SÑ)Ô)Ð)Ð)Ð)ð	*ð 	*r*   c                ó  — |s|rdS dS 	 t          j        | j        |¦  «        \  }}}n+# t          $ r t          rt          ¦   «          |rY dS Y dS w xY w|r|j        |j        f||fS t          j        | j        |¦  «        }|||fS )aM  Calculate internal link destination.

        Args:
            uri: (str) some Link.uri
            chapters: (bool) whether to use (chapter, page) format
        Returns:
            (page_id, x, y) where x, y are point coordinates on the page.
            page_id is either page number (if chapters=0), or (chapter, pno).
        )©rA  rA  r   r   )rA  r   r   )	r�   Úfz_resolve_linkrÄ   rg   r  rv   rà  rÖ   r‡  )r(   rl  rÏ  rß  ÚxpÚyprá  s          r)   r»  zDocument.resolve_linkl  sÁ   € ð ð 	Øð &Ø%�~Ø�8ð	ÝÔ/°´	¸3Ñ?Ô?‰KˆC��R�RøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð &Ø%�~�~Ø�8�8ð		øøøð
 ð 	3Ø”K ¤Ð*¨B°Ð2Ð2ÝÔ0°´¸CÑ@Ô@ˆØ�B˜ˆ{Ðs   Š) ©!AÁAc                ó  — t          |¦  «        }|sdx}}|dk    r||k    rt          d¦  «        ‚t          j        ¦   «         }t	          t          |¦  «        ¦  «        }|
�s5t          j        ¦   «         }|r7t          j        |_        t          j        |_	        ||_
        ||_        ||_        |rr|r7t          j        |_        t          j        |_        ||_        ||_        ||_        |r7t          j        |_        t          j        |_        ||_        ||_        ||_        |rr|r7t          j        |_        t          j        |_        ||_        ||_        ||_        |r7t          j        |_        t          j        |_        ||_        ||_         ||_!        n|
}t	          t          |¦  «        ¦  «        }||z
  }|rt          d|› �¦  «        ‚|	r|  "                    d¦  «         tG          | ¦  «        }t          j$        ||¦  «         dS )a=  Rewrite images in a PDF document.

        The typical use case is to reduce the size of the PDF by recompressing
        images. Default parameters will convert all images to JPEG where
        possible, using the specified resolutions and quality. Exclude
        undesired images by setting parameters to False.
        Args:
            dpi_threshold: look at images with a larger DPI only.
            dpi_target: change eligible images to this DPI.
            quality: Quality of the recompressed images (0-100).
            lossy: process lossy image types (e.g. JPEG).
            lossless: process lossless image types (e.g. PNG).
            bitonal: process black-and-white images (e.g. FAX)
            color: process colored images.
            gray: process gray images.
            set_to_gray: whether to change the PDF to gray at process start.
            options: (PdfImageRewriterOptions) Custom options for image
                    rewriting (optional). Expert use only. If provided, other
                    parameters are ignored, except set_to_gray.
        r   z0{dpi_target=} must be less than {dpi_threshold=}zInvalid options: r   N)%rá  rÃ   r�   ÚPdfImageRewriterOptionsrâ  rs  ÚFZ_RECOMPRESS_FAXÚbitonal_image_recompress_methodÚFZ_SUBSAMPLE_AVERAGEÚbitonal_image_subsample_methodÚbitonal_image_subsample_toÚ bitonal_image_recompress_qualityÚ!bitonal_image_subsample_thresholdÚFZ_RECOMPRESS_JPEGÚ&color_lossless_image_recompress_methodÚ%color_lossless_image_subsample_methodÚ!color_lossless_image_subsample_toÚ(color_lossless_image_subsample_thresholdÚ'color_lossless_image_recompress_qualityÚ#color_lossy_image_recompress_methodÚ"color_lossy_image_subsample_methodÚ%color_lossy_image_subsample_thresholdÚcolor_lossy_image_subsample_toÚ$color_lossy_image_recompress_qualityÚ%gray_lossless_image_recompress_methodÚ$gray_lossless_image_subsample_methodÚ gray_lossless_image_subsample_toÚ'gray_lossless_image_subsample_thresholdÚ&gray_lossless_image_recompress_qualityÚ"gray_lossy_image_recompress_methodÚ!gray_lossy_image_subsample_methodÚ$gray_lossy_image_subsample_thresholdÚgray_lossy_image_subsample_toÚ#gray_lossy_image_recompress_qualityÚrecolorrÎ   Úpdf_rewrite_images)r(   Údpi_thresholdÚ
dpi_targetÚqualityÚlossyÚlosslessÚbitonalr  rÚ  Úset_to_grayr  Úquality_strÚtemplate_optsÚdir1rÅ  Údir2Úinvalid_optionsrj  s                     r)   Úrewrite_imageszDocument.rewrite_images†  s  € õB ˜'‘l”lˆØð 	+Ø)*Ð*ˆM˜JØ˜Š>ˆ>˜j¨MÒ9Ð9ÝÐOÑPÔPÐPÝÔ5Ñ7Ô7ˆÝ•3�}Ñ%Ô%Ñ&Ô&ˆØñ #	ÝÔ0Ñ2Ô2ˆDØð GÝ7<Ô7N�Ô4Ý6;Ô6P�Ô3Ø2<�Ô/Ø8C�Ô5Ø9F�Ô6Øð LØð OÝBGÔBZ�DÔ?ÝAFÔA[�DÔ>Ø=G�DÔ:ØDQ�DÔAØCN�DÔ@Øð LÝ?DÔ?W�DÔ<Ý>CÔ>X�DÔ;ØAN�DÔ>Ø:D�DÔ7Ø@K�DÔ=Øð KØð NÝAFÔAY�DÔ>Ý@EÔ@Z�DÔ=Ø<F�DÔ9ØCP�DÔ@ØBM�DÔ?Øð KÝ>CÔ>V�DÔ;Ý=BÔ=W�DÔ:Ø@M�DÔ=Ø9C�DÔ6Ø?J�DÔ<øàˆDå•3�t‘9”9‰~Œ~ˆØ ™+ˆØð 	DÝÐB°ÐBÐBÑCÔCÐCàð 	Ø�LŠL˜‰OŒOˆOÝ˜tÑ$Ô$ˆÝÔ   dÑ+Ô+Ð+Ð+Ð+r*   c                ó°   — | j         st          d¦  «        ‚t          | j        ¦  «        D ]*}|                      |¦  «                             |¦  «         Œ+dS )zÉChange the color component count on all pages.

        Args:
            components: (int) desired color component count, one of 1, 3, 4.

        Invokes the same-named method for all pages.
        rå  N)rç  rÃ   r\  rÜ  r  r×  )r(   Ú
componentsr®   s      r)   r×  zDocument.recolorÝ  sb   € ð Œ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�t”Ñ'Ô'ð 	2ð 	2ˆAØ�NŠN˜1ÑÔ×%Ò% jÑ1Ô1Ð1Ð1ð	2ð 	2r*   c                ó  ‡ ‡‡	‡
— t          ‰ d¦  «        r‰ j        S ˆ fd„t          ‰ j        ¦  «        D ¦   «         Š
d„ Š	ˆ	ˆ
ˆ fd„Šˆfd„}t	          j        ‰ ¦  «        }t	          j        t	          j        |¦  «        d¦  «        }i }t	          j        d¦  «        }t	          j	        ||¦  «        }| 
                    ¦   «         r |||¦  «         t	          j        ||¦  «        }| 
                    ¦   «         r |||¦  «         |‰ _        |S )af  Convert the PDF's destination names into a Python dict.

        The only parameter is the pymupdf.Document.
        All names found in the catalog under keys "/Dests" and "/Names/Dests" are
        being included.

        Returns:
            A dcitionary with the following layout:
            - key: (str) the name
            - value: (dict) with the following layout:
                * "page":  target page number (0-based). If no page number found -1.
                * "to": (x, y) target point on page - currently in PDF coordinates,
                        i.e. point (0,0) is the bottom-left of the page.
                * "zoom": (float) the zoom factor
                * "dest": (str) only occurs if the target location on the page has
                        not been provided as "/XYZ" or if no page number was found.
            Examples:
            {'__bookmark_1': {'page': 0, 'to': (0.0, 541.0), 'zoom': 0.0},
            '__bookmark_2': {'page': 0, 'to': (0.0, 481.45), 'zoom': 0.0}}

            or

            '21154a7c20684ceb91f9c9adc3b677c40': {'page': -1, 'dest': '/XYZ 15.75 1486 0'}, ...
        Ú_resolved_namesc                ó<   •— i | ]}‰                      |¦  «        |“ŒS r-   )r|  )r­   r®   r(   s     €r)   ú
<dictcomp>z*Document.resolve_names.<locals>.<dictcomp>  s'   ø€ ÐKÐKÐK¨q�d—n’n QÑ'Ô'¨ÐKÐKÐKr*   c                óÆ   — t          j        d¦  «        }t          j        |¦  «        }t          j        || dd¦  «         |                     ¦   «          t          |¦  «        S )z1Return string version of a PDF object definition.é   r   r   )r�   Úfz_new_bufferÚFzOutputÚpdf_print_objr'  rÄ  )r  ÚbufferÚoutputs      r)   Ú
obj_stringz*Document.resolve_names.<locals>.obj_string  sX   € åÔ(¨Ñ-Ô-ˆFÝ”^ FÑ+Ô+ˆFÝÔ ¨¨Q°Ñ2Ô2Ð2Ø×"Ò"Ñ$Ô$Ð$Ý'¨Ñ/Ô/Ð/r*   c                ór  •‡— dddœ}|                       ¦   «         rt          j        | ¦  «        } |                      ¦   «         r ‰| ¦  «        }n5|                      ¦   «         r ‰t          j        | d¦  «        ¦  «        }n|S |dd…         }|                     d¦  «        }|dk     r||d<   |S |d|…                              ¦   «         }||d…         }||d<   |                     d	¦  «        rU	 ‰ 	                    t          |                     ¦   «         d
         ¦  «        d¦  «        |d<   n># t          $ r d|d<   Y n-w xY w	 t          |¦  «        |d<   n# t          $ r d|d<   Y nw xY w|d         }|d
k     r|S 	 ‰|         j        Šn# t          $ r |cY S w xY wd„ }ˆfd„}ˆfd„}d„ |                     ¦   «         D ¦   «         }	|	s|S |	d
         }
d                     d„ |
D ¦   «         ¦  «        }
|	dd…         }|
dk    r¥|d= t          |¦  «        d
k    r ||d
         ¦  «        nd}t          |¦  «        dk    r ||d         ¦  «        nd}t          |¦  «        dk    r ||d         ¦  «        nd} ||¦  «        } ||¦  «        }|�|nd|�|ndf|d<   |�|nd|d<   �n|
dv r|d= d|d<   d|d<   nú|
dv rE|d= t          |¦  «        d
k    r ||d
         ¦  «        nd} ||¦  «        }d|�|ndf|d<   d|d<   n±|
dv rE|d= t          |¦  «        d
k    r ||d
         ¦  «        nd} ||¦  «        }|�|nddf|d<   d|d<   nh|
dk    rbt          |¦  «        dk    rO|d=  ||d
         ¦  «        } ||d         ¦  «        } ||¦  «        } ||¦  «        }|�|nd|�|ndf|d<   d|d<   |S )z3Generate value of one item of the names dictionary.rA  r\   )rÖ   Údestr  r   rb  rõ  Nrv  r   rÖ   c                ó†   — | €d S |                       d¦  «        } |                      ¦   «         dk    rd S t          | ¦  «        S )Nrx  rÇ  )r#  râ  r~  )Útokens    r)   Úas_floatz;Document.resolve_names.<locals>.get_array.<locals>.as_float?  sA   € Ø�=Ø˜4ØŸš DÑ)Ô)�Ø—;’;‘=”= FÒ*Ð*Ø˜4Ý˜U‘|”|Ð#r*   c                ó    •— | €d S | ‰j         z
  S r,   )r  )Úpdf_xÚ	page_rects    €r)   Ú	to_fitz_xz<Document.resolve_names.<locals>.get_array.<locals>.to_fitz_xG  ó   ø€ Ø�=Ø˜4Ø˜yœ|Ñ+Ð+r*   c                ó    •— | €d S | ‰j         z
  S r,   )r  )Úpdf_yrû  s    €r)   Ú	to_fitz_yz<Document.resolve_names.<locals>.get_array.<locals>.to_fitz_yL  rý  r*   c                ó8   — g | ]}|                      d ¦  «        ‘ŒS )rx  ©r#  r‹  s     r)   r¯   z=Document.resolve_names.<locals>.get_array.<locals>.<listcomp>Q  s"   € Ð:Ð:Ð: q�Q—W’W˜T‘]”]Ð:Ð:Ð:r*   c              3  óN   K  — | ] }|                      ¦   «         s|d k    ¯|V — Œ!dS )rb  N)Úisalpha)r­   Úchs     r)   r   z<Document.resolve_names.<locals>.get_array.<locals>.<genexpr>V  s3   è è € ÐJÐJ "°·
²
±´ÐJÀÀcÂ	À	˜2À	À	À	À	ÐJÐJr*   ú/XYZr   r­  rg  rh  ©z/Fitz/FitB)r­  r­  ©z/FitHz/FitBH©z/FitVz/FitBVú/FitRrZ  r   )Úpdf_is_indirectr�   r7  r™  rŠ  r  r¡   r#  rí  r8   r4   r6   rg   r  rê  r7   )r"  Ú
templ_dictÚarrayrC  Úsubvalrá  rø  rü  r 	  Úpartsr   r  r  Útoprh  r4  r5  rû  ró  Ú
page_xrefsr(   s                    @€€€r)   Ú	get_arrayz)Document.resolve_names.<locals>.get_array  s  øø€ à"$¨bÐ1Ð1ˆJØ×"Ò"Ñ$Ô$ð 6ÝÔ0°Ñ5Ô5�Ø×ÒÑ!Ô!ð "Ø"˜
 3™œ��Ø—’Ñ"Ô"ð "Ø"˜
¥5Ô#6°s¸CÑ#@Ô#@ÑAÔA��à!Ð!ð ˜!˜B˜$”KˆEð —*’*˜S‘/”/ˆCØ�QŠwˆwØ%*�
˜6Ñ"Ø!Ð!à˜4˜C˜4”[×&Ò&Ñ(Ô(ˆFØ˜#˜$˜$”KˆEØ!&ˆJ�vÑð �Š˜uÑ%Ô%ð 	,ð,Ø)3¯ª½¸F¿LºL¹N¼NÈ1Ô<MÑ8NÔ8NÐPRÑ)SÔ)S�J˜vÑ&Ð&øÝ ð ,ð ,ð ,Ø)+�J˜vÑ&Ð&Ð&ð,øøøð,Ý),¨V©¬�J˜vÑ&Ð&øÝ ð ,ð ,ð ,Ø)+�J˜vÑ&Ð&Ð&ð,øøøð ˜VÔ$ˆCØ�QŠwˆwØ!Ð!ð"Ø  œIœN�	�	øÝð "ð "ð "Ø!Ð!Ð!Ð!ð"øøøð$ð $ð $ð,ð ,ð ,ð ,ð ,ð
,ð ,ð ,ð ,ð ,ð
 ;Ð:¨E¯KªK©M¬MÐ:Ñ:Ô:ˆEØð "Ø!Ð!à˜”8ˆDØ—7’7ÐJÐJ¨ÐJÑJÔJÑJÔJˆDØ˜˜˜”9ˆDà�vŠ~ˆ~Ø˜vÐ&Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�Ý+.¨t©9¬9°qª=¨=�h�h˜t AœwÑ'Ô'Ð'¸d�Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�à�I˜d‘O”O�Ø�I˜c‘N”N�à˜�A�A¨CØ˜�A�A¨Cð$�
˜4Ñ ð .2Ð-= T TÀ3�
˜6Ñ"Ñ"àÐ*Ð*Ð*Ø˜vÐ&Ø#-�
˜4Ñ Ø%(�
˜6Ñ"Ð"àÐ,Ð,Ð,Ø˜vÐ&Ý+.¨t©9¬9°qª=¨=�h�h˜t AœwÑ'Ô'Ð'¸d�Ø�I˜c‘N”N�Ø$'¨a¨m¨¨ÀÐ#E�
˜4Ñ Ø%(�
˜6Ñ"Ð"àÐ,Ð,Ð,Ø˜vÐ&Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�Ø�I˜d‘O”O�Ø)*¨ A A¸CÀÐ#E�
˜4Ñ Ø%(�
˜6Ñ"Ð"à˜’�¥S¨¡Y¤Y°!¢^ ^Ø˜vÐ&Ø�x  Q¤Ñ(Ô(�Ø�h˜t AœwÑ'Ô'�Ø�I˜d‘O”O�Ø�I˜c‘N”N�à˜�A�A¨CØ˜�A�A¨Cð$�
˜4Ñ ð &)�
˜6Ñ"àÐs6   Ã2>D1 Ä1EÅEÅE ÅE,Å+E,Æ F ÆFÆFc                óD  •— t          j        |¦  «        }t          |¦  «        D ]z}t          j        ||¦  «        }t          j        ||¦  «        }|                     ¦   «         r|                     ¦   «         }nt          d|› d�¦  «         d}|r ‰|¦  «        | |<   Œ{dS )zyGenerate name resolution items for pdf_dict.

            This may be either "/Names/Dests" or just "/Dests"
            zkey z is no /NameN)r�   r‹  r\  r�  rŒ  rÊ  r‰  rr   )Ú	dest_dictÚpdf_dictÚ
name_countr®   r'  r"  Údict_keyr	  s          €r)   Ú	fill_dictz)Document.resolve_names.<locals>.fill_dictˆ  s¹   ø€ õ Ô+¨HÑ5Ô5ˆJõ ˜:Ñ&Ô&ð 
9ð 
9�ÝÔ,¨X°qÑ9Ô9�ÝÔ,¨X°qÑ9Ô9�Ø—?’?Ñ$Ô$ð $Ø"ŸšÑ0Ô0�H�HåÐ2 1Ð2Ð2Ð2Ñ3Ô3Ð3Ø#�Hàð 9Ø*3¨)°C©.¬.�I˜hÑ'øð
9ð 
9r*   r;  ÚDests)r;   ré  r\  rÜ  r�   rÄ  r  r>  r?  r  rŠ  Úpdf_load_name_tree)r(   r	  rj  Úcatalogr	  ÚdestsÚ	old_destsrn  r	  ró  r	  s   `       @@@r)   Úresolve_nameszDocument.resolve_namesê  sd  øøøø€ õ2 �4Ð*Ñ+Ô+ð 	(ØÔ'Ð'àKÐKÐKÐKµE¸$¼/Ñ4JÔ4JÐKÑKÔKˆ
ð	0ð 	0ð 	0ðv	ð v	ð v	ð v	ð v	ð v	ð v	ðp	9ð 	9ð 	9ð 	9ð 	9õ, Ô1°$Ñ7Ô7ˆõ Ô%¥eÔ&7¸Ñ&<Ô&<¸fÑEÔEˆàˆ	õ Ô" 7Ñ+Ô+ˆõ Ô& w°Ñ6Ô6ˆ	Ø× Ò Ñ"Ô"ð 	,ØˆI�i Ñ+Ô+Ð+õ Ô'¨¨UÑ3Ô3ˆØ×ÒÑÔð 	'ØˆI�i Ñ&Ô&Ð&à(ˆÔØÐr*   c                ó*  — | j         }	 | j        s| j        rt          d¦  «        ‚t	          |¦  «        t
          u rnWt          |d¦  «        rt          |¦  «        }n7t          |d¦  «        r|j        }nt          |d¦  «        st          d¦  «        ‚|| j        k    r|st          d¦  «        ‚|
r|rt          d¦  «        ‚| j        dk     rt          d	¦  «        ‚|r!| j        |k    s| j	        rt          d
¦  «        ‚|rt          |¦  «        dk    s|r"t          |¦  «        dk    rt          d¦  «        ‚t          | d¬¦  «        }|s4|                      ¦   «         }t          |d¬¦  «        }t          |¦  «        }t          j        ¦   «         }||_        ||_        ||_        ||_        ||_        |	|_        ||_        ||_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        |�|                      |¦  «         n|�|                      |¦  «         |�| !                    |¦  «         ||_"        ||_#        ||_$        d }d|j%        _&        tO          |¦  «         |dk    rtQ          |¦  «         tS          |t
          ¦  «        rt          j*        |||¦  «         n9tW          |¦  «        }t          j,        |||¦  «         | -                    ¦   «          |r| j         r|st]          d¦  «        ‚d S d S d S )Nr9  r:   r   Úseekú)filename must be str, Path or file objectz$save to original must be incrementalz3'linear' and 'use_objstms' cannot both be requestedr   zcannot save with zero pageszincremental needs original fileé(   z"password length must not exceed 40Fr:  rj  )r	   r/  r   zDocument save did a repair)/r  rÂ   r  rÃ   rÈ   rá  r;   r   rÜ  r	   r7   rÎ   r+  r:   r�   ÚPdfWriteOptionsÚdo_incrementalÚdo_asciiÚdo_compressÚdo_compress_imagesÚdo_compress_fontsÚdo_decompressÚ
do_garbageÚ	do_prettyÚ	do_linearÚdo_cleanÚdo_sanitizeÚdont_regenerate_idÚdo_appearanceÚ
do_encryptr*  r2  Úopwd_utf8_set_valueÚupwd_utf8_set_valueÚdo_preserve_metadataÚdo_use_objstmsr0  rÌ   ra  ÚJM_embedded_cleanÚJM_ensure_identityr>   Úpdf_save_documentr%  Úpdf_write_documentr'  rg   )r(   rf   r   r!  r"  r#  r$  r%  rœ  r&  r'  r-  Ú
appearancer(  r)  r*  r+  r,  r.  r/  r0  r1  r2  Úis_repaired_prerj  Ú	pdf_bytesr2  rÅ  r(  s                                r)   r3  zDocument.saveµ  s~  € ð6 Ô*ˆØ=ØŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰>Œ>�SÐ Ð ØÝ�X˜vÑ&Ô&ð 	JÝ˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	JØ”}ˆHˆHÝ˜ 6Ñ*Ô*ð 	JÝÐHÑIÔIÐIØ�t”yÒ Ð ¨Ð ÝÐCÑDÔDÐDØð 	T�kð 	TÝÐRÑSÔSÐSØŒ?˜QÒÐÝÐ:Ñ;Ô;Ð;Øð 	DØŒy˜HÒ$Ð$¨¬Ð$Ý Ð!BÑCÔCÐCØð 	C•s˜7‘|”| bÒ(Ð(¨HÐ(½¸X¹¼ÈÒ9KÐ9KÝÐAÑBÔBÐBå˜t¨eÐ4Ñ4Ô4ˆØð 	1Ø×+Ò+Ñ-Ô-ˆIÝ y¸5ÐAÑAÔAˆLÝ" <Ñ0Ô0ˆCåÔ$Ñ&Ô&ˆØ)ˆÔØˆŒØ"ˆÔØ"0ˆÔØ!.ˆÔØ#ˆÔØ!ˆŒØˆŒØˆŒØˆŒØ ˆÔØ"+ˆÔØ'ˆÔØ$ˆŒØ&ˆÔØ(ˆÔØÐØ×$Ò$ XÑ.Ô.Ð.Ð.ØÐ Ø×$Ò$ WÑ-Ô-Ð-ØÐØ×$Ò$ WÑ-Ô-Ð-Ø$5ˆÔ!Ø)ˆÔØ"4ˆÔàˆØ*+ˆŒÔ'Ý˜#ÑÔÐØ˜Š>ˆ>Ý˜sÑ#Ô#Ð#Ý�h¥Ñ$Ô$ð 	"åÔ# C¨°4Ñ8Ô8Ð8Ð8å'¨Ñ1Ô1ˆCåÔ$ S¨#¨tÑ4Ô4Ð4Ø×ÒÑ!Ô!Ð!Øð 	?ØÔð ?¨ð ?ÝÐ =Ñ>Ô>Ð>ð	?ð 	?ð?ð ?ð ?ð ?r*   c                ój  — | j         rt          d¦  «        ‚t          |¦  «        t          u rnGt	          |d¦  «        rt          |¦  «        }n't	          |d¦  «        r|j        }nt          d¦  «        ‚|| j        k    rt          d¦  «        ‚t          | ¦  «        }t          j        ||¦  «         dS )z.Save a file snapshot suitable for journalling.zdoc is closedr:   r   r!	  zcannot snapshot to originalN)	rÂ   rÃ   rÈ   rá  r;   r   rÎ   r�   Úpdf_save_snapshot)r(   rf   rj  s      r)   Úsave_snapshotzDocument.save_snapshot  s»   € àŒ>ð 	.Ý˜_Ñ-Ô-Ð-Ý�‰>Œ>�SÐ Ð ØÝ�X˜vÑ&Ô&ð 	JÝ˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	JØ”}ˆHˆHåÐHÑIÔIÐIØ�t”yÒ Ð ÝÐ:Ñ;Ô;Ð;Ý˜tÑ$Ô$ˆÝÔ  XÑ.Ô.Ð.Ð.Ð.r*   c                óP   — |                       | j        dt          j        ¬¦  «        S )z Save PDF incrementallyT)r%  r)  )r3  r   r�   ÚPDF_ENCRYPT_KEEPr.   s    r)   ÚsaveIncrzDocument.saveIncr+  s   € à�yŠy˜œ°ÅÔAWˆyÑXÔXÐXr*   Úattached_filesÚclean_pagesÚembedded_filesÚhidden_textÚ
javascriptr  Ú
redactionsÚredact_imagesÚremove_linksÚreset_fieldsÚreset_responsesÚ
thumbnailsÚxml_metadatac                óP  — d„ }| j         st          d¦  «        ‚| j        s| j        rt          d¦  «        ‚|sd}|r|                      i ¦  «         | D �]p}|
r+|                     ¦   «         D ]}|                     ¦   «          Œ|	r.|                     ¦   «         }|D ]}|                     |¦  «         Œd}|r ||¦  «        }t          |¦  «        }| 
                    ¦   «         D ]h}|j        d         t          j        k    r|r|                     d¬¦  «         |r|                     ¦   «          |j        d         t          j        k    rd}Œi|s|r|r|                     |¬	¦  «         |r|                     ¦   «          |rA|                      |j        d
¦  «        d         dk    r|                      |j        d
d¦  «         �Œr|r,|                      ¦   «         D ]}|                      |¦  «         Œ|r|                      ¦   «          |s|sd}n|                      ¦   «         }t5          d|¦  «        D ]ð}|                      |¦  «        sd|› d�}t          |¦  «        ‚|r9|                      |d¦  «        d         dk    rd}|                      ||¦  «         Œg|sŒj|                      |d¦  «        d         dk    r/|                      |d¦  «         |                      |dd¬¦  «         Œ¹|                      |d¦  «        d         dk    r|                      |dd¦  «         Œñd S )Nc                ó~  ‡	‡
— t          t          dd¦  «        Š	t          t          dd¦  «        Š
ˆ	ˆ
fd„}d}|                      dt          t          z  ¬¦  «        }|                     dd	¦  «        D ]Ë}|                     d
¦  «        dk    rŒ|                     dd	¦  «        D ]˜}|                     t          d	¦  «        D ]z} ||¦  «        sŒ|                     t          ¦  «        p|                     d¦  «        }|sŒ@t          |¦  «        }|j	        s|j
        rŒ^|                      |d¬¦  «         |dz  }Œ{Œ™ŒÌ|S )zBAdd redaction annots for hidden text spans and return their count.ÚFZ_STEXT_FILLEDNÚFZ_STEXT_STROKEDc                ó  •— |                       t          ¦  «        p|                       d¦  «        }t          |t          ¦  «        r!|                     d¦  «        d         dk    rdS |                       d¦  «        }|dk    rdS |                       t
          ¦  «        }t          |t          ¦  «        rTt          ‰t          ¦  «        r?t          ‰t          ¦  «        r*t          |‰z  ¦  «        }t          |‰z  ¦  «        }|s|sdS dS )	Nrb  ú+rA  ÚGlyphLessFontTrì  r   F)r8   Údictkey_fontr>   rá  r6   Údictkey_char_flagsr4   rø   )rò  rb  rì  Ú
char_flagsÚfilledÚstrokedÚfilled_flagÚstroked_flags         €€r)   Úis_hidden_spanzJDocument.scrub.<locals>.add_hidden_text_redactions.<locals>.is_hidden_spanI  sþ   ø€ Ø—x’x¥Ñ-Ô-ÐA°·²¸&Ñ1AÔ1A�Ý˜d¥CÑ(Ô(ð $à—z’z #‘” rÔ*¨oÒ=Ð=Ø#˜tàŸš Ñ)Ô)�Ø˜A’:�:Ø˜4à!ŸXšXÕ&8Ñ9Ô9�
å˜z­3Ñ/Ô/ð$å" ;µÑ4Ô4ð$õ # <µÑ5Ô5ð$õ
 " *¨{Ñ":Ñ;Ô;�FÝ" :°Ñ#<Ñ=Ô=�GØ!ð $¨'ð $Ø#˜tà�ur*   r   r5   ©rÎ  Úblocksr-   rÈ   rÿ  r?  F)rÑ  r   )rý   r�   r  ÚTEXT_PRESERVE_SPANSÚTEXT_COLLECT_STYLESr8   Údictkey_spansÚdictkey_bboxr4  Úis_emptyÚis_infiniteÚadd_redact_annot)rÖ   r]	  r  r¬  Úblockro   rò  r?  r  r[	  r\	  s            @@r)   Úadd_hidden_text_redactionsz2Document.scrub.<locals>.add_hidden_text_redactionsD  s}  øø€ å!¥%Ð):¸DÑAÔAˆKÝ"¥5Ð*<¸dÑCÔCˆLðð ð ð ð ð ð0 ˆEØ—}’}ØÕ1Õ4GÑGð %ñ ô ˆHð "Ÿš h°Ñ3Ô3ð #ð #�Ø—9’9˜VÑ$Ô$¨Ò)Ð)ØØ!ŸIšI g¨rÑ2Ô2ð #ð #�DØ $§¢­¸Ñ ;Ô ;ð 
#ð 
#˜Ø-˜~¨dÑ3Ô3ð %Ø$Ø#Ÿxšx­Ñ5Ô5ÐI¸¿ºÀ&Ñ9IÔ9I˜Ø#ð %Ø$Ý# D™zœz˜Øœ=ð %¨DÔ,<ð %Ø$Ø×-Ò-¨d¸eÐ-ÑDÔDÐDØ ™
˜˜ð
#ð#ð ˆLr*   rå  zclosed or encrypted docFr   r:  )r=  T)ÚimagesÚThumbrÇ  r   z	bad xref z - clean PDF before scrubbingÚSz/JavaScriptz<</S/JavaScript/JS()>>r@  z	/Metadataú<<>>s   deleted)r©  rÞ  )rç  rÃ   r  rÂ   Úset_metadatarÇ  Úresetr}  Údelete_linkrø   r¯  rÈ   r�   rU  r(  r³  r  Úapply_redactionsr¢  rû  r   r}  rú  rö  rß  r†  r\  r’  r“  Úupdate_stream)r:  rC	  rD	  rE	  rF	  rG	  r  rH	  rI	  rJ	  rK	  rL	  rM	  rN	  rh	  rÖ   rK  rˆ  rÁ  Úhidden_redactsÚfound_redactsrß   r   Ú
xref_limitr   r˜   r  s                              r)   ÚscrubzDocument.scrub3  sÐ  € ð"0	ð 0	ð 0	ðd Œzð 	*Ý˜[Ñ)Ô)Ð)ØÔð 	8˜sœ}ð 	8ÝÐ6Ñ7Ô7Ð7àð 	ØˆJàð 	!Ø×Ò˜RÑ Ô Ð àð  	Añ  	AˆDØð #à"Ÿlšl™nœnð #ð #�FØ—L’L‘N”N�N�Nàð +ØŸšÑ(Ô(�Ø!ð +ð +�DØ×$Ò$ TÑ*Ô*Ð*Ð*àˆNØð BØ!;Ð!;¸DÑ!AÔ!A�å  Ñ0Ô0ˆMØŸš™œð )ð )�Ø”:˜a”=¥EÔ$CÒCÐCÈÐCØ×%Ò%¨dÐ%Ñ3Ô3Ð3Ø"ð -Ø×*Ò*Ñ,Ô,Ð,Ø”:˜a”=¥EÔ$:Ò:Ð:Ø$(�Møàð < *ð <°ð <Ø×%Ò%¨]Ð%Ñ;Ô;Ð;àð &Ø×#Ò#Ñ%Ô%Ð%àð AØ×#Ò# D¤I¨wÑ7Ô7¸Ô:¸fÒDÐDØ×$Ò$ T¤Y°¸Ñ@Ô@Ð@ùð ð 	&Ø×)Ò)Ñ+Ô+ð &ð &�Ø—’ Ñ%Ô%Ð%Ð%àð 	#Ø× Ò Ñ"Ô"Ð"Øð 	+ 
ð 	+ØˆJˆJàŸšÑ*Ô*ˆJÝ˜!˜ZÑ(Ô(ð 	;ð 	;ˆDØ—?’? 4Ñ(Ô(ð &ØE $ÐEÐEÐE�Ý  ‘o”oÐ%Øð ˜c×.Ò.¨t°SÑ9Ô9¸!Ô<ÀÒMÐMà.�Ø×!Ò! $¨Ñ,Ô,Ð,Øàð Øà×Ò  fÑ-Ô-¨aÔ0°KÒ?Ð?à×!Ò! $¨Ñ/Ô/Ð/Ø×!Ò! $¨
¸Ð!Ñ=Ô=Ð=Øà×Ò  jÑ1Ô1°!Ô4¸Ò>Ð>Ø× Ò   z°6Ñ:Ô:Ð:øð)	;ð 	;r*   Úquadsc                óŠ   — |€"dt           z  t          z  t          z  t          z  }| |                              |||||¬¦  «        S )a¹  Search for a string on a page.

        Args:
            pno: page number
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: reuse a prepared textpage
        Returns:
            a list of rectangles or quads, each containing an occurrence.
        Nr   )rv	  r  rÎ  r¬  )ÚTEXT_DEHYPHENATEÚTEXT_PRESERVE_LIGATURESÚTEXT_PRESERVE_WHITESPACEÚTEXT_MEDIABOX_CLIPÚ
search_for)r:  rá  r   rv	  r  rÎ  r¬  s          r)   Úsearch_page_forzDocument.search_page_forÅ  sd   € ð* ˆ=ØÝ&ñ'å-ñ.õ /ñ/õ )ñ	)ˆEð �3Œx×"Ò"ØØØØØð #ñ 
ô 
ð 	
r*   c                óð  — | j         s| j        rt          d¦  «        ‚| j        st          d¦  «        ‚t	          |d¦  «        st          d¦  «        ‚t          t          | ¦  «        ¦  «        }t          |¦  «        dk    s"t          |¦  «        |vst          |¦  «        |vrt          d¦  «        ‚t          | ¦  «        }t          j        ||t          j        ¦  «         |                      ¦   «          dS )z,Build sub-pdf with page numbers in the list.r9  rå  rp  zsequence requiredr   ræ  N)rÂ   r  rÃ   rç  r;   r\  r7   rç  rø  rÎ   r�   Úpdf_rearrange_pages2ÚPDF_CLEAN_STRUCTURE_KEEPrj  )r(   ÚpylisteÚvalid_rangerj  s       r)   ÚselectzDocument.selecté  sö   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�w Ñ.Ô.ð 	2ÝÐ0Ñ1Ô1Ð1å�C ™IœIÑ&Ô&ˆÝ�‰LŒL˜AÒÐÝ�7‰|Œ| ;Ð.Ð.Ý�7‰|Œ| ;Ð.Ð.åÐ1Ñ2Ô2Ð2õ ˜tÑ$Ô$ˆõ
 	Ô" 3¨µÔ1OÑPÔPÐPð 	×ÒÑÔÐÐÐr*   c                ó”   — t          | ¦  «        }|st          j        }nt          j        |¦  «        }t          j        ||¦  «         dS rÍ  )rÎ   r�   r7  rŸ  Úpdf_set_document_language)r(   r:  rj  r9  s       r)   r¡  zDocument.set_language  sJ   € Ý˜tÑ$Ô$ˆØð 	@ÝÔ&ˆDˆDåÔ5°hÑ?Ô?ˆDÝÔ'¨¨TÑ2Ô2Ð2Øˆtr*   c                ó`  — | j         rt          d¦  «        ‚t          |                      ¦   «                              ¦   «         ¦  «        }|t          ¦   «         k    rt          d¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|r§t          |¦  «        t          t          fvrt          d	¦  «        ‚|D ]x}	t          |	¦  «        t          t          fvrt          d
|	› d�¦  «        ‚t          |	¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚Œy|r<t          |¦  «         
                    ¦   «         }|dk    rd}|dvrt          d¦  «        ‚t          | ¦  «        }
t          j        t          j        |
¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        sdS |dk    r#t          j        |t          d¦  «        ¦  «        }n5t          j        t          j        |t          d¦  «        ¦  «        |¦  «        }|j        st          t&          ¦  «        ‚t)          ||||||¦  «         t          j        |
j        ¦  «         dS )z5Set the PDF keys /ON, /OFF, /RBGroups of an OC layer.r¾   z document has no optional contentzbad type: 'on'zbad OCGs in 'on': zbad type: 'off'zbad OCGs in 'off': zbad type: 'locked'zbad OCGs in 'locked': zbad type: 'rbgroups'zbad RBGroup 'rü   zbad OCGs in RBGroup: Ú	UNCHANGEDÚ	Unchanged)r¯  r°  rˆ	  zbad 'basestate'r;  rd  NrA  r  r­  )rÂ   rÃ   râ  r}  rÕ  rÈ   r´   rµ   Ú
differencerá  ÚupperrÎ   r�   r*  r>  r  rÌ   r  r¬  r²  ÚJM_set_ocg_arraysrž  )r(   r³  Ú	basestater   ÚoffÚrbgroupsr>  rz  r�  r4  rj  r¼  r  s                r)   Ú	set_layerzDocument.set_layer  s~  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý�4—=’=‘?”?×'Ò'Ñ)Ô)Ñ*Ô*ˆØ•3‘5”5Š=ˆ=ÝÐ?Ñ@Ô@Ð@àð 	;Ý�B‰xŒx¥¥e˜}Ð,Ð,Ý Ð!1Ñ2Ô2Ð2Ý�B‘”×"Ò" 4Ñ(Ô(ˆAØ•C‘E”EŠzˆzÝ Ð!9°aÐ!9Ð!9Ñ:Ô:Ð:àð 	<Ý�C‰yŒy¥¥u Ð-Ð-Ý Ð!2Ñ3Ô3Ð3Ý�C‘”×#Ò# DÑ)Ô)ˆAØ•C‘E”EŠzˆzÝ Ð!:°qÐ!:Ð!:Ñ;Ô;Ð;àð 	?Ý�F‰|Œ|¥D­% =Ð0Ð0Ý Ð!5Ñ6Ô6Ð6Ý�F‘”×&Ò& tÑ,Ô,ˆAØ•C‘E”EŠzˆzÝ Ð!=¸!Ð!=Ð!=Ñ>Ô>Ð>àð 	BÝ�H‰~Œ~¥d­E ]Ð2Ð2Ý Ð!7Ñ8Ô8Ð8Øð Bð B�Ý˜A‘w”w¥4­ -Ð/Ð/Ý$Ð%9°QÐ%9Ð%9Ð%9Ñ:Ô:Ð:Ý˜‘F”F×%Ò% dÑ+Ô+�Ø�™œ’:�:Ý$Ð%@¸QÐ%@Ð%@ÑAÔAÐAð ð ð 	4Ý˜I™œ×,Ò,Ñ.Ô.ˆIØ˜KÒ'Ð'Ø'�	ØÐ :Ð:Ð:Ý Ð!2Ñ3Ô3Ð3Ý˜tÑ$Ô$ˆÝÔ!ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(ñô ˆð
 Œ~ð 	ØˆFØ�RŠ<ˆ<ÝÔ$ c­8°C©=¬=Ñ9Ô9ˆCˆCåÔ%ÝÔ&¨­X°iÑ-@Ô-@ÑAÔAØñô ˆCð Œ~ð 	1ÝÕ/Ñ0Ô0Ð0Ý˜3 	¨2¨s°H¸fÑEÔEÐEÝÔ˜sœ~Ñ.Ô.Ð.Ð.Ð.r*   c                óp  ‡— t          ‰t          ¦  «        rAˆfd„|                      ¦   «         D ¦   «         }|g k    rt          d‰› d�¦  «        ‚|d         Št	          | ¦  «        }|dk    rt          j        |‰¦  «         dS |dk    rt          j        |‰¦  «         dS t          j        |‰¦  «         dS )z$Set / unset OC intent configuration.c                ó8   •— g | ]}|d          ‰k    ¯|d         ‘ŒS )r   rh  r-   )r­   Úuirh  s     €r)   r¯   z0Document.set_layer_ui_config.<locals>.<listcomp>S  s,   ø€ Ð]Ð]Ð] rÈÈ6Ì
ÐV\ÒH\ÐH\�b˜”lÐH\ÐH\ÐH\r*   z	bad OCG 'rk  r   r   r   N)	r>   rá  rC  rÃ   rÎ   r�   Úpdf_toggle_layer_config_uiÚpdf_deselect_layer_config_uiÚpdf_select_layer_config_ui)r(   rh  r˜  rƒ	  rj  s    `   r)   Úset_layer_ui_configzDocument.set_layer_ui_configN  sÒ   ø€ õ �f�cÑ"Ô"ð 	Ø]Ð]Ð]Ð]¨T×-BÒ-BÑ-DÔ-DÐ]Ñ]Ô]ˆFØ˜Š|ˆ|Ý Ð!7¨VÐ!7Ð!7Ð!7Ñ8Ô8Ð8Ø˜A”YˆFÝ˜tÑ$Ô$ˆØ�QŠ;ˆ;ÝÔ,¨S°&Ñ9Ô9Ð9Ð9Ð9Ø�qŠ[ˆ[ÝÔ.¨s°FÑ;Ô;Ð;Ð;Ð;åÔ,¨S°&Ñ9Ô9Ð9Ð9Ð9r*   re  c                óø  — |                       ¦   «         }|dk    rt          d¦  «        ‚|rt          |t          ¦  «        sdS ddddœ}t	          |                     ¦   «         ¦  «                             |                     ¦   «         ¦  «        sXdt	          |                     ¦   «         ¦  «                             |                     ¦   «         ¦  «        › �}t          |¦  «        ‚d}|                     |¦  «         | 	                    ¦   «         D ]K\  }}t          |¦  «                             ¦   «         }|dvrt          d|› d	|› d
�¦  «        ‚|d|› d|› �z  }ŒL|dz  }|                      |d|¦  «         dS )zSet the PDF MarkInfo values.r   ú	not a PDFFr^  zbad MarkInfo key(s): r\  )rc  Úfalsezbad key value 'z': 'rü   rb  r³   r]  r[  T)r‘  rÃ   r>   r5   râ  rÕ  Ú
issupersetr‰	  r  rB   rá  râ  r}  )r(   re  r   rd  ÚbadkeysÚpdfdictr'  r¸   s           r)   Úset_markinfozDocument.set_markinfo_  s€  € à×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	�z¨(µDÑ9Ô9ð 	Ø�5Ø °EÀuÐMÐMˆå�5—:’:‘<”<Ñ Ô ×+Ò+¨H¯MªM©O¬OÑ<Ô<ð 	&Ø]­c°(·-²-±/´/Ñ.BÔ.B×.MÒ.MÈeÏjÊjÉlÌlÑ.[Ô.[Ð]Ð]ˆGÝ˜WÑ%Ô%Ð%ØˆØ�Š�XÑÔÐØŸ+š+™-œ-ð 	)ð 	)‰JˆC�Ý�e‘*”*×"Ò"Ñ$Ô$ˆEØÐ-Ð-Ð-Ý Ð!D°3Ð!DÐ!D¸EÐ!DÐ!DÐ!DÑEÔEÐEØÐ(˜3Ð(Ð( Ð(Ð(Ñ(ˆGˆGØ�4‰ˆØ×Ò˜$ 
¨GÑ4Ô4Ð4Øˆtr*   r�  c                ór  ‡— | j         st          d¦  «        ‚| j        s| j        rt          d¦  «        ‚|€i }n%t	          |¦  «        t
          urt          d¦  «        ‚ddddddd	d
ddddœŠt          ‰                     ¦   «         ¦  «        }t          |                     ¦   «         ¦  «                             |¦  «        }|t          ¦   «         k    rd|› �}t          |¦  «        ‚|  	                    dd¦  «        \  }}|dk    rd}n#t          |                     dd¦  «        ¦  «        }|i k    r|dk    rdS |dk    rE|                      ¦   «         }|                      |d¦  «         |                      dd|› d�¦  «         n3|i k    r-|                      ddd¦  «         |                      ¦   «          dS ˆfd„|                     ¦   «         D ¦   «         D ]I\  }}	‰|         }
t#          |	¦  «        r|	dv rd}	nt%          |	¦  «        }	|                      ||
|	¦  «         ŒJ|                      ¦   «          dS )zcUpdate the PDF /Info object.

        Args:
            m: a dictionary like doc.metadata.
        rå  r9  Nzbad metadataÚAuthorÚProducerr©  r—  r   ÚModDateÚSubjectÚKeywordsÚTrapped)rÑ  rÓ  rŸ  rˆ  rÐ  r)  r‰  rŠ  r‹  rÒ  rÔ  zbad dict key(s): rA  ÚInfor   r   rv  r\   rl	  rƒ  rÇ  c                ó.   •— g | ]\  }}‰|         ®||f‘ŒS r,   r-   )r­   rª  rF   Úkeymaps      €r)   r¯   z)Document.set_metadata.<locals>.<listcomp>©  s*   ø€ ÐOÐOÐO¡D A q¸À¼Ð9N˜!˜Q˜Ð9NÐ9NÐ9Nr*   )ÚnonerÇ  )rç  rÃ   rÂ   r  rÈ   r5   râ  rÕ  r‰	  rû  r4   rî  ro  r“  r}  r*  rB   rø   rq  )r:  r�  Ú
valid_keysÚdiff_setr˜   rO  r‹  Ú	info_xrefr'  r"  Úpdf_keyr§	  s              @r)   rm	  zDocument.set_metadatav  sk  ø€ ð Œzð 	*Ý˜[Ñ)Ô)Ð)ØŒ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<Øˆ9ØˆAˆAÝ�!‰WŒW�DÐ Ð Ý˜^Ñ,Ô,Ð,àØ"Ø ØØØØ*Ø Ø Ø"Ø ð
ð 
ˆõ ˜Ÿš™œÑ'Ô'ˆ
Ý�q—v’v‘x”x‘=”=×+Ò+¨JÑ7Ô7ˆØ•s‘u”uÒÐØ0 hÐ0Ð0ˆCÝ˜S‘/”/Ð!à×"Ò" 2 vÑ.Ô.‰ˆˆ4Ø�Š;ˆ;ØˆIˆIå˜DŸLšL¨°Ñ3Ô3Ñ4Ô4ˆIà�Š7ˆ7�y A’~�~ØˆFà˜Š>ˆ>Ø×(Ò(Ñ*Ô*ˆIØ×Ò˜i¨Ñ0Ô0Ð0Ø×Ò˜R ¨IÐ);Ð);Ð);Ñ<Ô<Ð<Ð<Ø�"ŠWˆWØ×Ò˜R ¨Ñ0Ô0Ð0Ø�LŠL‰NŒNˆNØˆFàOÐOÐOÐO¨A¯GªG©I¬IÐOÑOÔOð 	6ð 	6‰HˆC�Ø˜S”kˆGÝ˜‘9”9ð ' Ð'7Ð 7Ð 7Ø��å! #Ñ&Ô&�Ø×Ò˜Y¨°Ñ5Ô5Ð5Ð5Ø�Š‰ŒˆØˆr*   rÕ  c                óÀ  — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|dk    r5|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|dk    r0d	|                      |¦  «        v r|                      |d	d
¦  «         dS |                      |d	|› d�¦  «         dS )zÄAttach optional content object to image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject
            oc: (int) xref number of an OCG or OCMD
        rq  r•  r   rr  ru  r   r@  )z/OCGz/OCMDrÓ  rÇ  Nrƒ  )rÂ   r  rÃ   rû  Úxref_get_keysr}  )r:  r   rÕ  rO  r   s        r)   r«  zDocument.set_oc³  s  € ð Œ=ð 	<˜CÔ,ð 	<ÝÐ:Ñ;Ô;Ð;Ø×"Ò" 4¨Ñ3Ô3‰ˆˆ4Ø�Š;ˆ;˜$Ð&9Ð9Ð9ÝÐ>¸Ð>Ð>Ñ?Ô?Ð?Ø�Š6ˆ6Ø×&Ò& r¨6Ñ2Ô2‰GˆAˆtØ�FŠ{ˆ{˜dÐ*;Ð;Ð;Ý Ð!@¸BÐ!@Ð!@ÑAÔAÐAØ�Š7ˆ7�t˜s×0Ò0°Ñ6Ô6Ð6Ð6Ø×Ò˜T 4¨Ñ0Ô0Ð0Ø�4Ø×Ò˜˜t¨ [ [ [Ñ1Ô1Ð1Øˆtr*   rz  útyping.Union[list, None]r„  r…  c                ó&  ‡	‡
— t          |                      ¦   «                              ¦   «         ¦  «        Š	ˆ	ˆ
fd„Š
d}|r’t          |¦  «        t          t
          fv rut          |¦  «                             ‰	¦  «        }|t          ¦   «         k    rd|› �}t          |¦  «        ‚|dd                     t          d„ |¦  «        ¦  «        z   dz   z  }|rLt          |¦  «                             ¦   «         }dd	d
ddœ}|dvrt          d|› �¦  «        ‚|d||         › �z  }|r|d ‰
|¦  «        › �z  }|dz  }|dk    r|                      ¦   «         }n(d|                      |d¬¦  «        vrt          d¦  «        ‚|                      ||¦  «         |S )aÑ  Create or update an OCMD object in a PDF document.

        Args:
            xref: (int) 0 for creating a new object, otherwise update existing one.
            ocgs: (list) OCG xref numbers, which shall be subject to 'policy'.
            policy: one of 'AllOn', 'AllOff', 'AnyOn', 'AnyOff' (any casing).
            ve: (list) visibility expression. Use instead of 'ocgs' with 'policy'.

        Returns:
            Xref of the created or updated OCMD.
        c                óf  •— t          | ¦  «        t          t          fvst          | ¦  «        dk     rt	          d| › �¦  «        ‚| d                              ¦   «         dvrt	          d| d         › �¦  «        ‚| d                              ¦   «         dk    r%t          | ¦  «        dk    rt	          d| › �¦  «        ‚d| d                              ¦   «         › �}| dd …         D ]I}t          |¦  «        t          u r |‰vrt	          d	|› �¦  «        ‚|d
|› d�z  }Œ8|d
 ‰|¦  «        › �z  }ŒJ|dz  }|S )Nr   zbad 've' format: r   )ÚandÚorÚnotzbad operand: r´	  z[/r   zbad OCG r³   rƒ  r|  )rÈ   r´   rµ   r7   rÃ   râ  rˆ  r4   )r…  rC   r4  Úall_ocgsÚve_makers      €€r)   r¶	  z#Document.set_ocmd.<locals>.ve_makerÞ  sI  ø€ Ý�B‰xŒx¥¥e˜}Ð,Ð,µ°B±´¸!²°Ý Ð!9°RÐ!9Ð!9Ñ:Ô:Ð:Ø�!Œu�{Š{‰}Œ}Ð$8Ð8Ð8Ý Ð!8°°A´Ð!8Ð!8Ñ9Ô9Ð9Ø�!Œu�{Š{‰}Œ} Ò%Ð%­#¨b©'¬'°Qª,¨,Ý Ð!9°RÐ!9Ð!9Ñ:Ô:Ð:Ø'˜˜1œŸš™œÐ'Ð'ˆDØ˜˜˜”Vð .ð .�Ý˜‘7”7�c�>�>Ø Ð(Ð(Ý(¨°A¨¨Ñ8Ô8Ð8Ø˜K ˜K˜K˜KÑ'�D�DàÐ-  ¨¡¤Ð-Ð-Ñ-�D�DØ�C‰KˆDØˆKr*   z<</Type/OCMDz
bad OCGs: r�  r³   c                ó   — | › d�S )Nrƒ  r-   rj  s    r)   ú<lambda>z#Document.set_ocmd.<locals>.<lambda>÷  s   € ¸°j°j°j€ r*   r|  ÚAnyOnÚAllOnÚAnyOffÚAllOff)ÚanyonÚallonÚanyoffÚalloffzbad policy: r‚  z/VEr]  r   r€  Tr�  zbad xref or not an OCMD)râ  r}  rÕ  rÈ   r´   rµ   r‰	  rÃ   rê  rë  rá  râ  ro  r’  r“  )r:  r   rz  r„  r…  r   r�  r˜   Úpolsrµ	  r¶	  s            @@r)   Úset_ocmdzDocument.set_ocmdÉ  sØ  øø€ õ& �s—|’|‘~”~×*Ò*Ñ,Ô,Ñ-Ô-ˆð	ð 	ð 	ð 	ð 	ð 	ð$ ˆàð 	O•D˜‘J”J¥4­ -Ð/Ð/Ý�D‘	”	×$Ò$ XÑ.Ô.ˆAØ•C‘E”EŠzˆzØ& 1Ð&Ð&�Ý  ‘o”oÐ%Ø�H˜sŸxšx­Ð,@Ð,@À$Ñ(GÔ(GÑHÔHÑHÈ3ÑNÑNˆDàð 
	)Ý˜‘[”[×&Ò&Ñ(Ô(ˆFà Ø Ø"Ø"ð	ð ˆDð ÐCÐCÐCÝ Ð!8°Ð!8Ð!8Ñ9Ô9Ð9ØÐ(˜$˜vœ,Ð(Ð(Ñ(ˆDàð 	)ØÐ(˜(˜( 2™,œ,Ð(Ð(Ñ(ˆDà�‰ˆð �1Š9ˆ9Ø×#Ò#Ñ%Ô%ˆDˆDØ §¢°À$ Ñ!GÔ!GÐGÐGÝÐ6Ñ7Ô7Ð7Ø×Ò˜$ Ñ%Ô%Ð%Øˆr*   r�  c                ó\  — d}|                       ¦   «         }|dk    rt          d¦  «        ‚|st          d¦  «        ‚|d         dk    r
|dd…         }|D ]I}|                     ¦   «         |                     ¦   «         k    r|                      |dd|› �¦  «          d	S ŒJt          d¦  «        ‚)
zSet the PDF PageLayout value.)r�  Ú	OneColumnÚTwoColumnLeftÚTwoColumnRightÚTwoPageLeftÚTwoPageRightr   r˜	  zbad PageLayout valuerb  r   NrŒ  T©r‘  rÃ   râ  r}  )r(   r�  rd  r   rF   s        r)   Úset_pagelayoutzDocument.set_pagelayout  sË   € àmˆØ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	5ÝÐ3Ñ4Ô4Ð4Ø�aŒ=˜CÒÐØ# A B BœˆJØð 	ð 	ˆAØ×ÒÑ!Ô! Q§W¢W¡Y¤YÒ.Ð.Ø×!Ò! $¨°g¸!°g°gÑ>Ô>Ð>Ø�t�tð /õ Ð/Ñ0Ô0Ð0r*   r”  c                ó\  — d}|                       ¦   «         }|dk    rt          d¦  «        ‚|st          d¦  «        ‚|d         dk    r
|dd…         }|D ]I}|                     ¦   «         |                     ¦   «         k    r|                      |dd|› �¦  «          d	S ŒJt          d¦  «        ‚)
zSet the PDF PageMode value.)r“  ÚUseOutlinesÚ	UseThumbsÚ
FullScreenÚUseOCÚUseAttachmentsr   r˜	  zbad PageMode valuerb  r   Nr’  TrÉ	  )r(   r”  rd  r   rF   s        r)   Úset_pagemodezDocument.set_pagemode"  sÉ   € à`ˆØ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	3ÝÐ1Ñ2Ô2Ð2Ø�AŒ;˜#ÒÐØ   ”|ˆHØð 	ð 	ˆAØ�~Š~ÑÔ 1§7¢7¡9¤9Ò,Ð,Ø×!Ò! $¨
°G¸°G°GÑ<Ô<Ð<Ø�t�tð -õ Ð-Ñ.Ô.Ð.r*   c                óT   ‡— d„ Šˆfd„}|                        ||¦  «        ¦  «         dS )a0  Add / replace page label definitions in PDF document.

        Args:
            doc: PDF document (resp. 'self').
            labels: list of label dictionaries like:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int},
            as returned by get_page_labels().
        c                ó  — | d         › d�}|                       dd¦  «        dk    r|d| d         › d�z  }|                       dd¦  «        dk    r|d| d         › �z  }|                       d	d
¦  «        d
k    r|d| d	         › �z  }|dz  }|S )zåConvert Python label dict to corresponding PDF rule string.

            Args:
                label: (dict) build rule for the label.
            Returns:
                PDF label rule string wrapped in "<<", ">>".
            Ú	startpager\  Úprefixr\   z/P(r£  rm  z/S/Úfirstpagenumr   z/St r]  )r8   )r¡  r�  s     r)   Úcreate_label_strz2Document.set_page_labels.<locals>.create_label_str=  s¹   € ð ˜Ô%Ð)Ð)Ð)ˆAØ�yŠy˜ 2Ñ&Ô&¨"Ò,Ð,ØÐ-˜5 œ?Ð-Ð-Ð-Ñ-�Ø�yŠy˜ "Ñ%Ô%¨Ò+Ð+ØÐ+˜5 œ>Ð+Ð+Ñ+�Ø�yŠy˜¨Ñ+Ô+¨aÒ/Ð/ØÐ3˜E .Ô1Ð3Ð3Ñ3�Ø�‰IˆAØˆHr*   c                óx   •— |                       d„ ¬¦  «         d                     ˆfd„| D ¦   «         ¦  «        }|S )a5  Return concatenated string of all labels rules.

            Args:
                labels: (list) dictionaries as created by function 'rule_dict'.
            Returns:
                PDF compatible string for page label definitions, ready to be
                enclosed in PDF array 'Nums[...]'.
            c                ó   — | d         S )NrÔ	  r-   rj  s    r)   r¸	  z?Document.set_page_labels.<locals>.create_nums.<locals>.<lambda>X  s
   €  a¨¤n€ r*   ©r'  r\   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r-   r-   )r­   r¡  r×	  s     €r)   r¯   zADocument.set_page_labels.<locals>.create_nums.<locals>.<listcomp>Y  s%   ø€ ÐEÐEÐE°UÐ)Ð)¨%Ñ0Ô0ÐEÐEÐEr*   )rã  rê  )r”  r�  r×	  s     €r)   Úcreate_numsz-Document.set_page_labels.<locals>.create_numsO  sH   ø€ ð �KŠKÐ4Ð4ˆKÑ5Ô5Ð5Ø—’ÐEÐEÐEÐE¸fÐEÑEÔEÑFÔFˆAØˆHr*   N)r•  )r:  r”  rÜ	  r×	  s      @r)   Úset_page_labelszDocument.set_page_labels2  sQ   ø€ ð	ð 	ð 	ð$	ð 	ð 	ð 	ð 	ð 	×Ò˜[˜[¨Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r*   ré  r  c           	     óö  — | j         s| j        rt          d¦  «        ‚| j        st          d¦  «        ‚|s!t	          |                      ¦   «         ¦  «        S t          |¦  «        t          t          fvrt          d¦  «        ‚t	          |¦  «        }| j	        }|d         }t          |¦  «        t          t          fvrt          d¦  «        ‚|d         dk    rt          d¦  «        ‚t          t          |dz
  ¦  «        ¦  «        D ]ç}||         }||dz            }d|d	         cxk    r|k    sn t          d
|› d�¦  «        ‚t          |¦  «        t          t          fvst	          |¦  «        dvrt          d|dz   › �¦  «        ‚t          |d         ¦  «        t          us|d         dk     rt          d|dz   › �¦  «        ‚|d         |d         dz   k    rt          d|dz   › �¦  «        ‚Œè|                      ¦   «         }	g }	dg|	z   }
|                      ¦   «         |
d<   |t	          |	¦  «        k    rIt          |t	          |	¦  «        z
  ¦  «        D ])}|
                     |                      ¦   «         ¦  «         Œ*ddi}ddd|
d         dœg}t          |¦  «        D �]û}||         }|d         }t          |d         ¦  «        }t!          | j	        dz
  t#          d|d	         dz
  ¦  «        ¦  «        }|                      |¦  «        }|                      |¦  «        j        }t+          d|dz
  ¦  «        }|t,          dœ}|d	         dk     r
t.          |d<   t	          |¦  «        dk    rÓt          |d         ¦  «        t          t0          fv rt+          d||d         z
  ¦  «        |d<   n“t          |d         ¦  «        t2          u r|d                              ¦   «         n|}d|vr||d<   nQ| |         }t+          |d         ¦  «        }|j        j        |j        z
  |_        ||j        z  }|j        |j        f|d<   i }d|d<   d|d<   d|d<   d|d<   d|d<   t?          j         ||¦  «        |d<   |d         |d<   ||d<   ||dz
           |d<   |
|dz            |d<   | !                    d ¦  «        |d <   | !                    d!d¦  «        d	| !                    d"d¦  «        z  z   |d#<   |dz   ||<   |||dz
                    }| !                    d$¦  «        s|r||k    r|dxx         dz  cc<   n|dxx         dz  cc<   |d         dk    r|dz   |d<   |dz   |d<   n)|d         |d<   ||d                  }|dz   |d<   |dz   |d<   |                     |¦  «         �ŒýtE          |¦  «        D �]¸\  }}d%}|d         dk    r|d&|d         › �z  }	 ||d         z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d'|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d)|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d*|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d+|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d,|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d-|d         z   z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w| !                    d ¦  «        rBt	          |d          ¦  «        dk    r)|d.tM          t          |d          ¦  «        ¦  «        › d/�z  }| !                    d#d¦  «        dk    r|d0|d#         › �z  }|dk    r|d1z  }|d2z  }|  '                    |
|         |¦  «         �Œº|  (                    ¦   «          |S )3aÉ  Create new outline tree (table of contents, TOC).

        Args:
            toc: (list, tuple) each entry must contain level, title, page and
                optionally top margin on the page. None or '()' remove the TOC.
            collapse: (int) collapses entries beyond this level. Zero or None
                shows all entries unfolded.
        Returns:
            the number of inserted items, or the number of removed items respectively.
        r9  rå  z'toc' must be list or tupler   z'items must be sequences of 3 or 4 itemsr   z#hierarchy level of item 0 must be 1rA  r   zrow z: page number out of range)r   rZ  zbad row zbad hierarchy level in row )r  rP  Úlastr   rÝ  é$   )rg  re  re  r   rg  rP  r  rß	  rÃ  rL  rõ  r	  rˆ  rû   r   r  rk  rW  rÎ  r  r\  z/Count z/First rƒ  z/Last z/Next z/Parent z/Prev z/Titlez/C[ r|  z/F z/Type/Outlinesr]  ))rÂ   r  rÃ   rç  r7   rS  rÈ   r´   rµ   rÜ  r\  r4   rB  rk   ro  rq  rç  rø  r|  r…  rà  rú  rm  Ú	LINK_NONEr~  r5   rm  r„  r5  ra  r4  r  Ú
getDestStrr8   rþ  rg   r  rv   r¶   r“  r*  )r:  ré  r  ÚtoclenrÜ  Út0r®   Út1Út2Ú	old_xrefsr   ÚlvltabÚolitemsr±  r¿  rˆ  rá  r|  Úpage_heightr	  r	  rÖ   r9  r  rû   rÃ  rè  rw  s                               r)   Úset_toczDocument.set_toc^  s·	  € ð Œ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<ØŒzð 	*Ý˜[Ñ)Ô)Ð)Øð 	&Ý�s—{’{‘}”}Ñ%Ô%Ð%õ �‰9Œ9�T¥5˜MÐ)Ð)ÝÐ:Ñ;Ô;Ð;Ý�S‘”ˆØ”^ˆ
Ø�ŒVˆÝ�‰8Œ8�D¥%˜=Ð(Ð(ÝÐFÑGÔGÐGØˆaŒ5�AŠ:ˆ:ÝÐBÑCÔCÐCÝ•e˜F Q™JÑ'Ô'Ñ(Ô(ð 
	Jð 
	JˆAØ�Q”ˆBØ�Q˜‘U”ˆBØ˜˜AœÐ,Ð,Ò,Ð, *Ò,Ð,Ð,Ð,Ý Ð!E¨Ð!EÐ!EÐ!EÑFÔFÐFÝ�R‘”¥¥u Ð-Ð-µ#°b±'´'ÀÐ2GÐ2GÝ Ð!5¨Q°©UÐ!5Ð!5Ñ6Ô6Ð6Ý�R˜”U‘”¥3Ð&Ð&¨2¨a¬5°1ª9¨9Ý Ð!HÀÀAÁÐ!HÐ!HÑIÔIÐIØ�!Œu�r˜!”u˜q‘yÒ Ð Ý Ð!HÀÀAÁÐ!HÐ!HÑIÔIÐIð !ð —K’K‘M”Mˆ	ð ˆ	Øˆs�Y‰ˆØ×&Ò&Ñ(Ô(ˆˆQ‰Ø•C˜	‘N”NÒ"Ð"Ý˜F¥S¨¡^¤^Ñ3Ñ5Ô5ð 0ð 0�Ø—’˜C×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ð/à�Q�ˆð
 ¨°RÀÀaÄÐIÐIÐJˆõ �v‘”ð 8	ñ 8	ˆAØ�A”ˆAØ�A”$ˆCÝ  !¤Ñ%Ô%ˆEÝ�c”n qÑ(­#¨a°°1´¸±Ñ*:Ô*:Ñ;Ô;ˆCØŸš cÑ*Ô*ˆIØ×*Ò*¨3Ñ/Ô/Ô6ˆKÝ˜˜K¨"Ñ,Ñ-Ô-ˆCØ"­IÐ6Ð6ˆIØ�Œt�aŠxˆxÝ$-�	˜&Ñ!Ý�1‰vŒv˜ŠzˆzÝ˜˜!œ‘:”:¥#¥u Ð-Ð-Ý&+¨B°¸aÀ¼dÑ0BÑ&CÔ&C�I˜d‘O�Oõ 04°A°a´D©z¬z½TÐ/AÐ/A  !¤§	¢	¡¤ Ày�IØ 9Ð,Ð,Ø*-˜	 $™˜à" 3œx˜Ý % i°¤oÑ 6Ô 6˜Ø"&¤,Ô"5¸¼Ñ"?˜œØ %¨Ô(<Ñ <˜Ø+0¬7°E´GÐ*<˜	 $™ØˆAØˆAˆg‰JØˆAˆg‰JØˆAˆf‰IØˆAˆf‰IØˆAˆf‰IÝÔ(¨°IÑ>Ô>ˆAˆf‰IØ  ”ˆAˆe‰HØˆAˆg‰JØ   q¡œ/ˆAˆh‰KØ˜Q ™UœˆAˆf‰IØ"Ÿš wÑ/Ô/ˆAˆg‰JØ"Ÿš x°Ñ3Ô3°a¸)¿-º-ÈÐPQÑ:RÔ:RÑ6RÑRˆAˆg‰JØ˜a™%ˆF�3‰KØ˜V C¨!¡Gœ_Ô-ˆFð —’˜jÑ)Ô)ð%Ø-5ð%Ø:=Àº.¸.à�w��” 1Ñ$��‘�à�w��” 1Ñ$��‘à�gŒ "Ò$Ð$Ø"# a¡%��w‘Ø!" Q¡��v‘�à" 6œN��&‘	Ø˜v fœ~Ô.�Ø  1™u��V‘Ø!" Q¡��v‘Ø�NŠN˜1ÑÔÐÑõ
 ˜wÑ'Ô'ð :	,ñ :	,‰EˆAˆrØˆCØ�'Œ{˜aÒÐØÐ.  G¤Ð.Ð.Ñ.�ðØ�r˜&”zÑ!��øÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�g”; Ò#Ð#ØÐ< T¨"¨W¬+Ô%6Ð<Ð<Ð<Ñ<�CøøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�h”< "Ò$Ð$ØÐ> d¨2¨h¬<Ô&8Ð>Ð>Ð>Ñ>�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�x " W¤+Ñ-Ñ-��øÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøð
 �vŠv�g‰Œð ?¥3 r¨'¤{Ñ#3Ô#3°qÒ#8Ð#8ØÐ>�i­¨b°¬kÑ(:Ô(:Ñ;Ô;Ð>Ð>Ð>Ñ>�Ø�vŠv�g˜qÑ!Ô! AÒ%Ð%ØÐ*˜R œ[Ð*Ð*Ñ*�à�AŠvˆvØÐ'Ñ'�Ø�4‰KˆCØ×Ò˜d 1œg sÑ+Ô+Ð+Ñ+à�Š‰ŒˆØˆs~   ×W×#X ×?X Ø!X&Ø&#YÙYÙ!Y2Ù2#ZÚZÚ!Z>Ú>#[$Û#[$Û(!\
Ü
#\0Ü/\0Ü4!]Ý#]<Ý;]<Þ ^Þ#^5Þ4^5r	  re  rl  rˆ  rº   rh  c
                óB  — |                       ¦   «         |         }
d}t          |¦  «        t          u �r¦|d         t          k    ro|d         }|                      |¦  «        }|                      |¦  «        j        }|                     dt          dd¦  «        ¦  «        }||j	        z
  |_	        ||d<   t          j        ||¦  «        }|                     d¦  «        st          d¦  «        ‚|                     d	¦  «        }|rjt          t          t           |¦  «        ¦  «        }t#          |¦  «        d
k    s&t%          |¦  «        dk     st'          |¦  «        dk    rt          d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|d|z  z   }|                     d¦  «        }|                      |
|dd…         ||||¬¦  «        S |t*          k    r|                      |¦  «        S |€|€dS |€|                      |
d|¬¦  «        S |t          k    r”|�|t/          d| j        dz   ¦  «        vrt          d¦  «        ‚|                      |dz
  ¦  «        }|                      |dz
  ¦  «        j        }|€t          d|dz
  ¦  «        }nt          |¦  «        }||j	        z
  |_	        ||||||	dœ}t          j        ||¦  «        }|dk    s|                     d¦  «        st          d¦  «        ‚|                      |
|dd…         |¬¦  «        S )az  Update TOC item by index.

        It allows changing the item's title and link destination.

        Args:
            idx:
                (int) desired index of the TOC list, as created by get_toc.
            dest_dict:
                (dict) destination dictionary as created by get_toc(False).
                Outrules all other parameters. If None, the remaining parameters
                are used to make a dest dictionary.
            kind:
                (int) kind of link (pymupdf.LINK_GOTO, etc.). If None, then only
                the title will be updated. If pymupdf.LINK_NONE, the TOC item will
                be deleted.
            pno:
                (int) page number (1-based like in get_toc). Required if
                pymupdf.LINK_GOTO.
            uri:
                (str) the URL, required if pymupdf.LINK_URI.
            title:
                (str) the new title. No change if None.
            to:
                (point-like) destination on the target page. If omitted, (72, 36)
                will be used as target coordinates.
            filename:
                (str) destination filename, required for pymupdf.LINK_GOTOR and
                pymupdf.LINK_LAUNCH.
            name:
                (str) a destination name for pymupdf.LINK_NAMED.
            zoom:
                (float) a zoom factor for the target location (pymupdf.LINK_GOTO).
        r   re  rÖ   rg  rÝ  rà	  z/Azbad bookmark destr  r   r   zbad color valuerW  Frk  r   r  N)r˜  rˆ  r  rÎ  r  )r˜  rˆ  zbad page number)re  rg  rl  rÖ   ra   rh  r\   )rE  rÈ   r5   rm  r|  r…  rà  r8   rú  r5  r  râ	  r3   rÃ   r´   rë  r~  r7   rç  rø  r™  rá	  rG  r\  rÜ  )r:  rC  r	  re  rá  rl  rˆ  rg  rf   rh  r   r|  rê	  r˜  r  rW  rk  rÎ  r  Úddicts                       r)   Úset_toc_itemzDocument.set_toc_item  s.  € ðZ ×$Ò$Ñ&Ô& sÔ+ˆØˆ	Ý�	‰?Œ?�dÐ"Ñ"Ø˜Ô ¥IÒ-Ð-Ø Ô'�ØŸMšM¨#Ñ.Ô.�	Ø!×.Ò.¨sÑ3Ô3Ô:�Ø—]’] 4­¨r°2©¬Ñ7Ô7�Ø" R¤TÑ)�”Ø"$�	˜$‘ÝÔ% i°Ñ;Ô;ˆFØ×$Ò$ TÑ*Ô*ð 6Ý Ð!4Ñ5Ô5Ð5Ø—M’M 'Ñ*Ô*ˆEØð 8Ý�S¥¨Ñ.Ô.Ñ/Ô/�Ý�u‘:”: ’?�?¥c¨%¡j¤j°1¢n n½¸E¹
¼
ÀQº¸Ý$Ð%6Ñ7Ô7Ð7Ø—=’= ¨Ñ/Ô/ˆDØ—]’] 8¨UÑ3Ô3ˆFØ˜Q ™XÑ%ˆEØ —}’} ZÑ0Ô0ˆHØ×'Ò'ØØ˜a˜b˜b”zØØØØ!ð (ñ ô ð ð •9ÒÐØ×#Ò# CÑ(Ô(Ð(Øˆ<˜E˜MØ�4Øˆ<Ø×'Ò'¨°TÀÐ'ÑGÔGÐGà•9ÒÐØˆ{˜c­¨q°#´.À1Ñ2DÑ)EÔ)EÐEÐEÝ Ð!2Ñ3Ô3Ð3ØŸš c¨A¡gÑ.Ô.ˆIØ×*Ò*¨3°©7Ñ3Ô3Ô:ˆKØˆzÝ˜2˜{¨RÑ/Ñ0Ô0��å˜2‘Y”Y�Ø" R¤TÑ)�”ð ØØØØØð
ð 
ˆõ Ô! )¨UÑ3Ô3ˆØ�RŠ<ˆ<˜v×0Ò0°Ñ6Ô6ˆ<ÝÐ0Ñ1Ô1Ð1à×#Ò# D°¸¸¸´À5Ð#ÑIÔIÐIr*   c                ó&  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }|j        st          t          t          ¦  «         t	          j        |                     d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        }|j        rt          |||d¦  «         d	S t	          j        ||t	          j        ¦   «         d¦  «        }t	          j        |t          d¦  «        t          d¦  «        ¦  «         t	          j        |t          d¦  «        t          d¦  «        ¦  «         t	          j        |t          d¦  «        |¦  «         d	S )
z"Store XML document level metadata.r9  r;  rÞ  rÞ  r   r@  r•  ÚXMLN)rÂ   r  rÃ   rÎ   r�   r  r>  r  rÌ   rÀ  ÚMSG_BAD_PDFROOTrÁ  rœ  r×  r9  r>  r?  r^  )r(   r  rj  rF  r/  rÅ  s         r)   Úset_xml_metadatazDocument.set_xml_metadata‰  sT  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒð 	<Ý•_Õ&:Ñ;Ô;Ð;ÝÔ2°H·O²OÀGÑ4LÔ4LÑMÔMˆÝÔ  $­°Ñ(<Ô(<Ñ=Ô=ˆØŒ>ð 	AÝ˜c 3¨¨QÑ/Ô/Ð/Ð/Ð/åÔ&¨¨Sµ%´,±.´.À!ÑDÔDˆCÝÔ ¥X¨fÑ%5Ô%5µxÀ
Ñ7KÔ7KÑLÔLÐLÝÔ ¥X¨iÑ%8Ô%8½(À5¹/¼/ÑJÔJÐJÝÔ ¥h¨zÑ&:Ô&:¸CÑ@Ô@Ð@Ð@Ð@r*   ÚverboseÚfallbackc                ó"  ‡ ‡— |sJt          j        ‰ ¦  «        }t          j        |t          t	          ‰ j        ¦  «        ¦  «        ¦  «         dS i Šˆ fd„}ˆ fd„}ˆ fd„}d„ }ˆfd„}ˆfd„}	 |‰ ¦  «         ‰s|rt          d¦  «         d	S d	}
d	}‰                     ¦   «         D ]}|
t          |¦  «        z  }
Œ‰ D ]¨}| 	                    ¦   «         D ]‘}t          |¦  «        t          urŒ|d
         dd…         } |	|¦  «        }|€Œ7‰|         \  }}\  }}|d         D ]8}|                     |d	         ¦  «         |                     |d         ¦  «         Œ9||||ff‰|<   Œ’Œ©‰                     ¦   «         D �]\  }\  }}} |||d	         |d         ¦  «        }t          |¦  «        d	         }|� t          |¦  «        t          |¦  «        k    r|rt          d|›d�¦  «         Œp|rt          d|›d�¦  «         ‰                      |¬¦  «        }|d	         } ||¦  «         ‰                      |d¬¦  «        }|D ]7} ||¦  «        \  }}‰                      ||¦  «         |s|r ||||¦  «         Œ8|t          |¦  «        z  }�Œ|
|z
  S )a´  Build font subsets in a PDF.

        Eligible fonts are potentially replaced by smaller versions. Page text is
        NOT rewritten and thus should retain properties like being hidden or
        controlled by optional content.

        This method by default uses MuPDF's own internal feature to create subset
        fonts. As this is a new function, errors may still occur. In this case,
        please fall back to using the previous version by using "fallback=True".
        Fallback mode requires the external package 'fontTools'.

        Args:
            fallback: use the older deprecated implementation.
            verbose: only used by fallback mode.

        Returns:
            The new MuPDF-based code returns None.  The deprecated fallback
            mode returns 0 if there are no fonts to subset.  Otherwise, it
            returns the decrease in fontsize (the difference in fontsize),
            measured in bytes.
        Nc                ój  •— ‰                      | d¦  «        }|d         dk    rdS t          |d         dd…                              dd¦  «        ¦  «        }‰                      |d	¦  «        }|d         dk    rd
}n|d         }‰                      |d¦  «        }|d         dk    rd
}n|d         }||fS )z(Retrieve old font '/W' and '/DW' values.ÚDescendantFontsr   r	  ©NNr   rA  rv  r\   ÚWNÚDWr4   )rû  r4   rî  )r   ÚdfÚdf_xrefÚwidthsÚdwidthsr:  s        €r)   Úget_old_widthsz-Document.subset_fonts.<locals>.get_old_widths¾  sÈ   ø€ à×!Ò! $Ð(9Ñ:Ô:ˆBØ�!Œu˜ÒÐØ!�zÝ˜"˜Qœ%  " œ+×-Ò-¨e°RÑ8Ô8Ñ9Ô9ˆGØ×%Ò% g¨sÑ3Ô3ˆFØ�aŒy˜GÒ#Ð#Ø��à œ�Ø×&Ò& w°Ñ5Ô5ˆGØ�qŒz˜UÒ"Ð"Ø��à! !œ*�Ø˜7�?Ð"r*   c                óN  •— ‰                      | d¦  «        }|d         dk    rdS t          |d         dd…                              dd¦  «        ¦  «        }t          |¦  «        t          us|s8‰                      |d	¦  «        d         d
k    r‰                     |d	d
¦  «         n‰                     |d	|¦  «         t          |¦  «        t          us|s8‰                      |d¦  «        d         d
k    r‰                     |dd
¦  «         n‰                     |d|¦  «         dS )zÀRestore the old '/W' and '/DW' in subsetted font.

            If either parameter is None or evaluates to False, the corresponding
            dictionary key will be set to null.
            r÷	  r   r	  Nr   rA  rv  r\   rù	  rÇ  rú	  )rû  r4   rî  rÈ   rá  r}  )r   rý	  rþ	  rû	  rü	  r:  s        €r)   Úset_old_widthsz-Document.subset_fonts.<locals>.set_old_widthsÐ  sG  ø€ ð ×!Ò! $Ð(9Ñ:Ô:ˆBØ�!Œu˜ÒÐØ�tÝ˜"˜Qœ%  " œ+×-Ò-¨e°RÑ8Ô8Ñ9Ô9ˆGÝ�V‘”¥CÐ'Ð'¨vÐ'¸3×;KÒ;KÈGÐUXÑ;YÔ;YØô<àò<ð <ð × Ò  ¨#¨vÑ6Ô6Ð6Ð6à× Ò  ¨#¨vÑ6Ô6Ð6Ý�W‘”¥SÐ(Ð(°Ð(¸S×=MÒ=MØ˜ñ>ô >àô>àò>ð >ð × Ò  ¨$°Ñ7Ô7Ð7Ð7à× Ò  ¨$°Ñ8Ô8Ð8Ø�4r*   c                óê  •— ddl }ddl}d                     |                     t	          |j        ¦  «        d¬¦  «        ¦  «        dz   }‰
                     | d¬¦  «        }|                     d	d	|z   ¦  «        }‰
                     | d
¦  «        }|d         dk    rÂt          |d         dd…                              dd¦  «        ¦  «        }‰
                     |d¦  «        }|d         dk    rot          |d                              dd¦  «        ¦  «        }‰
                     |d¬¦  «        }	|	                     dd|z   ¦  «        }	‰
 
                    ||	¦  «         ‰
 
                    | |¦  «         dS )a'  Generate a name prefix to tag a font as subset.

            We use a random generator to select 6 upper case ASCII characters.
            The prefixed name must be put in the font xref as the "/BaseFont" value
            and in the FontDescriptor object as the '/FontName' value.
            r   Nr\   rþ  )rª  rT	  Tr�  z
/BaseFont/r÷	  r	  r   rA  rv  ÚFontDescriptorr   z
/FontName/)ÚrandomÚstringrê  Úchoicesrµ   Úascii_uppercaser’  rî  rû  r4   r“  )r†  r
  r
  rÕ	  Úfont_strrû	  rü	  r   Úfd_xrefÚfd_strr:  s             €r)   Úset_subset_fontnamez2Document.subset_fonts.<locals>.set_subset_fontnameè  sg  ø€ ð ˆMˆMˆMØˆMˆMˆMØ—W’W˜VŸ^š^­E°&Ô2HÑ,IÔ,IÈQ˜^ÑOÔOÑPÔPÐSVÑVˆFØ—’ x¸D�ÑAÔAˆHØ×'Ò'¨°lÀVÑ6KÑLÔLˆHØ×!Ò! (Ð,=Ñ>Ô>ˆBØ�!Œu˜ÒÐÝ˜b œe A b Dœk×1Ò1°%¸Ñ<Ô<Ñ=Ô=�Ø×%Ò% gÐ/?Ñ@Ô@�Ø�a”5˜F’?�?Ý! " Q¤%§-¢-°°rÑ":Ô":Ñ;Ô;�GØ Ÿ_š_¨WÀ˜_ÑFÔF�FØ#Ÿ^š^¨L¸,ÈÑ:OÑPÔP�FØ×%Ò% g¨vÑ6Ô6Ð6Ø×Ò˜h¨Ñ1Ô1Ð1Ð1Ð1r*   c           	     ón  — 	 ddl m} n3# t          $ r& t          rt	          ¦   «          t          d¦  «         ‚ w xY wddl}|                     ¦   «         5 }|› d�}|› d�}|› d�}|dd|› �d	d
dddg}	t          j	        |› d�dd¬¦  «        5 }
d|v rZ|	 
                    d|› �¦  «         |                     d¦  «         t          |¦  «        }|D ]}|
                     |› d�¦  «         ŒnZ|	 
                    d|› �¦  «         |                     d¦  «         t          |¦  «        }|D ]}|
                     |d›d�¦  «         Œddd¦  «         n# 1 swxY w Y   t          j	        |d¦  «        5 }|                     | ¦  «         ddd¦  «         n# 1 swxY w Y   	 t          j        |¦  «         n# t           $ r Y nw xY w	 |                     |	¦  «         t%          |¬¦  «        }|j        }|j        dk    rd}n # t           $ r t	          ¦   «          d}Y nw xY wddd¦  «         n# 1 swxY w Y   |S )a"  Build font subset using fontTools.

            Args:
                buffer: (bytes) the font given as a binary buffer.
                unc_set: (set) required glyph ids.
            Returns:
                Either None if subsetting is unsuccessful or the subset font buffer.
            r   Nz/This method requires fontTools to be installed.z/oldfont.ttfz/newfont.ttfz/uncfile.txtz--retain-gidsz--output-file=z--layout-features=*z--passthrough-tablesz--ignore-missing-glyphsz--ignore-missing-unicodesz--symbol-cmapr   Úutf8)rû  éýÿ  z--gids-file=é½   r%   z--unicodes-file=éÿ   Ú04xÚwb)r]  )ÚfontTools.subsetÚsubsetÚImportErrorr  rv   rr   ÚtempfileÚTemporaryDirectoryr9   r:   rk   rH  r´   r   rd   rA  rg   Úmainr=  rñ  Úglyph_count)rñ  Úunc_setÚgid_setÚftsr
  Útmp_dirÚoldfont_pathÚnewfont_pathÚuncfile_pathr  Úunc_fileÚunc_listÚuncr]  rb  Ú
new_buffers                   r)   Úbuild_subsetz+Document.subset_fonts.<locals>.build_subset   s�  € ðØ.Ð.Ð.Ð.Ð.Ð.Ð.øÝð ð ð Ý'Ð<­NÑ,<Ô,<Ð,<ÝÐIÑJÔJÐJØðøøøð ˆOˆOˆOØ×,Ò,Ñ.Ô.ð -&°'Ø")Ð7Ð7Ð7�Ø")Ð7Ð7Ð7�Ø")Ð7Ð7Ð7�à Ø#Ø3 \Ð3Ð3Ø)Ø*Ø-Ø/Ø#ð	�õ ”W Ð5Ð5Ð5°sÀVÐLÑLÔLð ;ÐPXØ Ð(Ð(ØŸšÐ$A°<Ð$AÐ$AÑBÔBÐBØŸš CÑ(Ô(Ð(Ý#'¨¡=¤=˜Ø#+ð 7ð 7˜CØ$ŸNšN¨c¨:¨:¨:Ñ6Ô6Ð6Ð6ð7ð ŸšÐ$E°|Ð$EÐ$EÑFÔFÐFØŸš CÑ(Ô(Ð(Ý#'¨¡=¤=˜Ø#+ð ;ð ;˜CØ$ŸNšN¨c¨>¨>¨>¨>Ñ:Ô:Ð:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;õ ”W˜\¨4Ñ0Ô0ð +°HØ—N’N 6Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ðÝ”I˜lÑ+Ô+Ð+Ð+øÝ ð ð ð Ø�Dðøøøð&Ø—H’H˜T‘N”N�NÝ¨Ð6Ñ6Ô6�DØ!%¤�JØÔ'¨1Ò,Ð,Ø%)˜
øøÝ ð &ð &ð &Ý"Ñ$Ô$Ð$Ø!%�J�J�Jð&øøøðW-&ð -&ð -&ñ -&ô -&ð -&ð -&ð -&ð -&ð -&ð -&øøøð -&ð -&ð -&ð -&ð\ Ðs«   ‚	 ‰09Á7H*ÂB9EÅH*ÅE	ÅH*ÅE	ÅH*Å0FÆH*ÆF	ÆH*ÆF	ÆH*ÆF3Æ2H*Æ3
G Æ=H*Æ?G Ç H*Ç9G>Ç=H*Ç>HÈH*ÈHÈH*È*H.È1H.c           
     ó²  •‡— d„ Šˆfd„}t          | j        ¦  «        D �]6}|                      |d¬¦  «        D �]}|d         }|d         }|d         }|dvrŒ t          |¦  «        d	k    r|d	         d
k    rŒ@|                      |¦  «        }|d         } || |¦  «        }	‰                     |t          ¦   «         t          ¦   «         t          ¦   «         t          ¦   «         ff¦  «        \  }
}}|                     |¦  «         |	D ]}|
                     |¦  «         Œt          |¬¦  «        }|
                     |j	        ¦  «         ~|
||f‰|<   �Œ�Œ8dS )z·Populate 'font_buffers'.

            For each font candidate, store its xref and the list of names
            by which PDF text may refer to it (there may be multiple).
            c                óØ   — d| v re|                       d¦  «        }t          | |dz   |dz   …         d¦  «        }|                      | ||dz   …         t          |¦  «        ¦  «        } d| v °e| S )zlRecreate font name that contains PDF hex codes.

                E.g. #20 -> space, chr(32)
                ú#r   r   é   )r¡   r4   rî  Úchr)r   r²  rË  s      r)   Ú	norm_namez@Document.subset_fonts.<locals>.repl_fontnames.<locals>.norm_nameG  ss   € ð
 ˜T�k�kØŸ	š	 #™œ�AÝ˜D  Q¡¨¨Q© Ô/°Ñ4Ô4�AØŸ<š<¨¨Q°°Q±¨Y¬½¸Q¹¼Ñ@Ô@�Dð ˜T�k�kð �r*   c                óú  •— |d         }|g}|                       |d         d¦  «        d         dd…         } ‰|¦  «        }||vr|                     |¦  «         |                       |d         d¦  «        }|d         dk    r|S |d         dd…         }|                     d	¦  «        r.t          |dd
…         ¦  «        }|                      |d¬¦  «        }|                     d¦  «        }|dk    rˆ|                     d|dz   ¦  «        }t          |                     d|dz   ¦  «        |                     d|dz   ¦  «        ¦  «        }||dz   |…         } ‰|¦  «        }||vr|                     |¦  «         |S )z�Return a list of fontnames for an item of page.get_fonts().

                There may be multiple names e.g. for Type0 fonts.
                r   r   r  r   Nr÷	  r	  rA  rƒ  éüÿÿÿTr�  z	/BaseFontrb  r]  )rû  rk   rí  r4   r’  r¡   rç  )	r:  rC   r	  r½  Údescendentsr   r  r  r+
  s	           €r)   Úget_fontnameszDDocument.subset_fonts.<locals>.repl_fontnames.<locals>.get_fontnamesR  sœ  ø€ ð
   œ7�Ø!˜
�Ø×+Ò+¨D°¬G°ZÑ@Ô@ÀÔCÀAÀBÀBÔG�Ø$˜9 XÑ.Ô.�Ø 5Ð(Ð(Ø—L’L Ñ*Ô*Ð*Ø!×.Ò.¨t°A¬wÐ8IÑJÔJ�Ø˜q”> WÒ,Ð,Ø �LØ)¨!œn¨Q¨r¨TÔ2�Ø×'Ò'¨Ñ/Ô/ð IÝ˜{¨3¨B¨3Ô/Ñ0Ô0�DØ"%§/¢/°$À4 /Ñ"HÔ"H�KØ ×%Ò% kÑ2Ô2�Ø˜’7�7Ø$×)Ò)¨#¨r°A©vÑ6Ô6�BÝ˜[×-Ò-¨c°2¸±6Ñ:Ô:¸K×<LÒ<LÈTÐSUÐXYÑSYÑ<ZÔ<ZÑ[Ô[�BØ*¨2°©6°B¨;Ô7�HØ(˜y¨Ñ2Ô2�HØ uÐ,Ð,ØŸš XÑ.Ô.Ð.Ø�r*   T©r�  r   r   r   )ÚotfÚttfÚwoffÚwoff2rþ  rT	  rA  ©r^  N)
r\  rÜ  r–  r7   r  r8   râ  rH  r=  r   )r:  r/
  r®   rÝ  Ú	font_xrefÚfont_extrè  Úextrr^  r½  Úname_setÚxref_setÚsubsetsr   rb  r+
  Úfont_bufferss                  @€r)   Úrepl_fontnamesz-Document.subset_fonts.<locals>.repl_fontnames@  s¯  øø€ ð	ð 	ð 	ðð ð ð ð õ8 ˜3œ>Ñ*Ô*ð Mñ M�Ø×+Ò+¨A°DÐ+Ñ9Ô9ð Mñ M�AØ ! !¤�IØ  œt�HØ  œt�Hàð (ð ð ð !å˜8‘}”} qÒ(Ð(¨X°a¬[¸CÒ-?Ð-?Ø à×+Ò+¨IÑ6Ô6�DØ!% b¤�JØ)˜M¨#¨qÑ1Ô1�EØ2>×2BÒ2BØ"¥S¡U¤U­C©E¬EµC±E´E½3¹5¼5°>Ð$Bñ3ô 3Ñ/�H˜h¨ð —L’L Ñ+Ô+Ð+Ø %ð +ð +˜Ø Ÿš TÑ*Ô*Ð*Ð*Ý¨:Ð6Ñ6Ô6�DØ—L’L ¤Ñ+Ô+Ð+ØØ08¸(ÀGÐ/L�L Ñ,Ñ,ñ9MðMð Mr*   c                óT   •— ‰                      ¦   «         D ]\  }\  }}}| |v r|c S Œd S r,   )rB   )r   rñ  r9
  r  r<
  s       €r)   Úfind_buffer_by_namez2Document.subset_fonts.<locals>.find_buffer_by_name�  sH   ø€ Ø,8×,>Ò,>Ñ,@Ô,@ð "ð "Ñ(�Ñ(˜ 1 aØ˜8Ð#Ð#Ø!�M�M�Mð $à�4r*   zNo fonts to subset.r   rb  é!   Úcharsr   zCannot subset r   zBuilt subset of font r5
  Tr�  )r�   rÄ  Úpdf_subset_fonts2r´   r\  rÜ  rr   rÕ  r7   Úget_texttracerÈ   r5   rH  rB   r_  r’  r“  ) r:  ró	  rô	  rj  rÿ	  r
  r
  r%
  r=
  r?
  Úold_fontsizeÚnew_fontsizer^  rÖ   rò  r	  rñ  r9
  r:
  Úset_ucsÚset_gidrË  Ú
old_bufferr;
  r$
  r"  r†  r
  r6
  Úwidth_tableÚ	def_widthr<
  s    `                              @r)   Úsubset_fontszDocument.subset_fonts›  sÁ  øø€ ð8 ð 	ÝÔ5°cÑ:Ô:ˆCÝÔ# C­­e°C´NÑ.CÔ.CÑ)DÔ)DÑEÔEÐEØˆFàˆð	#ð 	#ð 	#ð 	#ð 	#ð$	ð 	ð 	ð 	ð 	ð0	2ð 	2ð 	2ð 	2ð 	2ð0>	ð >	ð >	ð@K	Mð K	Mð K	Mð K	Mð K	MðZ	ð 	ð 	ð 	ð 	ð 	ˆ�sÑÔÐØð 	Øð 0ÝÐ.Ñ/Ô/Ð/Ø�1àˆØˆØ&×+Ò+Ñ-Ô-ð 	,ð 	,ˆJØ�C 
™OœOÑ+ˆLˆLð ð 	Pð 	PˆDð ×*Ò*Ñ,Ô,ð Pð P�Ý˜‘:”:¥TÐ)Ð)ØØ œ<¨¨¨Ô,�Ø,Ð,¨XÑ6Ô6�Ø�>ØØ9EÀfÔ9MÑ6�˜(Ñ$6 W¨gØ˜gœð &ð &�AØ—K’K  !¤Ñ%Ô%Ð%Ø—K’K  !¤Ñ%Ô%Ð%Ð%Ø(0°(¸WÀgÐ<NÐ'O�˜VÑ$Ð$ðPð :F×9KÒ9KÑ9MÔ9Mð 	,ñ 	,Ñ5ˆJÑ5˜ 8¨WØ%˜ j°'¸!´*¸gÀa¼jÑIÔIˆJÝ˜H‘~”~ aÔ(ˆHØÐ!¥S¨¡_¤_½¸J¹¼Ò%GÐ%Gàð <ÝÐ:¨XÐ:Ð:Ð:Ñ;Ô;Ð;ØØð ?ÝÐ=°Ð=Ð=Ð=Ñ>Ô>Ð>Ø×"Ò"¨jÐ"Ñ9Ô9ˆCØ˜1”vˆHØÐ Ñ)Ô)Ð)Ø—’ØØð 'ñ ô ˆHð
 &ð Fð F�	à)7¨¸	Ñ)BÔ)BÑ&�˜Yà×!Ò! )¨XÑ6Ô6Ð6àð F )ð FØ"�N 9¨k¸9ÑEÔEÐEøð �C 
™OœOÑ+ˆL‰Là˜lÑ*Ð*r*   c                óè  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        s|dk     rdS t          t          ¦  «        ‚|dk     rdS t          j	        ||¦  «         |r/t          j
        |¦  «         t          j        |j        ¦  «         dS dS )zActivate an OC layer.r;  rd  r­  r   Nr   )rÎ   r�   r*  r>  r  r™  r«  rÃ   ÚMSG_BAD_OC_LAYERÚpdf_select_layer_configÚpdf_set_layer_config_as_defaultrž  rÌ   )r(   r³  Ú
as_defaultrj  Úcfgss        r)   Úswitch_layerzDocument.switch_layerÓ  sñ   € å˜tÑ$Ô$ˆÝÔ"ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(Ý˜Ñ#Ô#ñ	ô ˆõ Ô! 4Ñ(Ô(ð 	0µÔ0CÀTÑ0JÔ0Jð 	0Ø˜ŠzˆzØ�ÝÕ.Ñ/Ô/Ð/Ø�AŠ:ˆ:ØˆFÝÔ% s¨FÑ3Ô3Ð3Øð 	3ÝÔ1°3Ñ7Ô7Ð7ÝÔ! 3¤>Ñ2Ô2Ð2Ð2Ð2ð	3ð 	3r*   c                ó‚  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        st          dt          ¦  «         t          |¦  «         t          ||¦  «        }t	          j        |||¦  «         |rt          t          |¦  «        ¦  «         dS dS )z!Replace object definition source.r9  r   r  N)rÂ   r  rÃ   rÎ   r�   r–  r¯  rÀ  r—  rn  r@  r<  ÚJM_refresh_linksrÚ   )r(   r   r   rÖ   rj  Úxreflenrª  s          r)   r“  zDocument.update_objectç  sÊ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	.Ý�J¥Ñ-Ô-Ð-Ý˜ÑÔÐå% c¨4Ñ0Ô0ˆÝÔ  T¨7Ñ3Ô3Ð3Øð 	2Ý�l¨4Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r*   c                óÈ  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }|dk     s||k    rt          t          ¦  «        ‚t	          j        ||d¦  «        }t	          j        |¦  «        st          t          ¦  «        ‚t          |¦  «        }|j        st          t          ¦  «        ‚t          ||||¦  «         d|_        dS )zReplace xref stream part.r9  r   r   N)rÂ   r  rÃ   rÎ   r�   r–  r—  r˜  rŠ  ÚMSG_IS_NO_DICTr7  rÌ   r¾  r8  r9  Údirty)	r(   r   r	   r©  Úcompressrj  rU
  r  r/  s	            r)   rq	  zDocument.update_streamö  sÚ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆØ�!Š8ˆ8�t˜g’~�~Ý�lÑ+Ô+Ð+åÔ$ S¨$°Ñ2Ô2ˆÝÔ  Ñ%Ô%ð 	.Ý�nÑ-Ô-Ð-Ý  Ñ(Ô(ˆØŒ~ð 	-Ý�^Ñ,Ô,Ð,Ý˜˜c 3¨Ñ1Ô1Ð1ØˆŒ	ˆ	ˆ	r*   c                ó^   — t          | d¬¦  «        }|j        rt          j        |¦  «        S dS )z1
        Count versions of PDF document.
        r   r:  )rÎ   rÌ   r�   Úpdf_count_versionsrÅ  s     r)   Úversion_countzDocument.version_count  s6   € õ
 ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	1ÝÔ+¨CÑ0Ô0Ð0Øˆqr*   c                ó    — ddl m}  |¦   «         }|                      ||||
||||||||	||||||||||¬¦  «         |                     ¦   «         S )Nr   ©ri  )r   r!  r-  r:	  r"  r#  r$  r%  rœ  r&  r'  r(  r)  r*  r+  r,  r.  r/  r0  r1  r2  )r9   ri  r3  r�  )r(   r   r!  r"  r#  r$  r%  rœ  r&  r'  r-  r:	  r(  r)  r*  r+  r,  r.  r/  r0  r1  r2  ri  Úbios                           r)   r   zDocument.write  sŽ   € ð0 	ÐÐÐÐÐØˆg‰iŒiˆØ�	Š	ØØØØ#Ø%ØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ"3Ø'Ø#5Ø /Ø)ð- 	ñ 	
ô 	
ð 	
ð0 �|Š|‰~Œ~Ðr*   c                ó   —  | j         |i |¤ŽS r,   )r   r  s      r)   rÙ  zDocument.tobytesF  s   € ØˆtŒz˜4Ð* 6Ð*Ð*Ð*r*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S ©zPDF xref number of page.©rv  rû   r|  rh  r.   s    r)   r   zDocument.xrefI  ó*   € õ 	�DÑÔÐØŒ{×$Ò$ T¤[Ñ1Ô1Ð1r*   )ÚkeepÚsourceÚtargetre
  c               ó’  — |                       |¦  «        r.|                      |¦  «        }|                      ||dd¬¦  «         |€g }|                      |¦  «        D ]}||v rŒ|                      ||d¦  «         Œ|                      |¦  «        D ]5}|                      ||¦  «        }|                      |||d         ¦  «         Œ6dS )aö  Copy a PDF dictionary object to another one given their xref numbers.

        Args:
            doc: PDF document object
            source: source xref number
            target: target xref number, the xref must already exist
            keep: an optional list of 1st level keys in target that should not be
                  removed before copying.
        Notes:
            This works similar to the copy() method of dictionaries in Python. The
            source may be a stream object.
        FT)rY
  r©  NrÇ  r   )Úxref_is_streamÚxref_stream_rawrq	  r®	  r}  rû  )r:  rf
  rg
  re
  r	   r'  rC   s          r)   Ú	xref_copyzDocument.xref_copyO  s  € ð ×Ò˜fÑ%Ô%ð 	à×(Ò(¨Ñ0Ô0ˆFØ×ÒØØØØð	 ñ ô ð ð ˆ<ØˆDØ×$Ò$ VÑ,Ô,ð 	2ð 	2ˆCØ�dˆ{ˆ{ØØ×Ò˜V S¨&Ñ1Ô1Ð1Ð1à×$Ò$ VÑ,Ô,ð 	3ð 	3ˆCØ×#Ò# F¨CÑ0Ô0ˆDØ×Ò˜V S¨$¨q¬'Ñ2Ô2Ð2Ð2ð	3ð 	3r*   c                óJ  — t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt	          t
          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }|j        sdS t          j	        ||¦  «        }|j        sdS d}t          j
        |¦  «        rd}t          j        |¦  «        d›d�}�n$t          j        |¦  «        rd	}�nt          j        |¦  «        rd
}nõt          j        |¦  «        rd}t          j        |¦  «        d›}nÈt          j        |¦  «        rd}n±t          j        |¦  «        rd}d}n˜t          j        |¦  «        rd}t          j        |¦  «        rd}nkd}nht          j        |¦  «        rd}dt          j        |¦  «        › �}n:t          j        |¦  «        r$d}t/          t          j        |¦  «        ¦  «        }nd}|€ t3          |dd¦  «        }	t5          |	¦  «        }||fS )z+Get PDF dict key value of object at 'xref'.r   rA  r   )rÇ  rÇ  Nr   r  rƒ  r	  r5   r4   r~  rÇ  rø   rc  r™	  r   rb  r
  Úunknown)rÎ   r�   r–  r¯  rÃ   r—  rš  r>  rÌ   rÅ  r	  r  r™  rŠ  Ú
pdf_is_intr  Úpdf_is_realr  rk  rl  rÊ  r‰  Úpdf_is_stringr  r  ÚJM_object_to_bufferrÄ  )
r(   r   r'  rj  rU
  r  Úsubobjr   rÈ   r/  s
             r)   rû  zDocument.xref_get_keyr  sT  € å˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCØŒ~ð 	$Ø#Ð#ÝÔ$ S¨#Ñ.Ô.ˆØÔ ð 	$Ø#Ð#ØˆÝÔ  Ñ(Ô(ð 	ØˆDÝÔ& vÑ.Ô.Ð6Ð6Ð6Ð6ˆD‰DÝÔ Ñ'Ô'ð 	ØˆD‰DÝÔ˜vÑ&Ô&ð 	ØˆDˆDÝÔ˜fÑ%Ô%ð 	ØˆDÝÔ& vÑ.Ô.Ð2Ð2ˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDØˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDÝÔ  Ñ(Ô(ð Ø��à��ÝÔ˜vÑ&Ô&ð 	ØˆDØ2•uÔ(¨Ñ0Ô0Ð2Ð2ˆDˆDÝÔ  Ñ(Ô(ð 	ØˆDÝ$¥UÔ%=¸fÑ%EÔ%EÑFÔFˆDˆDàˆDØˆ<Ý% f¨a°Ñ3Ô3ˆCÝ'¨Ñ,Ô,ˆDØ�dˆ|Ðr*   c                óà  — t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt	          t
          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          j        |¦  «        }g }|dk    r|S t          |¦  «        D ]>}t          j
        t          j        ||¦  «        ¦  «        }|                     |¦  «         Œ?|S )zFGet the keys of PDF dict object at 'xref'. Use -1 for the PDF trailer.r   rA  r   )rÎ   r�   r–  r¯  rÃ   r—  rš  r>  r‹  r\  r‰  r�  rk   )	r(   r   rj  rU
  r  rE   r    r®   r'  s	            r)   r®	  zDocument.xref_get_keys¤  så   € å˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨dÑ3Ô3ˆCˆCåÔ# SÑ)Ô)ˆCÝÔ Ñ$Ô$ˆØˆØ�Š6ˆ6ØˆIÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%;¸SÀ!Ñ%DÔ%DÑEÔEˆCØ�IŠI�c‰NŒNˆNˆNØˆ	r*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )zCheck if xref is a font object.r9  r@  r   z/FontTF©rÂ   r  rÃ   rû  ©r(   r   s     r)   Úxref_is_fontzDocument.xref_is_font·  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 6Ñ*Ô*¨1Ô-°Ò8Ð8Ø�4Øˆur*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )z!Check if xref is an image object.r9  r•  r   rs  TFru
  rv
  s     r)   Úxref_is_imagezDocument.xref_is_image¿  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 9Ñ-Ô-¨aÔ0°HÒ<Ð<Ø�4Øˆur*   c                óz   — t          | d¬¦  «        }|j        sdS t          t          j        ||¦  «        ¦  «        S )z!Check if xref is a stream object.r   r:  F)rÎ   rÌ   rø   r�   Úpdf_obj_num_is_streamrZ  s      r)   ri
  zDocument.xref_is_streamÇ  s>   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5Ý•EÔ/°°TÑ:Ô:Ñ;Ô;Ð;r*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )z Check if xref is a form xobject.r9  r•  r   rt  TFru
  rv
  s     r)   Úxref_is_xobjectzDocument.xref_is_xobjectÎ  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 9Ñ-Ô-¨aÔ0°GÒ;Ð;Ø�4Øˆur*   c                ób   — d}t          | d¬¦  «        }|j        rt          j        |¦  «        }|S )zGet length of xref table.r   r:  )rÎ   rÌ   r�   r–  )r(   rU
  rj  s      r)   r†  zDocument.xref_lengthÖ  s8   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	.ÝÔ(¨Ñ-Ô-ˆGØˆr*   c                óâ  — | j         rt          d¦  «        ‚t          rt          j        | j        |||¦  «        }|S t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          t          j        |¦  «        ||¦  «        }t          |¦  «        }	|	S )z#Get xref object source as a string.r¾   r   rA  r   )rÂ   rÃ   r'  r   r’  rÄ   rÎ   r�   r–  r¯  r—  rš  r>  rq
  r7  ÚJM_EscapeStrFromBuffer)
r(   r   r�  rœ  rG   rj  rU
  r  r/  r   s
             r)   r’  zDocument.xref_objectÞ  sæ   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	ÝÔ# T¤Y°°jÀ%ÑHÔHˆCØˆJÝ˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCÝ!¥%Ô"<¸SÑ"AÔ"AÀ:ÈuÑUÔUˆÝ% cÑ*Ô*ˆØˆr*   c           	     óÒ  — | j         rt          d¦  «        ‚|r@t          |t          ¦  «        r+t                               |¦  «        t          ¦   «         dhfvrt          d¦  «        ‚t          |t          ¦  «        r@|r>|d         dk    rAt                               |dd…         ¦  «        t          ¦   «         k    rt          d¦  «        ‚t          | ¦  «        }t          j	        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          |||¦  «        }|j        sdS |dk    rt          j        |||¦  «         dS t          j        |¦  «        }t%          |¦  «        D ]>}	t          j        |t          j        ||	¦  «        t          j        ||	¦  «        ¦  «         Œ?dS )	z&Set the value of a PDF dictionary key.r¾   rb  z	bad 'key'r   r   Nzbad 'value'rA  )rÂ   rÃ   r>   rá  ÚINVALID_NAME_CHARSÚintersectionrâ  rÎ   r�   r–  r¯  r—  rš  r>  ÚJM_set_object_valuerÌ   r<  r‹  r\  r^  r�  rŒ  )
r(   r   r'  r¸   rj  rU
  r  rª  rE   r®   s
             r)   r}  zDocument.xref_set_keyñ  s÷  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/àð 	*�* S­#Ñ.Ô.ð 	*Õ2D×2QÒ2QÐRUÑ2VÔ2VÕ_bÑ_dÔ_dÐgjÐfkÐ^lÐ2lÐ2lÝ˜[Ñ)Ô)Ð)Ý˜%¥Ñ%Ô%ð 	,¨Uð 	,°e¸A´hÀ#²o°oÕJ\×JiÒJiÐjoÐpqÐprÐprÔjsÑJtÔJtÕx{Ñx}Ôx}ÒJ}ÐJ}Ý˜]Ñ+Ô+Ð+å˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆõ ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�2Š:ˆ:ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCÝ% c¨3°Ñ6Ô6ˆØÔ!ð 	ØˆFØ�2Š:ˆ:ÝÔ# C¨¨wÑ7Ô7Ð7Ð7Ð7åÔ" 7Ñ+Ô+ˆAÝ˜1‘X”Xð ð �ÝÔ"ØÝÔ.¨w¸Ñ:Ô:ÝÔ.¨w¸Ñ:Ô:ñô ð ð ðð r*   c                ó¸  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt	          j        ||d¦  «        }nt	          j	        |¦  «        }d}t	          j
        |¦  «        r$t	          j        ||¦  «        }t          |¦  «        }|S )zGet decompressed xref stream.r9  r   rA  r   N)rÂ   r  rÃ   rÎ   r�   r–  r¯  r—  r˜  r>  r+  Úpdf_load_stream_numberr-  ©r(   r   rj  rU
  r  r.  r/  s          r)   Úxref_streamzDocument.xref_stream   sÛ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�1Š9ˆ9ÝÔ(¨#¨t°QÑ7Ô7ˆCˆCåÔ# SÑ)Ô)ˆCØˆÝÔ Ñ$Ô$ð 	'ÝÔ.°°TÑ:Ô:ˆCÝ  #Ñ&Ô&ˆAØˆr*   c                ó¸  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt	          j        ||d¦  «        }nt	          j	        |¦  «        }d}t	          j
        |¦  «        r$t	          j        ||¦  «        }t          |¦  «        }|S )z&Get xref stream without decompression.r9  r   rA  r   N)rÂ   r  rÃ   rÎ   r�   r–  r¯  r—  r˜  r>  r+  Úpdf_load_raw_stream_numberr-  r‡
  s          r)   rj
  zDocument.xref_stream_raw)   sÛ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�1Š9ˆ9ÝÔ(¨#¨t°QÑ7Ô7ˆCˆCåÔ# SÑ)Ô)ˆCØˆÝÔ Ñ$Ô$ð 	'ÝÔ2°C¸Ñ>Ô>ˆCÝ  #Ñ&Ô&ˆAØˆr*   c                óL  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        ¦  «        }|j        st          t          t          ¦  «         t          j        |t	          d¦  «        ¦  «        }d}|j        rt          j	        |¦  «        }|S )z"Get xref of document XML metadata.r;  rÞ  r   )
rÎ   r�   r  r>  r  rÌ   rÀ  rñ	  rÁ  r  )r(   rj  rF  rÅ  r   s        r)   Úxref_xml_metadatazDocument.xref_xml_metadata;   s�   € å˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒð 	<Ý•_Õ&:Ñ;Ô;Ð;ÝÔ  $­°Ñ(<Ô(<Ñ=Ô=ˆØˆØŒ>ð 	*ÝÔ# SÑ)Ô)ˆDØˆr*   )rÄ   r-  r  Ú__dict__c                ó   — | j         S r,   )rÑ  r.   s    r)   r¸	  zDocument.<lambda>I   s   €  D¤M€ r*   )rÚ  rø   )rÚ  rã  )r®   r4   rÚ  rÒ   )r®   rê  rÚ  r÷  )r®   rú  rÚ  rÒ   )NNNNr   r   r  N©rÚ  r4   ©rÚ  rá  )rC  r4   rÚ  rã  )rA  rA  rA  )r\  r]  r^  r]  r_  r4   r`  r4   ra  r4   rÚ  rã  )rA  rA  rA  r   )rv  r]  rá  r]  r_  r4   r`  r4   ra  r4   rÚ  rã  )rC   rø  rÚ  r4   r?  rA  ©rÖ   rÒ   )r   r4   r"  rá  r#  rá  r$  r4   r%  r4   rC  r4   rø	  )rA  rw  rx  ©NNr   NN)rA  r   NN)r¯  rø   rÇ  rø   rÚ  rã  )r   rA  r   )rA  )rá  r4   rg  r4   )rá  r4   )r   rá  r=  rê  rf   rÍ  r&  rÍ  rÉ  rÍ  rÚ  rã  )rC   rø  )rC   rø  rÚ  r)  )rC   rø  rÚ  r5   ©rÚ  r´   )rC   rø  r=  r   rf   rÍ  r&  rÍ  rÉ  rÍ  rÚ  rã  )r   r   N)r   FTTTFFFFFr   r  NNTr   r   r   FF)r'  r   N)r:  r]  r   r4   r%  r4   rC  r4   rD  rE  rÚ  r´   )r:  r]  r   r4   rÚ  r4   )r:  r]  r   r4   rÚ  r5   rÐ  )rá  r4   r�  rø   rÚ  r´   )r:  r]  rá  r4   ré  r¹   rë  r   r  r¼   rì  rø   r¯  rø   rÚ  r¦  )r   NNNF)r:  r]  rá  r4   rª  rá  r  r¼   rÎ  r«  r¬  r­  rã  rø   rÚ  r®  )rá  r4   rÚ  r´   rš  )r:  r]  rI  rø   rÚ  r´   )r:  r]  rÚ  rø   )rA  rA  rA  rA  TTr   r   )Nr  rw  rx  rÞ  Nr=  )r:  r]  rá  r4   r   rß  r
  r~  rl  r~  rà  r~  r	  rá  r]  rÍ  r  rÏ  rÚ  r4   r,   )Nr   r   r  )rF  rá  rk   rø   ©rÚ  r5   )
r:  r]  rá  r4   rl  r~  rà  r~  rÚ  rÒ   )r¤  r«  rë  r«  rì  r«  rÚ  r•  rß  )rÖ   rÒ   rÚ  rÒ   r‡   )
Nr   r   TTTTTFNr>  )r   r   r   r   r   r   r   r   r   r   r   r   r   r  NNr   r   r   FF)TTTTTTTr   TTTTT)r:  r]  rC	  rø   rD	  rø   rE	  rø   rF	  rø   rG	  rø   r  rø   rH	  rø   rI	  r4   rJ	  rø   rK	  rø   rL	  rø   rM	  rø   rN	  rø   rÚ  rã  )FNNN)r:  r]  rá  r4   r   rá  rv	  rø   r  r¼   rÎ  r4   r¬  r­  rÚ  r´   )NNNNN)re  r5   rÚ  rø   )r:  r]  r�  r5   rÚ  rã  )r:  r]  r   r4   rÕ  r4   rÚ  rã  )r   NNN)r:  r]  r   r4   rz  r¯	  r„  rÍ  r…  r¯	  rÚ  r4   )r�  rá  )r”  rá  )r:  r]  ré  r´   r  r4   rÚ  r4   )NNNNNNNr   )r:  r]  rC  r4   r	  rE  re  r«  rá  r«  rl  rÍ  rˆ  rÍ  rg  rº   rf   rÍ  rh  r~  rÚ  rã  ©FF)r:  r]  ró	  rø   rô	  rø   rÚ  r«  )r   Nr   r   )FFFFFFFFFFFFr   r  NNr   r   r   FF)
r:  r]  rf
  r4   rg
  r4   re
  r´   rÚ  rã  )¿r/   r0   r1   râ  rî  r•  r˜  ÚtypingÚoverloadrp  ÚsysÚversion_inforŒ   r5  rþ   rB  rG  rS  rX  r[  rŽ  rð  r÷  rü  r  r  r  r  r  r  r!  r3  r;  r>  rB  rJ  rY  r_  rc  re  rv  rz  r†  rF  rj  r•  r™  rB  r›  r¡  r¾  rÂ  rÆ  rÊ  rÝ  rÞ  rò  r+  rÜ  rß  rè  ré  rñ  ró  rö  rø  rþ  rú  r  r  r  r4  r8  rC  rb  rf  rl  ro  rÖ  r}  r�  rE  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-  r0  r3  r:  r9  rC  rE  rI  r  rT  rY  re  rg  r   rs  r)  râ  r~  rÈ  rÜ  r…  r‰  r|  r�  r”  r�  r‘  r>  r*  r¨  r°  r³  r»  rå  r×  r	  r3  r?	  rB	  ru	  r}	  rƒ	  r¡  r�	  r–	  r�	  rm	  r«  rÂ	  rÊ	  rÑ	  rÝ	  rë	  rî	  rò	  rK
  rR
  r“  rq	  r\
  r   rÙ  r   rk
  rû  r®	  rw
  ry
  ri
  r}
  r†  r’  r}  rˆ
  rj
  rŒ
  Ú	__slots__rÂ  Ú	is_streamr-   r*   r)   rÁ   rÁ     s$  € € € € € ñð ð ð ñ,;ð ;ð ;ð ;ð.ð ð ðð ð ð „_ðñ ð ð ñ „_ðð Ô˜6Ò!Ð!Ø	Œñ	ð 	ð 	ñ 
Œð	ð 
Œñ	ð 	ð 	ñ 
Œð	ð!ð !ð !ð !ñ[<ð [<ð [<ð [<ñzð ð ð ñXð Xð Xð Xð)ð )ð )ñ($ð $ð $ð $ðð ð ð@9ð 9ð 9ð+ð +ð +ð  ØØñC@ñ C@ð C@ð C@ð C@ðT  ØØØñPPñ PPð PPð PPð PPðd
ð ð ñð ð ð ñð ð ð ð>
+ð 
+ð 
+ð-ð -ð -ð^%ð %ð %ñ("ð "ð "ð "ðHDð Dð DñL%ð %ð %ð %ðñ ð ð ð ð<ð ð ð@ð ð ð)ð )ð )ð"ð ð ð ð ð ñ(ð ð ð ð	ð 	ð 	ð/ð /ð /ð6 ð 6 ð 6 ñpð ð ð ð0)ð )ð )ð	8ð 	8ð 	8ð	 ð 	 ð 	 ð
'ð 
'ð 
'ñHð Hð Hð Hð8 ðð ñ „Xðñ(/ð /ð /ð /ñDð Dð Dð DðL
ð 
ð 
ð9ð 9ð 9ð &*¸4ð @ð @ñ @ð @ð @ð @ð$ ð3ð 3ñ „Xð3ðð ð ðð ð ñ$ð ð ð ñ.;ñ ;ð ;ð ;ð ;ð2<ð <ð <ñ&ñ &ð &ð &ð &ð
C ð C ð C ðP #Ø#Øñ$ñ $ð $ð $ð $ñL)ð )ð )ð )ñ&ð &ð &ð &ñ	*ð 	*ð 	*ð 	*ñð ð ð ñ,ð ð ð ð  $Ø"Ø#Øññ ð ð ð ñ>/ð /ð /ð /ðbð ð ðB ØØØØØØØØØØØØØØØØØ Ø!Øñ-1ð 1ð 1ð 1ðf/ð /ð /ñ6 ð 6 ð 6 ð 6 ðv ØØ $ñcñ cð cð cð cñJð ð ð ð,ð ð ð2ð ð ñð ð ð ð"*ð *ð *ñXAHð AHð AHð AHðFð ð ñ$ñ ð ð ð ñ$
ñ 
ð 
ð 
ð 
ðKð Kð Kñð ð ð ð< #'ØØ%)Ø"ØØð!ð !ñ !ð !ð !ð !ðL !Ø"Ø Ø#'ØñLñ Lð Lð Lð Lñ*ð ð ð ðð ð ð$  ñ4ñ 4ð 4ð 4ð 4ðlð ð ñ"ð ð ð ñ
ð 
ð 
ð 
ð{ð {ð {ð0 ØØØØØØØñ)ð )ð )ð )ð\ 37Ø ØØØ"Ø#Ø ññ ð ð ð ðD ØØØØØØØØØØðw(ð w(ð w(ð w(ð w(ðt ð$ð $ñ „Xð$ð ðð ñ „Xðð ðð ñ „Xðð, ðð ñ „Xðð ð;ð ;ñ „Xð;ð ðð ñ „Xðð	8ð 	8ð 	8ð&ð &ð &ðð ð ðPð Pð Pðð ð ðð ð ðð ð ð
"ð 
"ð 
"ñ
4ð 
4ð 
4ð 
4ð%ð %ð %ðð ð ð ð9ð 9ñ „Xð9ð ð/ð /ñ „Xð/ðð ð ñ2ð ð ð ñ(2ñ 2ð 2ð 2ð 2ð"ð ð ð<%ð %ð %ðð ð ð ñð ð ñ „Xðñ:;ñ ;ð ;ð ;ð ;ð( ðð ñ „Xðñð ð ð ð0 ðð ñ „Xðð ØØñ	ñ ð ð ð ð$/ð /ð /ð*ð ð ð$ ð	5ð 	5ñ „Xð	5ðð ð ð(ð ð ðð ð ð" ñð ð ñ „Xðð ñð ð ñ „Xðñ(ñ (ð (ð (ð (ð:ð ð ñHð Hð Hð Hð ðð ñ „Xðð0/ð /ð /ñ 9ð 9ð 9ð 9ðv*ð *ð *ñð ð ð ð8 ØØØØØØØØØñU,ð U,ð U,ð U,ñn2ð 2ð 2ð 2ðIð Ið Ið\ ØØØØØØØØØØØØØØØØØØ Ø!Øñ/c?ð c?ð c?ð c?ðJ/ð /ð /ð"Yð Yð Yð  $Ø Ø#Ø ØØØØØ!Ø!Ø $ØØ!ñP;ñ P;ñ P;ð P;ð P;ðl  Ø"ØØ#'ñ"
ñ "
ñ "
ð "
ð "
ñH ð  ð  ñ6ñ ð ð ñ?/ñ ?/ð ?/ð ?/ðB:ñ :ð :ð :ñ"ñ ð ð ñ.;ñ ;ñ ;ð ;ð ;ñzñ ð ð ð0 Ø-1Ø!Ø+/ñGñ Gñ Gð Gð GñR1ñ 1ð 1ð 1ñ /ñ /ð /ð /ñ *2ð *2ð *2ð^ ñ}ñ }ñ }ð }ð }ðD "&ØØØØ Ø!Ø#ØñjJñ jJñ jJð jJð jJñXAð Að Añ$v+ñ v+ñ v+ð v+ð v+ðp	3ñ 3ð 3ð 3ñ(2ñ 2ð 2ð 2ññ ð ð ð$ ñð ñ „Xðð ØØØ ØØØØØØØØØØØØØØØ Ø!Øñ-2ñ 2ð 2ð 2ñh+ð +ð +ð ñ2ð 2ñ „Xð2ð
 NRñ !3ð !3ñ !3ñ !3ð !3ð !3ñF0ð 0ð 0ñdð ð ñ&ð ð ñð ð ð<ñ <ð <ð <ñð ð ñð ð ññ ð ð ñ&$ð $ð $ñLð ð ñ$ð ð ñ$
ð 
ð 
ñ C€IàˆhÑ1Ð1Ñ2Ô2€GØ€I€I€Ir*   rÁ   c                  ó4   — e Zd Zd„ Zd„ Zd	d„Zd„ Zd„ Zd„ ZdS )
ÚDocumentWriterc                ó   — | S r,   r-   r.   s    r)   r•  zDocumentWriter.__enter__Q   r–  r*   c                ó.   — |                       ¦   «          d S r,   rñ  rI  s     r)   r˜  zDocumentWriter.__exit__T   ró  r*   r\   c                óö  — t          |t          ¦  «        rn7t          |d¦  «        rt          |¦  «        }nt          |d¦  «        r|j        }t          |t          ¦  «        r,t	          j        ||t          j        j        ¦  «        | _        d S t          |¦  «        }t	          j        ||t          j        j	        ¦  «        | _        | 
                    ¦   «         dk    sJ ‚t          | j        d¦  «        sJ ‚d S )Nr  r   r   Ú_out)r>   rá  r;   r   r�   ÚFzDocumentWriterÚPathType_PDFrÄ   r%  ÚOutputType_PDFrF  )r(   r
   r  r(  s       r)   rŒ   zDocumentWriter.__init__W   sç   € Ý�t�SÑ!Ô!ð 	ØÝ�d˜JÑ'Ô'ð 	Ý˜‘:”:ˆDˆDÝ�d˜FÑ#Ô#ð 	Ø”9ˆDÝ�t�SÑ!Ô!ð 	/ÝÔ.°°g½uÔ?UÔ?bÑcÔcˆDŒIˆIˆIõ (¨Ñ.Ô.ˆCÝÔ.°°W½eÔ>TÔ>cÑdÔdˆDŒIØ×'Ò'Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ý˜DœI vÑ.Ô.Ð.Ð.Ð.Ð.Ð.r*   c                óv   — t          |¦  «        }t          j        | j        |¦  «        }t	          |¦  «        }|S r,   )r  r�   Úfz_begin_pagerÄ   r·  )r(   r€  Ú	mediabox2rÂ  Údevice_wrappers        r)   Ú
begin_pagezDocumentWriter.begin_pagen   s6   € Ý# HÑ-Ô-ˆ	ÝÔ$ d¤i°Ñ;Ô;ˆÝ&¨Ñ/Ô/ˆØÐr*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_close_document_writerrÄ   r.   s    r)   rò  zDocumentWriter.closet   s   € ÝÔ&¨¬	Ñ2Ô2Ð2Ð2Ð2r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_end_pagerÄ   r.   s    r)   Úend_pagezDocumentWriter.end_pagew   s   € ÝÔ˜4œ9Ñ%Ô%Ð%Ð%Ð%r*   N©r\   )	r/   r0   r1   r•  r˜  rŒ   r©
  rò  r®
  r-   r*   r)   r�
  r�
  O   ss   € € € € € ðð ð ðð ð ð/ð /ð /ð /ð.ð ð ð3ð 3ð 3ð&ð &ð &ð &ð &r*   r�
  c                  óx  — e Zd Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Z	dd„Z
ed„ ¦   «         Zed„ ¦   «         Zdd„Zd d„Zed„ ¦   «         Zd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdd„Zd„ Zd„ ZdS )!r=  c                ó6   — t          | ¦  «        t          urd S d S r,   )rÈ   r=  r.   s    r)   rÊ  zFont.__del__}   s    € Ý�‰:Œ:�TÐ!Ð!Ø�4ð "Ð!r*   Nr   rA  r   c                ó"  — |rmt          |d¦  «        r|                     ¦   «         }n$t          |t          ¦  «        rt	          |¦  «        }t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        r×|                     ¦   «         }d|v sd|v sd|v rt          d¦  «         |dv rd}n¡| 	                    d	¦  «        rd
}n‰| 	                    d¦  «        rd}nq| 	                    d¦  «        rd}nY|t                               ¦   «         v rdd l}|                     |¦  «        }d }~n!|dk     rt                               ||¦  «        }t!          j        |¦  «        }t%          |||||||||	|
¦
  «
        }|| _        d S )Nr�  zbad type: 'fontbuffer'rb  ú\r   z!Warning: did you mean a fontfile?)Úcjkúchina-túchina-tsr   úchina-sr   Úkorear   Újapanr   )r;   r�  r>   rh  r)  rÃ   rá  râ  rr   r3   Úfitz_fontdescriptorsrÕ  Úpymupdf_fontsÚmyfontÚBase14_fontdictr8   r�   rŸ  ÚJM_get_fontrÄ   )r(   r	  r]  r^  Úscriptr:  r$  Úis_boldÚ	is_italicÚis_serifÚembedÚfname_lowerr»
  r9  rb  s                  r)   rŒ   zFont.__init__�   sÏ  € ð ð 	;Ý�z :Ñ.Ô.ð /Ø'×0Ò0Ñ2Ô2�
�
Ý˜J­	Ñ2Ô2ð /Ý" :Ñ.Ô.�
Ý˜j­%Ñ0Ô0ð ;Ý Ð!9Ñ:Ô:Ð:å�h¥Ñ$Ô$ð 	CØ"Ÿ.š.Ñ*Ô*ˆKØ�kÐ!Ð! T¨[Ð%8Ð%8¸CÀ;Ð<NÐ<NÝÐ;Ñ<Ô<Ð<àÐ<Ð<Ð<Ø��à×'Ò'¨	Ñ2Ô2ð CØ��Ø×'Ò'¨Ñ0Ô0ð CØ��Ø×'Ò'¨Ñ0Ô0ð 	CØ��ØÕ 4× 9Ò 9Ñ ;Ô ;Ð;Ð;Ø$Ð$Ð$Ð$Ø*×1Ò1°+Ñ>Ô>�
Ø�Ø!�Mà˜A’�Ý*×.Ò.¨x¸ÑBÔB�åÔ1°(Ñ;Ô;ˆÝ˜8 XØ˜v t¨XØ˜I x°ñ8ô 8ˆð ˆŒ	ˆ	ˆ	r*   c                ó   — d| j         › d�S )NzFont('r7  ©r   r.   s    r)   rþ   zFont.__repr__´   s   € Ø%˜œ	Ð%Ð%Ð%Ð%r*   c                ó4   — t          j        | j        ¦  «        S )z Return the glyph ascender value.)r�   Úfz_font_ascenderrÄ   r.   s    r)   rG  zFont.ascender·   ó   € õ Ô% d¤iÑ0Ô0Ð0r*   c                ó4   — | j                              ¦   «         S r,   )rÄ   Úfz_font_bboxr.   s    r)   r?  z	Font.bbox¼   s   € àŒy×%Ò%Ñ'Ô'Ð'r*   c                ó”   — t          j        t          j        | j        j        j        ¦  «        ¦  «        }t          j        |¦  «        S r,   )r�   r|  Úll_fz_keep_bufferrÄ   rÌ   rñ  Úfz_buffer_extract_copy)r(   r=  s     r)   rñ  zFont.bufferÀ   s5   € å”.¥%Ô"9¸4¼9Ô;OÔ;VÑ"WÔ"WÑXÔXˆÝÔ+¨WÑ5Ô5Ð5r*   r  c           	     óD  — t          j        |¦  «        }g }|D ]†}	t          |	¦  «        }
|r(t          j        | j        |
¦  «        }|dk    r| j        }nt          j        | j        |
||¦  «        \  }}|                     |t          j        |||¦  «        z  ¦  «         Œ‡|S )z@Return tuple of char lengths of unicode 'text' under a fontsize.r   )r�   rŸ  ÚordÚfz_encode_character_scrÄ   Ú!fz_encode_character_with_fallbackrk   r.  )r(   r   r
  r:  r¿
  ÚwmodeÚ
small_capsr9  r    r	  rË  Úgidrb  s                r)   Úchar_lengthszFont.char_lengthsÅ   s­   € åÔ1°(Ñ;Ô;ˆØˆØð 	Kð 	KˆBÝ�B‘”ˆAØð `ÝÔ2°4´9¸aÑ@Ô@�Ø˜!’8�8Øœ9�Døå!ÔCÀDÄIÈqÐRXÐZ^Ñ_Ô_‘	��TØ�IŠI�h¥Ô!7¸¸cÀ5Ñ!IÔ!IÑIÑJÔJÐJÐJØˆ	r*   c                ó4   — t          j        | j        ¦  «        S )z!Return the glyph descender value.)r�   Úfz_font_descenderrÄ   r.   s    r)   rH  zFont.descenderÔ   s   € õ Ô& t¤yÑ1Ô1Ð1r*   c                óp  ‡— t          j        | j        j        ¦  «        }|sd S t	          |t           j        ¦  «        sJ ‚t          rœ|j        gŠˆfd„} |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        }	 |d¦  «        }
 |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        }t          r|n|j        t          r|n|j        t          r|n|j	        t          r|n|j
        t          r|n|j        t          r|n|j        t          r|	n|j        t          r|
n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        dœS )Nc                óF   •— ‰d         d| z  dz
  z  }‰d         | z	  ‰d<   |S r)  r-   )ÚbitsrG   rF   s     €r)   ÚbzFont.flags.<locals>.bã   s/   ø€ Ø˜”d˜q D™y¨!™mÑ,�Ø˜”t˜t‘|��!‘Ø�
r*   r   )ÚmonoÚserifrW  rk  Ú
substituteÚstretchz	fake-boldzfake-italicÚopentypezinvalid-bboxr´
  zcjk-langrÃ
  znever-embed)r�   Úll_fz_font_flagsrÄ   rÌ   r>   Úfz_font_flags_trœ   Úis_monorÂ
  rÀ
  rÁ
  Úft_substituteÚ
ft_stretchÚ	fake_boldÚfake_italicÚhas_opentypeÚinvalid_bboxr´
  Úcjk_langrÃ
  Únever_embed)r(   rÝ  rÜ
  rä
  rÂ
  rÀ
  rÁ
  rå
  ræ
  rç
  rè
  ré
  rê
  rë
  rÃ
  rì
  rF   s                   @r)   rÎ  z
Font.flagsÙ   sæ  ø€ åÔ" 4¤9Ô#7Ñ8Ô8ˆØð 	ØˆFÝ˜1�eÔ3Ñ4Ô4Ð4Ð4Ð4åð 	à”�ˆAðð ð ð ð ð �a˜‘d”dˆGØ�q˜‘t”tˆHØ�a˜‘d”dˆGØ˜˜!™œˆIØ˜A˜a™DœDˆMØ˜˜1™œˆJØ˜˜!™œˆIØ˜!˜A™$œ$ˆKØ˜1˜Q™4œ4ˆLØ˜1˜Q™4œ4ˆLØ�q˜‘t”tˆHØ�A�a‘D”DˆEØ˜!˜A™$œ$ˆKå+6Ð E  ¸A¼IÝ,7Ð G  ¸Q¼ZÝ+6Ð E  ¸A¼IÝ-8Ð I 	 	¸a¼kÝ1<Ð Q  À!Ä/Ý.9Ð K 
 
¸q¼|Ý-8Ð I 	 	¸a¼kÝ/:Ð M  ÀÄÝ0;Ð O  ÀÄÝ0;Ð O  ÀÄÝ,7Ð B  ¸Q¼UÝ,7Ð G  ¸Q¼ZÝ)4Ð A  ¸!¼'Ý/:Ð M  ÀÄðð ð 	r*   c                óè   — t          j        |¦  «        }|r(t          j        | j        |¦  «        }|dk    r| j        }nt          j        | j        |||¦  «        \  }}t          j        |||¦  «        S )z2Return the glyph width of a unicode (font size 1).r   )r�   rŸ  rÑ
  rÄ   rÒ
  r.  )	r(   Úchr_r:  r¿
  rÓ
  rÔ
  r9  rÕ
  rb  s	            r)   Úglyph_advancezFont.glyph_advance!  ss   € åÔ1°(Ñ;Ô;ˆØð 	_ÝÔ.¨t¬y¸$Ñ?Ô?ˆCØ�aŠxˆxØ”y�øåÔ?ÀÄ	È4ÐQWÐY]Ñ^Ô^‰IˆC�ÝÔ% d¨C°Ñ7Ô7Ð7r*   c                ó$  — t          j        |¦  «        }|r(t          j        | j        |¦  «        }|dk    r| j        }nt          j        | j        |||¦  «        \  }}t          t          j        ||t          j        ¦   «         ¦  «        ¦  «        S )z1Return the glyph bbox of a unicode (font size 1).r   )r�   rŸ  rÑ
  rÄ   rÒ
  r4  Úfz_bound_glyphr‚  )r(   Úcharr:  r¿
  rÔ
  r9  rÕ
  rb  s           r)   Ú
glyph_bboxzFont.glyph_bbox!  sƒ   € åÔ1°(Ñ;Ô;ˆØð 	`ÝÔ.°´	¸4Ñ@Ô@ˆCØ�aŠxˆxØ”y�øåÔ?ÀÄÈDÐRXÐZ^Ñ_Ô_‰IˆC�Ý•EÔ(¨$°µU´^Ñ5EÔ5EÑFÔFÑGÔGÐGr*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r
  r.   s    r)   r
  zFont.glyph_count!  s   € àŒyÔ#Ô/Ð/r*   c                ó    — t          |¦  «        S )z$Return the unicode for a glyph name.)Úglyph_name_to_unicoder�  s     r)   rö
  zFont.glyph_name_to_unicode!  s   € å$ TÑ*Ô*Ð*r*   c                óà   — |r4t          j        |¦  «        }t          j        | j        |||¦  «        \  }}n7|rt          j        | j        |¦  «        }nt          j        | j        |¦  «        }|S )z0Check whether font has a glyph for this unicode.)r�   rŸ  rÒ
  rÄ   rÑ
  r-  )	r(   r*
  r:  r¿
  rô	  rÔ
  r9  rÕ
  rb  s	            r)   Ú	has_glyphzFont.has_glyph#!  ss   € àð 	@ÝÔ5°hÑ?Ô?ˆDÝÔ?ÀÄ	È3ÐPVÐX\Ñ]Ô]‰IˆC��àð @ÝÔ2°4´9¸cÑBÔB��åÔ/°´	¸3Ñ?Ô?�Øˆ
r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_boldrÄ   r.   s    r)   rÀ
  zFont.is_bold/!  s   € åÔ$ d¤iÑ0Ô0Ð0r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_italicrÄ   r.   s    r)   rÁ
  zFont.is_italic3!  s   € åÔ&¨¬	Ñ2Ô2Ð2r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_monospacedrÄ   r.   s    r)   Úis_monospacedzFont.is_monospaced7!  s   € åÔ*¨D¬IÑ6Ô6Ð6r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_serifrÄ   r.   s    r)   rÂ
  zFont.is_serif;!  s   € åÔ% t¤yÑ1Ô1Ð1r*   c                ó   — dS rÍ  )rÄ   r�   râ
  rÌ   rœ   ÚcppyyÚgblÚ"mupdf_mfz_font_flags_ft_substituterå
  Úll_fz_font_t3_procsÚpdf_font_writing_supported)r(   rb  rÎ  r  rå
  s        r)   Úis_writablezFont.is_writable?!  s   € àˆtr*   c                ó8   — t          j        | j        ¦  «        }|S r,   )r�   Úfz_font_namerÄ   r  s     r)   r   z	Font.nameR!  s   € åÔ  ¤Ñ+Ô+ˆàˆ
r*   c                ój  — | j         }t          j        |¦  «        }d}	t          |t          ¦  «        st          t          ¦  «        ‚|D ]d}
t          |
¦  «        }|rt          j        ||¦  «        }|dk    r|}nt          j	        ||||¦  «        \  }}|	t          j
        |||¦  «        z  }	Œe|	|z  }	|	S )z1Return length of unicode 'text' under a fontsize.r   )rÄ   r�   rŸ  r>   rá  r¾  ÚMSG_BAD_TEXTrÐ
  rÑ
  rÒ
  r.  )r(   r   r
  r:  r¿
  rÓ
  rÔ
  Úthisfontr9  r    r	  rË  rÕ
  rb  s                 r)   Útext_lengthzFont.text_lengthX!  sÇ   € à”9ˆÝÔ1°(Ñ;Ô;ˆØˆÝ˜$¥Ñ$Ô$ð 	+Ý�\Ñ*Ô*Ð*Øð 	;ð 	;ˆBÝ�B‘”ˆAØð _ÝÔ2°8¸QÑ?Ô?�Ø˜!’8�8Ø#�Døå!ÔCÀHÈaÐQWÐY]Ñ^Ô^‘	��TØ•%Ô(¨¨s°EÑ:Ô:Ñ:ˆBˆBØ
ˆh‰ˆØˆ	r*   c                ó    — t          |¦  «        S )z$Return the glyph name for a unicode.)Úunicode_to_glyph_name)r(   r	  s     r)   r  zFont.unicode_to_glyph_namek!  s   € å$ RÑ(Ô(Ð(r*   c                óŒ   — t          j        | j        ¦  «        }d„ |D ¦   «         }t          |¦  «        }t	          |¦  «        }|S )zE
        Returns sorted list of valid unicodes of a fz_font.
        c                ó   — g | ]	}|j         ‘Œ
S r-   )Úucsr¬   s     r)   r¯   z)Font.valid_codepoints.<locals>.<listcomp>t!  s   € Ð(Ð(Ð(˜!�”Ð(Ð(Ð(r*   )r�   Úfz_enumerate_font_cmap2rÄ   râ  Úsorted)r(   Úucs_gidsÚucssÚucss_uniqueÚucss_unique_sorteds        r)   Úvalid_codepointszFont.valid_codepointso!  sH   € õ Ô0°´Ñ;Ô;ˆØ(Ð(˜xÐ(Ñ(Ô(ˆÝ˜$‘i”iˆÝ# KÑ0Ô0ÐØ!Ð!r*   )
NNNr   NrA  r   r   r   r   )r  Nr   r   r   )Nr   r   r   )Nr   r   )r/   r0   r1   rÊ  rŒ   rþ   rB  rG  r?  rñ  rÖ
  rH  rÎ  rï
  ró
  r
  rö
  rø
  rÀ
  rÁ
  rÿ
  rÂ
  r  r   r  r  r  r-   r*   r)   r=  r=  {   sA  € € € € € ðð ð ð ØØØØØØØØØð1ð 1ð 1ð 1ðf&ð &ð &ð ð1ð 1ñ „Xð1ð ð(ð (ñ „Xð(ð ð6ð 6ñ „Xð6ðð ð ð ð ð2ð 2ñ „Xð2ð ð)ð )ñ „Xð)ðV	8ð 	8ð 	8ð 	8ð	Hð 	Hð 	Hð 	Hð ð0ð 0ñ „Xð0ð+ð +ð +ð
ð 
ð 
ð 
ð ð1ð 1ñ „Xð1ð ð3ð 3ñ „Xð3ð ð7ð 7ñ „Xð7ð ð2ð 2ñ „Xð2ð ðð ñ „Xðð$ ðð ñ „Xðð
ð ð ð ð&)ð )ð )ð"ð "ð "ð "ð "r*   r=  c                  ó   — e Zd Zd„ Zd„ ZdS )ré  c                óD   — t          | ¦  «        t          urd S d| _        d S rÉ  )rÈ   ré  r  r.   s    r)   rÊ  zGraftmap.__del__|!  s#   € Ý�D‰zŒz�XÐ%Ð%ØˆFØˆŒˆˆr*   c                óh   — t          |¦  «        }t          j        |¦  «        }|| _        d| _        d S rÍ  )rÎ   r�   Úpdf_new_graft_maprÄ   r  )r(   r:  ÚdstÚmap_s       r)   rŒ   zGraftmap.__init__�!  s1   € Ý˜sÑ#Ô#ˆÝÔ& sÑ+Ô+ˆØˆŒ	ØˆŒˆˆr*   N)r/   r0   r1   rÊ  rŒ   r-   r*   r)   ré  ré  z!  s2   € € € € € ðð ð ð
ð ð ð ð r*   ré  c                  ó
  — e Zd Z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d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdd„Zdd„Zd„ Zed„ ¦   «         ZdZdS )ÚLinkc                ó.   — |                       ¦   «          d S r,   )r  r.   s    r)   rÊ  zLink.__del__‰!  s   € Ø�Š‰Œˆˆˆr*   c                óL   — t          |t          j        ¦  «        sJ ‚|| _        d S r,   )r>   r�   ÚFzLinkrÄ   )r(   rÄ   s     r)   rŒ   zLink.__init__Œ!  s%   € Ý˜4¥¤Ñ.Ô.Ð.Ð.Ð.ØˆŒ	ˆ	ˆ	r*   c                óN   — t          | ¦  «         dt          | j        ¦  «        z   S ©Nzlink on ©rv  rá  rû   r.   s    r)   rþ   zLink.__repr__�!  ó%   € Ý�DÑÔÐØ�C ¤Ñ,Ô,Ñ,Ð,r*   c                óN   — t          | ¦  «         dt          | j        ¦  «        z   S r'  r(  r.   s    r)   r   zLink.__str__”!  r)  r*   c                ó–   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        sd S t	          |¦  «        }|S ©Nr   r:  )rÎ   rÌ   r�   r˜  r•  ©r(   r:  r   rj  Úlink_objrÜ
  s         r)   Ú_borderzLink._border˜!  sY   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨#¨t°QÑ7Ô7ˆØÔ"ð 	ØˆFÝ˜HÑ%Ô%ˆØˆr*   c                óº   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        st	          t
          ¦  «        ‚t          |¦  «        }|S r,  )rÎ   rÌ   r�   r˜  rÃ   r—  r¤  r-  s         r)   Ú_colorszLink._colors¢!  sb   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨3°°aÑ8Ô8ˆØÔ"ð 	,Ý�lÑ+Ô+Ð+Ý˜XÑ&Ô&ˆØˆr*   c                ó"   — d | _         d| _        d S rÉ  )rû   r  r.   s    r)   r  zLink._erase¬!  s   € ØˆŒØˆŒˆˆr*   c                óš   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        sd S t	          |||¦  «        }|S r,  )rÎ   rÌ   r�   r˜  rr  )r(   r˜  r:  r   rj  r.  rÜ
  s          r)   Ú
_setBorderzLink._setBorder°!  s]   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨#¨t°QÑ7Ô7ˆØÔ"ð 	ØˆFÝ ¨¨XÑ6Ô6ˆØˆr*   c                óV   — |                       | j        j        j        | j        ¦  «        S r,   )r/  rû   rÄ   r   r.   s    r)   r˜  zLink.borderº!  ó    € à�|Š|˜DœKÔ.Ô3°T´YÑ?Ô?Ð?r*   c                óV   — |                       | j        j        j        | j        ¦  «        S r,   )r1  rû   rÄ   r   r.   s    r)   r  zLink.colors¾!  r6  r*   c                óf  — t          | d¦  «        r| j        €t          d¦  «        ‚| j        j        j        s| j        j        j        rt          d¦  «        ‚| j        j        }| j        s| j                             d¦  «        rd}n|                     | j        ¦  «        }t          | ||¦  «        S )z Create link destination details.rû   Núorphaned object: parent is Noner9  r(
  )
r;   rû   rÃ   rÂ   r  rº  rl  r3   r»  ÚlinkDest)r(   r:  rl  s      r)   rõ  z	Link.destÂ!  sµ   € õ �4˜Ñ"Ô"ð 	@ t¤{Ð':ÝÐ>Ñ?Ô?Ð?ØŒ;ÔÔ'ð 	=¨4¬;Ô+=Ô+Jð 	=ÝÐ;Ñ<Ô<Ð<ØŒkÔ ˆàÔð 	-˜tœx×2Ò2°3Ñ7Ô7ð 	-ØˆCˆCà×"Ò" 4¤8Ñ,Ô,ˆCå˜˜c 3Ñ'Ô'Ð'r*   rÚ  r4   c                óÆ   — t          | ¦  «         | j        j        }|j        sdS |                     | j        d¦  «        }|d         dk    rt          |d         ¦  «        S dS )Nr   r·  r   rÇ  )rv  rû   rç  rû  r   r4   )r(   r:  rÝ  s      r)   rÎ  z
Link.flagsÒ!  sb   € å�DÑÔÐØŒkÔ ˆØŒzð 	Ø�1Ø×Ò˜TœY¨Ñ,Ô,ˆØˆQŒ4�6Š>ˆ>Ý�q˜”t‘9”9ÐØˆqr*   c                óî   — t          | ¦  «         t          rt          j        | j        ¦  «        S | j        }|j        r|j        j        sdS t          t          j	        |j        j        ¦  «        ¦  «        S )zFlag the link as external.F)
rv  r'  r   ÚLink_is_externalrÄ   rÌ   rl  rø   r�   Úfz_is_external_link©r(   Ú	this_links     r)   rº  zLink.is_externalÝ!  sp   € õ 	�DÑÔÐÝð 	6ÝÔ)¨4¬9Ñ5Ô5Ð5Ø”Iˆ	ØÔ#ð 	¨9Ô+?Ô+Cð 	Ø�5Ý•UÔ.°	Ô0DÔ0HÑIÔIÑJÔJÐJr*   c                ó:  — | j         j        sdS t          | ¦  «         	 | j                              ¦   «         }|j        sdS t          |¦  «        }|rÉd|_        | j	        |_	        ||j	        j
        t          |¦  «        <   | j        dk    r�d„ | j	                             ¦   «         D ¦   «         }d„ | j	                             ¦   «         D ¦   «         }|                     | j        ¦  «        }||dz            |_        ||dz            |_        nd|_        d|_        |S )z
Next link.Nr   Tc                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S ©r   r   ©r�   rÉ  rÿ  s     r)   r¯   zLink.next.<locals>.<listcomp>ú!  s.   € ÐfÐfÐf qÈÈ1ÌÕQVÔQeÒIeÐIe˜a œdÐIeÐIeÐIer*   c                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S )r   r   rD  rÿ  s     r)   r¯   zLink.next.<locals>.<listcomp>û!  s-   € ÐdÐdÐd QÀqÈÄtÍuÔOcÒGcÐGc˜A˜aœDÐGcÐGcÐGcr*   r   r\   )rÄ   rÌ   rv  r'  r   Ú	Link_nextrL  r"  r  rû   rG  rH  r   rÔ  ro  )r(   r"  Ú
link_xrefsÚlink_idsrC  s        r)   rL  z	Link.nextè!  s  € ð ŒyÔ#ð 	Ø�4Ý�DÑÔÐð	#ð ”)—.’.Ñ"Ô"ˆCØŒ~ð 	Ø�4Ý�C‰jŒjˆØð 	ØˆCŒKØœˆCŒJØ.1ˆCŒJÔ"¥2 c¡7¤7Ñ+ØŒy˜1Š}ˆ}ØfÐf¨D¬K×,CÒ,CÑ,EÔ,EÐfÑfÔf�
ØdÐd¨$¬+×*AÒ*AÑ*CÔ*CÐdÑdÔd�Ø ×&Ò& t¤yÑ1Ô1�Ø% c¨A¡gÔ.�”Ø! #¨¡'Ô*�”�à�”Ø�”Øˆ
r*   c                óÒ   — t          | ¦  «         | j        �| j        j        st          d¦  «        ‚t	          | j                             ¦   «         ¦  «        }t          |¦  «        }|S )zRectangle ('hot area').Nz"self.this.m_internal not available)rv  rÄ   rÌ   rg   rw  r  r4  rZ  s     r)   r  z	Link.rect"  s^   € õ 	�DÑÔÐð Œ9Ð D¤IÔ$8ÐÝÐAÑBÔBÐBÝ˜tœyŸ~š~Ñ/Ô/Ñ0Ô0ˆÝ�3‰iŒiˆØˆ
r*   Nr   c                ó�   — t          |¦  «        t          ur|||dœ}|                      || j        j        j        | j        ¦  «        S )N)rl  rm  rn  )rÈ   r5   r4  rû   rÄ   r   )r(   r˜  rl  rn  rm  s        r)   rt  zLink.set_border"  sB   € Ý�‰<Œ<�tÐ#Ð#Ø$¨uÀÐGÐGˆFØ�Š˜v t¤{Ô'9Ô'>ÀÄ	ÑJÔJÐJr*   c                ó  — t          | ¦  «         | j        j        }t          |¦  «        t          ur||dœ}|                     d¦  «        }|                     d¦  «        }|�t          d¦  «         |g dfv r|                     | j        dd¦  «         dS t          |d	¦  «        rt          |¦  «        g}t          |¦  «         t          |¦  «        d
v sJ ‚dt          |¦  «        › d�}|                     | j        d|¦  «         dS )zSet border colors.rv  r  rw  Nz!warning: links have no fill colorr-   rö  rx  ry  rz  r{  r|  )rv  rû   rÈ   r5   r8   rr   r}  r   r;   r~  r  r7   r¶   )r(   r  rw  r  r:  r�  s         r)   r‚  zLink.set_colors"  s  € å�DÑÔÐØŒkÔ ˆÝ�‰<Œ<�tÐ#Ð#Ø"¨fÐ5Ð5ˆFØ�zŠz˜&Ñ!Ô!ˆØ—’˜HÑ%Ô%ˆØÐÝÐ7Ñ8Ô8Ð8Ø�b˜"�XÐÐØ×Ò˜TœY¨¨TÑ2Ô2Ð2ØˆFÝ�6˜;Ñ'Ô'ð 	%Ý˜F‘m”m�_ˆFÝ�6ÑÔÐÝ�6‰{Œ{˜iÐ'Ð'Ð'Ð'Ø$•	˜&Ñ!Ô!Ð$Ð$Ð$ˆØ×Ò˜œ C¨Ñ+Ô+Ð+Ð+Ð+r*   c                ó  — t          | ¦  «         | j        j        }|j        st          d¦  «        ‚t	          |¦  «        t
          urt          d¦  «        ‚|                     | j        dt          |¦  «        ¦  «         d S )Nrå  zbad 'flags' valuer·  )	rv  rû   rç  rÃ   rÈ   r4   r}  r   rá  )r(   rÎ  r:  s      r)   r…  zLink.set_flags)"  sw   € Ý�DÑÔÐØŒkÔ ˆØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�E‰{Œ{�cÐ!Ð!ÝÐ0Ñ1Ô1Ð1Ø×Ò˜œ C­¨U©¬Ñ4Ô4Ð4Øˆtr*   c                óz   — t           rt          j        | j        ¦  «        S | j        }|j        r|j        j        ndS )zUri string.r\   )r'  r   Úlink_urirÄ   rÌ   rl  r?  s     r)   rl  zLink.uri3"  s>   € õ ð 	-Ý”> $¤)Ñ,Ô,Ð,Ø”Iˆ	Ø+4Ô+?ÐGˆyÔ#Ô'Ð'ÀRÐGr*   rA  r�
  )Nr   NNr?  )r/   r0   r1   rÊ  rŒ   rþ   r   r/  r1  r  r4  rB  r˜  r  rõ  rÎ  rº  rL  r  rt  r‚  r…  rl  rÖ   r-   r*   r)   r"  r"  ˆ!  s±  € € € € € ðð ð ðð ð ð-ð -ð -ð-ð -ð -ðð ð ðð ð ðð ð ðð ð ð ð@ð @ñ „Xð@ð ð@ð @ñ „Xð@ð ð(ð (ñ „Xð(ð ðð ð ñ „Xðð ðKð Kñ „XðKð ðð ñ „Xðð6 ð	ð 	ñ „Xð	ðKð Kð Kð Kð
,ð ,ð ,ð ,ð(ð ð ð ðHð Hñ „XðHð €D€D€Dr*   r"  c                  óÆ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdddddddœ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ed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Ze	ZeZeZdS )r…  c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   ©r­   rË  s     r)   r¯   z"Matrix.__abs__.<locals>.<listcomp>B"  ó   € Ð0Ð0Ð0 a˜a ™cÐ0Ð0Ð0r*   ©ÚmathÚsqrtÚsumr.   s    r)   Ú__abs__zMatrix.__abs__A"  ó)   € ÝŒy�Ð0Ð0¨4Ð0Ñ0Ô0Ñ1Ô1Ñ2Ô2Ð2r*   c           
     ó¾  — t          |d¦  «        rDt          | j        |z   | j        |z   | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   | j        |d	         z   ¦  «        S ©
Nry  rþ  úMatrix: bad seq lenr   r   r   r   rZ  r   ©
r;   r…  r!   rÜ
  rË  r  rp  rÝ  r7   rÃ   ©r(   r�  s     r)   Ú__add__zMatrix.__add__D"  óÓ   € Ý�1�kÑ"Ô"ð 	>Ý˜$œ& 1™* d¤f¨q¡j°$´&¸1±*Øœ& 1™* d¤f¨q¡j°$´&¸1±*ñ>ô >ð >åˆq‰6Œ6�QŠ;ˆ;ÝÐ2Ñ3Ô3Ð3Ý�d”f˜q œt‘m T¤V¨a°¬d¡]°D´F¸Q¸q¼T±MØœ& 1 Q¤4™-¨¬°!°A´$©¸¼ÀÀ1Ä¹ñGô Gð 	Gr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   ©rø  rç  r.   s    r)   rù   zMatrix.__bool__M"  ó3   € Ý˜‘I”I¥ T¡¤Ð/Ð/Ò/Ð/¨aÒ/Ð/Ð/Ð/Ð0Ð0r*   c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr5  Frþ  ©r;   r7   )r(   r†  s     r)   Ú__eq__zMatrix.__eq__P"  s5   € Ý�s˜IÑ&Ô&ð 	Ø�5Ý�3‰xŒx˜1Š}Ð1 d¨S¡jÐ!1Ð1r*   c                óZ   — | j         | j        | j        | j        | j        | j        f|         S r,   ©r!   rÜ
  rË  r  rp  rÝ  rõ  s     r)   rp  zMatrix.__getitem__U"  s&   € Ø”˜œ ¤¨¬°´¸¼Ð?ÀÔBÐBr*   Nrh  c               óÎ  — |s,dx| _         x| _        x| _        x| _        x| _        | _        �nþt          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r<t          t          |¦  «        \  | _         | _        | _        | _        | _        | _        �n�t          |¦  «        dk    �rqt          |d         t          j        ¦  «        rn|d         j         | _         |d         j        | _        |d         j        | _        |d         j        | _        |d         j        | _        |d         j        | _        �nët          |d         d¦  «        r‹t          j        |d         ¦  «        }t!          t          j        |¦  «        d¦  «        }	t!          t          j        |¦  «        d¦  «        }
|	x| _         | _        |
| _        |
 | _        dx| _        | _        �nJt          t          |d         ¦  «        \  | _         | _        | _        | _        | _        | _        �nt          |¦  «        dk    st          |¦  «        d	k    r`|d         dk    rTt          |d         ¦  «        ddt          |d         ¦  «        ddf\  | _         | _        | _        | _        | _        | _        n‚t          |¦  «        d	k    r`|d         dk    rTd
t          |d         ¦  «        t          |d         ¦  «        d
ddf\  | _         | _        | _        | _        | _        | _        nt          d¦  «        ‚|�|| _         |�|| _        |�|| _        |�|| _        |�|| _        |�	|| _        dS dS )aº  
        Matrix() - all zeros
        Matrix(a, b, c, d, e, f)
        Matrix(zoom-x, zoom-y) - zoom
        Matrix(shear-x, shear-y, 1) - shear
        Matrix(degree) - rotate
        Matrix(Matrix) - new copy
        Matrix(sequence) - from 'sequence'
        Matrix(mupdf.FzMatrix) - from MuPDF class wrapper for fz_matrix.
        
        Explicit keyword args a, b, c, d, e, f override any earlier settings if
        not None.
        r­  rþ  r\  r   r   ry  r   r   r   r®  zMatrix: bad argsN)r!   rÜ
  rË  r  rp  rÝ  r7   rÃ   rë  r~  r>   r�   r‚  r;   rU  ÚradiansÚroundÚcosÚsin)r(   r!   rÜ
  rË  r  rp  rÝ  r  ÚthetaÚc_Ús_s              r)   rŒ   zMatrix.__init__X"  så  € ð ð 	1ØBEÐEˆDŒFÐE�T”VÐE˜dœfÐE t¤vÐE°´¸¼¹Ý�‰YŒY˜Š]ˆ]ÝÐ2Ñ3Ô3Ð3Ý�‰YŒY˜!Š^ˆ^Ý=@ÅÈÑ=MÔ=MÑ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F±FÝ�‰YŒY˜!Š^‰^Ý˜$˜qœ'¥5¤>Ñ2Ô2ð UØ˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”‘Ý˜˜aœ +Ñ.Ô.ð 	UÝœ T¨!¤WÑ-Ô-�Ý�4œ8 E™?œ?¨AÑ.Ô.�Ý�4œ8 E™?œ?¨AÑ.Ô.�Ø"$Ð$�”˜œØ�”Ø˜�”Ø"%Ð%�”˜œ™åADÅUÈDÐQRÌGÑATÔATÑ>�”˜œ ¤¨¬°´¸¼¹Ý�‰YŒY˜!Š^ˆ^�s 4™yœy¨Aš~˜~°$°q´'¸Q²,°,Ý=BÀ4ÈÄ7¹^¼^Ø�S�%  Q¤™.œ.¨#¨sð>3Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F°Få�‰YŒY˜!Š^ˆ^  Q¤¨1¢ Ø=@Ý�d˜1”g‘”¥ d¨1¤g¡¤°°S¸#ð>>Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F°Fõ Ð/Ñ0Ô0Ð0ð ˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœF˜F˜Fˆ=ˆ=r*   c                óL   — t          ¦   «         }|                     | ¦  «         |S )zCalculate inverted matrix.)r…  Úinvert)r(   Úm1s     r)   Ú
__invert__zMatrix.__invert__�"  s   € å‰XŒXˆØ
�	Š	�$‰ŒˆØˆ	r*   c                ó   — dS )Nrþ  r-   r.   s    r)   r5  zMatrix.__len__•"  ó   € Øˆqr*   c           	     óö   — t          |d¦  «        rDt          | j        |z  | j        |z  | j        |z  | j        |z  | j        |z  | j        |z  ¦  «        S t          dd¦  «        }|                     | |¦  «        S )Nry  r   )	r;   r…  r!   rÜ
  rË  r  rp  rÝ  Úconcat)r(   r�  rs  s      r)   Ú__mul__zMatrix.__mul__˜"  sx   € Ý�1�kÑ"Ô"ð 	>Ý˜$œ& 1™* d¤f¨q¡j°$´&¸1±*Øœ& 1™* d¤f¨q¡j°$´&¸1±*ñ>ô >ð >å�A�a‰[Œ[ˆØ�yŠy˜˜qÑ!Ô!Ð!r*   c                ór   — t          | j         | j         | j         | j         | j         | j         ¦  «        S r,   )r…  r!   rÜ
  rË  r  rp  rÝ  r.   s    r)   Ú__neg__zMatrix.__neg__Ÿ"  s2   € Ý�t”v�g ¤˜w¨¬¨°$´&°¸4¼6¸'ÀDÄFÀ7ÑKÔKÐKr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rb  r.   s    r)   Ú__nonzero__zMatrix.__nonzero__¢"  rc  r*   c                ó    — t          | ¦  «        S r,   )r…  r.   s    r)   Ú__pos__zMatrix.__pos__¥"  s   € Ý�d‰|Œ|Ðr*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nr…  ©rá  rµ   r.   s    r)   rþ   zMatrix.__repr__¨"  s   € Ø�#�e D™kœkÑ*Ô*Ñ*Ð*r*   c                óê   — t          |¦  «        }|dk    r|| _        nU|dk    r|| _        nG|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S )Nr   r   r   r   rZ  r   úindex out of range)r~  r!   rÜ
  rË  r  rp  rÝ  r  ©r(   r®   rF   s      r)   Ú__setitem__zMatrix.__setitem__«"  s‡   € Ý�!‰HŒHˆØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VåÐ1Ñ2Ô2Ð2Øˆr*   c           
     ó¾  — t          |d¦  «        rDt          | j        |z
  | j        |z
  | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d	         z
  ¦  «        S r[  r]  r^  s     r)   Ú__sub__zMatrix.__sub__·"  r`  r*   c           	     óf  — t          |d¦  «        rVt          | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  ¦  «        S t          |¦  «        d         }|st          d¦  «        ‚t          dd¦  «        }| 
                    | |¦  «        S ©Nry  r®  r   zmatrix not invertible)r;   r…  r!   rÜ
  rË  r  rp  rÝ  Úutil_invert_matrixÚZeroDivisionErrorrx  )r(   r�  rs  Úm2s       r)   Ú__truediv__zMatrix.__truediv__À"  s½   € Ý�1�kÑ"Ô"ð 	GÝ˜$œ& 2™+ a™-¨¬°"©°Q©¸¼À¹ÀA¹Øœ& 2™+ a™-¨¬°"©°Q©¸¼À¹ÀA¹ñGô Gð Gå Ñ"Ô" 1Ô%ˆØð 	=Ý#Ð$;Ñ<Ô<Ð<Ý�A�a‰[Œ[ˆØ�yŠy˜˜rÑ"Ô"Ð"r*   c                óà   — t          |¦  «        t          |¦  «        cxk    rdk    sn t          d¦  «        ‚t          ||¦  «        \  | _        | _        | _        | _        | _        | _        | S )z.Multiply two matrices and replace current one.rþ  r\  )	r7   rÃ   Úutil_concat_matrixr!   rÜ
  rË  r  rp  rÝ  )r(   ÚoneÚtwos      r)   rx  zMatrix.concatÊ"  sj   € å�3‰xŒx�3˜s™8œ8Ð(Ð(Ò(Ð( qÒ(Ð(Ð(Ð(ÝÐ2Ñ3Ô3Ð3Ý9KÈCÐQTÑ9UÔ9UÑ6ˆŒ�”˜œ ¤¨¬°´Øˆr*   c                ó¾   — |€t          | ¦  «        }nt          |¦  «        }|d         dk    rdS |d         \  | _        | _        | _        | _        | _        | _        dS )z}Calculate the inverted matrix. Return 0 if successful and replace
        current one. Else return 1 and do nothing.
        Nr   r   )rŠ  r!   rÜ
  rË  r  rp  rÝ  )r(   rá  r  s      r)   rr  zMatrix.invertÑ"  s^   € ð ˆ;Ý$ TÑ*Ô*ˆCˆCå$ SÑ)Ô)ˆCØˆqŒ6�QŠ;ˆ;Ø�1Ø9<¸Q¼Ñ6ˆŒ�”˜œ ¤¨¬°´Øˆqr*   c                óê   — t          | j        ¦  «        t          k     rt          | j        ¦  «        t          k     p9t          | j        ¦  «        t          k     ot          | j        ¦  «        t          k     S )z,True if rectangles are mapped to rectangles.)rý  rÜ
  ÚEPSILONrË  r!   r  r.   s    r)   Úis_rectilinearzMatrix.is_rectilinearÞ"  sR   € õ �D”F‘”�gÒ%Ð?­#¨d¬f©+¬+½Ò*?ð >Ý�”‰[Œ[�7Ò"Ð<¥s¨4¬6¡{¤{µWÒ'<ð	>r*   c                óÌ  — t          |¦  «        }|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °t          d|z
  ¦  «        t          k     r�n•t          d|z
  ¦  «        t          k     r8| j        }| j        }| j        | _        | j        | _        | | _        | | _        �nBt          d|z
  ¦  «        t          k     r5| j         | _        | j         | _        | j         | _        | j         | _        nòt          d|z
  ¦  «        t          k     r7| j        }| j        }| j         | _        | j         | _        || _        || _        n t          j        |¦  «        }t          j	        |¦  «        }t          j
        |¦  «        }| j        }| j        }||z  || j        z  z   | _        ||z  || j        z  z   | _        | |z  || j        z  z   | _        | |z  || j        z  z   | _        | S )z2Calculate pre rotation and replace current matrix.r   rÃ  g     €V@g     €f@g     àp@)r~  rý  r”  r!   rÜ
  rË  r  rU  rj  rm  rl  )r(   rn  r!   rÜ
  Úradr�  rË  s          r)   Ú	prerotatezMatrix.prerotateä"  sÌ  € å�e‘”ˆØ�aŠiˆi˜ #™˜ˆe�aŠiˆiØ�sŠlˆl˜E S™L˜Eˆe�sŠlˆlÝˆq�5‰y‰>Œ>�GÒ#Ð#Ùå�˜‘ÑÔ¥Ò(Ð(Ø”ˆAØ”ˆAØ”VˆDŒFØ”VˆDŒFØ�RˆDŒFØ�RˆDŒF‰Få�˜‘ÑÔ¥'Ò)Ð)Ø”f�WˆDŒFØ”f�WˆDŒFØ”f�WˆDŒFØ”f�WˆDŒFˆFå�˜‘ÑÔ¥'Ò)Ð)Ø”ˆAØ”ˆAØ”f�WˆDŒFØ”f�WˆDŒFØˆDŒFØˆDŒFˆFõ ”,˜uÑ%Ô%ˆCÝ”˜‘”ˆAÝ”˜‘”ˆAØ”ˆAØ”ˆAØ˜‘U˜Q ¤™ZÑ'ˆDŒFØ˜‘U˜Q ¤™ZÑ'ˆDŒFØ�B˜‘F˜Q ¤™ZÑ'ˆDŒFØ�B˜‘F˜Q ¤™ZÑ'ˆDŒFàˆr*   c                óÂ   — t          |¦  «        }t          |¦  «        }| xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | S )z1Calculate pre scaling and replace current matrix.©r~  r!   rÜ
  rË  r  )r(   ÚsxÚsys      r)   ÚprescalezMatrix.prescale#  sY   € å�2‰YŒYˆÝ�2‰YŒYˆØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆr*   c                ó
  — t          |¦  «        }t          |¦  «        }| j        | j        }}| xj        || j        z  z  c_        | xj        || j        z  z  c_        | xj        ||z  z  c_        | xj        ||z  z  c_        | S )z2Calculate pre shearing and replace current matrix.rš  )r(   rÑ  rF   r!   rÜ
  s        r)   ÚpreshearzMatrix.preshear#  s|   € å�!‰HŒHˆÝ�!‰HŒHˆØŒv�t”vˆ1ˆØˆŒ�!�d”f‘*ÑˆŒØˆŒ�!�d”f‘*ÑˆŒØˆŒ�!�a‘%‰ˆŒØˆŒ�!�a‘%‰ˆŒØˆr*   c                óÎ   — t          |¦  «        }t          |¦  «        }| xj        || j        z  || j        z  z   z  c_        | xj        || j        z  || j        z  z   z  c_        | S )z5Calculate pre translation and replace current matrix.)r~  rp  r!   rË  rÝ  rÜ
  r  )r(   ÚtxÚtys      r)   ÚpretranslatezMatrix.pretranslate$#  s_   € å�2‰YŒYˆÝ�2‰YŒYˆØˆŒ�"�t”v‘+  T¤V¡Ñ+Ñ+ˆŒØˆŒ�"�t”v‘+  T¤V¡Ñ+Ñ+ˆŒØˆr*   r,   )r/   r0   r1   rX  r_  rù   rf  rp  rŒ   rt  r5  ry  r{  r}  r  rþ   r…  r‡  r�  rx  rr  rB  r•  r˜  r�  rŸ  r£  Ú__inv__Ú__div__Únormr-   r*   r)   r…  r…  ?"  s°  € € € € € ð3ð 3ð 3ðGð Gð Gð1ð 1ð 1ð2ð 2ð 2ð
Cð Cð Cð !%¨°¸ÀÈð 5'ð 5'ð 5'ð 5'ð 5'ðnð ð ðð ð ð"ð "ð "ðLð Lð Lð1ð 1ð 1ðð ð ð+ð +ð +ð
ð 
ð 
ðGð Gð Gð#ð #ð #ðð ð ðð ð ð ð ð>ð >ñ „Xð>ð
)ð )ð )ðVð ð ð	ð 	ð 	ðð ð ð €GØ€GØ€D€D€Dr*   r…  c                  ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚIdentityMatrixz"Identity matrix [1, 0, 0, 1, 0, 0]c                ó    — t          d¦  «        S )N)r   r   r   r   r   r   )Úhashr.   s    r)   Ú__hash__zIdentityMatrix.__hash__4#  s   € Ý�MÑ"Ô"Ð"r*   c                ó>   — t                                | dd¦  «         d S )Nr®  )r…  rŒ   r.   s    r)   rŒ   zIdentityMatrix.__init__7#  s   € Ý�Š˜˜c 3Ñ'Ô'Ð'Ð'Ð'r*   c                ó   — dS )Nz,IdentityMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)r-   r.   s    r)   rþ   zIdentityMatrix.__repr__:#  s   € Ø=Ð=r*   c                óZ   — |dv rd| j         |<   d S |dv rd| j         |<   d S || j         |<   d S )NÚadr®  Úbcefr­  )r�
  )r(   r   r¸   s      r)   Ú__setattr__zIdentityMatrix.__setattr__=#  sJ   € Ø�4ˆ<ˆ<Ø"%ˆDŒM˜$ÑÐÐØ�Vˆ^ˆ^Ø"%ˆDŒM˜$ÑÐÐà"'ˆDŒM˜$ÑÐÐr*   c                 ó    — t          d¦  «        ‚)NzIdentity is readonly)ÚNotImplementedError)r  s    r)   Ú	checkargszIdentityMatrix.checkargsE#  s   € Ý!Ð"8Ñ9Ô9Ð9r*   N)	r/   r0   r1   Ú__doc__r«  rŒ   rþ   r±  r´  r-   r*   r)   r¨  r¨  1#  se   € € € € € Ø,Ð,ð#ð #ð #ð(ð (ð (ð>ð >ð >ð(ð (ð (ð:ð :ð :ð :ð :r*   r¨  c                  ó   — e Zd ZdZdd„ZdS )r:  z#link or outline destination detailsNc           	     ó
  ‡ ‡— |j         }| }d‰ _        d‰ _        d‰ _        d‰ _        d‰ _        t          ‰ _        t          dd¦  «        ‰ _	        t          ¦   «         ‰ _        d‰ _        |j        ‰ _        t          dd¦  «        ‰ _        |j        ‰ _        d„ }d„ }d„ Šˆˆ fd„}|rY‰ j                             d¦  «        s?d	|d         d
z   › dt#          |d
         ¦  «        › dt#          |d         ¦  «        › �‰ _        |j         rd‰ _        t$          ‰ _        ‰ j        sd‰ _        t          ‰ _        |�rX‰ j        �rP‰ j                             dd¦  «        ‰ _        ‰ j                             d¦  «        �rôt(          ‰ _         |‰ j        ¦  «        }	|	                     d¦  «        }
|
��|
                     ¦   «         rùt/          |
¦  «        d
z
  ‰ _        d}|	                     d¦  «        }|r¨|                     d¦  «        }t3          |¦  «        dk    r€	 t          t5          |d
         ¦  «        t5          |d         ¦  «        ¦  «        ‰ _	        ‰ j        t6          z  t8          z  ‰ _        d}n%# t:          $ r t<          rt?          ¦   «          Y nw xY w|s ||	                     d¦  «        ¦  «         nÔt@          ‰ _        tC          j"        d‰ j        ¦  «        }|sJ ‚|rq|ro || #                    d
¦  «        ¦  «        }| $                    ¦   «                              |¦  «        ‰ _        ‰ j        €t          ¦   «         ‰ _        |‰ j        d<   n7 |‰ j        ¦  «        ‰ _        n!t@          ‰ _         |‰ j        ¦  «        ‰ _        |j         �rO‰ j        s�nF‰ j                             d¦  «        rü‰ j        dd …         ‰ _        ‰ j                             d¦  «        r‰ j        dd …         ‰ _        d‰ _        d‰ _        tJ          ‰ _        ‰ j                             d¦  «        }t3          |¦  «        dk    rr|d
                              d¦  «        rWtL          ‰ _        |d         ‰ _        t/          |d
                              d¦  «        d         dd …         ¦  «        d
z
  ‰ _        n0d‰ j        v rd‰ _        t$          ‰ _        nd‰ _        tJ          ‰ _        tO          ‰ j        t          ¦  «        sJ ‚d S )Nr\   r   Fc                ó  — |                       d¦  «        r
| dd …         } |                      d¦  «        }t          ¦   «         }|D ];}|                     d¦  «        }|dk    r||dz   d …         ||d |…         <   Œ6d ||<   Œ<|S )Nr(
  r   ú&r   r   )r3   r6   r5   r¡   )rl  rB   rG   rC   Úeqs        r)   Úuri_to_dictz&linkDest.__init__.<locals>.uri_to_dict^#  s‘   € Ø�~Š~˜cÑ"Ô"ð Ø˜!˜"˜"”g�Ø—I’I˜c‘N”NˆEÝ‘&”&ˆCØð %ð %�Ø—Y’Y˜s‘^”^�Ø˜’7�7Ø%)¨"¨Q©$¨%¨%¤[�C˜˜S˜b˜Sœ	‘N�Nà $�C˜‘I�IØˆJr*   c                óö   — |                       dd¦  «        }|                     d¦  «        }|d         }|dd…         D ]:}|dd…         }|t          t          |d¬	¦  «        ¦  «        z  }||dd…         z  }Œ;|S )
z'Unescape '%AB' substrings to chr(0xAB).z%%z%25ú%r   r   Nr   r)
  )Úbase)rî  r6   r*
  r4   )r   r6   rÀ  rC   Úpieces        r)   Úunescapez#linkDest.__init__.<locals>.unescapek#  s‹   € à—L’L  uÑ-Ô-ˆEØ—K’K Ñ$Ô$ˆEØ˜A”hˆGØ˜a˜b˜bœ	ð $ð $�Ø˜R˜a˜Rœ�Ø�3�s 5¨rÐ2Ñ2Ô2Ñ3Ô3Ñ3�Ø˜4   œ8Ñ#��ØˆNr*   c                óÖ   — | €d S |                       ¦   «         } | sd S |                      ¦   «         dv rd S 	 t          | ¦  «        S # t          $ r t          rt          ¦   «          Y d S w xY w)N)rÇ  Únan)r#  râ  r~  rg   r  rv   rq   s    r)   rø  z#linkDest.__init__.<locals>.as_floatv#  s…   € Øˆ|Ø�tØ—:’:‘<”<ˆDØð Ø�tØ�zŠz‰|Œ|˜Ð.Ð.Ø�tðÝ˜T‘{”{Ð"øÝð ð ð Ý'ð %Ý"Ñ$Ô$Ð$Ø�t�tðøøøs   ¶A ÁA(Á'A(c                óN  •— | sdS d„ |                       d¦  «        D ¦   «         }|sdS |d         }|sdS |d         dk    rd|› �}|dd …         }|dv rt          dd¦  «        ‰_        dS |d	v rSt          |¦  «        dk    r ‰|d         ¦  «        nd }|�)t          d|¦  «        ‰_        ‰j        t
          z  ‰_        dS |d
v rSt          |¦  «        dk    r ‰|d         ¦  «        nd }|�)t          |d¦  «        ‰_        ‰j        t          z  ‰_        dS |dk    rnt          |¦  «        dk    rY ‰|d         ¦  «        } ‰|d         ¦  «        }|�5|�3t          ||¦  «        ‰_        ‰j        t          z  t
          z  ‰_        dS dS |dk    r’t          |¦  «        dk    r ‰|d         ¦  «        nd }t          |¦  «        dk    r ‰|d         ¦  «        nd }|� |‰j        _        ‰j        t          z  ‰_        |� |‰j        _        ‰j        t
          z  ‰_        dS dS )NFc                ó6   — g | ]}|                      ¦   «         ‘ŒS r-   r	  r¬   s     r)   r¯   z9linkDest.__init__.<locals>.apply_view.<locals>.<listcomp>ˆ#  s    € Ð8Ð8Ð8 1�Q—W’W‘Y”YÐ8Ð8Ð8r*   r   r   rb  r   r	  Tr	  r		  r
	  rZ  r   r	  r   )	r6   rú  Últr7   rÎ  ÚLINK_FLAG_T_VALIDÚLINK_FLAG_L_VALIDr4  r5  )ÚviewrB   r   r  r	  r  rø  r(   s         €€r)   Ú
apply_viewz%linkDest.__init__.<locals>.apply_view…#  s\  ø€ Øð Ø�uØ8Ð8¨¯
ª
°3©¬Ð8Ñ8Ô8ˆEØð Ø�uØ˜”8ˆDØð Ø�uØ�AŒw˜#Š~ˆ~Ø!˜4�z�z�Ø˜˜˜”9ˆDàÐ(Ð(Ð(Ý  1™+œ+�”Ø�tàÐ*Ð*Ð*Ý+.¨t©9¬9¸ª>¨>�h�h˜t AœwÑ'Ô'Ð'¸t�Ø�?Ý# A s™mœm�D”GØ!%¤Õ.?Ñ!?�D”JØ�tàÐ*Ð*Ð*Ý,/°©I¬I¸ªN¨N�x�x  Q¤Ñ(Ô(Ð(À�ØÐ#Ý# D¨!™nœn�D”GØ!%¤Õ.?Ñ!?�D”JØ�tà�wŠˆÝ�t‘9”9 ’>�>Ø#˜8 D¨¤GÑ,Ô,�DØ"˜( 4¨¤7Ñ+Ô+�CØÐ'¨C¨OÝ"'¨¨cÑ"2Ô"2˜œØ%)¤ZÕ2CÑ%CÕFWÑ%W˜œ
Ø#˜tØ�uà�vŠ~ˆ~Ý,/°©I¬I¸ªN¨N�x�x  Q¤Ñ(Ô(Ð(À�Ý+.¨t©9¬9¸ª>¨>�h�h˜t AœwÑ'Ô'Ð'¸t�ØÐ#Ø $�D”G”IØ!%¤Õ.?Ñ!?�D”JØ�?Ø #�D”G”IØ!%¤Õ.?Ñ!?�D”JØ�tà�5r*   r(
  z#page=r   z&zoom=0,r   r   rA  z	&zoom=nanz&zoom=0rÖ   rh  r   TrÈ  z^#nameddest=(.*)Ú	nameddestzfile:r   z//zpage=r¹  r_   )(rº  rõ  Ú	file_specrÎ  Úis_mapÚis_urirá	  re  rú  rÅ  r5   r  Ú
new_windowrÖ   rt  rl  r3   r¶   rs  rî  rm  r8   Úisdigitr4   r6   r7   r~  rÇ  rÆ  rg   r  rv   Ú
LINK_NAMEDÚrer  Úgroupr	  rr  rp  r>   )r(   r  ÚrlinkrÉ   ÚisExtÚisIntr»  rÀ  rÉ  ÚparamsÚpage_argÚhave_locationrh  Ú
zoom_itemsr�  r  Úftabrø  s   `                @r)   rŒ   zlinkDest.__init__N#  sÞ  øø€ Ø”ˆØ�	ˆØˆŒ	ØˆŒØˆŒ
ØˆŒØˆŒÝˆŒ	Ý˜˜1‘+”+ˆŒÝ‘V”VˆŒ
ØˆŒØ”HˆŒ	Ý˜˜1‘+”+ˆŒØ”7ˆŒð	ð 	ð 	ð		ð 		ð 		ð	ð 	ð 	ð4	ð 4	ð 4	ð 4	ð 4	ð 4	ðl ð 	b˜œ×,Ò,¨SÑ1Ô1ð 	bØa  a¤¨1¡ÐaÐaµiÀÀaÄÑ6IÔ6IÐaÐaÍIÐV[Ð\]ÔV^ÑL_ÔL_ÐaÐaˆDŒHØŒ?ð 	!ØˆDŒIÝ ˆDŒIØŒxð 	"ØˆDŒIÝ!ˆDŒIØñ &	3�T”Xñ &	3Ø”x×'Ò'¨°YÑ?Ô?ˆDŒHØŒx×"Ò" 3Ñ'Ô'ñ $3Ý%�”	Ø$˜ T¤XÑ.Ô.�Ø!Ÿ:š: fÑ-Ô-�ØÑ'¨H×,<Ò,<Ñ,>Ô,>Ð'Ý # H¡¤°Ñ 1�D”IØ$)�MØ!Ÿ:š: fÑ-Ô-�DØð 	5Ø%)§Z¢Z°¡_¤_˜
Ý˜z™?œ?¨aÒ/Ð/ð5Ý*/µ°jÀ´mÑ0DÔ0DÅeÈJÐWXÌMÑFZÔFZÑ*[Ô*[ ¤Ø-1¬ZÕ:KÑ-KÕN_Ñ-_ ¤
Ø04  øÝ#,ð 5ð 5ð 5Ý#7ð !5Ý$2Ñ$4Ô$4Ð$4øøð5øøøð )ð 7Ø"˜
 6§:¢:¨fÑ#5Ô#5Ñ6Ô6Ð6øå *�D”IÝœÐ!3°T´XÑ>Ô>�AØ#�O�O˜8Øð 	; Að 	;Ø ( ¨¯ª°©¬Ñ 4Ô 4˜Ø%-×%;Ò%;Ñ%=Ô%=×%AÒ%AÀ%Ñ%HÔ%H˜œ
Øœ:Ð-õ *.©¬˜DœJØ27˜œ
 ;Ñ/Ð/à%0 [°´Ñ%:Ô%:˜œ
˜
å&�”	Ø(˜[¨¬Ñ2Ô2�”
ØŒ?ñ 	(Ø”8ð (ÙØ”×$Ò$ WÑ-Ô-ð (Ø!%¤¨!¨"¨"¤�”Ø”>×,Ò,¨TÑ2Ô2ð 8Ø%)¤^°A°B°BÔ%7�D”NØ#�”Ø�”Ý'�”	Ø”~×+Ò+¨CÑ0Ô0�Ý�t‘9”9 ’>�>Ø˜A”w×)Ò)¨'Ñ2Ô2ð GÝ$.˜œ	Ø)-¨a¬˜œÝ$'¨¨Q¬¯ª°cÑ(:Ô(:¸1Ô(=¸a¸b¸bÔ(AÑ$BÔ$BÀQÑ$F˜œ	øØ˜œ��Ø"�”Ý$�”	�	à"�”Ý'�”	Ý˜$œ*¥dÑ+Ô+Ð+Ð+Ð+Ð+Ð+s   ÈAI7 É7JÊJr,   ©r/   r0   r1   rµ  rŒ   r-   r*   r)   r:  r:  K#  s4   € € € € € Ø-Ð-ðr,ð r,ð r,ð r,ð r,ð r,r*   r:  c                  ól   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ ¦   «         Zd„ Zd„ Zdd„ZdS )rI  z6
    Class describing a PDF form field ("widget")
    c                ó¸  — d | _         d| _        d| _        d | _        d | _        d | _        d | _        d | _        d | _        d| _	        d| _
        d| _        d | _        d | _        d | _        d | _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        d S )Nrk	  r   ©r   r   r   ÚHelvr\   )rÐ  Úborder_styleÚborder_widthÚborder_dashesÚchoice_valuesÚ	rb_parentÚ
field_nameÚfield_labelÚfield_valueÚfield_flagsÚfield_displayÚ
field_typeÚfield_type_stringrh  Úbutton_captionÚ	is_signedr  Ú	text_fontÚtext_fontsizeÚtext_maxlenÚtext_formatÚ_text_dar¿
  Úscript_strokeÚscript_formatÚscript_changeÚscript_calcÚscript_blurÚscript_focusr  r   r.   s    r)   rŒ   zWidget.__init__$  só   € Ø ˆÔØˆÔØˆÔØ!ˆÔØ!ˆÔØˆŒàˆŒØˆÔØˆÔØˆÔØˆÔØˆŒØ!%ˆÔàˆŒØ"ˆÔØˆŒØ#ˆŒØˆŒØˆÔØˆÔØˆÔØˆŒàˆŒØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØˆÔØ ˆÔàˆŒ	ØˆŒ	ˆ	ˆ	r*   c                ó(   — d| j         › d| j        › d�S )NzWidget:(field_type=z script=r£  )rë  r¿
  r.   s    r)   rþ   zWidget.__repr__,$  s    € ØS TÔ%;ÐSÐSÀTÄ[ÐSÐSÐSÐSr*   c                ó´   — | j         s	d| _         dS d}|D ];}| j                              ¦   «         |                     ¦   «         k    r
|| _          dS Œ<d| _         dS )zAEnsure text_font is from our list and correctly spelled.
        rß  N)ÚCourÚTiRorß  ÚZaDb)rî  râ  )r(   Úvalid_fontsrÝ  s      r)   Ú_adjust_fontzWidget._adjust_font/$  sp   € ð Œ~ð 	Ø#ˆDŒNØˆFØ6ˆØð 	ð 	ˆAØŒ~×#Ò#Ñ%Ô%¨¯ª©¬Ò2Ð2Ø!"�”Ø��ð 3ð  ˆŒØˆr*   c           	     ó  — | j         t          dd¦  «        vrt          d¦  «        ‚| j         t          j        k    rÀ| j        dvr¹t          | d¦  «        r«| j        j        }|                     | j	        d¦  «        \  }}|dk    r}t          t          t          |dd…                              d	d
¦  «                             ¦   «         ¦  «        ¦  «        }|D ],}|| j	        k    r|                     |dd¦  «         Œ%dS dS dS dS dS )z Any widget type checks.
        r   r   zbad field type)FÚOffrû   zParent/Kidsr	  rA  rv  r\   ÚASú/OffN)rê  r\  rÃ   r�   ÚPDF_WIDGET_TYPE_RADIOBUTTONrç  r;   rû   rû  r   rµ   rë  r4   rî  r6   r}  )r(   r:  Ú	kids_typeÚ
kids_valuerN  r   s         r)   Ú_checkerzWidget._checker=$  s1  € ð Œ?¥%¨¨1¡+¤+Ð-Ð-ÝÐ-Ñ.Ô.Ð.ð Œ?�eÔ?Ò?Ð?ÀDÔDTÐ\jÐDjÐDjÕovÐw{ð  ~Fñ  pGô  pGÐDjð ”+Ô$ˆCØ$'×$4Ò$4°T´YÀÑ$NÔ$NÑ!ˆI�zØ˜GÒ#Ð#Ý�c¥# z°!°B°$Ô'7×'?Ò'?ÀÀbÑ'IÔ'I×'OÒ'OÑ'QÔ'QÑRÔRÑSÔS�Ø!ð =ð =�DØ˜tœyÒ(Ð(Ø×(Ò(¨¨t°VÑ<Ô<Ð<øð @Ð?ÐDjÐDjÐDjÐDjð
 $Ð#ð=ð =r*   c                ó  — | j         sdS d}d}d}| j                              ¦   «         }t          |¦  «        D ]´\  }}|dk    rA||dz
           dd…         }t          ||dz
           ¦  «        }dx||<   x||dz
  <   ||dz
  <   ŒL|d	k    r't          ||dz
           ¦  «        g}dx||<   ||dz
  <   Œy|d
k    r5d„ ||dz
  |…         D ¦   «         }dx||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ´Œµ|| _        || _        || _        d| _         dS )z°Extract font name, size and color from default appearance string (/DA object).

        Equivalent to 'pdf_parse_default_appearance' function in MuPDF's 'pdf-annot.c'.
        Nrß  r   rÞ  ÚTfr   r   r\   ÚgÚrgc                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©r~  ©r­   rÝ  s     r)   r¯   z$Widget._parse_da.<locals>.<listcomp>h$  ó   € Ð6Ð6Ð6 A•u˜Q‘x”xÐ6Ð6Ð6r*   r   )rò  r6   rþ  r~  rî  rï  r  )r(   rb  r  ro  Údatr®   rC   s          r)   r  zWidget._parse_daR$  se  € ð
 Œ}ð 	ØˆFØˆØˆØˆØŒm×!Ò!Ñ#Ô#ˆÝ  ‘~”~ð 	ð 	‰GˆAˆtØ�tŠ|ˆ|Ø˜1˜q™5”z ! " "”~�Ý˜c ! a¡%œjÑ)Ô)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{ˆ{Ý˜c ! a¡%œjÑ)Ô)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�tŠ|ˆ|Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØð ð ˆŒØ"ˆÔØˆŒØˆŒØˆr*   c                ón  — | j         j        s| j         j        rt          d¦  «        ‚| j        st          d¦  «        ‚| j        dk    rd| _        t          | j        ¦  «         t          | j        ¦  «         | j	        sd| _	        t          | j	        ¦  «         | j
        sd| _
        | j        sd| _        | j                             ¦   «         dd…         | _        | j        t          j        t          j        t          j        fv }| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d	¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d
¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|                      ¦   «          dS )z$Validate the class entries.
        zbad rectzfield name missingÚUnnamedNrÞ  r   r   zscript content must be a stringz$script_calc content must be a stringz&script_change content must be a stringz&script_format content must be a stringz&script_stroke content must be a stringz$script_blur content must be a stringz%script_focus content must be a string)r  re	  rd	  rÃ   rå  ræ  r  rÐ  rh  r  rá  rï  rà  rŠ	  rê  r�   ÚPDF_WIDGET_TYPE_BUTTONÚPDF_WIDGET_TYPE_CHECKBOXr  r¿
  rÈ   rá  rö  rõ  rô  ró  r÷  rø  r  )r(   Úbtn_types     r)   Ú	_validatezWidget._validateq$  sï  € ð ŒIÔ!ð 	)ØŒyÔ!ð	)õ ˜ZÑ(Ô(Ð(àŒð 	3ÝÐ1Ñ2Ô2Ð2àÔ˜yÒ(Ð(Ø#ˆDÔÝ�4Ô$Ñ%Ô%Ð%Ý�4”?Ñ#Ô#Ð#ØŒð 	(Ø'ˆDŒOÝ�4”?Ñ#Ô#Ð#àÔ ð 	"Ø !ˆDÔàÔ!ð 	#Ø!"ˆDÔà Ô-×3Ò3Ñ5Ô5°a¸°cÔ:ˆÔð ”?ÝÔ,ÝÔ.ÝÔ1ð'ð ˆð
 Œ{ð 	@ØˆDŒKˆKÝ�$”+ÑÔ¥cÐ)Ð)ÝÐ>Ñ?Ô?Ð?ð ð 	E˜4Ô+ð 	EØ#ˆDÔÐÝ�$Ô"Ñ#Ô#­3Ð.Ð.ÝÐCÑDÔDÐDàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	E˜4Ô+ð 	EØ#ˆDÔÐÝ�$Ô"Ñ#Ô#­3Ð.Ð.ÝÐCÑDÔDÐDàð 	F˜4Ô,ð 	FØ $ˆDÔÐÝ�$Ô#Ñ$Ô$­CÐ/Ð/ÝÐDÑEÔEÐEà�Š‰Œˆˆˆr*   c                óz  — | j         sdS | j        j        }|sJ ‚t          |¦  «        }t          j        || j         ¦  «        }t          j        |t          d¦  «        ¦  «        }|                     ¦   «         sdS |                     t          d¦  «        | j	        ¦  «         |                     t          d¦  «        ¦  «        }| 
                    ¦   «         st          d¦  «         dS t          |                     ¦   «         ¦  «        D ]¯}|                     |¦  «        }|                     ¦   «         sŒ,|                     ¦   «         }|| j         k    rŒL|                     t          d¦  «        ¦  «        }	|	                     ¦   «         dk    sŒ‡|                     t          d¦  «        | j	        ¦  «         Œ°dS )	a  Propagate the field flags.

        If this widget has a "/Parent", set its field flags and that of all
        its /Kids widgets to the value of the current widget.
        Only possible for widgets existing in the PDF.

        Returns True or False.
        Fr¨  rã   r‘  z0warning: malformed PDF, Parent has no Kids arrayr•  rI  T)r   rû   rÎ   r�   rš  r  r  rŠ  rY  rè  r™  rr   r\  r«  r¬  r  r‰  )
r(   r:  rj  Ú
pdf_widgetr¨  r“  r®   r”  r   r  s
             r)   Ú_sync_flagszWidget._sync_flags¸$  s¨  € ð Œyð 	Ø�5ØŒkÔ ˆØˆ
ˆ
ˆsÝ˜sÑ#Ô#ˆåÔ*¨3°´	Ñ:Ô:ˆ
ÝÔ# Jµ¸Ñ0BÔ0BÑCÔCˆØ×!Ò!Ñ#Ô#ð 	Ø�5ð 	×Ò¥¨¡¤°Ô0@ÑAÔAÐAð ×"Ò"¥8¨FÑ#3Ô#3Ñ4Ô4ˆØ× Ò Ñ"Ô"ð 	ÝÐFÑGÔGÐGØ�5å�t×)Ò)Ñ+Ô+Ñ,Ô,ð 	Cð 	CˆAà×$Ò$ QÑ'Ô'ˆCØ—?’?Ñ$Ô$ð ØØ—>’>Ñ#Ô#ˆDØ�t”yÒ Ð ØØ×&Ò&¥x°	Ñ':Ô':Ñ;Ô;ˆGØ×&Ò&Ñ(Ô(¨HÒ4Ð4Øà× Ò ¥¨$¡¤°Ô1AÑBÔBÐBÐBàˆtr*   c                ó&  — | j         dvrdS t          | d¦  «        r| j        j        }ndS | j        }dddœ}|                     |d¦  «        }|d         dk    rfg }|d         d	d
…         }|                     d¦  «        dd…         }|D ]/}|                     |                     ¦   «         d         ¦  «         Œ0||d<   |d         dk    r™g }t          |d                              d¦  «        d         ¦  «        }|                     |¦  «        }|                     d¦  «        dd…         }|D ]/}|                     |                     ¦   «         d         ¦  «         Œ0||d<   |                     |d¦  «        }	|	d         dk    rfg }
|	d         d	d
…         }	|	                     d¦  «        dd…         }|D ]/}|
                     |                     ¦   «         d         ¦  «         Œ0|
|d<   |	d         dk    r™g }
t          |	d                              d¦  «        d         ¦  «        }|                     |¦  «        }	|	                     d¦  «        dd…         }|D ]/}|
                     |                     ¦   «         d         ¦  «         Œ0|
|d<   |S )a	  Return the on/off state names for button widgets.

        A button may have 'normal' or 'pressed down' appearances. While the 'Off'
        state is usually called like this, the 'On' state is often given a name
        relating to the functional context.
        ©r   r   Nrû   )rX  r½  úAP/Nr   r5   r   r   ræ  rb  rX  r   r³   zAP/Dr½  )	rê  r;   rû   r   rû  r6   rk   r4   r’  )r(   r:  r   ÚstatesÚAPNÚnstatesÚapntr4  ÚnxrefÚAPDÚdstatesÚapdtÚdxrefs                r)   Úbutton_stateszWidget.button_stateså$  sš  € ð Œ? &Ð(Ð(Ø�4Ý�4˜Ñ"Ô"ð 	Ø”+Ô$ˆCˆCàˆFØŒyˆØ ¨$Ð/Ð/ˆØ×Ò˜t VÑ,Ô,ˆØˆqŒ6�VÒÐØˆGØ�a”&˜˜2˜”,ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø&ˆF�8ÑØˆqŒ6�VÒÐØˆGÝ˜˜AœŸš SÑ)Ô)¨!Ô,Ñ-Ô-ˆEØ—/’/ %Ñ(Ô(ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø&ˆF�8ÑØ×Ò˜t VÑ,Ô,ˆØˆqŒ6�VÒÐØˆGØ�a”&˜˜2˜”,ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø$ˆF�6‰NØˆqŒ6�VÒÐØˆGÝ˜˜AœŸš SÑ)Ô)¨!Ô,Ñ-Ô-ˆEØ—/’/ %Ñ(Ô(ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø$ˆF�6‰NØˆr*   c                ó   — | j         j        S r,   )Ú_annotrL  r.   s    r)   rL  zWidget.next%  s   € àŒ{ÔÐr*   c                óÞ   — | j         dvrdS |                      ¦   «         }|€t          ¦   «         }|                     ¦   «         D ]}||         D ]}|dk    r|c c S ŒŒt	          d¦  «         dS )a�  Return the "On" value for button widgets.
        
        This is useful for radio buttons mainly. Checkboxes will always return
        "Yes". Radio buttons will return the string that is unequal to "Off"
        as returned by method button_states().
        If the radio button is new / being created, it does not yet have an
        "On" value. In this case, a warning is shown and True is returned.
        r  Nr  z(warning: radio button has no 'On' value.T)rê  r&  r5   rÕ  rr   )r(   Úbstaterª  rF   s       r)   Úon_statezWidget.on_state%  s•   € ð Œ? &Ð(Ð(Ø�4Ø×#Ò#Ñ%Ô%ˆØˆ>Ý‘V”VˆFØ—’‘”ð 	ð 	ˆAØ˜A”Yð ð �Ø˜’:�:Ø�H�H�H�H�Hð ðõ 	Ð:Ñ;Ô;Ð;Øˆtr*   c                óD   — t                                | j        ¦  «         dS )z.Reset the field value to its default.
        N)r  Ú_reset_widgetr(  r.   s    r)   rn	  zWidget.reset/%  s    € õ 	×Ò˜DœKÑ(Ô(Ð(Ð(Ð(r*   Fc                óö  — |                       ¦   «          |                      ¦   «          d| _        t          | j        ¦  «        dk    rd| j        z   }nEt          | j        ¦  «        dk    rd| j        z   }n"t          | j        ¦  «        dk    r
d| j        z   } |j        | j        | j        | j        dœŽ| _        t           	                    | j
        | ¦  «         d| _        |r|                      ¦   «          d	S d	S )
z!Reflect Python object in the PDF.r\   r   ú!{:g} {:g} {:g} rg /{f:s} {s:g} Tfr   z{:g} g /{f:s} {s:g} TfrZ  z%{:g} {:g} {:g} {:g} k /{f:s} {s:g} Tf©rÝ  r�  N)r  rÿ  rò  r7   r  rÐ  rî  rï  r  Ú_save_widgetr(  r  )r(   Ú
sync_flagsr±   s      r)   r  zWidget.update4%  s  € à�ŠÑÔÐà×ÒÑÔÐð ˆŒÝ�”Ñ!Ô! QÒ&Ð&Ø5¸¼ÑEˆCˆCÝ�”Ñ!Ô! QÒ&Ð&Ø*¨T¬]Ñ:ˆCˆCÝ�”Ñ!Ô! QÒ&Ð&Ø9¸D¼MÑIˆCØ"˜œ
 D¤O°t´~Ø&*Ô&8ð:ð :ð :ˆŒõ 	×Ò˜4œ;¨Ñ-Ô-Ð-ØˆŒØð 	Ø×ÒÑÔÐÐÐð	ð 	r*   NrÐ  )r/   r0   r1   rµ  rŒ   rþ   rÿ  r  r  r  r  r&  rB  rL  r+  rn	  r  r-   r*   r)   rI  rI  $  sí   € € € € € ðð ð#ð #ð #ðJTð Tð Tðð ð ð=ð =ð =ð*ð ð ð>Eð Eð EðN+ð +ð +ðZ/ð /ð /ðb ð ð  ñ „Xð ðð ð ð*)ð )ð )ð
ð ð ð ð ð r*   rI  )Ú_extrac                  óü   — e Zd Zd„ Ze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dgZdS )rb  c                ó   — || _         d S r,   )rÄ   ©r(   rè  s     r)   rŒ   zOutline.__init__Q%  s   € ØˆŒ	ˆ	ˆ	r*   c                ó$   — t          | dd¦  «        S )zoutline destination detailsN©r:  r.   s    r)   rõ  zOutline.destT%  s   € õ ˜˜d DÑ)Ô)Ð)r*   c                ó$   — t          | d|¦  «        S )zo
        Like `dest` property but uses `document` to resolve destinations for
        kind=LINK_NAMED.
        Nr8  )r(   rÉ   s     r)   ÚdestinationzOutline.destinationY%  s   € õ
 ˜˜d HÑ-Ô-Ð-r*   c                óh   — | j         }|                     ¦   «         }|j        sd S t          |¦  «        S r,   )rÄ   r½  rÌ   rb  )r(   rè  Údown_ols      r)   r½  zOutline.down`%  ó4   € àŒYˆØ—'’'‘)”)ˆØÔ!ð 	ØˆFÝ�wÑÔÐr*   c                óª   — t           rt          j        | j        ¦  «        S | j        }|j        sdS |j        j        }|€dS t          j        |¦  «        S rÉ  )r'  r3  ÚOutline_is_externalrÄ   rÌ   rl  r�   r>  )r(   rè  rl  s      r)   rº  zOutline.is_externalh%  sZ   € åð 	:õ Ô-¨t¬yÑ9Ô9Ð9ØŒYˆØŒ}ð 	Ø�5ØŒmÔˆØˆ;Ø�5ÝÔ(¨Ñ-Ô-Ð-r*   c                ó&   — 	 | j         j        j        S r,   )rÄ   rÌ   r3  r.   s    r)   r3  zOutline.is_openw%  s   € ð	0Ø”9Ô'Ô/Ð/r*   c                óh   — | j         }|                     ¦   «         }|j        sd S t          |¦  «        S r,   )rÄ   rL  rÌ   rb  )r(   rè  Únext_ols      r)   rL  zOutline.next}%  r=  r*   c                ó0   — 	 | j         j        j        j        S r,   )rÄ   rÌ   rÖ   r.   s    r)   rÖ   zOutline.page…%  s   € ð	2Ø”9Ô'Ô,Ô1Ð1r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   rˆ  r.   s    r)   rˆ  zOutline.title‹%  s   € àŒyÔ#Ô)Ð)r*   c                ó:   — | j         }|j        sd S |j        j        S r,   )rÄ   rÌ   rl  r6  s     r)   rl  zOutline.uri�%  s#   € àŒYˆØŒ}ð 	Ø�4ØŒ}Ô Ð r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r4  r.   s    r)   r4  z	Outline.x–%  ó   € àŒyÔ#Ô%Ð%r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r5  r.   s    r)   r5  z	Outline.yš%  rG  r*   rÄ   N)r/   r0   r1   rŒ   rB  rõ  r:  r½  rº  r3  rL  rÖ   rˆ  rl  r4  r5  rš
  r-   r*   r)   rb  rb  O%  sC  € € € € € ðð ð ð ð*ð *ñ „Xð*ð.ð .ð .ð ð ð  ñ „Xð ð ð.ð .ñ „Xð.ð ð#ð #ñ „Xð#ð
 ð ð  ñ „Xð ð ð%ð %ñ „Xð%ð
 ð*ð *ñ „Xð*ð ð!ð !ñ „Xð!ð ð&ð &ñ „Xð&ð ð&ð &ñ „Xð&ð �	€I€I€Ir*   rb  c                ór  ‡— t          j        ¦   «         }| |_        ||_        ||_        ||_        |r„‰rt          ‰t           j        ¦  «        sJ ‚nt          j        ¦   «         Š G ˆfd„dt           j        ¦  «        } |¦   «         }| 	                    | 
                    ¦   «         ¦  «         ||_        |S )z4
    Returns a mupdf.PdfFilterOptions instance.
    c                  ó(   •‡ — e Zd Zˆ ˆfd„Zd„ Zˆ xZS )ú'_make_PdfFilterOptions.<locals>.Factoryc                ó~   •— t          ¦   «                              ¦   «          |                      ¦   «          ‰| _        d S r,   )rÇ   rŒ   Úuse_virtual_filterÚsopts)r(   Ú	__class__rN  s    €€r)   rŒ   z0_make_PdfFilterOptions.<locals>.Factory.__init__Á%  s6   ø€ Ý‘”× Ò Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)Ð)Ø"�”
�
�
r*   c           	     ód   — 	 t          j        |||||| j                             ¦   «         ¦  «        S r,   )r'   rN  r  r�   Úll_pdf_new_sanitize_filter)r(   Úctxr:  ÚchainÚstruct_parentsÚ	transformr  s          r)   Úfilterz._make_PdfFilterOptions.<locals>.Factory.filterÅ%  s>   € ð	9õ Ô7ØØØ&Ø!ØØœ
×+Ò+Ñ-Ô-ñô ð r*   )r/   r0   r1   rŒ   rV  Ú__classcell__)rO  rN  s   @€r)   ÚFactoryrK  À%  sM   øø€ € € € € ð#ð #ð #ð #ð #ð #ðð ð ð ð ð ð r*   rX  )r�   ÚPdfFilterOptionsrš  r›  rœ  Ú	no_updater>   ÚPdfSanitizeFilterOptionsÚPdfFilterFactory2Úadd_factoryr  Ú_factory)	rš  r›  rœ  rZ  r�  rN  r¡  rX  Úfactorys	        `   r)   rŸ  rŸ  ¡%  sÞ   ø€ õ Ô$Ñ&Ô&€GØ€G„OØ+€GÔØ€G„Mà!€GÔØð (#ð ð 	5Ý˜e¥UÔ%CÑDÔDÐDÐDÐDÐDåÔ2Ñ4Ô4ˆEð	ð 	ð 	ð 	ð 	ð 	ð 	•eÔ-ñ 	ô 	ð 	ð2 �'‘)”)ˆØ×Ò˜G×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ø"ˆÔØ€Nr*   c                  óè  — e Zd Zd„ Zd„ Zd„ Zd„ Z�dd„Zddddddddej	        d	ddd
dfd„Z
d„ Zd„ Zd„ Z�dd„Zd„ Zdƒd„Z�dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z�dd „Zd!„ Z�dd"„Z	 	 	 �dd$„Zd%„ Zd&„ Z �dd'„Z!d(„ Z"�dd*„Z#d+„ Z$�dd,„Z%d-„ Z&d.„ Z'�dd/„Z(�dd3„Z)�d d6„Z*	 	 	 �d�d!d>„Z+ddddddddej	        d	ddd
dd?œ�d"dP„Z,	 	 �d#�d$dQ„Z-�d%dT„Z.�d&dW„Z/�d'dY„Z0�d'dZ„Z1�d d[„Z2	 	 	 	 	 	 	 �d(�d)d_„Z3	 	 	 	 �d#�d$d`„Z4dƒ�d da„Z5�d#�d$db„Z6�d*�d+dd„Z7�d#�d$de„Z8�d,dh„Z9di„ Z:dj„ Z;�ddk„Z<	 	 	 �d-�d.dq„Z=�d/dr„Z>ds„ Z?dt„ Z@eAdu„ ¦   «         ZBeAdv„ ¦   «         ZCdw„ ZD�d/dx„ZEeAdy„ ¦   «         ZFeAdz„ ¦   «         ZGd{„ ZHd|„ ZI�d0d~„ZJd„ ZK�d1d€„ZLeA�d2d‚„¦   «         ZM	 	 	 	 	 	 	 	 	 	 	 	 �d3�d4d�„ZN	 	 	 	 	 	 	 	 	 	 	 �d5�d6d“„ZO	 	 	 	 	 	 	 	 	 	 	 	 �d3�d7d”„ZP	 	 	 	 	 	 	 	 	 	 �d8�d9d•„ZQ	 	 	 	 	 	 	 	 	 	 	 �d5�d:d—„ZR	 	 	 	 	 	 	 	 	 	 	 	 �d;�d<d˜„ZS	 	 	 	 	 	 	 	 	 	 	 �d=�d>d›„ZT	 	 	 	 	 	 	 	 	 	 	 	 �d?�d@dœ„ZU	 	 	 	 	 	 	 	 	 	 	 	 	 �dA�dBdŸ„ZV	 	 	 	 	 	 	 	 	 	 	 �dC�dDd¡„ZW	 	 	 	 	 	 	 	 	 	 	 �dC�dDd¢„ZX�dEd£„ZYd¤„ ZZeAd¥„ ¦   «         Z[eAd¦„ ¦   «         Z\eAd§„ ¦   «         Z]�dd¨„Z^�dd©„Z_dª„ Z`�d/d«„Za�dF�dGd­„Zb	 	 �dH�dId°„Zc�dF�dJd±„Zdd²„ Ze�dJd³„Zfegdddd
d)d´œ�dKd½„Zhd¾„ Zi	 	 �dL�dMdÃ„Zj�dFdÄ„ZkdƒdÅ„Zl�dFdÆ„Zm�dNdÇ„Zn�dOdÈ„Zo	 �d�dPdÉ„ZpdÊ„ ZqdË„ ZrdÌ„ ZsdÍ„ ZtdÎ„ Zu�d�dQdÑ„ZvdÒ„ ZwdÓ„ Zx	 	 �dRdÕ„Zydddddd	d)d)d
dÖœ	�dSdØ„Zzd#ddd)ddd)ddddddÙœdÚ„Z{�d�dTdß„Z|dddÔddddddàd	dddd)d	d	ddáœ�dUdê„Z}ddàddd	d	dddÔddd	ddd)dddd	dëœ�dVdî„Z~eAdï„ ¦   «         ZeAdð„ ¦   «         Z€�ddñ„Z��dWdô„Z‚dõ„ Zƒdö„ Z„eAd÷„ ¦   «         Z…eAdø„ ¦   «         Z†dù„ Z‡dú„ Zˆdû„ Z‰ddddüœ�d0dý„ZŠeAdþ„ ¦   «         Z‹eA�d2dÿ„¦   «         ZŒ�d „ Z�dd
dd�dœ�dN�d„ZŽ�d„ Z��d„ Z��d„ Z‘�d„ Z’�d�d„Z“�d„ Z”�d	„ Z•�d
„ Z–	 	 	 	 	 	 �dX�dY�d„Z—eA�d„ ¦   «         Z˜eA�d„ ¦   «         Z™�dZ�d„Zš�d�d„Z›�d„ Zœ	 	 	 	 	 	 	 	 �d[�d\�d„Z�eA�d„ ¦   «         Zž eAeD�d�¬¦  «        ZŸdZ dS (]  rÒ   c                ó~  — t          |t          j        t          j        f¦  «        sJ d|› �¦   «         ‚|| _        d| _        d | _        d| _        t          ¦   «         | _	        || _
        |j        rEt          |t          j        ¦  «        r|j        j        j        | _        d S |j        j        | _        d S d | _        d S )Nz	page is: Tr\   )r>   r�   rÔ   rÓ   rÄ   r  Ú
last_pointÚ	draw_contr5   rG  rû   rÌ   rÇ   rh  )r(   rÖ   rÉ   s      r)   rŒ   zPage.__init__á%  s­   € Ý˜$¥¤­u¬}Ð =Ñ>Ô>ÐRÐRÐ@RÈDÐ@RÐ@RÑRÔRÐ>ØˆŒ	ØˆŒØˆŒØˆŒÝ™6œ6ˆÔØˆŒØŒ?ð 	Ý˜4¥¤Ñ/Ô/ð 5Ø"œoÔ3Ô:�”��à"œoÔ4�”��àˆDŒKˆKˆKr*   c                ó*   — |                       ¦   «         S r,   )r   r.   s    r)   rþ   zPage.__repr__ñ%  s   € Ø�|Š|‰~Œ~Ðr*   c                óB  — t          | dd ¦  «        }t          | j        j        t          j        ¦  «        r| j        j        j        j        }n| j        j        j        }|r:| j        j	        }| j        j
        �d}|dk    rd}d|› d|› d| j        j        d›d	�}nd|› �}|S )
Nrû   rX  r\   znew PDFr  z of <z, doc# r  ú>)rý   r>   rÄ   rÌ   r�   Úpdf_pagerÇ   rh  rû   r   r	   r(  )r(   rû   rh  r4  rG   s        r)   r   zPage.__str__ô%  s·   € å˜˜x¨Ñ.Ô.ˆÝ�d”iÔ*­E¬NÑ;Ô;ð 	1Ø”YÔ)Ô/Ô6ˆFˆFà”YÔ)Ô0ˆFàð 	#Ø”Ô ˆAØŒ{Ô!Ð-Ø�Ø�BŠwˆwØ�ØK˜&ÐKÐK qÐKÐK°´Ô1FÐKÐKÐKÐKˆCˆCà"˜&Ð"Ð"ˆCØˆ
r*   c                ó  — t           r(t          j        | j        t	          |¦  «        ¦  «        }nÜ|                      ¦   «         }t          j        |t          j        ¦  «        }|rƒt	          |¦  «        }t          j	        |¦  «        }t          j
        |j        |j        |j        |j        z   |j        z
  |j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        |¦  «         t'          |d¦  «         |S ©Nr  )r'  r   Ú_add_caret_annotrÄ   ÚJM_point_from_pyÚ	_pdf_pager�   Úpdf_create_annotrS  Úpdf_annot_rectrx  r4  r5  r  r  r  r  rÀ  r`  ÚJM_add_annot_id)r(   r9  rß   rÖ   r²  r.  s         r)   rj  zPage._add_caret_annot&  sâ   € Ýð 	(ÝÔ*¨D¬IÕ7GÈÑ7NÔ7NÑOÔOˆEˆEà—>’>Ñ#Ô#ˆDÝÔ*¨4µÔ1FÑGÔGˆEØð 3Ý$ UÑ+Ô+�ÝÔ(¨Ñ/Ô/�Ý”L ¤ a¤c¨1¬3°´©:¸¼Ñ+<¸a¼cÀAÄD¹jÈ1Ì4Ñ>OÑPÔP�ÝÔ(¨°Ñ2Ô2Ð2ÝÔ" 5Ñ)Ô)Ð)Ý˜E 3Ñ'Ô'Ð'Øˆr*   Nc                ó$  — |                       ¦   «         }|r|n|}|r|n|}	t          |¦  «        }
t          |¦  «        }|j        st	          t
          ¦  «        ‚t          j        |t          j        ¦  «        }t          j	        |¦  «        }t          j
        |
j        |
j        |
j        |j        z   |j        z
  |
j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        }t          j        ||¦  «         |rt          j        ||¦  «         t+          |                     ¦   «         ||||	d¦  «        }t          j        t          j        |¦  «        t3          d¦  «        |¦  «         t          j        t          j        |¦  «        t3          d¦  «        |¦  «         t          j        |¦  «         t          j        ||¦  «         t          j        ||¦  «         t9          |d¦  «         t;          |¦  «        S )Nr   rµ  r"  r  )rl  rk  r7  rÌ   r¾  r8  r�   rm  rU  rn  Úfz_make_rectr4  r5  r  r  r  r  rÀ  ÚPDF_ANNOT_IS_PRINTr„  Úpdf_set_annot_icon_namerÿ  r:  r^  r  r  r�  r`  ro  ró   )r(   r9  r=  rf   r&  rÉ  ÚiconrÖ   Úufr  r²  Úfilebufrß   r.  rÎ  r"  s                   r)   Ú_add_file_annotzPage._add_file_annot&  sÇ  € Ø�~Š~ÑÔˆØ#Ð1ˆYˆY¨ˆØÐ&ˆDˆD˜hˆÝ˜UÑ#Ô#ˆÝ$ WÑ-Ô-ˆØÔ!ð 	-Ý�^Ñ,Ô,Ð,ÝÔ& t­UÔ-LÑMÔMˆÝÔ  Ñ'Ô'ˆÝÔ˜qœs A¤C¨¬¨q¬t©°a´dÑ):¸A¼CÀ!Ä$¹JÈÌÑ<MÑNÔNˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ(ˆÝÔ! %¨Ñ/Ô/Ð/àð 	7ÝÔ)¨%°Ñ6Ô6Ð6å˜DŸHšH™JœJ¨°¸2¸qÀ!ÑDÔDˆÝÔ�5Ô.¨uÑ5Ô5µxÀ±~´~ÀsÑKÔKÐKÝÔ&¥uÔ':¸5Ñ'AÔ'AÅ8ÈJÑCWÔCWÐYaÑbÔbÐbÝÔ˜uÑ%Ô%Ð%ÝÔ  ¨Ñ*Ô*Ð*ÝÔ! %¨Ñ/Ô/Ð/Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   r  r   r   Fc                óÆ  — d|› �}|                       ¦   «         }|r|st          d¦  «        ‚|r|s|}t          |¦  «        \  }}t          |¦  «        \  }}t          |¦  «        }t	          j        |¦  «        st	          j        |¦  «        rt          t          ¦  «        ‚t	          j        |t          j	        ¦  «        }t	          j
        |¦  «        }|st	          j        ||¦  «         nHt	          j        |t          d¦  «        |¦  «         |r#t	          j        |t          d¦  «        |¦  «         t	          j        ||¦  «         |dk     r|dz  }|dk     °|dk    r|dz  }|dk    °|dk    r#t	          j        |t          d¦  «        |¦  «         t	          j        ||¦  «         |dk    rt	          j        ||d |…         ¦  «         t	          j        ||¦  «         t	          j        ||¦  «         |	r'|	D ]$}t	          j        |t+          |¦  «        ¦  «         Œ%|
rwt	          j        |t          d¦  «        t          d	¦  «        ¦  «         t	          j        ||¦  «         t1          |
¦  «        }t3          j        |t7          |
¦  «        |¦  «         |st9          |||||¦  «         t	          j        |¦  «         t=          |d
¦  «         t?          |¦  «        }|S )Nzï<?xml version="1.0"?>
            <body xmlns="http://www.w3.org/1999/xtml"
            xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
            xfa:contentType="text/html" xfa:APIVersion="Acrobat:8.0.0" xfa:spec="2.4">
            rÔ  rÓ  rì   r   rÃ  rD  rÈ  ÚFreeTextCalloutr  ) rl  rÃ   rK  r  r�   r¾  r½  r¿  rm  rT  r  r�  r�  r  rÀ  rY  Úpdf_set_annot_quaddingrZ  Úpdf_set_annot_border_widthr°  Úpdf_add_annot_border_dash_itemr~  r^  Úpdf_set_annot_callout_styler7   r   ÚJM_set_annot_callout_linerµ   ré  r`  ro  ró   )r(   r  r   r
  r	  r  rh  rÐ  rá  rn  ÚcalloutÚline_endrf  r!  ri  Úrichtextrm  r    rÖ   rl  rm  Úntcolr  r.  rß   r0  r  Úpoint_countr"  s                                r)   Ú_add_freetext_annotzPage._add_freetext_annot1&  s  € ð$ð ð	ð ˆð
 �~Š~ÑÔˆØð 	N ð 	NÝÐLÑMÔMÐMØð 	& 
ð 	&Ø%ˆJÝ+¨JÑ7Ô7‰ˆˆtÝ+¨JÑ7Ô7‰ˆˆtÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	,­5Ô+AÀ!Ñ+DÔ+Dð 	,Ý�lÑ+Ô+Ð+ÝÔ& t­UÔ-FÑGÔGˆÝÔ'¨Ñ.Ô.ˆ	ð ð 	PÝÔ(¨°Ñ5Ô5Ð5Ð5åÔ*¨9µX¸d±^´^ÀRÑHÔHÐHØð PÝÔ.¨y½À$¹¼ÈÑOÔOÐOåÔ  ¨Ñ*Ô*Ð*à�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜Šmˆmà�QŠ;ˆ;ÝÔ" 9­h°xÑ.@Ô.@À&ÑIÔIÐIåÔ$ U¨EÑ2Ô2Ð2à�1Š9ˆ9ÝÔ% e¨T°&°5°&¬\Ñ:Ô:Ð:åÔ(¨°Ñ=Ô=Ð=ÝÔ# E¨7Ñ3Ô3Ð3Øð 	FØð Fð F�ÝÔ4°U½EÀ!¹H¼HÑEÔEÐEÐEð ð 	PÝÔ˜y­(°4©.¬.½(ÐCTÑ:UÔ:UÑVÔVÐVÝÔ-¨e°XÑ>Ô>Ð>Ý˜g™,œ,ˆKÝÔ+¨Eµ5¸±>´>À;ÑOÔOÐOð ð 	EÝ˜U E¨4°¸8ÑDÔDÐDåÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�E‰lŒlˆØˆ
r*   c                ó¨  — t          | j        ¦  «        }t          |¦  «        st          t          ¦  «        ‚t          j        ¦   «         }t          j        |t          j        d¦  «        |¦  «         t          j	        |¦  «        }t          j
        |t
          j        ¦  «        }t          j        |¦  «        }t          |¦  «        }t          j        |                     ¦   «         |¦  «        }t!          |¦  «        D ]þ}	||	         }
t          |
¦  «        }t          j        |                     ¦   «         d|z  ¦  «        }t!          |¦  «        D ]–}|
|         }t          |¦  «        rt#          |¦  «        dk    rt          t          ¦  «        ‚t          j        t'          |¦  «        |¦  «        }t          j        ||j        ¦  «         t          j        ||j        ¦  «         Œ—t          j        ||¦  «         Œÿt          j        |t3          d¦  «        |¦  «         t          j        |¦  «         t7          |d¦  «         t9          |¦  «        S )Nr   r   r.  r  )rÚ   rÄ   ÚPySequence_CheckrÃ   ÚMSG_BAD_ARG_INK_ANNOTr�   r‚  r/  rx  r~  rm  rV  r  r7   r[  r:  r\  ÚPySequence_Sizer3  rk  r]  r4  r5  r›  r^  r  r`  ro  ró   )r(   r´   rÖ   rî  Úinv_ctmrß   r0  Ún0Úinklistr‘  ÚsublistÚn1rw  r®   r²  r9  s                   r)   Ú_add_ink_annotzPage._add_ink_annot�&  sò  € Ý˜DœIÑ&Ô&ˆÝ Ñ%Ô%ð 	5ÝÕ3Ñ4Ô4Ð4ÝŒnÑÔˆÝÔ  ¥u¤|°A¡¤¸Ñ<Ô<Ð<ÝÔ(¨Ñ-Ô-ˆÝÔ& t­UÔ-@ÑAÔAˆÝÔ'¨Ñ.Ô.ˆ	Ý�‰YŒYˆÝÔ% d§h¢h¡j¤j°"Ñ5Ô5ˆå�r‘”ð 	2ð 	2ˆAØ˜1”gˆGÝ�W‘”ˆBÝÔ(¨¯ª©¬°Q¸±VÑ<Ô<ˆFå˜2‘Y”Yð ;ð ;�Ø˜A”J�Ý'¨Ñ*Ô*ð =­o¸aÑ.@Ô.@ÀAÒ.EÐ.EÝ$Õ&;Ñ<Ô<Ð<ÝÔ0Õ1AÀ!Ñ1DÔ1DÀgÑNÔN�ÝÔ)¨&°%´'Ñ:Ô:Ð:ÝÔ)¨&°%´'Ñ:Ô:Ð:Ð:åÔ  ¨&Ñ1Ô1Ð1Ð1åÔ˜9¥h¨yÑ&9Ô&9¸7ÑCÔCÐCÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                óH  — |                       ¦   «         }t          j        |t          j        ¦  «        }t	          |¦  «        }t	          |¦  «        }t          j        |||¦  «         t          j        |¦  «         t          |d¦  «         |j        sJ ‚t          |¦  «        S ri  )
rl  r�   rm  rN  rk  Úpdf_set_annot_liner`  ro  rÌ   ró   )r(   r  r  rÖ   rß   r!   rÜ
  s          r)   Ú_add_line_annotzPage._add_line_annot¡&  s‘   € Ø�~Š~ÑÔˆÝÔ& t­UÔ-AÑBÔBˆÝ˜RÑ Ô ˆÝ˜RÑ Ô ˆÝÔ  ¨¨1Ñ-Ô-Ð-ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ØÔÐÐÐÝ�U‰|Œ|Ðr*   c                ó¨  — |                       ¦   «         }t          |¦  «        dk     rt          t          ¦  «        ‚t	          j        ||¦  «        }|D ]M}t          |¦  «        dk    rt          t          ¦  «        ‚t          |¦  «        }t	          j        ||¦  «         ŒNt	          j	        |¦  «         t          |d¦  «         t          |¦  «        S )Nr   r  )rl  r7   rÃ   ÚMSG_BAD_ARG_POINTSr�   rm  rˆ  rk  Úpdf_add_annot_vertexr`  ro  ró   )r(   r  r   rÖ   rß   r²  r9  s          r)   Ú_add_multilinezPage._add_multiline¬&  sÂ   € Ø�~Š~ÑÔˆÝˆv‰;Œ;˜Š?ˆ?ÝÕ0Ñ1Ô1Ð1ÝÔ& t¨ZÑ8Ô8ˆØð 	5ð 	5ˆAÝ Ñ"Ô" aÒ'Ð'Ý Õ"4Ñ5Ô5Ð5Ý$ QÑ'Ô'ˆEÝÔ& u¨eÑ4Ô4Ð4Ð4åÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                ó2  — |                       ¦   «         }g d¢}d}	t          j        |t          j        ¦  «        }
t	          |¦  «        }t          j        |¦  «        }t          j        |
|¦  «         |r›t          |¦  «        \  }	}t          j        | 	                    ¦   «         |	¦  «        }t          |	¦  «        D ]}t          j        |||         ¦  «         Œt          j        t          j        |
¦  «        t          d¦  «        |¦  «         |r¨|sJ ‚t          j        t          j        |
¦  «        dt          j        |¦  «        ¦  «         t          j        t          j        |
¦  «        t          d¦  «        |¦  «         t          j        t          j        |
¦  «        t          d¦  «        |¦  «         t          j        |
¦  «         t)          |
d¦  «         t          j        |
j        ¦  «        }
t          j        |
¦  «        }
t1          |
¦  «        S )N)r   r   r   r   r   rC  r  rä   rë   r  )rl  r�   rm  r  ÚJM_quad_from_pyÚfz_rect_from_quadrÀ  rK  r[  r:  r\  r]  r^  r  r  r�  r‘  r�  rY  r`  ro  Úll_pdf_keep_annotrÌ   rõ   ró   )r(   r  r   Úda_strr!  r  r  rÖ   rm  rl  rß   Úqr.  r[  r®   s                  r)   Ú_add_redact_annotzPage._add_redact_annot»&  sÒ  € Ø�~Š~ÑÔˆØˆ}ˆ}ˆØˆÝÔ& t­UÔ-CÑDÔDˆÝ˜DÑ!Ô!ˆÝÔ# AÑ&Ô&ˆåÔ  ¨Ñ*Ô*Ð*Øð 	PÝ/°Ñ5Ô5‰KˆE�4ÝÔ% d§h¢h¡j¤j°%Ñ8Ô8ˆCÝ˜5‘\”\ð 8ð 8�ÝÔ)¨#¨t°A¬wÑ7Ô7Ð7Ð7ÝÔ�uÔ2°5Ñ9Ô9½8ÀD¹>¼>È3ÑOÔOÐOØð 	UØˆMˆM�6ÝÔÝÔ'¨Ñ.Ô.Ø!ÝÔ-¨dÑ3Ô3ñô ð õ
 Ô*­5Ô+>¸uÑ+EÔ+EÅxÐPTÁ~Ä~ÐW]Ñ^Ô^Ð^ÝÔ"¥5Ô#6°uÑ#=Ô#=½xÈ¹}¼}ÈeÑTÔTÐTÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ÝÔ'¨Ô(8Ñ9Ô9ˆÝ” Ñ&Ô&ˆÝ�U‰|Œ|Ðr*   c                óŒ  — |                       ¦   «         }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚t          j        ||¦  «        }t          j        ||¦  «         t          j	        |¦  «         t          |d¦  «         |j        sJ ‚t          |¦  «        S ri  )rl  r  r�   r¾  r½  rÃ   r¿  rm  rÀ  r`  ro  rÌ   ró   )r(   r  r   rÖ   r.  rß   s         r)   Ú_add_square_or_circlezPage._add_square_or_circleÙ&  s²   € Ø�~Š~ÑÔˆÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	,­5Ô+AÀ!Ñ+DÔ+Dð 	,Ý�lÑ+Ô+Ð+ÝÔ& t¨ZÑ8Ô8ˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ØÔÐÐÐÝ�U‰|Œ|Ðr*   c                óÖ  — t          |¦  «        }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚|                      ¦   «         }g d¢}t          |¦  «        }d }d }|t          |¦  «        v r	||         }n¼t          |t          ¦  «        r|                     ¦   «         }n’t          |t          ¦  «        r't          j        |¦  «                             ¦   «         }nVt          |t"          t$          f¦  «        r|}n7t          |t&          j        ¦  «        r|                     ¦   «         }n|d         }t          j        |t          j        ¦  «        }	|�rNt          j        |¦  «        }
t          j        |
¦  «        }|                     ¦   «         |                     ¦   «         }}t9          |j        |z  |j        |z  ¦  «        }||z  }||z  }|j        |j         z   dz  }|j!        |dz  z
  }|j"        |dz  z
  }||z   }||z   }t          j#        ||||¦  «        }t          j$        |	|¦  «         t          j%        |	|¦  «         t          j&        t          j'        |	¦  «        tQ          d¦  «        t          j)        d¦  «        ¦  «         t          j*        |	d¦  «         nlt          j$        |	|¦  «         t          j&        t          j'        |	¦  «        tQ          d¦  «        tQ          |¦  «        ¦  «         t          j*        |	|¦  «         t          j+        |	¦  «         tY          |	d¦  «         t[          |	¦  «        S )N)ÚApprovedÚAsIsÚConfidentialÚDepartmentalÚExperimentalÚExpiredÚFinalÚ
ForCommentÚForPublicReleaseÚNotApprovedÚNotForPublicReleaseÚSoldÚ	TopSecretÚDraftr   r   r  Ú
ImageStampzImage Stampr  ).r4  r  r�   r¾  r½  rÃ   r¿  rl  r7   r\  r>   rç  rÙ  rá  rx  ry  Ú
read_bytesr)  rh  r9   ri  r�  rm  rW  rœ  Úfz_new_image_from_bufferr   rÑ  rç  rl  rà  rû  rü  r4  r5  rq  rÀ  Úpdf_set_annot_stamp_imager^  r  r  r?  r�  r`  ro  ró   )r(   r  Ústampr.  rÖ   Ústamp_idrE   rÐ  r   rß   Úfzbuffrß  r   rÑ  Úscalerl  rà  rH  r  r  r  r  s                         r)   Ú_add_stamp_annotzPage._add_stamp_annotå&  s  € Ý�D‰zŒzˆÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	+­5Ô+AÀ!Ñ+DÔ+Dð 	+Ý�\Ñ*Ô*Ð*Ø�~Š~ÑÔˆðð ð ˆõ  �‰MŒMˆØˆØˆØ•E˜!‘H”HÐÐØ˜E”?ˆDˆDÝ˜�vÑ&Ô&ð 		Ø—-’-‘/”/ˆCˆCÝ˜�sÑ#Ô#ð 	Ý”,˜uÑ%Ô%×0Ò0Ñ2Ô2ˆCˆCÝ˜¥¥yÐ1Ñ2Ô2ð 	ØˆCˆCÝ˜�rœzÑ*Ô*ð 	Ø—.’.Ñ"Ô"ˆCˆCà˜A”;ˆDåÔ& t­UÔ-BÑCÔCˆØñ 	6ÝÔ9¸#Ñ>Ô>ˆFÝÔ0°Ñ8Ô8ˆCð —5’5‘7”7˜CŸEšE™GœGˆqˆAÝ˜œ
 Q™¨¬°a©Ñ8Ô8ˆEØ˜‘IˆEØ˜‘YˆFð ”g ¤Ñ'¨1Ñ,ˆFØ”˜E A™IÑ%ˆBØ”˜F Q™JÑ&ˆBØ�e‘ˆBØ�f‘ˆBÝÔ" 2 r¨2¨rÑ2Ô2ˆAÝÔ$ U¨AÑ.Ô.Ð.ÝÔ+¨E°3Ñ7Ô7Ð7ÝÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÍUÔM_Ð`lÑMmÔMmÑnÔnÐnÝÔ(¨°Ñ>Ô>Ð>Ð>åÔ$ U¨AÑ.Ô.Ð.ÝÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÍXÐVZÉ^Ì^Ñ\Ô\Ð\ÝÔ(¨°Ñ5Ô5Ð5ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                ó,  — |                       ¦   «         }t          |¦  «        }t          j        |t          j        ¦  «        }t          j        |¦  «        }t          j        |j        |j        |j        |j	        z   |j
        z
  |j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        ||¦  «         |rt          j        ||¦  «         t          j        |¦  «         t#          |d¦  «         t%          |¦  «        S ri  )rl  rk  r�   rm  rX  rn  rq  r4  r5  r  r  r  r  rÀ  r�  rs  r`  ro  ró   )r(   r9  r   rt  rÖ   r²  rß   r.  s           r)   Ú_add_text_annotzPage._add_text_annot)'  sé   € Ø�~Š~ÑÔˆÝ˜eÑ$Ô$ˆÝÔ& t­UÔ-AÑBÔBˆÝÔ  Ñ'Ô'ˆÝÔ˜qœs A¤C¨¬¨q¬t©°a´dÑ):¸A¼CÀ!Ä$¹JÈÌÑ<MÑNÔNˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ$ U¨DÑ1Ô1Ð1Øð 	7ÝÔ)¨%°Ñ6Ô6Ð6ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                óä   — t          | ¦  «         | j        j        st          d¦  «        ‚t	          | ||¦  «        }|sd S t          j        | ¦  «        |_        || j        t          |¦  «        <   |S )Nrå  )	rv  rû   rç  rÃ   ÚPage__add_text_markerr  r  rG  rH  )r(   rv	  r   r"  s       r)   Ú_add_text_markerzPage._add_text_marker7'  sr   € å�DÑÔÐØŒ{Ô!ð 	*Ý˜[Ñ)Ô)Ð)å# D¨%°Ñ<Ô<ˆØð 	Ø�4Ý”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!àˆ
r*   c                óÒ  — t          | ¦  «         t          r0t          j        | j        _        t          j        | j        |¦  «        S t          | j        ¦  «        }t          |¦  «        }|dk     rdS d}t          |t          ¦  «        st          d¦  «        ‚t          j        |                     ¦   «         t          d¦  «        ¦  «        j        s5t          j        |                     ¦   «         t          d¦  «        |¦  «         t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j        sJ d|›d|j        ›�¦   «         ‚t%          |¦  «        D �] }||         }t'          |¦  «        }|st)          d|d	›d
�¦  «         Œ1	 t          j        |                     ¦   «         t/          |                     ¦   «         |¦  «        ¦  «        }t          j        |                     ¦   «         t          j        |¦  «        d¦  «        }	t          j        ||	¦  «         ŒÉ# t6          $ r, t8          rt;          ¦   «          t)          d|d	›d�¦  «         Y Œþw xY wdS )z&Add links from list of object sources.r   NrA  zbad 'linklist' argumentr§  zlcount=z annots.m_internal=zskipping bad link / annot item r  r   r   z.
)rv  r'  r   ÚPage_addAnnot_FromStringrO  r  rÄ   rÚ   r7   r>   rµ   rÃ   r�   r  r  r  rÌ   r¥  r\  ÚJM_StrAsCharrr   r¦  r:  r@  r˜  r  r›  rg   r  rv   )
r(   ÚlinklistrÖ   Úlcountr®   r¯  Útxtpyr   rß   rA  s
             r)   r  zPage._addAnnot_FromStringE'  sM  € å�DÑÔÐÝð 	HÝ27Ô2PˆDŒNÔ/åÔ1°4´9¸hÑGÔGÐGÝ˜DœIÑ&Ô&ˆÝ�X‘”ˆØ�AŠ:ˆ:ØˆFØˆõ ˜(¥EÑ*Ô*ð 	9ÝÐ7Ñ8Ô8Ð8ÝÔ! 4§8¢8¡:¤:­x¸Ñ/AÔ/AÑBÔBÔMð 	NÝÔ$ d§h¢h¡j¤jµ(¸8Ñ2DÔ2DÀfÑMÔMÐMÝÔ# T§X¢X¡Z¤Zµ¸(Ñ1CÔ1CÑDÔDˆØÔ ÐCÐCÐ"C VÐ"CÐ"C¨vÔ/@Ð"CÐ"CÑCÔCÐ Ý�v‘”ð 	Dñ 	DˆAØ˜Q”KˆEÝ Ñ&Ô&ˆDØð ÝÐ@¸!Ð@Ð@Ð@Ð@ÑAÔAÐAØðDÝÔ,¨d¯hªh©j¬jÕ:MÈtÏxÊxÉzÌzÐ[_Ñ:`Ô:`ÑaÔa�ÝÔ0°$·(²(±*´*½eÔ>NÐPUÑ>VÔ>VÐXYÑZÔZ�ÝÔ$ f¨gÑ6Ô6Ð6Ð6øÝð Dð Dð DÝ'Ð<­NÑ,<Ô,<Ð,<ÝÐB¸!ÐBÐBÐBÐBÑCÔCÐCÐCÐCðDøøøð	Dð 	Ds   ÆBH.È.3I$É#I$c                óà   — |                       ¦   «         }|                     ¦   «         }t          ||||¦  «        }|j        st	          d¦  «        ‚t          |d¦  «         t          |¦  «        S )Nzcannot create widgetrù	  )rl  r:  ÚJM_create_widgetrÌ   rÞ   ro  ró   )r(   rê  rå  rÖ   rj  rß   s         r)   Ú
_addWidgetzPage._addWidgetg'  sg   € Ø�~Š~ÑÔˆØ�hŠh‰jŒjˆÝ   d¨J¸
ÑCÔCˆØÔð 	8ÝÐ 6Ñ7Ô7Ð7Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                ó¶  ‡‡‡— | j         Š‰j        sdS t          ‰¦  «        Št          j        t          j        ‰¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        Š‰                     ¦   «         sdS ˆˆˆfd„}ˆfd„}|                      ¦   «         }| 	                    ¦   «         }t          j        t          ¦  «        }|                     t          d¦  «        ¦  «        }t          |                     ¦   «         ¦  «        D ]Ð}|                     |¦  «        }t          j        |¦  «        t          j        k    rŒ:|                     t          d¦  «        ¦  «        }	|	                     ¦   «         sŒq|                     t          d	¦  «        ¦  «                             ¦   «         }
|
sŒ¨ ||¦  «        }||
                              ||f¦  «         ŒÑ|                     ¦   «         D ]F\  }
}t-          d
„ |D ¦   «         ¦  «        }|dk    rt/          d|
› d|› �¦  «         Œ: ||
|¦  «         ŒGt          j        |¦  «         dS )aÃ  Identify / convert "flat" Radio Button Groups in a PDF page.

        "Flat" RBGs do not have a parent field object with a /Kids array
        pointing to the single RB widgets.
        Instead, the parent field is implicitly defined by widgets with equal
        names, which have no /Parent key, and exactly one of them being present
        in the /AcroForm/Fields array.

        This method finds and converts flat RBGs to standard RBGs.
        Nr;  r<  rÇ  c                óv  •— ‰                      ¦   «         }‰                     |d¦  «         t          j        ‰|d¦  «        }|                     t          d¦  «        t          |¦  «        ¦  «        }d}|D �]+\  }}|                     ¦   «         }|dk    r|}t          D ]Ø}		 t          |	¦  «        }
n$# t          $ r t          j
        |	¦  «        }
Y nw xY w|                     |
¦  «        }|                     |
¦  «        }|                     ¦   «         rŒv|                     ¦   «         r|                     |
|¦  «         |                     |
¦  «         |                     t          d¦  «        |¦  «         ŒÙ|                     t          j        ‰|d¦  «        ¦  «         �Œ-‰                     ||¦  «         dS )ai  Convert one flat RadioButtonGroup.

            Args:
                name: Name of the RBG field (string)
                widgets: List of (widget, idx) tuples, where `widget` is a mupdf
                        pdf object representing a RB widget and `idx` is its index
                        in the /AcroForm/Fields array (or -1 if not present).
            rl	  r   r‘  rA  r¨  N)ro  r“  r�   r˜  r¥  r  r7   r  ÚNON_WIDGET_KEYSrg   r?  r  r  r^  rQ  r›  Úpdf_array_put)r   rÇ  r!  rû   r“  Ú	field_idxrK  r®   Úwxrefr'  Úpdf_namerâ  Úp_objr:  rþ  Úpdocs                €€€r)   Úrepair_flat_rbgz.Page.repair_flat_rbgs.<locals>.repair_flat_rbgŠ'  sÑ  ø€ ð ×$Ò$Ñ&Ô&ˆEØ×Ò˜e VÑ,Ô,Ð,ÝÔ+¨D°%¸Ñ;Ô;ˆFØ×,Ò,­X°fÑ-=Ô-=½sÀ7¹|¼|ÑLÔLˆDØˆIØ$ð Lñ L‘	�˜Ø×)Ò)Ñ+Ô+�Ø˜’6�6Ø !�IÝ*ð Dð D�Cð;Ý#+¨C¡=¤=˜˜øÝ$ð ;ð ;ð ;Ý#(Ô#5°cÑ#:Ô#:˜˜˜ð;øøøà"×/Ò/°Ñ9Ô9�EØ"×/Ò/°Ñ9Ô9�EØ×(Ò(Ñ*Ô*ð !Ø Ø×(Ò(Ñ*Ô*ð =Ø×+Ò+¨H°eÑ<Ô<Ð<Ø×'Ò'¨Ñ1Ô1Ð1ð ×'Ò'­°Ñ(:Ô(:¸FÑCÔCÐCÐCð ×#Ò#¥EÔ$:¸4ÀÈÑ$JÔ$JÑKÔKÐKÑKð × Ò  ¨FÑ3Ô3Ð3ØˆFs   Â"B2Â2CÃCc                óÚ   •— |                       ¦   «         }t          ‰                     ¦   «         ¦  «        D ]3}‰                     |¦  «        }|                      ¦   «         |k    r|c S Œ4dS )z3Check if a widget is in the /AcroForm/Fields array.rA  )r  r\  r«  r¬  )rK  rÊ  r®   rÝ  rþ  s       €r)   Úis_in_fieldsz+Page.repair_flat_rbgs.<locals>.is_in_fields¶'  sp   ø€ à×%Ò%Ñ'Ô'ˆEÝ˜6×/Ò/Ñ1Ô1Ñ2Ô2ð ð �Ø×(Ò(¨Ñ+Ô+�Ø—<’<‘>”> UÒ*Ð*Ø�H�H�Hð +à�2r*   r§  r¨  rð   c              3  ó,   K  — | ]\  }}|d k    ¯dV — ŒdS ©r   r   Nr-   )r­   r   r‘  s      r)   r   z(Page.repair_flat_rbgs.<locals>.<genexpr>Ö'  s*   è è € Ð8Ð8™d˜a °°a²°˜°°°°Ð8Ð8r*   r   zSkipping flat RBG 'z' with count )rû   rç  rÎ   r�   r*  r>  r  r«  rl  r  ÚcollectionsÚdefaultdictr´   r  r\  r¬  Úpdf_field_typer  r  r  rk   rB   rW  rl   Úpdf_sync_annots)r(   rÎ  rÐ  Úppager‚  Úflat_widgetsr¯  r®   r   rû   r   r‘  rÇ  r  r:  rþ  rÍ  s                 @@@r)   ræ  zPage.repair_flat_rbgsp'  sz  øøø€ ð ŒkˆØŒzð 	ØˆFÝ Ñ$Ô$ˆÝÔ$ÝÔ˜dÑ#Ô#Ý�VÑÔÝ�ZÑ Ô Ý�XÑÔñ	
ô 
ˆð ×#Ò#Ñ%Ô%ð 	ØˆFð*	ð *	ð *	ð *	ð *	ð *	ð *	ðX	ð 	ð 	ð 	ð 	ð —’Ñ Ô ˆØ—9’9‘;”;ˆÝ"Ô.­tÑ4Ô4ˆØ×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ˆå�v×+Ò+Ñ-Ô-Ñ.Ô.ð 	.ð 	.ˆAØ×$Ò$ QÑ'Ô'ˆAåÔ# AÑ&Ô&­%Ô*KÒKÐKØà—^’^¥H¨XÑ$6Ô$6Ñ7Ô7ˆFØ×%Ò%Ñ'Ô'ð Øà—>’>¥(¨3¡-¤-Ñ0Ô0×CÒCÑEÔEˆDØð Øà�˜Q‘”ˆAØ˜Ô×%Ò% q¨! fÑ-Ô-Ð-Ð-à)×/Ò/Ñ1Ô1ð 	+ð 	+‰MˆD�'ÝÐ8Ð8 gÐ8Ñ8Ô8Ñ8Ô8ˆEØ˜ŠzˆzÝÐF¨DÐFÐF¸uÐFÐFÑGÔGÐGØØˆO˜D 'Ñ*Ô*Ð*Ð*åÔ˜eÑ$Ô$Ð$Øˆr*   c           	     ó8  — |                      d¦  «        }t          d„ |D ¦   «         ¦  «        rt          d|› d�¦  «        ‚d„ }| j        }t	          |¦  «        }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|                     t          d¦  «        ¦  «        }| 	                    ¦   «         s#| 
                    t          d¦  «        d¦  «        }|                     t          d	¦  «        ¦  «        }|                     ¦   «         s#|                     t          d	¦  «        d
¦  «        }d}	t          |¦  «        D �]Æ\  }
}|
dk    r%|                     t          d	¦  «        ¦  «        }d}nrt          j        ||	¦  «        }|                     t          d¦  «        ¦  «        }|                     ¦   «         dk    r#|                     t          d¦  «        d
¦  «        } |||¦  «        \  }}|€‘|r�|                     t          d¦  «        ¦  «                             ¦   «         s[|                     ¦   «         }|                     |d|› d�¦  «         t          j        ||d¦  «        }|                     |¦  «         |}|r|}	�ŒK|                     ¦   «         }|	�|                     |d|	› d|› d�¦  «         n|                     |d|› d�¦  «         t          j        ||d¦  «        }|                     |¦  «         |}	�ŒÈ|	S )aÜ  Ensures that the complete Form field hierarchy exists.

        If the field_name shows a hierarchy like "A.B.C" establish a chain of
        bidirectional links between the fields A, B, and C. The last field
        ("C") in the hierarchy will point to the actual Widget on the page
        (via /Kids). "A" is a root field and thus lives in the AcroForm/Fields
        array. All fields in the chain will be created when missing.

        Args:
            field_name: (raw) field name of the Widget() object.

        Returns:
            The xref of the last field_name segment ("C"). To be used for the
            /Parent value of the widget.
            None if field_name has no segments, and hence is a root field.
        r   c              3  ó"   K  — | ]
}|d k    V — ŒdS )r\   Nr-   rÿ  s     r)   r   z/Page._ensure_field_hierarchy.<locals>.<genexpr>ñ'  s&   è è € Ð&Ð&˜1ˆq�BŠwÐ&Ð&Ð&Ð&Ð&Ð&r*   zInvalid field name 'rk  c                ó>  — t          |                      ¦   «         ¦  «        D ]z}|                      |¦  «        }|                     t	          d¦  «        ¦  «        }|                     ¦   «         }||t          |¦  «        fk    r|                     ¦   «         |fc S Œ{dS )zyCheck if a name exists in an array of XREFs.

            Returns the xref of the item if found, else False.
            rð   )FN)r\  r«  r¬  r  r  Úpdf_to_stringr7   r  )r	  r   r®   rC   rð   ÚT_names         r)   Úname_in_arrayz3Page._ensure_field_hierarchy.<locals>.name_in_arrayõ'  s�   € õ
 ˜5×.Ò.Ñ0Ô0Ñ1Ô1ð 3ð 3�Ø×*Ò*¨1Ñ-Ô-�Ø×%Ò%¥h¨s¡m¤mÑ4Ô4�ØŸšÑ*Ô*�Ø˜d¥C¨¡I¤IÐ.Ò.Ð.ØŸ?š?Ñ,Ô,¨dÐ2Ð2Ð2Ð2ð /à�;r*   r;  r<  r   rÇ  r   Nr   r‘  z<</T (z)>>z
<</Parent z	 0 R /T ()r6   ÚanyrÃ   rû   rÎ   r�   r  r>  r  rŠ  rb  r™  r¥  rþ  rš  r«  ro  r“  r˜  r›  )r(   rå  r	  rÞ  r:  ÚpdfdocrF  rÙ  Ú
root_arrayr·  r®   ÚpartÚ
kids_arrayrû   Ú	item_xrefÚitem_objr†  rª  Ú	part_xrefÚpart_objs                       r)   Ú_ensure_field_hierarchyzPage._ensure_field_hierarchyß'  sL  € ð" × Ò  Ñ%Ô%ˆÝÐ&Ð& Ð&Ñ&Ô&Ñ&Ô&ð 	DÝÐB°JÐBÐBÐBÑCÔCÐCð	ð 	ð 	ð Œkˆõ " #Ñ&Ô&ˆÝÔ!¥%Ô"3°FÑ";Ô";½XÀfÑ=MÔ=MÑNÔNˆØ× Ò ¥¨*Ñ!5Ô!5Ñ6Ô6ˆØ×ÒÑ!Ô!ð 	CØ×)Ò)­(°:Ñ*>Ô*>ÀÑBÔBˆDØ×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ˆ
Ø×&Ò&Ñ(Ô(ð 	HØ×0Ò0µ¸(Ñ1CÔ1CÀQÑGÔGˆJð ˆå  Ñ'Ô'ð $	$ñ $	$‰GˆAˆtØ�AŠvˆvØ!×.Ò.­x¸Ñ/AÔ/AÑBÔB�
Ø��åÔ.¨v°{ÑCÔC�Ø#×0Ò0µ¸&Ñ1AÔ1AÑBÔB�
Ø×+Ò+Ñ-Ô-°Ò2Ð2Ø!'×!:Ò!:½8ÀFÑ;KÔ;KÈQÑ!OÔ!O�Jà"/ -°
¸DÑ"AÔ"AÑˆI�xà�Øð à ×-Ò-­h°vÑ.>Ô.>Ñ?Ô?×LÒLÑNÔNð ð ×+Ò+Ñ-Ô-�Ø×!Ò! (Ð,>°TÐ,>Ð,>Ð,>Ñ?Ô?Ð?ÝÔ0°¸À1ÑEÔE�Ø×)Ò)¨'Ñ2Ô2Ð2Ø$�	Øð Ø'�Ùð ×(Ò(Ñ*Ô*ˆIØÐ&Ø×!Ò!ØÐK¨KÐKÐKÀ$ÐKÐKÐKñô ð ð ð ×!Ò! )Ð-?°dÐ-?Ð-?Ð-?Ñ@Ô@Ð@åÔ-¨f°iÀÑCÔCˆHØ×%Ò% hÑ/Ô/Ð/Ø#ˆK‰KàÐr*   c                óð  — | j         }|                      |j        ¦  «        }|j        }|€|S |j        }t          |¦  «        }t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }| 
                    t          d¦  «        ¦  «        }d}	t          |                     ¦   «         ¦  «        D ]F}
|                     |
¦  «                             ¦   «         |k    r|                     |
¦  «         d}	 nŒG|	st!          d|› d�¦  «        ‚t          j        ||d	¦  «        }t          j        ||d	¦  «        }|j        t&          k    r’|                     |d
d|j        › �¦  «         |                     |d¦  «        d         }|                     dd|j        › �¦  «        }|                     |d|¦  «         |                     t          d¦  «        ¦  «         | 
                    t          d¦  «        ¦  «        }|                     ¦   «         s#t          j        |t          d¦  «        d¦  «        }|                     |¦  «         |                     t          d¦  «        |¦  «         |                     t          d¦  «        t          j        || j        d	¦  «        ¦  «         t:          D ]´}	 t          |¦  «        }n$# t<          $ r t          j        |¦  «        }Y nw xY w| 
                    |¦  «        }| 
                    |¦  «        }|                      ¦   «         s*|                      ¦   «         r|                     ||¦  «         |                     |¦  «         Œµ|j!        rÅd}	| 
                    t          d¦  «        ¦  «        }|                     ¦   «         s#|                     t          d¦  «        d¦  «        }t          |                     ¦   «         ¦  «        D ]1}
|                     |
¦  «                             ¦   «         |k    rd}	 nŒ2|	s|                     |¦  «         |j        tD          k    rˆ|j        dv r/|                     |dd¦  «         |                     |d
d¦  «         n.|                     |dd¦  «         |                     |d
d¦  «         |                     t          d
¦  «        ¦  «         |j        t&          k    rë|                     t          d¦  «        ¦  «         | 
                    t          d¦  «        ¦  «         #                    ¦   «         }|dvr1|                     t          d
¦  «        t          d¦  «        ¦  «         n`t          j        |j        › ¦  «        }|                     t          d
¦  «        |¦  «         |                     t          d¦  «        |¦  «         | j          $                    d¦  «         |S )z<Adjust a widget whose field_name exhibits a field hierarchy.Nr;  r<  rÇ  FTzUnexpected: Widget z  not found in root Fields array.r   r  rb  r  r   z/Yesrñ   r‘  r¨  rÌ  rü  )r  FNr  )r\   r  r  )%rû   rè  rå  r(  r   rÎ   r�   r*  r>  r  r  r\  r«  r¬  r  r­  rÃ   r˜  rê  r  r}  rç  rû  rî  rQ  r™  r¥  r›  r^  rÇ  rg   r?  r  rö  r  r‰  rs  )r(   rK  r:  r·  rß   Ú
annot_xrefrà  Úacroformrþ  r°  r®   Ú
parent_objr0  Úapnrã  r'  Úkey_nameÚ
widget_itmÚ
parent_itmrü  Úparent_vÚon_values                         r)   Ú_adjust_widgetzPage._adjust_widget9(  sÏ  € àŒkˆØ×2Ò2°6Ô3DÑEÔEˆØ”ˆØÐØˆLà”[ˆ
Ý! #Ñ&Ô&ˆÝÔ&ÝÔ˜fÑ%Ô%¥x°Ñ'7Ô'7½À*Ñ9MÔ9Mñ
ô 
ˆð ×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ˆàˆÝ�v×+Ò+Ñ-Ô-Ñ.Ô.ð 	ð 	ˆAØ×#Ò# AÑ&Ô&×1Ò1Ñ3Ô3°zÒAÐAØ×'Ò'¨Ñ*Ô*Ð*Ø�Ø�ð Bð
 ð 	ÝØR jÐRÐRÐRñô ð õ Ô+¨F°KÀÑCÔCˆ
ÝÔ*¨6°:¸qÑAÔAˆ	ØÔÕ ;Ò;Ð;Ø×Ò˜Z¨Ð/G°6Ô3EÐ/GÐ/GÑHÔHÐHØ×"Ò" :¨vÑ6Ô6°qÔ9ˆCØ—+’+˜fÐ&>¨&Ô*<Ð&>Ð&>Ñ?Ô?ˆCØ×Ò˜Z¨°Ñ5Ô5Ð5Ø×"Ò"¥8¨C¡=¤=Ñ1Ô1Ð1à×,Ò,­X°fÑ-=Ô-=Ñ>Ô>ˆ
Ø×&Ò&Ñ(Ô(ð 	SÝÔ1°*½hÀvÑ>NÔ>NÐPQÑRÔRˆJØ×!Ò! )Ñ,Ô,Ð,ð 	×Ò�x¨Ñ1Ô1°:Ñ>Ô>Ð>à×ÒÝ�S‰MŒM�5Ô1°&¸$¼)ÀQÑGÔGñ	
ô 	
ð 	
õ
 #ð 	-ð 	-ˆCð3Ý# C™=œ=��øÝð 3ð 3ð 3Ý Ô-¨cÑ2Ô2���ð3øøøð #×/Ò/°Ñ9Ô9ˆJØ#×0Ò0°Ñ:Ô:ˆJà×)Ò)Ñ+Ô+ð >°
×0FÒ0FÑ0HÔ0Hð >Ø×'Ò'¨°*Ñ=Ô=Ð=Ø×"Ò" 8Ñ,Ô,Ð,Ð,ð Ôð 
	.ØˆEØ×&Ò&¥x°¡~¤~Ñ6Ô6ˆBØ—?’?Ñ$Ô$ð DØ×0Ò0µ¸$±´ÀÑCÔC�Ý˜2×+Ò+Ñ-Ô-Ñ.Ô.ð ð �Ø×#Ò# AÑ&Ô&×1Ò1Ñ3Ô3°{ÒBÐBØ �EØ�Eð Cð ð .Ø×!Ò! *Ñ-Ô-Ð-àÔÕ 8Ò8Ð8ØÔ!Ð%9Ð9Ð9Ø× Ò  ¨c°6Ñ:Ô:Ð:Ø× Ò  ¨T°6Ñ:Ô:Ð:Ð:à× Ò  ¨c°6Ñ:Ô:Ð:Ø× Ò  ¨T°6Ñ:Ô:Ð:Ø×#Ò#¥H¨T¡N¤NÑ3Ô3Ð3ð ÔÕ ;Ò;Ð;Ø×"Ò"¥8¨C¡=¤=Ñ1Ô1Ð1Ø!×.Ò.­x¸©}¬}Ñ=Ô=×IÒIÑKÔKˆHØ˜{Ð*Ð*Ø×&Ò&¥x°¡~¤~µxÀ±´ÑGÔGÐGÐGå Ô-°Ô1CÐ.EÑFÔF�Ø×&Ò&¥x°¡~¤~°xÑ@Ô@Ð@Ø×'Ò'­°©¬°xÑ@Ô@Ð@àŒ×$Ò$ UÑ+Ô+Ð+Øˆs   ËKËK<Ë;K<c                óÜ   — |                       ¦   «         }t          j        ¦   «         }d|_        ||_        ||_        ||_        t          j        |                     ¦   «         ||¦  «        }|S r‡   )	rl  r�   ÚPdfRedactOptionsÚblack_boxesr   Úimage_methodÚline_artÚpdf_redact_pager:  )r(   r   ri	  ÚgraphicsrÖ   rÅ  Úsuccesss          r)   Ú_apply_redactionszPage._apply_redactions¡(  s^   € Ø�~Š~ÑÔˆÝÔ%Ñ'Ô'ˆØˆÔØˆŒ	Ø"ˆÔØ ˆŒÝÔ'¨¯ª©
¬
°D¸$Ñ?Ô?ˆØˆr*   c                óÚ   — |                       ¦   «          	 | j                             | ¦  «         n# t          $ r t	          ¦   «          Y nw xY wd | _        d| _        d | _        d | _        d S rÉ  )Ú_reset_annot_refsrû   r!  rg   rv   r  rh  rÄ   r.   s    r)   r  zPage._erase«(  s€   € Ø×ÒÑ Ô Ð ð	ØŒK×$Ò$ TÑ*Ô*Ð*Ð*øÝð 	ð 	ð 	ÝÑÔÐØˆDð	øøøð ˆŒØˆŒØˆŒØˆŒ	ˆ	ˆ	s   –1 ±AÁAc                ó8  — t          | ¦  «        }t          j        |                     ¦   «         t          j        ¦  «        }t          j        |                     ¦   «         t          j        ¦  «        }t          | j        ¦  «        }t          j        |||¦  «        S )a”  Count missing graphic state pushs and pops.

        Returns:
            A pair of integers (push, pop). Push is the number of missing
            PDF "q" commands, pop is the number of "Q" commands.
            A balanced graphics state for the page will be reached if its
            /Contents is prepended with 'push' copies of string "q
"
            and appended with 'pop' copies of "
Q".
        )	rÚ   r�   r  r  rQ  ÚPDF_ENUM_NAME_ContentsrÎ   rû   Ú pdf_count_q_balance_outparams_fn)r(   rÖ   r/  rö  rj  s        r)   Ú_count_q_balancezPage._count_q_balance·(  s�   € õ ˜DÑ!Ô!ˆÝÔ Ø�HŠH‰JŒJÝÔ)ñ
ô 
ˆõ Ô!Ø�HŠH‰JŒJÝÔ(ñ
ô 
ˆõ ˜tœ{Ñ+Ô+ˆõ Ô5°c¸3ÀÑEÔEÐEr*   rÕ  r«  rÚ  rÍ  c                ó¬  — |�|dk    rd S | j         }|                     |d¬¦  «        }d|v sd|v st          d¦  «        ‚i }|                      ¦   «         D ]
\  }}|||<   Œ||                     ¦   «         v r||         S d}d|d›�}||                     ¦   «         v r!|d	z  }d|d›�}||                     ¦   «         v °!|                      ||¦  «         |S )
Nr   Tr�  ú	/Type/OCGr€  zbad optional content: 'oc'ÚMCr  r   )rû   r’  rÃ   Ú_get_resource_propertiesrÕ  r  Ú_set_resource_property)	r(   rÕ  r:  ÚcheckÚpropsr²  r4  r®   Úmcs	            r)   Ú_get_optional_contentzPage._get_optional_contentÏ(  s  € Øˆ:˜˜qš˜Ø�4ØŒkˆØ—’ ¨t�Ñ4Ô4ˆØ˜uÐ$Ð$¨¸Ð(=Ð(=åÐ9Ñ:Ô:Ð:àˆØ×1Ò1Ñ3Ô3ð 	ð 	‰DˆAˆqØˆE�!‰HˆHØ�—’‘”ÐÐØ˜”9ÐØˆØ�!ˆZˆZˆZˆØ�E—L’L‘N”NÐ"Ð"Ø�‰FˆAØ�a���ˆBð �E—L’L‘N”NÐ"Ð"ð 	×#Ò# B¨Ñ+Ô+Ð+àˆ	r*   c                óp   — |                       ¦   «         }t          |                     ¦   «         ¦  «        }|S )z/
        page list Resource/Properties
        )rl  ÚJM_get_resource_propertiesr  )r(   rÖ   r    s      r)   r  zPage._get_resource_propertiesæ(  s-   € ð �~Š~ÑÔˆÝ'¨¯ª©
¬
Ñ3Ô3ˆØˆ	r*   c                óh   — 	 t          j        | j        |||¦  «        }t	          j        |¦  «        }|S r,   )r'  r   Úpage_get_textpagerÄ   r�   r  r  r  Úfz_bound_pagerã  rÁ  Ú_globalsrˆ   Úfz_enable_device_hintsÚFZ_NO_CACHEr>   rÔ   rÓ   rÇ   rÈ   Úfz_run_pagerÕ  Úfz_close_device)r(   r  rÎ  ré  Úll_tpageÚtpagerÖ   r  r  rî  Údevs              r)   Ú_get_textpagezPage._get_textpageî(  s4   € ð	ÝÔ.¨t¬y¸$ÀÀvÑNÔNˆHÝÔ% hÑ/Ô/ˆEØˆLr*   rA  c                ó$  — t          j        ¦   «         }|                      ¦   «         }|                     ¦   «         }|
}|}|}d}d}d}d}d}d}|dk    rÀt          j        ||d¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }||z   dk    rt          t          ¦  «        ‚d}d}d}d}n,|rt          |¦  «        }d}n|rt          j        |¦  «        }d}|�rx|j        }|                     ¦   «         }|                     ¦   «         }t          j        |¦  «        }|} |                     | d ¦  «        }!|!�1|!}t          j        |                     ¦   «         |d¦  «        }d}d}d}nê|                     ¦   «         dk    r't          j        |t          j        ¦   «         ¦  «        }"n§t          j        |t          j        ¦   «         t          j        ¦   «         t          j        d ¦  «        t          j        ¦   «         d¦  «        }#d|#_        d |#_        t          j        |#t          j        ¦   «         ¦  «        }$t          j        ||$¦  «        }"d}d}|�ràt          j        ¦   «         }%t4          rt          j        |%|¦  «         n*t          j        |%|j        j        |j        j        ¦  «         |rVt          |¦  «        }t4          rt          j        |%|¦  «         n*t          j        |%|j        j        |j        j        ¦  «         t          j         |%¦  «        }tC          |¦  «        } |                     | d ¦  «        }!|!�³|!}t          j        |                     ¦   «         |d¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }d}d}n@t          j"        |¦  «        }"|"                     ¦   «         }|"                     ¦   «         }|sd}|r´t          j#        |"¦  «        }&|&j        st          d¦  «        ‚|" $                    ¦   «         }'|"                     ¦   «         }(t          j%        |"¦  «        \  })}*t          j"        |¦  «        }$t          j&        |||'|(|)|*ddtO          ¦   «         tO          ¦   «         |&|$¦  «        }"|rCt          j(        ||"¦  «        }|	rtS          |||	¦  «         t          j*        |¦  «        }||| <   d}|�rlt          j+        | ,                    ¦   «         t          d¦  «        ¦  «        }+|+j        s5t          j-        | ,                    ¦   «         t          d¦  «        d	¦  «        }+t          j.        |+t          d
¦  «        ¦  «        },|,j        s#t          j-        |+t          d
¦  «        d	¦  «        },t_          |||||¦  «        }-t          j0        |,||¦  «         t          j1        d¦  «        }.dte          |-j3        |-j4        |-j5        |-j6        |-j7        |-j8        f¦  «        › d|› d�}/t          j9        |.|/¦  «         tu          || ,                    ¦   «         |.|¦  «         |r||fS |d fS )Nr   r   ÚWidthrù	  ÚHeightrJ  z#uncompressed image cannot have maskrE  r   ÚXObjectrá  ú
q
z cm
/z Do
Q
);r�   r|  rl  r:  r˜  r  r  r  rÃ   ÚMSG_IS_NO_IMAGEr7  Úfz_read_filerÄ   r   rÑ  Úfz_md5_pixmap2r8   rì  Úfz_new_image_from_pixmapÚFzImageÚfz_convert_pixmapr¢  ÚFzDefaultColorspacesÚFzColorParamsrë  ÚFzMd5rœ   Úfz_md5_update_bufferÚfz_md5_updaterÌ   rˆ  r7   Úfz_md5_final2r)  r°  Úfz_compressed_image_bufferÚbpcÚfz_image_resolutionÚ$fz_new_image_from_compressed_buffer2r´   Úpdf_add_imagerª  r  rP  r  rb  r  Úcalc_image_matrixr�  rî  r¶   r!   rÜ
  rË  r  rp  rÝ  Úfz_append_stringÚJM_insert_contents)0r(   rf   Úpixmapr	   Úimaskr  Úoverlayri  Úkeep_proportionrÕ  rl  rà  r   rì  Ú_imgnameÚdigestsÚmaskbufrÖ   rj  r   rÑ  Úimg_xrefÚ	rc_digestÚdo_process_pixmapÚdo_process_streamÚdo_have_imaskÚdo_have_imageÚdo_have_xrefÚrefÚimgbufÚarg_pixÚdigestÚmd5_pyr‹  ÚimagerÃ  ÚmaskÚstateÚcbuf1r,  rë  ÚxresÚyresrq  Úxobjectr†  Únresr�  s0                                                   r)   Ú_insert_imagezPage._insert_image)  sŸ  € õ
 ”.Ñ"Ô"ˆØ�~Š~ÑÔˆð �hŠh‰jŒjˆØˆØˆØˆØˆ	àÐØÐØˆØˆØˆà�!Š8ˆ8ÝÔ(¨¨d°AÑ6Ô6ˆCÝÔ ¥%Ô"5°s½HÀWÑ<MÔ<MÍxÐX[É}Ì}Ñ"]Ô"]Ñ^Ô^ˆAÝÔ ¥%Ô"5°s½HÀXÑ<NÔ<NÕPXÐY\ÑP]ÔP]Ñ"^Ô"^Ñ_Ô_ˆAØ�1‰u˜ŠzˆzÝ ¥/Ñ2Ô2Ð2à !ÐØ !ÐØˆMØˆMˆMð ð *Ý+¨FÑ3Ô3�Ø$%Ð!Ð!àð *Ý"Ô/°Ñ9Ô9�Fà()Ð%àñ "	"ð ”kˆGØ—	’	‘”ˆAØ—	’	‘”ˆAÝÔ)¨'Ñ2Ô2ˆFØˆFØ—;’;˜v tÑ,Ô,ˆDØÐØ�ÝÔ,¨T¯XªX©Z¬Z¸À1ÑEÔE�à$%Ð!Ø !�Ø !��à—=’=‘?”? aÒ'Ð'Ý!Ô:¸7ÅEÄMÁOÄOÑTÔT�E�EåÔ0Ø#Ý!Ô.Ñ0Ô0Ý!Ô.Ñ0Ô0Ý!Ô6°tÑ<Ô<Ý!Ô/Ñ1Ô1Øñô �Bð  !�B”HØ$(�B”MÝ Ô9¸"½e¼m¹o¼oÑNÔN�DÝ!Ô:¸7ÀDÑIÔI�Eà$%Ð!Ø !�àñ 	&õ ”K‘M”MˆEÝð ZÝÔ*¨E°6Ñ:Ô:Ð:Ð:åÔ# E¨6Ô+<Ô+AÀ6ÔCTÔCXÑYÔYÐYØð `Ý,¨UÑ3Ô3�Ýð `ÝÔ.°°wÑ?Ô?Ð?Ð?åÔ'¨¨wÔ/AÔ/FÈÔHZÔH^Ñ_Ô_Ð_ÝÔ(¨Ñ/Ô/ˆFÝ˜6‘]”]ˆFØ—;’;˜v tÑ,Ô,ˆDØÐØ�ÝÔ,¨T¯XªX©Z¬Z¸À1ÑEÔE�ÝÔ$¥eÔ&9¸3ÅÈÑ@QÔ@QÕS[Ð\_ÑS`ÔS`Ñ&aÔ&aÑbÔb�ÝÔ$¥eÔ&9¸3ÅÈÑ@RÔ@RÕT\Ð]`ÑTaÔTaÑ&bÔ&bÑcÔc�à !�Ø !��åÔ6°vÑ>Ô>�Ø—G’G‘I”I�Ø—G’G‘I”I�Øð &à$%�Màð 	õ Ô4°eÑ<Ô<ˆEØÔ#ð IÝ Ð"GÑHÔHÐHØ—)’)‘+”+ˆCØ×)Ò)Ñ+Ô+ˆJÝÔ2°5Ñ9Ô9‰JˆD�$ÝÔ1°'Ñ:Ô:ˆDÝÔ>ØØØØØØØØÝ‘F”FÝ‘F”FØØñô ˆEð ð 	åÔ% c¨5Ñ1Ô1ˆCØð /Ý   c¨2Ñ.Ô.Ð.ÝÔ'¨Ñ,Ô,ˆHØ&ˆG�F‰OØˆIàñ 	?åÔ6°t·x²x±z´zÅ8ÈKÑCXÔCXÑYÔYˆIØÔ'ð ZÝ!Ô3°D·H²H±J´JÅÈÑ@UÔ@UÐWXÑYÔY�	ÝÔ(¨µH¸YÑ4GÔ4GÑHÔHˆGØÔ%ð UÝÔ1°)½XÀiÑ=PÔ=PÐRSÑTÔT�Ý# A q¨$°¸ÑHÔHˆCÝÔ ¨°3Ñ7Ô7Ð7ÝÔ& rÑ*Ô*ˆDØg�	 3¤5¨#¬%°´¸¼¸s¼uÀcÄeÐ"LÑMÔMÐgÐgÐU]ÐgÐgÐgˆAåÔ" 4¨Ñ+Ô+Ð+Ý˜s D§H¢H¡J¤J°°gÑ>Ô>Ð>àð 	"Ø˜WÐ$Ð$à˜T�>Ð!r*   c                ó"  — |                       ¦   «         }|                     ¦   «         }t          |||||||||	|
¦
  «
        }t          j        |                     ¦   «         t          d¦  «        ¦  «        }|                     ¦   «         s5t          j        |                     ¦   «         t          d¦  «        d¦  «        }t          j	        |t          d¦  «        ¦  «        }|j
        sXt          j        |d¦  «        }t          j        |                     ¦   «         |t          d¦  «        t          d¦  «        ¦  «         t          |d¦  «        \  }}|st          d¦  «        ‚t          j        ||d¦  «        }t          j        |||¦  «         |S )NrE  r   r=  r   zcannot insert font)rl  r:  r\  r�   rP  r  r  rŠ  rb  r  rÌ   rc  r%  rM  rÞ   r˜  r�  )r(   r	  r"  r]  r^  Ú
set_simplerC  rÓ
  rÞ
  rû  r$  rÖ   rj  r¸   rq  rA  r  r   Úfont_objs                      r)   Ú_insertFontzPage._insertFont³)  s]  € Ø�~Š~ÑÔˆØ�hŠh‰jŒjˆå˜s F¨H°ZÀÈSÐRWÐY^Ð`hÐjrÑsÔsˆåÔ2°4·8²8±:´:½xÈÑ?TÔ?TÑUÔUˆ	Ø×$Ò$Ñ&Ô&ð 	VÝÔ/°·²±
´
½HÀ[Ñ<QÔ<QÐSTÑUÔUˆIÝÔ" 9­h°vÑ.>Ô.>Ñ?Ô?ˆØÔð 	\ÝÔ& s¨AÑ.Ô.ˆEÝÔ §¢¡
¤
¨Eµ8¸KÑ3HÔ3HÍ(ÐSYÑJZÔJZÑ[Ô[Ð[å˜e QÑ'Ô'‰ˆˆ4Øð 	6ÝÐ 4Ñ5Ô5Ð5ÝÔ)¨#¨t°QÑ7Ô7ˆÝÔ˜E 8¨XÑ6Ô6Ð6Øˆr*   c                óž   — |                       ¦   «         }|dk    rt          ||¦  «        }nt          ||¦  «        }|rt          |¦  «        S d S r‡   )rl  ÚJM_get_annot_by_nameÚJM_get_annot_by_xrefró   )r(   r   r   rÖ   rß   s        r)   Ú_load_annotzPage._load_annotÈ)  sX   € Ø�~Š~ÑÔˆØ�1Š9ˆ9Ý(¨¨tÑ4Ô4ˆEˆEå(¨¨tÑ4Ô4ˆEØð 	 Ý˜‘<”<Ðð	 ð 	 r*   c           	     óT   — t          || j        |||||¦  «        }t          |¦  «        S r,   )ÚJM_pixmap_from_pagerÄ   rç  )r(   r:  rî  rï  rì  r¯  r  rð  s           r)   Ú_makePixmapzPage._makePixmapÑ)  s)   € Ý! # t¤y°#°r¸5À&È$ÑOÔOˆÝ�c‰{Œ{Ðr*   c                ój  — t          j        t           j        j        ¦  «        }t          | j        d¬¦  «        }|j        rOt          j        |                     ¦   «         |¦  «        }t          j        |¦  «        rt          j	        |¦  «        }t          j
        |¦  «        rd S t          |¦  «        S ©NFr:  )r�   rx  ry  rÚ   rÄ   rÌ   r  r  r™  Úpdf_to_rectr¾  rw  )r(   Úboxtyper  rÖ   r  s        r)   Ú
_other_boxzPage._other_boxÕ)  s—   € ÝŒ|�Uœ\Ô8Ñ9Ô9ˆÝ˜DœI°Ð6Ñ6Ô6ˆØŒ?ð 	.ÝÔ% t§x¢x¡z¤z°7Ñ;Ô;ˆCÝÔ! #Ñ&Ô&ð .ÝÔ(¨Ñ-Ô-�ÝÔ$ dÑ+Ô+ð 	ØˆFÝ˜tÑ$Ô$Ð$r*   Tc                ó.   — t          | j        |¬¦  «        S )Nr:  )rÚ   rÄ   )r(   rÍ   s     r)   rl  zPage._pdf_pageà)  s   € Ý˜DœI°Ð9Ñ9Ô9Ð9r*   c                ó8   — | j                              ¦   «          dS )z,Invalidate / delete all annots of this page.N)rG  rŒ  r.   s    r)   rþ  zPage._reset_annot_refsã)  s   € àÔ×ÒÑ Ô Ð Ð Ð r*   c                ól  — |dk    r
|dk    r|€d S t          t          t          |d¦  «        dz  ¦  «        ¦  «        }|dk    rd}t          t          t          |d¦  «        dz  ¦  «        ¦  «        }|dk    rd}d|d›|d›�}|sd S t          | j        ¦  «        }t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j	        s5t          j
        |                     ¦   «         t          d¦  «        d¦  «        }t          j        |t          d	¦  «        ¦  «        }	|	j	        s#t          j
        |t          d	¦  «        d¦  «        }	t          j        |	¦  «        }
t          |
¦  «        D ]5}t          j        |	|¦  «        }t          j        |¦  «        }||k    r|c S Œ6t          j        |                     ¦   «         d
¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |	||¦  «         |S )Nr   r   rª  éc   ÚfitzcaÚ02drE  r   rI  r   rF  rG  )r4   rk  rø  rÚ   rÄ   r�   r  r  r  rÌ   rb  r‹  r\  r�  r‰  rc  r:  rd  r�  )r(   ÚgstaterF  rG  r“  ÚtCAÚtcarÖ   rq  rs  rE   r®   r;  r   Úopas                  r)   Ú_set_opacityzPage._set_opacityç)  s  € à�Š7ˆ7�r˜Q’w�w 9Ð#4ØˆFÝ•%�˜B ™œ cÑ)Ñ*Ô*Ñ+Ô+ˆØ�#Š:ˆ:ØˆCÝ•%�˜B ™
œ
 SÑ(Ñ)Ô)Ñ*Ô*ˆØ�#Š:ˆ:ØˆCØ,˜#Ð,Ð, 3Ð,Ð,Ð,ˆàð 	ØˆFÝ˜DœIÑ&Ô&ˆÝÔ& t§x¢x¡z¤zµ8¸KÑ3HÔ3HÑIÔIˆ	ØÔ#ð 	VÝÔ/°·²±
´
½HÀ[Ñ<QÔ<QÐSTÑUÔUˆIÝÔ! )­X°kÑ-BÔ-BÑCÔCˆØŒð 	PÝÔ*¨9µh¸{Ñ6KÔ6KÈQÑOÔOˆDÝÔ˜tÑ$Ô$ˆÝ�q‘”ð 	ð 	ˆAÝÔ'¨¨aÑ0Ô0ˆBÝÔ$ RÑ(Ô(ˆDØ�vŠ~ˆ~Ø���ð åÔ  §¢¡¤¨QÑ/Ô/ˆÝÔ ¥X¨d¡^¤^°RÑ8Ô8Ð8ÝÔ ¥X¨d¡^¤^°RÑ8Ô8Ð8ÝÔ˜D &¨#Ñ.Ô.Ð.Øˆr*   c           
     ón  — | j         }|€t          d¦  «        ‚|j        st          d¦  «        ‚d}||vrt          d¦  «        ‚t          |¦  «        }| j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        }|j        |j        cxk    r|j        cxk     r|j        k    r-n n*|j        |j        cxk    r|j        cxk     r|j        k    sn t          |› d	�¦  «        ‚| 	                    | j
        |d
t          t          |¦  «        ¦  «        › d�¦  «         d S )Nr9  rå  )ÚCropBoxÚBleedBoxÚTrimBoxÚArtBoxzbad boxtyper   r   r   r   z not in MediaBoxr{  r|  )rû   rÃ   rç  r4  r€  r  r  r  r  r}  r   r¶   rµ   )r(   r]  r  r:  Úvalid_boxesÚmbs         r)   Ú_set_pageboxzPage._set_pagebox*  sS  € ØŒkˆØˆ;ÝÐ>Ñ?Ô?Ð?àŒzð 	*Ý˜[Ñ)Ô)Ð)àBˆà˜+Ð%Ð%Ý˜]Ñ+Ô+Ð+å�D‰zŒzˆØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGˆØ”˜œÐ3Ð3Ò3Ð3 4¤7Ð3Ð3Ò3Ð3¨b¬eÒ3Ð3Ð3Ð3Ð3¸¼ÀÄÐ8[Ð8[Ò8[Ð8[È4Ì7Ð8[Ð8[Ò8[Ð8[ÐVXÔV[Ò8[Ð8[Ð8[Ð8[Ý Ð9Ð9Ð9Ñ:Ô:Ð:à×Ò˜œ GÐ-Jµ½5À¹;¼;Ñ1GÔ1GÐ-JÐ-JÐ-JÑKÔKÐKÐKÐKr*   c                ót   — |                       ¦   «         }t          |                     ¦   «         ||¦  «         d S r,   )rl  ÚJM_set_resource_propertyr  )r(   r   r   rÖ   s       r)   r  zPage._set_resource_property*  s1   € Ø�~Š~ÑÔˆÝ  §¢¡¤¨T°4Ñ8Ô8Ð8Ð8Ð8r*   c	                óö  — t          |¦  «        }	t          |¦  «        }
|}t          | j        ¦  «        }|                     ¦   «         }|                     ¦   «         }t          |¦  «         t          ||||j        ¦  «        }|st          j	        |¦  «        }t          j
        |d¦  «        }t          j        |d|¦  «         t          j
        |d¦  «        }t          j        |t          d¦  «        |¦  «         t          j        d¦  «        }t          j        |d¦  «         t          j        ||	|
||¦  «        }|dk    r#t#          |t          j        |¦  «        |¦  «         t          j        |t          d¦  «        ¦  «        }|j        s#t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s#t          j        |t          d¦  «        d¦  «        }t          j        |||¦  «         t          j        d¦  «        }t          j        |d	¦  «         t          j        ||¦  «         t          j        |d
¦  «         t/          ||||¦  «         |S )Nr   Úfullpager  é   z/fullpage Dor   rE  rá  z q /z Do Q )r  rã  rÚ   rÄ   r  r:  rn  ÚJM_xobject_from_pager�   r  rc  r�  r^  r  rî  r1  Úpdf_new_xobjectrª  r7  rP  rÌ   rb  r  r2  )r(   Ú
fz_srcpager5  ré  r   rÕ  r  rÖ  r7  r„  r†  Úrc_xrefr  Útpagerefrñ  Úxobj1Úsubres1Úsubresr/  Úxobj2rq  rM  s                         r)   Ú_show_pdf_pagezPage._show_pdf_page!*  s@  € Ý! $Ñ'Ô'ˆÝ Ñ'Ô'ˆØˆÝ˜TœYÑ'Ô'ˆØ—9’9‘;”;ˆØ—’‘”ˆÝ˜Ñ Ô Ð õ % V¨Z¸¸x¼}ÑMÔMˆØð 	.ÝÔ& uÑ-Ô-ˆGõ Ô$ V¨QÑ/Ô/ˆÝÔ˜G Z°Ñ7Ô7Ð7ÝÔ# F¨AÑ.Ô.ˆÝÔ˜6¥8¨IÑ#6Ô#6¸Ñ@Ô@Ð@åÔ! "Ñ%Ô%ˆÝÔ˜s NÑ3Ô3Ð3åÔ% f¨g°s¸FÀCÑHÔHˆØ�Š6ˆ6Ý˜V¥UÔ%?ÀÑ%FÔ%FÈÑKÔKÐKõ Ô2°8½XÀkÑ=RÔ=RÑSÔSˆ	ØÔ#ð 	SÝÔ/°½À+Ñ9NÔ9NÐPQÑRÔRˆIÝÔ# I­x¸	Ñ/BÔ/BÑCÔCˆØÔ ð 	PÝÔ,¨Y½ÀÑ8KÔ8KÈQÑOÔOˆFåÔ˜F H¨eÑ4Ô4Ð4õ
 Ô" 2Ñ&Ô&ˆÝÔ˜t VÑ,Ô,Ð,ÝÔ˜t XÑ.Ô.Ð.ÝÔ˜t XÑ.Ô.Ð.å˜6 8¨T°7Ñ;Ô;Ð;Øˆr*   r9  rº   ró   c                ó,  — t          | ¦  «        }	 |                      |¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          |¦  «        }t	          | |¦  «         t          |d¦  «        sJ ‚|S )zAdd a 'Caret' annotation.r   rû   )Úannot_preprocessrj  rÅ  ró   Úannot_postprocessr;   )r(   r9  Úold_rotationrß   s       r)   Úadd_caret_annotzPage.add_caret_annotZ*  sª   € å'¨Ñ-Ô-ˆð	0Ø×)Ò)¨%Ñ0Ô0ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå�u‘”ˆÝ˜$ Ñ&Ô&Ð&Ý˜˜xÑ(Ô(Ð(Ð(Ð(Øˆó   ‘A ÁA r  r¼   c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z*Add a 'Circle' (ellipse, oval) annotation.r   )r‚  rž  r�   rM  rÅ  rƒ  ©r(   r  r„  rß   s       r)   Úadd_circle_annotzPage.add_circle_annotg*  óŽ   € å'¨Ñ-Ô-ˆð	0Ø×.Ò.¨tµUÔ5KÑLÔLˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆó   ‘ A ÁA+r=  rê  rf   rá  r&  rÉ  rt  c                óö   — t          | ¦  «        }	 |                      ||||||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z"Add a 'FileAttachment' annotation.)r&  rÉ  rt  r   )r‚  rw  rÅ  rƒ  )	r(   r9  r=  rf   r&  rÉ  rt  r„  rß   s	            r)   Úadd_file_annotzPage.add_file_annotr*  s¥   € õ (¨Ñ-Ô-ˆð
	0Ø×(Ò(¨ØØØ'ØØð )ñ ô ˆEð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘A ÁA&©r
  r	  r  rh  rÐ  rá  rn  r  r€  rf  r!  ri  r�  rm  r   r
  r~  r	  r  rÏ  rh  rÐ  rá  rn  r  r€  r4   rf  r!  ri  c               ó
  — t          | ¦  «        }	 |                      |||||||||	|
||||||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'FreeText' annotation.rŽ  r   )r‚  r„  rÅ  rƒ  )r(   r  r   r
  r	  r  rh  rÐ  rá  rn  r  r€  rf  r!  ri  r�  rm  r„  rß   s                      r)   Úadd_freetext_annotzPage.add_freetext_annot‹*  sÄ   € õ, (¨Ñ-Ô-ˆð	0Ø×,Ò,ØØØ%Ø%Ø)Ø)Ø!-Ø!-Ø!Ø#Ø%Ø#ØØ!Ø%Øð! -ñ ô ˆEð& ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘%A ÁA0c                ó�   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        }|S )zAdd a 'Highlight' annotation.N©r¤  rë  r  )Úget_highlight_selectionÚCheckMarkerArgr»  r�   ÚPDF_ANNOT_HIGHLIGHT)r(   rv	  r¤  rë  r  r›  rG   s          r)   Úadd_highlight_annotzPage.add_highlight_annot»*  sK   € ð ˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×#Ò# A¥uÔ'@ÑAÔAˆØˆ
r*   Úhandwritingr´   c                óê   — t          | ¦  «        }	 |                      |¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )znAdd a 'Ink' ('handwriting') annotation.

        The argument must be a list of lists of point_likes.
        r   )r‚  rŽ  rÅ  rƒ  )r(   r—  r„  rß   s       r)   Úadd_ink_annotzPage.add_ink_annotÅ*  s‹   € õ
 (¨Ñ-Ô-ˆð	0Ø×'Ò'¨Ñ4Ô4ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆr†  r  r  c                óì   — t          | ¦  «        }	 |                      ||¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'Line' annotation.r   )r‚  r‘  rÅ  rƒ  )r(   r  r  r„  rß   s        r)   Úadd_line_annotzPage.add_line_annotÓ*  s‹   € å'¨Ñ-Ô-ˆð	0Ø×(Ò(¨¨RÑ0Ô0ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆó   ‘A ÁA!r  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'Polygon' annotation.r   )r‚  r•  r�   rP  rÅ  rƒ  ©r(   r  r„  rß   s       r)   Úadd_polygon_annotzPage.add_polygon_annotÞ*  sŽ   € å'¨Ñ-Ô-ˆð	0Ø×'Ò'¨µÔ0GÑHÔHˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆr‹  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'PolyLine' annotation.r   )r‚  r•  r�   rO  rÅ  rƒ  rž  s       r)   Úadd_polyline_annotzPage.add_polyline_annoté*  sŽ   € å'¨Ñ-Ô-ˆð	0Ø×'Ò'¨µÔ0IÑJÔJˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆr‹  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z&Add a 'Square' (rectangle) annotation.r   )r‚  rž  r�   rL  rÅ  rƒ  rˆ  s       r)   Úadd_rect_annotzPage.add_rect_annotô*  rŠ  r‹  r  rÑ  rø   c	                ód  — d}	|rÑt          t          j        ¦  «                             |¦  «        s¥t	          |¦  «         t	          |¦  «         |sd}|sd}|sd}t          |d¦  «        r|||f}t          |¦  «        dk    r
|dd…         }d}
 |
j        |||dœŽ}	|€d	}|r2t          |d¦  «        r|||f}t          |¦  «        dk    r
|dd…         }nd}t          | ¦  «        }	 |  	                    |||	||¬
¦  «        }|dk    r|  
                    |¦  «         n!# |dk    r|  
                    |¦  «         w w xY wt          | |¦  «         |rß|                     ¦   «                              ¦   «         dd…         }|\  }}}}}|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     d¦  «         d                     |¦  «        }|                     |d¦  «         |S )zAdd a 'Redact' annotation.Nrß  r  rÞ  ry  r   r/  r0  ©r   r   r   )r   rš  r!  r  r   rA  rà  râ  )râ  r
  Ú
whitespacerš	  r  r;   r7   rÐ  r‚  rœ  rÅ  rƒ  r2  rì  rk   rê  r@  )r(   r  r   r	  r
  r!  r  r  rÑ  rš  r±   r„  rß   r  r  r  r  r  r  r1  s                       r)   rf	  zPage.add_redact_annotÿ*  sˆ  € ð ˆØð 	��FÔ-Ñ.Ô.×9Ò9¸$Ñ?Ô?ð 	Ý�tÑÔÐÝ�zÑ"Ô"Ð"Øð "Ø!�Øð Ø�Øð 'Ø&�
Ý�z ;Ñ/Ô/ð BØ(¨*°jÐA�
Ý�:‰Œ Ò"Ð"Ø'¨¨¨œ^�
Ø5ˆCØ�S”Z ¨x¸8ÐDÐDÐDˆFØˆ|Ø �Øð $Ý˜4 Ñ-Ô-ð .Ø  $¨Ð-�DÝ�t‘9”9˜q’=�=Ø   œ8�DøàˆDå'¨Ñ-Ô-ˆð	0Ø×*Ò*¨4°dÀ6Ø"¨ð +ñ /ô /ˆEð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&ð ð 
	 Ø—\’\‘^”^×.Ò.Ñ0Ô0°°"°Ô5ˆFØ &ÑˆAˆr�2�r˜2Ø�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜$ÑÔÐØ—’˜FÑ#Ô#ˆBØ�LŠL˜˜QÑÔÐØˆs   Ã(D ÄD<c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'Squiggly' annotation.Nr’  )r“  r”  r»  r�   ÚPDF_ANNOT_SQUIGGLY©r(   rv	  r¤  rë  r  r›  s         r)   Úadd_squiggly_annotzPage.add_squiggly_annot=+  sG   € ð ˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(@ÑAÔAÐAr*   c                óì   — t          | ¦  «        }	 |                      ||¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z$Add a ('rubber') 'Stamp' annotation.r   )r‚  r¶  rÅ  rƒ  )r(   r  r²  r„  rß   s        r)   Úadd_stamp_annotzPage.add_stamp_annotK+  s‹   € å'¨Ñ-Ô-ˆð	0Ø×)Ò)¨$°Ñ6Ô6ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆrœ  c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'StrikeOut' annotation.Nr’  )r“  r”  r»  r�   ÚPDF_ANNOT_STRIKE_OUTr©  s         r)   Úadd_strikeout_annotzPage.add_strikeout_annotV+  sE   € àˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(BÑCÔCÐCr*   ÚNotec                óð   — t          | ¦  «        }	 |                      |||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z&Add a 'Text' (sticky note) annotation.)rt  r   )r‚  r¸  rÅ  rƒ  )r(   r9  r   rt  r„  rß   s         r)   Úadd_text_annotzPage.add_text_annot^+  s�   € å'¨Ñ-Ô-ˆð	0Ø×(Ò(¨°¸4Ð(Ñ@Ô@ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘A ÁA#c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'Underline' annotation.Nr’  )r“  r”  r»  r�   ÚPDF_ANNOT_UNDERLINEr©  s         r)   Úadd_underline_annotzPage.add_underline_annoti+  sE   € àˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(AÑBÔBÐBr*   rK  rI  c                óÈ  — t          | ¦  «         | j        }|j        st          d¦  «        ‚|                     ¦   «          |                      |j        |j        ¦  «        }|sdS d|_        t          j
        | ¦  «        |_        || j        t          |¦  «        <   |j        |_        ||_        |j        |_        |                     ¦   «          |                      |¦  «        S )zAdd a 'Widget' (form field).rå  NT)rv  rû   rç  rÃ   r  rÄ  rê  rå  r  r  r  rG  rH  r(  r   r  ró  )r(   rK  r:  rß   s       r)   Ú
add_widgetzPage.add_widgetq+  sÎ   € å�DÑÔÐØŒkˆØŒzð 	*Ý˜[Ñ)Ô)Ð)Ø×ÒÑÔÐØ—’ Ô 1°6Ô3DÑEÔEˆØð 	Ø�4ØˆŒÝ”} TÑ*Ô*ˆŒØ&+ˆÔ�˜E™œÑ#ØœˆŒØˆŒØ”jˆŒØ�Š‰Œˆð ×"Ò" 6Ñ*Ô*Ð*r*   c                ó~   — 	 t          | ¦  «         |                      d¬¦  «        }|j        sg S t          |¦  «        S )z.
        page get list of annot names
        Fr:  )rv  rl  rÌ   ÚJM_get_annot_id_list©r(   rÖ   s     r)   Úannot_nameszPage.annot_names†+  sE   € ð 	>Ý�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆIÝ# DÑ)Ô)Ð)r*   c                ó    — t          | ¦  «        S )zH
        List of xref numbers of annotations, fields and links.
        )ÚJM_get_annot_xref_list2r.   s    r)   rÔ  zPage.annot_xrefs‘+  s   € õ ' tÑ,Ô,Ð,r*   c              #  óF  ‡‡K  — t           j        t           j        t           j        fŠt	          ‰d¦  «        s!ˆfd„|                      ¦   «         D ¦   «         }n!ˆˆfd„|                      ¦   «         D ¦   «         }|D ]$}|                      |¦  «        }|rd|_        |V — Œ%dS )a   Generator over the annotations of a page.

        Args:
            types: (list) annotation types to subselect from. If none,
                   all annotations are returned. E.g. types=[PDF_ANNOT_LINE]
                   will only yield line annotations.
        rp  c                ó4   •— g | ]}|d          ‰v¯|d         ‘ŒS rC  r-   )r­   r!   Ú
skip_typess     €r)   r¯   zPage.annots.<locals>.<listcomp>¡+  s+   ø€ ÐVÐVÐV A¸qÀ¼tÈ:Ð?UÐ?U˜1˜Qœ4Ð?UÐ?UÐ?Ur*   c                óH   •— g | ]}|d          ‰v ¯|d          ‰v¯|d         ‘ŒS rC  r-   )r­   r!   rÀ  Útypess     €€r)   r¯   zPage.annots.<locals>.<listcomp>£+  s;   ø€ ÐhÐhÐh A¸qÀ¼tÀu¸}¸}ÐQRÐSTÔQUÐ]gÐQgÐQg˜1˜Qœ4ÐQgÐQgÐQgr*   TN)r�   rÉ  ÚPDF_ANNOT_POPUPrC  r;   rÔ  Ú
load_annotÚ_yielded)r(   rÂ  rÔ  r   rß   rÀ  s    `   @r)   r¯  zPage.annots—+  sÄ   øøè è € õ Ô*­EÔ,AÅ5ÔCYÐZˆ
Ý�u˜mÑ,Ô,ð 	iØVÐVÐVÐV¨×)9Ò)9Ñ);Ô);ÐVÑVÔVˆKˆKàhÐhÐhÐhÐh¨×)9Ò)9Ñ);Ô);ÐhÑhÔhˆKØð 	ð 	ˆDØ—O’O DÑ)Ô)ˆEàð Ø#�”Ø���øð	ð 	r*   r   rÖ   ú'Page'ri	  rú  c           	     ó–  — d„ }t          | ¦  «         | j        }|j        s|j        rt	          d¦  «        ‚|j        st	          d¦  «        ‚g }|                      t          j        f¬¦  «        D ])}| 	                    | 
                    ¦   «         ¦  «         Œ*|g k    rdS |                      |||¦  «        }|st	          d¦  «        ‚|                      ¦   «         }	|D ]Ô}
|
d         }|
d         }|r,|	                     |¦  «         |	                     ||¬	¦  «         d
|
                     ¦   «         v r~|
d
         }|
                     dd¦  «        }|
d         }|
d         }|
d         } |||||¦  «        }d}|dk     r2|dk    r,|	                     ||||||¬¦  «        }|dz  }|dk     r|dk    °,ŒÕ|	                     ¦   «          dS )aD  Apply the redaction annotations of the page.

        Args:
            page: the PDF page.
            images:
                  0 - ignore images
                  1 - remove all overlapping images
                  2 - blank out overlapping image parts
                  3 - remove image unless invisible
            graphics:
                  0 - ignore graphics
                  1 - remove graphics if contained in rectangle
                  2 - remove all overlapping graphics
            text:
                  0 - remove text
                  1 - ignore text
        c                óp  — |r| j         t          k    r| S 	 t          |||¦  «        }n3# t          t          j        f$ r t          rt          ¦   «          | cY S w xY w|dz  }| j         }t          j	        ||z  ¦  «        |z  }|| j
        k    r| S | }| j        j        | j        j        z   |z
  dz  }	|	|_        |S )a¼  Calculate minimal sub-rectangle for the overlay text.

            Notes:
                Because 'insert_textbox' supports no vertical text centering,
                we calculate an approximate number of lines here and return a
                sub-rect with smaller height, which should still be sufficient.
            Args:
                annot_rect: the annotation rectangle
                new_text: the text to insert.
                font: the fontname. Must be one of the CJK or Base-14 set, else
                    the rectangle is returned unchanged.
                fsize: the fontsize
            Returns:
                A rectangle to use instead of the annot rectangle.
            ç333333ó?ç      à?)rl  r”  Úget_text_lengthrÃ   r�   ÚFzErrorBaser  rv   rU  Úceilrà  rû  r5  Úblr  )
Ú
annot_rectÚnew_textrb  r  Ú
text_widthÚline_heightr%  rÑ  r.  r5  s
             r)   Úcenter_rectz*Page.apply_redactions.<locals>.center_rectÃ+  sç   € ð  ð "˜zÔ/µ7Ò:Ð:Ø!Ð!ð"Ý,¨X°t¸UÑCÔC�
�
øÝ¥Ô 1Ð2ð "ð "ð "Ý'ð %Ý"Ñ$Ô$Ð$Ø!Ð!Ð!Ð!ð"øøøð   #™+ˆKØÔ$ˆEÝ”	˜* uÑ,Ñ-Ô-°Ñ;ˆAØ�JÔ%Ò%Ð%Ø!Ð!ØˆAØ”” :¤=¤?Ñ2°QÑ6¸#Ñ=ˆAØˆAŒDØˆHs   –( ¨-AÁAr9  rå  )rÂ  FzError applying redactions.r  r  )r  r  r   r!  r   r	  r
  r  rA  rZ  )r	  r
  r  r!  rÊ  T)rv  rû   r  rÂ   rÃ   rç  r¯  r�   r  rk   r#  rü  Ú	new_shapeÚ	draw_rectÚfinishrÕ  r8   Úinsert_textboxÚcommit)rÖ   ri	  rú  r   rÓ  r:  Úredact_annotsrß   r    ÚshapeÚredactrÏ  r  rÐ  r!  r  r  r  Útrects                      r)   rp	  zPage.apply_redactions«+  s0  € ð0 	ð  	ð  	õD 	�DÑÔÐØŒkˆØÔð 	=˜sœ}ð 	=ÝÐ;Ñ<Ô<Ð<ØŒzð 	*Ý˜[Ñ)Ô)Ð)àˆØ—[’[ÝÔ)Ð+ð !ñ 
ô 
ð 	=ð 	=ˆEð × Ò  ×!9Ò!9Ñ!;Ô!;Ñ<Ô<Ð<Ð<à˜BÒÐØ�5à×#Ò# D¨&°(Ñ;Ô;ˆØð 	;ÝÐ9Ñ:Ô:Ð:ð —’Ñ Ô ˆØ#ð 	!ð 	!ˆFØ œˆJØ˜&”>ˆDØð 4Ø—’ 
Ñ+Ô+Ð+Ø—’ $¨d�Ñ3Ô3Ð3Ø˜Ÿš™œÐ&Ð&Ø! &œ>�ØŸ
š
 7¨AÑ.Ô.�Ø˜zÔ*�Ø˜zÔ*�Ø˜|Ô,�à#˜ J°¸%ÀÑGÔG�à�Ø˜1’f�f ¨!¢ à×-Ò-ØØ Ø!&Ø!&Ø#Ø#ð .ñ ô �Bð ˜S‘L�Eð ˜1’f�f ¨!¢ øð 	�Š‰ŒˆØˆtr*   c                óæ   — |dvrt          d¦  «        ‚t          | j        ¦  «        }t          j        ¦   «         }||_        t          j        |¦  «        }t          j        || j        |¦  «         dS )zbConvert colorspaces of objects on the page.
        
        Valid values are 1, 3 and 4.
        rz  z!components must be one of 1, 3, 4N)	rÃ   rÎ   rû   r�   Úpdf_recolor_optionsÚnum_compÚPdfRecolorOptionsÚpdf_recolor_pagerh  )r(   rç  rà  ÚroptÚroptss        r)   r×  zPage.recolor,  so   € ð
 ˜YÐ&Ð&ÝÐ@ÑAÔAÐAÝ! $¤+Ñ.Ô.ˆÝÔ(Ñ*Ô*ˆØ"ˆŒÝÔ'¨Ñ-Ô-ˆÝÔ˜v t¤{°EÑ:Ô:Ð:Ð:Ð:r*   c                ó  — t          |¦  «        }|j        s|| j        z  j        rt	          d¦  «        ‚t
          dk     r
|| j        z  }t          | ¦  «        }t          |¦  «        }t          j
        ||¦  «         t          |¦  «         dS )z-Clip away page content outside the rectangle.z"rect must not be infinite or empty)r   é   r   N)r4  re	  r  rd	  rÃ   Úmupdf_version_tupler{  rÚ   r  r�   Úpdf_clip_pagerT
  )r(   r  r  rº  Úpclips        r)   Úclip_to_rectzPage.clip_to_rect',  s“   € å�D‰zŒzˆØÔð 	C  t¤yÑ 0Ô:ð 	CÝÐAÑBÔBÐBÝ Ò+Ð+Ø�DÔ.Ñ.ˆDÝ˜tÑ$Ô$ˆÝ Ñ%Ô%ˆÝÔ˜G UÑ+Ô+Ð+Ý˜Ñ!Ô!Ð!Ð!Ð!r*   c                ó<   — t           rt          | fi |¤Ž| _        dS dS )z!Try to access layout information.N)rŽ   Úlayout_information©r(   r  s     r)   Ú
get_layoutzPage.get_layout3,  s5   € åð 	BÝ&1°$Ð&AÐ&A¸&Ð&AÐ&AˆDÔ#Ð#Ð#ð	Bð 	Br*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )z
The ArtBoxrn  Nr   r   r   r   ©r^  r„  r€  r4  r  ©r(   r  rp  s      r)   ÚartboxzPage.artbox8,  sY   € ð �Š˜xÑ(Ô(ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )zThe BleedBoxrl  Nr   r   r   r   rï  rð  s      r)   ÚbleedboxzPage.bleedboxA,  sY   € ð �Š˜zÑ*Ô*ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                ó¤  — t          | ¦  «         t          | j        ¦  «        }t          j        |¦  «        }t          |¦  «        }|j        r‚| j        j        rv| j	        }|j
        |j        }}| j        dvr||}}t          dd||¦  «        }t                               d¬¦  «                             ¦   «         d         }t!          |¦  «         |S )zGet page rectangle.©r   é´   r   F)rn	  rA  )rv  r×   rÄ   r�   r  r4  re	  rû   rç  r„  rl  rà  r_  r  Úmupdf_warningsrì  rr   )r(   rÖ   r"  Úcbr   rÑ  r˜   s          r)   Úboundz
Page.boundJ,  sÄ   € å�DÑÔÐÝ˜4œ9Ñ%Ô%ˆÝÔ! $Ñ'Ô'ˆÝ�3‰iŒiˆàŒ?ð 	˜tœ{Ô1ð 	Ø”ˆBØ”8˜RœYˆqˆAØŒ} HÐ,Ð,Ø˜!�1�Ý�q˜!˜Q Ñ"Ô"ˆCÝ×&Ò&¨UÐ&Ñ3Ô3×>Ò>Ñ@Ô@ÀÔDˆCÝ�C‰LŒLˆLàˆ
r*   c                óð   — |s| j         s|                      ¦   «          t          | j        d¬¦  «        }|j        sd S t          d|¬¦  «        }t          j        |                     ¦   «         ||¦  «         d S )NFr:  r   )rš  r�  )	Ú
is_wrappedÚwrap_contentsrÚ   rÄ   rÌ   rŸ  r�   Úpdf_filter_page_contentsr:  )r(   r�  rÖ   r¡  s       r)   r¢  zPage.clean_contents\,  s}   € Øð 	! ¤ð 	!Ø×ÒÑ Ô Ð Ý˜TœY°Ð7Ñ7Ô7ˆØŒð 	ØˆFÝ(°¸XÐFÑFÔFˆÝÔ&¨¯ª©
¬
°D¸'ÑBÔBÐBÐBÐBr*   c                óò   — t          | ¦  «         |                      d¬¦  «        }|j        st          j        | j        ¦  «        }n!t          |                     ¦   «         ¦  «        }t          |¦  «        }|S )zThe CropBox.Fr:  )	rv  rl  rÌ   r�   r  rÄ   rƒ  r  r4  )r(   rÖ   r"  s      r)   r„  zPage.cropboxe,  sh   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	)ÝÔ% d¤iÑ0Ô0ˆCˆCå˜TŸXšX™ZœZÑ(Ô(ˆCÝ�3‰iŒiˆàˆ
r*   c                ó   — | j         j        S r,   )r„  rû  r.   s    r)   Úcropbox_positionzPage.cropbox_positionr,  s   € àŒ|ŒÐr*   c                ó  — |                       ¦   «                              ¦   «         }|                     t          d¦  «        ¦  «        }|                     ¦   «         dk    r$|                     t          d¦  «        ¦  «         dS dS )z Delete the /Annots key if empty.r§  r   N)rl  r  r  r  r«  rQ  )r(   r‚  r¯  s      r)   Ú_delete_empty_annotszPage._delete_empty_annotsv,  sy   € à—>’>Ñ#Ô#×'Ò'Ñ)Ô)ˆØ×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ˆØ×ÒÑ!Ô! QÒ&Ð&Ø×!Ò!¥(¨8Ñ"4Ô"4Ñ5Ô5Ð5Ð5Ð5ð 'Ð&r*   c                óH  — t          | ¦  «         t          |¦  «         |                      ¦   «         }	 t          |j        ¦  «        }|snt	          j        ||j        ¦  «         Œ2t	          j        |j        ¦  «        }t	          j        ||j        ¦  «         t          |¦  «        }|r<d|_        t          j
        | ¦  «        |_        ||j        j        t          |¦  «        <   |                     ¦   «          |                      ¦   «          t	          j        |¦  «         |S )z!Delete annot and return next one.r   T)rv  rl  r©  rÄ   r�   rª  rD  ró   r  r  r  rû   rG  rH  r  r  rÖ  )r(   rß   rÖ   r®  Ú	nextannotr"  s         r)   Údelete_annotzPage.delete_annot},  s  € å�DÑÔÐÝ�EÑÔÐà�~Š~ÑÔˆð	9å)¨%¬*Ñ5Ô5ˆIØð ØÝÔ" 4¨¬Ñ8Ô8Ð8ð	9õ Ô(¨¬Ñ4Ô4ˆ	ÝÔ˜t U¤ZÑ0Ô0Ð0Ý�IÑÔˆàð 	2ØˆCŒKÝ œ tÑ,Ô,ˆCŒJØ.1ˆCŒJÔ"¥2 c¡7¤7Ñ+Ø�Š‰Œˆð 	×!Ò!Ñ#Ô#Ð#ÝÔ˜dÑ#Ô#Ð#àˆ
r*   r   c                óˆ   — t          t          dd¦  «        }|                     ¦   «          |                      ||¬¦  «         dS )zÅDelete the image referred to by xef.

        Actually replaces by a small transparent Pixmap using method Page.replace_image.

        Args:
            xref: xref of the image to delete.
        ©r   r   r   r   r   )r3  N)rç  rÞ  Ú
clear_withÚreplace_image)rÖ   r   rð  s      r)   Údelete_imagezPage.delete_image™,  sD   € õ •V˜\¨1Ñ-Ô-ˆØ�ŠÑÔÐØ×Ò˜4¨ÐÑ,Ô,Ð,Ð,Ð,r*   c                ór  ‡ ‡— t          ‰ ¦  «         t          ‰t          ¦  «        sdS ˆˆ fd„}t          ‰ j        d¬¦  «        }|j        s
 |¦   «         S ‰t                   }|dk     r
 |¦   «         S t          j        | 	                    ¦   «         t          d¦  «        ¦  «        }|j        s
 |¦   «         S t          j        |¦  «        }|dk    r
 |¦   «         S d}t          |¦  «        D ]1}t          j        t          j        ||¦  «        ¦  «        }||k    r nŒ2||k    r
 |¦   «         S t          j        ||¦  «         t          j        |                     ¦   «         |¦  «         t          j        | 	                    ¦   «         t          d¦  «        |¦  «         t'          |¦  «          |¦   «         S )zDelete a Link.Nc                 óÌ   •— ‰d         dk    rd S 	 ‰d         } ‰j         |          }|                     ¦   «          d S # t          $ r t          dk    rt	          ¦   «          Y d S w xY w)Nr   r   rH  r   )rG  r  rg   r  rv   )ÚlinkidÚlinkobjÚlinkdictr(   s     €€r)   Úfinishedz"Page.delete_link.<locals>.finished¬,  s€   ø€ Ø˜Ô 1Ò$Ð$ f fðØ! $œ�ØÔ*¨6Ô2�Ø—’Ñ Ô Ð Ð Ð øÝð ð ð å'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø��ðøøøs   ‘)< ¼#A#Á"A#Fr:  r   r§  r   )rv  r>   r5   rÚ   rÄ   rÌ   r  r�   r  r  r  r«  r\  r  r¬  r­  rL  r:  r^  rT
  )	r(   r  r  rÖ   r   r¯  r  Úoxrefr®   s	   ``       r)   ro	  zPage.delete_link¦,  s¾  øø€ å�DÑÔÐÝ˜8¥TÑ*Ô*ð 	ØˆFð		ð 		ð 		ð 		ð 		ð 		õ ˜DœI°Ð6Ñ6Ô6ˆØŒð 	Ø�8‘:”:ÐØ�Ô%ˆØ�!Š8ˆ8Ø�8‘:”:ÐÝÔ# T§X¢X¡Z¤Zµ¸(Ñ1CÔ1CÑDÔDˆØÔ ð 	Ø�8‘:”:ÐÝÔ" FÑ+Ô+ˆØ�1Š9ˆ9Ø�8‘:”:ÐØˆÝ˜‘”ð 	ð 	ˆAÝÔ$¥eÔ&9¸6À1Ñ&EÔ&EÑFÔFˆEØ�uŠ}ˆ}Ø�ð ð �5Š=ˆ=Ø�8‘:”:ÐÝÔ ¨Ñ*Ô*Ð*ÝÔ §¢¡¤¨TÑ2Ô2Ð2ÝÔ˜DŸHšH™JœJ­°Ñ(:Ô(:¸FÑCÔCÐCÝ˜$ÑÔÐàˆx‰zŒzÐr*   c                óÎ  — d„ }| }t          |¦  «         |j        }t          |¦  «        }t          |¦  «        }|                     ¦   «         }|j        }t          |dd¦  «        }	|	€t          d¦  «        ‚|j        }
| 	                    t          d¦  «        ¦  «        } |||¦  «         t          j        ||¦  «        }| 	                    t          d¦  «        ¦  «        }t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d	¦  «        ¦  «        }|                     ¦   «         r" |||¦  «         t          j        |¦  «         |
S |}|}|                     ¦   «         sý|                     ¦   «         }| 	                    t          d
¦  «        ¦  «        } |||¦  «         |                     ¦   «         dk    rn¢| 	                    t          d¦  «        ¦  «        }|                     ¦   «         r |||¦  «         n_| 	                    t          d
¦  «        ¦  «        } |||¦  «         |                     ¦   «         dk    rn|}|}|                     ¦   «         ¯ýd|j        _        t)          |j                             ¦   «         ¦  «        }|D ]
}|j        |= Œ|                      ¦   «          t          j        |¦  «         |
S )a	  Delete widget from page and return the next one.

        Completely delete a widget annotation:
        - remove it from the page's /Annots array
        - remove it from its parent field's /Kids
        - remove empty parent fields up to /AcroForm/Fields
        c                óð   — |                       ¦   «         }t          t          |¦  «        ¦  «        D ]D}|                      |¦  «        }|                     ¦   «         |k    r|                      |¦  «         ŒEdS )z•Remove all occurrences of xref from the given PDF array.

            E.g. /AcroFor4m/Fields, a field's /Kids or a page's /Annots array.
            N)r«  ræ  r\  r¬  r  r­  )r	  r   r  r®   rC   s        r)   Úremove_object_from_arrayz4Page.delete_widget.<locals>.remove_object_from_arrayÚ,  sy   € ð
 ×'Ò'Ñ)Ô)ˆEÝ�e E™lœlÑ+Ô+ð .ð .�Ø×*Ò*¨1Ñ-Ô-�Ø—?’?Ñ$Ô$¨Ò,Ð,Ø×*Ò*¨1Ñ-Ô-Ð-øð.ð .r*   r(  Nzbad type: widgetr§  r¨  r;  r<  rÇ  r‘  r   )rv  rû   rÎ   rÚ   r  r   rý   rÃ   rL  r  r  r�   rš  r*  r>  r  rÖ  r  r«  r(  r´   r�
  rÕ  r  )r(   rK  r  rÖ   r:  rj  r×  r‚  rÊ  rß   Ú
nextwidgetr¯  Ú
widget_objrû   rþ  ÚcurrentÚ
child_xrefÚcurrent_xrefr“  Úgrand_parentÚgp_kidsÚkeylistr'  s                          r)   Údelete_widgetzPage.delete_widgetÒ,  s  € ð		.ð 		.ð 		.ð ˆÝ�DÑÔÐØŒkˆÝ˜sÑ#Ô#ˆÝ˜TÑ"Ô"ˆØ—9’9‘;”;ˆØ”ˆÝ˜ ¨$Ñ/Ô/ˆØˆ=ÝÐ/Ñ0Ô0Ð0Ø”[ˆ
ð ×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ˆØ Ð  ¨Ñ/Ô/Ð/õ Ô*¨3°Ñ6Ô6ˆ
Ø×(Ò(­°(Ñ);Ô);Ñ<Ô<ˆåÔ$ÝÔ˜cÑ"Ô"Ý�VÑÔÝ�ZÑ Ô Ý�XÑÔñ	
ô 
ˆð ×ÒÑÔð 	Ø$Ð$ V¨UÑ3Ô3Ð3ÝÔ! %Ñ(Ô(Ð(ØÐð ˆØˆ
à×%Ò%Ñ'Ô'ð 	'Ø"×-Ò-Ñ/Ô/ˆLØ×'Ò'­°Ñ(8Ô(8Ñ9Ô9ˆDØ$Ð$ T¨:Ñ6Ô6Ð6ð ×!Ò!Ñ#Ô# aÒ'Ð'Øð #×/Ò/µ¸Ñ0BÔ0BÑCÔCˆLà×'Ò'Ñ)Ô)ð 'à(Ð(¨°Ñ>Ô>Ð>Øð '×3Ò3µH¸VÑ4DÔ4DÑEÔE�Ø(Ð(¨°,Ñ?Ô?Ð?à×(Ò(Ñ*Ô*¨QÒ.Ð.Øð *�
Ø&�ð7 ×%Ò%Ñ'Ô'ð 	'ð:  $ˆŒÔÝ�v”×+Ò+Ñ-Ô-Ñ.Ô.ˆØð 	%ð 	%ˆCØ” Ð$Ð$à×!Ò!Ñ#Ô#Ð#ÝÔ˜eÑ$Ô$Ð$ØÐr*   r…  c                ó.  — t           r&t          t          j        | j        ¦  «        ¦  «        S |                      d¬¦  «        }|j        s0t          t          j        t          j        j	        ¦  «        ¦  «        S t          t          |¦  «        ¦  «        S )zReflects page de-rotation.Fr:  )r'  r…  r   ÚPage_derotate_matrixrÄ   rl  rÌ   r�   rx  ÚUNITr0  )r(   rº  s     r)   r|  zPage.derotation_matrix0-  sz   € õ ð 	BÝ�%Ô4°d´iÑ@Ô@ÑAÔAÐAØ—.’.¨%�.Ñ0Ô0ˆØÔ!ð 	;Ý�%œ,¥u¤|Ô'8Ñ9Ô9Ñ:Ô:Ð:ÝÕ-¨gÑ6Ô6Ñ7Ô7Ð7r*   r=  Úp3Úp4r  rl  rþ  Ú	closePathÚlineCapÚlineJoinr5  Ústroke_opacityÚfill_opacityrú  c                ó0  — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }|                     |||||||	|
|||¬¦  «         |                     |¦  «         |S )zODraw a general cubic Bezier curve from p1 to p4 using control points p2 and p3.©r  r  rn  rl  r$  r%  rþ  r#  r&  r'  rÕ  )rÔ  Údraw_bezierrú  rÖ  rØ  )rÖ   r  r  r!  r"  r  r  rn  rl  rþ  r#  r$  r%  r5  r&  r'  rÕ  rß  rë   s                      r)   r*  zPage.draw_bezier:-  s—   € ð( �nŠnÑÔˆØ�OŠO�E "™IœI¥u¨R¡y¤yµ%¸±)´)½UÀ2¹Y¼YÑGÔGˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   rH  Úradiusc                óÜ   — |                       ¦   «         }|                     t          |¦  «        |¦  «        }|                     ||||||	||||¬¦
  «
         |                     |
¦  «         |S )ú*Draw a circle given its center and radius.©
r  r  rn  rl  r$  r%  rþ  r&  r'  rÕ  )rÔ  Údraw_circlerú  rÖ  rØ  )rÖ   rH  r+  r  r  rþ  rn  rl  r$  r%  r5  r&  r'  rÕ  rß  rë   s                   r)   r/  zPage.draw_circlea-  s~   € ð" �nŠnÑÔˆØ�OŠO�E &™MœM¨6Ñ2Ô2ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐØˆr*   c                ó  — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }|                     |||||
|||	|||¬¦  «         |                     |¦  «         |S )zdDraw a special Bezier curve from p1 to p3, generating control points on lines p1 to p2 and p2 to p3.r)  )rÔ  Ú
draw_curverú  rÖ  rØ  )rÖ   r  r  r!  r  r  rn  rl  rþ  r#  r$  r%  r5  r&  r'  rÕ  rß  rë   s                     r)   r1  zPage.draw_curveƒ-  s�   € ð& �nŠnÑÔˆØ�NŠN�5 ™9œ9¥e¨B¡i¤iµ°r±´Ñ;Ô;ˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óö   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        ¦  «        }|                     |||d|||	|
||¬¦
  «
         |                     |¦  «         |S )z&Draw a line from point p1 to point p2.F©
r  rn  rl  r#  r$  r%  rþ  r&  r'  rÕ  )rÔ  Ú	draw_linerú  rÖ  rØ  )rÖ   r  r  r  rn  rl  r$  r%  r5  rþ  r&  r'  rÕ  rß  r²  s                  r)   r4  zPage.draw_line©-  s„   € ð  �nŠnÑÔˆØ�MŠM�% ™)œ)¥U¨2¡Y¤YÑ/Ô/ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   ú"typing.Union[rect_like, quad_like]c                óÀ   — |                       ¦   «         }|                     |¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )z4Draw an oval given its containing rectangle or quad.r.  )rÔ  Ú	draw_ovalrÖ  rØ  )rÖ   r  r  r  rn  rþ  rl  r$  r%  r5  r&  r'  rÕ  rß  rë   s                  r)   r7  zPage.draw_ovalË-  sv   € ð  �nŠnÑÔˆØ�MŠM˜$ÑÔˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óÂ   — |                       ¦   «         }|                     |¦  «        }|                     ||||||||
|||¬¦  «         |                     |	¦  «         |S )z&Draw multiple connected line segments.r)  )rÔ  Údraw_polylinerÖ  rØ  )rÖ   r  r  r  rn  rl  rþ  r$  r%  r5  r#  r&  r'  rÕ  rß  rë   s                   r)   r9  zPage.draw_polylineí-  s{   € ð" �nŠnÑÔˆØ×Ò˜fÑ%Ô%ˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   r  r»   c                óÚ   — |                       ¦   «         }|                     t          |¦  «        ¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )zDraw a quadrilateral.r.  )rÔ  Ú	draw_quadÚQuadrÖ  rØ  )rÖ   r  r  r  rn  rl  r$  r%  rþ  r5  r&  r'  rÕ  rß  rë   s                  r)   r;  zPage.draw_quad.  s|   € ð  �nŠnÑÔˆØ�MŠM�$˜t™*œ*Ñ%Ô%ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óÞ   — |                       ¦   «         }|                     t          |¦  «        |¬¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )zG
        Draw a rectangle. See Shape class method for details.
        ©r+  r.  )rÔ  rÕ  r4  rÖ  rØ  )rÖ   r  r  r  rn  rl  r$  r%  rþ  r5  r&  r'  rÕ  r+  rß  rë   s                   r)   rÕ  zPage.draw_rect3.  s€   € ð& �nŠnÑÔˆØ�MŠM�$˜t™*œ*¨VˆMÑ4Ô4ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   ÚbetaÚ
fullSectorc                óþ   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        ||¬¦  «        }|                     ||||	||||
|||¬¦  «         |                     |¦  «         |S )a  Draw a circle sector given circle center, one arc end point and the angle of the arc.

        Parameters:
            center -- center of circle
            point -- arc end point
            beta -- angle of arc (degrees)
            fullSector -- connect arc ends with center
        ©r@  r)  )rÔ  Údraw_sectorrú  rÖ  rØ  )rÖ   rH  r9  r?  r  r  rn  r@  rþ  rl  r#  r$  r%  r5  r&  r'  rÕ  rß  rë   s                      r)   rC  zPage.draw_sectorX.  s�   € ð6 �nŠnÑÔˆØ�OŠO�E &™MœM­5°©<¬<¸È*ˆOÑUÔUˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   Úbreadthc                óú   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        |¬¦  «        }|                     |||d|||
|||¬¦
  «
         |                     |	¦  «         |S )z/Draw a squiggly line from point p1 to point p2.©rD  Fr3  )rÔ  Údraw_squigglerú  rÖ  rØ  ©rÖ   r  r  rD  r  rn  rl  r$  r%  r5  rþ  r&  r'  rÕ  rß  r²  s                   r)   rG  zPage.draw_squiggle†.  s‹   € ð" �nŠnÑÔˆØ×Ò�e B™iœi­¨r©¬¸GÐÑDÔDˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óú   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        |¬¦  «        }|                     |||d|||
|||¬¦
  «
         |                     |	¦  «         |S )z-Draw a zigzag line from point p1 to point p2.rF  Fr3  )rÔ  Údraw_zigzagrú  rÖ  rØ  rH  s                   r)   rJ  zPage.draw_zigzag©.  sˆ   € ð" �nŠnÑÔˆØ�OŠO�E "™IœI¥u¨R¡y¤y¸'ˆOÑBÔBˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óN  — | j         }|j         }t          |t          j        ¦  «        sJ ‚t          j        ¦   «         }||_        t          |¦  «        }t          j        ||¦  «        }t          j        |||t          j	        ¦   «         ¦  «         t          j
        |¦  «         d S r,   )rÄ   r>   r�   r  r  rÎ  rã  rº  r  rÕ  r  )	r(   r  rÎ  ré  rÖ   rÄ  r  rî  r  s	            r)   Úextend_textpagezPage.extend_textpageÌ.  s’   € ØŒyˆØŒZˆÝ˜2�uÔ0Ñ1Ô1Ð1Ð1Ð1ÝÔ&Ñ(Ô(ˆØˆŒÝ Ñ'Ô'ˆÝŒn˜R Ñ)Ô)ˆÝÔ˜4  c­5¬>Ñ+;Ô+;Ñ<Ô<Ð<ÝÔ˜sÑ#Ô#Ð#Ð#Ð#r*   c                ó&   — t          j        | fi |¤ŽS r,   )ÚtableÚfind_tablesrì  s     r)   rO  zPage.find_tables×.  s   € ÝÔ  Ð0Ð0¨Ð0Ð0Ð0r*   c                ó(  — t          | ¦  «         |                      d¬¦  «        }|j        sdS t          j        |¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   |S )zFirst annotation.Fr:  NT)rv  rl  rÌ   r�   Úpdf_first_annotró   r  r  r  rû   rG  rH  )r(   rÖ   rß   r"  s       r)   Úfirst_annotzPage.first_annotÚ.  s�   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆFÝÔ% dÑ+Ô+ˆØÔð 	ØˆFÝ�E‰lŒlˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Øˆ
r*   c                ó*   — |                       ¦   «         S )z$
        First link on page
        )Ú
load_linksr.   s    r)   Ú
first_linkzPage.first_linkê.  s   € ð
 �ŠÑ Ô Ð r*   c                ó‚  — t          | ¦  «         d}|                      d¬¦  «        }|j        sdS t          j        |¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   t          ¦   «         }t                               ||¦  «         |}|S )zFirst widget/field.r   Fr:  NT)rv  rl  rÌ   r�   Úpdf_first_widgetró   r  r  r  rû   rG  rH  rI  r  rJ  )r(   rß   rÖ   r"  rK  s        r)   Úfirst_widgetzPage.first_widgetñ.  s¸   € õ 	�DÑÔÐØˆØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆFÝÔ& tÑ,Ô,ˆØÔð 	ØˆFÝ�E‰lŒlˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Ý‘”ˆÝ×Ò˜3 Ñ'Ô'Ð'ØˆØˆ
r*   c                óv  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }g }|rdnd}t	          ||¦  «        }t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         t          j	        |¦  «         |dk    r|                      |¦  «         |S )Nr   TF)
rv  r_  rÅ  rÄ   ÚJM_new_bbox_devicer�   r  r‚  rÕ  r  )r(   Úlayersr„  rÖ   r    Ú
inc_layersr  s          r)   Úget_bboxlogzPage.get_bboxlog/  s»   € Ý�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆØˆØ#Ð.�T�T¨ˆ
Ý  " jÑ1Ô1ˆÝÔ˜4 ¥e¤nÑ&6Ô&6½¼Ñ8HÔ8HÑIÔIÐIÝÔ˜sÑ#Ô#Ð#à˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Øˆ	r*   c                ó\  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }t	          |t
          j        ¦  «        rt          j        |¦  «        }t	          |t
          j        ¦  «        sJ d| j        ›�¦   «         ‚|rdnd}t          j        |¦  «        }t          rt          j        ||||¦  «        }n²t          ¦   «         }t          |¦  «        s|�t          |||¦  «        }	nt          |||¦  «        }	t          j        ddddd|j        ¦  «        |	_        t          j        ||	t          j        ¦   «         t          j        ¦   «         ¦  «         t          j        |	¦  «         |dk    r|                      |¦  «         t          |¦  «        s|�dS |S )z3Extract vector graphics ("line art") from the page.r   z
self.this=TFNr   rA  )rv  r_  rÅ  rÄ   r>   r�   rÓ   rÔ   r  r'  r   Úget_cdrawingsr´   ÚcallableÚJM_new_lineart_device_Devicer‚  r  Úptmr  rÕ  r  )
r(   ÚextendedÚcallbackÚmethodr„  rÖ   ÚclipsÚprectr    r  s
             r)   r_  zPage.get_cdrawings/  sœ  € å�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆÝ�d�EœMÑ*Ô*ð 	&å”< Ñ%Ô%ˆDÝ˜$¥¤Ñ-Ô-Ð>Ð>¨°$´)¨¨Ñ>Ô>Ð-Ø Ð+�� eˆÝÔ# DÑ)Ô)ˆÝð 
	'ÝÔ$ T¨8°X¸vÑFÔFˆBˆBå‘”ˆBÝ˜Ñ!Ô!ð F VÐ%7Ý2°8¸UÀFÑKÔK��å2°2°u¸fÑEÔE�Ý”n Q¨¨1¨b°!°U´XÑ>Ô>ˆCŒGÝÔ˜d C­¬Ñ)9Ô)9½5¼>Ñ;KÔ;KÑLÔLÐLÝÔ! #Ñ&Ô&Ð&à˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Ý�HÑÔð 	 Ð!3ØˆFØˆ	r*   c                ó  — t          | ¦  «         g }t          | j        ¦  «        }|                     ¦   «         }t	          j        |t          j        ¦  «        }t	          j        |¦  «        ret	          j        |¦  «        }t          |¦  «        D ]@}t	          j
        ||¦  «        }t	          j        |¦  «        }|                     |¦  «         ŒAn0|j        r)t	          j        |¦  «        }|                     |¦  «         |S )zGet xrefs of /Contents objects.)rv  rÚ   rÄ   r  r�   r  r   r™  r«  r\  r¬  r  rk   rÌ   )	r(   rG   rÖ   r  r�  rE   r®   Úicontr   s	            r)   Úget_contentszPage.get_contents4/  sî   € å�DÑÔÐØˆÝ˜DœIÑ&Ô&ˆØ�hŠh‰jŒjˆÝÔ% c­5Ô+GÑHÔHˆÝÔ˜hÑ'Ô'ð 	ÝÔ# HÑ-Ô-ˆAÝ˜1‘X”Xð !ð !�ÝÔ+¨H°aÑ8Ô8�ÝÔ'¨Ñ.Ô.�Ø—
’
˜4Ñ Ô Ð Ð ð!ð Ô ð 	ÝÔ# HÑ-Ô-ˆDØ�JŠJ˜ÑÔÐØˆ
r*   c                ó¨   — t          | ¦  «         |rt          j        | j        ¦  «        }nt          j        | j        ¦  «        }t          |¦  «        S )z|
        Make a DisplayList from the page for Pixmap generation.

        Include (default) or exclude annotations.
        )rv  r�   Úfz_new_display_list_from_pagerÄ   Ú&fz_new_display_list_from_page_contentsrÇ  )r(   r¯  rÊ  s      r)   Úget_displaylistzPage.get_displaylistF/  sM   € õ 	�DÑÔÐØð 	IÝÔ4°T´YÑ?Ô?ˆBˆBåÔ=¸d¼iÑHÔHˆBÝ˜2‰ŒÐr*   rc  c                óê  — d}|                       |¬¦  «        }t          t          |¦  «        ¦  «        D �]<}||         }|d                              d¦  «        st	          |d         ¦  «        |d<   nt	          |d         ¦  «        |d<   |d         dk    r­|d         }g }|D ]›}|d	         }	|d
d…         }
|	dk    r1dt	          |
d	         ¦  «                             ¦   «         |
d
         f}n;|	dk    rdt          |
d	         ¦  «        f}nt          |	gd„ |
D ¦   «         z   ¦  «        }|                     |¦  «         Œœ||d<   |d         dv r|D ]}| 	                    |¦  «        ||<   Œ|||<   �Œ>|S )a<  Retrieve vector graphics. The extended version includes clips.

        Note:
        For greater comfort, this method converts point-likes, rect-likes, quad-likes
        of the C version to respective Point / Rect / Quad objects.
        It also adds default items that are missing in original path types.
        )
r#  r  r  rl  r$  r%  rn  r&  r'  Úeven_odd)rc  rÈ   r  r  ÚscissorrÒ  rB   r   r   NrÑ  Úquc                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©rú  r¬   s     r)   r¯   z%Page.get_drawings.<locals>.<listcomp>y/  s   € Ð-EÐ-EÐ-E¸1­e°A©h¬hÐ-EÐ-EÐ-Er*   r0  )r_  r\  r7   r3   r4  Ú	normalizer<  rµ   rk   r8   Úobject)r(   rc  Úallkeysr"  r®   ÚnpathrB   ÚnewitemsrC   ÚcmdÚrestrª  ÚDrawpathÚDrawpathlistÚget_linearts                  r)   Úget_drawingszPage.get_drawingsS/  s£  € ðˆð × Ò ¨(Ð Ñ3Ô3ˆÝ•s˜3‘x”x‘”ð 	ñ 	ˆAØ˜”FˆEØ˜”=×+Ò+¨FÑ3Ô3ð :Ý $ U¨6¤]Ñ 3Ô 3��f‘�å#'¨¨iÔ(8Ñ#9Ô#9��iÑ Ø�VŒ}˜gÒ%Ð%Ø˜gœ�Ø�Ø!ð 	*ð 	*�DØ˜qœ'�CØ   œ8�DØ˜tš˜Ø $¥d¨4°¬7¡m¤m×&=Ò&=Ñ&?Ô&?ÀÀaÄÐI˜˜Ø š˜Ø $¥d¨4°¬7¡m¤mÐ4˜˜å$ c UÐ-EÐ-EÀÐ-EÑ-EÔ-EÑ%EÑFÔF˜Ø—O’O DÑ)Ô)Ð)Ð)Ø!)��g‘Ø�VŒ} 
Ð*Ð*Ø ð ,ð ,�AØ$Ÿyšy¨™|œ|�E˜!‘H�HàˆC�‰F‰FØˆ
r*   ÚhashesrN  c                ó  — | j         }|r	|j        rd}|j        sd}t          | dd¦  «        }|r|s|S |s;|                      t          ¬¦  «        }|                     |¬¦  «        }~|r|| _        |r|j        s|S |                      ¦   «         }i }|D ]%}|d         }	t          ||	¦  «        }
|	||
j	        <   ~
Œ&t          t          |¦  «        ¦  «        D ]0}||         }|                     |d         d¦  «        }	|	|d	<   |||<   Œ1|S )
zßExtract image information only from a pymupdf.TextPage.

        Args:
            hashes: (bool) include MD5 hash for each image.
            xrefs: (bool) try to find the xref for each image. Sets hashes to true.
        TFÚ_image_infoNr^	  ©r€  r   rD  r   )rû   rç  rý   r  ÚTEXT_PRESERVE_IMAGESÚextractIMGINFOr‚  Ú
get_imagesrç  rD  r\  r7   r8   )rÖ   r€  rN  r:  ÚimginforÄ  Úimglistr8  rC   r   rð  r®   s               r)   Úget_image_infozPage.get_image_info0  sU  € ð ŒkˆØð 	�S”Zð 	ØˆFØŒzð 	ØˆEÝ˜$ ¨tÑ4Ô4ˆØð 	˜5ð 	ØˆNØð 	+Ø×"Ò"Õ)=Ð"Ñ>Ô>ˆBØ×'Ò'¨vÐ'Ñ6Ô6ˆGØØð +Ø#*�Ô Øð 	˜CœJð 	ØˆNØ—/’/Ñ#Ô#ˆØˆØð 	ð 	ˆDØ˜”7ˆDÝ˜˜dÑ#Ô#ˆCØ"&ˆG�C”JÑØ�Ý•s˜7‘|”|Ñ$Ô$ð 	ð 	ˆAØ˜1”:ˆDØ—;’;˜t Hœ~¨qÑ1Ô1ˆDØˆD�‰LØˆG�A‰JˆJØˆr*   c                óö  ‡‡— t          ‰¦  «        t          t          fv r	‰d         }n~t          ‰¦  «        t          u r‰}neˆfd„|                      ¦   «         D ¦   «         }|g k    rt          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚|d         d         }t          | j        |¦  «        }|j	        Š~|  
                    d¬¦  «        }|sˆfd„|D ¦   «         }nˆfd	„|D ¦   «         }|S )
a¹  Return list of image positions on a page.

        Args:
            name: (str, list, int) image identification. May be reference name, an
                  item of the page's image list or an xref.
            transform: (bool) whether to also return the transformation matrix.
        Returns:
            A list of pymupdf.Rect objects or tuples of (pymupdf.Rect, pymupdf.Matrix)
            for all image locations on the page.
        r   c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS ©rÐ  r-   ©r­   r®   r   s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>J0  s"   ø€ ÐDÐDÐD˜Q°q¸´t¸t²|°|�q°|°|°|r*   úbad image namer   zmultiple image names foundTrƒ  c                óR   •— g | ]#}|d          ‰k    ¯t          |d         ¦  «        ‘Œ$S )rD  r?  ©r4  ©r­   ÚimrD  s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>U0  s3   ø€ ÐQÐQÐQ¨2¸"¸X¼,È&Ò:PÐ:P•d˜2˜fœ:Ñ&Ô&Ð:PÐ:PÐ:Pr*   c                ó|   •— g | ]8}|d          ‰k    ¯t          |d         ¦  «        t          |d         ¦  «        f‘Œ9S )rD  r?  rU  )r4  r…  r‘  s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>W0  sO   ø€ ð ð ð àØ�h”< 6Ò)Ð)õ �b˜”jÑ!Ô!¥6¨"¨[¬/Ñ#:Ô#:Ð;à)Ð)Ð)r*   )rÈ   r´   rµ   r4   r†  rÃ   r7   rç  rû   rD  r‰  )	rÖ   r   rU  r   rˆ  rð  ÚinfosÚbboxesrD  s	    `      @r)   Úget_image_rectszPage.get_image_rects:0  s)  øø€ õ �‰:Œ:�$¥˜Ð&Ð&Ø˜”7ˆDˆDÝ�$‰ZŒZ�3ÐÐØˆDˆDàDÐDÐDÐD $§/¢/Ñ"3Ô"3ÐDÑDÔDˆGØ˜"Š}ˆ}Ý Ð!1Ñ2Ô2Ð2Ý�W‘” Ò"Ð"Ý Ð!=Ñ>Ô>Ð>Ø˜1”:˜a”=ˆDÝ�T”[ $Ñ'Ô'ˆØ”ˆØØ×#Ò#¨4Ð#Ñ0Ô0ˆØð 	ØQÐQÐQÐQ°ÐQÑQÔQˆFˆFðð ð ð àðñ ô ˆFð
 ˆr*   c                ó˜   — | j                              ¦   «         }|sdS |                     ¦   «          t          j        | j        |¦  «        S )z³Return the label for this PDF page.

        Args:
            page: page object.
        Returns:
            The label (str) of the page. Errors return an empty string.
        r\   )rû   r;  rã  r  r   rh  )rÖ   r”  s     r)   Ú	get_labelzPage.get_label^0  sF   € ð ”×-Ò-Ñ/Ô/ˆØð 	Ø�2Ø�Š‰ŒˆÝÔ" 4¤;°Ñ7Ô7Ð7r*   c                óÚ  — t          | ¦  «         | j        }g }|r8t          j        || j        ¦  «        }|                     |¦  «         |j        }|°8|g k    r’| j        j        r†d„ t          | ¦  «        D ¦   «         }t          |¦  «        t          |¦  «        k    rMt          t          |¦  «        ¦  «        D ]0}||         d         ||         d<   ||         d         ||         d<   Œ1|S )z~Create a list of all links contained in a PDF page.

        Notes:
            see PyMuPDF ducmentation for details.
        c                ó>   — g | ]}|d          t           j        k    ¯|‘ŒS r>  rD  rÿ  s     r)   r¯   z"Page.get_links.<locals>.<listcomp>}0  s7   € ð ð ð ˜qð ˜”t�uÔ3Ò3Ð3ð ð 4Ð3Ð3r*   r   r   r   rH  )rv  rU  r  r¼  rû   rk   rL  rç  r½  r7   r\  )rÖ   Úlnrˆ  ÚnlÚ	linkxrefsr®   s         r)   r}  zPage.get_linksn0  sÿ   € õ 	�DÑÔÐØŒ_ˆØˆØð 	ÝÔ" 2 t¤{Ñ3Ô3ˆBØ�LŠL˜ÑÔÐØ”ˆBð ð 	ð �BŠ;ˆ;˜4œ;Ô-ˆ;ðð å+¨DÑ1Ô1ðñ ô ˆIõ
 �9‰~Œ~¥ U¡¤Ò+Ð+Ý�s 9™~œ~Ñ.Ô.ð 5ð 5�AØ'0°¤|°A¤�E˜!”H˜VÑ$Ø%.¨q¤\°!¤_�E˜!”H˜T‘N�NØˆr*   r¥  ré  r¹   rë  r   r  rì  r¯  r¦  c               óÂ  — |€t           }|r|dz  }t          ||¦  «        }t          |¦  «        t          u rG|                     ¦   «         dk    rt
          }n'|                     ¦   «         dk    rt          }nt           }|j        dvrt          d¦  «        ‚|  	                    |¬¦  «        }| 
                    ||||¬¦  «        }	d}|r|	                     ||¦  «         |	S )	aÏ  Create pixmap of page.

        Keyword args:
            matrix: Matrix for transformation (default: Identity).
            dpi: desired dots per inch. If given, matrix is ignored.
            colorspace: (str/Colorspace) cmyk, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) whether to include alpha channel
            annots: (bool) whether to also render annotations
        NrÝ  rª  r¬  rz  zunsupported colorspace)r¯  )ré  rë  rì  r  )rß  r…  rÈ   rá  rŠ	  rÞ  rà  rE   rÃ   rn  rñ  rè  )
rÖ   ré  rê  rë  r  rì  r¯  rh  rÊ  rð  s
             r)   rñ  zPage.get_pixmapˆ0  sõ   € ð( ÐÝˆJØð 	(Ø˜‘8ˆDÝ˜D $Ñ'Ô'ˆFå�
ÑÔ�sÐ"Ð"Ø×ÒÑ!Ô! VÒ+Ð+Ý#�
�
Ø×!Ò!Ñ#Ô# vÒ-Ð-Ý#�
�
å"�
ØŒ<˜yÐ(Ð(ÝÐ5Ñ6Ô6Ð6à×!Ò!¨Ð!Ñ0Ô0ˆØ�mŠm 6°jÈÐTXˆmÑYÔYˆØˆØð 	"Ø�KŠK˜˜SÑ!Ô!Ð!Øˆ
r*   c                óÞ  ‡'‡(‡)‡*— | j         }|dk    rt          S t          j        t          j        t          j        t          j        h}t          j        t          j        t          j	        h}| j
        }g }|                      ¦   «         D �]}|j        d         }|j         }||t          |j        ¦  «        t          |j        ¦  «        dœ}	|t          j        k    r|dk    r||z
  dz  |	d<   nd|	d<   ||v s||v rd„ |j        D ¦   «         |	d<   nm|t          j        k    rd„ |j        D ¦   «         |	d	<   nH|t          j        k    r8|                     |j        d
¦  «        \  }
}|
dk    rd„ |j        D ¦   «         |	d<   |                     |	¦  «         �Œ
g }t          j        | j        ¦  «        }|j        r\|                     t          t5          |                     ¦   «         ¦  «        ¦  «        ¦  «         |                     ¦   «         }|j        °\d„ |                      ¦   «         D ¦   «         }t;          t=          ||¦  «        ¦  «        }d„ |                      ¦   «         D ¦   «         }| j         
 }| j!        }|dk    r2t          dddd|j"        |j#        z
  |j$        z
  |j%        z
  d¦  «        }n\|dk    r2t          ddddd|j#        |j"        z
  |j%        z
  |j$        z
  ¦  «        }n$t          ddddd|j$        z  d|j%        z  ¦  «        }|| j&        z  }tO          tQ          |¦  «        ¦  «        dz   }| )                    d¦  «        }tT           +                    | |d¦  «        }|dv r8|\  }}}}||_$        ||_%        ||_#        ||_"        |  ,                    |¦  «         |Š*|  -                    d¦  «         t          | j!        ¦  «        Š'ˆ'fd„Š)ˆ)fd„Š(ˆ(fd„}|D �]§}	|	d         }|	d         }|	d         ‰*z  } ‰)t]          |j$        |j"        ¦  «        ¦  «        } ‰)t]          |j#        |j%        ¦  «        ¦  «        }| /                    |j        ddtO          |j0        |j1        |j0        |j1        f¦  «        › d �¦  «         ||v s||v rSˆ*fd!„|	d         D ¦   «         }||v rd"n|t          j        k    rd#nd$}| /                    |j        | ‰(|¦  «        ¦  «         |t          j        k    r9ˆ*fd%„|	d	         D ¦   «         }| /                    |j        d& ||¦  «        ¦  «         d|	v r9ˆ*fd'„|	d         D ¦   «         } | /                    |j        d
 ‰(| ¦  «        ¦  «         d|	v rH|	d         dk    r<| /                    |j        d(te          tg          |	d         ¦  «        ¦  «        ¦  «         	 |t          j        k    r‡|d)k    r | 4                    |	d*         ‰*z  ¦  «         �n‰|j$        |j#        z   d+z  }!|j%        |j"        z   d+z  }"t          ddddd+|!z  d+|"z  ¦  «        }#| 4                    |	d*         ‰*z  |#z  ¦  «         �n(|t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j5        t          j        f	v r3| 6                    |t          j7        t          j5        fv rdnd¬,¦  «         nŽ|t          j7        k    rE|d)k    r| 4                    |	d*         ‰*z  ¦  «         nY| 4                    |	d*         ‰* z  ¦  «         n9|	d          8                    |¦  «        }$| 4                    |	d*         |$z  ¦  «         �Œ˜# tr          $ r Y �Œ¥w xY w|D ]‹\  }%} ‰)t]          |j$        |j"        ¦  «        ¦  «        } ‰)t]          |j#        |j%        ¦  «        ¦  «        }| /                    |%ddtO          |j0        |j1        |j0        |j1        f¦  «        › d �¦  «         ŒŒtu          |  ;                    ¦   «         ¦  «         |D ]4\  }&}|‰*z  }|j<        s|j=        rŒ||&_        |& >                    ¦   «          Œ5| S )-z;Set page rotation to 0 while maintaining visual appearance.r   )rß   rÈ   r  r‡  rA  rÃ  Únew_annot_rotationc                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rt  r‹  s     r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>Ö0  s   € Ð$FÐ$FÐ$F°!¥U¨1¡X¤XÐ$FÐ$FÐ$Fr*   rù  c                ó&   — g | ]}d „ |D ¦   «         ‘ŒS )c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rt  r‹  s     r)   r¯   z3Page.remove_rotation.<locals>.<listcomp>.<listcomp>Ø0  s   € Ð =Ð =Ð =¨a¥ q¡¤Ð =Ð =Ð =r*   r-   )r­   Ú	subpointss     r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>Ø0  s'   € Ð^Ð^Ð^À)Ð =Ð =°9Ð =Ñ =Ô =Ð^Ð^Ð^r*   Úinkr-  r	  c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rt  r‹  s     r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>Ü0  s   € Ð"DÐ"DÐ"D°¥5¨¡8¤8Ð"DÐ"DÐ"Dr*   Úclc                ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r-   rD  )r­   r   r   r  s       r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>å0  s6   € ð 
ð 
ð 
á#��j !Ø�UÔ1Ò1Ð1ð à1Ð1Ð1r*   c                ó:   — g | ]}|t          |j        ¦  «        f‘ŒS r-   )r4  r  )r­   rK  s     r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>ë0  s'   € ÐLÐLÐL°6�F�D ¤Ñ-Ô-Ð.ÐLÐLÐLr*   rÄ  r   é  ræ  z cm r
  F©rÄ  rª  c                óv   •— t          | ¦  «        } t          | j        ‰j        z   ‰j        | j        z
  ¦  «        S r,   )rú  r4  r  r  r5  )r9  Úpdf_mbs    €r)   Úto_pdf_pointz*Page.remove_rotation.<locals>.to_pdf_point1  s0   ø€ Ý˜%‘L”LˆEÝ˜œ 6¤9Ñ,¨f¬i¸%¼'Ñ.AÑBÔBÐBr*   c                óR   •— dd                      ˆfd„| D ¦   «         ¦  «        z   dz   S )Nr{  r³   c              3  ób   •K  — | ])}t          t           ‰|¦  «        ¦  «        ¦  «        V — Œ*d S r,   )r¶   rµ   )r­   r²  r®  s     €r)   r   z>Page.remove_rotation.<locals>.points_string.<locals>.<genexpr>1  s;   øè è € Ð!TÐ!TÈ¥)­E°,°,¸q±/´/Ñ,BÔ,BÑ"CÔ"CÐ!TÐ!TÐ!TÐ!TÐ!TÐ!Tr*   r|  ©rê  )r  r®  s    €r)   Úpoints_stringz+Page.remove_rotation.<locals>.points_string1  s5   ø€ Ø˜ŸšÐ!TÐ!TÐ!TÐ!TÈVÐ!TÑ!TÔ!TÑTÔTÑTÐWZÑZÐZr*   c                óR   •— dd                      ˆfd„| D ¦   «         ¦  «        z   dz   S )Nr{  r³   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r,   r-   )r­   r¤  r²  s     €r)   r   zEPage.remove_rotation.<locals>.nested_points_string.<locals>.<genexpr>1  s-   øè è € Ð!SÐ!S¸y - -°	Ñ":Ô":Ð!SÐ!SÐ!SÐ!SÐ!SÐ!Sr*   r|  r±  )r  r²  s    €r)   Únested_points_stringz2Page.remove_rotation.<locals>.nested_points_string1  s5   ø€ Ø˜ŸšÐ!SÐ!SÐ!SÐ!SÈFÐ!SÑ!SÔ!SÑSÔSÑSÐVYÑYÐYr*   rß   rÈ   r  r4  r{  r|  c                ó   •— g | ]}|‰z  ‘ŒS r-   r-   ©r­   r²  rU  s     €r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>!1  s   ø€ ÐCÐCÐC¨A˜!˜i™-ÐCÐCÐCr*   r,  r+  r*  c                ó,   •— g | ]}ˆfd „|D ¦   «         ‘ŒS )c                ó   •— g | ]}|‰z  ‘ŒS r-   r-   r·  s     €r)   r¯   z3Page.remove_rotation.<locals>.<listcomp>.<listcomp>&1  s   ø€ Ð<Ð<Ð<¨Q˜1˜y™=Ð<Ð<Ð<r*   r-   )r­   r¤  rU  s     €r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>&1  s.   ø€ Ð[Ð[Ð[ÀÐ<Ð<Ð<Ð<°)Ð<Ñ<Ô<Ð[Ð[Ð[r*   r.  c                ó   •— g | ]}|‰z  ‘ŒS r-   r-   r·  s     €r)   r¯   z(Page.remove_rotation.<locals>.<listcomp>*1  s   ø€ Ð@Ð@Ð@¨q˜Q ™]Ð@Ð@Ð@r*   rD  rö  r‡  r   ©ri  )?r_  r¨  r�   r•  r´  r¨  r®  rN  rO  rP  rû   r¯  rÈ   r4  r  r…  r‡  rT  rù  rV  rû  r   rk   Úfz_load_linksrÄ   rÌ   rw  rL  rÔ  r´   ru  rÇ  ra  r€  r  r  r  r  r|  r¶   rµ   r×  r  Ú_insert_contentsÚset_mediaboxrÅ  rú  r}  r4  r5  rá  r4   rf  rX  rt  rW  Útorectrg   rT
  rl  rd	  re	  r  )+r(   r_  Úquad_annotsÚline_annotsr:  Úannot_statesrß   r   Úannot_rotationrH  Úkey_typer  Ú
link_rectsrÁ  rG  Úlink_statesrÇ  Úcoord_transformrp  Úmat0r†  rz  r  r  r  r  rµ  r.  rŠ  r  r  r'  Ú	cl_pointsÚcxÚcyÚflip180Úap_mapr   rK  r­  r²  r®  rU  s+                                          @@@@r)   Úremove_rotationzPage.remove_rotation³0  s 	  øøøø€ à”=ˆØ�qŠ=ˆ=ÝˆOõ Ô%ÝÔ%ÝÔ$ÝÔ&ð	
ˆõ Ô ÝÔ%ÝÔ#ð
ˆð ŒkˆØˆØ—[’[‘]”]ð 	'ñ 	'ˆEØœ AœˆJØ"œ^ˆNàØ"Ý˜UœZÑ(Ô(Ý$ UÔ%5Ñ6Ô6ð	ð ˆEð �UÔ6Ò6Ð6Ø! RÒ'Ð'Ø3AÀHÑ3LÐPSÑ2S�EÐ.Ñ/Ð/à24�EÐ.Ñ/Ø˜[Ð(Ð(¨J¸+Ð,EÐ,EØ$FÐ$F°u´~Ð$FÑ$FÔ$F��jÑ!Ð!Ø�uÔ2Ò2Ð2Ø^Ð^ÈuÌ~Ð^Ñ^Ô^��e‘�Ø�uÔ8Ò8Ð8Ø!×.Ò.¨u¬z¸4Ñ@Ô@‘�˜!Ø˜wÒ&Ð&Ø"DÐ"D°U´^Ð"DÑ"DÔ"D�E˜$‘KØ×Ò Ñ&Ô&Ð&Ñ&àˆ
ÝÔ" 4¤9Ñ-Ô-ˆØŒoð 	Ø×Ò�d¥?°4·9²9±;´;Ñ#?Ô#?Ñ@Ô@ÑAÔAÐAØ—9’9‘;”;ˆDð Œoð 	ð
ð 
à'+×'7Ò'7Ñ'9Ô'9ð
ñ 
ô 
ˆ
õ
 �3˜z¨:Ñ6Ô6Ñ7Ô7ˆØLÐL¸T¿\º\¹^¼^ÐLÑLÔLˆØÔ/Ð/ˆð Œ]ˆà�rŠ>ˆ>å˜!˜Q  1 b¤e¨b¬e¡m°b´eÑ&;¸b¼eÑ&CÀQÑGÔGˆDˆDØ˜Š_ˆ_å˜!˜Q  1 a¨¬°´©¸¼Ñ)>ÀÄÑ)FÑGÔGˆDˆDå˜!˜Q  1 b¨2¬5¡j°"°r´u±*Ñ=Ô=ˆDð �TÔ+Ñ+ˆÝ�˜c™
œ
Ñ#Ô# fÑ,ˆØ�jŠj˜Ñ Ô ˆÝ×"Ò" 4¨¨eÑ4Ô4ˆð �yÐ Ð Ø‰NˆB��B˜ØˆBŒEØˆBŒEØˆBŒEØˆBŒEØ×Ò˜bÑ!Ô!Ð!à#ˆ	Ø×Ò˜!ÑÔÐå�d”mÑ$Ô$ˆð	Cð 	Cð 	Cð 	Cð 	Cð	[ð 	[ð 	[ð 	[ð 	[ð	Zð 	Zð 	Zð 	Zð 	Zð "ð 9	ñ 9	ˆEØ˜'”NˆEØ˜vœˆJØ�f” 	Ñ)ˆAØ��e A¤D¨!¬$Ñ/Ô/Ñ0Ô0ˆBØ��e A¤D¨!¬$Ñ/Ô/Ñ0Ô0ˆBØ×Ò˜UœZ¨Ð1[µYÀÄÀbÄdÈBÌDÐRTÔRVÐ?WÑ5XÔ5XÐ1[Ð1[Ð1[Ñ\Ô\Ð\à˜[Ð(Ð(¨J¸+Ð,EÐ,EØCÐCÐCÐC°°zÔ1BÐCÑCÔC�Ø&0°KÐ&?Ð&?�l�lÈZÕ[`Ô[oÒMoÐMoÀcÀcÐu�Ø× Ò  ¤¨S°-°-ÀÑ2GÔ2GÑHÔHÐHà�UÔ0Ò0Ð0Ø[Ð[Ð[Ð[ÈeÐTYÌlÐ[Ñ[Ô[�Ø× Ò  ¤¨YÐ8LÐ8LÈVÑ8TÔ8TÑUÔUÐUà�uˆ}ˆ}Ø@Ð@Ð@Ð@°E¸$´KÐ@Ñ@Ô@�	Ø× Ò  ¤¨T°=°=ÀÑ3KÔ3KÑLÔLÐLà# uÐ,Ð,°Ð7KÔ1LÐPRÒ1RÐ1RØ× Ò  ¤¨Xµs½3¸uÐEYÔ?ZÑ;[Ô;[Ñ7\Ô7\Ñ]Ô]Ð]ð!Ø¥Ô!:Ò:Ð:Ø 3’�Ø×,Ò,¨U°<Ô-@À9Ñ-LÑMÔMÐMÑMàœd Q¤T™k¨QÑ.˜Øœd Q¤T™k¨QÑ.˜Ý"(¨¨Q°°2°q¸2±v¸qÀ2¹vÑ"FÔ"F˜Ø×,Ò,¨U°<Ô-@À9Ñ-LÈwÑ-VÑWÔWÐWÑWØÝÔ-ÝÔ-ÝÔ,ÝÔ.ÝÔ(ÝÔ-ÝÔ+ÝÔ(ÝÔ'ð
$ð 
ð 
ð ×,Ò,¸ÍÔH]Õ_dÔ_sÐGtÐ9tÐ9t°A°AÐz|Ð,Ñ}Ô}Ð}Ð}Ø¥5Ô#8Ò8Ð8Ø 3’�Ø×,Ò,¨U°<Ô-@À9Ñ-LÑMÔMÐMÐMð ×,Ò,¨U°<Ô-@ÀIÀ:Ñ-MÑNÔNÐNÐNà" 6œ]×1Ò1°!Ñ4Ô4�FØ×(Ò(¨¨|Ô)<¸vÑ)EÑFÔFÐFùøÝð ð ð à‘ðøøøð #ð 	Wð 	W‰GˆD�!à��e A¤D¨!¬$Ñ/Ô/Ñ0Ô0ˆBØ��e A¤D¨!¬$Ñ/Ô/Ñ0Ô0ˆBØ×Ò˜T 6Ð+U­y¸"¼$ÀÄÀbÄdÈBÌDÐ9QÑ/RÔ/RÐ+UÐ+UÐ+UÑVÔVÐVÐVÝ˜ŸšÑ)Ô)Ñ*Ô*Ð*à ð 	ð 	‰IˆF�AØ�I‘ˆAØŒzð ˜Qœ]ð ØØˆFŒKØ�MŠM‰OŒOˆOˆOØˆtˆs   Ö4F?]5Ý5
^Þ^r   Úx_toleranceÚy_toleranceÚfinal_filterc                ó   ‡‡‡— t          | ¦  «         | j        Š|�t          |¦  «        Š|Š|Š|€|                      ¦   «         }ˆˆfd„}ˆfd„|D ¦   «         }t	          d„ |D ¦   «         d„ ¬¦  «        }g }	|r¥|d         
 }
d}|r_d	}t          t          |¦  «        d
z
  dd¦  «        D ]9} |||         |
¦  «        r%|
||         j        z  }
|
||         j        z  }
||= d}Œ:|°_|	 	                    |
¦  «         |d= t	          t          |¦  «        d„ ¬¦  «        }|°¥t	          t          |	¦  «        d„ ¬¦  «        }	|s|	S ˆˆfd„|	D ¦   «         S )aÊ  Join rectangles of neighboring vector graphic items.

        Args:
            clip: optional rect-like to restrict the page area to consider.
            drawings: (optional) output of a previous "get_drawings()".
            x_tolerance: horizontal neighborhood threshold.
            y_tolerance: vertical neighborhood threshold.

        Notes:
            Vector graphics (also called line-art or drawings) usually consist
            of independent items like rectangles, lines or curves to jointly
            form table grid lines or bar, line, pie charts and similar.
            This method identifies rectangles wrapping these disparate items.

        Returns:
            A list of Rect items, each wrapping line-art items that are close
            enough to be considered forming a common vector graphic.
            Only "significant" rectangles will be returned, i.e. having both,
            width and height larger than the tolerance values.
        Nc                óÐ  •— | j         | j        k    r| j        | j         fn| j         | j        f\  }}| j        | j        k    r| j        | j        fn| j        | j        f\  }}|j         |j        k    r|j        |j         fn|j         |j        f\  }}|j        |j        k    r|j        |j        fn|j        |j        f\  }}		 	 ||‰
z
  k     s||‰
z   k    s||‰z
  k     s	||	‰z   k    rdS dS )z÷Detect whether r1, r2 are "neighbors".

            Items r1, r2 are called neighbors if the minimum distance between
            their points is less-equal delta.

            Both parameters must be (potentially invalid) rectangles.
            r   FT©r  r  r  r  )Úr1Úr2Úrr1_x0Úrr1_x1Úrr1_y0Úrr1_y1Úrr2_x0Úrr2_x1Úrr2_y0Úrr2_y1Údelta_xÚdelta_ys             €€r)   Úare_neighborsz,Page.cluster_drawings.<locals>.are_neighborsƒ1  sÿ   ø€ ð 02¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�Fàðà˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,ð �uð �tr*   c                óÈ   •— g | ]^}	 	 |d         j         ‰j         k    rD|d         j        ‰j        k    r.|d         j        ‰j        k    r|d         j        ‰j        k    ¯\|‘Œ_S )r   r  ©r  r  r  r  )r­   r²  Úpareas     €r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>ž1  s{   ø€ ð 
ð 
ð 
àØð
ð �&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(ð ð )Ð(Ð(r*   c                ó   — g | ]
}|d          ‘ŒS rç  r-   r‹  s     r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>©1  s   € Ð2Ð2Ð2 q˜˜6œÐ2Ð2Ð2r*   c                ó   — | j         | j        fS r,   ©r  r  ©r.  s    r)   r¸	  z'Page.cluster_drawings.<locals>.<lambda>©1  s   € À1Ä4ÈÌÀ,€ r*   rÚ	  r   TFr   rA  c                ó   — | j         | j        fS r,   rç  rè  s    r)   r¸	  z'Page.cluster_drawings.<locals>.<lambda>¾1  s   € ¸¼¸a¼d°|€ r*   c                ó   — | j         | j        fS r,   rç  rè  s    r)   r¸	  z'Page.cluster_drawings.<locals>.<lambda>À1  s   € ¸!¼$ÀÄ¸€ r*   c                ó@   •— g | ]}|j         ‰k    ¯|j        ‰k    ¯|‘ŒS r-   rw  )r­   r.  rß  rà  s     €€r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>Ã1  s1   ø€ ÐQÐQÐQ�a¨¬°'Ò(9Ð(9¸a¼hÈÒ>PÐ>P�Ð>PÐ>PÐ>Pr*   )rv  r  r4  r  r  r\  r7   rû  rü  rk   râ  )r(   r  ÚdrawingsrÏ  rÐ  rÑ  rá  ÚpathsÚprectsÚ	new_rectsr.  Úrepeatr®   rß  rà  rä  s                @@@r)   Úcluster_drawingszPage.cluster_drawingsb1  sé  øøø€ õ0 	�DÑÔÐØ”	ˆØÐÝ˜‘J”JˆEØˆØˆØÐØ×(Ò(Ñ*Ô*ˆHð	ð 	ð 	ð 	ð 	ð 	ð6
ð 
ð 
ð 
àð
ñ 
ô 
ˆõ Ð2Ð2¨EÐ2Ñ2Ô2Ð8NÐ8NÐOÑOÔOˆàˆ	ð
 ð 	EØ˜”�
ˆAØˆFØð &Ø�Ý�s 6™{œ{¨Q™°°2Ñ6Ô6ð &ð &�AØ$�} V¨A¤Y°Ñ2Ô2ð &Ø˜V AœYœ\Ñ)˜Ø˜V AœYœ\Ñ)˜Ø" 1˜IØ!%˜øð ð &ð ×Ò˜QÑÔÐØ�q�	Ý�C ™KœKÐ-CÐ-CÐDÑDÔDˆFð ð 	Eõ  �3˜y™>œ>Ð/EÐ/EÐFÑFÔFˆ	Øð 	ØÐØQÐQÐQÐQÐQ˜9ÐQÑQÔQÐQr*   c                ób   — t          | ¦  «         | j                             | j        |¬¦  «        S )z)List of fonts defined in the page object.r0
  )rv  rû   r–  rh  ©r(   r�  s     r)   Ú	get_fontszPage.get_fontsÅ1  s-   € å�DÑÔÐØŒ{×)Ò)¨$¬+¸DÐ)ÑAÔAÐAr*   c           	     ó¶  ‡— t          | ¦  «         | j        }|j        s|j        rt	          d¦  «        ‚t          dddd¦  «        }t          ¦   «         }|r||f}n|}t          ‰¦  «        t          t          fv r.t          ‰d         ¦  «        t          urt	          d¦  «        ‚‰}nkˆfd„|                     | j        d¦  «        D ¦   «         }t          |¦  «        dk    r	|d         }n(|g k    rt	          d¦  «        ‚t	          d	‰› d
�¦  «        ‚|d         }	|	dk    s|r>	 |                      ||¬¦  «        d         S # t          $ r t!          ¦   «          |cY S w xY w|                      ¦   «         }
t%          |
¦  «        }t'          |¦  «        s|S |D ]¾}|d         |d         k    rŒt)          |d         ¦  «        }|j        }|dk    r|} n„t          t-          |j        |j        ¦  «        ¦  «        }t3          |j        |j        z
  ¦  «        }t3          |j        |j        z
  ¦  «        }t          d|z  ddd|z  dd¦  «        }||z   }||f} |}|S )zòGet rectangle occupied by image 'name'.

        'name' is either an item of the image list, or the referencing
        name string - elem[7] of the resp. item.
        Option 'transform' also returns the image transformation matrix.
        r9  r   rA  z!need item of full page image listc                ó,   •— g | ]}‰|d          k    ¯|‘ŒS rŒ  r-   r�  s     €r)   r¯   z'Page.get_image_bbox.<locals>.<listcomp>â1  s%   ø€ ÐYÐYÐY˜QÈDÐTUÐVWÔTXÊLÈL�qÈLÈLÈLr*   Tr   rŽ  zfound multiple images named 'rk  )rU  éýÿÿÿ)rv  rû   rÂ   r  rÃ   r4  r…  rÈ   r´   rµ   r4   rš  rh  r7   r–  rg   rv   rl  ÚJM_image_reporterrø   r<  r  Úutil_hor_matrixÚllÚlrrý  r¯  Úur)r(   r   rU  r:  Úinf_rectÚnull_matr    rC   rˆ  r   rg  r"  rF   r›  r?  ÚhmrÑ  r   Úm0r�  s    `                  r)   Úget_image_bboxzPage.get_image_bboxÊ1  s˜  ø€ õ 	�DÑÔÐØŒkˆØŒ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<å˜˜1˜b "Ñ%Ô%ˆÝ‘8”8ˆØð 	Ø˜HÐ%ˆBˆBàˆBå�‰:Œ:�$¥˜Ð&Ð&Ý˜˜Rœ‘>”>¥SÐ(Ð(Ý Ð!DÑEÔEÐEØˆDˆDàYÐYÐYÐY #×"5Ò"5°d´kÀ4Ñ"HÔ"HÐYÑYÔYˆGÝ�7‰|Œ|˜qÒ Ð Ø˜q”z��Ø˜B’�Ý Ð!1Ñ2Ô2Ð2å Ð!IÀÐ!IÐ!IÐ!IÑJÔJÐJØ�BŒxˆØ�1Š9ˆ9˜	ˆ9ð Ø×+Ò+¨D¸IÐ+ÑFÔFÀqÔIÐIøÝð  ð  ð  ÝÑ Ô Ð Ø���ð øøøð —>’>Ñ#Ô#ˆÝ Ñ)Ô)ˆå�C‰yŒyð 	ØˆIàð 	ð 	ˆAØ�Œt�t˜B”xÒÐØÝ�Q�q”T‘
”
ˆAØ”6ˆDØ˜AŠ~ˆ~Ø�Ø�å�¨¬¨a¬dÑ3Ô3Ñ4Ô4ˆBÝ�A”D˜1œ4‘KÑ Ô ˆAÝ�A”D˜1œ4‘KÑ Ô ˆAÝ˜˜A™˜q ! Q¨¡U¨A¨qÑ1Ô1ˆBØ�r‘'�
ˆAØ˜�ˆBØØˆàˆ
s   Ä%E ÅEÅEc                ób   — t          | ¦  «         | j                             | j        |¬¦  «        S )z*List of images defined in the page object.r0
  )rv  rû   rš  rh  ró  s     r)   r†  zPage.get_images
2  s-   € å�DÑÔÐØŒ{×*Ò*¨4¬;¸TÐ*ÑBÔBÐBr*   c                óÄ   — g }|                       ¦   «         D ]H\  }}| j                             |d¬¦  «        }d|v rd}nd|v rd}nŒ0|                     |||f¦  «         ŒI|S )zÈGet OCGs and OCMDs used in the page's contents.

        Returns:
            List of items (name, xref, type), where type is one of "ocg" / "ocmd",
            and name is the property name.
        Tr�  r  r¶  r€  Úocmd)r  rû   r’  rk   )r(   r    Úpnamer   r   Úoctypes         r)   Úget_oc_itemszPage.get_oc_items2  sŠ   € ð ˆØ×8Ò8Ñ:Ô:ð 	-ð 	-‰KˆE�4Ø”;×*Ò*¨4¸DÐ*ÑAÔAˆDØ˜dÐ"Ð"Ø��Ø Ð%Ð%Ø��àØ�IŠI�u˜d FÐ+Ñ,Ô,Ð,Ð,Øˆ	r*   c                óZ  — t          | ¦  «         t          j        | j        ¦  «        }t	          |¦  «        }|}|dk    rt          j        nt          j        }t          j        ||¦  «        }t          j        d¦  «        }t          j	        |¦  «        }t          j
        ||j        |j        z
  |j        |j        z
  |d¦  «        }	t          j        | j        |	|t          j        ¦   «         ¦  «         t          j        |	¦  «         |                     ¦   «          t'          |¦  «        }
|
S )zMake SVG image from page.r   é   )rv  r�   r  rÄ   rã  ÚFZ_SVG_TEXT_AS_PATHÚFZ_SVG_TEXT_AS_TEXTr¸  rî  rï  Úfz_new_svg_devicer  r  r  r  r  rÕ  r  r'  r€
  )r(   ré  Útext_as_pathr€  rî  ÚtboundsÚtext_optionr/  r(  r  r   s              r)   Úget_svg_imagezPage.get_svg_image"2  s
  € å�DÑÔÐÝÔ& t¤yÑ1Ô1ˆÝ Ñ'Ô'ˆØˆØ3?À1Ò3DÐ3D•eÔ/Ð/Í%ÔJcˆÝÔ)¨'°3Ñ7Ô7ˆåÔ! $Ñ'Ô'ˆÝŒn˜SÑ!Ô!ˆÝÔ%ØØ”
˜7œ:Ñ%Ø”
˜7œ:Ñ%ØØñô ˆõ 	Ô˜$œ) S¨#­u¬~Ñ/?Ô/?Ñ@Ô@Ð@ÝÔ˜cÑ"Ô"Ð"Ø×ÒÑÔÐÝ% cÑ*Ô*ˆØˆr*   c                ó®   — |}|€|                       ¦   «         }n#t          |d¦  «        | k    rt          d¦  «        ‚|                     |¦  «        }|€~|S )Nrû   únot a textpage of this page)r  rý   rÃ   ÚextractTextbox)rÖ   r  r¬  rÄ  r    s        r)   r  zPage.get_textbox:2  sf   € ð
 ˆØˆ:Ø×"Ò"Ñ$Ô$ˆBˆBÝ�R˜Ñ"Ô" dÒ*Ð*ÝÐ:Ñ;Ô;Ð;Ø×Ò˜tÑ$Ô$ˆØÐØØˆ	r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   r  r  s      r)   r  zPage.get_textI2  r	  r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )r  Úget_text_blocksr  s      r)   r  zPage.get_text_blocksL2  s#   € ÝÔ$ TÐ;¨DÐ;Ð;Ð;°FÐ;Ð;Ð;r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )r  Úget_text_selectionr  s      r)   r  zPage.get_text_selectionO2  s#   € ÝÔ'¨Ð>¨tÐ>Ð>Ð>°vÐ>Ð>Ð>r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )r  Úget_text_wordsr  s      r)   r  zPage.get_text_wordsR2  s#   € ÝÔ# DÐ:¨4Ð:Ð:Ð:°6Ð:Ð:Ð:r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )r  Úget_textpage_ocrr  s      r)   r  zPage.get_textpage_ocrU2  s#   € ÝÔ% dÐ<¨TÐ<Ð<Ð<°VÐ<Ð<Ð<r*   rÎ  r­  c                óˆ  — t          | ¦  «         |€t          dd¦  «        }| j        }|dk    r|                      d¦  «         	 |                      |||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          |¦  «        }t          j        | ¦  «        |_        |S )Nr   r   )rÎ  ré  )	rv  r…  r_  rÅ  r  r  r  r  rû   )r(   r  rÎ  ré  r„  r¬  s         r)   r  zPage.get_textpageX2  s×   € Ý�DÑÔÐØˆ>Ý˜A˜q‘\”\ˆFØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ð	0Ø×)Ò)¨$°eÀFÐ)ÑKÔKˆHà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜HÑ%Ô%ˆÝ!œ-¨Ñ-Ô-ˆŒØˆs   ÁA9 Á9Bc                óâ  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }g }	 t          j        |¦  «        }t          j        |¦  «        }t          j	        ddddd|j
        ¦  «        |_        t          j        ||t          j	        ¦   «         t          j        ¦   «         ¦  «         t          j        |¦  «         |dk    r|                      |¦  «         |S ©Nr   r   rA  )rv  r_  rÅ  rÄ   r'  r   ÚJM_new_texttrace_devicer�   r  r‚  r  rb  r  rÕ  r  )r(   r„  rÖ   r    r  rg  s         r)   rC
  zPage.get_texttraceh2  sâ   € å�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆØˆð	.ÝÔ/°Ñ3Ô3ˆCõ Ô# DÑ)Ô)ˆÝ”.  A q¨"¨a°´Ñ:Ô:ˆŒÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÝÔ˜cÑ"Ô"Ð"à˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Øˆ	r*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S )z,List of xobjects defined in the page object.)rv  rû   r²  rh  r.   s    r)   Úget_xobjectszPage.get_xobjects}2  s(   € å�DÑÔÐØŒ{×,Ò,¨T¬[Ñ9Ô9Ð9r*   rÞ  c                ó  — | j         }|€t          d¦  «        ‚d}|                     d¦  «        r
|dd …         }t                               |¦  «        }	|	t          ¦   «         k    rt          d|	› �¦  «        ‚t          | |¦  «        }
|
�1|
d         }t          ||¦  «        r|S |                     |¦  «         |S t           
                    |                     ¦   «         d ¦  «        }d}d}g d¢}g d¢}	 |                     |¦  «        }d}n)# t          $ r t          dk    rt          ¦   «          Y nw xY w|dk     rB	 |                     |¦  «        }d}n)# t          $ r t          dk    rt          ¦   «          Y nw xY w|                     ¦   «         t                                ¦   «         v rdd l}|                     |¦  «        }~|�`t)          |¦  «        t*          u r|}nIt-          |d	¦  «        rt+          |¦  «        }n)t-          |d
¦  «        r|j        }nt          d¦  «        ‚d }|                      ||||||||||¦
  «
        }|s|S |d         }|d         }t          ||¦  «        r|S |                     ||¬¦  «         |S )Nr9  r   rb  r   zbad fontname chars rA  )rµ
  r·
  r¹
  r¸
  )r¶
  úchina-ssújapan-súkorea-sr  r   zbad fontfile)rD  )rû   rÃ   r3   r‚
  rƒ
  râ  Ú	CheckFontrX  rb  r½
  r8   râ  ro  rg   r  rv   rº
  rÕ  r»
  r¼
  rÈ   rá  r;   r   rR  )r(   r	  r]  r^  rP  rÓ
  rû  r:  rC  Ú	inv_charsrb  r   r"  rÞ
  Ú
CJK_numberÚ
CJK_list_nÚ
CJK_list_sr»
  Úfontfile_strr"  rD  s                        r)   Úinsert_fontzPage.insert_font‚2  sú  € àŒkˆØˆ;ÝÐ>Ñ?Ô?Ð?Øˆà×Ò˜sÑ#Ô#ð 	$Ø   ”|ˆHÝ&×3Ò3°HÑ=Ô=ˆ	Ø�™œÒÐÝÐ>°9Ð>Ð>Ñ?Ô?Ð?å˜˜xÑ(Ô(ˆØÐØ˜”7ˆDÝ˜S $Ñ'Ô'ð Ø�à×Ò Ñ%Ô%Ð%ØˆKõ !×$Ò$ X§^¢^Ñ%5Ô%5°tÑ<Ô<ˆàˆØˆ
Ø=Ð=Ð=ˆ
ØCÐCÐCˆ
ð	Ø#×)Ò)¨(Ñ3Ô3ˆJØˆEˆEøÝð 	ð 	ð 	å# aÒ'Ð'­NÑ,<Ô,<Ð,<ØˆDð	øøøð
 ˜Š>ˆ>ðØ'×-Ò-¨hÑ7Ô7�
Ø��øÝð ð ð å'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø�ðøøøð
 �>Š>ÑÔÕ3×8Ò8Ñ:Ô:Ð:Ð:Ø Ð Ð Ð Ø&×-Ò-¨hÑ7Ô7ˆJØð ÐÝ�H‰~Œ~¥Ð$Ð$Ø'��Ý˜ :Ñ.Ô.ð 1Ý" 8™}œ}��Ý˜ 6Ñ*Ô*ð 1Ø'œ}��å  Ñ0Ô0Ð0àˆLØ×Ò˜x¨°¸zÈ:ÐWZØ$ e¨X°zñCô Cˆð ð 	ØˆJà�1ŒvˆØ�q”6ˆå˜˜dÑ#Ô#ð 	ØˆKð 	×Ò˜D¨8ÐÑ4Ô4Ð4Øˆs$   Ã5D Ä#D3Ä2D3Ä=E Å#E;Å:E;)	rF  Ú	scale_lowr0  ri  rÕ  rf  r5  Ú_scale_word_widthÚ_verboserµ   c       	   	     óŒ  ‡— |dz  dk    st          d¦  «        ‚|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °d|cxk    rdk    sn t          d¦  «        ‚|€d}t          |¦  «        }|d	v rt          dd|j        |j        ¦  «        }nt          dd|j        |j        ¦  «        }d
|z   }t	          |t
          ¦  «        rt          |||¬¦  «        }n't	          |t          ¦  «        r|}nt          d¦  «        ‚|dk    rdnd|z  }|                     |d||
rt          j	        nd|¬¦  «        Š‰j
        sd‰j        z  }d|fS t          ‰j        ¦  «        ‰_        ‰j        j        ‰j        j        fdk    sJ ‚‰j        j        ‰j        j        fdk    sJ ‚d‰j        z  }||k    sJ d|›d|›�¦   «         ‚t!          ‰j        j        ‰j        j        z
  |z  d¦  «        }ˆfd„}|                     |¦  «        }d|cxk    rdk     rVn nS|d         }|                     ||¬¦  «        }d|› d�}t(                               ||                     ¦   «         d¦  «         |                      ||d|||	¬¦  «         ‰j        j        ‰j        j        z   dz  |z  }|j        |j        z   dz  }t5          |dd||j         |j         ¦  «        t5          | ¦  «        z  t5          dddd|j        |j        ¦  «        z  }|d                              ¦   «         D ]'}|dxx         |z  cc<   |                      |¦  «         Œ(||fS )as  Insert text with optional HTML tags and stylings into a rectangle.

        Args:
            rect: (rect-like) rectangle into which the text should be placed.
            text: (str) text with optional HTML tags and stylings.
            css: (str) CSS styling commands.
            scale_low: (float) force-fit content by scaling it down. Must be in
                range [0, 1]. If 1, no scaling will take place. If 0, arbitrary
                down-scaling is acceptable. A value of 0.1 would mean that content
                may be scaled down by at most 90%.
            archive: Archive object pointing to locations of used fonts or images
            rotate: (int) rotate the text in the box by a multiple of 90 degrees.
            oc: (int) the xref of an OCG / OCMD (Optional Content).
            opacity: (float) set opacity of inserted content.
            overlay: (bool) put text on top of page content.
            _scale_word_width: internal, for testing only.
            _verbose: internal, for testing only.
        Returns:
            A tuple of floats (spare_height, scale).
            spare_height:
                The height of the remaining space in <rect> below the
                text, or -1 if we failed to fit.
            scale:
                The scaling required; `0 < scale <= 1`.
                Will be less than `scale_low` if we failed to fit.
        rÄ  r   zbad rotation anglerÃ  r   z'scale_low' must be in [0, 1]Nr\   r«  zbody {margin:1px;})ÚhtmlÚuser_cssr0  z"'text' must be a string or a Story)Ú	scale_minÚ	scale_maxrÎ  ró	  rA  rß  z
scale_low=z scale=c                 ó"   •— ‰j         ‰j         d fS r,   rç  )r  Úfits    €r)   Úrect_functionz*Page.insert_htmlbox.<locals>.rect_function<3  s   ø€ Ø”8˜SœX tÐ+Ð+r*   ©rF  rG  rb  ú gs
)ri  rÕ  r5  r   rd  )rÃ   r4  rà  rl  r>   rá  ÚStoryÚ	fit_scaler�   ÚFZ_PLACE_STORY_FLAG_NO_OVERFLOWÚ
big_enoughÚ	parameterrY	  r  r  r  rø  r  Úwrite_with_linksri  r  r½  r×  Úshow_pdf_pagerû  rü  r…  r4  r5  r}  Úinsert_link)rÖ   r  r   rF  r.  r0  ri  rÕ  rf  r5  r/  r0  Ú	temp_rectÚmycssÚstoryÚrect_scale_maxrµ  Úspare_heightr8  r:  r  rr  r�  Úmp1Úmp2r†  rÁ  r7  s                              @r)   Úinsert_htmlboxzPage.insert_htmlboxÕ2  só  ø€ ðT ˜‰{˜aÒÐÝÐ1Ñ2Ô2Ð2Ø�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜Šmˆmð �IÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"ÝÐ<Ñ=Ô=Ð=àˆ;ØˆCå�D‰zŒzˆØ�YÐÐÝ˜Q  4¤;°´
Ñ;Ô;ˆIˆIå˜Q  4¤:¨t¬{Ñ;Ô;ˆIð % sÑ*ˆõ �d�CÑ Ô ð 	CÝ˜t¨e¸WÐEÑEÔEˆEˆEÝ˜�eÑ$Ô$ð 	CØˆEˆEåÐAÑBÔBÐBð "+¨a¢ ˜˜°Q¸±]ˆà�oŠoØØØ(Ø?PÐW•eÔ;Ð;ÐVWØ ð ñ ô ˆð Œ~ð 	Ø˜œÑ%ˆEØ˜�;Ðõ ˜#œ*Ñ%Ô%ˆŒ
Ø””˜SœXœ[Ð)¨VÒ3Ð3Ð3Ð3Ø”
”˜sœzœ}Ð-°Ò7Ð7Ð7Ð7à�C”MÑ!ˆØ˜	Ò!Ð!Ð!Ð#; iÐ#;Ð#;°5Ð#;Ð#;Ñ!Ô!Ð!å˜CœHœK¨#¬*¬-Ñ7¸5Ñ@À!ÑDÔDˆð	,ð 	,ð 	,ð 	,ð 	,ð ×$Ò$ ]Ñ3Ô3ˆð �ÐÐÒÐ˜!ÒÐÐÐÐØ˜”FˆEà×%Ò%¨°WÐ%Ñ=Ô=ˆDØ�D���ˆAÝ×"Ò" 5¨!¯(ª(©*¬*°aÑ8Ô8Ð8ð 	×Ò˜4  a°¸2ÀwÐÑOÔOÐOð ŒxŒ{˜SœXœ[Ñ(¨AÑ-°Ñ5ˆð Œw˜œÑ  AÑ%ˆõ �5˜!˜Q ¨¬ v°´¨vÑ6Ô6Ý�f�W‰oŒoñå�Q˜˜1˜a ¤¨¬Ñ.Ô.ñ/ð 	ð ˜”F×$Ò$Ñ&Ô&ð 	#ð 	#ˆDØ�ˆLˆLŒL˜CÑˆLˆL‰LØ×Ò˜TÑ"Ô"Ð"Ð"à˜UÐ"Ð"r*   )rì  rf   rà  r6  rG  rÕ  r5  r3  ri  r	   rl  r   c               ó  — t          | ¦  «         | j        }|j        st          d¦  «        ‚|dk    rBt	          |¦  «        t	          |¦  «        z   t	          |	¦  «        z   dk    rt          d¦  «        ‚|r^t          |¦  «        t          u rnGt          |d¦  «        rt          |¦  «        }n't          |d¦  «        r|j        }nt          d¦  «        ‚|r2t          j
                             |¦  «        st          d|› d	�¦  «        ‚|r7t          |¦  «        t          t          t          j        fvrt          d
¦  «        ‚|	r%t          |	¦  «        t"          urt          d¦  «        ‚|r|s|st          d¦  «        ‚|r7t          |¦  «        t          t          t          j        fvrt          d¦  «        ‚|
dk     r|
dz  }
|
dk     °|
dk    r|
dz  }
|
dk    °|
dvrt          d¦  «        ‚t%          |¦  «        }|j        s|j        rt          d¦  «        ‚|| j         z  }d„ |                     | j        ¦  «        D ¦   «         }|d„ |                     | j        ¦  «        D ¦   «         z  }|d„ |                     | j        ¦  «        D ¦   «         z  }d}d}|dz   }||v r|dz  }|t          |¦  «        z   }||v °|r|                      ¦   «          |j        }|                      ||	|||||||
||||||¬¦  «        \  }}|�||_        |S )aŠ  Insert an image for display in a rectangle.

        Args:
            rect: (rect_like) position of image on the page.
            alpha: (int, optional) set to 0 if image has no transparency.
            filename: (str, Path, file object) image filename.
            height: (int)
            keep_proportion: (bool) keep width / height ratio (default).
            mask: (bytes, optional) image consisting of alpha values to use.
            oc: (int) xref of OCG or OCMD to declare as Optional Content.
            overlay: (bool) put in foreground (default) or background.
            pixmap: (pymupdf.Pixmap) use this as image.
            rotate: (int) rotate by 0, 90, 180 or 270 degrees.
            stream: (bytes) use this as image.
            width: (int)
            xref: (int) use this as image.

        'page' and 'rect' are positional, all other parameters are keywords.

        If 'xref' is given, that image is used. Other input options are ignored.
        Else, exactly one of pixmap, stream or filename must be given.

        'alpha=0' for non-transparent images improves performance significantly.
        Affects stream and filename only.

        Optimum transparent insertions are possible by using filename / stream in
        conjunction with a 'mask' image of alpha values.

        Returns:
            xref (int) of inserted image. Reuse as argument for multiple insertions.
        rå  r   r   z4xref=0 needs exactly one of filename, pixmap, streamr  r   zbad filenamezNo such file: 'rü   z#stream must be bytes-like / BytesIOzpixmap must be a Pixmapz mask requires stream or filenamez!mask must be bytes-like / BytesIOrÃ  )r   rÄ  rö  rª  úbad rotate valueú!rect must be finite and not emptyc                ó   — g | ]
}|d          ‘ŒS rŒ  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>Á3  s   € Ð?Ð?Ð?˜��!”Ð?Ð?Ð?r*   c                ó   — g | ]
}|d          ‘ŒS r>  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>Â3  s   € ÐBÐBÐB˜!��1”ÐBÐBÐBr*   c                ó   — g | ]
}|d          ‘ŒS ©rZ  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>Ã3  ó   € Ð?Ð?Ð?˜!��1”Ð?Ð?Ð?r*   ÚfzImgrz   )rf   r3  r	   r4  r  r5  rÕ  r   ri  r6  rl  rà  rì  r7  r8  )rv  rû   rç  rÃ   rø   rÈ   rá  r;   r   rd   r
   r  r   r)  rh  r9   ri  rç  r4  rd	  re	  r{  rš  rh  r²  r–  rü  r  rN  )rÖ   r  rì  rf   rà  r6  rG  rÕ  r5  r3  ri  r	   rl  r   r:  r.  r  ÚilstrE   r®   r7  r8  s                         r)   Úinsert_imagezPage.insert_imageh3  sŽ  € õ` 	�DÑÔÐØŒkˆØŒzð 	*Ý˜[Ñ)Ô)Ð)à�1Š9ˆ9�$˜x™.œ.­4°©<¬<Ñ7½$¸v¹,¼,ÑFÈ!ÒKÐKÝÐSÑTÔTÐTàð 	1Ý�H‰~Œ~¥Ð$Ð$ØÝ˜ :Ñ.Ô.ð 1Ý˜x™=œ=��Ý˜ 6Ñ*Ô*ð 1Ø#œ=��å  Ñ0Ô0Ð0àð 	8�BœGŸNšN¨8Ñ4Ô4ð 	8Ý#Ð$A°hÐ$AÐ$AÐ$AÑBÔBÐBØð 	8�˜V™œ­UµI½r¼zÐ,JÐJÐJÝÐBÑCÔCÐCØð 	8�˜V™œ­FÐ2Ð2ÝÐ6Ñ7Ô7Ð7Øð 	A˜ð 	A 8ð 	AÝÐ?Ñ@Ô@Ð@Øð 	B•D˜‘J”J¥u­i½¼Ð&DÐDÐDÝÐ@ÑAÔAÐAØ�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜ŠmˆmàÐ*Ð*Ð*ÝÐ/Ñ0Ô0Ð0å�‰JŒJˆØŒ:ð 	B˜œð 	BÝÐ@ÑAÔAÐAØ�DÔ.Ð.Ñ.ˆð @Ð?˜c×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?ˆØÐBÐB˜s×4Ò4°T´[ÑAÔAÐBÑBÔBÑBˆØÐ?Ð?˜s×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?Ñ?ˆØˆØˆØ�s‘7ˆØ˜$ÐÐØ�‰FˆAØ�3˜q™6œ6‘zˆHð ˜$ÐÐð ð 	!Ø×ÒÑ Ô Ð ØÔ$ˆØ×*Ò*ØØØØØØØØØØ+ØØØØØð +ñ 
ô 
‰ˆˆgð" ÐØ!(ˆCÔàˆr*   rt  r5   rX  rã  c                ó¤   — t          | ¦  «         t          j        | |¦  «        }|dk    rt          d¦  «        ‚|                      |f¦  «         dS )z'Insert a new link for the current page.r\   úlink kind not supportedN)rv  r  ÚgetLinkTextrÃ   r  )rÖ   rt  rX  rß   s       r)   rB  zPage.insert_linkä3  sV   € å�DÑÔÐÝÔ! $¨Ñ,Ô,ˆØ�BŠ;ˆ;ÝÐ6Ñ7Ô7Ð7Ø×!Ò! 5 (Ñ+Ô+Ð+Ð+Ð+r*   çš™™™™™©?)r
  rv  r	  r]  rP  rû  r  r  rá  Úmiter_limitÚrender_moderi  rþ  r5  r&  r'  rÕ  útyping.Union[str, list]rv  rÎ  r]  rP  rû  rZ  r[  c               ó²   — |                       ¦   «         }|                     |||||||||	|
||||||||¬¦  «        }|dk    r|                     |¦  «         |S )N)r
  rv  r	  r]  rP  rû  r  r  rá  r[  rZ  ri  rþ  r&  r'  rÕ  r   )rÔ  r4  rØ  )rÖ   r9  r   r
  rv  r	  r]  rP  rû  r  r  rá  rZ  r[  ri  rþ  r5  r&  r'  rÕ  rß  r    s                         r)   r4  zPage.insert_textì3  sƒ   € ð0 �nŠnÑÔˆØ�_Š_ØØØØ!ØØØ!ØØØØ%Ø#Ø#ØØØ)Ø%Øð% ñ 
ô 
ˆð( �Š7ˆ7Ø�JŠJ�wÑÔÐØˆ	r*   )r!  rá  r  rû  Ú
expandtabsr'  r  r]  r	  r
  rv  rZ  rþ  rÕ  r5  r[  ri  rP  r&  rñ  r^  c               ó¶   — |                       ¦   «         }|                     ||||||
||||	||||||||||¬¦  «        }|dk    r|                     |¦  «         |S )a3  Insert text into a given rectangle.

        Notes:
            Creates a Shape object, uses its same-named method and commits it.
        Parameters:
            rect: (rect-like) area to use for text.
            buffer: text to be inserted
            fontname: a Base-14 font, font name or '/name'
            fontfile: name of a font file
            fontsize: font size
            lineheight: overwrite the font property
            color: RGB color triple
            expandtabs: handles tabulators with string function
            align: left, center, right, justified
            rotate: 0, 90, 180, or 270 degrees
            morph: morph box with a matrix and a fixpoint
            overlay: put text in foreground or background
        Returns:
            unused or deficit rectangle area (float)
        )r
  rv  r	  r]  rP  rû  r  r  r^  r[  rZ  rá  r!  ri  rþ  r&  r'  rÕ  r   )rÔ  r×  rØ  )rÖ   r  rñ  r!  rá  r  rû  r^  r'  r  r]  r	  r
  rv  rZ  rþ  rÕ  r5  r[  ri  rP  r&  rß  r    s                           r)   r×  zPage.insert_textbox4  sŒ   € ðZ �nŠnÑÔˆØ×ÒØØØØ!ØØØ!ØØØØ!Ø#Ø#Ø%ØØØØ)Ø%Øð)  ñ 
ô 
ˆð, �Š7ˆ7Ø�JŠJ�wÑÔÐØˆ	r*   c                ó2   — |                       ¦   «         dk    S )z3Check if /Contents is in a balanced graphics state.rß  )r  r.   s    r)   rû  zPage.is_wrappede4  s   € ð ×$Ò$Ñ&Ô&¨&Ò0Ð0r*   c                óâ   — t          | j        d¬¦  «        }|j        sdS t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        S )zPage language.Fr:  NÚLang)rÚ   rÄ   rÌ   r�   rP  r  r  Úpdf_to_str_buf)r(   rº  r9  s      r)   r:  zPage.languagej4  sj   € õ ˜tœy°5Ð9Ñ9Ô9ˆØÔ!ð 	ØˆFÝÔ-¨g¯kªk©m¬m½XÀfÑ=MÔ=MÑNÔNˆØŒð 	ØˆFÝÔ# DÑ)Ô)Ð)r*   c              #  ó\   K  — |                       ¦   «         }|D ]}|�
|d         |v r|V — ŒdS )zì Generator over the links of a page.

        Args:
            kinds: (list) link kinds to subselect from. If none,
                   all links are returned. E.g. kinds=[LINK_URI]
                   will only yield URI links.
        Nre  )r}  )r(   ÚkindsÚ	all_linksrÁ  s       r)   rˆ  z
Page.linksu4  sM   è è € ð —N’NÑ$Ô$ˆ	Øð 	ð 	ˆDØˆ}  V¤°Ð 5Ð 5Ø���øð	ð 	r*   Úidentútyping.Union[str, int]c                óP  — t          | ¦  «         t          |¦  «        t          u rd}|}n*t          |¦  «        t          u r|}d}nt	          d¦  «        ‚|                      ||¦  «        }|s|S d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   |S )z€Load an annot by name (/NM key) or xref.

        Args:
            ident: identifier, either name (str) or xref (int).
        r   Nz&identifier must be a string or integerT)rv  rÈ   rá  r4   rÃ   rV  r  r  r  rû   rG  rH  )r(   rg  r   r   r"  s        r)   rÄ  zPage.load_annot‚4  s­   € õ 	�DÑÔÐÝ�‰;Œ;�#ÐÐØˆDØˆDˆDÝ�%‰[Œ[�CÐÐØˆDØˆDˆDåÐEÑFÔFÐFØ×Ò˜t TÑ*Ô*ˆØð 	ØˆJØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Øˆ
r*   c                óÎ  — t          | ¦  «         t          j        | j        ¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   d|_        d|_        | j	        j        rE|                      ¦   «         }d„ |D ¦   «         }|r"|d         }|d         |_        |d         |_        nd|_        d|_        |S )zGet first Link.NTr   r\   c                ó>   — g | ]}|d          t           j        k    ¯|‘ŒS r>  rD  rÿ  s     r)   r¯   z#Page.load_links.<locals>.<listcomp>§4  s)   € ÐFÐFÐF˜1¨¨1¬µÔ1EÒ)EÐ)E�QÐ)EÐ)EÐ)Er*   r   )rv  r�   r¼  rÄ   rÌ   r"  r  r  r  rû   rG  rH  r   rç  rÔ  )r(   r"  rN  Úlink_ids       r)   rT  zPage.load_links™4  sá   € å�DÑÔÐÝÔ! 4¤9Ñ-Ô-ˆØŒ~ð 	ØˆFÝ�C‰jŒjˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!ØˆŒØˆŒØŒ;Ôð 		Ø×$Ò$Ñ&Ô&ˆEØFÐF ÐFÑFÔFˆEØð $Ø œ(�Ø" 1œ:�”Ø  œ�”øàˆCŒHØˆCŒFØˆ
r*   c                ó<  — t          | ¦  «         t          | j        ¦  «        }t          ||¦  «        }|}|s|S d|_        t          j        | ¦  «        |_        || j        t          |¦  «        <   t          ¦   «         }t                               ||¦  «         |}|S )zLoad a widget by its xref.T)rv  rÚ   rÄ   ÚJM_get_widget_by_xrefr  r  r  rû   rG  rH  rI  r  rJ  )r(   r   rÖ   rß   r"  rK  s         r)   Úload_widgetzPage.load_widget´4  s”   € å�DÑÔÐå˜DœIÑ&Ô&ˆÝ% t¨TÑ2Ô2ˆàˆØð 	ØˆJØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Ý‘”ˆÝ×Ò˜3 Ñ'Ô'Ð'ØˆØˆ
r*   c                óî   — t          | ¦  «         |                      d¬¦  «        }|j        st          j        | j        ¦  «        }n!t          |                     ¦   «         ¦  «        }t          |¦  «        S )zThe MediaBox.Fr:  )	rv  rl  rÌ   r�   r  rÄ   ÚJM_mediaboxr  r4  )r(   rÖ   r  s      r)   r€  zPage.mediaboxÆ4  sd   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	,ÝÔ&¨¬	Ñ2Ô2ˆDˆDå §¢¡
¤
Ñ+Ô+ˆDÝ�D‰zŒzÐr*   c                óJ   — t          | j        j        | j        j        ¦  «        S r,   )rú  r€  r  r  r.   s    r)   Úmediabox_sizezPage.mediabox_sizeÑ4  s   € å�T”]Ô% t¤}Ô'7Ñ8Ô8Ð8r*   c                ó    — t          | ¦  «        S r,   )ÚShaper.   s    r)   rÔ  zPage.new_shapeÕ4  ó   € Ý�T‰{Œ{Ðr*   c                ó6   — t                                | ¦  «        S )z7All /Contents streams concatenated to one bytes object.)r  Ú_get_all_contentsr.   s    r)   Úread_contentszPage.read_contentsß4  s   € å×&Ò& tÑ,Ô,Ð,r*   c                ój   — t          | ¦  «         | j        }|                     | ¦  «        }|| _        dS )z-Refresh page after link/annot/widget updates.N)rv  rû   r°  rÄ   )r(   r:  rÖ   s      r)   ÚrefreshzPage.refreshã4  s3   € å�DÑÔÐØŒkˆØ�Š˜tÑ$Ô$ˆàˆŒ	ˆ	ˆ	r*   )rf   r3  r	   c               ó¶  — | j         }|                     |¦  «        st          d¦  «        ‚t          |¦  «        t          |¦  «        z   t          |¦  «        z   dk    rt          d¦  «        ‚|                      | j        |||¬¦  «        }|                     ||¦  «         |                      ¦   «         d         }|                     |d¦  «         d| _	        dS )aò  Replace the image referred to by xref.

        Replace the image by changing the object definition stored under xref. This
        will leave the pages appearance instructions intact, so the new image is
        being displayed with the same bbox, rotation etc.
        By providing a small fully transparent image, an effect as if the image had
        been deleted can be achieved.
        A typical use may include replacing large images by a smaller version,
        e.g. with a lower resolution or graylevel instead of colored.

        Args:
            xref: the xref of the image to replace.
            filename, pixmap, stream: exactly one of these must be provided. The
                meaning being the same as in Page.insert_image.
        zxref not an imager   z3Exactly one of filename/stream/pixmap must be given)rf   r	   r3  rA  r:  N)
rû   ry
  rÃ   rø   rU  r  rk
  rj  rq	  r‚  )rÖ   r   rf   r3  r	   r:  r†  Úlast_contents_xrefs           r)   r	  zPage.replace_imageë4  sß   € ð. ŒkˆØ× Ò  Ñ&Ô&ð 	2ÝÐ0Ñ1Ô1Ð1Ý�‰>Œ>�D ™LœLÑ(­4°©<¬<Ñ7¸1Ò<Ð<ÝÐRÑSÔSÐSØ×$Ò$ØŒI °Àð %ñ 
ô 
ˆð 	�Š�h Ñ%Ô%Ð%Ø!×.Ò.Ñ0Ô0°Ô4Ðð 	×ÒÐ,¨dÑ3Ô3Ð3ØˆÔÐÐr*   c                ó|   — t          | ¦  «         t          | j        d¬¦  «        }|j        sdS t	          |¦  «        S )zPage rotation.r   r:  )rv  rÚ   rÄ   rÌ   ÚJM_page_rotationrº  s     r)   r_  zPage.rotation5  sC   € õ 	�DÑÔÐÝ˜DœI°Ð2Ñ2Ô2ˆØŒð 	Ø�1Ý Ñ%Ô%Ð%r*   c                óP   — t          t                               | ¦  «        ¦  «        S )zReflects page rotation.)r…  r  Ú_rotate_matrixr.   s    r)   ra  zPage.rotation_matrix5  s    € õ •e×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1r*   c                ó¢   — t          | ¦  «         t          j        | j        |j        t          |¦  «        t          j        ¦   «         ¦  «         dS )z=Run page through a device.
        dw: DeviceWrapper
        N)rv  r�   r  rÄ   rÂ  rã  rÕ  )r(   rÖ  r�  s      r)   rØ  zPage.run5  sD   € õ 	�DÑÔÐÝÔ˜$œ) R¤YÕ0AÀ!Ñ0DÔ0DÅeÄnÑFVÔFVÑWÔWÐWÐWÐWr*   )r  rv	  rÎ  r¬  c               ó@  — |€"dt           z  t          z  t          z  t          z  }|�t	          |¦  «        }t          | ¦  «         |}|€|                      ||¬¦  «        }n#t          |d¦  «        | k    rt          d¦  «        ‚| 	                    ||¬¦  «        }|€~|S )a¢  Search for a string on a page.

        Args:
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: a pre-created pymupdf.TextPage
        Returns:
            a list of rectangles or quads, each containing one occurrence.
        Nr   )r  rÎ  rû   r  )rv	  )
rx	  rz	  ry	  r{	  r4  rv  r  rý   rÃ   Úsearch)rÖ   r   r  rv	  rÎ  r¬  rÄ  Úrlists           r)   r|	  zPage.search_for&5  s¾   € ð( ˆ=ØÝ"ñ#å*ñ+õ *ñ*õ %ñ	%ˆEð ÐÝ˜‘:”:ˆDå�DÑÔÐØˆØˆ:Ø×"Ò"¨°EÐ"Ñ:Ô:ˆBˆBÝ�R˜Ñ"Ô" dÒ*Ð*ÝÐ:Ñ;Ô;Ð;Ø—	’	˜$ e�	Ñ,Ô,ˆØÐØØˆr*   c                ó.   — |                       d|¦  «        S )zSet the ArtBox.rn  ©rq  ©r(   r  s     r)   Ú
set_artboxzPage.set_artboxO5  s   € à× Ò  ¨4Ñ0Ô0Ð0r*   c                ó.   — |                       d|¦  «        S )zSet the BleedBox.rl  r‡  rˆ  s     r)   Úset_bleedboxzPage.set_bleedboxS5  s   € à× Ò  ¨TÑ2Ô2Ð2r*   c                óx  — t          | ¦  «         | j        }|j        rt          d¦  «        ‚|j        st          d¦  «        ‚|t          d|                     ¦   «         ¦  «        vrt          d¦  «        ‚|                     |¦  «        st          d¦  «        ‚|                     | j	        d|d›d�¦  «         d	S )
z-Set object at 'xref' as the page's /Contents.r¾   rå  r   r  zxref is no streamr"  r  rƒ  N)
rv  rû   rÂ   rÃ   rç  r\  r†  ri
  r}  r   )r(   r   r:  s      r)   Úset_contentszPage.set_contentsW5  sÂ   € å�DÑÔÐØŒkˆØŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ø•u˜Q §¢Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ý˜ZÑ(Ô(Ð(Ø×!Ò! $Ñ'Ô'ð 	2ÝÐ0Ñ1Ô1Ð1Ø×Ò˜œ J°4°°°°Ñ@Ô@Ð@Ð@Ð@r*   c                ó.   — |                       d|¦  «        S )z,Set the CropBox. Will also change Page.rect.rk  r‡  rˆ  s     r)   Úset_cropboxzPage.set_cropboxe5  ó   € à× Ò  ¨DÑ1Ô1Ð1r*   c                ó†  — t          | ¦  «         t          | j        ¦  «        }|s6t          j        |                     ¦   «         t          d¦  «        ¦  «         dS t          j        |¦  «        }t          t          d¦  «        sJ ‚t          j	        |j        t          d¦  «        t          j
        |¦  «        ¦  «         dS )zSet PDF page default language.rb  r5  N)rv  rÚ   rÄ   r�   rQ  r  r  rŸ  r;   r�  r5  )r(   r:  rº  r9  s       r)   r¡  zPage.set_languagei5  s´   € å�DÑÔÐÝ˜tœyÑ)Ô)ˆØð 		ÝÔ˜wŸ{š{™}œ}­h°vÑ.>Ô.>Ñ?Ô?Ð?Ð?Ð?åÔ5°hÑ?Ô?ˆDÝ�5Ð"AÑBÔBÐBÐBÐBÝÔ*Ø”KÝ˜VÑ$Ô$ÝÔ7¸Ñ=Ô=ñô ð ð ð r*   c                óì  — t          | ¦  «         |                      ¦   «         }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚t          j        | 	                    ¦   «         t          d¦  «        |¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         dS )zSet the MediaBox.ÚMediaBoxrk  rn  rl  rm  N)rv  rl  r  r�   r½  r¾  rÃ   r¿  r<  r  r  rQ  )r(   r  rÖ   r€  s       r)   r¾  zPage.set_mediaboxx5  s  € å�DÑÔÐØ�~Š~ÑÔˆÝ" 4Ñ(Ô(ˆÝÔ" 8Ñ,Ô,ð 	,ÝÔ,¨XÑ6Ô6ð	,õ �lÑ+Ô+Ð+ÝÔ §¢¡¤­X°jÑ-AÔ-AÀ8ÑLÔLÐLÝÔ˜DŸHšH™JœJ­°Ñ(;Ô(;Ñ<Ô<Ð<ÝÔ˜DŸHšH™JœJ­°Ñ(:Ô(:Ñ;Ô;Ð;ÝÔ˜DŸHšH™JœJ­°Ñ(<Ô(<Ñ=Ô=Ð=ÝÔ˜DŸHšH™JœJ­°Ñ(;Ô(;Ñ<Ô<Ð<Ð<Ð<r*   c                óÔ   — t          | ¦  «         t          | j        ¦  «        }t          |¦  «        }t	          j        |                     ¦   «         t          d¦  «        |¦  «         dS )zSet page rotation.rD  N)rv  rÚ   rÄ   ÚJM_norm_rotationr�   rY  r  r  )r(   r_  rÖ   rb  s       r)   rÅ  zPage.set_rotation‡5  sW   € å�DÑÔÐÝ˜DœIÑ&Ô&ˆÝ˜xÑ(Ô(ˆÝÔ §¢¡
¤
­H°XÑ,>Ô,>ÀÑDÔDÐDÐDÐDr*   c                ó.   — |                       d|¦  «        S )zSet the TrimBox.rm  r‡  rˆ  s     r)   Úset_trimboxzPage.set_trimboxŽ5  r�  r*   c	           
     ó.  — t          | ¦  «         | j        }	|	j        r|j        st          d¦  «        ‚|j        s|j        rt          d¦  «        ‚|dk     r||j        z  }|dk     °||         }
|| j         z  }|s|
j        n	|
j        |z  }|j        s|j        rt          d¦  «        ‚||
j         z  }t          ||||¬¦  «        }d„ |	 
                    | j        ¦  «        D ¦   «         }|d„ |	                     | j        ¦  «        D ¦   «         z  }|d„ |	                     | j        ¦  «        D ¦   «         z  }d	}d}|d
z   }||v r|dz  }|t          |¦  «        z   }||v °|j        }|	j        |k    rt          d¦  «        ‚|	j                             |d¦  «        }|€t%          |	¦  «        }||	j        |<   ||f}|	j                             |d¦  «        }|r|                      ¦   «          |                      |
|||||||¬¦  «        }||	j        |<   |S )av  Show page number 'pno' of PDF 'docsrc' in rectangle 'rect'.

        Args:
            rect: (rect-like) where to place the source image
            docsrc: (document) source PDF
            pno: (int) source page number
            keep_proportion: (bool) do not change width-height-ratio
            overlay: (bool) put in foreground
            oc: (xref) make visibility dependent on this OCG / OCMD (which must be defined in the target PDF)
            rotate: (int) degrees (multiple of 90)
            clip: (rect-like) part of source page rectangle
        Returns:
            xref of inserted object (for reuse)
        rå  rM  r   z!clip must be finite and not empty)re
  ri  c                ó   — g | ]
}|d          ‘ŒS r>  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>Â5  s   € ÐAÐAÐA˜��!”ÐAÐAÐAr*   c                ó   — g | ]
}|d          ‘ŒS rŒ  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>Ã5  s   € Ð@Ð@Ð@˜!��1”Ð@Ð@Ð@r*   c                ó   — g | ]
}|d          ‘ŒS rQ  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>Ä5  rR  r*   ÚfzFrmrz   r   z%source document must not equal targetN)r5  ré  r   rÕ  r  rÖ  r7  )rv  rû   rç  rÃ   rd	  re	  rÜ  r{  r  Úcalc_matrixr²  rh  rš  r–  rá  r(  r  r8   ré  r  rü  r€  )rÖ   r  rì  rá  r6  r5  rÕ  ri  r  r:  rá  Útar_rectÚsrc_rectré  rT  rE   r®   r7  ÚisrcÚgmapÚpno_idr   s                         r)   rA  zPage.show_pdf_page’5  s•  € õ2 	�DÑÔÐØŒkˆàŒzð 	* ¤ð 	*Ý˜[Ñ)Ô)Ð)àŒ=ð 	B˜DÔ,ð 	BÝÐ@ÑAÔAÐAà�AŠgˆgØ�6Ô$Ñ$ˆCð �AŠgˆgà˜#”;ˆà˜4Ô5Ð5Ñ5ˆà(,ÐF�8”=�=°(´-À$Ñ2FˆØÔð 	B Ô 4ð 	BÝÐ@ÑAÔAÐAØ˜xÔ=Ð=Ñ=ˆå˜X x°oÈfÐUÑUÔUˆð BÐA˜c×3Ò3°D´KÑ@Ô@ÐAÑAÔAˆØÐ@Ð@˜s×2Ò2°4´;Ñ?Ô?Ð@Ñ@Ô@Ñ@ˆØÐ?Ð?˜s×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?Ñ?ˆð ˆØˆØ�s‘7ˆØ˜$ÐÐØ�‰FˆAØ�3˜q™6œ6‘zˆHð ˜$ÐÐð ÔˆØŒ=˜DÒ Ð ÝÐDÑEÔEÐEð Œ}× Ò   tÑ,Ô,ˆØˆ<Ý˜C‘=”=ˆDØ"&ˆCŒM˜$Ñð ˜�ˆØŒ~×!Ò! &¨!Ñ,Ô,ˆàð 	!Ø×ÒÑ Ô Ð Ø×"Ò"ØØØØØØØØð #ñ 	
ô 	
ˆð "&ˆŒ�vÑàˆr*   c                óª  — t          | ¦  «         t          j        ¦   «         }|                      d¬¦  «        }|j        st          |¦  «        S t          j        t          j        j        ¦  «        }t          j        |||¦  «         t          |¦  «        }| j	        dz  dk    rt          |¦  «        }nt          ddddd| j        j        ¦  «        }|S )zPage transformation matrix.Fr:  rÃ  r   r   rA  )rv  r�   r‚  rl  rÌ   r�  rx  r{  r/  r_  r…  r„  rà  )r(   rî  rÖ   r€  r"  s        r)   r{  zPage.transformation_matrixì5  sÀ   € õ 	�DÑÔÐåŒnÑÔˆØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	*Ý$ SÑ)Ô)Ð)Ý”<¥¤Ô 7Ñ8Ô8ˆÝÔ   x°Ñ5Ô5Ð5Ý Ñ$Ô$ˆàŒ=˜3Ñ !Ò#Ð#Ý˜‘+”+ˆCˆCå˜˜A˜q " a¨¬Ô)<Ñ=Ô=ˆCØˆ
r*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )zThe TrimBoxrm  Nr   r   r   r   rï  rð  s      r)   ÚtrimboxzPage.trimboxÿ5  sY   € ð �Š˜yÑ)Ô)ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                ó¾   — t          | ¦  «         t          j        | |¦  «        }|dk    rt          d¦  «        ‚| j                             |d         || ¬¦  «         dS )z"Update a link on the current page.r\   rW  r   rÕ   N)rv  r  rX  rÃ   rû   r“  )rÖ   rt  rß   s      r)   Úupdate_linkzPage.update_link6  sa   € å�DÑÔÐÝÔ! $¨Ñ,Ô,ˆØ�BŠ;ˆ;ÝÐ6Ñ7Ô7Ð7àŒ×!Ò! # f¤+¨u¸4Ð!Ñ@Ô@Ð@Ð@Ð@r*   c              #  ó˜   K  — d„ |                       ¦   «         D ¦   «         }|D ]&}|                      |¦  «        }|�	|j        |v r|V — Œ'dS )a    Generator over the widgets of a page.

        Args:
            types: (list) field types to subselect from. If none,
                    all fields are returned. E.g. types=[PDF_WIDGET_TYPE_TEXT]
                    will only yield text fields.
        c                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S rC  rÉ  )r­   r!   s     r)   r¯   z Page.widgets.<locals>.<listcomp>6  s-   € Ð[Ð[Ð[ ¸A¸a¼DÅEÔDZÒ<ZÐ<Z˜˜!œÐ<ZÐ<ZÐ<Zr*   N)rÔ  ro  rê  )r(   rÂ  Úwidget_xrefsr   rK  s        r)   rÇ  zPage.widgets6  sp   è è € ð \Ð[ d×&6Ò&6Ñ&8Ô&8Ð[Ñ[Ô[ˆà ð 	ð 	ˆDØ×%Ò% dÑ+Ô+ˆFØˆ} Ô 1°UÐ :Ð :Ø���øð	ð 	r*   c                óÚ   — |                       ¦   «         \  }}|dk    r!d|z  }t                               | |d¦  «         |dk    r&d|z  dz   }t                               | |d¦  «         dS dS )z,Ensure page is in a balanced graphics state.r   rå  Fs   
Qrâ  TN)r  r  r½  )r(   ÚpushÚpopÚprependrk   s        r)   rü  zPage.wrap_contents"6  s}   € à×)Ò)Ñ+Ô+‰	ˆˆcØ�!Š8ˆ8Ø˜t‘mˆGÝ×"Ò" 4¨°%Ñ8Ô8Ð8Ø�Š7ˆ7Ø˜c‘\ EÑ)ˆFÝ×"Ò" 4¨°Ñ6Ô6Ð6Ð6Ð6ð ˆ7r*   c	           
     óò  — t          | t          ¦  «        sJ ‚|st          d¦  «        ‚t          |¦  «        t          u r&|dk    r|€|                     | |||¬¦  «         dS |f}|d         j        }	t          ¦   «         }
|
                     | j	        j
        | j	        j        ¬¦  «        }|D ]$}|	|j        z  }	|                     |||¬¦  «         Œ%|€|	}|                      ||
d||||	|¬¦  «         d}
d}dS )aÄ  Write the text of one or more pymupdf.TextWriter objects.

        Args:
            rect: target rectangle. If None, the union of the text writers is used.
            writers: one or more pymupdf.TextWriter objects.
            overlay: put in foreground or background.
            keep_proportion: maintain aspect ratio of rectangle sides.
            rotate: arbitrary rotation angle.
            oc: the xref of an optional content object
        z$need at least one pymupdf.TextWriterr   N)rf  r  r5  rw  )rf  r  )r5  r6  ri  r  rÕ  )r>   rÒ   rÃ   rÈ   Ú
TextWriterÚ
write_textÚ	text_rectrÁ   râ  r  rl  rà  rA  )rÖ   r  Úwritersr5  r  rf  r6  ri  rÕ  r  Útextdocr  Úwriters                r)   r±  zPage.write_text,6  s:  € õ* ˜$¥Ñ%Ô%Ð%Ð%Ð%Øð 	EÝÐCÑDÔDÐDÝ�‰=Œ=�JÐ&Ð&Ø˜Š{ˆ{˜t˜|Ø×"Ò" 4°ÀÈwÐ"ÑWÔWÐWØ�tà"˜*�Ø�qŒzÔ#ˆÝ‘*”*ˆØ× Ò  t¤y¤¸t¼yÔ?OÐ ÑPÔPˆØð 	Cð 	CˆFØ�FÔ$Ñ$ˆDØ×Ò˜e¨W¸EÐÑBÔBÐBÐBØˆ<ØˆDØ×ÒØØØØØ+ØØØð 	ñ 		
ô 		
ð 		
ð ˆØˆˆˆr*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S rb
  rc
  r.   s    r)   r   z	Page.xref_6  rd
  r*   zpage rectangle)r:  r?  r’
  r,   )rÕ  r«  rÚ  rÍ  )Nr   N)NNNNNr   r   r   r   r   r   r   rA  NNrÒ  rš  )Nr   r   N)r   Nr   r   NNN)r9  rº   rÚ  ró   )r  r¼   rÚ  ró   )r9  rº   r=  rê  rf   rá  r&  rÍ  rÉ  rÍ  rt  rÍ  rÚ  ró   )r  r¼   r   rá  r
  r~  r	  rÍ  r  rÏ  rh  rÏ  rÐ  rÏ  rá  r~  rn  rÏ  r  rÏ  r€  r4   rf  r~  r!  r4   ri  r4   rÚ  ró   rA  )rÚ  ró   )r—  r´   rÚ  ró   )r  rº   r  rº   rÚ  ró   )r  r´   rÚ  ró   )NNr  r   NNT)r   rÍ  r	  rÍ  r
  r~  r!  r4   r  rÏ  r  rÏ  rÑ  rø   rÚ  ró   )r°  )r9  rº   r   rá  rt  rá  rÚ  ró   )rK  rI  rÚ  ró   )r   r   r   )
rÖ   rÆ  ri	  r4   rú  r4   r   r4   rÚ  rø   r>  )rÖ   rÆ  r   r4   )rK  rI  rÚ  rI  )rÚ  r…  )r=  NNr   NFr   r   Tr   r   r   )$rÖ   rÆ  r  rº   r  rº   r!  rº   r"  rº   r  rÏ  r  rÏ  rn  rÍ  rl  r~  rþ  rÍ  r#  rø   r$  r4   r%  r4   r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r=  NNNr   r   r   Tr   r   r   )rÖ   rÆ  rH  rº   r+  r~  r  rÏ  r  rÏ  rþ  rÏ  rn  rÍ  rl  r~  r$  r4   r%  r4   r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )"rÖ   rÆ  r  rº   r  rº   r!  rº   r  rÏ  r  rÏ  rn  rÍ  rl  r~  rþ  rÏ  r#  rø   r$  r4   r%  r4   r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )
r=  Nr   r   r   TNr   r   r   )rÖ   rÆ  r  rº   r  rº   r  rÏ  rn  rÍ  rl  r~  r$  r4   r%  r4   r5  rø   rþ  rÏ  r&  r~  r'  r~  rÚ  rú  )rÖ   rÆ  r  r5  r  rÏ  r  rÏ  rn  rÍ  rþ  rÏ  rl  r~  r$  r4   r%  r4   r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r=  NNr   Nr   r   TFr   r   r   )rÖ   rÆ  r  r´   r  rÏ  r  rÏ  rn  rÍ  rl  r~  rþ  rÏ  r$  r4   r%  r4   r5  rø   r#  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r=  NNr   r   r   NTr   r   r   )rÖ   rÆ  r  r»   r  rÏ  r  rÏ  rn  rÍ  rl  r~  r$  r4   r%  r4   rþ  rÏ  r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r=  NNr   r   r   NTr   r   r   N)rÖ   rÆ  r  r¼   r  rÏ  r  rÏ  rn  rÍ  rl  r~  r$  r4   r%  r4   rþ  rÏ  r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r=  NNTNr   Fr   r   Tr   r   r   )$rÖ   rÆ  rH  rº   r9  rº   r?  r~  r  rÏ  r  rÏ  rn  rÍ  r@  rø   rþ  rÏ  rl  r~  r#  rø   r$  r4   r%  r4   r5  rø   r&  r~  r'  r~  rÕ  r4   rÚ  rú  )r   r=  Nr   r   r   TNr   r   r   )rÖ   rÆ  r  rº   r  rº   rD  r~  r  rÏ  rn  rÍ  rl  r~  r$  r4   r%  r4   r5  rø   rþ  rÏ  r&  r~  r'  r~  rÕ  r4   rÚ  rú  ©r   NrÐ  )rc  rø   rÚ  r´   r•
  )rÖ   rÆ  r€  rø   rN  rø   rÚ  r´   )rÖ   rÆ  rÚ  r´   )rÖ   rÆ  ré  r¹   rë  r   r  r¼   rì  rø   r¯  rø   rÚ  r¦  )NNr   r   T)rÏ  r~  rÐ  r~  rÑ  rø   rÚ  r´   r“
  r\  )rÖ   rÒ   r  r¼   rÚ  rá  )r  r¼   rÎ  r4   rÚ  r­  )rÞ  NNFr   r   )rÚ  rµ   )rÖ   rÆ  rt  r5   rX  rø   rÚ  rã  )(rÖ   rÆ  r9  rº   r   r\  r
  r~  rv  rÎ  r	  rá  r]  rÍ  rP  r4   rû  r4   r  rÏ  r  rÏ  rá  r~  rZ  r~  r[  r4   ri  r4   rþ  rÏ  r5  rø   r&  r~  r'  r~  rÕ  r4   ).rÖ   rÆ  r  r¼   rñ  r\  r!  r4   rá  r~  r  rÏ  rû  r4   r^  r4   r'  r~  r  rÏ  r]  rÍ  r	  rá  r
  r~  rv  rÎ  rZ  r~  rþ  rÏ  rÕ  r4   r5  rø   r[  r4   ri  r4   rP  r4   r&  r~  rÚ  r~  )rg  rh  rÚ  ró   )r   TTr   r   Nr�
  )rÖ   rÆ  rt  r5   rÚ  rã  )NNTNNTr   r   )rÖ   rÆ  rÚ  rã  )¡r/   r0   r1   rŒ   rþ   r   rj  rw  r�   ÚPDF_ANNOT_LE_OPEN_ARROWr„  rŽ  r‘  r•  rœ  rž  r¶  r¸  r»  r  rÄ  ræ  rè  ró  rü  r  r  r  r  r  rN  rR  rV  rY  r^  rl  rþ  ri  rq  r  r€  r…  r‰  r�  r�  r–  r™  r›  rŸ  r¡  r£  rf	  rª  r¬  r¯  r²  rµ  r·  r»  rÔ  r¯  rp	  r×  ré  rí  rB  rñ  ró  rù  r¢  r„  r   r  r  r
  ro	  r  r|  r*  r/  r1  r4  r7  r9  r;  rÕ  rC  rG  rJ  rL  rO  rR  rU  rX  r]  r_  rj  rn  r  r‰  r–  r˜  r}  r¨  rñ  rÎ  rñ  rô  r  r†  r  r  r  r  r  r  r  r  r  rC
  r"  r-  rJ  rU  rB  r4  r×  rû  r:  rˆ  rÄ  rT  ro  r€  rs  rÔ  ry  r{  r	  r_  ra  rØ  r|	  r‰  r‹  r�  r�  r¡  r¾  rÅ  r—  rA  r{  r¥  r§  rÇ  rü  r±  r   r  rë  r-   r*   r)   rÒ   rÒ   ß%  sm  € € € € € ðð ð ð ð ð ðð ð ð&ð ð ñð ð ð ð< ØØØØØØØØÔ2ØØØØØð!Nð Nð Nð Nð`ð ð ð@	ð 	ð 	ðð ð ñð ð ð ð<
ð 
ð 
ðBð Bð Bð BñHð ð ð ðð ð ð Dð  Dð  DðDð ð ðmð mð mð^Xð Xð Xðtfð fð fðPð ð ð
ð 
ð 
ðFð Fð Fñ0ð ð ð ð.ð ð ñð ð ð ð4 GKØJKØ59ñj"ð j"ð j"ð j"ðXð ð ð* ð  ð  ñð ð ð ð	%ð 	%ð 	%ñ:ð :ð :ð :ð!ð !ð !ñð ð ð ðBLð Lð Lð*9ð 9ð 9ñ7ð 7ð 7ð 7ñrð ð ð ñ	ð 	ð 	ð 	ð   $ØØññ ð ð ð ð<  Ø"Ø $Ø $Ø"&Ø!"Ø Ø!ØÔ7ØØØØØð%.ð .ñ .ð .ð .ð .ð` 59Ø*.ññ ð ð ð ñð ð ð ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ð Ø"ØØØØ $Ø!ñ<ñ <ð <ð <ð <ð@ ØØØñBñ Bð Bð Bð Bð	ñ 	ð 	ð 	ð 	ñDñ Dð Dð Dð Dñ	ñ 	ð 	ð 	ð 	ñCñ Cð Cð Cð Cñ+ð +ð +ð +ð*	*ð 	*ð 	*ð-ð -ð -ñð ð ð ð, ØØñ	mñ mð mð mð mñ^;ð ;ð ;ð ;ð
"ð 
"ð 
"ðBð Bð Bð
 ðHð Hñ „XðHð ðHð Hñ „XðHðð ð ñ$Cð Cð Cð Cð ð
ð 
ñ „Xð
ð ðð ñ „Xðð6ð 6ð 6ðð ð ñ8-ð -ð -ð -ð*ð *ð *ñX\ð \ð \ð \ð| ñ8ð 8ð 8ñ „Xð8ð !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øñ#%ñ %ð %ð %ð %ðV !ØØ Ø!ØØØØ Ø$%Ø"#Øñ ñ  ð  ð  ð  ðN !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øñ!$ñ $ð $ð $ð $ðT !Ø!ØØØØ Ø Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!Ø ØØØØ Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!ØØ ØØØ Ø#Ø$%Ø"#Øñ"ñ "ð "ð "ð "ðN !ØØ!ØØØØ Ø Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!ØØØØ Ø Ø$%Ø"#ØØñ#ñ #ð #ð #ð #ðT !ØØ!Ø#Ø ØØ#ØØØ Ø$%Ø"#Øñ#,ñ ,ð ,ð ,ð ,ðd Ø Ø!ØØØØ Ø Ø$%Ø"#Øñ!ñ !ð !ð !ð !ðN Ø Ø!ØØØØ Ø Ø$%Ø"#Øñ!ñ !ð !ð !ð !ñF	$ð 	$ð 	$ð 	$ð1ð 1ð 1ð ðð ñ „Xðð ð!ð !ñ „Xð!ð ðð ñ „Xðñ&ð ð ð ñ ð ð ð ð>ð ð ñ$ð ð ð ñ|ñ |ð |ð |ð |ð@ !Øñ'ñ 'ð 'ð 'ð 'ñR"ñ "ð "ð "ð "ðH8ð 8ð 8ñ ð ð ð ð: %-ØØ'+Ø $Ø!Ø!ð)ð )ñ )ð )ð )ð )ðVmð mð mð` VWØ!ñaRñ aRð aRð aRð aRñFBð Bð Bð Bð
>ð >ð >ð >ñ@Cð Cð Cð Cñ
ð ð ð ñ&ð ð ð ð6 ññ ð ð ð ð5ð 5ð 5ð<ð <ð <ð?ð ?ð ?ð;ð ;ð ;ð=ð =ð =ññ ð ð ð ð ð ð ð*:ð :ð :ð
 FJØ78ñQð Qð Qð Qðp ØØØØØØØØðQ#ð Q#ñ Q#ð Q#ð Q#ð Q#ðn ØØØ ØØØØØØØØðzð zð zð zð zñx,ñ ,ð ,ð ,ð ,ð !Ø#'Ø"Ø#ØØØ ØØ"&Ø!"Ø ØØ Ø Ø$%Ø"#Øð+/ð /ñ /ð /ð /ð /ðl Ø"&Ø ØØØ"#ØØ#Ø"Ø Ø#'Ø!"Ø ØØ Ø ØØØ$%ð/Fð Fñ Fð Fð Fð FðP ð1ð 1ñ „Xð1ð ð*ð *ñ „Xð*ñð ð ð ñð ð ð ð.ð ð ð6ð ð ð$ ðð ñ „Xðð ð9ð 9ñ „Xð9ðð ð ð-ð -ð -ðð ð ð ØØð$ ð $ ñ $ ð $ ð $ ð $ ðL ð&ð &ñ „Xð&ð ñ2ð 2ð 2ñ „Xð2ñXð Xð Xð ØØØñ'ð 'ñ 'ñ 'ð 'ð 'ñR1ð 1ð 1ñ3ð 3ð 3ñAð Að Añ2ð 2ð 2ññ ð ð ñ=ð =ð =ñEð Eð Eñ2ð 2ð 2ð Ø ØØØØñXñ Xñ Xð Xð Xðt ñð ñ „Xðð$ ñHð Hñ „XðHñAñ Að Að Aññ ð ð ñ"7ð 7ð 7ð ØØØØØ ØØñ1ñ 1ñ 1ð 1ð 1ðf ñ2ð 2ñ „Xð2ð
 ˆ8�EÑ/Ñ0Ñ0Ô0€Dð ÐÐÐr*   rÒ   c                  ó€  — e Zd Zd„ ZdZdZdZdZdZd„ Z	d„ Z
d	„ Zd
„ Zed„ ¦   «         Zd@d„ZdAd„ZdBd„ZdCd„Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         ZdCd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdDd„ZdEd"„Zd#„ Zd$„ Z d%„ Z!d&„ Z"edFd(„¦   «         Z#ed)„ ¦   «         Z$d*„ Z%ed+„ ¦   «         Z&dGd-„Z'dHd.„Z(dId0„Z)d1„ Z*d2„ Z+d3„ Z,d4„ Z-d5„ Z.ed6„ ¦   «         Z/ed7„ ¦   «         Z0d8„ Z1ed9„ ¦   «         Z2d:„ Z3ed;„ ¦   «         Z4ed<„ ¦   «         Z5ed=„ ¦   «         Z6ed>„ ¦   «         Z7e2Z8eZ9d?„ Z:dS )Jrç  c                óT  — d| _         d| _        	 t          |t          t          j        ft          j        t          j        t          t          t          f¦  «        rF|\  }}d}t	          j        |t          |¦  «        t	          j        d¦  «        |¦  «        }|| _        dS t          |t          t          j        ft          j        t          j        t          t          t          ft          t           f¦  «        rE|\  }}}t	          j        |t          |¦  «        t	          j        d¦  «        |¦  «        }|| _        dS t          |t          t          j        t#          d¦  «        ft$          t          j        f¦  «        �r|\  }}t)          |t          ¦  «        r|j        }n|€t	          j        d¦  «        }t)          |t$          ¦  «        r|j        }t	          j        |¦  «        j        st/          d¦  «        ‚|j        rTt	          j        ||t	          j        ¦   «         t	          j        d¦  «        t	          j        ¦   «         d¦  «        | _        dS t	          j        |¦  «        | _        | j        j        st9          t:          ¦  «        ‚dS t          |t$          t          j        ft$          t          j        f¦  «        r–|\  }}t)          |t$          ¦  «        r|j        }t)          |t$          ¦  «        r|j        }|}|}	|j        s0t	          j        |	¦  «        }
|
j        st9          t:          ¦  «        ‚nt	          j        ||	¦  «        }
|
| _        dS t          |t$          t          j        ft>          t          ft>          t          fd¦  «        s<t          |t$          t          j        ft>          t          ft>          t          f¦  «        �r tA          |¦  «        dk    r%|\  }}}t	          j        t          j!        ¦  «        }n|\  }}}}t          |¦  «        }t)          |t$          ¦  «        r|j        n|}t	          j"        |¦  «        s>t	          j#        || $                    ¦   «         | %                    ¦   «         |||¦  «        }nYt	          j#        || $                    ¦   «         | %                    ¦   «         ||t	          j        t          j!        ¦  «        ¦  «        }|| _        dS t          |tL          t$          t          j        f¦  «        r6|d         dk    r*|\  }}t)          |t$          ¦  «        r|j        }|| _        dS t          |t$          t          j        ft          df¦  «        �rx|d         }tA          |¦  «        dk    r|d         nd}t)          |t$          ¦  «        r|j        n|}tO          |dd¦  «        st/          d¦  «        ‚t	          j        |¦  «        }|j        s|st/          d	¦  «        ‚t	          j        ¦   «         }t	          j(        |¦  «        }t	          j)        |¦  «        }t	          j*        |¦  «        }t	          j+        |||||¦  «        }|j        j$        |j        _$        |j        j%        |j        _%        |j        j,        |j        _,        |j        j-        |j        _-        	 t]          j/        |j        |j        |¦  «         || _        dS t          |t          j        t          ft          t          dt          t           f¦  «        �rd|\  }}}}$}t)          |t          ¦  «        r#|j        }t)          |t          j        ¦  «        sJ ‚t	          j7        |¦  «        }||z   |z  }%t	          j        ¦   «         }t	          j+        |||||¦  «        }t)          |$tp          tr          f¦  «        r$t	          j:        |$¦  «        }&tA          |$¦  «        }nPtw          |$¦  «        }'|'j        st/          d¦  «        ‚t	          j<        |'¦  «        \  }}(t	          j:        |$¦  «        }&|%|z  |k    r!t/          d|›d|›d|›d|›d|%›d|›�¦  «        ‚t	          j=        |j        |&¦  «         || _        dS t          |d¦  «        �r”|\  })d}*t}          |)d¦  «        r+|) ?                    ¦   «         }+|+rt	          j@        |+¦  «        },n�t}          |)|*¦  «        r|)jA        }+|+rt	          j@        |+¦  «        },not)          |)tL          ¦  «        rt	          j@        |)¦  «        },nEtw          |)¦  «        }'|'j        r|'j        j         st/          d¦  «        ‚t	          jB        |'¦  «        },t	          jC        |,t	          j        tˆ          tˆ          tŠ          tŠ          ¦  «        t	          jF        |, G                    ¦   «         dd|, H                    ¦   «         dd¦  «        ¦  «        \  }}}t	          jI        |,¦  «        \  }-}.|-|j        _,        |.|j        _-        || _        dS t          |t”          t          jK        ft          ¦  «        �rž|\  }/}0t™          |/¦  «        }1t	          jM        |1¦  «        }2tO          |0d|2dz
  ¦  «        st/          tœ          ¦  «        ‚t	          jO        |1|0d¦  «        }3t	          jP        |3t£          d¦  «        ¦  «        }4t	          jR        |4t£          d¦  «        ¦  «        sXt	          jR        |4t£          d¦  «        ¦  «        s6t	          jR        |4t£          d¦  «        ¦  «        st/          t¦          ¦  «        ‚t	          jT        |1|3¦  «        },t	          jC        |,t	          j        tˆ          tˆ          tŠ          tŠ          ¦  «        t	          jF        |, G                    ¦   «         dd|, H                    ¦   «         dd¦  «        ¦  «        \  }5}}|5| _        dS d}6|D ]}7|6dt#          |7¦  «        › d|7› d�z  }6Œt«          |6¦  «        ‚)a  
        Pixmap(colorspace, irect, alpha) - empty pixmap.
        Pixmap(colorspace, src) - copy changing colorspace.
        Pixmap(src, width, height,[clip]) - scaled copy, float dimensions.
        Pixmap(src, alpha=1) - copy and add or drop alpha channel.
        Pixmap(filename) - from an image in a file.
        Pixmap(image) - from an image in memory (bytes).
        Pixmap(colorspace, width, height, samples, alpha) - from samples data.
        Pixmap(PDFdoc, xref) - from an image at xref in a PDF document.
        Nr   z"source colorspace must not be Noner   r   Úrawr   zbad alpha valuez'cannot drop alpha for 'NULL' colorspacer
  zbad samples datazbad samples length w=z h=ú alpha=z n=z stride=z size=r   rÀ  úbad image datar•  r  ÚAlphaÚ
Luminosityz+Unrecognised args for constructing Pixmap:
ú    r{   r%   )VÚ_samples_mvÚ_memory_viewr¹  r   r�   r¢  rx  ÚFzIrectÚIRectr4  rµ   Úfz_new_pixmap_with_bboxr»  ræ  rÄ   r4   rø   rÈ   rç  ÚFzPixmapr>   Úfz_pixmap_colorspacerÌ   rÃ   r$  r%  r&  Ú fz_new_pixmap_from_alpha_channelrÞ   ÚMSG_PIX_NOALPHAÚ!fz_new_pixmap_from_color_and_maskr~  r7   Úfz_infinite_irectr¼  Úfz_scale_pixmapr4  r5  rá  r¯  Úfz_pixmap_colorantsÚfz_pixmap_widthÚfz_pixmap_heightÚfz_new_pixmaprJ  rK  r   Úpixmap_copyÚfz_pixmap_samples_memoryviewrì  ÚstriderE   r\  Úfz_samples_setÚfz_samples_getr²  r)  rh  r  r7  r#  Úll_fz_pixmap_copy_rawr;   r   Úfz_new_image_from_filer   r°  Úfz_get_pixmap_from_imageÚFZ_MIN_INF_RECTÚFZ_MAX_INF_RECTr‚  r   rÑ  r-  rÁ   rÅ   rÎ   r–  r—  r˜  r  r  r  r  r  rg   )8r(   r  rï  r  rì  rÃ  ÚspixÚmpixÚspmÚmpmr  r   rÑ  r?  r  Úsrc_pixr  ÚsepsrE   Úsrc_viewÚpm_viewrÈ  ÚtptrÚsptrÚ	pm_strideÚpm_nÚpm_alphaÚ
src_strideÚsrc_nr5  r4  Úpm_iÚsrc_ir®   Úsrc_pix_alphar‘  ÚsamplesrÓ  Úsamples2r/  rË  Ú	imagedatar   r  rß  rJ  rK  r:  r   rj  rU
  rA  rk  rð  r   Úargs8                                                           r)   rŒ   zPixmap.__init__m6  së
  € ð  ˆÔð
 !ˆÔðA	#õ ˜Ý�UÔ/Ð0Ý”�uœ}­eµT½5ÐAñô ð ~	#ð
 ‰HˆB�ØˆEÝÔ.¨rÕ3CÀDÑ3IÔ3IÍ5ÔK^Ð_`ÑKaÔKaÐchÑiÔiˆBØˆDŒIˆIˆIå˜Ý�UÔ/Ð0Ý”�uœ}­eµT½5ÐAÝ•d�ñô ð t	#ð #‰OˆB��eÝÔ.¨rÕ3CÀDÑ3IÔ3IÍ5ÔK^Ð_`ÑKaÔKaÐchÑiÔiˆBØˆDŒIˆIˆIå˜�z­5Ô+=½tÀD¹z¼zÐJÍVÕUZÔUcÐLdÑeÔeñ j	#à‰HˆB�Ý˜"�jÑ)Ô)ð .Ø”W��Ø�ÝÔ'¨Ñ-Ô-�Ý˜$¥Ñ'Ô'ð !Ø”y�ÝÔ-¨dÑ3Ô3Ô>ð HÝ Ð"FÑGÔGÐGàŒ}ð 9Ý!Ô3ØØÝÔ*Ñ,Ô,ÝÔ2°4Ñ8Ô8ÝÔ+Ñ-Ô-Øñô �”	�	�	õ "ÔBÀDÑIÔI�”	Ø”yÔ+ð 9Ý&­Ñ8Ô8Ð8ð9ð 9õ ˜�v¥u¤~Ð6½ÅÄÐ8PÑQÔQð P	#à‰JˆD�$Ý˜$¥Ñ'Ô'ð !Ø”y�Ý˜$¥Ñ'Ô'ð !Ø”y�ØˆCØˆCØ”?ð HÝÔ<¸SÑAÔA�Ø”~ð 9Ý&­Ñ8Ô8Ð8ð9õ Ô=¸cÀ3ÑGÔG�ØˆDŒIˆIˆIå˜¥­¬Ð7½%Å¸ÍÍsÀ|ÐUYÑZÔZð 	#Ý˜�v¥u¤~Ð6½Å¸ÅuÍcÀlÑSÔSñ	#õ �4‰yŒy˜AŠ~ˆ~Ø!‘
��a˜Ý”}¥UÔ%<Ñ=Ô=��à#'Ñ ��a˜˜DÝ'¨Ñ-Ô-�å#-¨dµFÑ#;Ô#;ÐE�d”i�iÀˆGÝÔ-¨dÑ3Ô3ð |ÝÔ*¨7°G·I²I±K´KÀÇÂÁÄÈaÐQRÐTXÑYÔY��åÔ*¨7°G·I²I±K´KÀÇÂÁÄÈaÐQRÕTYÔTaÕbgÔbyÑTzÔTzÑ{Ô{�ØˆDŒIˆIˆIå˜�c¥F­E¬NÐ#;Ñ<Ô<ð n	#ÀÀaÄÈEÒAQÐAQà‰EˆAˆrÝ˜"�fÑ%Ô%ð Ø”W�ØˆDŒIˆIˆIå˜�v¥u¤~Ð6½¸d¸ÑDÔDñ g	#ð ˜”7ˆDÝ" 4™yœy¨Aš~˜~�D˜”G�G°1ˆEÝ#-¨dµFÑ#;Ô#;ÐE�d”i�iÀˆGÝ˜E 1 aÑ(Ô(ð 5Ý Ð"3Ñ4Ô4Ð4ÝÔ+¨GÑ4Ô4ˆBØ”=ð M¨ð MÝ Ð"KÑLÔLÐLÝÔ&Ñ(Ô(ˆDÝÔ)¨'Ñ2Ô2ˆAÝÔ% gÑ.Ô.ˆAÝÔ& wÑ/Ô/ˆAÝÔ$ R¨¨A¨t°UÑ;Ô;ˆBØ%Ô0Ô2ˆBŒMŒOØ%Ô0Ô2ˆBŒMŒOØ!(Ô!3Ô!8ˆBŒMÔØ!(Ô!3Ô!8ˆBŒMÔð62õ Ô! 2¤=°'Ô2DÀaÑHÔHÐHðh ˆDŒIˆIˆIå˜�uÔ1µ:Ð>ÅÅSÈ$ÕQTÕVZÐP[Ñ\Ô\ñ X	#à'+Ñ$ˆB��1�g˜uÝ˜"�jÑ)Ô)ð :Ø”W�Ý! "¥eÔ&8Ñ9Ô9Ð9Ð9Ð9ÝÔ% bÑ)Ô)ˆAØ˜%‘i 1‘_ˆFÝÔ&Ñ(Ô(ˆDÝÔ$ R¨¨A¨t°UÑ;Ô;ˆBå˜7¥U­IÐ$6Ñ7Ô7ð 	=å Ô3°GÑ<Ô<�Ý˜7‘|”|��å(¨Ñ1Ô1�Ø”~ð :Ý$Ð&8Ñ9Ô9Ð9ÝÔ1°#Ñ6Ô6‘��aÝ Ô3°GÑ<Ô<�Ø˜‰z˜TÒ!Ð!Ý Ð"a¸Ð"aÐ"a¸QÐ"aÐ"aÀ%Ð"aÐ"aÈ1Ð"aÐ"aÐPVÐ"aÐ"aÐZ^Ð"aÐ"aÑbÔbÐbÝÔ'¨¬¸ÑAÔAÐAØˆDŒIˆIˆIå˜˜dÑ#Ô#ñ >	#à‰JˆIØˆDÝ�y )Ñ,Ô,ð :Ø!×)Ò)Ñ+Ô+�Øð >ÝÔ6°uÑ=Ô=�CøÝ˜ DÑ)Ô)ð 
:Ø!œ�Øð >ÝÔ6°uÑ=Ô=�CøÝ˜I¥sÑ+Ô+ð :ÝÔ2°9Ñ=Ô=��å(¨Ñ3Ô3�Ø”~ð 8¨S¬^Ô-?ð 8Ý$Ð&6Ñ7Ô7Ð7ÝÔ4°SÑ9Ô9�õ
 Ô5ØÝ”M¥/µ?ÅOÕUdÑeÔeÝ”N C§E¢E¡G¤G¨Q°°3·5²5±7´7¸A¸qÑAÔAñô ‰HˆB��1õ
 Ô2°3Ñ7Ô7‰JˆD�$Ø!%ˆBŒMÔØ!%ˆBŒMÔØˆDŒIˆIˆIå˜�x­Ô)9Ð:½CÑ@Ô@ñ 	#à‰IˆC�Ý" 3Ñ'Ô'ˆCÝÔ(¨Ñ-Ô-ˆGÝ˜D ! W¨Q¡YÑ/Ô/ð 0Ý ¥,Ñ/Ô/Ð/ÝÔ(¨¨d°AÑ6Ô6ˆCÝÔ& s­H°YÑ,?Ô,?Ñ@Ô@ˆEÝÔ% e­X°gÑ->Ô->Ñ?Ô?ð 3Ý!Ô-¨eµX¸gÑ5FÔ5FÑGÔGð3å!Ô-¨eµX¸lÑ5KÔ5KÑLÔLð3õ !¥/Ñ2Ô2Ð2ÝÔ& s¨CÑ0Ô0ˆCõ Ô6ØÝ”M¥/µ?ÅOÕUdÑeÔeÝ”N 3§5¢5¡7¤7¨A¨q°#·%²%±'´'¸1¸aÑ@Ô@ñô ‰IˆC��Að
 ˆDŒIˆIˆIð BˆDØð 4ð 4�ØÐ3�t C™yœyÐ3Ð3¨CÐ3Ð3Ð3Ñ3��Ý˜TÑ"Ô"Ð"r*   r   r   r   rZ  r   c                ó   — | j         S r,   )rÈ  r.   s    r)   r5  zPixmap.__len__‹7  s
   € ØŒyÐr*   c                óœ   — t          | ¦  «        t          urd S d}| j        r| j        j        j        j        }d|› d| j        › d| j        › d�S )Nr¨	  zPixmap(z, r£  )rÈ   rç  rë  rÄ   rÌ   r   Úirectrì  )r(   rë  s     r)   rþ   zPixmap.__repr__Ž7  s\   € Ý�D‰zŒz�VÐ#Ð#ØˆFØˆ
ØŒ?ð 	>ØœÔ-Ô8Ô=ˆJàB˜ÐBÐB t¤zÐBÐB°T´ZÐBÐBÐBÐBr*   c                óz  — | j         }t          j        |¦  «        |                     ¦   «         z  }t          j        |¦  «        }t          j        |¦  «        }|dk    rt          j        ||¦  «         n£|dk    rt          j        ||¦  «         n‡|dk    rt          j        ||¦  «         nk|dk    rt          j	        ||¦  «         nO|dk    rt          j
        ||¦  «         n3|dk    rt          j        |||d¦  «         nt          j        ||¦  «         |                     ¦   «          t          |¦  «        }|S )z!
        Pixmap._tobytes
        r   r   r   r   rþ  rÐ  r   )rÄ   r�   Úfz_pixmap_striderÑ  rî  rï  Úfz_write_pixmap_as_pngÚfz_write_pixmap_as_pnmÚfz_write_pixmap_as_pamÚfz_write_pixmap_as_psdÚfz_write_pixmap_as_psÚfz_write_pixmap_as_jpegr'  r-  )r(   Úformat_Újpg_qualityrÃ  rÈ  r/  r(  Úbarrays           r)   Ú_tobyteszPixmap._tobytes—7  s7  € ð ŒYˆÝÔ% bÑ)Ô)¨B¯DªD©F¬FÑ2ˆÝÔ! $Ñ'Ô'ˆÝŒn˜SÑ!Ô!ˆØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ7¸¸RÑ@Ô@Ð@Ð@Ø˜Š\ˆ\ÝÔ)¨#¨r°;ÀÑBÔBÐBÐBåÔ(¨¨bÑ1Ô1Ð1Ø×ÒÑÔÐÝ! #Ñ&Ô&ˆØˆr*   c                óœ  — | j         }|dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        |||¦  «         d S t          j        ||¦  «         d S )Nr   r   r   r   rþ  rÐ  )rÄ   r�   Úfz_save_pixmap_as_pngÚfz_save_pixmap_as_pnmÚfz_save_pixmap_as_pamÚfz_save_pixmap_as_psdÚfz_save_pixmap_as_psÚfz_save_pixmap_as_jpeg)r(   rf   rü  rý  rÃ  s        r)   Ú	_writeIMGzPixmap._writeIMG¬7  sê   € ØŒYˆØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ6°r¸8ÑDÔDÐDÐDÐDØ˜Š\ˆ\�EÔ8¸¸XÀ{ÑSÔSÐSÐSÐSÝ!Ô7¸¸HÑEÔEÐEÐEÐEr*   c                ó4   — t          j        | j        ¦  «        S )z$Indicates presence of alpha channel.)r�   Úfz_pixmap_alpharÄ   r.   s    r)   rì  zPixmap.alpha¶7  r³  r*   Nc                óÂ   — |€t          j        | j        ¦  «         dS |€t          j        | j        |¦  «         dS t	          | j        |t          |¦  «        ¦  «         dS )z*Fill all color components with same value.N)r�   Úfz_clear_pixmaprÄ   Úfz_clear_pixmap_with_valueÚJM_clear_pixmap_rect_with_valuer»  )r(   r¸   r?  s      r)   r  zPixmap.clear_with»7  sc   € àˆ=ÝÔ! $¤)Ñ,Ô,Ð,Ð,Ð,Øˆ\ÝÔ,¨T¬Y¸Ñ>Ô>Ð>Ð>Ð>å+¨D¬I°uÕ>NÈtÑ>TÔ>TÑUÔUÐUÐUÐUr*   r   r4   rÚ  c                óR  — |dk     s|dk    rt          d|› d�¦  «         | S | j        | j        | j        | j        f\  }}}}||z  }t          | j        ¦  «        }|| j        k    r¡t          |¦  «        }t          |¦  «        D ]]}	|	|z  }
t          |dz  ¦  «        D ]C}|
||z  z   }|
|dz
  |z
  |z  z   }||||z   …         ||||z   …         c||||z   …<   ||||z   …<   ŒDŒ^t          | j        ||t          |¦  «        |¦  «        S || j        k    r„t          |¦  «        }t          |dz  ¦  «        D ]=}	|	|z  }|dz
  |	z
  |z  }||||z   …         ||||z   …         c||||z   …<   ||||z   …<   Œ>t          | j        ||t          |¦  «        |¦  «        S || j        k    rñt          |¦  «        }t          |dz  ¦  «        D ]=}	|	|z  }|dz
  |	z
  |z  }||||z   …         ||||z   …         c||||z   …<   ||||z   …<   Œ>t          |¦  «        D ]]}	|	|z  }
t          |dz  ¦  «        D ]C}|
||z  z   }|
|dz
  |z
  |z  z   }||||z   …         ||||z   …         c||||z   …<   ||||z   …<   ŒDŒ^t          | j        ||t          |¦  «        |¦  «        S ||}}t          ||z  |z  ¦  «        }t          |¦  «        }|| j        k    rgt          |¦  «        D ]V}	||	|z  |	|z  |z   …         }t          |¦  «        D ]1}|dz
  |	z
  }|}||z  |z   |z  }||z  }||||z   …         ||||z   …<   Œ2ŒWnft          |¦  «        D ]V}	||	|z  |	|z  |z   …         }t          |¦  «        D ]1}|	}|dz
  |z
  }||z  |z   |z  }||z  }||||z   …         ||||z   …<   Œ2ŒWt          | j        ||||¦  «        S )z
        Rotate or flip a Pixmap. Supported are
        angle: 90, 180, 270
        flip: "left-right" or "top-bottom"
        r   r   zInvalid flip/rotate mode: r   r   )r  rl  rà  rE   rì  r  rí  ÚFLIP_LEFT_RIGHTrh  r\  rç  rë  r)  ÚFLIP_TOP_BOTTOMÚ
ROTATE_180Ú	ROTATE_90)r(   r   r   rÑ  rE   rì  rÓ  Úsrc_mvrÐ  r5  Ú	row_startr4  r  rI  r	  ÚbottomÚnew_wÚnew_hr  Údst_mvÚrowÚdst_xÚdst_yÚdst_posÚsrc_poss                            r)   Úflip_rotatezPixmap.flip_rotateÄ7  s  € ð �!Š8ˆ8�t˜a’x�xÝÐ@¸Ð@Ð@Ð@ÑAÔAÐAØˆKàœ T¤[°$´&¸$¼*ÐD‰ˆˆ1ˆa�Ø�Q‘ˆÝ˜DœLÑ)Ô)ˆð �4Ô'Ò'Ð'Ý˜FÑ#Ô#ˆCÝ˜1‘X”Xð ð �Ø ™J�	Ý˜q A™v™œð ð �AØ$ q¨1¡uÑ,�DØ%¨¨Q©°©°a©Ñ7�Eà˜E E¨A¡IÐ-Ô.Ø˜D 4¨!¡8˜OÔ,ð A�C˜˜t a™x˜Ñ(¨#¨e°e¸a±iÐ.?Ñ*@Ð*@ðõ ˜$œ/¨1¨aµ°s±´¸UÑCÔCÐCð �4Ô'Ò'Ð'Ý˜FÑ#Ô#ˆCÝ˜1 ™6‘]”]ð ð �Ø˜&‘j�Ø˜a™% !™) vÑ-�à˜ ¨&¡Ð0Ô1Ø˜˜c F™lÐ*Ô+ð G��C˜# ™,Ð&Ñ'¨¨V°f¸v±oÐ-EÑ)FÐ)Fõ ˜$œ/¨1¨aµ°s±´¸UÑCÔCÐCð �4”?Ò"Ð"Ý˜FÑ#Ô#ˆCõ ˜1 ™6‘]”]ð ð �Ø˜&‘j�Ø˜a™% !™) vÑ-�à˜ ¨&¡Ð0Ô1Ø˜˜c F™lÐ*Ô+ð G��C˜# ™,Ð&Ñ'¨¨V°f¸v±oÐ-EÑ)FÐ)Fõ ˜1‘X”Xð ð �Ø ™J�	Ý˜q A™v™œð ð �AØ$ q¨1¡uÑ,�DØ%¨¨Q©°©°a©Ñ7�Eà˜E E¨A¡IÐ-Ô.Ø˜D 4¨!¡8˜OÔ,ð A�C˜˜t a™x˜Ñ(¨#¨e°e¸a±iÐ.?Ñ*@Ð*@ðõ ˜$œ/¨1¨aµ°s±´¸UÑCÔCÐCð ˜!ˆuˆÝ˜ ™¨Ñ)Ñ*Ô*ˆÝ˜C‘”ˆà�4”>Ò!Ð!Ý˜1‘X”Xð Oð O�Ø˜Q ™Z¨!¨f©*°vÑ*=Ð=Ô>�Ý˜q™œð Oð O�AØ ™E A™I�EØ�EØ$ u™}¨uÑ4¸Ñ9�GØ !™e�GØ47¸À'ÈAÁ+Ð8MÔ4N�F˜7 W¨q¡[Ð0Ñ1Ð1ðOðOõ ˜1‘X”Xð Oð O�Ø˜Q ™Z¨!¨f©*°vÑ*=Ð=Ô>�Ý˜q™œð Oð O�AØ�EØ ™E A™I�EØ$ u™}¨uÑ4¸Ñ9�GØ !™e�GØ47¸À'ÈAÁ+Ð8MÔ4N�F˜7 W¨q¡[Ð0Ñ1Ð1ðOõ �d”o u¨e°S¸%Ñ@Ô@Ð@r*   r   c                óV   — | j         }t          ||¦  «        }|st          |¦  «        S |S )z-
        Return count of each color.
        )rÄ   ÚJM_color_countr7   )r(   r  r  rÃ  r    s        r)   Úcolor_countzPixmap.color_count"8  s2   € ð ŒYˆÝ˜R Ñ&Ô&ˆØð 	Ý˜‘8”8ˆOØˆ	r*   c                ó
  — d}d}|�| j         t          |¦  «        v r| j         }|                      d|¬¦  «                             ¦   «         D ]\  }}||z  }||k    r|}|}Œ|sdt	          dg| j        z  ¦  «        fS ||z  |fS )z/Return most frequent color and its usage ratio.r   NT)r  r  r   r
  )ró  r4  r!  rB   r)  rE   )r(   r  Ú	allpixelsÚcntÚpixelr  Úmaxpixels          r)   Úcolor_topusagezPixmap.color_topusage,8  s­   € àˆ	ØˆØÐ ¤
­d°4©j¬jÐ 8Ð 8Ø”:ˆDØ ×,Ò,°D¸dÐ,ÑCÔC×IÒIÑKÔKð 	!ð 	!‰LˆE�5Ø˜ÑˆIØ�sŠ{ˆ{Ø�Ø �øØð 	.Ø•u˜c˜U T¤V™^Ñ,Ô,Ð-Ð-Ø�i‘ Ð*Ð*r*   c                ól   — t          t          j        | j        ¦  «        ¦  «        }|j        dk    rdS |S )zPixmap Colorspace.rã  N)r   r�   rÇ  rÄ   r   )r(   rï  s     r)   rë  zPixmap.colorspace;8  s5   € õ �Ô2°4´9Ñ=Ô=Ñ>Ô>ˆØŒ7�fÒÐØ�4Øˆ	r*   c                óF  — | j         }|j         }t          j        |¦  «        st          d¦  «        ‚|                     ¦   «         |                     ¦   «         k    rt          d¦  «        ‚t          j        ||t          |¦  «        t          j        d¦  «        ¦  «         dS )zCopy bbox from another Pixmap.z'cannot copy pixmap with NULL colorspacez%source and target alpha must be equalN)rÄ   r�   rÇ  rÃ   rì  Úfz_copy_pixmap_rectr»  r%  )r(   rá  r?  rÃ  rß  s        r)   rm  zPixmap.copyC8  s�   € àŒYˆØ”(ˆÝÔ)¨'Ñ2Ô2ð 	IÝÐGÑHÔHÐHØ�8Š8‰:Œ:˜Ÿš™œÒ(Ð(ÝÐEÑFÔFÐFÝÔ! " gÕ/?ÀÑ/EÔ/EÅuÔGaÐbfÑGgÔGgÑhÔhÐhÐhÐhr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S )zMD5 digest of pixmap (bytes).)r�   r!  rÄ   r)  r  s     r)   rD  zPixmap.digestM8  s"   € õ Ô" 4¤9Ñ-Ô-ˆÝ�S‰zŒzÐr*   c                óŽ   — t          j        | j        ¦  «        st          d¦  «         dS t          j        | j        |¦  «         dS )z=Apply correction with some float.
        gamma=1 is a no-op.zcolorspace invalid for functionN)r�   rÇ  rÄ   r  Úfz_gamma_pixmap)r(   Úgammas     r)   Ú
gamma_withzPixmap.gamma_withS8  sH   € õ Ô)¨4¬9Ñ5Ô5ð 	ÝÐ=Ñ>Ô>Ð>ØˆFÝÔ˜tœy¨%Ñ0Ô0Ð0Ð0Ð0r*   c                ó4   — t          j        | j        ¦  «        S )zThe height.)r�   rÏ  rÄ   r.   s    r)   rÑ  zPixmap.h[8  rÉ
  r*   c                ó  — | j         }t          j        |¦  «        j        st	          d¦  «         dS t          |¦  «        }t          j        |¦  «        rt          j        |¦  «         dS t          j        ||¦  «         dS )z Invert the colors inside a bbox.zignored for stencil pixmapFT)	rÄ   r�   rÇ  rÌ   r  r»  r¼  Úfz_invert_pixmapÚfz_invert_pixmap_rect)r(   r?  rÃ  r.  s       r)   Úinvert_irectzPixmap.invert_irect`8  s�   € àŒYˆÝÔ)¨"Ñ-Ô-Ô8ð 	ÝÐ8Ñ9Ô9Ð9Ø�5Ý˜TÑ"Ô"ˆÝÔ% aÑ(Ô(ð 	ÝÔ" 2Ñ&Ô&Ð&Ø�4ÝÔ# B¨Ñ*Ô*Ð*Øˆtr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S )zPixmap bbox - an IRect object.)r�   Úfz_pixmap_bboxrÄ   ÚJM_py_from_irectrZ  s     r)   ró  zPixmap.irectm8  s$   € õ Ô" 4¤9Ñ-Ô-ˆÝ Ñ%Ô%Ð%r*   c                ó4   — t          j        | j        ¦  «        S )zCheck if pixmap is monochrome.)r�   Úfz_is_pixmap_monochromerÄ   r.   s    r)   Úis_monochromezPixmap.is_monochromes8  s   € õ Ô,¨d¬iÑ8Ô8Ð8r*   c                ó  — | j         }|                     ¦   «         }|                     ¦   «         |                     ¦   «         z  |z  }d„ }t	          d||¦  «        D ],}|dk    r ||d|¦  «        }Œ ||||¦  «        }||k    r dS Œ-dS )z5
        Check if pixmap has only one color.
        c                óœ   — t          ¦   «         }t          |¦  «        D ]-}|                     t          j        | ||z   ¦  «        ¦  «         Œ.|S r,   )r´   r\  rk   r�   rÕ  )rÃ  ÚoffsetrE   rG   r®   s        r)   Ú_pixmap_read_samplesz0Pixmap.is_unicolor.<locals>._pixmap_read_samples€8  sK   € Ý‘&”&ˆCÝ˜1‘X”Xð ?ð ?�Ø—
’
�5Ô/°°F¸1±HÑ=Ô=Ñ>Ô>Ð>Ð>ØˆJr*   r   FT)rÄ   rE   r   rÑ  r\  )r(   rÃ  rE   r  r>  r=  Úsample0Úsamples           r)   Úis_unicolorzPixmap.is_unicolorx8  s±   € ð
 ŒYˆØ�DŠD‰FŒFˆØ—’‘”˜Ÿš™œ‘ !Ñ#ˆð	ð 	ð 	õ
 ˜Q  qÑ)Ô)ð 	!ð 	!ˆFØ˜Š{ˆ{Ø.Ð.°°A°qÑ9Ô9��à-Ð-¨r°6¸1Ñ=Ô=�Ø˜WÒ$Ð$Ø ˜5˜5ð %àˆtr*   c                óˆ   — t           r#d„ }t          |¦  «        | j        _        | j        S t	          j        | j        ¦  «        S )zThe size of one pixel.c                ó4   — t          j        | j        ¦  «        S r,   )r   Úpixmap_nrÄ   r.   s    r)   Ún2zPixmap.n.<locals>.n2•8  s   € Ý”~ d¤iÑ0Ô0Ð0r*   )r'  rB  rO  rE   r�   Úfz_pixmap_componentsrÄ   )r(   rE  s     r)   rE   zPixmap.nŽ8  sE   € õ ð 	ð1ð 1ð 1å'¨™|œ|ˆDŒNÔØ”6ˆMÝÔ)¨$¬)Ñ4Ô4Ð4r*   c                óÄ  — t          |¦  «        }t          j        ¦   «         }||_        |r|                     |¦  «         |r|                     |¦  «         | j        }t          |t          ¦  «        rt          j	        ||d|¦  «         dS t          |¦  «        }	 t          j        |||¦  «         |                     ¦   «          dS # |                     ¦   «          w xY w)z4
        Save pixmap as an OCR-ed PDF page.
        r   N)Úget_tessdatar�   ÚFzPdfocrOptionsrY
  Úlanguage_set2Údatadir_set2rÄ   r>   rá  Úfz_save_pixmap_as_pdfocrr%  Úfz_write_pixmap_as_pdfocrr'  )r(   rf   rY
  r:  ÚtessdatarÅ  rð  r(  s           r)   Úpdfocr_savezPixmap.pdfocr_save›8  së   € õ   Ñ)Ô)ˆÝÔ$Ñ&Ô&ˆØ ˆŒØð 	*Ø×Ò Ñ)Ô)Ð)Øð 	)Ø×Ò˜xÑ(Ô(Ð(ØŒiˆÝ�h¥Ñ$Ô$ð 	&ÝÔ*¨C°¸1¸dÑCÔCÐCÐCÐCå'¨Ñ2Ô2ˆCð&ÝÔ/°°c¸4Ñ@Ô@Ð@à×#Ò#Ñ%Ô%Ð%Ð%Ð%ø�×#Ò#Ñ%Ô%Ð%Ð%øøøs   ÂC	 Ã	CTÚengc                óš   — t          |¦  «        }ddlm}  |¦   «         }|                      ||||¬¦  «         |                     ¦   «         S )a¾  Save pixmap as an OCR-ed PDF page.

        Args:
            compress: (bool) compress, default 1 (True).
            language: (str) language(s) occurring on page, default "eng" (English),
                    multiples like "eng+ger" for English and German.
            tessdata: (str) folder name of Tesseract's language support. If None
                    we use environment variable TESSDATA_PREFIX or search for
                    Tesseract installation.
        Notes:
            On failure, make sure Tesseract is installed and you have set
            <tessdata> or environment variable "TESSDATA_PREFIX" to the folder
            containing your Tesseract's language support data.
        r   r^
  )rY
  r:  rN  )rH  r9   ri  rO  r�  )r(   rY
  r:  rN  ri  r_
  s         r)   Úpdfocr_tobyteszPixmap.pdfocr_tobytes°8  sY   € õ   Ñ)Ô)ˆØÐÐÐÐÐØˆg‰iŒiˆØ×Ò˜ x¸(ÈXÐÑVÔVÐVØ�|Š|‰~Œ~Ðr*   c                ó  — 	 ddl m} n# t          $ r t          d¦  «         ‚ w xY w| j        }|sd}n0|j        dk    r| j        sdnd}n|j        dk    r| j        sdnd	}nd
}|                     || j        | j	        f| j
        ¦  «        }|S )z&Create a Pillow Image from the Pixmap.r   )r  zPIL/Pillow not installedr+  r   ÚLAr   r«  ÚRGBAr¬  )ÚPILr  r
  rr   rë  rE   rì  Ú	frombytesrl  rà  rí  )r(   r  Úcspacer   rß  s        r)   Ú	pil_imagezPixmap.pil_imageÅ8  sÅ   € ð	Ø!Ð!Ð!Ð!Ð!Ð!Ð!øÝð 	ð 	ð 	ÝÐ.Ñ/Ô/Ð/Øð	øøøð ”ˆØð 	ØˆDˆDØŒX˜Š]ˆ]Ø"œjÐ2�3�3¨dˆDˆDØŒX˜Š]ˆ]Ø $¤
Ð6�5�5°ˆDˆDàˆDà�oŠo˜d T¤Z°´Ð$=¸t¼|ÑLÔLˆØˆ
s   ‚	 ‰$c                ó–   — |                       ¦   «         }d|                     ¦   «         vr| j        | j        f|d<    |j        |i |¤Ž dS )a6  Write to image file using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional and keyword parameters.
        Use this when other output formats are desired.
        rê  N)rY  rÕ  rJ  rK  r3  )r(   r  r  rß  s       r)   Úpil_savezPixmap.pil_saveÚ8  sU   € ð �nŠnÑÔˆà˜Ÿš™œÐ%Ð%Ø!œY¨¬	Ð2ˆF�5‰MàˆŒ�$Ð!˜&Ð!Ð!Ð!Ð!Ð!r*   c                óè   — t          j        ¦   «         }|                      ¦   «         }d|                     ¦   «         vr| j        | j        f|d<    |j        |g|¢R i |¤Ž |                     ¦   «         S )a?  Convert to an image in memory using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional or keyword parameters.
        Use this when other output formats are desired.
        rê  )r9   ri  rY  rÕ  rJ  rK  r3  r�  )r(   r  r  Ú	bytes_outrß  s        r)   Úpil_tobyteszPixmap.pil_tobytesé8  sw   € õ ”J‘L”Lˆ	Ø�nŠnÑÔˆà˜Ÿš™œÐ%Ð%Ø!œY¨¬	Ð2ˆF�5‰MàˆŒ�Ð,˜TÐ,Ð,Ð, VÐ,Ð,Ð,Ø×!Ò!Ñ#Ô#Ð#r*   c                óŽ  — t           r t          j        | j        j        ||¦  «        S 	 |dk     s0|| j        j        j        k    s|dk     s|| j        j        j        k    rt          t          t          ¦  «         | j        j        j
        }| j        j        j        }||z  ||z  z   }t          | j        |||z   …         ¦  «        }|S )zXGet color tuple of pixel (x, y).
        Last item is the alpha if Pixmap.alpha is true.r   )r'  r   Úpixmap_pixelrÄ   rÌ   r   rÑ  rÀ  ÚMSG_PIXEL_OUTSIDEr{  rE   rÓ  rµ   Ú
samples_mv)r(   r4  r5  rE   rÓ  r®   rG   s          r)   r%  zPixmap.pixelú8  sÃ   € õ ð 	BÝÔ% d¤iÔ&:¸A¸qÑAÔAÐAð	9Ø�q’5�5Ø˜œ	Ô,Ô.Ò.Ð.Ø�q’5�5Ø˜œ	Ô,Ô.Ò.Ð.åÕ%Õ'7Ñ8Ô8Ð8ØŒIÔ Ô"ˆØ”Ô%Ô,ˆØ�Q‰J˜˜Q™ÑˆÝ�T”_ a¨¨1© fÔ-Ñ.Ô.ˆØˆ
r*   r)  c                ó.   — | j         }t          |¦  «        S r,   )rb  r)  )r(   Úmvs     r)   rí  zPixmap.samples9  s   € àŒ_ˆÝ�b‰zŒzÐr*   c                óZ   — | j         €t          j        | j        ¦  «        | _         | j         S )z,
        Pixmap samples memoryview.
        )rÁ  r�   rÒ  rÄ   r.   s    r)   rb  zPixmap.samples_mv9  s+   € ð ÔÐ#Ý$ÔAÀ$Ä)ÑLÔLˆDÔØÔÐr*   c                óJ   — | j         r| j                              ¦   «          d S d S r,   ©rÁ  Úreleaser.   s    r)   Ú_samples_mv_releasezPixmap._samples_mv_release9  ó2   € ØÔð 	'ØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_pixmap_samples_intrÄ   r.   s    r)   Úsamples_ptrzPixmap.samples_ptr"9  s   € åÔ*¨4¬9Ñ5Ô5Ð5r*   é_   c                óâ  — dddddddddddœ
}t          |¦  «        t          u rn7t          |d¦  «        rt          |¦  «        }nt          |d	¦  «        r|j        }|€,t          j                             |¦  «        \  }}|dd
…         }|                     |                     ¦   «         d
¦  «        }|€4t          d|› dt          |                     ¦   «         ¦  «        › �¦  «        ‚| j        r|dv rt          d|› d�¦  «        ‚| j        r'| j        j        dk    r|dv rt          d|› d�¦  «        ‚|dk    r |                      | j        | j        ¦  «         |                      |||¦  «        S )zòOutput as image in format determined by filename extension.

        Args:
            output: (str) only use to overrule filename extension. Default is PNG.
                    Others are JPEG, JPG, PNM, PGM, PPM, PBM, PAM, PSD, PS.
        r   r   r   r   rþ  rÐ  )
rÖ  ÚpnmÚpgmÚppmÚpbmÚpamÚpsdÚpsÚjpgÚjpegr  r   NúImage format ú not in ©r   rþ  rÐ  rü   z' cannot have alpha©r   r   rZ  úunsupported colorspace for ')rÈ   rá  r;   r   rd   r
   Úsplitextr8   râ  rÃ   rµ   rÕ  rì  rë  rE   rè  rJ  rK  r  )r(   rf   rò  rý  Úvalid_formatsr  r#  rC  s           r)   r3  zPixmap.save&9  sŸ  € ð ØØØØØØØØØðð ˆõ �‰>Œ>�SÐ Ð ØÝ�X˜zÑ*Ô*ð 	%Ý˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	%Ø”}ˆHØˆ>Ý”W×%Ò% hÑ/Ô/‰FˆAˆsØ˜˜˜”WˆFà×Ò §¢¡¤°Ñ5Ô5ˆØˆ;ÝÐZ¨VÐZÐZ½UÀ=×CUÒCUÑCWÔCWÑ=XÔ=XÐZÐZÑ[Ô[Ð[ØŒ:ð 	>˜# Ð*Ð*ÝÐ< Ð<Ð<Ð<Ñ=Ô=Ð=ØŒ?ð 	G˜tœÔ0°1Ò4Ð4¸À	Ð9IÐ9IÝÐE¸FÐEÐEÐEÑFÔFÐFØ�!Š8ˆ8Ø�LŠL˜œ D¤IÑ.Ô.Ð.Ø�~Š~˜h¨¨[Ñ9Ô9Ð9r*   c                ó¨  — | j         }d}d}|                     ¦   «         dk    rt          t          ¦  «        ‚t	          j        |¦  «        }t	          j        |¦  «        }	t	          j        |¦  «        }
|	|
z  |dz   z  }g d¢}g d¢}d}d}|rNt          |t          t          f¦  «        r2t          |¦  «        |k    rt          |¦  «        D ]}||         ||<   Œd}|rNt          |t          t          f¦  «        r2t          |¦  «        |k    rt          |¦  «        D ]}||         ||<   Œd}t          ¦   «         }d}|r`t          |t          t          f¦  «        r|}t          |¦  «        }nJ dt          |¦  «        › �¦   «         ‚||	|
z  k     rt          d¦  «        ‚	 t	          j        ||||t	          j        |¦  «        |j        ||||¦
  «
         dS )	a©  Set alpha channel to values contained in a byte array.
        If omitted, set alphas to 255.

        Args:
            alphavalues: (bytes) with length (width * height) or 'None'.
            premultiply: (bool, True) premultiply colors with alpha values.
            opaque: (tuple, length colorspace.n) this color receives opacity 0.
            matte: (tuple, length colorspace.n)) preblending background color.
        r   r   ©r   r   r   r   z!unexpected type for alphavalues: zbad alpha valuesr
  c                ó,   — | |z  dz   }||dz  z  }|dz  S )Né€   r'  r-   )r!   rÜ
  r4  s      r)   Ú	fz_mul255z#Pixmap.set_alpha.<locals>.fz_mul255™9  s%   € Ø ™E C™K˜Ø˜Q #™X™˜Ø  C™x˜r*   N)rÄ   rì  rÃ   rÉ  r�   rÍ  rÎ  rÏ  r>   r´   rµ   r7   r\  r)  rh  rÈ   ÚPixmap_set_alpha_helperr  rÌ   rÕ  rÔ  )r(   ÚalphavaluesÚpremultiplyÚopaqueÚmatterð  rì  r�  rE   r   rÑ  Úbalenr  r‚  Úzero_outÚbgroundr®   rˆ  Údata_lenrª  r‘  Údata_fixr„  s                          r)   Ú	set_alphazPixmap.set_alphaO9  s  € ð ŒiˆØˆØˆØ�9Š9‰;Œ;˜!ÒÐÝ�oÑ.Ô.Ð.ÝÔ% cÑ*Ô*ˆÝÔ! #Ñ&Ô&ˆÝÔ" 3Ñ'Ô'ˆØ�A‘˜˜1™‘ˆØ��ˆØ�,�,ˆØˆØˆØð 	•j ­$µ¨Ñ7Ô7ð 	½CÀ¹K¼KÈ1Ò<LÐ<LÝ˜1‘X”Xð &ð &�Ø" 1œI��q‘	�	ØˆHØð 	•Z ­µ¨Ñ6Ô6ð 	½3¸u¹:¼:Èº?¸?Ý˜1‘X”Xð &ð &�Ø" 1œX�˜‘
�
ØˆGÝ‰wŒwˆØˆØð 	6õ ˜+­­yÐ'9Ñ:Ô:ð RØ"�Ý˜{Ñ+Ô+��àQÐQ½dÀ;Ñ>OÔ>OÐQÐQÑQÔQ�qØ˜!˜a™%ÒÐÝ Ð"4Ñ5Ô5Ð5ð.	åÔ)ØØØØÝÔ,¨dÑ3Ô3Ø”NØØØØñô ð ð ð r*   rÖ  c                óè  — dddddddddddddœ}|                      |                     ¦   «         d	¦  «        }|€4t          d
|› dt          |                     ¦   «         ¦  «        › �¦  «        ‚| j        r|dv rt          d¦  «        ‚| j        r'| j        j        dk    r|dv rt          d|› d�¦  «        ‚|dk    r |                      | j	        | j
        ¦  «         |                      ||¦  «        }|S )zA
        Convert to binary image stream of desired type.
        r   r   r   rZ  r   rþ  rÐ  )rÖ  rp  rq  rr  rs  rt  ÚtgaÚtpicru  rv  rw  rx  Nry  rz  r{  z'{output}' cannot have alphar|  r}  rü   )r8   râ  rÃ   rµ   rÕ  rì  rë  rE   rè  rJ  rK  rÿ  )r(   rò  rý  r  rC  rþ  s         r)   rÙ  zPixmap.tobytes®9  s%  € ð
 ØØØØØØØØØØØðð ˆð ×Ò §¢¡¤°Ñ5Ô5ˆØˆ;ÝÐZ¨VÐZÐZ½UÀ=×CUÒCUÑCWÔCWÑ=XÔ=XÐZÐZÑ[Ô[Ð[ØŒ:ð 	=˜# Ð*Ð*ÝÐ;Ñ<Ô<Ð<ØŒ?ð 	G˜tœÔ0°1Ò4Ð4¸À	Ð9IÐ9IÝÐE¸FÐEÐEÐEÑFÔFÐFØ�!Š8ˆ8Ø�LŠL˜œ D¤IÑ.Ô.Ð.Ø—’˜s KÑ0Ô0ˆØˆr*   c                óD   — | j         }||j        _        ||j        _        dS )z"Set resolution in both dimensions.N)rÄ   rÌ   rJ  rK  )r(   rJ  rK  rÃ  s       r)   rè  zPixmap.set_dpiÌ9  s#   € àŒYˆØ!ˆŒÔØ!ˆŒÔÐÐr*   c                óD   — | j         }||j        _        ||j        _        dS )zSet top-left coordinates.N)rÄ   rÌ   r4  r5  )r(   r4  r5  rÃ  s       r)   Ú
set_originzPixmap.set_originÒ9  s   € àŒYˆØˆŒŒØˆŒŒˆˆr*   c                ól  — t           r!t          j        | j        j        |||¦  «        S | j        }t          |d|                     ¦   «         dz
  ¦  «        r&t          |d|                     ¦   «         dz
  ¦  «        st          t          ¦  «        ‚| 
                    ¦   «         }t          |¦  «        D ]/}||         }t          |dd¦  «        st          t          ¦  «        ‚Œ0t          j        |¦  «        }||z  ||z  z   }	 t          |¦  «        D ]!}|                     ||z   ||         ¦  «         Œ"dS )zSet color of pixel (x, y).r   r   r
  N)r'  r   Ú	set_pixelrÄ   rÌ   r¯  r   rÑ  rÃ   ra  rE   r\  ÚMSG_BAD_COLOR_SEQr�   rõ  rÂ  rb  rÔ  )	r(   r4  r5  r  rÃ  rE   r‘  r®   rÓ  s	            r)   r—  zPixmap.set_pixelØ9  s7  € åð 	FÝ”? 4¤9Ô#7¸¸A¸uÑEÔEÐEØŒYˆÝ˜˜1˜bŸdšd™fœf q™jÑ)Ô)ð 	1µ¸!¸QÀÇÂÁÄÈÁ
Ñ1KÔ1Kð 	1ÝÕ/Ñ0Ô0Ð0Ø�DŠD‰FŒFˆÝ�q‘”ð 	5ð 	5ˆAØ�a”ˆAÝ˜A˜q #Ñ&Ô&ð 5Ý Õ"3Ñ4Ô4Ð4ð5åÔ'¨Ñ,Ô,ˆØ�Q‰J˜˜Q™Ñˆð		3õ ˜1‘X”Xð 3ð 3�Ø×!Ò! ! a¡%¨¨q¬Ñ2Ô2Ð2Ð2ð3ð 3r*   c                óF  — | j         }|                     ¦   «         }g }t          |¦  «        D ]D}||         }t          |dd¦  «        st	          t
          ¦  «        ‚|                     |¦  «         ŒEt          |¦  «        }t          |||¦  «        }t          |¦  «        }|S )z Set color of all pixels in bbox.r   r
  )
rÄ   rE   r\  r¯  rÃ   r˜  rk   r»  ÚJM_fill_pixmap_rect_with_colorrø   )	r(   r?  r  rÃ  rE   rË  r‘  r®   r    s	            r)   rÁ  zPixmap.set_rectñ9  s›   € àŒYˆØ�DŠD‰FŒFˆØˆÝ�q‘”ð 	ð 	ˆAØ�a”ˆAÝ˜A˜q #Ñ&Ô&ð 5Ý Õ"3Ñ4Ô4Ð4Ø�HŠH�Q‰KŒKˆKˆKÝ Ñ%Ô%ˆÝ*¨2¨q°$Ñ7Ô7ˆÝ�!‰WŒWˆØˆ	r*   c                óž   — |dk     rt          d¦  «         dS t          j        | j        |¦  «         d| _        |                      ¦   «          dS )zgDivide width and height by 2**factor.
        E.g. factor=1 shrinks to 25% of original size (in place).r   zignoring shrink factor < 1N)r  r�   Úfz_subsample_pixmaprÄ   rÂ  ri  )r(   Úfactors     r)   ÚshrinkzPixmap.shrink :  sV   € ð �AŠ:ˆ:ÝÐ8Ñ9Ô9Ð9ØˆFÝÔ! 4¤9¨fÑ5Ô5Ð5à ˆÔØ× Ò Ñ"Ô"Ð"Ð"Ð"r*   c                ó4   — t          j        | j        ¦  «        S )zPixmap size.)r�   Úfz_pixmap_sizerÄ   r.   s    r)   rÈ  zPixmap.size:  s   € õ Ô$ d¤iÑ0Ô0Ð0r*   c                ó4   — | j                              ¦   «         S )z%Length of one image line (width * n).)rÄ   rÓ  r.   s    r)   rÓ  zPixmap.stride:  s   € ð Œy×ÒÑ!Ô!Ð!r*   c                óˆ   — | j         r| j         j        dk    rt          d¦  «         dS t          j        | j        ||¦  «        S )z/Tint colors with modifiers for black and white.r   z(warning: colorspace invalid for functionN)rë  rE   rr   r�   Úfz_tint_pixmaprÄ   )r(   ÚblackÚwhites      r)   Ú	tint_withzPixmap.tint_with:  sF   € àŒð 	 $¤/Ô"3°aÒ"7Ð"7ÝÐ>Ñ?Ô?Ð?ØˆFÝÔ# T¤Y°°uÑ=Ô=Ð=r*   c                ó4   — t          j        | j        ¦  «        S )z
The width.)r�   rÎ  rÄ   r.   s    r)   r   zPixmap.w:  r³  r*   c                óÖ   — |j         st          d¦  «        ‚t          |¦  «        }|j        |j        |j        |j        g}t          j        | j	        |||¦  «        }t          |¦  «        S )z!Return pixmap from a warped quad.zquad must be convex)Ú	is_convexrÃ   r—  r¯  rü  rû  rú  r�   Úfz_warp_pixmaprÄ   rç  )r(   r  rl  rà  r›  r  r  s          r)   ÚwarpzPixmap.warp!:  s_   € àŒ~ÐF¥ZÐ0EÑ%FÔ%FÐFÝ˜DÑ!Ô!ˆØ”4˜œ˜qœt Q¤TÐ*ˆÝÔ" D¤I¨v°u¸fÑEÔEˆÝ�s‰|Œ|Ðr*   c                ó4   — t          j        | j        ¦  «        S )zx component of Pixmap origin.)r�   Úfz_pixmap_xrÄ   r.   s    r)   r4  zPixmap.x):  ó   € õ Ô  ¤Ñ+Ô+Ð+r*   c                ó4   — | j                              ¦   «         S )zResolution in x direction.)rÄ   rJ  r.   s    r)   rJ  zPixmap.xres.:  ó   € ð Œy�~Š~ÑÔÐr*   c                ó4   — t          j        | j        ¦  «        S )zy component of Pixmap origin.)r�   Úfz_pixmap_yrÄ   r.   s    r)   r5  zPixmap.y3:  r®  r*   c                ó4   — | j                              ¦   «         S )zResolution in y direction.)rÄ   rK  r.   s    r)   rK  zPixmap.yres8:  r°  r*   c                óJ   — | j         r| j                              ¦   «          d S d S r,   rg  r.   s    r)   rÊ  zPixmap.__del__@:  rj  r*   rø	  )r   r4   rÚ  rç  r·  r,   )r   NN)TrP  N©rÚ  r)  )Nrn  )Nr   NN)rÖ  rn  );r/   r0   r1   rŒ   r  Ú
ROTATE_270r  r  r  r5  rþ   rÿ  r  rB  rì  r  r  r!  r'  rë  rm  rD  r/  rÑ  r4  ró  r:  rA  rE   rO  rR  rY  r[  r^  r%  rí  rb  ri  rm  r3  r�  rÙ  rè  r•  r—  rÁ  rž  rÈ  rÓ  r¦  r   r«  r4  rJ  r5  rK  rl  rà  rÊ  r-   r*   r)   rç  rç  k6  s:  € € € € € ðV#ð V#ð V#ðp €IØ€JØ€JØ€OØ€Oðð ð ðCð Cð Cðð ð ð*Fð Fð Fð ð0ð 0ñ „Xð0ðVð Vð Vð Vð\Að \Að \Að \Að|ð ð ð ð+ð +ð +ð +ð ðð ñ „Xððið ið ið ðð ñ „Xðð
1ð 1ð 1ð ð1ð 1ñ „Xð1ðð ð ð ð ð&ð &ñ „Xð&ð
 ð9ð 9ñ „Xð9ð ðð ñ „Xðð* ð
5ð 
5ñ „Xð
5ð&ð &ð &ð &ð*ð ð ð ð*ð ð ð*"ð "ð "ð$ð $ð $ð"ð ð ð$ ðð ð ñ „Xðð ð
 ð 
 ñ „Xð
 ð'ð 'ð 'ð ð6ð 6ñ „Xð6ð':ð ':ð ':ð ':ðR]ð ]ð ]ð ]ð~ð ð ð ð<"ð "ð "ðð ð ð3ð 3ð 3ð2ð ð ð	#ð 	#ð 	#ð ð1ð 1ñ „Xð1ð ð"ð "ñ „Xð"ð>ð >ð >ð ð0ð 0ñ „Xð0ðð ð ð ð,ð ,ñ „Xð,ð ð ð  ñ „Xð ð ð,ð ,ñ „Xð,ð ð ð  ñ „Xð ð €EØ€Fð'ð 'ð 'ð 'ð 'r*   rç  c                  ó¶   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdddœd	„Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         ZeZeZdS )rú  c                ód   — t          j        | j        | j        z  | j        | j        z  z   ¦  «        S r,   )rU  rV  r4  r5  r.   s    r)   rX  zPoint.__abs__G:  s'   € ÝŒy˜œ $¤&™¨4¬6°D´F©?Ñ:Ñ;Ô;Ð;r*   c                óþ   — t          |d¦  «        r t          | j        |z   | j        |z   ¦  «        S t	          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   ¦  «        S ©Nry  r   úPoint: bad seq lenr   r   ©r;   rú  r4  r5  r7   rÃ   ©r(   r²  s     r)   r_  zPoint.__add__J:  ór   € Ý�1�kÑ"Ô"ð 	1Ý˜œ !™ T¤V¨a¡ZÑ0Ô0Ð0Ýˆq‰6Œ6�QŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ý�T”V˜a œd‘] D¤F¨Q¨q¬T¡MÑ2Ô2Ð2r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rb  r.   s    r)   rù   zPoint.__bool__Q:  rc  r*   c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr5  Fr   re  r½  s     r)   rf  zPoint.__eq__T:  s4   € Ý�q˜)Ñ$Ô$ð 	Ø�5Ý�1‰vŒv˜Š{Ð- D¨1¡H˜~Ð-r*   c                ó*   — | j         | j        f|         S r,   ©r4  r5  rõ  s     r)   rp  zPoint.__getitem__Y:  s   € Ø”˜œÐ Ô"Ð"r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   ©rª  rµ   r.   s    r)   r«  zPoint.__hash__\:  ó   € Ý•E˜$‘K”KÑ Ô Ð r*   NrÂ  c               óä  — |sd| _         d| _        �nIt          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r5t	          |d         ¦  «        | _         t	          |d         ¦  «        | _        nßt          |¦  «        dk    r½|d         }t          |t          j        t          j        f¦  «        r|j         | _         |j        | _        n…t          |d¦  «        st          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t	          |d         ¦  «        | _         t	          |d         ¦  «        | _        nt          d¦  «        ‚|�|| _         |�	|| _        dS dS )	zÎ
        Point() - all zeros
        Point(x, y)
        Point(Point) - new copy
        Point(sequence) - from 'sequence'

        Explicit keyword args x, y override earlier settings if not None.
        r­  r   r»  r   r   rp  zPoint: bad argsN)
r4  r5  r7   rÃ   r~  r>   r�   r2  Úfz_pointr;   )r(   r4  r5  r  r'  s        r)   rŒ   zPoint.__init___:  sD  € ð ð 	3ØˆDŒFØˆDŒF‰FÝ�‰YŒY˜Š]ˆ]ÝÐ1Ñ2Ô2Ð2Ý�‰YŒY˜!Š^ˆ^Ý˜4 œ7‘^”^ˆDŒFÝ˜4 œ7‘^”^ˆDŒFˆFÝ�‰YŒY˜!Š^ˆ^Ø�Q”ˆAÝ˜!�eœm­U¬^Ð<Ñ=Ô=ð 	%Øœ�”Øœ�”�å˜q -Ñ0Ô0ð 8Ý$Ð%6Ñ7Ô7Ð7Ý�q‘6”6˜Q’;�;Ý$Ð%9Ñ:Ô:Ð:Ý˜q œt™œ�”Ý˜q œt™œ�”�åÐ1Ñ2Ô2Ð2Øˆ= Q˜DœFØˆ= Q˜DœF˜F˜Fˆ=ˆ=r*   c                ó   — dS ©Nr   r-   r.   s    r)   r5  zPoint.__len__�:  rv  r*   c                ó2  — t          |d¦  «        r t          | j        |z  | j        |z  ¦  «        S t          |d¦  «        r4t	          |¦  «        dk    r!| j        |d         z  | j        |d         z  z   S t          | ¦  «        }|                     |¦  «        S )Nry  rp  r   r   r   )r;   rú  r4  r5  r7   rU  )r(   r�  r²  s      r)   ry  zPoint.__mul__„:  sŠ   € Ý�1�kÑ"Ô"ð 	1Ý˜œ !™ T¤V¨a¡ZÑ0Ô0Ð0Ý�1�mÑ$Ô$ð 	1­¨Q©¬°1ª¨à”6˜A˜aœD‘= 4¤6¨A¨a¬D¡=Ñ0Ð0Ý�$‰KŒKˆØ�{Š{˜1‰~Œ~Ðr*   c                ó:   — t          | j         | j         ¦  «        S r,   )rú  r4  r5  r.   s    r)   r{  zPoint.__neg__�:  s   € Ý�d”f�W˜tœv˜gÑ&Ô&Ð&r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rb  r.   s    r)   r}  zPoint.__nonzero__�:  rc  r*   c                ó    — t          | ¦  «        S r,   rt  r.   s    r)   r  zPoint.__pos__“:  rv  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nrú  r�  r.   s    r)   rþ   zPoint.__repr__–:  ó   € Ø��U 4™[œ[Ñ)Ô)Ñ)Ð)r*   c                óz   — t          |¦  «        }|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S )Nr   r   rƒ  )r~  r4  r5  r  r„  s      r)   r…  zPoint.__setitem__™:  sC   € Ý�!‰HŒHˆØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VåÐ1Ñ2Ô2Ð2Øˆtr*   c                óþ   — t          |d¦  «        r t          | j        |z
  | j        |z
  ¦  «        S t	          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  ¦  «        S rº  r¼  r½  s     r)   r‡  zPoint.__sub__¡:  r¾  r*   c                ó  — t          |d¦  «        r&t          | j        dz  |z  | j        dz  |z  ¦  «        S t	          |¦  «        d         }|st          d¦  «        ‚t          | ¦  «        }|                     |¦  «        S r‰  )r;   rú  r4  r5  rŠ  r‹  rU  )r(   r�  rs  r²  s       r)   r�  zPoint.__truediv__¨:  s|   € Ý�1�kÑ"Ô"ð 	7Ý˜œ "™ Q™¨¬°©°A©Ñ6Ô6Ð6Ý Ñ"Ô" 1Ô%ˆØð 	=Ý#Ð$;Ñ<Ô<Ð<Ý�$‰KŒKˆØ�{Š{˜2‰ŒÐr*   c                ó  — | j         | j         z  | j        | j        z  z   }|t          k     rt          dd¦  «        S t	          j        |¦  «        }t          t          | j         ¦  «        |z  t          | j        ¦  «        |z  ¦  «        S )z&Unit vector with positive coordinates.r   )r4  r5  r”  rú  rU  rV  rý  ©r(   r�  s     r)   Úabs_unitzPoint.abs_unit±:  sj   € ð ŒF�T”V‰O˜dœf t¤v™oÑ-ˆØ�wŠ;ˆ;Ý˜˜1‘:”:ÐÝŒI�a‰LŒLˆÝ•S˜œ‘[”[ 1‘_¥c¨$¬&¡k¤k°A¡oÑ6Ô6Ð6r*   c                ó”  — t          |¦  «        dk    st          d¦  «        ‚|d         }t          |¦  «        dk    rt          |¦  «        }n2t          |¦  «        dk    rt          |¦  «        }nt          d¦  «        ‚t          |¦  «        dk    r	|d         }nd}dd	d
ddœ}||         d         ||         d         z  }t	          |¦  «        t          u rt          | |z
  ¦  «        |z  S t          |j        |j        ¦  «        }||j        z  }| |v rdS | j        |j	        k    rh| j
        |j        k    r|                      |j        |¦  «        S | j
        |j        k    r|                      |j        |¦  «        S | j        |j	        z
  |z  S |j        | j        cxk    r|j	        k    r7n n4| j
        |j        k    r| j
        |j        z
  |z  S |j        | j
        z
  |z  S | j
        |j        k    r|                      |j        |¦  «        S | j
        |j        k    r|                      |j        |¦  «        S |j        | j        z
  |z  S )z.Return distance to rectangle or another point.r   z$at least one parameter must be givenr   rZ  z$arg1 must be point-like or rect-liker   re  )r®  r®  ©r®  ç      R@©gR¸…ëQ@rØ  ©gffffff9@rØ  ©re  ÚinÚcmÚmmr­  )r7   rÃ   rú  r4  rÈ   rý  Útop_leftÚbottom_rightr4  r  r5  r  Údistance_tor  Ú	top_rightr  Úbottom_left)r(   r  r4  ÚunitÚurÝ  r.  s          r)   rá  zPoint.distance_toº:  s6  € å�4‰yŒy˜1Š}ˆ}ÝÐCÑDÔDÐDà�ŒGˆÝˆq‰6Œ6�QŠ;ˆ;Ý�a‘”ˆAˆAÝ�‰VŒV�qŠ[ˆ[Ý�Q‘”ˆAˆAåÐCÑDÔDÐDåˆt‰9Œ9�qŠ=ˆ=Ø˜”7ˆDˆDàˆDØ (°+Øð ð  ˆàˆdŒG�AŒJ˜˜4œ œÑ#ˆå�‰7Œ7•eÐÐÝ�t˜a‘x‘=”= 1Ñ$Ð$õ �”˜QœZÑ(Ô(ˆØ�”ÑˆØ�1ˆ9ˆ9Ø�3ØŒ6�A”DŠ=ˆ=ØŒv˜œŠ~ˆ~Ø×'Ò'¨¬¸Ñ=Ô=Ð=Ø”˜1œ4’�Ø×'Ò'¨¬°TÑ:Ô:Ð:àœ ¤™¨Ñ*Ð*ØŒT�T”VÐ#Ð#Ò#Ð#˜qœtÒ#Ð#Ð#Ð#Ð#ØŒv˜œŠ~ˆ~Øœ ¤™¨Ñ*Ð*àœ˜tœv™¨Ñ*Ð*àŒv˜œŠ~ˆ~Ø×'Ò'¨¬°tÑ<Ô<Ð<Ø”˜1œ4’�Ø×'Ò'¨¬
°DÑ9Ô9Ð9àœ˜tœv™¨Ñ*Ð*r*   c                ó„   — t          |¦  «        dk    rt          d¦  «        ‚t          | |¦  «        \  | _        | _        | S )z7Replace point by its transformation with matrix-like m.rþ  r\  )r7   rÃ   Úutil_transform_pointr4  r5  r^  s     r)   rU  zPoint.transformì:  s<   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ2Ñ3Ô3Ð3Ý-¨d°AÑ6Ô6‰ˆŒ�”Øˆr*   c                óÞ   — | j         | j         z  | j        | j        z  z   }|t          k     rt          dd¦  «        S t	          j        |¦  «        }t          | j         |z  | j        |z  ¦  «        S )zUnit vector of the point.r   )r4  r5  r”  rú  rU  rV  rÔ  s     r)   rä  z
Point.unitó:  s^   € ð ŒF�T”V‰O˜dœf t¤v™oÑ-ˆØ�wŠ;ˆ;Ý˜˜1‘:”:ÐÝŒI�a‰LŒLˆÝ�T”V˜a‘Z ¤¨!¡Ñ,Ô,Ð,r*   )r/   r0   r1   rX  r_  rù   rf  rp  r«  rŒ   r5  ry  r{  r}  r  rþ   r…  r‡  r�  rB  rÕ  rá  rU  rä  r¥  r¦  r-   r*   r)   rú  rú  E:  sq  € € € € € ð<ð <ð <ð3ð 3ð 3ð1ð 1ð 1ð.ð .ð .ð
#ð #ð #ð!ð !ð !ð !%¨ð  'ð  'ð  'ð  'ð  'ðDð ð ðð ð ð'ð 'ð 'ð1ð 1ð 1ðð ð ð*ð *ð *ðð ð ð3ð 3ð 3ðð ð ð ð7ð 7ñ „Xð7ð0+ð 0+ð 0+ðdð ð ð ð-ð -ñ „Xð-ð €GØ€D€D€Dr*   rú  c                  ó.  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddd	œd
„Z
d„ Z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d„ Zed„ ¦   «         Zd„ ZeZ ed„ ¦  «        Z ed„ ¦  «        ZdS )r<  c                ó†   — | j         rdS t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        z  S ©Nr­  )rd	  rý  r¯  rü  rú  r.   s    r)   rX  zQuad.__abs__;  s>   € ØŒ=ð 	Ø�3Ý�4”7˜TœWÑ$Ñ%Ô%­¨D¬G°d´gÑ,=Ñ(>Ô(>Ñ>Ð>r*   c                ó^  — t          |d¦  «        r2t          | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   ¦  «        S ©Nry  rZ  úQuad: bad seq lenr   r   r   r   ©r;   r<  r¯  rü  rú  rû  r7   rÃ   ©r(   r›  s     r)   r_  zQuad.__add__;  óœ   € Ý�1�kÑ"Ô"ð 	LÝ˜œ !™ T¤W¨q¡[°$´'¸A±+¸t¼wÈ¹{ÑKÔKÐKÝˆq‰6Œ6�QŠ;ˆ;ÝÐ0Ñ1Ô1Ð1Ý�D”G˜a œd‘N D¤G¨a°¬d¡N°D´G¸aÀ¼d±NÀDÄGÈaÐPQÌdÁNÑSÔSÐSr*   c                ó   — | j          S r,   ©rd	  r.   s    r)   rù   zQuad.__bool__;  ó   € Ø”=Ð Ð r*   c                óä  — 	 |                      ¦   «         }n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w|dk    rt	          || ¦  «        S |dk    rdS t          |¦  «        rFt          |¦  «        j        rdS t	          |d d…         | ¦  «        ot	          |dd …         | ¦  «        S t          |¦  «        r-t          d¦  «        D ]}t	          ||         | ¦  «        s dS ŒdS dS )Nr   Fr   rZ  T)
r5  rg   r  rv   Úutil_point_in_quadÚ	CheckRectr4  rd	  Ú	CheckQuadr\  )r(   r4  r'  r®   s       r)   râ  zQuad.__contains__;  s  € ð	Ø—	’	‘”ˆAˆAøÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<Ø�5�5ð	øøøð �Š6ˆ6Ý% a¨Ñ.Ô.Ð.Ø�Š6ˆ6Ø�5Ý�Q‰<Œ<ð 	WÝ�A‰wŒwÔð Ø�tÝ% a¨¨¨¤e¨TÑ2Ô2ÐVÕ7IÈ!ÈAÈBÈBÌ%ÐQUÑ7VÔ7VÐVÝ�Q‰<Œ<ð 	Ý˜1‘X”Xð !ð !�Ý)¨!¨A¬$°Ñ5Ô5ð !Ø ˜5˜5ð!à�4Øˆus   ‚ —#>½>c                óÔ   — t          |d¦  «        sdS t          |¦  «        dk    oC| j        |d         k    o2| j        |d         k    o!| j        |d         k    o| j        |d         k    S ©Nr5  FrZ  r   r   r   r   )r;   r7   r¯  rü  rú  rû  )r(   r  s     r)   rf  zQuad.__eq__&;  sy   € Ý�t˜YÑ'Ô'ð 	Ø�5Ý�4‰yŒy˜AŠ~ð 
ØŒG�t˜A”wÒð ØŒG�t˜A”wÒðàŒG�t˜A”wÒðð ŒG�t˜A”wÒð		
r*   c                óB   — | j         | j        | j        | j        f|         S r,   ©r¯  rü  rú  rû  rõ  s     r)   rp  zQuad.__getitem__0;  ó   € Ø”˜œ $¤'¨4¬7Ð3°AÔ6Ð6r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rÄ  r.   s    r)   r«  zQuad.__hash__3;  rÅ  r*   Nrü  c               ó$  — |s*t          ¦   «         x| _        x| _        x| _        | _        �n‰t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r0t          t           |¦  «        \  | _        | _        | _        | _        �n$t          |¦  «        dk    �r|d         }t          |t          j
        ¦  «        ro|| _        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        f\  | _        | _        | _        | _        nt          |d¦  «        st          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t          t           |¦  «        \  | _        | _        | _        | _        nt          d¦  «        ‚|�t          |¦  «        | _        |�t          |¦  «        | _        |�t          |¦  «        | _        |�t          |¦  «        | _        dS dS )zð
        Quad() - all zero points
        Quad(ul, ur, ll, lr)
        Quad(quad) - new copy
        Quad(sequence) - from 'sequence'

        Explicit keyword args ul, ur, ll, lr override earlier settings if not
        None.
    
        rZ  rî  r   r   rp  zQuad: bad argsN)rú  r¯  rü  rú  rû  r7   rÃ   rë  r>   r�   ÚFzQuadrÄ   r;   )r(   r¯  rü  rú  rû  r  r'  s          r)   rŒ   zQuad.__init__6;  s´  € ð ð 	/Ý49±G´GÐ;ˆDŒGÐ;�d”gÐ; ¤¨$¬'©'Ý�‰YŒY˜Š]ˆ]ÝÐ0Ñ1Ô1Ð1Ý�‰YŒY˜!Š^ˆ^Ý14µU¸DÑ1AÔ1AÑ.ˆDŒG�T”W˜dœg t¤w¡wÝ�‰YŒY˜!Š^‰^Ø�Q”ˆAÝ˜!�Uœ\Ñ*Ô*ð CØ�”	Ý5:¸1¼4±[´[Å%ÈÌÁ+Ä+ÍuÐUVÔUYÉ{Ì{Õ\aÐbcÔbfÑ\gÔ\gÐ5gÑ2�”˜œ $¤'¨4¬7¨7Ý˜Q Ñ.Ô.ð CÝ Ð!1Ñ2Ô2Ð2Ý�Q‘”˜1’�Ý Ð!4Ñ5Ô5Ð5å58½À±]´]Ñ2�”˜œ $¤'¨4¬7¨7åÐ-Ñ.Ô.Ð.Øˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœG˜G˜Gˆ>ˆ>r*   c                ó   — dS ©NrZ  r-   r.   s    r)   r5  zQuad.__len__Y;  rv  r*   c                óN   — t          | ¦  «        }|                     |¦  «        }|S r,   )r<  rU  )r(   r�  r›  s      r)   ry  zQuad.__mul__\;  s!   € Ý�‰JŒJˆØ�KŠK˜‰NŒNˆØˆr*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )r<  r¯  rü  rú  rû  r.   s    r)   r{  zQuad.__neg__a;  ó&   € Ý�T”W�H˜tœw˜h¨¬¨°4´7°(Ñ;Ô;Ð;r*   c                ó   — | j          S r,   ró  r.   s    r)   r}  zQuad.__nonzero__d;  rô  r*   c                ó    — t          | ¦  «        S r,   )r<  r.   s    r)   r  zQuad.__pos__g;  ó   € Ý�D‰zŒzÐr*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nr<  r�  r.   s    r)   rþ   zQuad.__repr__j;  ó   € Ø��E $™KœKÑ(Ô(Ñ(Ð(r*   c                óü   — |dk    rt          |¦  «        | _        n`|dk    rt          |¦  «        | _        nE|dk    rt          |¦  «        | _        n*|dk    rt          |¦  «        | _        nt          d¦  «        ‚d S ©Nr   r   r   r   rƒ  )rú  r¯  rü  rú  rû  r  r„  s      r)   r…  zQuad.__setitem__m;  sr   € Ø�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó^  — t          |d¦  «        r2t          | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  ¦  «        S rí  rï  rð  s     r)   r‡  zQuad.__sub__v;  rñ  r*   c                óÆ   — t          |d¦  «        rd|z  }n&t          |¦  «        d         }|st          d¦  «        ‚t          | ¦  «        }|                     |¦  «        }|S )Nry  r®  r   zMatrix not invertible)r;   rŠ  r‹  r<  rU  )r(   r�  r’  r›  s       r)   r�  zQuad.__truediv__};  si   € Ý�1�kÑ"Ô"ð 	AØ�a‘ˆBˆBå# AÑ&Ô& qÔ)ˆBØð AÝ'Ð(?Ñ@Ô@Ð@Ý�‰JŒJˆØ�KŠK˜‰OŒOˆØˆr*   c                ó  — t          | j        | j        ¦  «        }| j        |z  }| j        |z  }|j        |j        z  dk    rdS t          | j        | j        ¦  «        }| j        |z  }| j        |z  }|j        |j        z  dk    rdS dS )zêCheck if quad is convex and not degenerate.

        Notes:
            Check that for the two diagonals, the other two corners are not
            on the same side of the diagonal.
        Returns:
            True or False.
        r   FT)Úplanish_liner¯  rû  rú  rü  r5  )r(   r�  r  r  s       r)   r©  zQuad.is_convexˆ;  s‡   € õ ˜œ $¤'Ñ*Ô*ˆØŒW�q‰[ˆØŒW�q‰[ˆØŒ4�"”$‰;˜Š?ˆ?Ø�5Ý˜œ $¤'Ñ*Ô*ˆØŒW�q‰[ˆØŒW�q‰[ˆØŒ4�"”$‰;˜Š?ˆ?Ø�5Øˆtr*   c                óB   — | j         t          k     p| j        t          k     S )zsCheck whether all quad corners are on the same line.

        This is the case if width or height is zero.
        )rl  r”  rà  r.   s    r)   rd	  zQuad.is_emptyž;  s   € ð Œz�GÒ#Ð< t¤{µWÒ'<Ð<r*   c                ó   — | j         j        S )z(Check whether this is the infinite quad.)r  re	  r.   s    r)   re	  zQuad.is_infinite¦;  s   € ð ŒyÔ$Ð$r*   c                ót  — t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS dS )zïCheck if quad is rectangular.

        Notes:
            Some rotation matrix can thus transform it into a rectangle.
            This is equivalent to three corners enclose 90 degrees.
        Returns:
            True or False.
        r   FT)Úutil_sine_betweenr¯  rü  rû  rý  r”  rú  )r(   Úsines     r)   Úis_rectangularzQuad.is_rectangular«;  sœ   € õ ! ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5å  ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5å  ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5àˆtr*   c                ó¤   — | j         rt          ¦   «         S t          dd¦  «                             |j        |j        ¦  «        }| | z  |z  |z  }|S )zSMorph the quad with matrix-like 'm' and point-like 'p'.

        Return a new quad.r   )re	  ÚINFINITE_QUADr…  r£  r4  r5  )r(   r²  r�  Údeltar›  s        r)   rþ  z
Quad.morphÄ;  sT   € ð Ôð 	#Ý ‘?”?Ð"Ý�q˜!‘”×)Ò)¨!¬#¨q¬sÑ3Ô3ˆØ�E�6‰M˜AÑ Ñ%ˆØˆr*   c                ó  — t          ¦   «         }t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_	        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        |S r,   )r4  rç  r¯  r4  rü  rû  rú  r  r5  r  rø  r  r  ©r(   r.  s     r)   r  z	Quad.rectÎ;  s¤   € å‰FŒFˆÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒØˆr*   c                óì   — t          |d¦  «        rn"t          |¦  «        dk    rt          d¦  «        ‚| xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | S )z1Replace quad by its transformation with matrix m.ry  rþ  r\  )r;   r7   rÃ   r¯  rü  rú  rû  r^  s     r)   rU  zQuad.transform×;  sv   € å�1�kÑ"Ô"ð 	4ØÝ�‰VŒV�qŠ[ˆ[ÝÐ2Ñ3Ô3Ð3ØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆr*   c                óŠ   — t          t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        ¦  «        S r,   )rø  rý  r¯  rü  rú  rû  r.   s    r)   r¸	  zQuad.<lambda>ä;  ó2   € ¥3¥s¨4¬7°T´WÑ+<Ñ'=Ô'=½sÀ4Ä7ÈTÌWÑCTÑ?UÔ?UÑ#VÔ#V€ r*   c                óŠ   — t          t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        ¦  «        S r,   )rø  rý  r¯  rú  rü  rû  r.   s    r)   r¸	  zQuad.<lambda>å;  r  r*   )r/   r0   r1   rX  r_  rù   râ  rf  rp  r«  rŒ   r5  ry  r{  r}  r  rþ   r…  r‡  r�  rB  r©  rd	  re	  r  rþ  r  rU  r¥  rl  rà  r-   r*   r)   r<  r<   ;  sû  € € € € € ð?ð ?ð ?ð
Tð Tð Tð!ð !ð !ðð ð ð*
ð 
ð 
ð7ð 7ð 7ð!ð !ð !ð "&¨$°4¸Dð !0ð !0ð !0ð !0ð !0ðFð ð ðð ð ð
<ð <ð <ð!ð !ð !ðð ð ð)ð )ð )ðð ð ðTð Tð Tð	ð 	ð 	ð ðð ñ „Xðð* ð=ð =ñ „Xð=ð ð%ð %ñ „Xð%ð ðð ñ „Xðð0ð ð ð ðð ñ „Xðð
ð 
ð 
ð €GØˆXÐVÐVÑWÔW€EØˆXÐVÐVÑWÔW€F€F€Fr*   r<  c                  óà  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	d	d	d	d	d	d
œd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd.d„Zd„ Zd„ Zd„ Zd „ Zed!„ ¦   «         Z ed"„ ¦   «         Z!ed#„ ¦   «         Z"d$„ Z#d%„ Z$d&„ Z%ed'„ ¦   «         Z&d(„ Z'ed)„ ¦   «         Z(ed*„ ¦   «         Z)d+„ Z*d,„ Z+ed-„ ¦   «         Z,eZ-eZ.eZ/ ee'¦  «        Z0e(Z1e)Z2d	S )/r4  c                ó`   — | j         s| j        rdS | j        | j        z
  | j        | j        z
  z  S rë  )rd	  re	  r  r  r  r  r.   s    r)   rX  zRect.__abs__ê;  s8   € ØŒ=ð 	˜DÔ,ð 	Ø�3Ø”˜$œ'Ñ! d¤g°´Ñ&7Ñ8Ð8r*   c                ó^  — t          |d¦  «        r2t          | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   ¦  «        S ©Nry  rZ  úRect: bad seq lenr   r   r   r   ©r;   r4  r  r  r  r  r7   rÃ   r½  s     r)   r_  zRect.__add__ï;  rñ  r*   c                ó¦   — t          |d¦  «        st          d¦  «        ‚t          |¦  «        }t          | ¦  «        }|                     |¦  «        S )Nr5  úbad operand 2)r;   rÃ   r4  Ú	intersect)r(   r4  rÕ  r.  s       r)   Ú__and__zRect.__and__ö;  sH   € Ý�q˜)Ñ$Ô$ð 	.Ý˜_Ñ-Ô-Ð-å�!‰WŒWˆÝ�‰JŒJˆØ�{Š{˜2‰ŒÐr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rb  r.   s    r)   rù   zRect.__bool__þ;  rc  r*   c                ó  — t          |d¦  «        r|t          | ¦  «        v S t          |¦  «        }|dk    rt          || ¦  «        S |dk    r²t	          ¦   «         }	 t          |¦  «        }n=# t          $ r0 t          dk    rt          ¦   «          t          |¦  «        j
        }Y nw xY w| j        |j        cxk    o|j        cxk    o
| j        k    nc o*| j        |j        cxk    o|j        cxk    o
| j        k    nc S dS )Nry  r   rZ  r   F)r;   rµ   r7   Úutil_is_point_in_rectÚINFINITE_RECTr4  rg   r  rv   r<  r  r  r  r  r  )r(   r4  r'  r.  s       r)   râ  zRect.__contains__<  s*  € Ý�1�kÑ"Ô"ð 	$Ø�˜d™œÐ#Ð#Ý�‰FŒFˆØ�Š6ˆ6Ý(¨¨DÑ1Ô1Ð1Ø�Š6ˆ6Ý‘”ˆAð!Ý˜‘G”G��øÝð !ð !ð !Ý'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ý˜‘G”G”L���ð!øøøð ”G˜qœtÐ6Ð6Ò6Ð6 q¤tÐ6Ð6Ò6Ð6¨t¬wÒ6Ð6Ð6Ð6ð 7Ø”G˜qœtÐ6Ð6Ò6Ð6 q¤tÐ6Ð6Ò6Ð6¨t¬wÒ6Ð6Ð6Ð6ð8àˆus   ÁA, Á,7B&Â%B&c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr5  FrZ  re  rˆ  s     r)   rf  zRect.__eq__<  s5   € Ý�t˜YÑ'Ô'ð 	Ø�5Ý�4‰yŒy˜AŠ~Ð3 t¨d¡{Ð"3Ð3r*   c                óB   — | j         | j        | j        | j        f|         S r,   ©r  r  r  r  rõ  s     r)   rp  zRect.__getitem__<  rý  r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rÄ  r.   s    r)   r«  zRect.__hash__<  rÅ  r*   N©rŠ  r  r  r  r  r  c          
     óÒ   — t          |||||||dœŽ\  }}}}t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        dS )aa  
        Rect() - all zeros
        Rect(x0, y0, x1, y1)
        Rect(top-left, x1, y1)
        Rect(x0, y0, bottom-right)
        Rect(top-left, bottom-right)
        Rect(Rect or IRect) - new copy
        Rect(sequence) - from 'sequence'
    
        Explicit keyword args p0, p1, x0, y0, x1, y1 override earlier settings
        if not None.
        r2  N)Úutil_make_rectr~  r  r  r  r  ©r(   rŠ  r  r  r  r  r  r  s           r)   rŒ   zRect.__init__<  sa   € õ (¨$°2¸"ÀÈÈrÐVXÐYÐYÐY‰ˆˆB��BÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒˆˆr*   c                ó   — dS r  r-   r.   s    r)   r5  zRect.__len__0<  rv  r*   c                óÒ   — t          |d¦  «        r2t          | j        |z  | j        |z  | j        |z  | j        |z  ¦  «        S t          | ¦  «        }|                     |¦  «        }|S )Nry  )r;   r4  r  r  r  r  rU  )r(   r�  r.  s      r)   ry  zRect.__mul__3<  s`   € Ý�1�kÑ"Ô"ð 	LÝ˜œ !™ T¤W¨q¡[°$´'¸A±+¸t¼wÈ¹{ÑKÔKÐKÝ�‰JŒJˆØ�KŠK˜‰NŒNˆØˆr*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )r4  r  r  r  r  r.   s    r)   r{  zRect.__neg__:<  r  r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rb  r.   s    r)   r}  zRect.__nonzero__=<  rc  r*   c                ó  — t          |d¦  «        st          d¦  «        ‚t          | ¦  «        }t          |¦  «        dk    r|                     |¦  «        S t          |¦  «        dk    r|                     |¦  «        S t          d¦  «        ‚)Nr5  r'  r   rZ  )r;   rÃ   r4  r7   Úinclude_pointÚinclude_rect)r(   r4  r.  s      r)   Ú__or__zRect.__or__@<  s}   € Ý�q˜)Ñ$Ô$ð 	.Ý˜_Ñ-Ô-Ð-Ý�‰JŒJˆÝˆq‰6Œ6�QŠ;ˆ;Ø—?’? 1Ñ%Ô%Ð%Ýˆq‰6Œ6�QŠ;ˆ;Ø—>’> !Ñ$Ô$Ð$Ý˜Ñ)Ô)Ð)r*   c                ó    — t          | ¦  «        S r,   r�  r.   s    r)   r  zRect.__pos__J<  r  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nr4  r�  r.   s    r)   rþ   zRect.__repr__M<  r
  r*   c                ó²   — t          |¦  «        }|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S r  )r~  r  r  r  r  r  r„  s      r)   r…  zRect.__setitem__P<  se   € Ý�!‰HŒHˆØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó^  — t          |d¦  «        r2t          | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  ¦  «        S r#  r%  r½  s     r)   r‡  zRect.__sub__Z<  rñ  r*   c                ó<  — t          |d¦  «        r>t          | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  ¦  «        S t          |¦  «        d         }|st          d|› �¦  «        ‚t          | ¦  «        }|                     |¦  «        }|S )Nry  r®  r   zMatrix not invertible: )	r;   r4  r  r  r  r  rŠ  r‹  rU  )r(   r�  r’  r.  s       r)   r�  zRect.__truediv__a<  s¤   € Ý�1�kÑ"Ô"ð 	XÝ˜œ "™ Q™¨¬°"©°Q©¸¼À"¹ÀQ¹ÈÌÐRTÉÐUVÉÑWÔWÐWÝ Ñ"Ô" 1Ô%ˆØð 	CÝ#Ð$A¸aÐ$AÐ$AÑBÔBÐBÝ�‰JŒJˆØ�KŠK˜‰OŒOˆØˆr*   c                ó6   — t          | j        | j        ¦  «        S ©zBottom-left corner.©rú  r  r  r.   s    r)   rã  zRect.bottom_leftk<  ó   € õ �T”W˜dœgÑ&Ô&Ð&r*   c                ó6   — t          | j        | j        ¦  «        S ©zBottom-right corner.©rú  r  r  r.   s    r)   rà  zRect.bottom_rightp<  rF  r*   c                ó,   — |                       |¦  «        S )z.Check if containing point-like or rect-like x.©râ  r­  s     r)   ÚcontainszRect.containsu<  ó   € à× Ò  Ñ#Ô#Ð#r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   ©rø  r  r  r.   s    r)   rà  zRect.heighty<  ó   € å�1�d”g ¤Ñ'Ñ(Ô(Ð(r*   rÚ  r~  c                ó8   — t          | j        | j        |¦  «        S ©zUCalculate area of rectangle.
parameter is one of 'px' (default), 'in', 'cm', or 'mm'.©Ú
_rect_arearl  rà  rI  s     r)   Úget_areazRect.get_area}<  ó   € å˜$œ* d¤k°4Ñ8Ô8Ð8r*   c                óœ   — t          |¦  «        dk    rt          d¦  «        ‚t          | |¦  «        \  | _        | _        | _        | _        | S )zExtend to include point-like p.r   r»  )r7   rÃ   Úutil_include_point_in_rectr  r  r  r  r½  s     r)   r;  zRect.include_point�<  sE   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ý-GÈÈaÑ-PÔ-PÑ*ˆŒ�”˜$œ' 4¤7Øˆr*   c                óÆ  — t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        }|j        s| j        r4t          t          t
          t
          f\  | _        | _        | _        | _	        nm|j
        r| S | j
        r4|j        |j        |j        |j	        f\  | _        | _        | _        | _	        n)t          | |¦  «        \  | _        | _        | _        | _	        | S )zExtend to include rect-like r.rZ  r$  )r7   rÃ   r4  re	  rÙ  rÚ  r  r  r  r  rd	  Úutil_union_rectr  s     r)   r<  zRect.include_rectˆ<  sÍ   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ0Ñ1Ô1Ð1Ý�‰GŒGˆØŒ=ð 	J˜DÔ,ð 	JÝ1@Å/ÕSbÕdsÐ1sÑ.ˆDŒG�T”W˜dœg t¤w wØŒZð 	JØˆKØŒ]ð 	JØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wå1@ÀÀqÑ1IÔ1IÑ.ˆDŒG�T”W˜dœg t¤wØˆr*   c                óÊ  — t          |¦  «        dk    st          d¦  «        ‚t          |¦  «        }|j        r| S | j        r4|j        |j        |j        |j        f\  | _        | _        | _        | _        nm|j        r4|j        |j        |j        |j        f\  | _        | _        | _        | _        n2| j        r| S t          | |¦  «        \  | _        | _        | _        | _        | S )z)Restrict to common rect with rect-like r.rZ  r$  )
r7   rÃ   r4  re	  r  r  r  r  rd	  Úutil_intersect_rectr  s     r)   r(  zRect.intersect—<  sÙ   € å�1‰vŒv˜Š{ˆ{ÝÐ0Ñ1Ô1Ð1Ý�‰GŒGˆØŒ=ð 		NØˆKØÔð 	NØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wØŒZð 	NØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wØŒ]ð 	NØˆKå1DÀTÈ1Ñ1MÔ1MÑ.ˆDŒG�T”W˜dœg t¤wØˆr*   c                óâ   — t          |¦  «        }	 | j         oW| j         oO|j         oG|j         o?| j        |j        k     o/|j        | j        k     o| j        |j        k     o|j        | j        k     S )z4Check if intersection with rectangle x is not empty.)r4  rd	  re	  r  r  r  r  )r(   r4  Úrect2s      r)   Ú
intersectszRect.intersects¨<  s˜   € å�Q‘”ˆð'ØœÐ%ð'àÔ(Ð(ð'ð œÐ&ð'ð Ô)Ð)ð	'ð
 ”G˜eœhÒ&ð'ð ”H˜tœwÒ&ð'ð ”G˜eœhÒ&ð'ð ”H˜tœwÒ&ð		r*   c                óB   — | j         | j        k    p| j        | j        k    S ©z True if rectangle area is empty.rã  r.   s    r)   rd	  zRect.is_empty¶<  ó!   € ð Œw˜$œ'Ò!Ð7 T¤W°´Ò%7Ð7r*   c                ó~   — | j         | j        cxk    o
t          k    nc o| j        | j        cxk    o
t
          k    nc S )z'True if this is the infinite rectangle.©r  r  rÙ  r  r  rÚ  r.   s    r)   re	  zRect.is_infinite»<  óO   € ð Œw˜$œ'Ð4Ð4Ò4Ð4¥_Ò4Ð4Ð4Ð4Ð^¸¼ÀDÄGÐ9^Ð9^Ò9^Ð9^ÍÒ9^Ð9^Ð9^Ð9^Ð^r*   c                óB   — | j         | j        k    o| j        | j        k    S ©zTrue if rectangle is valid.rã  r.   s    r)   Úis_validzRect.is_validÀ<  ó!   € ð Œw˜$œ'Ò!Ð8 d¤g°´Ò&8Ð8r*   c                ób   — | j         rt          ¦   «         S | j                             ||¦  «        S ©zGMorph with matrix-like m and point-like p.

        Returns a new quad.©re	  r  r  rþ  ©r(   r²  r�  s      r)   rþ  z
Rect.morphÅ<  ó/   € ð Ôð 	#Ý ‘?”?Ð"ØŒy�Š˜q !Ñ$Ô$Ð$r*   c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   rR  s     r)   r¯   zRect.norm.<locals>.<listcomp>Î<  rS  r*   rT  r.   s    r)   r¦  z	Rect.normÍ<  rY  r*   c                óª   — | j         | j        k     r| j         | j        c| _        | _         | j        | j        k     r| j        | j        c| _        | _        | S )z*Replace rectangle with its finite version.rÔ  r.   s    r)   ru  zRect.normalizeÐ<  óM   € àŒ7�T”WÒÐØ#œw¨¬ÐˆDŒG�T”WØŒ7�T”WÒÐØ#œw¨¬ÐˆDŒG�T”WØˆr*   c                óN   — t          | j        | j        | j        | j        ¦  «        S ©z!Return Quad version of rectangle.©r<  rû  ÚtrrÎ  rü  r.   s    r)   r  z	Rect.quadØ<  ó    € õ �D”G˜TœW d¤g¨t¬wÑ7Ô7Ð7r*   c                ó:   — t          t          | ¦  «        ¦  «        S )zReturn the IRect.)rÄ  Úutil_round_rectr.   s    r)   rk  z
Rect.roundÝ<  s   € å•_ TÑ*Ô*Ñ+Ô+Ð+r*   c                ó6   — t          | j        | j        ¦  «        S ©zTop-left corner.©rú  r  r  r.   s    r)   rß  zRect.top_leftá<  rF  r*   c                ó6   — t          | j        | j        ¦  «        S ©zTop-right corner.©rú  r  r  r.   s    r)   râ  zRect.top_rightæ<  rF  r*   c           	     óJ  — t          |¦  «        }| j        s| j        s|j        s|j        rt          d¦  «        ‚t	          dddd| j         | j         ¦  «        t	          |j        | j        z  |j        | j        z  ¦  «        z  t	          dddd|j        |j        ¦  «        z  S ©z+Return matrix that converts to target rect.z'rectangles must be finite and not emptyr   r   ©	r4  re	  rd	  rÃ   r…  r  r  rl  rà  r  s     r)   r¿  zRect.torectë<  s­   € õ �‰GŒGˆØÔð 	H˜tœ}ð 	H°´ð 	HÀÄð 	HÝÐFÑGÔGÐGå�1�a˜˜A ¤˜x¨$¬'¨Ñ2Ô2Ý�Q”W˜tœzÑ)¨1¬8°d´kÑ+AÑBÔBñCå�Q˜˜1˜a ¤ q¤tÑ,Ô,ñ-ð	
r*   c                óœ   — t          |¦  «        dk    st          d¦  «        ‚t          | |¦  «        \  | _        | _        | _        | _        | S )z1Replace with the transformation by matrix-like m.rþ  r\  )r7   rÃ   Úutil_transform_rectr  r  r  r  r^  s     r)   rU  zRect.transform÷<  sE   € å�1‰vŒv˜Š{ˆ{ÝÐ2Ñ3Ô3Ð3Ý-@ÀÀqÑ-IÔ-IÑ*ˆŒ�”˜$œ' 4¤7Øˆr*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   ©rø  r  r  r.   s    r)   rl  z
Rect.widthþ<  rP  r*   ©rÚ  r~  )3r/   r0   r1   rX  r_  r)  rù   râ  rf  rp  r«  rŒ   r5  ry  r{  r}  r=  r  rþ   r…  r‡  r�  rB  rã  rà  rL  rà  rU  r;  r<  r(  r_  rd	  re	  rh  rþ  r¦  ru  r  rk  rß  râ  r¿  rU  rl  r¥  rÎ  rü  ró  rû  rv  r-   r*   r)   r4  r4  è;  s<  € € € € € ð9ð 9ð 9ð
Tð Tð Tðð ð ð1ð 1ð 1ðð ð ð"4ð 4ð 4ð
7ð 7ð 7ð!ð !ð !ð "&¨$°4¸DÀTÈdð ð ð ð ð ð&ð ð ðð ð ð<ð <ð <ð1ð 1ð 1ð*ð *ð *ðð ð ð)ð )ð )ðð ð ðTð Tð Tðð ð ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð$ð $ð $ð ð)ð )ñ „Xð)ð9ð 9ð 9ð 9ðð ð ðð ð ðð ð ð"ð ð ð ð8ð 8ñ „Xð8ð ð_ð _ñ „Xð_ð ð9ð 9ñ „Xð9ð%ð %ð %ð3ð 3ð 3ðð ð ð ð8ð 8ñ „Xð8ð,ð ,ð ,ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð

ð 

ð 

ðð ð ð ð)ð )ñ „Xð)ð €Gà	€BØ	€BØˆH�U‰OŒO€EØ	€BØ	€B€B€Br*   r4  c                  ó(  — e Zd ZdZed„ ¦   «         Zd[d„Zd„ Zd\d„Zd]d„Z	d^d„Z
d_d„Zd`d„Zdad„Z	 dbdcd „Zd!d"œddd%„Zded(„Z	 dfdgd+„Z	 dfd\d,„Zd-d!d.d!d/d/d!d!d/d0d1d/d!d1d1d/d2œdhdJ„Zd/d0d!d/d1d1d!d!d.d-d!d1d!d/d/d/d/d1dKœdidN„Z	 	 	 	 	 	 	 	 	 	 	 	 djdkdX„ZdbdldZ„Zd!S )mru  zCreate a new shape.c                ó  — t          || z
  ¦  «        j        }t          j        t	          |j        ¦  «        ¦  «        }|j        dk     r,|j        dk    rt          j        |z
   }nt          j        |z
  }n|j        dk    rn| }|S )zÞReturn the angle to the horizontal for the connection from C to P.
        This uses the arcus sine function and resolves its inherent ambiguity by
        looking up in which quadrant vector S = P - C is located.
        r   )rú  rä  rU  Úasinrý  r5  r4  Úpi)rö  rÌ  rk	  Úalfas       r)   Úhorizontal_anglezShape.horizontal_angle=  sz   € õ �!�a‘%‰LŒLÔˆÝŒy�˜QœS™œÑ"Ô"ˆØŒ3�Š7ˆ7ØŒs�aŠxˆxÝœ 4™Ð(��å”w ‘~��àŒs�aŠxˆxØà�u�Øˆr*   rÖ   rÒ   c                ó€  — t          |¦  «         || _        |j        | _        | j        j        st          d¦  «        ‚|j        j        | _        |j        j	        | _
        |j        j	        | _	        |j        j        | _        |j        | _        | j         | _        d| _        d| _        d| _        d | _        d | _        d S )Nrå  r\   )rv  rÖ   rû   r:  rç  rÃ   rs  r5  rà  r4  rl  r   r{  ÚpctmÚipctmrc  Ú	text_contÚ	totalcontrb  r  rº  s     r)   rŒ   zShape.__init__"=  sª   € Ý�DÑÔÐØˆŒ	Ø”;ˆŒØŒxŒð 	*Ý˜[Ñ)Ô)Ð)ØÔ(Ô*ˆŒØÔ'Ô)ˆŒ
ØÔ&Ô(ˆŒØÔ&Ô(ˆŒàÔ.ˆŒ	Ø”i�ZˆŒ
àˆŒØˆŒØˆŒØˆŒØˆŒ	ˆ	ˆ	r*   c                óŠ  — | j         €@t          |¦  «        dk    rt          ||¦  «        | _         d S t          |¦  «        | _         d S t          |¦  «        dk    rµt          |¦  «        }t	          | j         j        |j        ¦  «        | j         _        t	          | j         j        |j        ¦  «        | j         _        t          | j         j
        |j        ¦  «        | j         _
        t          | j         j        |j        ¦  «        | j         _        d S t          |¦  «        }t	          | j         j        |j        ¦  «        | j         _        t	          | j         j        |j        ¦  «        | j         _        t          | j         j
        |j
        ¦  «        | j         _
        t          | j         j        |j        ¦  «        | j         _        d S rÉ  )r  r7   r4  rú  rç  r  r4  r  r5  rø  r  r  r­  s     r)   Ú
updateRectzShape.updateRect6=  s4  € ØŒ9ÐÝ�1‰vŒv˜Š{ˆ{Ý   A™JœJ�”	�	�	å  ™GœG�”	�	�	õ �1‰vŒv˜Š{ˆ{Ý˜!‘H”H�Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”��å˜‘G”G�Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”��r*   r  rº   r  rÚ  rú  c                ó¦  — t          |¦  «        }t          |¦  «        }| j        |k    sQ| xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        || _        |                      |¦  «         | xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        |                      |¦  «         || _        | j        S )zDraw a line between two points.ú m
ú l
)rú  rb  rc  r¶   ÚJM_TUPLEr�  r”  )r(   r  r  s      r)   r4  zShape.draw_lineK=  sµ   € å�2‰YŒYˆÝ�2‰YŒYˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNØ ˆDŒOØ�OŠO˜BÑÔÐàˆŒ�)¥H¨R°$´*©_Ñ$=Ô$=Ñ>Ô>ÀÑGÑGˆŒØ�Š˜ÑÔÐØˆŒØŒÐr*   r  r´   c           
     ó  — t          |¦  «        D ]Ñ\  }}|dk    ro| j        t          |¦  «        k    sV| xj        t	          t          t          |¦  «        | j        z  ¦  «        ¦  «        dz   z  c_        t          |¦  «        | _        nB| xj        t	          t          t          |¦  «        | j        z  ¦  «        ¦  «        dz   z  c_        |                      |¦  «         ŒÒt          |d         ¦  «        | _        | j        S )z%Draw several connected line segments.r   r–  r—  rA  )rþ  rb  rú  rc  r¶   r˜  r�  r”  )r(   r  r®   r²  s       r)   r9  zShape.draw_polylineY=  sÜ   € å˜fÑ%Ô%ð 	ð 	‰DˆAˆqØ�AŠvˆvØœ­5°©8¬8Ò3Ð3Ø�N”N¥iµ½¸q¹¼ÀDÄJÑ9NÑ0OÔ0OÑ&PÔ&PÐSYÑ&YÑY�N”NÝ&+¨A¡h¤h�D”Oøà�”¥)­HµU¸1±X´XÀÄ
Ñ5JÑ,KÔ,KÑ"LÔ"LÈvÑ"UÑU�”Ø�OŠO˜AÑÔÐÐå  r¤
Ñ+Ô+ˆŒØŒÐr*   r!  r"  c                ó¦  — t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }| j        |k    s5| xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        t	          t          || j        z  ¦  «        t          || j        z  ¦  «        z   t          || j        z  ¦  «        z   ¦  «        }| xj        t          |¦  «        dz   z  c_        |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         || _        | j        S )z#Draw a standard cubic Bezier curve.r–  ú c
)rú  rb  rc  r¶   r˜  r�  r´   r”  )r(   r  r  r!  r"  r  s         r)   r*  zShape.draw_bezierg=  s  € õ �2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNÝ�˜R $¤*™_Ñ-Ô-µ°R¸$¼*±_Ñ0EÔ0EÑEÍÈRÐRVÔR\É_ÑH]ÔH]Ñ]Ñ^Ô^ˆØˆŒ�) D™/œ/¨FÑ2Ñ2ˆŒØ�Š˜ÑÔÐØ�Š˜ÑÔÐØ�Š˜ÑÔÐØ�Š˜ÑÔÐØˆŒØŒÐr*   Útetraú"typing.Union[quad_like, rect_like]c                óH  — t          |¦  «        dk    rt          d¦  «        ‚t          |d         d¦  «        rt          |¦  «        j        }nt          |¦  «        }|j        |j        |j        z
  dz  z   }|j        |j        |j        z
  dz  z   }|j	        |j        |j	        z
  dz  z   }|j        |j	        |j        z
  dz  z   }| j
        |k    s<| xj        t          t          || j        z  ¦  «        ¦  «        dz   z  c_        || _
        |                      ||j	        |¦  «         |                      ||j        |¦  «         |                      ||j        |¦  «         |                      ||j        |¦  «         |                      |j        ¦  «         || _
        | j
        S )z"Draw an ellipse inside a tetrapod.rZ  zinvalid arg lengthr   ry  rÊ  r–  )r7   rÃ   r;   r4  r  r<  r¯  rü  rû  rú  rb  rc  r¶   r˜  r�  r1  r”  r  )r(   rœ  r›  ÚmtÚmrrp  Úmls          r)   r7  zShape.draw_oval~=  sw  € åˆu‰:Œ:˜Š?ˆ?ÝÐ1Ñ2Ô2Ð2Ý�5˜”8˜[Ñ)Ô)ð 	Ý�U‘”Ô ˆAˆAå�U‘”ˆAàŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNØ ˆDŒOØ�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜œÑÔÐØˆŒØŒÐr*   rH  r+  r~  c                ó”   — |t           k    st          d¦  «        ‚t          |¦  «        }||dfz
  }|                      ||dd¬¦  «        S )r-  úradius must be positiver   rÃ  FrB  )r”  rÃ   rú  rC  )r(   rH  r+  r  s       r)   r/  zShape.draw_circle–=  sR   € à�ÒÐÝÐ6Ñ7Ô7Ð7Ý�v‘”ˆØ�v˜q�kÑ!ˆØ×Ò ¨¨C¸EÐÑBÔBÐBr*   c                ó¼   — d}t          |¦  «        }t          |¦  «        }t          |¦  «        }|||z
  |z  z   }|||z
  |z  z   }|                      ||||¦  «        S )z4Draw a curve between points using one control point.ç7.SQ¬á?)rú  r*  )r(   r  r  r!  ÚkappaÚk1Úk2s          r)   r1  zShape.draw_curvež=  sj   € ð ˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ�2˜‘7˜eÑ#Ñ#ˆØ�2˜‘7˜eÑ#Ñ#ˆØ×Ò  B¨¨BÑ/Ô/Ð/r*   Tr9  r?  r@  rø   c                ó*  — t          |¦  «        }t          |¦  «        }d„ }d„ }d„ }t          j        | ¦  «        }t          j        t          j        d|¦  «        ¦  «        dz  }	t          j        t          j        d|¦  «        ¦  «        }
|
dz  }t	          |¦  «        dt          j        z  k    r%||	z  }t	          |¦  «        dt          j        z  k    °%| j        |k    s/| xj         |t          || j	        z  ¦  «        Ž z  c_        || _        t          dd¦  «        }|}|}||z
  }t	          |¦  «        }|t          k    st          d	¦  «        ‚|                      ||¦  «        }t	          |¦  «        t	          |
¦  «        k    �r¿|j        t          j        ||
z   ¦  «        |z  z   }|j        t          j        ||
z   ¦  «        |z  z   }t          ||¦  «        }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }t          ||¦  «        }d
t          j        |¦  «        z
  dz  dz  t	          ||z
  ¦  «        z  }|t	          ||z
  ¦  «        z  }|||z
  |z  z   }|||z
  |z  z   }| xj         |t          t#          || j	        z  ¦  «        t#          || j	        z  ¦  «        z   t#          || j	        z  ¦  «        z   ¦  «        Ž z  c_        ||
z  }||
z  }|}t	          |¦  «        t	          |
¦  «        k    �°¿t	          |¦  «        dk    �r¯|dz  }|j        t          j        ||z   ¦  «        |z  z   }|j        t          j        ||z   ¦  «        |z  z   }t          ||¦  «        }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }t          ||¦  «        }d
t          j        |¦  «        z
  dz  dz  t	          ||z
  ¦  «        z  }|t	          ||z
  ¦  «        z  d
t          j        |¦  «        z
  z  }|||z
  |z  z   }|||z
  |z  z   }| xj         |t          t#          || j	        z  ¦  «        t#          || j	        z  ¦  «        z   t#          || j	        z  ¦  «        z   ¦  «        Ž z  c_        |rx| xj         |t          || j	        z  ¦  «        Ž z  c_        | xj         |t          || j	        z  ¦  «        Ž z  c_        | xj         |t          || j	        z  ¦  «        Ž z  c_        || _        | j        S )zDraw a circle sector.c                ó*   — t          | |f¦  «        dz   S )Nr–  ©r¶   ©r!   rÜ
  s     r)   r¸	  z#Shape.draw_sector.<locals>.<lambda>·=  ó   € �) Q¨ FÑ+Ô+¨fÑ4€ r*   c                ó2   — t          | |||||f¦  «        dz   S )Nr›  r«  rh  s         r)   r¸	  z#Shape.draw_sector.<locals>.<lambda>¸=  s    € ¥i°°A°q¸!¸QÀÐ0BÑ&CÔ&CÀfÑ&L€ r*   c                ó*   — t          | |f¦  «        dz   S )Nr—  r«  r¬  s     r)   r¸	  z#Shape.draw_sector.<locals>.<lambda>¹=  r­  r*   rÃ  rA  rÄ  r   r   r£  r   rZ  r   çü©ñÒMbP?)rú  rU  rj  Úcopysignrý  r‹  rb  rc  r˜  r�  r”  rÃ   r�  r4  rl  r5  rm  r´   )r(   rH  r9  r?  r@  Úl3Úl4Úl5ÚbetarÚw360Úw90Úw45rë   rö  rÌ  rk	  r—  rŒ  Úq1Úq2rÕ  rÖ  rô  Úkappahr¦  Úcp1Úcp2Úbeta2s                               r)   rC  zShape.draw_sector­=  s5  € õ �v‘”ˆÝ�e‘”ˆØ4Ð4ˆØLÐLˆØ4Ð4ˆÝ”˜d˜UÑ#Ô#ˆÝŒ|�DœM¨#¨uÑ5Ô5Ñ6Ô6¸"Ñ=ˆÝŒl�4œ=¨¨UÑ3Ô3Ñ4Ô4ˆØ�A‰gˆÝ�%‰jŒj˜1�tœw™;Ò&Ð&Ø�T‰MˆEõ �%‰jŒj˜1�tœw™;Ò&Ð&à” 5Ò(Ð(ØˆNŒN˜b˜b¥(¨5°4´:Ñ+=Ñ">Ô">Ð?Ñ?ˆNŒNØ#ˆDŒOÝ�!�Q‰KŒKˆØˆØˆØ�‰EˆÝ�!‰fŒfˆà•WŠ}ˆ}ÝÐ6Ñ7Ô7Ð7à×$Ò$ V¨UÑ3Ô3ˆÝ�%‰jŒj�3˜s™8œ8Ò#Ñ#Ø”•t”x  s¡
Ñ+Ô+¨cÑ1Ñ1ˆBØ”•t”x  s¡
Ñ+Ô+¨cÑ1Ñ1ˆBÝ�b˜"‘”ˆAØ”•t”x  s¡
Ñ+Ô+¨cÑ1µD´H¸S±M´MÑAÑAˆBØ”•t”x  s¡
Ñ+Ô+¨cÑ1µD´H¸S±M´MÑAÑAˆBÝ�b˜"‘”ˆAØ�$œ( 3™-œ-Ñ'¨1Ñ,¨qÑ0µ3°q¸1±u±:´:Ñ=ˆFØ�S  Q¡™ZœZÑ'ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØˆNŒN˜b˜b¥(Ý�S˜4œ:Ñ%Ñ&Ô&­¨c°D´JÑ.>Ñ)?Ô)?Ñ?Å$ÀqÈ4Ì:Á~ÑBVÔBVÑVñ#ô #ð ñ ˆNŒNð �S‰LˆEØ�C‰KˆDØˆAõ# �%‰jŒj�3˜s™8œ8Ò#Ñ#õ& ˆu‰:Œ:˜ÒÑØ˜A‘IˆEØ”•t”x  u¡Ñ-Ô-°Ñ3Ñ3ˆBØ”•t”x  u¡Ñ-Ô-°Ñ3Ñ3ˆBÝ�b˜"‘”ˆAØ”•t”x  u¡Ñ-Ô-°Ñ3µd´h¸u±o´oÑEÑEˆBØ”•t”x  u¡Ñ-Ô-°Ñ3µd´h¸u±o´oÑEÑEˆBÝ�b˜"‘”ˆAà�$œ( 5™/œ/Ñ)¨QÑ.°Ñ2µS¸¸Q¹±Z´ZÑ?ˆFØ�S  Q¡™ZœZÑ'¨1­t¬x¸©¬Ñ+>Ñ?ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØˆNŒN˜b˜b¥(Ý�S˜4œ:Ñ%Ñ&Ô&­¨c°D´JÑ.>Ñ)?Ô)?Ñ?Å$ÀqÈ4Ì:Á~ÑBVÔBVÑVñ#ô #ð ñ ˆNŒNð ð 	<ØˆNŒN˜b˜b¥(¨5°4´:Ñ+=Ñ">Ô">Ð?Ñ?ˆNŒNØˆNŒN˜b˜b¥(¨6°D´JÑ+>Ñ"?Ô"?Ð@Ñ@ˆNŒNØˆNŒN˜b˜b¥(¨1¨t¬z©>Ñ":Ô":Ð;Ñ;ˆNŒNØˆŒØŒÐr*   Nr>  r  r¼   c          
     óJ  — t          |¦  «        }|€~| xj        t          t          t	          |j        | j        z  ¦  «        |j        |j        gz   ¦  «        ¦  «        dz   z  c_        |  	                    |¦  «         |j
        | _        | j        S t          |d¦  «        rE|dk    s|dk    rt          d|› d�¦  «        ‚t          |j        |j        ¦  «        |z  }|df}d|f}n�t          |d¦  «        rlt          |¦  «        d	k    rY|\  }}||j        z  df}d||j        z  f}t          ||¦  «        dk    st!          ||¦  «        dk    rt          d|› d�¦  «        ‚nt          d|› d�¦  «        ‚|                      |j
        |z   |j        |z
  ¦  «        }	|                      |	|j        |j        |z   ¦  «        }	|                      |	|j        |z
  ¦  «        }	|                      |	|j        |j        |z
  ¦  «        }	|                      |	|j        |z   ¦  «        }	|                      |	|j        |j        |z
  ¦  «        }	|                      |	|j
        |z   ¦  «        }	|                      |	|j
        |j
        |z   ¦  «        | _        |  	                    |¦  «         | j        S )
að  Draw a rectangle.

        Args:
            radius: if not None, the rectangle will have rounded corners.
                This is the radius of the curvature, given as percentage of
                the rectangle width or height. Valid are values 0 < v <= 0.5.
                For a sequence of two values, the corners will have different
                radii. Otherwise, the percentage will be computed from the
                shorter side. A value of (0.5, 0.5) will draw an ellipse.
        Nz re
ry  r   rÊ  zbad radius value r   r5  r   )r4  rc  r¶   r˜  r´   rÎ  r�  rl  rà  r”  rû  rb  r;   rÃ   rç  r7   rø  r4  r1  rü  rv  )
r(   r  r+  r.  r  re  ÚpyÚrxÚryr‹  s
             r)   rÕ  zShape.draw_rect÷=  s›  € õ �‰JŒJˆØˆ>ØˆNŒN�i­Ý�Q”T˜DœJÑ&Ñ'Ô'¨1¬7°A´HÐ*=Ñ=ñ)ô )ñ ô àññ ˆNŒNð �OŠO˜AÑÔÐØœdˆDŒOØ”?Ð"õ �6˜;Ñ'Ô'ð 	<Ø˜Š{ˆ{˜f sšl˜lÝ Ð!>°VÐ!>Ð!>Ð!>Ñ?Ô?Ð?Ý�A”G˜QœXÑ&Ô&¨Ñ/ˆAØ�Q�ˆBØ�Q�ˆBˆBÝ�V˜YÑ'Ô'ð 	<­C°©K¬K¸1Ò,<Ð,<Ø‰FˆB�Ø�q”w‘, Ð"ˆBØ�R˜!œ(‘]Ð#ˆBÝ�2�r‰{Œ{˜aÒÐ¥3 r¨2¡;¤;°Ò#4Ð#4Ý Ð!>°VÐ!>Ð!>Ð!>Ñ?Ô?Ð?ð $5õ Ð:°Ð:Ð:Ð:Ñ;Ô;Ð;à�^Š^˜AœD 2™I q¤t¨b¡yÑ1Ô1ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØŸ/š/¨"¨a¬d°A´D¸2±IÑ>Ô>ˆŒà�Š˜ÑÔÐØŒÐr*   r  r»   c                ó†   — t          |¦  «        }|                      |j        |j        |j        |j        |j        g¦  «        S )zDraw a Quad.)r<  r9  r¯  rú  rû  rü  )r(   r  r›  s      r)   r;  zShape.draw_quad*>  s6   € å�‰JŒJˆØ×!Ò! 1¤4¨¬¨q¬t°Q´T¸1¼4Ð"@ÑAÔAÐAr*   r   rD  c                ó4  — t          |¦  «        }t          |¦  «        }||z
  }t          |¦  «        }dt          t          |d|z  z  d¦  «        ¦  «        z  }|dk     rt	          d¦  «        ‚||z  }t          t          ||¦  «        ¦  «        }| }	g }
t          d|¦  «        D ]U}|dz  dk    rt          |d¦  «        |z  }n|dz  dk    rt          |d¦  «        |z  }nŒ=|
                     ||	z  ¦  «         ŒV|  	                    |g|
z   |gz   ¦  «         |S )z%Draw a zig-zagged line from p1 to p2.rZ  r   úpoints too closer   rA  r   )
rú  rý  r4   rk  rÃ   r…  rù  r\  rk   r9  )r(   r  r  rD  rk	  r—  r$  rp  ré  Úi_matr  r®   r²  s                r)   rJ  zShape.draw_zigzag/>  s2  € õ �2‰YŒYˆÝ�2‰YŒYˆØ�‰GˆÝ�!‰fŒfˆØ•#•e˜C 1 w¡;Ñ/°Ñ3Ô3Ñ4Ô4Ñ4ˆØ�Š7ˆ7ÝÐ/Ñ0Ô0Ð0Ø�3‰YˆÝ�¨¨BÑ/Ô/Ñ0Ô0ˆØ�ˆØˆÝ�q˜#‘”ð 	%ð 	%ˆAØ�1‰u˜ŠzˆzÝ˜!˜R‘L”L 2Ñ%��Ø�Q‘˜!’�Ý˜!˜Q‘K”K "Ñ$��àØ�MŠM˜!˜e™)Ñ$Ô$Ð$Ð$Ø×Ò˜B˜4 &™=¨B¨4Ñ/Ñ0Ô0Ð0Øˆ	r*   c                óæ  — t          |¦  «        }t          |¦  «        }||z
  }t          |¦  «        }dt          t          |d|z  z  d¦  «        ¦  «        z  }|dk     rt	          d¦  «        ‚||z  }t          t          ||¦  «        ¦  «        }| }	d}
g }t          d|¦  «        D ]h}|dz  dk    rt          ||
 ¦  «        |z  }n0|dz  dk    rt          ||
¦  «        |z  }nt          |d¦  «        |z  }|                     ||	z  ¦  «         Œi|g|z   |gz   }t          |¦  «        }d}|dz   |k     r=|  
                    ||         ||dz            ||dz            ¦  «         |dz  }|dz   |k     °=|S )z#Draw a squiggly line from p1 to p2.rZ  r   rÅ  gh¼?3OP@r   r   r   )rú  rý  r4   rk  rÃ   r…  rù  r\  rk   r7   r1  )r(   r  r  rD  rk	  r—  r$  rp  ré  rÆ  rª  r  r®   r²  s                 r)   rG  zShape.draw_squiggleL>  sš  € õ �2‰YŒYˆÝ�2‰YŒYˆØ�‰GˆÝ�!‰fŒfˆØ•#•e˜C 1 w¡;Ñ/°Ñ3Ô3Ñ4Ô4Ñ4ˆØ�Š7ˆ7ÝÐ/Ñ0Ô0Ð0Ø�3‰YˆÝ�¨¨BÑ/Ô/Ñ0Ô0ˆØ�ˆØˆàˆÝ�q˜#‘”ð 	%ð 	%ˆAØ�1‰u˜ŠzˆzÝ˜!˜a˜R‘L”L 2Ñ%��Ø�Q‘˜!’�Ý˜!˜Q‘K”K "Ñ$��å˜!˜Q‘K”K "Ñ$�Ø�MŠM˜!˜e™)Ñ$Ô$Ð$Ð$à�˜‘ " Ñ%ˆÝ�&‰kŒkˆØˆØ�!‰e�cŠkˆkØ�OŠO˜F 1œI v¨a°!©e¤}°f¸QÀ¹U´mÑDÔDÐDØ�‰FˆAð �!‰e�cŠkˆkð ˆ	r*   r  rÞ  r   rY  r   )r
  rv  r	  r]  rP  rû  r  r  r[  rá  rZ  ri  rþ  r&  r'  rÕ  rñ  r\  r
  rv  rÎ  r	  rá  r]  rÍ  rP  rû  r4   r  rÏ  r  r[  rá  rZ  ri  rþ  r&  r'  rÕ  c          
     óæ	  — t          |¦  «        sdS t          |¦  «        t          t          fvr|                     ¦   «         }n|}t          |¦  «        dk    sdS t          |¦  «        }	 t          d„ d                     |¦  «        D ¦   «         ¦  «        }n# t          $ r t          ¦   «          Y dS w xY w|}|                     d¦  «        r
|dd …         }| j                             ||||¬¦  «        }t          | j        |¦  «        }|d         }|d         }|d         }|d	         }|d
         }|d         }|r||z  }n||z
  dk    r|dz  }n|||z
  z  }|dk    r| j                             ||dz   ¦  «        }n|d         }g } |D ]2}!|r|dvrd }"n|}"|                      t%          |!|"||¦  «        ¦  «         Œ3| }t'          |	d¦  «        }#t'          |
d¦  «        }$|
s|dk    r|	}
t'          |	d¦  «        }$t)          |¦  «        }%|}&|&dz  dk    rt+          d¦  «        ‚|&dk     r|&dz  }&|&dk     °|&dz  }&d„ }'d„ }(d})d}*d}+| j        },| j        }-|%rlt1          dddd|d         j        | j        z   |,|d         j        z
  | j        z
  ¦  «        }.|. |d         z  |.z  }/t7          t9          |/¦  «        ¦  «        dz   }0nd}0|,|j        z
  | j        z
  }1|j        | j        z   }2|1}3|&dk    r:|,|j        z
  | j        z
  }2|j         | j        z
  }1|0|)z  }0|-t;          |1¦  «        z
  }3n‡|&dk    r7|, |j        z   | j        z   }2|j        | j        z   }1|0|*z  }0t;          |1¦  «        }3nJ|&dk    rD|j         | j        z
  }2|, |j        z   | j        z   }1|0|+z  }0t;          |j        | j        z   ¦  «        }3| j                             |¦  «        }4|4�	d|4› d�}5d }6ndx}5}6| j                             ||¬!¦  «        }7|7€d}7nd|7› d"�}7 |'|5|7|0|2|1||¦  «        }8|dk    r7|8|› d#�z  }8|8t7          ||z  ¦  «        d$z   z  }8|�|8t7          |¦  «        d%z   z  }8|	�|8|#z  }8|
�|8|$z  }8|8|d         z  }8d}9t          |¦  «        dk    r|8 |(|¦  «        z  }8n|8d&z  }8tA          dt          |¦  «        ¦  «        D ]-}:|3|k     r n$|:dk    r|8d'z  }8|8||:         d&z   z  }8|3|z  }3|9dz  }9Œ.|8d(|6› d)�z  }8| xj!        |8z  c_!        |9S )*Nr   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©rÐ
  rR  s     r)   r¯   z%Shape.insert_text.<locals>.<listcomp>™>  s   € Ð:Ð:Ð: a�3˜q™6œ6Ð:Ð:Ð:r*   r³   rb  r   ©r	  r]  rû  rP  r$  rI  r   rG  rH  rÉ  r
  rW  ©rV  rU  rË  rÝ  rÄ  rL  rÃ  c                ób   — d| › |› d|› dt          ||f¦  «        › d|› dt          |¦  «        › d�S )Nr  úBT
ú1 0 0 1 z Tm
/r³   ú Tf r«  ©r!   rÜ
  rË  r  rp  rÝ  r
  s          r)   r¸	  z#Shape.insert_text.<locals>.<lambda>Ò>  sQ   € Ð-y°QÐ-y¸Ð-yÐ-y¸qÐ-yÐ-yÍ)ÐUVÐXYÐTZÑJ[ÔJ[Ð-yÐ-yÐcdÐ-yÐ-yÕgpÐqrÑgsÔgsÐ-yÐ-yÐ-y€ r*   c                ó(   — dt          | ¦  «        › d�S )NzTJ
0 -z TD
r«  ©r!   s    r)   r¸	  z#Shape.insert_text.<locals>.<lambda>Ó>  s   € Ð8¥Y¨q¡\¤\Ð8Ð8Ð8€ r*   ú0 1 -1 0 0 0 cm
ú0 -1 1 0 0 0 cm
ú-1 0 0 -1 0 0 cm
ú cm
r\   rª  rö  ú/OC /ú BDC
úEMC
r9  r:  ú Tr ú w ú M ÚTJz
T* z
ET
úQ
)"rø   rÈ   r´   rµ   rì  r7   rú  rø  rê  rg   rv   r3   rÖ   r-  rX  r:  rb  rk   ÚgetTJstrrÖ  Ú
CheckMorphrÃ   rà  rl  r…  r4  r5  r¶   r˜  rý  r  ri  r\  r‘  );r(   r9  rñ  r
  rv  r	  r]  rP  rû  r  r  r[  rá  rZ  ri  rþ  r&  r'  rÕ  r   Úmaxcoder  r   r]  rD  r$  rI  r"  rG  rH  ÚlheightrW  ÚtabrO  r
  Ú	color_strÚfill_strÚmorphingrb  Útempl1Útempl2Úcmp90Úcmm90Úcm180rà  rl  rs  r†  rÝ  r	  r  ÚspaceÚoptcontÚbdcÚemcrì  rM  Únlinesr®   s;                                                              r)   r4  zShape.insert_textt>  s2  € õ0 �F‰|Œ|ð 	Ø�1å�‰<Œ<¥¥e˜}Ð,Ð,Ø×$Ò$Ñ&Ô&ˆDˆDàˆDå�4‰yŒy˜1Š}ˆ}Ø�1å�e‘”ˆð	ÝÐ:Ð:¨3¯8ª8°D©>¬>Ð:Ñ:Ô:Ñ;Ô;ˆGˆGøÝð 	ð 	ð 	ÝÑÔÐØ�1�1ð	øøøð
 ˆØ×Ò˜CÑ Ô ð 	Ø˜!˜"˜"”IˆEàŒy×$Ò$Ø X¸ÈZð %ñ 
ô 
ˆõ ! ¤¨4Ñ0Ô0ˆà˜A”;ˆØ˜JÔ'ˆØ˜(Ô#ˆØ˜&Ô!ˆØ˜JÔ'ˆØ˜[Ô)ˆ	Øð 	8Ø Ñ+ˆGˆGØ˜	Ñ! QÒ&Ð&Ø ‘nˆGˆGà (¨YÑ"6Ñ7ˆGà�SŠ=ˆ=Ø”X×-Ò-¨d°G¸a±KÑ@Ô@ˆFˆFà˜hÔ'ˆFàˆØð 	9ð 	9ˆAØð ˜&Ð(BÐBÐBØ��à�Ø�JŠJ•x  1 f¨hÑ7Ô7Ñ8Ô8Ð8Ð8Øˆå˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆØð 	-˜ qÒ(Ð(ØˆDÝ  ¨Ñ,Ô,ˆHå˜eÑ$Ô$ˆØˆØ�‰8�qŠ=ˆ=ÝÐ/Ñ0Ô0Ð0à�AŠgˆgØ�3‰JˆCð �AŠgˆgà�C‰iˆàyÐyˆØ8Ð8ˆØ#ˆØ#ˆØ$ˆØ”ˆØ”
ˆð ð 	Ý˜˜1˜a  E¨!¤H¤J°´Ñ$7¸À%ÈÄ(Ä*Ñ9LÈtÌvÑ9UÑVÔVˆBØ�#˜˜aœ‘. 2Ñ%ˆCÝ�8 C™=œ=Ñ)Ô)¨GÑ3ˆBˆBàˆBØ�u”wÑ ¤Ñ'ˆØŒw˜œÑˆØˆà�"Š9ˆ9Ø˜EœGÑ# d¤fÑ,ˆDØ”7�(˜TœVÑ#ˆCØ�%‰KˆBØ�C ™HœHÑ$ˆEˆEð �CŠZˆZØ�7˜UœWÑ$ t¤vÑ-ˆDØ”'˜DœFÑ"ˆCØ�%‰KˆBÝ˜‘H”HˆEˆEð �CŠZˆZØ”G�8˜dœfÑ$ˆDØ�'˜EœGÑ# d¤fÑ,ˆCØ�%‰KˆBÝ˜œ $¤&Ñ(Ñ)Ô)ˆEð ”)×1Ò1°"Ñ5Ô5ˆØÐØ)˜'Ð)Ð)Ð)ˆCØˆCˆCàˆNˆC�#à”	×&Ò&¨.¸\Ð&ÑJÔJˆØˆ=ØˆEˆEà$˜Ð$Ð$Ð$ˆEØˆv�c˜5 " d¨C°¸ÑAÔAˆà˜Š?ˆ?Ø�{Ð(Ð(Ð(Ñ(ˆDØ•I˜l¨XÑ5Ñ6Ô6¸Ñ>Ñ>ˆDØÐ&Ø�	 +Ñ.Ô.°Ñ6Ñ6�ØÐØ�IÑˆDØÐØ�HÑˆDð
 	��Q”‰ˆØˆÝˆt‰9Œ9�qŠ=ˆ=Ø�F�F˜7‘O”OÑ#ˆDˆDà�D‰LˆDÝ�q�#˜d™)œ)Ñ$Ô$ð 	ð 	ˆAØ�wŠˆØ�Ø�1ŠuˆuØ˜‘�Ø�D˜”G˜d‘NÑ"ˆDØ�WÑˆEØ�a‰KˆFˆFàÐ!˜Ð!Ð!Ð!Ñ!ˆð 	ˆŒ˜$ÑˆŒØˆs   Á+,B ÂB4Â3B4)r!  rá  r  rû  r^  r'  r  r]  r	  r
  rv  rZ  rþ  rÕ  r[  ri  rP  r&  r!  r^  c          
     ó¤  ‡‡P‡Q— t          |¦  «        }|j        s|j        rt          d¦  «        ‚t	          |d¦  «        }t	          |	d¦  «        }|	€|dk    r|}	t	          |d¦  «        }| j                             |¦  «        }|�	d|› d�}d}nd	x}}| j                             ||¬
¦  «        }|€d	}nd|› d�}|dz  dk    rt          d¦  «        ‚|}|dk     r|dz  }|dk     °|dz  }t          |¦  «        s|dv r|j	        n|j
        S d}d}d}| j	        }|} |                      d¦  «        r
| dd…         } | j                             | |
||¬¦  «        }!t          | j        |!¦  «        }"|"d         }#|#d         ŠQ|#d         }$|#d         ŠP|#d         }%|#d         }&|#d         }'|r|}(n|&|'z
  dk    rd}(n|&|'z
  }(‰|(z  })t          |¦  «        t           t"          fv rd                     |¦  «        }*n|}*t'          d„ |*D ¦   «         ¦  «        }+|$r%|+dk    rd	                     d „ |*D ¦   «         ¦  «        }*|*                     ¦   «         }*| j                             |!|+dz   ¦  «        ŠP|$r|%d!vrd},n‰P},ˆˆPˆQfd"„}-‰Qdk     r‰Pd#         d         ‰z  }.n‰}.d	}/t-          |¦  «        rqt/          dddd|d         j        | j        z   | j	        |d         j        z
  | j        z
  ¦  «        }0|0 |d         z  |0z  }1t5          t7          |1¦  «        ¦  «        d$z   }2nd	}2d}3t9          d‰|&z  ¦  «        }4|dk    r|j        |4z   }5|j
        }6|j	        }7n¤|dk    r1t9          ‰|&z  d¦  «        }4|j        |4z   }5|j	        }6|j
        }7|2|z  }2nm|d%k    r4t9          d‰|&z  ¦  «         }4|j        |4z   }5|j
        }6d&}3|j	        }7|2|z  }2n3t9          ‰|&z  d¦  «         }4|j         |4z   }5|j	        }6d&}3|j
        }7|2|z  }2g }8tC          |*¦  «        D �]ƒ\  }9}:|: "                    |¦  «         #                    d'¦  «        };tI          |;¦  «        }<d	}=|6}>tK          |<¦  «        D ]é}?|;|?         }@ |-|@¦  «        }A|>|Ak    r|=|@d'z   z  }=|>|A|.z   z  }>Œ,|=r1|= &                    ¦   «         dz   }=|/|=z  }/|8 '                    d(¦  «         d	}=|6}>|A|6k    r|@d'z   }=|6|Az
  |.z
  }>ŒwtI          |8¦  «        dk    rd)|8d&<   |@D ]D}B |-|=¦  «        |6 |-|B¦  «        z
  k    r|=|Bz  }=Œ#|=dz  }=|/|=z  }/|8 '                    d)¦  «         |B}=ŒE|=d'z  }=|6 |-|=¦  «        z
  }>Œê|=r,|/|= &                    ¦   «         z  }/|8 '                    d)¦  «         |9tI          |*¦  «        dz
  k     r|/dz  }/�Œ…|/ (                    d¦  «        r
|/dd&…         }/|/ )                    d¦  «        dz   }C|)|Cz  |'‰z  z
  }D|D|7z
  }E|EtT          k    rd&|Ez  S tW          |E¦  «        }E|EtT          k     rd}Ed*|› |› d+�|2z   }Fd,„ }G|/                     ¦   «         }Hd)|8d&<   tC          |H¦  «        D �]ó\  }9}Id}J|6 |-|I¦  «        z
  }K|5|4|9|(z  z  z   }L|dk    r8|dv r|Lt9          |Kd-z  d¦  «        |3z  z   }Lnƒ|Lt9          d|Kd-z  ¦  «        |3z  z
  }Lni|d-k    r2|dv r|Lt9          |Kd¦  «        |3z  z   }LnH|Lt9          d|K¦  «        |3z  z
  }Ln1|d.k    r+|I )                    d'¦  «        }M|Mdk    r|8|9         r|K|Mz  }Jnd}J||Lj        z
  | j        z
  }N|Lj        | j        z   }O|dk    r#||Lj        z
  | j        z
  }O|Lj         | j        z
  }NnR|d/k    r#| |Lj        z   | j        z   }O|Lj        | j        z   }Nn)|d%k    r#|Lj         | j        z
  }O| |Lj        z   | j        z   }N|F |G|O|N| ‰¦  «        z  }F|dk    r7|F|› d0�z  }F|Ft5          |‰z  ¦  «        d1z   z  }F|�|Ft5          |¦  «        d2z   z  }F|d.k    r|Ft5          |J¦  «        d3z   z  }F|�|F|z  }F|	�|F|z  }F|FtY          |I|,|$‰Q¦  «        › d4�z  }F�Œõ|Fd5|› d6�z  }F| xj-        |Fz  c_-        |  .                    |¦  «         |ES )7aQ  Insert text into a given rectangle.

        Args:
            rect -- the textbox to fill
            buffer -- text to be inserted
            fontname -- a Base-14 font, font name or '/name'
            fontfile -- name of a font file
            fontsize -- font size
            lineheight -- overwrite the font property
            color -- RGB stroke color triple
            fill -- RGB fill color triple
            render_mode -- text rendering control
            border_width -- thickness of glyph borders as percentage of fontsize
            expandtabs -- handles tabulators with string function
            align -- left, center, right, justified
            rotate -- 0, 90, 180, or 270 degrees
            morph -- morph box with a matrix and a fixpoint
        Returns:
            unused or deficit rectangle area (float)
        z%text box must be finite and not emptyrË  rÝ  Nr   rØ  rÙ  rÚ  r\   r9  rb  r:  rÄ  zrotate must be multiple of 90rÃ  rõ  rÔ  rÕ  rÖ  r   rË  r$  rI  rW  r   rG  rH  rÉ  r%   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rÊ  rR  s     r)   r¯   z(Shape.insert_textbox.<locals>.<listcomp>¥?  s   € Ð*Ð*Ð* !•s˜1‘v”vÐ*Ð*Ð*r*   r
  c                ó<   — g | ]}t          |¦  «        d k     r|nd‘ŒS )r'  ú?rÊ  rR  s     r)   r¯   z(Shape.insert_textbox.<locals>.<listcomp>¨?  s*   € ÐAÐAÐA¸�s 1™vœv¨š|˜|˜!˜!°ÐAÐAÐAr*   rÌ  c                óp   •— ‰dk     rt          ˆfd„| D ¦   «         ¦  «        ‰z  S t          | ¦  «        ‰z  S )zCalculate pixel length of x.r   c                óF   •— g | ]}‰t          |¦  «                 d          ‘ŒS r>  rÊ  ©r­   rË  rW  s     €r)   r¯   z8Shape.insert_textbox.<locals>.pixlen.<locals>.<listcomp>¸?  s(   ø€ Ð9Ð9Ð9°!˜F¥3 q¡6¤6œN¨1Ô-Ð9Ð9Ð9r*   )rW  r7   )r4  r
  rW  r$  s    €€€r)   Úpixlenz$Shape.insert_textbox.<locals>.pixlenµ?  sE   ø€ à˜!Š|ˆ|ÝÐ9Ð9Ð9Ð9°qÐ9Ñ9Ô9Ñ:Ô:¸XÑEÐEå˜1‘v”v Ñ(Ð(r*   é    r×  rö  rA  r³   TFr  rÎ  c                óR   — dt          | |f¦  «        › d|› dt          |¦  «        › d�S )NrÏ  z Tm /r³   rÐ  r«  )r!   rÜ
  rË  r  s       r)   r¸	  z&Shape.insert_textbox.<locals>.<lambda>:@  s5   € Ð#\­i¸¸A¸Ñ.?Ô.?Ð#\Ð#\ÀaÐ#\Ð#\Í)ÐTUÉ,Ì,Ð#\Ð#\Ð#\€ r*   r   r   rª  rÛ  rÜ  rÝ  z Tw zTJ
zET
rß  )/r4  rd	  re	  rÃ   rÖ  rÖ   r  ri  rø   rà  rl  r3   r-  rX  r:  rÈ   r´   rµ   rê  rø  rì  rb  rá  r…  r4  r5  r¶   r˜  rú  rû  rÎ  rü  rv  rþ  r^  r6   r7   r\  r&   rk   rí  r  r”  rý  rà  r‘  r”  )Rr(   r  rñ  r!  rá  r  rû  r^  r'  r  r]  r	  r
  rv  rZ  rþ  rÕ  r[  ri  rP  r&  rå  ræ  rî  rï  rð  rì  rb  rê  rë  rì  rà  r  r   r]  rD  rI  r"  rG  rH  Úlheight_factorrã  rä	  râ  Ú	tj_glyphsrù  Úblenr   rs  r†  rÝ  ÚprogrÚc_pntr9  ÚmaxwidthÚ	maxheightÚjust_tabr®   ro   Úline_tÚ	num_wordsÚlbuffr{  r‘  ÚwordÚpl_wrË  Úlb_countÚtext_heightÚmorerM  ÚtemplÚtext_trO  rs  Úplrx  Úspacesr	  r  rW  r$  sR               `                                                                   @@r)   r×  zShape.insert_textbox1?  se
  øøø€ õX �D‰zŒzˆØŒ=ð 	F˜DÔ,ð 	FÝÐDÑEÔEÐEå˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆØˆ<˜K¨1Ò,Ð,ØˆDÝ  ¨Ñ,Ô,ˆHà”)×1Ò1°"Ñ5Ô5ˆØÐØ)˜'Ð)Ð)Ð)ˆCØˆCˆCàˆNˆC�#ð ”	×&Ò&¨.¸\Ð&ÑJÔJˆØˆ=ØˆEˆEà$˜Ð$Ð$Ð$ˆEà�B‰;˜!ÒÐÝÐ<Ñ=Ô=Ð=àˆØ�AŠgˆgØ�3‰JˆCð �AŠgˆgà�C‰iˆõ �F‰|Œ|ð 	BØ"%¨ / /�4”;�;°t´zÐAà#ˆØ#ˆØ$ˆØ”ˆàˆØ×Ò˜CÑ Ô ð 	Ø˜!˜"˜"”IˆEàŒy×$Ò$Ø X¸ÈZð %ñ 
ô 
ˆõ ! ¤¨4Ñ0Ô0ˆà˜A”;ˆØ˜JÔ'ˆØ˜(Ô#ˆØ˜(Ô#ˆØ˜&Ô!ˆØ˜JÔ'ˆØ˜[Ô)ˆ	àð 	2Ø'ˆNˆNØ˜	Ñ! QÒ&Ð&Ø ˆNˆNà%¨	Ñ1ˆNØ˜^Ñ+ˆõ �‰<Œ<�D¥%˜=Ð(Ð(Ø—’˜6Ñ"Ô"ˆBˆBàˆBåÐ*Ð* rÐ*Ñ*Ô*Ñ+Ô+ˆàð 	C�g ’m�mØ—’ÐAÐA¸bÐAÑAÔAÑBÔBˆBà�]Š]‰_Œ_ˆà”×)Ò)¨$°¸!±Ñ<Ô<ˆØð 	�fÐ$>Ð>Ð>ØˆIˆIàˆIð
	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð �aŠ<ˆ<Ø˜"”:˜a”= 8Ñ+ˆDˆDàˆDàˆå�eÑÔð 	ÝØ�1�a˜˜E !œHœJ¨¬Ñ/°´¸uÀQ¼x¼zÑ1IÈDÌFÑ1Rñô ˆBð �#˜˜aœ‘. 2Ñ%ˆCÝ�8 C™=œ=Ñ)Ô)¨GÑ3ˆBˆBàˆBð
 ˆÝ�a˜ HÑ,Ñ-Ô-ˆØ�!Š8ˆ8Ø”G˜e‘OˆEØ”zˆHØœˆIˆIà�BŠYˆYÝ˜( XÑ-¨qÑ1Ô1ˆEØ”G˜e‘OˆEØ”{ˆHØœ
ˆIØ�%‰KˆBˆBà�CŠZˆZå˜1˜h¨Ñ1Ñ2Ô2Ð2ˆEØ”G˜e‘OˆEØ”zˆHØˆEØ”{ˆIØ�%‰KˆBˆBõ ˜8 hÑ.°Ñ2Ô2Ð2ˆEØ”G˜e‘OˆEØ”{ˆHØˆEØœ
ˆIØ�%‰KˆBð
 ˆå  ‘}”}ð 2	ñ 2	‰GˆAˆtØ—_’_ ZÑ0Ô0×6Ò6°sÑ;Ô;ˆFÝ˜F™œˆIØˆEØˆDõ ˜9Ñ%Ô%ð #0ð #0�Ø˜a”y�Ø�v˜d‘|”|�Ø˜4’<�<Ø˜T C™ZÑ'�EØ˜D 4™KÑ'�DØð ð *Ø!ŸLšL™NœN¨TÑ1�EØ˜E‘M�DØ—O’O DÑ)Ô)Ð)à�Ø�à˜8Ò#Ð#Ø  3™J�EØ# d™?¨TÑ1�DØõ �x‘=”= 1Ò$Ð$Ø#(�H˜R‘LØð "ð "�AØ�v˜e‘}”}¨°6°6¸!±9´9Ñ(<Ò<Ð<Ø ™
˜˜à ™˜Ø ™˜Ø Ÿš¨Ñ.Ô.Ð.Ø !˜˜à˜‘�Ø & &¨¡-¤-Ñ/��àð 'Ø˜Ÿš™œÑ&�Ø—’ Ñ&Ô&Ð&à•3�r‘7”7˜Q‘;ŠˆØ˜‘�ùð �=Š=˜ÑÔð 	Ø˜˜˜”9ˆDØ—:’:˜dÑ#Ô# aÑ'ˆð  Ñ(¨9°xÑ+?Ñ?ˆà˜YÑ&ˆØ•'Š>ˆ>Ø˜$‘;Ðå�4‰yŒyˆØ•'Š>ˆ>ØˆDØ'�sÐ'˜EÐ'Ð'Ð'¨"Ñ,ˆØ\Ð\ˆà—’Ñ"Ô"ˆØˆ�‰Ý˜fÑ%Ô%ð /	Fñ /	F‰DˆAˆqØˆGØ˜F˜F 1™IœIÑ%ˆBØ˜% 1 ~Ñ#5Ñ6Ñ6ˆCØ˜ŠzˆzØ˜(�?�?Ø¥ b¨1¡f¨aÑ 0Ô 0°5Ñ 8Ñ8�C�Cà¥ a¨¨a©Ñ 0Ô 0°5Ñ 8Ñ8�C�CØ˜!’�Ø˜(�?�?Ø¥ b¨!¡¤¨uÑ 4Ñ4�C�Cà¥ a¨¡¤¨uÑ 4Ñ4�C�CØ˜!’�ØŸš ™œ�Ø˜A’:�: (¨1¤+�:Ø  6™k�G�Gà�GØ˜3œ5‘. 4¤6Ñ)ˆCØ”5˜4œ6‘>ˆDØ�bŠyˆyØ ¤‘~¨¬Ñ.�Ø”u�f˜tœv‘o��Ø˜’�Ø�w ¤‘¨¬Ñ/�Ø”e˜dœf‘n��Ø˜’�Øœ�v ¤‘�Ø�g ¤‘o¨¬Ñ.�à�E�E˜$  U¨HÑ5Ô5Ñ5ˆDà˜QŠˆØ˜;Ð,Ð,Ð,Ñ,�Ø�	 ,°Ñ"9Ñ:Ô:¸UÑBÑB�ØÐ*Ø�I kÑ2Ô2°UÑ:Ñ:�Dà˜ŠzˆzØ�	 'Ñ*Ô*¨VÑ3Ñ3�àÐ Ø˜	Ñ!�ØÐØ˜Ñ �Ø•x  9¨f°hÑ?Ô?ÐEÐEÐEÑEˆD‰Dà��s���ÑˆàˆŒ˜$ÑˆŒØ�Š˜ÑÔÐØˆr*   r=  Frl  r$  r%  rn  rp  r#  rã  c           
     óà  — | j         dk    rdS |dk    rd}n|€d}t          |d¦  «        }t          |d¦  «        }| j                             |¦  «        }|�d|› d�| j         z   | _         d}nd}| j                             ||
¬	¦  «        }|�d
|› d�| j         z   | _         |dk    r&|dk    r | xj         t          |¦  «        dz   z  c_         |dk    r|› d�| j         z   | _         |dk    r|› d�| j         z   | _         |dvr|› d�| j         z   | _         |	r| xj         dz  c_         d| _        |�| xj         |z  c_         |�Z| xj         |z  c_         |�$|s| xj         dz  c_         nE| xj         dz  c_         n4|s| xj         dz  c_         n!| xj         dz  c_         n| xj         dz  c_         | xj         |z  c_         t          |¦  «        r}t          dddd|d         j	        | j	        z   | j
        |d         j        z
  | j        z
  ¦  «        }| |d         z  |z  }t          t          |¦  «        ¦  «        dz   | j         z   | _         | xj        d| j         z   dz   z  c_        d| _         d| _        dS )zäFinish the current drawing segment.

        Notes:
            Apply colors, opacity, dashes, line style and width, or
            morphing. Also whether to close the path
            by connecting last to first point.
        r\   Nr   rË  rÝ  rØ  rÙ  rÚ  r9  rb  r:  r   ú w
z J
z j
)Nr\   ú[] 0z d
zh
zB
zB*
zf
zf*
zS
r×  r  rß  )rc  rÖ  rÖ   r  ri  r¶   rb  rá  r…  r4  rà  r5  r˜  r’  )r(   rl  r  r  r$  r%  rn  rp  rþ  r#  r'  r&  rÕ  rå  ræ  rî  rð  rì  rs  r†  s                       r)   rÖ  zShape.finishu@  sÔ  € ð, Œ>˜RÒÐØˆFà�AŠ:ˆ:ØˆEˆEØˆ]ØˆEõ ˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆà”)×1Ò1°"Ñ5Ô5ˆØÐØ4 WÐ4Ð4Ð4°t´~ÑEˆDŒNØˆCˆCàˆCà”	×&Ò&¨.¸\Ð&ÑJÔJˆØÐØ- Ð-Ð-Ð-°´Ñ>ˆDŒNà�AŠ:ˆ:˜% 1š*˜*ØˆNŒN�i¨Ñ.Ô.°Ñ7Ñ7ˆNŒNà�aŠ<ˆ<Ø 'Ð-Ð-Ð-°´Ñ>ˆDŒNØ�qŠ=ˆ=Ø (Ð.Ð.Ð.°´Ñ?ˆDŒNàÐ+Ð+Ð+Ø &˜_˜_˜_¨t¬~Ñ=ˆDŒNàð 	#ØˆNŒN˜eÑ#ˆNŒNØ"ˆDŒOàÐØˆNŒN˜iÑ'ˆNŒNàÐØˆNŒN˜hÑ&ˆNŒNØÐ Øð -Ø�N”N eÑ+�N”N�Nà�N”N fÑ,�N”N�Nàð -Ø�N”N eÑ+�N”N�Nà�N”N fÑ,�N”N�NàˆNŒN˜eÑ#ˆNŒNàˆŒ˜#ÑˆŒÝ�eÑÔð 	QÝØ�1�a˜˜E !œHœJ¨¬Ñ/°´¸uÀQ¼x¼zÑ1IÈDÌFÑ1Rñô ˆBð �#˜˜aœ‘. 2Ñ%ˆCÝ&¥x°¡}¤}Ñ5Ô5¸Ñ?À$Ä.ÑPˆDŒNàˆŒ˜' D¤NÑ2°UÑ:Ñ:ˆŒØˆŒØˆŒØˆr*   r5  c                ó   — t          | j        ¦  «         | xj        | j        z  c_        | j                             ¦   «         | _        | j        r\|r| j                             ¦   «          t                               | j        d|¦  «        }| j         	                    || j        ¦  «         d| _
        d| _        d| _        d| _        d| _        dS )zžUpdate the page's /Contents object with Shape data.

        The argument controls whether data appear in foreground (default)
        or background.
        r:  Nr\   )rv  rÖ   r’  r‘  r×  rü  r  r½  r:  rq	  rb  r  rc  )r(   r5  r   s      r)   rØ  zShape.commitÐ@  s»   € õ 	�D”IÑÔÐØˆŒ˜$œ.Ñ(ˆŒØœ×.Ò.Ñ0Ô0ˆŒàŒ>ð 	9Øð *Ø”	×'Ò'Ñ)Ô)Ð)å×)Ò)¨$¬)°T¸7ÑCÔCˆDàŒH×"Ò" 4¨¬Ñ8Ô8Ð8àˆŒØˆŒ	ØˆŒØˆŒØˆŒˆˆ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ú  )rH  rº   r+  r~  rÚ  rú  )r  rº   r  rº   r!  rº   rÚ  rú  rš  )
rH  rº   r9  rº   r?  r~  r@  rø   rÚ  rú  )r  r¼   rÚ  rú  )r  r»   rÚ  rú  )r   )r  rº   r  rº   rD  r~  rÚ  rú  )&r9  rº   rñ  r\  r
  r~  rv  rÎ  r	  rá  r]  rÍ  rP  rø   rû  r4   r  rÏ  r  rÏ  r[  r4   rá  r~  rZ  r~  ri  r4   rþ  rÏ  r&  r~  r'  r~  rÕ  r4   rÚ  r4   )*r  r¼   rñ  r\  r!  r4   rá  r~  r  rÏ  rû  r4   r^  r4   r'  r~  r  rÏ  r]  rÍ  r	  rÍ  r
  r~  rv  rÎ  rZ  r~  rþ  rÏ  rÕ  r4   r[  r4   ri  r4   rP  rø   r&  r~  rÚ  r~  )r   r=  Nr   r   NFNTr   r   r   )rl  r~  r  rÏ  r  rÏ  r$  r4   r%  r4   rn  rÍ  rp  rø   rþ  rÏ  r#  rø   r'  r~  r&  r~  rÕ  r4   rÚ  rã  )r5  rø   rÚ  rã  )r/   r0   r1   rµ  r›  r�  rŒ   r”  r4  r9  r*  r7  r/  r1  rC  rÕ  r;  rJ  rG  r4  r×  rÖ  rØ  r-   r*   r)   ru  ru  =  s‚  € € € € € ØÐàðð ñ „\ðð&ð ð ð ð(7ð 7ð 7ð*ð ð ð ðð ð ð ðð ð ð ð.ð ð ð ð0Cð Cð Cð Cð0ð 0ð 0ð 0ð(  ðHð Hð Hð Hð HðT 48ð 1ð 1ð 1ð 1ð 1ð 1ðfBð Bð Bð Bð ð	ð ð ð ð ðB ð	#ð #ð #ð #ð #ðZ Ø#ØØØØØØØØ"ØØØØ !ØØð)xð xð xð xð xð xðD Ø"ØØØØØØØ!ØØ#ØØØØØØØ !ð-Bð Bð Bð Bð Bð BðL
 ØØØØØØØØØØ !ØðYð Yð Yð Yð Yðvð ð ð ð ð ð r*   ru  c                  óæ   — e Zd Zdd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	dd	„Z
dd
„Zdd„Zd„ Zdd„Zed d„¦   «         Zed d„¦   «         Zdd„Z G d„ d¦  «        Zd!d„Zd"d„Zd#d„Zd#d„ZdS )$r;  r\   NrÜ  c                óx  — t          j        |                     d¦  «        ¦  «        }|r$t          |t          ¦  «        st	          |¦  «        }|r|j        nt          j        d ¦  «        }t          t           d¦  «        rt          j        ||||¦  «        | _        d S t          j	        ||||¦  «        | _        d S )NrÞ  ÚFzStoryS)
r�   rœ  r×  r>   rD  rÄ   Ú	FzArchiver;   r  ÚFzStory)r(   r2  r3  Úemr0  r=  Úarchs          r)   rŒ   zStory.__init__ë@  s§   € ÝÔ6¸¿ºÀGÑ8LÔ8LÑMÔMˆØð 	'�: g­wÑ7Ô7ð 	'Ý˜gÑ&Ô&ˆGØ&ÐBˆwŒ|ˆ|­E¬O¸TÑ,BÔ,BˆÝ•5˜*Ñ%Ô%ð 	DÝœ¨°¸2¸tÑDÔDˆDŒIˆIˆIåœ w°¸"¸dÑCÔCˆDŒIˆIˆIr*   c                óN  — | j         }d}|                     ddd¦  «        }|r‚|j        }t          |¦  «        dk    rM|d         dk    rA|d         dv r7|                     d¦  «        }|s d|› �}|                     d|¦  «         |dz  }|                     ddd¦  «        }|°€dS dS )	zt
        Look for `<h1..6>` items in `self` and adds unique `id`
        attributes if not already present.
        r   Nr   rÑ  r   Ú123456rH  Úh_id_)r•  r¡   r¥  r7   r¹  r»  r   )r(   Údomr®   r4  r   ÚattrÚid_s          r)   Úadd_header_idszStory.add_header_idsõ@  sÓ   € ð
 ŒiˆØˆØ�HŠH�T˜4 Ñ&Ô&ˆØð 		.Ø”9ˆDÝ�4‰yŒy˜AŠ~ˆ~ $ q¤'¨3¢, ,°4¸´7¸hÐ3FÐ3FØ×,Ò,¨TÑ2Ô2�Øð Ø% !˜+˜+�Cà—O’O D¨#Ñ.Ô.Ð.Ø˜‘F�AØ—’˜D $¨Ñ-Ô-ˆAð ð 		.ð 		.ð 		.ð 		.ð 		.r*   c                óx  — t          | t          ¦  «        r| }nt          d| ¦  «        }t          ¦   «         }|D ]'}|j        dz  r|j        r|j        |v rŒ|||j        <   Œ(|D �]U}|j        dz  �rG|j        �r?t          ¦   «         }t          |j        ¦  «        |d<   |j                             d¦  «        r’|j        dd…         }	 ||         }nA# t          $ r4}	t          dk    rt          ¦   «          t          d|› d|› �¦  «        |	‚d}	~	ww xY w	 t          |d<   |j        \  }
}}}t          |
|¦  «        |d<   |j        dz
  |d<   nK|j                             d¦  «        rt"          |d<   |j        dd…         |d<   nt$          |d<   |j        |d<   ||j        dz
                                |¦  «         �ŒW|S )aÆ  
        Adds links to PDF document.
        Args:
            document_or_stream:
                A PDF `Document` or raw PDF content, for example an
                `io.BytesIO` instance.
            positions:
                List of `ElementPosition`'s for `document_or_stream`,
                typically from Story.element_positions(). We raise an
                exception if two or more positions have same id.
        Returns:
            `document_or_stream` if a `Document` instance, otherwise a
            new `Document` instance.
        We raise an exception if an `href` in `positions` refers to an
        internal position `#<name>` but no item in `positions` has `id =
        name`.
        rj  r   rd  r(
  NzNo destination with id=z, required by position_from: r   z"add_pdf_links(): making link from:zadd_pdf_links():    zadd_pdf_links(): to:re  rg  rÖ   zname:r   r   rl  )r>   rÁ   r5   Ú
open_closerH  rå  r4  r  r3   rg   r  rv   rÞ   r'   rm  rú  Úpage_numrÐ  rs  rB  )Údocument_or_streamÚ	positionsrÉ   Úid_to_positionÚpositionÚposition_fromrÁ  Ú	target_idÚposition_torp  r  r  r  r  s                 r)   Úadd_pdf_linkszStory.add_pdf_linksA  s+  € õ& Ð(­(Ñ3Ô3ð 	;Ø)ˆHˆHå Ð'9Ñ:Ô:ˆHõ
 ™œˆà!ð 	<ð 	<ˆHàÔ# aÑ'ð <¨X¬[ð <à”; .Ð0Ð0àà3;�N H¤KÑ0øð 'ð (	Gñ (	GˆMàÔ(¨1Ñ,ñ &G°-Ô2Dñ &Gõ ‘v”v�Ý# MÔ$6Ñ7Ô7��V‘à Ô%×0Ò0°Ñ5Ô5ð 9à -Ô 2°1°2°2Ô 6�IðEØ&4°iÔ&@˜˜øÝ$ð Eð Eð EÝ/°!Ò3Ð3½Ñ8HÔ8HÐ8HÝ*Ð+|ÀYÐ+|Ð+|ÐmzÐ+|Ð+|Ñ}Ô}ð  DEð  EøøøøðEøøøð
Bõ
 $-�D˜‘LØ%0Ô%5‘N�B˜˜B õ "' r¨2¡¤�D˜‘JØ#.Ô#7¸!Ñ#;�D˜‘L�Lð %Ô)×4Ò4°WÑ=Ô=ð 9Ý'1˜˜V™Ø'4Ô'9¸!¸"¸"Ô'=˜˜V™˜å'/˜˜V™Ø&3Ô&8˜˜U™ð ˜Ô/°!Ñ3Ô4×@Ò@ÀÑFÔFÐFùàˆs   ÃCÃ
DÃ/D
Ä
Dc                óR   — |                       ¦   «         }|                     ¦   «         S r,   )rÉ   r  ©r(   r  s     r)   r•  z
Story.body]A  s   € à�mŠm‰oŒoˆØ�{Š{‰}Œ}Ðr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S r,   )r�   Úfz_story_documentrÄ   r“  r.  s     r)   rÉ   zStory.documentbA  s    € ÝÔ% t¤yÑ1Ô1ˆÝ�C‰yŒyÐr*   c                ó”   — t          |¦  «        }|r|j        nt          j        d ¦  «        }t          j        | j        ||¦  «         d S r,   )rã  rÄ   r�   rº  Úfz_draw_story)r(   rÂ  ré  Úctm2r  s        r)   Údrawz
Story.drawfA  sF   € Ý  &Ñ)Ô)ˆØ#Ð>ˆfŒkˆk­¬¸Ñ)>Ô)>ˆÝÔ˜TœY¨¨TÑ2Ô2Ð2Ð2Ð2r*   c                ó€  ‡‡— t          ‰¦  «        t          u rU‰                     ¦   «         D ]?}t          |¦  «        t          u r|                     ¦   «         st          d|› d�¦  «        ‚Œ@ni Št          ‰¦  «        r‰j        j        dk    rt          d¦  «        ‚ˆˆfd„}t          j
        | j        |¦  «         dS )zU
        Trigger a callback function to record where items have been placed.
        zinvalid key 'rü   r   z@callback 'function' must be a callable with exactly one argumentc                ó€  •—  G d„ d¦  «        } |¦   «         }| j         |_         | j        |_        | j        |_        t          | j        ¦  «        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        ‰r+‰ 
                    ¦   «         D ]\  }}t          |||¦  «         Œ ‰|¦  «         d S )Nc                  ó   — e Zd ZdS )ú=Story.element_positions.<locals>.function2.<locals>.Position2N©r/   r0   r1   r-   r*   r)   Ú	Position2r8  yA  s   € € € € € Ø�r*   r:  )r=  ÚheadingrH  rw  r  r   r#  Úrectangle_numÚrect_numrå  rB   Úsetattr)r(  r:  Ú	position2rª  rF   r  ri   s        €€r)   Ú	function2z*Story.element_positions.<locals>.function2xA  sÚ   ø€ ðð ð ð ð ñ ô ð à!˜	™œˆIØ&œnˆIŒOØ (Ô 0ˆIÔØ#œ;ˆIŒLÝ,¨X¬]Ñ;Ô;ˆIŒNØ%œ]ˆIŒNØ#+Ô#6ˆIÔ Ø!)Ô!7ˆIÔØ%œ]ˆIŒNØð .Ø ŸJšJ™LœLð .ð .‘D�A�qÝ˜Y¨¨1Ñ-Ô-Ð-Ð-ØˆH�iÑ Ô Ð Ð Ð r*   N)rÈ   r5   rÕ  rá  ÚisidentifierrÃ   r`  Ú__code__Úco_argcountr�   Úfz_story_positionsrÄ   )r(   ri   r  rª  r@  s    ``  r)   Úelement_positionszStory.element_positionskA  sá   øø€ õ �‰:Œ:�ÐÐØ—Y’Y‘[”[ð ;ð ;�Ý˜Q™œ¥3˜˜¨1¯>ª>Ñ+;Ô+;˜Ý$Ð%9°QÐ%9Ð%9Ð%9Ñ:Ô:Ð:ð 'ð;ð ˆDÝ˜Ñ!Ô!ð 	a XÔ%6Ô%BÀaÒ%GÐ%GÝÐ_Ñ`Ô`Ð`ð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ  	Ô  $¤)¨YÑ7Ô7Ð7Ð7Ð7r*   r   c                ó    — t          |¦  «        }t          j        ¦   «         }t          j        | j        |||¦  «        }|t          |¦  «        fS )z5
        Wrapper for fz_place_story_flags().
        )r  r�   rx  Úfz_place_story_flagsrÄ   rw  )r(   ÚwhererÎ  rY	  r  s        r)   ÚplacezStory.placeŠA  sG   € õ   Ñ'Ô'ˆÝ”‘”ˆÝÔ)¨4¬9°e¸VÀUÑKÔKˆØ•_ fÑ-Ô-Ð-Ð-r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_reset_storyrÄ   r.   s    r)   rn	  zStory.reset“A  s   € ÝÔ˜dœiÑ(Ô(Ð(Ð(Ð(r*   c                ó(  ‡‡— d }dŠd}t          dddd¦  «        }	  |||¦  «        \  }}	}
|dz  }|r‰dz  Š|                      |	¦  «        \  }}‰rˆˆfd„}|                      |¦  «         |rŠ|rK|r$|r |‰||d¦  «         |                     ¦   «          |                     |¦  «        }|r |‰||d¦  «         |                      ||
¦  «         |s$|r |‰||d¦  «         |                     ¦   «          n|                      d |
¦  «         |sd S Œø)Nr   r   c                ó,   •— ‰| _          ‰| ¦  «         d S r,   )r$  )r(  r$  Ú
positionfns    €€r)   Úpositionfn2z Story.write.<locals>.positionfn2£A  s#   ø€ ð )1�HÔ%Ø�J˜xÑ(Ô(Ð(Ð(Ð(r*   )r4  rI  rE  r®
  r©
  r4  )r(   rµ  ÚrectfnrN  Úpagefnr  r=  rY	  r€  r  rî  r  rO  r$  s      `         @r)   r   zStory.write–A  s—  øø€ ØˆØˆØˆÝ�a˜˜A˜qÑ!Ô!ˆð 	Ø"( &¨°6Ñ":Ô":ÑˆH�d˜CØ˜‰MˆHØð à˜A‘�ØŸ:š: tÑ,Ô,‰LˆD�&Øð 4ð)ð )ð )ð )ð )ð )ð
 ×&Ò& {Ñ3Ô3Ð3Øð %Øð ;àð *Ø!ð ?Ø"˜F 8¨X°s¸AÑ>Ô>Ð>ØŸšÑ)Ô)Ð)Ø ×+Ò+¨XÑ6Ô6�CØð ;Ø˜˜x¨°3¸Ñ:Ô:Ð:Ø—	’	˜3 Ñ$Ô$Ð$Øð &Øð <Ø˜ ¨(°C¸Ñ;Ô;Ð;Ø—O’OÑ%Ô%Ð%øà—	’	˜$ Ñ$Ô$Ð$Øð Ø�ðA 	r*   Tc	                ó  ‡‡‡— t          ¦   «         Šd }		 |	}
 |‰¦  «        }	dŠ|	|
k    rdŠ|	}t          ||||¦  «        }|r|                     ¦   «          t          ¦   «         Šˆˆˆfd„}|                     ‰r| nd |||¦  «         ‰rd S Œw)Nr   FTc                óX   •— ‰                      | ¦  «         ‰r‰r ‰| ¦  «         d S d S d S r,   ©rk   )r(  rN  r&  Ústables    €€€r)   rO  z+Story.write_stabilized.<locals>.positionfn2ÏA  sP   ø€ à× Ò  Ñ*Ô*Ð*Øð )˜jð )Ø�J˜xÑ(Ô(Ð(Ð(Ð(ð)ð )ð )ð )r*   )r´   r;  r!  r   )rµ  Ú	contentfnrP  r3  r  rN  rQ  r0  r!  r‡  Úcontent_prevÚcontent2rE  rO  r&  rU  s        `        @@r)   Úwrite_stabilizedzStory.write_stabilized½A  sà   øøø€ å‘F”Fˆ	Øˆð	Ø"ˆLØ�i Ñ+Ô+ˆGØˆFØ˜,Ò&Ð&Ø�ØˆHÝ˜( H¨b°'Ñ:Ô:ˆEàð 'Ø×$Ò$Ñ&Ô&Ð&å™œˆIð)ð )ð )ð )ð )ð )ð )ð
 �KŠKØ$Ð.�F�F¨$ØØØñ	ô ð ð ð Ø�ð3	r*   c                ó&  ‡‡— t          j        ¦   «         }t          |¦  «        }	g Šˆˆfd„}
t                               |	| ||||
|||¦	  «	         |	                     ¦   «          |                     d¦  «         t                               |‰¦  «        S )Nc                óP   •— ‰                      | ¦  «         ‰r ‰| ¦  «         d S d S r,   rT  ©r(  rN  r&  s    €€r)   rO  z6Story.write_stabilized_with_links.<locals>.positionfn2ãA  ó?   ø€ à×Ò˜XÑ&Ô&Ð&Øð %Ø�
˜8Ñ$Ô$Ð$Ð$Ð$ð%ð %r*   r   )r9   ri  r�
  r;  rY  rò  r 	  r,  )rV  rP  r3  r  rN  rQ  r0  r!  r	   rµ  rO  r&  s       `      @r)   Úwrite_stabilized_with_linksz!Story.write_stabilized_with_linksÝA  sœ   øø€ õ ”‘”ˆÝ Ñ'Ô'ˆØˆ	ð	%ð 	%ð 	%ð 	%ð 	%ð 	%õ
 	×Ò˜v y°&¸(ÀBÈÐU[Ð]dÐftÑuÔuÐuØ�Š‰ŒˆØ�Š�A‰ŒˆÝ×"Ò" 6¨9Ñ5Ô5Ð5r*   c                ó  ‡‡— t          j        ¦   «         }t          |¦  «        }g Šˆˆfd„}|                      ||||¬¦  «         |                     ¦   «          |                     d¦  «         t                               |‰¦  «        S )Nc                óP   •— ‰                      | ¦  «         ‰r ‰| ¦  «         d S d S r,   rT  r\  s    €€r)   rO  z+Story.write_with_links.<locals>.positionfn2òA  r]  r*   )rN  rQ  r   )r9   ri  r�
  r   rò  r 	  r;  r,  )r(   rP  rN  rQ  r	   rµ  rO  r&  s     `    @r)   r@  zStory.write_with_linksíA  s�   øø€ å”‘”ˆÝ Ñ'Ô'ˆØˆ	ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
 	�
Š
�6˜6¨kÀ&ˆ
ÑIÔIÐIØ�Š‰ŒˆØ�Š�A‰ŒˆÝ×"Ò" 6¨9Ñ5Ô5Ð5r*   c                  ó    — e Zd ZdZdd„Zd„ ZdS )úStory.FitResulta˜  
        The result from a `Story.fit*()` method.
        
        Members:
        
        `big_enough`:
            `True` if the fit succeeded.
        `filled`:
            Tuple (x0, y0, x1, y1) from the last call to `Story.place()`. This
            will be wider than .rect if any single word (which we never split)
            was too wide for .rect.
        `more`:
            `False` if the fit succeeded.
        `numcalls`:
            Number of calls made to `self.place()`.
        `parameter`:
            The successful parameter value, or the largest failing value.
        `rect`:
            The pumupdf.Rect created from `parameter`.
        Nc                óZ   — || _         || _        || _        || _        || _        || _        d S r,   ©r>  rY	  r  Únumcallsr?  r  )r(   r>  rY	  r  re  r?  r  s          r)   rŒ   zStory.FitResult.__init__B  s0   € Ø(ˆDŒOØ ˆDŒKØˆDŒIØ$ˆDŒMØ&ˆDŒNØˆDŒIˆIˆIr*   c                óf   — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › �S )Nz big_enough=z filled=z more=z
 numcalls=ú parameter=ú rect=rd  r.   s    r)   rþ   zStory.FitResult.__repr__B  sk   € ð) 4¤?ð )ð )Ø#œ{ð)ð )à!œYð)ð )ð "&¤ð)ð )ð #'¤.ð	)ð )ð
 "œYð)ð )ðr*   r@  )r/   r0   r1   rµ  rŒ   rþ   r-   r*   r)   Ú	FitResultrb  üA  sA   € € € € € ð	ð 	ð(	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	r*   ri  r°  Fc                óÈ  ‡ ‡‡‡‡‡‡‡‡— ˆfd„Št          ‰t          t          f¦  «        s‰�J ‚t          ‰t          t          f¦  «        s‰�J ‚ G ˆˆˆfd„d¦  «        } |¦   «         Š‰r ‰d‰j        ›d‰j        ›d�¦  «         ‰                      ¦   «          ˆˆˆˆfd„}ˆˆˆˆ ˆˆfd	„Šd
„ }	‰j        €2‰r ‰d¦  «          |	‰j        d¦  «        }
	  ‰|
¦  «        sn|
dz  }
Œn0 ‰‰j        ¦  «        r ‰r ‰d‰j        ›d�¦  «          |¦   «         S ‰j        €2‰r ‰d¦  «          |	‰j        d¦  «        }
	  ‰|
¦  «        rn|
dz  }
Œn7 ‰‰j        ¦  «        s'd‰_        ‰r ‰d‰j        ›d�¦  «          |¦   «         S ‰r ‰d‰j        ›d‰j        ›d�¦  «         	 ‰j        ‰j        z
  |k     r
 |¦   «         S ‰j        ‰j        z   dz  }
 ‰|
¦  «         Œ;)aÌ  
        Finds optimal rect that contains the story `self`.
        
        Returns a `Story.FitResult` instance.
            
        On success, the last call to `self.place()` will have been with the
        returned rectangle, so `self.draw()` can be used directly.
        
        Args:
        :arg fn:
            A callable taking a floating point `parameter` and returning a
            `pymupdf.Rect()`. If the rect is empty, we assume the story will
            not fit and do not call `self.place()`.

            Must guarantee that `self.place()` behaves monotonically when
            given rect `fn(parameter`) as `parameter` increases. This
            usually means that both width and height increase or stay
            unchanged as `parameter` increases.
        :arg pmin:
            Minimum parameter to consider; `None` for -infinity.
        :arg pmax:
            Maximum parameter to consider; `None` for +infinity.
        :arg delta:
            Maximum error in returned `parameter`.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to mupdf.fz_place_story_flags(). e.g.
            zero or `mupdf.FZ_PLACE_STORY_FLAG_NO_OVERFLOW`.
        c                ó4   •— ‰sJ ‚t          d| › �¦  «         d S )Nzfit(): ©rr   )r   ró	  s    €r)   r'   zStory.fit.<locals>.logBB  s)   ø€ ØˆNˆN�7ÝÐ$˜dÐ$Ð$Ñ%Ô%Ð%Ð%Ð%r*   Nc                  ó   •— e Zd Zˆ ˆˆfd„ZdS )úStory.fit.<locals>.Statec                ó€   •— ‰| _         ‰| _        d | _        d | _        d | _        d| _        ‰r‰| _        ‰| _        d S d S r‡   )ÚpminÚpmaxÚpmin_resultÚpmax_resultr+  re  Úpmin0Úpmax0)r(   rq  rp  ró	  s    €€€r)   rŒ   z!Story.fit.<locals>.State.__init__JB  sS   ø€ Ø �”	Ø �”	Ø#'�Ô Ø#'�Ô Ø"�”Ø !�”Øð &Ø!%�D”JØ!%�D”J�J�Jð&ð &r*   Nr�   )rq  rp  ró	  s   €€€r)   ÚStatern  IB  s8   ø€ € € € € ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&r*   rv  zstarting. state.pmin=ú state.pmax=r   c            
     ó4  •— ‰j         �9‰j        ‰j         k    r!‰r ‰d¦  «          ‰‰j         ¦  «        } | sJ ‚‰j        }n.‰j        r‰j        nt                               ‰j        ¬¦  «        }‰r& ‰d‰j        ›d‰j        ›d‰j         ›d|›�¦  «         |S )NzCCalling update() with pmax, because was overwritten by later calls.)re  zfinished. state.pmin0=z state.pmax0=rw  z: returning result=)	rq  Úlast_prs  rr  r;  ri  re  rt  ru  )r>  r+  r'   rH  r  ró	  s     €€€€r)   rG   zStory.fit.<locals>.ret[B  sÇ   ø€ ØŒzÐ%Ø”< 5¤:Ò-Ð-Øð dØ˜ÐbÑcÔcÐcØ!' ¨¬
Ñ!3Ô!3�JØ%Ð%Ð%˜:ØÔ*��à.3Ô.?Ðm˜Ô*Ð*ÅUÇ_Â_Ð^cÔ^lÀ_ÑEmÔEm�Øð cØ�Ða ¤ÐaÐa°´ÐaÐa¸u¼zÐaÐaÐX^ÐaÐaÑbÔbÐbØˆMr*   c                ó   •—  ‰| ¦  «        }t          |t          ¦  «        sJ dt          |¦  «        ›d|›�¦   «         ‚|j        r1d}t                               | ‰
j        ¬¦  «        }‰r ‰d¦  «         nq‰	                     |‰¦  «        \  }}‰
xj        dz  c_        | }t                               ||‰
j        | ||¬¦  «        }‰r ‰d‰
j        d	›d
|›d| ›d|›d�	¦  «         |r| ‰
_        |‰
_	        n| ‰
_
        |‰
_        | ‰
_        |S )a  
            Evaluates `more, _ = self.place(fn(parameter))`. If `more` is
            false, then `rect` is big enough to contain `self` and we
            set `state.pmax=parameter` and return True. Otherwise we set
            `state.pmin=parameter` and return False.
            ztype(rect)=rh  F)r?  re  z9update(): not calling self.place() because rect is empty.r   )rY	  r  re  r?  r  r>  zupdate(): called self.place(): z>2dz: more=rg  r   )r>   r4  rÈ   rd	  r;  ri  re  rI  rq  rs  rp  rr  ry  )r?  r  r>  r+  r  rY	  rÎ  Úfnr'   r(   rH  ró	  s         €€€€€€r)   r  zStory.fit.<locals>.updateiB  s`  ø€ ð �2�i‘=”=ˆDÝ˜d¥DÑ)Ô)ÐCÐCÐ+C­d°4©j¬jÐ+CÐ+C¸DÐ+CÐ+CÑCÔCÐ)ØŒ}ð oØ"�
ÝŸš°9ÀuÄ~˜ÑVÔV�Øð VØ�CÐTÑUÔUÐUøà#Ÿzšz¨$°Ñ6Ô6‘��fØ�” !Ñ#�”Ø!%˜X�
ÝŸšØ%Ø!Ø!&¤Ø"+Ø!Ø#-ð )ñ ô �ð ð oØ�CÐm¸%¼.ÐmÐmÐmÐPTÐmÐmÐXaÐmÐmÐeiÐmÐmÐmÑnÔnÐnØð +Ø&�”
Ø$*�Ô!Ð!à&�”
Ø$*�Ô!Ø$ˆEŒLØÐr*   c                ó8   — | �| dk    r|S || z  dk    rd| z  S |  S )z•
            Returns same sign as `direction`, larger or smaller than `p` if
            direction is positive or negative respectively.
            Nr   r   r-   )r²  Ú	directions     r)   ÚoppositezStory.fit.<locals>.oppositeŽB  s6   € ð
 ˆy˜A˜qšD˜DØ Ð Ø˜1‰}˜qÒ Ð Ø˜1‘u�Ø�2ˆIr*   zfinding pmin.rA  r   r   zstate.pmin=z is big enough.zfinding pmax.z No solution possible state.pmax=z$doing binary search with state.pmin=)r>   r4   r~  rp  rq  rn	  )r(   r{  rp  rq  r  ró	  rÎ  rv  rG   r~  r?  r'   rH  r  s   ```` ``    @@@r)   r7  z	Story.fit#B  s  øøøøøøøøø€ ð>	&ð 	&ð 	&ð 	&ð 	&õ ˜$¥¥e Ñ-Ô-Ð=°°°Ð=Ý˜$¥¥e Ñ-Ô-Ð=°°°Ð=ð
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ñ 
	&ô 
	&ð 
	&ð �‘”ˆàð 	;ØˆCÐ9˜UœZÐ9Ð9¨5¬:Ð9Ð9Ð9Ñ:Ô:Ð:à�
Š
‰Œˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð#	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ðJ		ð 		ð 		ð Œ:ÐàÐ-˜˜Ð,Ñ-Ô-Ð-Ø ˜ ¤¨RÑ0Ô0ˆIðØ�v˜iÑ(Ô(ð ØØ˜Q‘�	ðàð ˆv�e”jÑ!Ô!ð ØÐ@˜C˜CÐ ? 5¤:Ð ?Ð ?Ð ?Ñ@Ô@Ð@Ø�s‘u”u�àŒ:ÐàÐ-˜˜Ð,Ñ-Ô-Ð-Ø ˜ ¤¨RÑ0Ô0ˆIðØ�6˜)Ñ$Ô$ð ØØ˜Q‘�	ðàð �6˜%œ*Ñ%Ô%ð à!�”
ØÐG˜C˜CÐ F¸¼
Ð FÐ FÐ FÑGÔGÐGØ�s‘u”u�ð ÐQ�C�CÐP°E´JÐPÐPÀ%Ä*ÐPÐPÐPÑQÔQÐQð	ØŒz˜EœJÑ&¨Ò.Ð.Ø�s‘u”u�Øœ e¤jÑ0°AÑ5ˆIØˆF�9ÑÔÐð		r*   c                óp   ‡
‡‡‡— |\  ŠŠ}}|‰z
  Š|‰z
  Š
ˆ
ˆˆˆfd„}	|                       |	|||||¦  «        S )aÉ  
        Finds smallest value `scale` in range `scale_min..scale_max` where
        `scale * rect` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance with `.parameter` set to `scale`.

        :arg width:
            width of rect.
        :arg height:
            height of rect.
        :arg scale_min:
            Minimum scale to consider; must be >= 0.
        :arg scale_max:
            Maximum scale to consider, must be >= scale_min or `None` for
            infinite.
        :arg delta:
            Maximum error in returned scale.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to Story.place().
        c                ó@   •— t          ‰‰‰| ‰z  z   ‰| ‰z  z   ¦  «        S r,   r�  )rµ  rà  rl  r  r  s    €€€€r)   r{  zStory.fit_scale.<locals>.fn×B  s)   ø€ Ý˜˜B  U¨5¡[Ñ 0°"°u¸V±|Ñ2CÑDÔDÐDr*   ©r7  )r(   r  r4  r5  r  ró	  rÎ  r  r  r{  rà  rl  r  r  s             @@@@r)   r<  zStory.fit_scale½B  ss   øøøø€ ð. ‰ˆˆB��BØ�R‘ˆØ�b‘ˆð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eà�xŠx˜˜I y°%¸À%ÑHÔHÐHr*   rß  c                ó\   ‡‡	‡
— |\  ŠŠ
‰|z   Š	ˆˆ	ˆ
fd„}|                       |||||¦  «        S )a�  
        Finds smallest height in range `height_min..height_max` where a rect
        with size `(width, height)` is large enough to contain the story
        `self`.

        Returns a `Story.FitResult` instance.

        :arg width:
            width of rect.
        :arg height_min:
            Minimum height to consider; must be >= 0.
        :arg height_max:
            Maximum height to consider, must be >= height_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned height.
        :arg verbose:
            If true we output diagnostics.
        c                ó.   •— t          ‰‰‰‰| z   ¦  «        S r,   r�  )rà  r  r  r  s    €€€r)   r{  zStory.fit_height.<locals>.fnóB  s   ø€ Ý˜˜B  B v¡IÑ.Ô.Ð.r*   r�  )r(   rl  Ú
height_minÚ
height_maxÚoriginr  ró	  r{  r  r  r  s           @@@r)   Ú
fit_heightzStory.fit_heightÛB  sV   øøø€ ð, ‰ˆˆBØ�%‰Zˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/à�xŠx˜˜J¨
°E¸7ÑCÔCÐCr*   c                ó\   ‡‡	‡
— |\  ŠŠ	‰	|z   Š
ˆˆ	ˆ
fd„}|                       |||||¦  «        S )a©  
        Finds smallest width in range `width_min..width_max` where a rect with size
        `(width, height)` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance.
        Returns a `FitResult` instance.

        :arg height:
            height of rect.
        :arg width_min:
            Minimum width to consider; must be >= 0.
        :arg width_max:
            Maximum width to consider, must be >= width_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned width.
        :arg verbose:
            If true we output diagnostics.
        c                ó.   •— t          ‰‰‰| z   ‰¦  «        S r,   r�  )rl  r  r  r  s    €€€r)   r{  zStory.fit_width.<locals>.fnC  s   ø€ Ý˜˜B  5¡¨"Ñ-Ô-Ð-r*   r�  )r(   rà  Ú	width_minÚ	width_maxr†  r  ró	  r{  r  r  r  s           @@@r)   Ú	fit_widthzStory.fit_width÷B  sV   øøø€ ð, ‰ˆˆBØ�&‰[ˆð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.à�xŠx˜˜I y°%¸ÑAÔAÐAr*   )r\   NrÜ  Nr,   r=  rø	  )NrÜ  NNNT)NNr°  Fr   )r   Nr°  Fr   )r   Nrß  r°  F)r/   r0   r1   rŒ   r!  r›  r,  rB  r•  rÉ   r4  rE  rI  rn	  r   rY  r^  r@  ri  r7  r<  r‡  rŒ  r-   r*   r)   r;  r;  é@  sÄ  € € € € € ðDð Dð Dð Dð.ð .ð .ð& ðRð Rñ „\ðRðh ðð ñ „Xððð ð ð3ð 3ð 3ð 3ð
8ð 8ð 8ð 8ð>.ð .ð .ð .ð)ð )ð )ð%ð %ð %ð %ðN ðð ð ñ „\ðð> ð6ð 6ð 6ñ „\ð6ð6ð 6ð 6ð 6ð%ð %ð %ð %ð %ñ %ô %ð %ðNXð Xð Xð XðtIð Ið Ið Ið<Dð Dð Dð Dð8Bð Bð Bð Bð Bð Br*   r;  c                  ó¼   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zddd
„Zdd„Z	d d„Z
ddd„Zddd„Zddd„Zd„ Zddd„Zd„ Zd!d„Zdd„Zdd„Zd„ Zed„ ¦   «         Zd"d„ZeZdS )#r  c                ó  — t          |t          j        ¦  «        r"|d         }t          j        |¦  «        | _        n:t          |t          j        ¦  «        r|d         | _        nt          d|› �¦  «        ‚d| _        d | _        d S )Nr   úUnrecognised args: T)r¹  r�   rx  r  rÄ   rg   r  rû   )r(   r  r€  s      r)   rŒ   zTextPage.__init__C  s~   € Ý�d�EœLÑ)Ô)ð 	:Ø˜A”wˆHÝÔ)¨8Ñ4Ô4ˆDŒIˆIÝ˜�eÔ/Ñ0Ô0ð 	:Ø˜QœˆDŒIˆIåÐ8°$Ð8Ð8Ñ9Ô9Ð9ØˆŒØˆŒˆˆr*   c                óx  — | j         }t          j        d¦  «        }t          j        |¦  «        }|dk    rt          j        ||d¦  «         nJ|dk    rt          j        ||d¦  «         n-|dk    rt          j        ||d¦  «         nt          ||¦  «         |                     ¦   «          t          |¦  «        }|S )Nr	  r   r   r   rZ  )
rÄ   r�   rî  rï  Úfz_print_stext_page_as_htmlÚfz_print_stext_page_as_xmlÚfz_print_stext_page_as_xhtmlÚJM_print_stext_page_as_textr'  r€
  )r(   rü  Ú
this_tpager/  r(  r   s         r)   Ú_extractTextzTextPage._extractText!C  sÁ   € Ø”Yˆ
ÝÔ! $Ñ'Ô'ˆÝŒn˜cÑ"Ô"ˆð �aŠ<ˆ<ÝÔ-¨c°:¸qÑAÔAÐAÐAØ˜Š\ˆ\ÝÔ,¨S°*¸aÑ@Ô@Ð@Ð@Ø˜Š\ˆ\ÝÔ.¨s°JÀÑBÔBÐBÐBå'¨¨ZÑ8Ô8Ð8Ø×ÒÑÔÐÝ% cÑ*Ô*ˆØˆr*   c                ó2   — t          | j        ||¦  «         d S r,   )ÚJM_make_textpage_dictrÄ   )r(   Ú	page_dictr»  s      r)   Ú_getNewBlockListzTextPage._getNewBlockList6C  s   € Ý˜dœi¨°CÑ8Ô8Ð8Ð8Ð8r*   Fc                ód   — | j         j        | j         j        dœ}|                      ||¦  «         |S )Nrw  )r  rl  rà  rš  )r(   r»  r™  s      r)   Ú_textpage_dictzTextPage._textpage_dict9C  s4   € Ø"œiœo¸¼Ô9IÐJÐJˆ	Ø×Ò˜i¨Ñ-Ô-Ð-ØÐr*   c                ó6   — 	 t          j        | j        ¦  «        S )z*Return a list with text block information.)"r'  r   ÚextractBLOCKSrÄ   r�   rx  rÌ   r€  rî  ÚFixed_EMPTYrÈ   ÚFZ_STEXT_BLOCK_TEXTÚfz_clear_bufferÚJM_char_bboxÚJM_rects_overlapr¾  ÚJM_append_runerË  Úfz_union_rectr½  Úfz_append_byter€
  r?  Úi_imagerë  r¯  r   rÑ  r,  r  r  r  r  rk   )r(   Úblock_nr•  Útp_rectr/  rÿ  rg	  Ú	blockrectÚline_nÚ	last_charro   Úlinerectr	  Úcbboxr   rß  rï  Úlitems                     r)   rž  zTextPage.extractBLOCKS>C  s   € ð	2ÝÔ& t¤yÑ1Ô1Ð1r*   NrÚ  r5   c                óª   — |                       d¬¦  «        }|�|j        |d<   |j        |d<   |r$|d         }|                     d„ ¬¦  «         ||d<   |S )	z>Return page content as a Python dict of images and text spans.F©r»  Nrl  rà  r_	  c                ó:   — | d         d         | d         d         fS ©Nr?  r   r   r-   ©rÜ
  s    r)   r¸	  z&TextPage.extractDICT.<locals>.<lambda>zC  ó   €  q¨¤y°¤|°Q°v´Y¸q´\Ð&B€ r*   rÚ	  ©rœ  rl  rà  rã  ©r(   rø  rã  r"  r_	  s        r)   ÚextractDICTzTextPage.extractDICTrC  sj   € à×!Ò! eÐ!Ñ,Ô,ˆØˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØˆ
r*   rá  c                ó,   — |                       d¦  «        S )z%Return page content as a HTML string.r   ©r–  r.   s    r)   ÚextractHTMLzTextPage.extractHTML~C  rM  r*   r   c           	     ó<  — d}| j         }g }|D �]}|dz  }|j        j        t          j        k    rŒ#|                     ¦   «         }d}|                     ¦   «         }|j        rd}	nd}	t          j        |¦  «        }
|
j        r|
                     ¦   «         }d}
|rÿt          j	        t          t          t          t          ¦  «        }t          j        |¦  «        sJ ‚t          j        |                     ¦   «         dd|                     ¦   «         dd¦  «        }t          j        |||¦  «        \  }}}t          j        |¦  «        }t%          |¦  «        }|dk    r>|                     ¦   «         |                     ¦   «         z  |                     ¦   «         z  }t          j        t          j        |j        j        ¦  «        ¦  «        }t/          ¦   «         }||t0          <   t3          |j        j        ¦  «        |t6          <   t9          |                     ¦   «         ¦  «        |t<          <   |                     ¦   «         |t>          <   |                     ¦   «         |t@          <   t          j!        |¦  «        |tD          <   t          j#        |¦  «        |tH          <   | %                    ¦   «         |tL          <   | '                    ¦   «         |tP          <   | )                    ¦   «         |tT          <   ||tV          <   |r||d<   |	|d<   | ,                    |¦  «         �Œ|S )	z*Return a list with image meta information.rA  r   r   TFNrD  zhas-mask)-rÄ   rÌ   rÈ   r�   r   r§  rG  r+  Úfz_compressed_buffer_sizerÃ  rÙ  rÚ  r¼  r‚  r   rÑ  rØ  r!  r)  rE   r¢  Úll_fz_keep_colorspacerë  r5   Údictkey_numberrw  r?  rc	  r�  Úi_transformÚdictkey_matrixÚdictkey_widthÚdictkey_heightr²  Údictkey_colorspacer¯  r  rJ  Údictkey_xresrK  Údictkey_yresr,  Údictkey_bpcrÆ  rk   )r(   r€  r¨  r•  r    rg	  rß  Úimg_sizerG  Úhas_maskÚ
compr_buffr.  r�  rð  r   rÑ  rD  rï  Ú
block_dicts                      r)   r…  zTextPage.extractIMGINFO‚C  s™  € àˆØ”Yˆ
ØˆØð (	"ñ (	"ˆEØ�q‰LˆGØÔÔ$­Ô(AÒAÐAØØ—-’-‘/”/ˆCØˆHØ—8’8‘:”:ˆDØŒð !Ø��à �ÝÔ9¸#Ñ>Ô>ˆJØÔ$ð "Ø%×?Ò?ÑAÔA�Ø!�
Øð ;Ý”M¥/µ?ÅOÕUdÑeÔe�ÝÔ1°!Ñ4Ô4Ð4Ð4Ð4Ý”N 3§5¢5¡7¤7¨A¨q°#·%²%±'´'¸1¸aÑ@Ô@�Ý!Ô:¸3ÀÀ1ÑEÔE‘	��Q˜ÝÔ-¨cÑ2Ô2�Ý˜v™œ�Ø˜q’=�=Ø"Ÿušu™wœw¨¯ª©¬Ñ0°3·5²5±7´7Ñ:�HÝÔ#¥EÔ$?ÀÄÔ@YÑ$ZÔ$ZÑ[Ô[ˆBÝ™œˆJØ)0ˆJ•~Ñ&Ý'6°uÔ7GÔ7LÑ'MÔ'MˆJ•|Ñ$Ý):¸5×;LÒ;LÑ;NÔ;NÑ)OÔ)OˆJ•~Ñ&Ø(+¯ª©¬ˆJ•}Ñ%Ø),¯ª©¬ˆJ•~Ñ&Ý-2Ô-BÀ2Ñ-FÔ-FˆJÕ)Ñ*Ý*/Ô*BÀ2Ñ*FÔ*FˆJ•Ñ'Ø'*§x¢x¡z¤zˆJ•|Ñ$Ø'*§x¢x¡z¤zˆJ•|Ñ$Ø&)§g¢g¡i¤iˆJ•{Ñ#Ø'/ˆJ•|Ñ$Øð .Ø'-�
˜8Ñ$Ø%-ˆJ�zÑ"Ø�IŠI�jÑ!Ô!Ð!Ñ!Øˆ	r*   c                ó  ‡— ddl Šddl}|                      d¬¦  «        } G ˆfd„d|j        ¦  «        }|�|j        |d<   |j        |d<   |r$|d	         }|                     d
„ ¬¦  «         ||d	<   |                     |d|d¬¦  «        }|S )z.Return 'extractDICT' converted to JSON format.r   NFr±  c                  ó   •— e Zd Zˆ fd„ZdS )ú'TextPage.extractJSON.<locals>.b64encodec                ó�   •— t          |¦  «        t          t          fv r'‰                     |¦  «                             ¦   «         S d S r,   ©rÈ   r)  rh  Ú	b64encoderü  ©r(   r�  Úbase64s     €r)   r   z/TextPage.extractJSON.<locals>.b64encode.default¹C  óA   ø€ Ý˜‘7”7�u¥iÐ0Ð0Ð0Ø!×+Ò+¨AÑ.Ô.×5Ò5Ñ7Ô7Ð7ð 1Ð0r*   N©r/   r0   r1   r   ©rÓ  s   €r)   rÑ  rÎ  ¸C  ó.   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð 8ð 8r*   rÑ  rl  rà  r_	  c                ó:   — | d         d         | d         d         fS r³  r-   r´  s    r)   r¸	  z&TextPage.extractJSON.<locals>.<lambda>ÂC  rµ  r*   rÚ	  ©r   r_   r   ©Ú
separatorsr¼  r„  ©rÓ  r‡  rœ  ÚJSONEncoderrl  rà  rã  Údumps©r(   rø  rã  r‡  r"  rÑ  r_	  rÓ  s          @r)   ÚextractJSONzTextPage.extractJSON²C  sÏ   ø€ àˆˆˆØˆˆˆØ×!Ò! eÐ!Ñ,Ô,ˆð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8˜Ô(ñ 	8ô 	8ð 	8ð
 ˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰Mà�jŠj˜¨¸È1ˆjÑMÔMˆØˆ
r*   c                óª   — |                       d¬¦  «        }|�|j        |d<   |j        |d<   |r$|d         }|                     d„ ¬¦  «         ||d<   |S )	zCReturn page content as a Python dict of images and text characters.Tr±  Nrl  rà  r_	  c                ó:   — | d         d         | d         d         fS r³  r-   r´  s    r)   r¸	  z)TextPage.extractRAWDICT.<locals>.<lambda>ÐC  rµ  r*   rÚ	  r¶  r·  s        r)   ÚextractRAWDICTzTextPage.extractRAWDICTÈC  sj   € à×!Ò! dÐ!Ñ+Ô+ˆØˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØˆ
r*   c                ó  ‡— ddl Šddl}|                      d¬¦  «        } G ˆfd„d|j        ¦  «        }|�|j        |d<   |j        |d<   |r$|d	         }|                     d
„ ¬¦  «         ||d	<   |                     |d|d¬¦  «        }|S )z1Return 'extractRAWDICT' converted to JSON format.r   NTr±  c                  ó   •— e Zd Zˆ fd„ZdS )ú*TextPage.extractRAWJSON.<locals>.b64encodec                ó�   •— t          |¦  «        t          t          fv r'‰                     |¦  «                             ¦   «         S d S r,   rÐ  rÒ  s     €r)   r   z2TextPage.extractRAWJSON.<locals>.b64encode.defaultÛC  rÔ  r*   NrÕ  rÖ  s   €r)   rÑ  ræ  ÚC  r×  r*   rÑ  rl  rà  r_	  c                ó:   — | d         d         | d         d         fS r³  r-   r´  s    r)   r¸	  z)TextPage.extractRAWJSON.<locals>.<lambda>äC  rµ  r*   rÚ	  rÙ  r   rÚ  rÜ  rß  s          @r)   ÚextractRAWJSONzTextPage.extractRAWJSONÔC  sÏ   ø€ àˆˆˆØˆˆˆØ×!Ò! dÐ!Ñ+Ô+ˆð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8˜Ô(ñ 	8ô 	8ð 	8ð
 ˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØ�jŠj˜¨¸È1ˆjÑMÔMˆØˆ
r*   c                óz   — t          |¦  «        }t          |¦  «        }t          j        | j        ||d¦  «        }|S r‡   )rk  r�   Úfz_copy_selectionrÄ   )r(   ÚpointaÚpointbr!   rÜ
  r°  s         r)   ÚextractSelectionzTextPage.extractSelectionéC  s9   € Ý˜VÑ$Ô$ˆÝ˜VÑ$Ô$ˆÝÔ'¨¬	°1°a¸Ñ;Ô;ˆØˆr*   c                óÔ   — |s|                       d¦  «        S |                      ¦   «         dd…         }|                     d„ ¬¦  «         d                     d„ |D ¦   «         ¦  «        S )z%Return simple, bare text on the page.r   Nc                ó"   — | d         | d         fS )Nr   r   r-   r´  s    r)   r¸	  z&TextPage.extractText.<locals>.<lambda>ôC  s   €  1 Q¤4¨¨1¬ ,€ r*   rÚ	  r\   c                ó   — g | ]
}|d          ‘ŒS rQ  r-   )r­   rÜ
  s     r)   r¯   z(TextPage.extractText.<locals>.<listcomp>õC  s   € Ð-Ð-Ð- ˜˜!œÐ-Ð-Ð-r*   )r–  rž  rã  rê  )r(   rã  r_	  s      r)   ÚextractTextzTextPage.extractTextïC  sq   € àð 	(Ø×$Ò$ QÑ'Ô'Ð'Ø×#Ò#Ñ%Ô% a a aÔ(ˆØ�ŠÐ.Ð.ˆÑ/Ô/Ð/Ø�wŠwÐ-Ð- fÐ-Ñ-Ô-Ñ.Ô.Ð.r*   c                ó¨   — | j         }t          |t          j        ¦  «        sJ ‚t	          |¦  «        }t          ||¦  «        }t          |¦  «        }|S r,   )rÄ   r>   r�   r  r  ÚJM_copy_rectangleÚ PyUnicode_DecodeRawUnicodeEscape)r(   r  r•  r×  r°  r    s         r)   r  zTextPage.extractTextbox÷C  sP   € Ø”Yˆ
Ý˜*¥eÔ&7Ñ8Ô8Ð8Ð8Ð8Ý˜tÑ$Ô$ˆÝ! *¨dÑ3Ô3ˆÝ-¨eÑ4Ô4ˆØˆ	r*   c                ó8   — 	 t          j        | j        |¦  «        S )z)Return a list with text word information.)r'  r   ÚextractWORDSrÄ   r�   rx  rŸ  rÌ   r€  rî  rÈ   r   r¡  r¢  r£  r¾  rË  ÚJM_is_word_delimiterÚJM_is_rtl_charr½  ÚJM_append_wordr¤  r¥  )r(   Ú
delimitersÚbuflenÚlast_char_rtlr¨  Úwbboxr•  r©  rÿ  rY  rg	  r«  ro   Úword_nr	  r®  Úword_delimiterÚthis_char_rtls                     r)   r÷  zTextPage.extractWORDSÿC  s   € ð	=ÝÔ% d¤i°Ñ<Ô<Ð<r*   c                ó,   — |                       d¦  «        S )z&Return page content as a XHTML string.rZ  rº  r.   s    r)   ÚextractXHTMLzTextPage.extractXHTML7D  rM  r*   c                ó,   — |                       d¦  «        S )z$Return page content as a XML string.r   rº  r.   s    r)   Ú
extractXMLzTextPage.extractXML;D  rM  r*   c                ó†   — | j         }t          j        |j        j        ¦  «        }t          j        |¦  «        }d|_        |S )zTextPage current poolsize.N)rÄ   r�   ÚPoolrÌ   ÚpoolÚfz_pool_size)r(   r  r  rÈ  s       r)   ÚpoolsizezTextPage.poolsize?D  s:   € à”	ˆÝŒz˜%Ô*Ô/Ñ0Ô0ˆÝÔ! 4Ñ(Ô(ˆØˆŒØˆr*   c                óh   — | j         }|j        j        }t          |¦  «        }t	          |¦  «        }|S )zPage rectangle.)rÄ   rÌ   r€  rw  r4  )r(   r•  r€  r"  s       r)   r  zTextPage.rectGD  s3   € ð ”Yˆ
ØÔ(Ô1ˆÝ˜hÑ'Ô'ˆÝ�3‰iŒiˆàˆ
r*   r   c                ó„  — t          | j        |¦  «        }|s|S t          |¦  «        }t          |¦  «        D ])}t	          ||         ¦  «        }|r|||<   Œ|j        ||<   Œ*|r|S d}||dz
  k     rO||         }||dz            }	|j        |	j        k    s
||	z  j        r|dz  }Œ<||	z  ||<   ||dz   = |dz  }||dz
  k     °O|S )z)Locate 'needle' returning rects or quads.r   r   )ÚJM_search_stext_pagerÄ   r7   r\  r<  r  r  rd	  )
r(   ÚneedleÚhit_maxrv	  r"  rB   r®   r›  Úv1Úv2s
             r)   r„  zTextPage.searchQD  sÿ   € å" 4¤9¨fÑ5Ô5ˆØð 	ØˆJÝ�C‘”ˆÝ�u‘”ð 	 ð 	 ˆAÝ�S˜”V‘”ˆAØð  Ø��A‘�àœ��A‘�Øð 	ØˆJØˆØ�%˜!‘)ŠmˆmØ�Q”ˆBØ�Q˜‘U”ˆBØŒu˜œŠ~ˆ~ " r¡'Ô!3ˆ~Ø�Q‘�ØØ˜"‘WˆC�‰FØ�A˜‘E�
Ø�Q‰JˆEð �%˜!‘)Šmˆmð ˆ
r*   rÐ  rÉ  r”
  r�
  r=  r,   )r   r   )r/   r0   r1   rŒ   r–  rš  rœ  rž  r¸  r»  r…  rà  rã  ré  rî  rò  r  r÷  r  r  r
  rB  r  r„  ÚextractTEXTr-   r*   r)   r  r  C  s¥  € € € € € ð	ð 	ð 	ðð ð ð*9ð 9ð 9ðð ð ð ð
2ð 2ð 2ðh
ð 
ð 
ð 
ð 
ð$ð $ð $ð $ð.ð .ð .ð .ð`ð ð ð ð ð,
ð 
ð 
ð 
ð 
ðð ð ð ð ð*ð ð ð/ð /ð /ð /ð /ðð ð ð6ð 6ð 6ð 6ðp$ð $ð $ð $ð$ð $ð $ð $ðð ð ð ðð ñ „Xððð ð ð ð4 €K€K€Kr*   r  c                  ód   — e Zd Zd$d„Zed„ ¦   «         Zd%d„Zd&d	„Zd
„ Z	 	 	 	 	 	 	 	 d'd(d!„Z	d)d#„Z
dS )*r°  r   Nc                óŠ  — t          j        ¦   «         | _        || _        || _        t          |¦  «        | _        t          ddddd| j        j        ¦  «        | _	        | j	         | _
        t          ¦   «         | _        d| j        _        t          ¦   «         | _        d| j        _        t          ¦   «         | _        d| _        dS )z;Stores text spans for later output on compatible PDF pages.r   r   rA  z'Position following last text insertion.zAccumulated area of text spans.TN)r�   Úfz_new_textrÄ   rf  r  r4  r  r…  rà  rî  r‹  rú  rb  rµ  r²  râ  Ú
used_fontsr  )r(   rû  rf  r  s       r)   rŒ   zTextWriter.__init__pD  s–   € åÔ%Ñ'Ô'ˆŒ	àˆŒØˆŒ
Ý˜‘O”OˆŒ	Ý˜!˜Q  2 q¨$¬)Ô*:Ñ;Ô;ˆŒØ”X�IˆŒ	Ý™'œ'ˆŒØ"KˆŒÔÝ™œˆŒà!BˆŒÔÝ™%œ%ˆŒØˆŒˆˆr*   c                óº   — t          t          j        | j        t          j        d ¦  «        t          j        ¦   «         ¦  «        ¦  «        }t          |¦  «        }|S r,   )rw  r�   Úfz_bound_textrÄ   ÚFzStrokeStater‚  r4  rZ  s     r)   Ú_bboxzTextWriter._bbox�D  sF   € å�uÔ2°D´I½uÔ?RÐSWÑ?XÔ?XÕZ_ÔZhÑZjÔZjÑkÔkÑlÔlˆÝ�3‰iŒiˆØˆ
r*   r  r   c           
     ó8  — t          |¦  «        | j        z  }|€t          d¦  «        }|j        s	 t'          d|j        › d�¦  «        ‚|r9|                      |¦  «        }d                     t-          |¦  «        ¦  «        }d}t/          j        |¦  «        }	t3          |¦  «        }
t/          j        |dd||
j        |
j        ¦  «        }d}d}|dk    r&t/          j        | j        |j        ||||||	¦  «        }n t=          | j        |j        ||||||	¦  «        }t?          |¦  «        }t          |dd…         ¦  «        | j         z  | _!        | j"        | j         z  | _#        | j#        | j!        f}|j$        d         dk    r| j%         &                    |¦  «         |S )z8Store 'text' at point 'pos' using 'font' and 'fontsize'.NrÞ  r   zfont.this.m_internal.name=zfont.this.m_internal.t3matrix=zfont.this.m_internal.bbox=z!font.this.m_internal.glyph_count=z$font.this.m_internal.use_glyph_bbox=z!font.this.m_internal.width_count=z#font.this.m_internal.width_default=z font.this.m_internal.has_digest=zUnsupported font font.name=zAUnsupported font cppyy.gbl.mupdf_font_name(font.this.m_internal)=zUnsupported font 'rk  r\   ræ  rÝ
  r   )'rú  r‹  r=  r  r'   rÄ   rÌ   r   Út3matrixr?  r
  Úuse_glyph_bboxÚwidth_countÚwidth_defaultÚ
has_digestrœ   r  r  Úmupdf_font_namerÃ   Ú	clean_rtlrê  ræ  r�   rŸ  rk  Úfz_make_matrixr4  r5  Úfz_show_stringÚJM_show_string_csr�  rî  rb  r  r²  rÎ  r  rH  )r(   ru  r   rb  r
  r:  Úright_to_leftrÔ
  r  r9  r²  ÚtrmÚ
markup_dirrÓ
  r"  s                  r)   rk   zTextWriter.append‡D  s“  € å�C‰jŒj˜4œ9Ñ$ˆàˆ<Ý˜‘<”<ˆDØÔð 	Aðaõ Ð?°$´)Ð?Ð?Ð?Ñ@Ô@Ð@Øð 	Ø—>’> $Ñ'Ô'ˆDØ—7’7�8 D™>œ>Ñ*Ô*ˆDØˆMåÔ1°(Ñ;Ô;ˆÝ˜SÑ!Ô!ˆÝÔ" 8¨Q°°8¸Q¼SÀ!Ä#ÑFÔFˆØˆ
ØˆØ˜Š?ˆ?ÝÔ&¨¬	°4´9¸cÀ4ÈÐP]Ð_iÐkoÑpÔpˆCˆCå# T¤Y°´	¸3ÀÀeÈ]Ð\fÐhlÑmÔmˆCÝ Ñ$Ô$ˆå  B C C¤™/œ/¨D¬HÑ4ˆŒØœ d¤hÑ.ˆŒØŒn˜dœoÐ-ˆØŒ:�fÔ Ò"Ð"ØŒO×Ò Ñ%Ô%Ð%Øˆ
r*   Fc           	     óˆ   — |dz  }|D ]-}|                       ||||||¬¦  «         |xj        |z  c_        Œ.| j        | j        fS )NrÉ  )rb  r
  r:  rÔ
  )rk   r5  r²  rb  )	r(   ru  r   rb  r
  r:  rÔ
  rã  rË  s	            r)   ÚappendvzTextWriter.appendv³D  sc   € Ø˜S‘.ˆØð 	ð 	ˆAØ�KŠK˜˜Q T°HØ!¨jð ñ :ô :ð :àˆEŒE�WÑˆEŒEˆEØŒ~˜tœÐ.Ð.r*   c                óF  — |s|S |                      d¦  «        }g }t          t          |¦  «        ¦  «        D ]t}||         }t          |¦  «        dk     sWt          d„ |D ¦   «         ¦  «        dk    s:d                     t          |¦  «        ¦  «        ||<   |                     |¦  «         Œug }t          t          |¦  «        ¦  «        D ]À}|g k    r|                     ||         ¦  «         Œ$||         |d         dz   k    rWt          |¦  «        dk    r:t          ||d         |d         dz   …         ¦  «        ||d         |d         dz   …<   ||         g}Œ�||         |d         dz   k    r|                     ||         ¦  «         ŒÁd                     |¦  «        }|S )	a)  Revert the sequence of Latin text parts.

        Text with right-to-left writing direction (Arabic, Hebrew) often
        contains Latin parts, which are written in left-to-right: numbers, names,
        etc. For output as PDF text we need *everything* in right-to-left.
        E.g. an input like "<arabic> ABCDE FG HIJ <arabic> KL <arabic>" will be
        converted to "<arabic> JIH GF EDCBA <arabic> LK <arabic>". The Arabic
        parts remain untouched.

        Args:
            text: str
        Returns:
            Massaged string.
        r³   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rÊ  rR  s     r)   r¯   z(TextWriter.clean_rtl.<locals>.<listcomp>ÒD  s   € Ð&9Ð&9Ð&9°!¥s¨1¡v¤vÐ&9Ð&9Ð&9r*   r
  r\   rA  r   r   )r6   r\  r7   rø  rê  ræ  rk   )r(   r   ÚwordsrC  r®   r   Úidx2s          r)   r"  zTextWriter.clean_rtl»D  sŸ  € ð ð 	ØˆKà—
’
˜3‘”ˆØˆÝ•s˜5‘z”zÑ"Ô"ð 	ð 	ˆAØ�a”ˆAå˜‘F”F˜Q’J�J¥#Ð&9Ð&9°qÐ&9Ñ&9Ô&9Ñ":Ô":¸SÒ"@Ð"@ØŸ7š7¥8¨A¡;¤;Ñ/Ô/��a‘Ø—
’
˜1‘”�øð ˆÝ•s˜3‘x”x‘”ð 	$ð 	$ˆAØ�rŠzˆzØ—’˜C œFÑ#Ô#Ð#Ð#à�Q”˜$˜rœ( Q™,Ò&Ð&Ý�t‘9”9˜q’=�=Ý4<Ø˜d 1œg¨¨R¬°1©Ð4Ô5ñ5ô 5�E˜$˜qœ' D¨¤H¨q¡LÐ0Ñ1ð ˜Aœ�x��à�Q”˜4 œ8 a™<Ò'Ð'Ø—’˜C œFÑ#Ô#Ð#øà�xŠx˜‰ŒˆØˆr*   rµ  ú'TextWriter'r  r¼   r   r\  ru  rº   rb  útyping.Optional[Font]r
  r~  rv  rÎ  r!  r4   Úwarnrø   r&  rÔ
  rÚ  rµ   c                ó|	  ‡ ‡‡‡
‡%‡&‡'‡(— t          |¦  «        }|j        rt          d¦  «        ‚t          ‰¦  «        t          urt	          d¦  «        Šˆˆˆ
fd„Š(ˆˆˆ
fd„Š&ˆˆˆ
ˆ fd„Š%‰dz  } ‰(d¦  «        }|j        |z
  Š'|j        |z   }ˆ&fd„}ˆ%ˆ'ˆ(fd	„}‰j        }‰j        }|s||z
  d
k    rd}n||z
  }n|}‰|z  }‰'}|�t          |¦  «        }n|j
        |‰|z  fz   }||vrt          d¦  «        ‚|t          k    rd}n|t          k    rd}nd}t          |¦  «        t          u r|                     ¦   «         }n.g }|D ])}|                     |                     ¦   «         ¦  «         Œ*t!          |j        |j        z
  |z  ¦  «        d
z   }g }g }t'          |¦  «        D �]¨\  }}|dv rG|                     ||f¦  «         |j        |z
  }|                     t+          |¦  «        d
z
  ¦  «         ŒQ|dk    r|j        |j        z
  }n
|j        |z
  }|	r‰                      |¦  «        } ‰(|¦  «        }||k    r=|                     ||f¦  «         |                     t+          |¦  «        d
z
  ¦  «         ŒÖ|                     d¦  «        } |||¦  «        \  }}t+          |¦  «        }	 d                     |d|…         ¦  «        } t7          |d|…         ¦  «        ||d
z
  z  z   }!|!|k    r=|                     | |!f¦  «         ||d…         }||d…         }t+          |¦  «        }d} n|d
z  }t+          |¦  «        dk    rn|sJ ‚Œž�Œªt+          |¦  «        }"|"|k    r0d|› d|"› d�}#|€n$|rt9          d|#z   ¦  «         nt          |#¦  «        ‚t          ¦   «         }$|t+          |¦  «        d
z
  gz  }t;          |¦  «        D ]õ}	 |                     d¦  «        \  }}n*# t>          $ r t@          dk    rtC          ¦   «          Y  n´w xY w|	r"d                     tE          |¦  «        ¦  «        }|dk    r|}$|tF          k    r.||vr*|‰'k     r$ ||$|¦  «         ||$_        |$xj        |z  c_        Œ«|dk    s|j        |k    r|$xj        ||z
  |z  z  c_         ‰%|$|¦  «         ||$_        |$xj        |z  c_        Œö|S )ay  Fill a rectangle with text.

        Args:
            writer: pymupdf.TextWriter object (= "self")
            rect: rect-like to receive the text.
            text: string or list/tuple of strings.
            pos: point-like start position of first word.
            font: pymupdf.Font object (default pymupdf.Font('helv')).
            fontsize: the fontsize.
            lineheight: overwrite the font property
            align: (int) 0 = left, 1 = center, 2 = right, 3 = justify
            warn: (bool) text overflow action: none, warn, or exception
            right_to_left: (bool) indicate right-to-left language.
        zfill rect must not empty.rÞ  c                ó4   •— ‰                      | ‰‰¬¦  «        S )zReturn length of a string.©r
  rÔ
  )r  ©r4  rb  r
  rÔ
  s    €€€r)   r‰  z(TextWriter.fill_textbox.<locals>.textlen
E  s'   ø€ à×#Ò#Ø˜H°ð $ñ ô ð r*   c                ó4   •— ‰                      | ‰‰¬¦  «        S )z5Return list of single character lengths for a string.r4  )rÖ
  r5  s    €€€r)   rÖ
  z-TextWriter.fill_textbox.<locals>.char_lengthsE  s   ø€ à×$Ò$ Q°ÀjÐ$ÑQÔQÐQr*   c                ó<   •— ‰                      | |‰‰‰¬¦  «        }|S )N)rb  r
  rÔ
  rT  )ru  r   rG   rb  r
  rÔ
  rµ  s      €€€€r)   Úappend_thisz,TextWriter.fill_textbox.<locals>.append_thisE  s-   ø€ Ø—-’-Ø˜ D°8È
ð  ñ ô ˆCð ˆJr*   çš™™™™™É?r³   c                óÚ  •— g }g }|D ]à} ‰|¦  «        }t          |¦  «        }|| k    r+|                     |¦  «         |                     |¦  «         ŒMt          |¦  «        }|dk    r~t          |d|…         ¦  «        }|| k    rV|                     |d|…         ¦  «         |                     |¦  «         ||d…         }||d…         }t          |¦  «        }n|dz  }|dk    °~Œá||fS )z.Cut any word in pieces no longer than 'width'.r   Nr   )rW  rk   r7   )	rl  r-  ÚnwordsÚword_lengthsr   Úwl_lstÚwlrE   rÖ
  s	           €r)   Ú
norm_wordsz+TextWriter.fill_textbox.<locals>.norm_wordsE  s  ø€ àˆFØˆLØð ð �Ø%˜ a™œ�Ý˜‘[”[�Ø˜’;�;Ø—M’M !Ñ$Ô$Ð$Ø ×'Ò'¨Ñ+Ô+Ð+Øõ ˜‘K”K�Ø˜!’e�eÝ˜V B Q BœZ™œ�BØ˜U’{�{ØŸš a¨¨¨¤eÑ,Ô,Ð,Ø$×+Ò+¨BÑ/Ô/Ð/Ø˜a˜b˜bœE˜Ø!'¨¨¨¤˜Ý ™KœK˜˜à˜Q™˜ð ˜!’e�eøð ˜<Ð'Ð'r*   c                ó>  •— d„ |                      d¦  «        D ¦   «         }t          |¦  «        }|dk    rdS |dk    r ‰
| |d         ¦  «         dS t          ˆfd„|D ¦   «         ¦  «        }|dz
  }‰|z
  |z  }|D ] } ‰
| |¦  «        \  }}	|	j        |z   | _        Œ!dS )zJustified output of a line.c                ó   — g | ]
}|d k    ¯|‘ŒS r¯
  r-   )r­   r   s     r)   r¯   zCTextWriter.fill_textbox.<locals>.output_justify.<locals>.<listcomp><E  s   € Ð;Ð;Ð;˜1°1¸²7°7�Q°7°7°7r*   r³   r   Nr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r-   r-   )r­   r   r‰  s     €r)   r¯   zCTextWriter.fill_textbox.<locals>.output_justify.<locals>.<listcomp>CE  s!   ø€ Ð0Ð0Ð0 Q�g�g˜a‘j”jÐ0Ð0Ð0r*   )r6   r7   rW  r4  )r¤  ro   r-  r;  rû  ÚgapsÚgaplr   r  r‹  r8  Ú	std_widthr‰  s             €€€r)   Úoutput_justifyz/TextWriter.fill_textbox.<locals>.output_justify9E  sÐ   ø€ ð <Ð; §
¢
¨3¡¤Ð;Ñ;Ô;ˆEÝ˜‘Z”ZˆFØ˜Š{ˆ{Ø�Ø˜Š{ˆ{Ø�˜E 5¨¤8Ñ,Ô,Ð,Ø�ÝÐ0Ð0Ð0Ð0¨%Ð0Ñ0Ô0Ñ1Ô1ˆBØ˜A‘:ˆDØ ‘N dÑ*ˆDØð &ð &�Ø#˜ E¨1Ñ-Ô-‘��2Øœ$ ™+�”�ØˆFr*   r   rÉ  NzText must start in rectangle.rÊ  r®  r   )r\   r³   TzOnly fitting ú of z lines.z	Warning: r   r\   )$r4  rd	  rÃ   rÈ   r=  rl  r  rG  rH  rú  rû  rL  rM  rá  rì  ro  r4   r  r5  rþ  rk   r7   r  r4  r"  r6   rê  rW  rr   r\  r­  r  r  rv   ræ  rN  ))rµ  r  r   ru  rb  r
  rv  r!  r1  r&  rÔ
  Ú	toleranceÚ	space_lenÚ	std_startr?  rF  r_  r`  rã  Ú
LINEHEIGHTrl  r�  Ú	textlinesro   Ú	max_linesÚ	new_linesÚ
no_justifyr®   rû  r-  r<  rE   Úline0r>  rñ  r˜   r¤  r8  rÖ
  rE  r‰  s)   `   ``    `                          @@@@r)   Úfill_textboxzTextWriter.fill_textboxéD  s  øøøøøøøø€ õ6 �D‰zŒzˆØŒ=ð 	:ÝÐ8Ñ9Ô9Ð9Ý�‰:Œ:�TÐ!Ð!Ý˜‘<”<ˆDð	ð 	ð 	ð 	ð 	ð 	ð 	ð	Rð 	Rð 	Rð 	Rð 	Rð 	Rð 	Rð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ˜s‘Nˆ	Ø�G˜C‘L”Lˆ	Ø”J Ñ*ˆ	Ø”G˜iÑ'ˆ	ð	(ð 	(ð 	(ð 	(ð 	(ð4	ð 	ð 	ð 	ð 	ð 	ð 	ð$ ŒmˆØŒnˆØð 	!Ø�S‰y˜AŠ~ˆ~Ø��à ™)��à ˆGà Ñ'ˆ
Øˆð ˆ?Ý˜‘*”*ˆCˆCà”'˜Y¨°3©Ð7Ñ7ˆCØ�dˆ?ˆ?ÝÐ<Ñ=Ô=Ð=ð Õ%Ò%Ð%ØˆFˆFØÕ&Ò&Ð&ØˆFˆFàˆFõ �‰:Œ:�ÐÐØŸšÑ)Ô)ˆIˆIàˆIØð 4ð 4�Ø× Ò  §¢Ñ!2Ô!2Ñ3Ô3Ð3Ð3å˜œ 3¤5™¨JÑ6Ñ7Ô7¸!Ñ;ˆ	àˆ	Øˆ
Ý  Ñ+Ô+ð (	ñ (	‰GˆAˆtØ�yÐ Ð Ø× Ò  $¨	Ð!2Ñ3Ô3Ð3Øœ
 YÑ.�Ø×!Ò!¥3 y¡>¤>°AÑ#5Ñ7Ô7Ð7ØØ�AŠvˆvØœ #¤%™��àœ
 YÑ.�àð .Ø×'Ò'¨Ñ-Ô-�Ø�˜‘”ˆBØ�UŠ{ˆ{Ø× Ò  $¨ Ñ,Ô,Ð,Ø×!Ò!¥3 y¡>¤>°AÑ#5Ñ7Ô7Ð7Øð —J’J˜s‘O”OˆEð #- *¨U°EÑ":Ô":ÑˆE�<å�E‘
”
ˆAðØŸš  r¨ r¤Ñ+Ô+�Ý˜ b q bÔ)Ñ*Ô*¨Y¸!¸a¹%Ñ-@Ñ@�Ø˜’;�;Ø×$Ò$ e¨R [Ñ1Ô1Ð1Ø! ! " "œI�EØ#/°°°Ô#3�LÝ˜E™
œ
�AØ �E�Eà˜‘F�Aå�u‘:”: ’?�?ØØ���qðñ õ �Y‘”ˆØ�IÒÐØ@ )Ð@Ð@°Ð@Ð@Ð@ˆCØˆ|ØØð &Ý˜ cÑ)Ñ*Ô*Ð*Ð*å  ‘o”oÐ%å‘”ˆØ•s˜9‘~”~¨Ñ)Ð*Ñ*ˆ
Ý�yÑ!Ô!ð 	"ð 	"ˆAðØ$Ÿ=š=¨Ñ+Ô+‘��b�bøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø��ðøøøð ð /Ø—w’w�x¨™~œ~Ñ.Ô.�à�AŠvˆvØ�àÕ*Ò*Ð*¨q¸
Ð/BÐ/BÀrÈIÂ~À~Ø�˜u dÑ+Ô+Ð+Ø#�”Ø�”˜:Ñ%�”Øà�1Šuˆu˜œ Ò*Ð*Ø�”˜E B™J¨&Ñ0Ñ0�”àˆK˜˜tÑ$Ô$Ð$ØˆEŒGØˆGŒG�zÑ!ˆGŒGˆGàÐs   Ï	O"Ï"#P	ÐP	rA  c	                ó(  — t          |¦  «         t          | j        |j        z
  ¦  «        dk    rt          d¦  «        ‚|�dt	          |¦  «        t
          t          fvs8t	          |d         ¦  «        t          ust	          |d         ¦  «        t          urt          d¦  «        ‚|�|�t          d¦  «        ‚t          |dd¦  «        �|d	k    r| j
        }|€| j        }	 |                     ¦   «         }	d}
|dk    r|dk     r|}
d}g d
¢}|rt          |¦  «        \  }}|dk    rt          j        ¦   «         }n-|dk    rt          j        ¦   «         }nt          j        ¦   «         }t          j        |	                     ¦   «         d¦  «        }t          j        d¦  «        }t          j        |	                     ¦   «         t          j        ¦   «         ||¦  «        }t          j        || j        t          j        ¦   «         |||
t          j        t          j        ¦  «        ¦  «         t          j        |¦  «         t9          |	|¦  «        }t;          |¦  «        }||f}|}|d         }|d         }|\  }}|                     ¦   «         }|                     |¦  «        }|�	d|› d�}d}ndx}}dg}|r|                      |¦  «         |j!        }|j"        dv r|j        j#        |j        j$        z
  }nd}|j%        }tM          |¦  «        s|j'        dk    s|dk    r=|                      dtQ          |j)        |j*        |j'        z   |z
  f¦  «        › d�¦  «         |rM|d         | j+        z  } t          dd¦  «         ,                    | j)        | j*        ¦  «        }| |d         z  |z  }|s|r2|                      tQ          t[          |¦  «        ¦  «        dz   ¦  «         |D �]&}!|! .                    d¦  «        rŒ|!dk    r/|                      |!¦  «         |                      |d›d�¦  «         ŒN|! .                    d¦  «        r;t_          |! 0                    ¦   «         d         dd…         ¦  «        |z   }"d|"d›d�}!�ns|! .                    d¦  «        r¢|! 0                    ¦   «         }#tc          |#d         ¦  «        }$|dk    r|$dz  }%nd}%|                      tQ          |%¦  «        dz   ¦  «         t_          |#d         dd…         ¦  «        |z   }&d  2                    d!|&d›�g|#dd…         z   ¦  «        }!n¼|! .                    d"¦  «        r*|                      |! 3                    d#d$¦  «        ¦  «         n}|! .                    d%¦  «        r*|                      |! 3                    d%d&¦  «        ¦  «         n>|! .                    d'¦  «        r)|                      |! 3                    d'd(¦  «        ¦  «         |                      |!¦  «         �Œ(|r|                      |¦  «         |                      d)¦  «         d* 2                    |¦  «         4                    d+¦  «        }tj           6                    |||¬,¦  «         d}| j7        D ]}&tq          ||&¦  «         Œ|S )-aÚ  Write the text to a PDF page having the TextWriter's page size.

        Args:
            page: a PDF page having same size.
            color: override text color.
            opacity: override transparency.
            overlay: put in foreground or background.
            morph: tuple(Point, Matrix), apply a matrix with a fixpoint.
            matrix: Matrix to be used instead of 'morph' argument.
            render_mode: (int) PDF render mode operator 'Tr'.
        r°  zincompatible page rectNr   r   z%morph must be (Point, Matrix) or Nonez$only one of matrix, morph is allowedry  rA  r�  r   rZ  r   r	  rØ  z BDCÚEMCr\   r›  r«  rÏ  z cmÚBTr  z Trz gsz/Alpú TfrY  z wr   r³   z/Fz rgr  ÚRGz gz Gz kz Krß  r%   rÞ  )r5  )9rv  rý  r  rÃ   rÈ   rµ   r´   rú  r…  rý   rf  r  rl  rK  r�   rä  Úfz_device_cmykÚfz_device_grayrc  r:  rî  Úpdf_new_pdf_devicer‚  Úfz_fill_textrÄ   r&  Úfz_default_color_paramsr  ÚJM_merge_resourcesr€
  rì  r  rk   r   r_  rà  rl  r€  rø   r  r¶   r4  r5  r‹  r£  r˜  rí  r4   r6   r~  rê  rî  r×  r  r½  r  Úrepair_mono_font)'r(   rÖ   r  rf  r5  rþ  ré  r[  rÕ  rº  rì  ÚncolÚ	dev_colorrë  rq  r�  r  Úmax_numsÚcont_stringr+  r"  r‡  Úmax_alpÚmax_fontÚold_cont_linesrî  rï  rð  Únew_cont_linesrø  r  rp  r²  ro   Úalpr‹  r  r   rb  s'                                          r)   r±  zTextWriter.write_textËE  s©  € õ 	�DÑÔÐÝˆtŒy˜4œ9Ñ$Ñ%Ô%¨Ò,Ð,ÝÐ5Ñ6Ô6Ð6ØÐÝ�U‘”¥E­4 =Ð0Ð0Ý˜E !œH‘~”~­UÐ2Ð2Ý˜E !œH‘~”~­VÐ3Ð3å Ð!HÑIÔIÐIØÐ %Ð"3ÝÐCÑDÔDÐDÝ�7˜K¨Ñ.Ô.Ð6¸'ÀRº-¸-Ø”lˆGØˆ=Ø”JˆEð#	Ø—n’nÑ&Ô&ˆGØˆEØ˜!Š|ˆ| ¨!¢ Ø�ØˆDØ$˜˜ˆIØð ?Ý"7¸Ñ">Ô">‘��iØ�qŠyˆyÝ"Ô0Ñ2Ô2�
�
Ø˜’�Ý"Ô1Ñ3Ô3�
�
å"Ô1Ñ3Ô3�
åÔ*¨7¯;ª;©=¬=¸!Ñ<Ô<ˆIÝÔ*¨4Ñ0Ô0ˆHÝÔ*¨G¯KªK©M¬M½5¼>Ñ;KÔ;KÈYÐX`ÑaÔaˆCåÔØØ”IÝ”NÑ$Ô$ØØØÝÔ'­Ô(EÑFÔFñô ð õ Ô! 3Ñ'Ô'Ð'õ *¨7°IÑ>Ô>ˆHÝ0°(Ñ;Ô;ˆKØ Ð,ˆFØˆCà�q”6ˆØ�a”&ˆØ$Ñˆ�Ø ×+Ò+Ñ-Ô-ˆà×,Ò,¨RÑ0Ô0ˆØÐØ'˜'Ð'Ð'Ð'ˆCØˆCˆCàˆNˆC�#à˜ˆØð 	'Ø×!Ò! #Ñ&Ô&Ð&àÔ"ˆØŒ=˜IÐ%Ð%Ø”IÔ$ t¤y¤Ñ6ˆEˆEàˆEØŒ]ˆÝ�‰8Œ8ð 	[�r”u ’z�z U¨a¢Z ZØ×!Ò!Ð"Y­Y¸¼¸b¼dÀRÄU¹lÈUÑ>RÐ7SÑ-TÔ-TÐ"YÐ"YÐ"YÑZÔZÐZàð 	/Ø�a”˜4œ9Ñ$ˆAÝ˜1˜a‘L”L×-Ò-¨a¬c°1´3Ñ7Ô7ˆEØ�V˜e AœhÑ&¨Ñ.ˆFØð 	G�Fð 	GØ×!Ò!¥)­H°VÑ,<Ô,<Ñ"=Ô"=ÀÑ"EÑFÔFÐFà"ð 	(ñ 	(ˆDØ�}Š}˜UÑ#Ô#ð ØØ�tŠ|ˆ|Ø×%Ò% dÑ+Ô+Ð+Ø×%Ò%¨Ð&;Ð&;Ð&;Ð&;Ñ<Ô<Ð<ØØ�}Š}˜UÑ#Ô#ð @Ý˜$Ÿ*š*™,œ, qœ/¨!¨"¨"Ô-Ñ.Ô.°Ñ8�Ø(˜cÐ(Ð(Ð(Ð(�‘Ø—’˜uÑ%Ô%ð @Ø—z’z‘|”|�Ý˜d 1œg™œ�Ø !Ò#Ð#Ø ™�A�Aà�AØ×%Ò%¥i°¡l¤l°TÑ&9Ñ:Ô:Ð:Ý˜4 œ7 1 2 2œ;Ñ'Ô'¨(Ñ2�Ø—x’x  d    °$°q°r°r´(Ñ :Ñ;Ô;��Ø—’˜uÑ%Ô%ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ø—’˜tÑ$Ô$ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ø—’˜tÑ$Ô$ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ø×!Ò! $Ñ'Ô'Ð'Ñ'Øð 	'Ø×!Ò! #Ñ&Ô&Ð&Ø×Ò˜eÑ$Ô$Ð$Ø—)’)˜NÑ+Ô+×2Ò2°7Ñ;Ô;ˆÝ×Ò˜t W°gÐÑ>Ô>Ð>ØˆØ”Oð 	)ð 	)ˆDÝ˜T 4Ñ(Ô(Ð(Ð(Øˆ
r*   r™  )Nr  Nr   r   )Nr  NF)NNr  Nr   NFF)rµ  r/  r  r¼   r   r\  ru  rº   rb  r0  r
  r~  rv  rÎ  r!  r4   r1  rø   r&  rø   rÔ
  rø   rÚ  rµ   )NrA  r   NNr   r   )r/   r0   r1   rŒ   rB  r  rk   r*  r"  rQ  r±  r-   r*   r)   r°  r°  nD  sÏ   € € € € € ðð ð ð ð" ðð ñ „Xðð
*ð *ð *ð *ðX/ð /ð /ð /ð,ð ,ð ,ðd #Ø*.Ø Ø#'ØØØ"'Ø$ð`ð `ð `ð `ð `ðDDð Dð Dð Dð Dð Dr*   r°  c                  óÈ  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddddd	œd
„Z
d„ Z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d„ Zd,d„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed „ ¦   «         Zed!„ ¦   «         Z d"„ Z!d#„ Z"d$„ Z#ed%„ ¦   «         Z$ed&„ ¦   «         Z%ed'„ ¦   «         Z&ed(„ ¦   «         Z'd)„ Z(d*„ Z)ed+„ ¦   «         Z*eZ+eZ,e&Z-e'Z.dS )-rÄ  a  
    IRect() - all zeros
    IRect(x0, y0, x1, y1) - 4 coordinates
    IRect(top-left, x1, y1) - point and 2 coordinates
    IRect(x0, y0, bottom-right) - 2 coordinates and point
    IRect(top-left, bottom-right) - 2 points
    IRect(sequ) - new from sequence or rect-like
    c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  r_  rk  r½  s     r)   r_  zIRect.__add__\F  ó"   € Ý�|Š|˜D !Ñ$Ô$×*Ò*Ñ,Ô,Ð,r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  r)  rk  r­  s     r)   r)  zIRect.__and___F  ri  r*   c                ó8   — t                                | |¦  «        S r,   )r4  râ  r­  s     r)   râ  zIRect.__contains__bF  s   € Ý× Ò   qÑ)Ô)Ð)r*   c                óÔ   — t          |d¦  «        sdS t          |¦  «        dk    oC| j        |d         k    o2| j        |d         k    o!| j        |d         k    o| j        |d         k    S rú  )r;   r7   r  r  r  r  r  s     r)   rf  zIRect.__eq__eF  sn   € Ý�q˜)Ñ$Ô$ð 	Ø�5Ý�1‰vŒv˜Š{Ðj˜tœw¨!¨A¬$šÐj°4´7¸aÀ¼d²?ÐjÀtÄwÐRSÐTUÔRVÂÐjÐ[_Ô[bÐfgÐhiÔfjÒ[jÐjr*   c                óB   — | j         | j        | j        | j        f|         S r,   r0  rõ  s     r)   rp  zIRect.__getitem__jF  rý  r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rÄ  r.   s    r)   r«  zIRect.__hash__mF  rÅ  r*   Nr2  c          
     óZ   — t          |||||||dœŽ\  | _        | _        | _        | _        d S )Nr2  )Úutil_make_irectr  r  r  r  r5  s           r)   rŒ   zIRect.__init__pF  s7   € Ý-<¸tÈÈrÐVXÐ]_ÐdfÐkmÐ-nÐ-nÐ-nÑ*ˆŒ�”˜$œ' 4¤7 7 7r*   c                ó   — dS r  r-   r.   s    r)   r5  zIRect.__len__sF  rv  r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  ry  rk  r^  s     r)   ry  zIRect.__mul__vF  ri  r*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )rÄ  r  r  r  r  r.   s    r)   r{  zIRect.__neg__yF  s&   € Ý�d”g�X ¤˜x¨$¬'¨°D´G°8Ñ<Ô<Ð<r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  r=  rk  r­  s     r)   r=  zIRect.__or__|F  s"   € Ý�{Š{˜4 Ñ#Ô#×)Ò)Ñ+Ô+Ð+r*   c                ó    — t          | ¦  «        S r,   )rÄ  r.   s    r)   r  zIRect.__pos__F  rv  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )NrÄ  r�  r.   s    r)   rþ   zIRect.__repr__‚F  rÏ  r*   c                ó²   — t          |¦  «        }|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S r  )r4   r  r  r  r  r  r„  s      r)   r…  zIRect.__setitem__…F  se   € Ý�‰FŒFˆØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  r‡  rk  r½  s     r)   r‡  zIRect.__sub__�F  ri  r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  r�  rk  r^  s     r)   r�  zIRect.__truediv__’F  s$   € Ý×Ò  aÑ(Ô(×.Ò.Ñ0Ô0Ð0r*   c                ó6   — t          | j        | j        ¦  «        S rD  rE  r.   s    r)   rã  zIRect.bottom_left•F  rF  r*   c                ó6   — t          | j        | j        ¦  «        S rH  rI  r.   s    r)   rà  zIRect.bottom_rightšF  rF  r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   rO  r.   s    r)   rà  zIRect.heightŸF  rP  r*   c                ó,   — |                       |¦  «        S )zCheck if x is in the rectangle.rK  r­  s     r)   rL  zIRect.contains£F  rM  r*   rÚ  r~  c                ó8   — t          | j        | j        |¦  «        S rR  rS  rI  s     r)   rU  zIRect.get_area§F  rV  r*   c                óD   — | j                              |¦  «        }|j        S )z$Extend rectangle to include point p.)r  r;  ró  )r(   r²  r  s      r)   r;  zIRect.include_point«F  s   € àŒy×&Ò& qÑ)Ô)ˆØŒzÐr*   c                óD   — | j                              |¦  «        }|j        S )z(Extend rectangle to include rectangle r.)r  r<  ró  )r(   r.  r  s      r)   r<  zIRect.include_rect°F  s   € àŒy×%Ò% aÑ(Ô(ˆØŒzÐr*   c                ó\   — t                                | |¦  «                             ¦   «         S )z4Restrict rectangle to intersection with rectangle r.)r4  r(  rk  r  s     r)   r(  zIRect.intersectµF  s"   € å�~Š~˜d AÑ&Ô&×,Ò,Ñ.Ô.Ð.r*   c                ó8   — t                                | |¦  «        S r,   )r4  r_  r­  s     r)   r_  zIRect.intersects¹F  s   € Ý�Š˜t QÑ'Ô'Ð'r*   c                óB   — | j         | j        k    p| j        | j        k    S ra  rã  r.   s    r)   rd	  zIRect.is_empty¼F  rb  r*   c                ó~   — | j         | j        cxk    o
t          k    nc o| j        | j        cxk    o
t
          k    nc S )zTrue if rectangle is infinite.rd  r.   s    r)   re	  zIRect.is_infiniteÁF  re  r*   c                óB   — | j         | j        k    o| j        | j        k    S rg  rã  r.   s    r)   rh  zIRect.is_validÆF  ri  r*   c                ób   — | j         rt          ¦   «         S | j                             ||¦  «        S rk  rl  rm  s      r)   rþ  zIRect.morphËF  rn  r*   c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   rR  s     r)   r¯   zIRect.norm.<locals>.<listcomp>ÔF  rS  r*   rT  r.   s    r)   r¦  z
IRect.normÓF  rY  r*   c                óª   — | j         | j        k     r| j         | j        c| _        | _         | j        | j        k     r| j        | j        c| _        | _        | S )z)Replace rectangle with its valid version.rÔ  r.   s    r)   ru  zIRect.normalizeÖF  rr  r*   c                óN   — t          | j        | j        | j        | j        ¦  «        S rt  ru  r.   s    r)   r  z
IRect.quadÞF  rw  r*   c                ó    — t          | ¦  «        S r,   r�  r.   s    r)   r  z
IRect.rectãF  s   € å�D‰zŒzÐr*   c                ó6   — t          | j        | j        ¦  «        S r{  r|  r.   s    r)   rß  zIRect.top_leftçF  rF  r*   c                ó6   — t          | j        | j        ¦  «        S r~  r  r.   s    r)   râ  zIRect.top_rightìF  rF  r*   c           	     óJ  — t          |¦  «        }| j        s| j        s|j        s|j        rt          d¦  «        ‚t	          dddd| j         | j         ¦  «        t	          |j        | j        z  |j        | j        z  ¦  «        z  t	          dddd|j        |j        ¦  «        z  S r�  r‚  r  s     r)   r¿  zIRect.torectñF  s«   € å�‰GŒGˆØÔð 	H˜tœ}ð 	H°´ð 	HÀÄð 	HÝÐFÑGÔGÐGå�q˜!˜Q  D¤G 8¨d¬g¨XÑ6Ô6Ý˜œ 4¤:Ñ-¨q¬x¸$¼+Ñ/EÑFÔFñGå˜˜A˜q ! Q¤T¨1¬4Ñ0Ô0ñ1ð	r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r4  rU  rk  r^  s     r)   rU  zIRect.transformüF  s"   € Ý�~Š~˜d AÑ&Ô&×,Ò,Ñ.Ô.Ð.r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   r†  r.   s    r)   rl  zIRect.widthÿF  rP  r*   r‡  )/r/   r0   r1   rµ  r_  r)  râ  rf  rp  r«  rŒ   r5  ry  r{  r=  r  rþ   r…  r‡  r�  rB  rã  rà  rà  rL  rU  r;  r<  r(  r_  rd	  re	  rh  rþ  r¦  ru  r  r  rß  râ  r¿  rU  rl  rü  rÎ  rû  rv  r-   r*   r)   rÄ  rÄ  RF  s  € € € € € ðð ð-ð -ð -ð-ð -ð -ð*ð *ð *ðkð kð kð
7ð 7ð 7ð!ð !ð !ð "&¨$°4¸DÀTÈdð oð oð oð oð oðð ð ð-ð -ð -ð=ð =ð =ð,ð ,ð ,ðð ð ð*ð *ð *ðð ð ð-ð -ð -ð1ð 1ð 1ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð ð)ð )ñ „Xð)ð$ð $ð $ð9ð 9ð 9ð 9ðð ð ð
ð ð ð
/ð /ð /ð(ð (ð (ð ð8ð 8ñ „Xð8ð ð_ð _ñ „Xð_ð ð9ð 9ñ „Xð9ð%ð %ð %ð3ð 3ð 3ðð ð ð ð8ð 8ñ „Xð8ð ðð ñ „Xðð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð	ð 	ð 	ð/ð /ð /ð ð)ð )ñ „Xð)ð 
€BØ	€BØ	€BØ	€B€B€Br*   rÄ  )ÚPDF_ÚUCDN_SCRIPT_ÚPDF_ENUM_NAME_)ÚCourierúCourier-ObliqueúCourier-BoldúCourier-BoldObliqueÚ	HelveticaúHelvetica-ObliqueúHelvetica-BoldúHelvetica-BoldObliqueúTimes-RomanúTimes-Italicú
Times-BoldúTimes-BoldItalicrV  rU  r˜  rÞ  r™  Úheitrš  Úhebor›  Úhebir”  Úcourr•  Úcoitr–  Úcobor—  Úcobirœ  Útirorž  Útibor�  ÚtiitrŸ  ÚtibirV  ÚsymbrU  Úzadbrè  i   €i€ÿÿÚfitzr   r   rZ  r   r   r)
  rú  é@   rþ  rÐ  rö  é
   r  rÜ  é   )r   é   r   )r   r±  r   ÚColorÚ	ColorBurnÚ
ColorDodgeÚDarkenÚ
DifferenceÚ	ExclusionÚ	HardLightÚHueÚLightenr¿  ÚMultiplyÚNormalÚOverlayÚ
SaturationÚScreenÚ	Softlightc                ó:   — d| › dt          |||f¦  «        › d|› d�S )Nz<</A<</S/GoTo/D[z	 0 R/XYZ z	]>>/Rect[ú]/BS<</W 0>>/Subtype/Link>>r«  )r!   rÜ
  rË  r  rp  s        r)   r¸	  r¸	  2H  sM   € ð  (D¸!ð  (Dð  (DÅiÐQRÐTUÐWXÐPYÑFZÔFZð  (Dð  (DÐefð  (Dð  (Dð  (D€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/GoTo/Dz>>/Rect[rÂ  r-   r¬  s     r)   r¸	  r¸	  3H  s   € ÐY°ÐYÐY¸1ÐYÐYÐY€ r*   c                óF   — d| › dt          |||f¦  «        › d|› d|› d|› d�S )Nz<</A<</S/GoToR/D[z /XYZ z]/F<</F(ú)/UF(ú)/Type/Filespec>>>>/Rect[rÂ  r«  rÑ  s          r)   r¸	  r¸	  4H  so   € ð  /lÀ!ð  /lð  /lÍ9ÐVWÐYZÐ\]ÐU^ÑK_ÔK_ð  /lð  /lÐijð  /lð  /lÐqrð  /lð  /lð  NOð  /lð  /lð  /l€ r*   c                ó   — d| › d|› d|› d�S )Nz<</A<</S/GoToR/Dz/F(ú	)>>/Rect[rÂ  r-   ©r!   rÜ
  rË  s      r)   r¸	  r¸	  5H  s"   € Ð"e°QÐ"eÐ"e¸1Ð"eÐ"eÀqÐ"eÐ"eÐ"e€ r*   c                ó   — d| › d|› d|› d�S )Nz<</A<</S/Launch/F<</F(rÅ  rÆ  rÂ  r-   rÉ  s      r)   r¸	  r¸	  6H  s#   € Ð"}¸1Ð"}Ð"}À1Ð"}Ð"}Ð_`Ð"}Ð"}Ð"}€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/URI/URI(rÈ  rÂ  r-   r¬  s     r)   r¸	  r¸	  7H  s   € ÐZ°ÐZÐZ¸AÐZÐZÐZ€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/GoTo/D(z)/Type/Action>>/Rect[rÂ  r-   r¬  s     r)   r¸	  r¸	  8H  s   € Ðg°ÐgÐgÈÐgÐgÐg€ r*   )rf  Úgoto2ri  rj  rk  rl  r  c                  ó   — e Zd ZdZdS )r  z0Raised for documents with file structure issues.N©r/   r0   r1   rµ  r-   r*   r)   r  r  ;H  s   € € € € € Ø:Ð:Ø€Dr*   r  c                  ó   — e Zd ZdZdS )r   zRaised if file does not exist.NrÏ  r-   r*   r)   r   r   ?H  s   € € € € € Ø(Ð(Ø€Dr*   r   c                  ó   — e Zd ZdZdS )r  z5Raised when creating documents from zero-length data.NrÏ  r-   r*   r)   r  r  CH  s   € € € € € Ø?Ð?Ø€Dr*   r  r!  rG  Úbidir?  r_	  r,  rË  rA
  r  rë  r‡  r‰  zcs-nameÚdarn  ÚdescriptionrH  rs  Úeffectr#  rf   r  rÎ  rX	  rb  r1  rà  rH  rF  rB   rÇ  rÿ  rU  rŠ  r   rh  r†  r  rÈ  r  Úspansrw  rm  r‹  r   rˆ  rÈ   r&  rl  rÓ
  r   rJ  rK  )ÚfontdescriptorsÚfontbuffersÚloader(   ©é·   gq=
×£pÝ?rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  )rú  ç      Ð?)r@
  çZd;ßOÕ?)é"   ç7‰A`åÐæ?)é#   rÊ  )rà	  çÅ °rh‘á?)é%   ç-²�ï§ê?)é&   gL7‰A`åè?)é'   çj¼t“Ü?)r"	  rÝ  )é)   rÝ  )é*   rÊ  )é+   rá  )é,   rÜ  )é-   rá  )é.   rÜ  )é/   ç˜nƒÀÊÑ?)é0   rÊ  )é1   rÊ  )rá  rÊ  )é3   rÊ  )é4   rÊ  )é5   rÊ  )é6   rÊ  )é7   rÊ  )é8   rÊ  )é9   rÊ  )é:   rî  )é;   rî  )é<   rá  )é=   rá  )é>   rá  )é?   gÑ"Ûù~jÜ?)r®  rá  )éA   ç´Èv¾Ÿç?)éB   çòÒMbXå?)éC   rÿ  )éD   g/Ý$�•ã?)éE   çZd;ßO�ã?)éF   çÑ"Ûù~jè?)éG   ç²�ï§ÆKã?)rÝ  rÿ  )éI   rÝ  )éJ   çþÔxé&1ä?)éK   rÿ  )éL   çÁÊ¡E¶óå?)éM   g¦›Ä °rì?)éN   rÿ  )éO   rÿ  )éP   çú~j¼t“è?)éQ   gƒÀÊ¡E¶ç?)éR   g˜nƒÀÊá?)éS   g‹lçû©ñâ?)éT   r  )éU   ç®Gázæ?)éV   ræ  )éW   r  )éX   g¤p=
×£ä?)éY   çq=
×£pé?)rÄ  r  )é[   rÝ  )é\   gV-²�ë?)é]   rÝ  )é^   çu“Vå?)rn  rÊ  )é`   rÊ  )éa   r  )éb   rá  )rb  rá  )rª  çV-²�ß?)ée   ræ  )éf   çyé&1¬à?)ég   ççû©ñÒMÚ?)éh   r	  )éi   çu“VÕ?)éj   r	  )ék   rá  )él   rá  )ém   ç;ßO�—nâ?)én   r+  )éo   rá  )ép   rá  )éq   r+  )ér   rá  )és   r	  )ét   ræ  )éu   r5  )év   rß  )éw   r  )éx   gZd;ßO�ß?)éy   r  )éz   r(  )é{   ç¸…ëQ¸Þ?)é|   r9  )é}   rD  )é~   rá  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  rÚ  )é    rÜ  )é¡   g×£p=
×ã?)é¢   gV-²�Ï?)é£   rá  )é¤   gÇK7‰A`Å?)é¥   rß  )é¦   rÊ  )é§   çj¼t“è?)é¨   rP  )é©   rP  )éª   rP  )é«   çyé&1¬ð?)é¬   rß  )é­   r	  )é®   ç/Ý$�•ï?)é¯   r	  )é°   gš™™™™™Ù?)é±   rá  )é²   r-  )é³   rá  )rö  rá  )éµ   r5  )é¶   r(  rÚ  )é¸   rá  )é¹   rá  )éº   rá  )é»   rá  )é¼   r   )r
  r	  )é¾   r   )é¿   r$  )éÀ   ç¼t“Vê?)éÁ   r  )éÂ   r  )éÃ   rY  )éÄ   r  )éÅ   r  )éÆ   ri  )éÇ   r  )éÈ   r  )éÉ   rß  )éÊ   rß  )éË   rß  )éÌ   rß  )éÍ   rß  )éÎ   rß  )éÏ   rß  )éÐ   r  )éÑ   rß  )éÒ   çHáz®Gé?)éÓ   r|  )éÔ   g{®Gázì?)éÕ   ri  )éÖ   rá  )é×   rá  )éØ   rß  )éÙ   r	  )éÚ   r	  )éÛ   rU  )éÜ   rY  )éÝ   r	  )éÞ   rY  )éß   r	  )éà   r(  )éá   r0  )éâ   r|  )éã   r|  )éä   çôýÔxé&é?)éå   rß  )éæ   çú~j¼t“Ø?)éç   r’  )éè   r’  )éé   r’  )éê   r’  )éë   r’  )éì   r(  )éí   r(  )éî   r(  )éï   r(  rÚ  )éñ   r0  )éò   gð§ÆK7‰Ñ?)éó   r  )éô   r  )éõ   r  )éö   r’  )é÷   rá  )éø   r’  )éù   r’  )éú   r’  )éû   r’  )éü   r(  )éý   r(  )éþ   r(  rÚ  (   ©rÛ  çžï§ÆK7é?rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  )rú  rî  )r@
  ç^ºI+ï?)rÞ  g�—nƒÀî?)rà  r¬  )rà	  g\�Âõ(\ï?)râ  g5^ºIç?)rä  çsh‘í|?é?)rå  r|  )r"	  çZd;ßOé?)rç  r  )rè  g¸…ëQ¸î?)ré  g?5^ºIî?)rê  rá  )rë  g\�Âõ(\ë?)rì  çôýÔxé&í?)rí  gB`åÐ"Ûí?)rï  r¯  )rð  g=
×£p=î?)rá  r¬  )rñ  g)\�Âõ(è?)rò  gßO�—në?)ró  çü©ñÒMbè?)rô  ç'1¬Zè?)rõ  gƒÀÊ¡Eâ?)rö  gD‹lçû©å?)r÷  r  )rø  çR¸…ëQè?)rù  ç}?5^ºIè?)rú  gTã¥›Ä è?)rû  r(  )rü  gD‹lçû©á?)rý  gÉv¾Ÿ/á?)r®  gX9´Èvâ?)rþ  g¾Ÿ/Ý$æ?)r   r�  )r  r«  )r  r«  )r  r|  )r  gÇK7‰A`é?)r  gœÄ °rhé?)rÝ  çé&1¬ê?)r
  ri  )r  r­  )r  g¶óýÔxéê?)r  ri  )r  rã  )r  r´  )r  çd;ßO�—ê?)r  gð§ÆK7‰í?)r  g+‡ÙÎç?)r  g‰A`åÐ"ç?)r  g+‡ÙÎ÷ç?)r  r|  )r  çòÒMbXé?)r  g=
×£p=æ?)r  ç¢E¶óýÔè?)r  r  )r  r¶  )rÄ  r³  )r   ç9´Èv¾Ÿæ?)r!  g-²�ï§æ?)r"  gmçû©ñÒå?)r#  g;ßO�—næ?)rn  g;ßO�—nê?)r%  g®Gázê?)r&  r­  )r'  r­  )rb  r¸  )rª  g–C‹lçûå?)r)  çƒÀÊ¡Eæ?)r*  g?5^ºIæ?)r,  r�  )r.  gÉv¾Ÿ/é?)r/  rß  )r1  r®  )r2  g…ëQ¸é?)r3  r®  )r4  çV-²�ïë?)r6  r±  )r7  r°  )r8  r°  )r9  r³  )r:  r³  )r;  ç%�•C‹ì?)r<  r»  )r=  r«  )r>  gJ+‡é?)r?  gÕxé&1Ü?)r@  gD‹lçû©Á?)rA  gî|?5^ºÑ?)rB  g�Âõ(\�Ú?)rC  çJ+‡Ù?)rE  r¼  )rF  çÇK7‰A`å?)rG  r½  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  rª  )rI  g�•C‹lç?)rJ  çœÄ °rhá?)rK  r¾  )rL  g…ëQ¸í?)rM  r  )rN  r²  )rO  r²  )rQ  r·  )rR  g
×£p=
ã?)rS  gh‘í|?5æ?)rT  gÕxé&1ä?)rV  r«  )rW  r«  )rX  r«  )rZ  r«  )r[  r«  )r\  r«  )r]  r«  )r^  r«  )rö  r«  )r_  r«  )r`  r«  rª  )ra  r«  )rb  r«  )rc  r«  )rd  r«  )re  r«  )r
  r«  )rf  r«  )rg  r«  )rh  r«  )rj  r«  )rk  r«  )rl  r«  )rm  r«  )rn  r«  )ro  r«  )rp  r«  )rq  r«  )rr  r«  )rs  r«  )rt  r«  )ru  r«  )rv  r«  )rw  r«  )rx  r«  )ry  r«  )rz  r«  )r{  r«  )r}  r«  )r~  gÏ÷Sã¥›ì?)r  g7‰A`åÐê?)r€  g¨ÆK7‰Að?)r�  gZd;ßOÝ?)r‚  çV-²�ïç?)rƒ  çÅ °rh‘í?)r„  r¿  )r…  gÇK7‰A`í?)r†  çD‹lçû©í?)r‡  çV-²í?)rˆ  rÂ  )r‰  gã¥›Ä °ê?)rŠ  rº  )r‹  gåÐ"Ûù~ê?)rŒ  rÀ  )r�  rÀ  )rŽ  gòÒMbXí?)r�  gÃõ(\�Âí?)r‘  g˜nƒÀÊí?)r“  goƒÀÊ¡Ý?)r”  g¨ÆK7‰Aì?)r•  ç�—nƒÀê?)r–  rÃ  )r—  çX9´Èv¾ë?)r˜  rÄ  )r™  r¹  )rš  r¹  )r›  ç+‡ÙÎ÷ë?rª  )rœ  rÅ  )r�  r²  )rž  gƒÀÊ¡Eî?)rŸ  çyé&1¬è?)r   g®Gáz®ë?)r¡  rÆ  )r¢  çÑ"Ûù~jì?)r£  g‹lçû©ñî?)r¤  rÇ  )r¥  rµ  )r¦  rº  )r§  rÁ  )r¨  g
×£p=
ï?rª  rª  c                óx   — |r|d         nd}dddddœ}||         d         ||         d         z  d	z  }|| z  |z  S )
Nr   re  )r   r   r×  rÙ  rÚ  rÛ  r   r   r-   )rl  rà  r  rä  rå  rÝ  s         r)   rT  rT  �J  sS   € àÐ$ˆ4�Œ7ˆ7 €DØ˜[°ÀLÐQÐQ€AØ	
ˆ4Œ�Œ�a˜”g˜a”jÑ	  QÑ&€AØˆu‰9�vÑÐr*   c                óÊ   — g }|                       ¦   «         s|S t          |¦  «        D ]-}|                     t          j        | ||z   ¦  «        ¦  «         Œ.t          |¦  «        S r,   )rí  r\  rk   r�   rÕ  r)  )r3  r=  rE   rG   r®   s        r)   Ú_read_samplesrÊ  ¤J  sg   € ð €CØ�>Š>ÑÔð àˆ
Ý�A‰YŒYð ?ð ?ˆØ�
Š
•EÔ(¨&°&¸1±*Ñ=Ô=Ñ>Ô>Ð>Ð>Ý�#‰;Œ;Ðr*   c                ó   — || k    o| |k    S r,   r-   )rF   ÚlowÚhighs      r)   r¯  r¯  °J  s   € Ø�!Š8Ð!˜˜Tš	Ð!r*   c           
     óÄ  — t          j        | ¦  «        }t          |¦  «        D �]:}|}||v rŒ
t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        sŒIt          j        |¦  «        }t          |dz
  dd¦  «        D �]Ç}t          j        ||¦  «        }	t          j	        t          j        |	t          d¦  «        ¦  «        t          d¦  «        ¦  «        sŒ[t          j        |	t          d¦  «        ¦  «        }
t          j        |	t          d¦  «        ¦  «        }|
j        ret          j	        t          j        |
t          d¦  «        ¦  «        t          d	¦  «        ¦  «        sŒét          j        |
t          d
¦  «        ¦  «        }d}t          j
        |¦  «        r+t          j        |d¦  «        }t          j        | |¦  «        }nXt          j        |¦  «        rDt          j        |                      ¦   «         t          j        |¦  «        ¦  «        \  }}}|j        }|dk     r�Œ¬|}||v rt          j        ||¦  «         �ŒÉ�Œ<d S )Nr§  r   rA  r•  r"  r  r  rk	  ÚGoTor  r   )r�   rL  r\  rO  r  r  rÌ   r«  r¬  r  r™  Úpdf_lookup_page_numberrp
  r¶  rÇ   r  rÖ   r­  )rj  r…  Ú	pagecountr®   r�  rU  r¯  r  r‘  r±  r˜  rõ  rá  rg
  r7  r  s                   r)   r„  r„  ´J  s8  € ÝÔ% cÑ*Ô*€IÝ�9ÑÔð 3ñ 3ˆØˆØ�ˆ=ˆ=ØåÔ+¨S°!Ñ4Ô4ˆÝÔ# W­h°xÑ.@Ô.@ÑAÔAˆØÔ ð 	ØÝÔ" 6Ñ*Ô*ˆÝ�t˜a‘x  RÑ(Ô(ð 	3ñ 	3ˆAÝÔ# V¨QÑ/Ô/ˆAÝÔ$¥eÔ&8¸!½XÀiÑ=PÔ=PÑ&QÔ&QÕS[Ð\bÑScÔScÑdÔdð ØÝÔ'¨­H°S©M¬MÑ:Ô:ˆFÝÔ% q­(°6Ñ*:Ô*:Ñ;Ô;ˆDØÔ ð BÝÔ(­%Ô*<¸fÅhÈsÁmÄmÑ*TÔ*TÕV^Ð_eÑVfÔVfÑgÔgð ØÝÔ)¨6µ8¸C±=´=ÑAÔA�ØˆCÝÔ! 4Ñ(Ô(ð $ÝÔ,¨d°AÑ6Ô6�ÝÔ2°C¸Ñ@Ô@��ÝÔ$ dÑ+Ô+ð $Ý!&Ô!6¸¿	º	¹¼ÅUÔE]Ð_cÑEdÔEdÑ!eÔ!e‘�˜!˜QØ”m�Ø�QŠwˆwÙØˆBØ�Wˆ}ˆ}ÝÔ&¨°Ñ2Ô2Ð2ùñ+	3ð3ð 3r*   c                óÂ   — t          | t          j        t          j        f¦  «        sJ dt	          | ¦  «        ›d| ›�¦   «         ‚| j        st          t          ¦  «        ‚d S )Nztype(cond)=z cond=)r>   r�   rÓ   rÆ   rÈ   rÌ   rg   ÚMSG_IS_NO_PDF)Úconds    r)   Ú
ASSERT_PDFrÕ  ØJ  sd   € Ý�d�Uœ]­EÔ,=Ð>Ñ?Ô?ÐYÐYÐAYÅDÈÁJÄJÐAYÐAYÐRVÐAYÐAYÑYÔYÐ?ØŒ?ð 'Ý�Ñ&Ô&Ð&ð'ð 'r*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )rÄ  rÚ  rÙ  r-   r*   r)   ÚEMPTY_IRECTr×  ÞJ  ó   € Ý•¥/µ?ÅOÑTÔTÐTr*   c                 ó(   — t          ¦   «         j        S r,   )Ú
EMPTY_RECTr  r-   r*   r)   Ú
EMPTY_QUADrÛ  âJ  s   € Ý‰<Œ<ÔÐr*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )r4  rÚ  rÙ  r-   r*   r)   rÚ  rÚ  æJ  ó   € Ý•¥µ/Å?ÑSÔSÐSr*   c                óB   — t          | ¦  «        st          d¦  «        ‚d S )Nz No journalling operation started)ÚJM_have_operationrg   ©rj  s    r)   rn  rn  êJ  s+   € Ý˜SÑ!Ô!ð <ÝÐ:Ñ;Ô;Ð;ð<ð <r*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )rÄ  rÙ  rÚ  r-   r*   r)   ÚINFINITE_IRECTrâ  ïJ  rØ  r*   c                 ó(   — t          ¦   «         j        S r,   )r-  r  r-   r*   r)   r  r  óJ  s   € Ý‰?Œ?ÔÐr*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )r4  rÙ  rÚ  r-   r*   r)   r-  r-  ÷J  rÝ  r*   c                óf   — t          | t          j        ¦  «        sJ ‚t          j        | ¦  «        }|S )z3
    Turn fz_buffer into a Python bytes object
    )r>   r�   r|  rÎ
  )r=  rG   s     r)   r-  r-  ûJ  s1   € õ �g�uœ~Ñ.Ô.Ð.Ð.Ð.Ý
Ô
& wÑ
/Ô
/€CØ€Jr*   c                óÊ   — | €dS t          | t          ¦  «        sJ dt          | ¦  «        ›�¦   «         ‚|                      dd¦  «        }d}|D ]}|t	          |¦  «        z  }Œ|S )Nr\   ztype(c)=r
  Úsurrogateescape)r>   rá  rÈ   r×  r*
  )rË  rÜ
  rG   Úbbs       r)   rÂ  rÂ  K  sv   € ð& 	€yØˆrÝ�a�ÑÔÐ,Ð,˜}¥$ q¡'¤'˜}˜}Ñ,Ô,ÐØ	�Š�Ð*Ñ+Ô+€AØ
€CØð ð ˆØ�s�2‰wŒw‰ˆˆØ€Jr*   c                ó¢  — t          | t          t          f¦  «        r| }n�t          | d¦  «        rz|                      ¦   «         }t          |t
          ¦  «        r|                     d¦  «        }t          |t          t          f¦  «        st          dt          |¦  «        › �¦  «        ‚nt          j
        ¦   «         S t          j        |¦  «        S )zŽ
    Make fz_buffer from a PyBytes, PyByteArray or io.BytesIO object. If a text
    io.BytesIO, we convert to binary by encoding as utf8.
    r�  rÞ  z&.getvalue() returned unexpected type: )r>   r)  rh  r;   r�  rá  r×  rg   rÈ   r�   r|  rœ  )r	   rˆ  s     r)   r7  r7  !K  sÂ   € õ
 �&�5¥)Ð,Ñ-Ô-ð 	 ØˆˆÝ	�˜Ñ	$Ô	$ð  Ø�ŠÑ Ô ˆÝ�d�CÑ Ô ð 	(Ø—;’;˜wÑ'Ô'ˆDÝ˜$¥­	Ð 2Ñ3Ô3ð 	SÝÐQÅTÈ$ÁZÄZÐQÐQÑRÔRÐRð	Sõ Œ~ÑÔÐÝÔ/°Ñ5Ô5Ð5r*   c                óN   — t          | ¦  «        sd S t          | |         ¦  «        S r,   )r†  r~  )r  rC  s     r)   ÚJM_FLOAT_ITEMrë  3K  s'   € Ý˜CÑ Ô ð ØˆtÝ��S”‰?Œ?Ðr*   c                ó|   — |t          | ¦  «        k     r(| |         }t          |t          t          f¦  «        rd|fS dS )Nr   r™  )r7   r>   r4   r~  )r  rC  r‹  s      r)   rM  rM  8K  s>   € Ø
�S�‰XŒX‚~€~Ø�3ŒxˆÝ�d�S¥%˜LÑ)Ô)ð 	Ø�d�7ˆNØˆ7r*   c                ó   — d}d}d}	d}
|
r|}n|}d}|}t          |¦  «        }t          j        |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          j        | ¦  «        }|j        r>t          j	        |¦  «        t          j	        |¦  «        k    rt          j
        |¦  «        }||k    �r	t          j        |¦  «        }|j        r€t          j        |¦  «        }||	k    r3t          |¦  «        D ]"}t          j        ||t          j        ¦  «         Œ#n¡t          |¦  «        D ]"}t          j        ||t          j        ¦  «         Œ#nnt          j        |¦  «        rt          j        d¦  «        }nE|j        r>t          j	        |¦  «        t          j	        |¦  «        k    rt          j        d¦  «        }t          j        ||||¦  «        }|rt          j        |¦  «         nt          j        |d¦  «         t          j        ||¦  «        }|r:t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         n9t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         t          j        |¦  «         |S )zf
    Pixmap creation directly using a short-lived displaylist, so we can support
    separations.
    r   r   r   TNr
  )rã  r�   r  r  Úfz_intersect_rectr¸  Úfz_round_rectÚfz_document_output_intentrÌ   r²  Úfz_keep_colorspaceÚfz_page_separationsÚfz_count_separationsr\  Úfz_set_separation_behaviorÚFZ_SEPARATION_SPOTÚFZ_SEPARATION_COMPOSITEÚfz_page_uses_overprintÚfz_new_separationsrÅ  r  r  r½  r  r‚  rÕ  Úfz_run_page_contentsr  )r:  rÖ   rî  rï  rì  r¯  r  Ú
SPOTS_NONEÚSPOTS_OVERPRINT_SIMÚ
SPOTS_FULLÚFZ_ENABLE_SPOT_RENDERINGÚspotsrà  rë  ré  r  Úrclipr?  ÚoirE   r®   rð  r  s                          r)   rX  rX  @K  sÂ  € ð
 €JØÐØ€Jà#ÐØð Ø#ˆˆàˆà€DØ€Jå˜sÑ#Ô#€FÝÔ˜tÑ$Ô$€DÝ˜DÑ!Ô!€EÝÔ" 4¨Ñ/Ô/€DÝÔ" 4¨Ñ0Ô0€DÝÔ˜tÑ$Ô$€Dõ 
Ô	(¨Ñ	-Ô	-€Bà	„}ð 6ÝÔ  Ñ$Ô$­Ô(=¸bÑ(AÔ(AÒAÐAÝÔ1°"Ñ5Ô5ˆJð �
ÒÑÝÔ(¨Ñ.Ô.ˆØŒ?ð 	/ÝÔ*¨4Ñ0Ô0ˆAØ˜
Ò"Ð"Ý˜q™œð Xð X�AÝÔ4°T¸1½eÔ>VÑWÔWÐWÐWðXõ ˜q™œð ]ð ]�AÝÔ4°T¸1½eÔ>[Ñ\Ô\Ð\Ð\ð]åÔ)¨$Ñ/Ô/ð 		/õ Ô+¨AÑ.Ô.ˆDˆDØŒ]ð 	/�uÔ4°RÑ8Ô8½EÔ<QÐR\Ñ<]Ô<]Ò]Ð]õ
 Ô+¨AÑ.Ô.ˆDå
Ô
'¨
°D¸$ÀÑ
FÔ
F€Càð 4ÝÔ˜cÑ"Ô"Ð"Ð"åÔ(¨¨dÑ3Ô3Ð3å
Ô
" 6¨3Ñ
/Ô
/€CØð RÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÐHåÔ" 4¨­e¬nÑ.>Ô.>ÅÄÑ@PÔ@PÑQÔQÐQÝ	Ô˜#ÑÔÐØ€Jr*   c                ó   — | S r,   r-   rj  s    r)   r¾  r¾  †K  s   € à€Hr*   r±  útyping.SequencerÚ  rµ   c                ó>   — t          t          d„ | ¦  «        ¦  «        S )Nc                óL   — t          | ¦  «        dk    rt          | d¦  «        ndS )Ng-Cëâ6?r   r   ©rý  rk  rj  s    r)   r¸	  zJM_TUPLE.<locals>.<lambda>�K  ó    € ­c°!©f¬f¸ªn¨n�u Q¨™{œ{˜{À!€ r*   ©rµ   rë  ©r±  s    r)   r˜  r˜  ŒK  ó   € Ý•ÐCÐCÀQÑGÔGÑHÔHÐHr*   c                ó>   — t          t          d„ | ¦  «        ¦  «        S )Nc                óL   — t          | ¦  «        dk    rt          | d¦  «        ndS )Nr°  r   r   r  rj  s    r)   r¸	  zJM_TUPLE3.<locals>.<lambda>‘K  r  r*   r  r  s    r)   Ú	JM_TUPLE3r  �K  r	  r*   c                óÆ   — | €dS t          | t          ¦  «        r|                      d¦  «        } t          | t          ¦  «        sJ dt	          | ¦  «        ›d| ›�¦   «         ‚| S )Nr\   r
  ztype(s)=z s=)r>   r)  rü  rá  rÈ   ©r�  s    r)   r  r  ”K  si   € Ø€yØˆrÝ�!•UÑÔð Ø�HŠH�VÑÔˆÝ�a�ÑÔÐ1Ð1Ð1¥$ q¡'¤'Ð1Ð1¨QÐ1Ð1Ñ1Ô1ÐØ€Hr*   c                ó¤  — t          | t          j        ¦  «        sJ ‚t          | ¦  «        }t          j        | ¦  «        }t          |¦  «        }d}	 t          › d|› |› �}||vrn|dz  }Œt          |¦  «        }t          j        |t          |¦  «        ¦  «        }t          j
        |d|¦  «         d|                     ¦   «         j        _        dS )z
    Add a unique /NM key to an annotation or widget.
    Append a number to 'stem' such that the result is a unique name.
    r   r   ú-r#  N)r>   r�   rõ   rà   r  r¹  ÚJM_annot_id_stemr¾  Úpdf_new_stringr7   r�  r:  rÌ   ra  )	rß   ÚstemrÖ   r0  r½  r®   Ústem_idÚresponser   s	            r)   ro  ro  �K  sÙ   € õ
 �e�Uœ^Ñ,Ô,Ð,Ð,Ð,Ý˜5Ñ!Ô!€DÝÔ# UÑ+Ô+€IÝ  Ñ&Ô&€EØ	€AðÝ%Ð1Ð1¨Ð1¨aÐ1Ð1ˆØ˜%ÐÐØØ	ˆQ‰ˆð	õ
 ˜GÑ$Ô$€HÝÔ ­3¨x©=¬=Ñ9Ô9€DÝ	Ô˜	 4¨Ñ.Ô.Ð.Ø-.€D‡H‚H�J„JÔÔ*Ð*Ð*r*   c                óè  — t          j        | |d¦  «        }t          j        |¦  «        st          t          t
          ¦  «         t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        dk    s&t          j        |t          d¦  «        ¦  «        dk    r%t          j	        |t          d¦  «        |¦  «         dS t          t          t
          ¦  «         dS )z1
    Add OC object reference to a dictionary
    r   r@  r£  ÚOCMDrÓ  N)
r�   r˜  rŠ  rÀ  ÚMSG_BAD_OC_REFr{  r  r  rŽ  r^  )rj  rA  r   Úindobjrk  s        r)   rª  rª  ²K  sÌ   € õ Ô# C¨¨qÑ1Ô1€FÝÔ˜VÑ$Ô$ð 2Ý•Õ 0Ñ1Ô1Ð1ÝÔ˜v¥x°Ñ'7Ô'7Ñ8Ô8€EÝÔ˜¥¨¡¤Ñ0Ô0°AÒ5Ð5ÝÔ ¥x°Ñ'7Ô'7Ñ8Ô8¸AÒ=Ð=åÔ˜3¥¨¡¤°Ñ7Ô7Ð7Ð7Ð7å•Õ 0Ñ1Ô1Ð1Ð1Ð1r*   c                ó€  — t          ¦   «         }d }d}d}d }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        r´t          j        t          j        |d¦  «        ¦  «        }t          j        |¦  «        dk    rut          j        |d¦  «        }t          t          j        |¦  «        ¦  «        D ]>}t          j	        t          j        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?t          j        | t          d¦  «        ¦  «        }	|	j        rùt          j        t          j        |	t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |	t          d¦  «        ¦  «        ¦  «        }|d	k    rd }t          j        |	t          d
¦  «        ¦  «        }|j        r`t          t          j        |¦  «        ¦  «        D ]>}t          j	        t          j        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?t          j        | t          d¦  «        ¦  «        }|j        r4t          j	        t          j        |t          d¦  «        ¦  «        ¦  «        }t          ¦   «         }
||
t          <   t          |¦  «        |
t           <   ||
t"          <   ||
d<   |
S )NrA  ÚBorderr   rZ  r   ÚBSrù	  rk	  r\   r  ÚBErç   ro  )r´   r�   r  r  r™  rÿ  r¬  r«  r\  r  rk   rÌ   r‰  r5   rÂ  rµ   Údictkey_dashesÚdictkey_style)r0  Údash_pyrm  rl  ro  r  Údashr®   r"  Úbs_or/  s              r)   r•  r•  ÂK  sR  € Ý‰fŒf€GØ€EØ€EØ€FØ
€Cå
Ô
˜i­°(Ñ);Ô);Ñ
<Ô
<€CÝÔ˜3ÑÔð %ÝÔ!¥5Ô#6¸¸QÑ#?Ô#?Ñ@Ô@ˆÝÔ Ñ$Ô$¨Ò)Ð)ÝÔ&¨¨QÑ/Ô/ˆDÝ�EÔ/°Ñ6Ô6Ñ7Ô7ð %ð %�ÝÔ&­Ô(;¸TÀ1Ñ(EÔ(EÑFÔF�Ø—’ Ñ$Ô$Ð$Ð$åÔ˜y­(°4©.¬.Ñ9Ô9€DØ„ð 	%ÝÔ!¥5Ô#5°t½XÀc¹]¼]Ñ#KÔ#KÑLÔLˆÝÔ!¥5Ô#5°t½XÀc¹]¼]Ñ#KÔ#KÑLÔLˆØ�BŠ;ˆ;ØˆEÝÔ  $­°©¬Ñ6Ô6ˆØŒ>ð 	%Ý�EÔ/°Ñ5Ô5Ñ6Ô6ð %ð %�ÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔE�Ø—’ Ñ$Ô$Ð$Ð$å
Ô
˜i­°$©¬Ñ
8Ô
8€CØ
„~ð LÝÔ!¥5Ô#5°s½HÀS¹M¼MÑ#JÔ#JÑKÔKˆå
‰&Œ&€CØ€C�ÑÝ  '™?œ?€C�ÑØ€C�ÑØ€Cˆ�NØ€Jr*   c                óÂ  — t          ¦   «         }t          ¦   «         }t          ¦   «         }t          j        | t          j        ¦  «        }t          j        |¦  «        rbt          j        |¦  «        }t          |¦  «        D ]>}t          j        t          j	        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?||t          <   t          j        | d¦  «        }t          j        |¦  «        rbt          j        |¦  «        }t          |¦  «        D ]>}t          j        t          j	        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?||t          <   |S )NrC  )r5   r´   r�   r  ÚPDF_ENUM_NAME_Cr™  r«  r\  rÿ  r¬  rk   Údictkey_stroker  Údictkey_fill)r0  r/  ÚbcÚfcr±  rE   r®   ro  s           r)   r¤  r¤  êK  s)  € Ý
‰&Œ&€CÝ	‰Œ€BÝ‰Œ€BÝÔ˜9¥eÔ&;Ñ<Ô<€AÝÔ˜!ÑÔð ÝÔ Ñ"Ô"ˆÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%8¸¸AÑ%>Ô%>Ñ?Ô?ˆCØ�IŠI�c‰NŒNˆNˆNØ€C�ÑåÔ˜I tÑ,Ô,€AÝÔ˜!ÑÔð ÝÔ Ñ"Ô"ˆÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%8¸¸AÑ%>Ô%>Ñ?Ô?ˆCØ�IŠI�c‰NŒNˆNˆNà€C�ÑØ€Jr*   c                óv  — t          | t          ¦  «        sJ ‚d }d}|                      t          ¦  «        }|                      t          ¦  «        }|                      t
          ¦  «        }|                      dd¦  «        }t          |¦  «        }	t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         |dk     r|	                     t          ¦  «        }|€|	                     t          ¦  «        }|€|	                     t
          ¦  «        }|dk     r|	                     dd¦  «        }t          |t          ¦  «        r‚t          |¦  «        dk    rot          |¦  «        }t          j        ||¦  «        }
|D ]}t          j        |
|¦  «         Œt          j        ||
t          d¦  «        t          d¦  «        ¦  «         t          j        |t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «         |dk    rt!          |¦  «        }nt          d¦  «        }t          j        ||t          d¦  «        t          d	¦  «        ¦  «         |dk    ršt          j        |t          d¦  «        d
¦  «         t          j        |t          d¦  «        ¦  «        }t          j        |t          d	¦  «        t          d¦  «        ¦  «         t          j        |t          d¦  «        |¦  «         d S d S )Nr   ro  rA  r  r  r  r  rù	  rk	  r   rö  rç   )r>   r5   r8   rÂ  r  r  r•  r�   rQ  r  rµ   r7   r[  Úpdf_array_push_intr%  Úpdf_new_realÚJM_get_border_stylerb  r  r^  rY  )r˜  r:  r0  r  ÚdashlenÚnwidthÚndashesÚnstyleÚncloudsÚoborderÚdarrr  s               r)   rr  rr  L  s·  € Ý�f�dÑ#Ô#Ð#Ð#Ð#Ø
€CØ€GØ�ZŠZ�Ñ'Ô'€FØ�jŠj�.Ñ)Ô)€GØ�ZŠZ�Ñ'Ô'€FØ�zŠz˜8 RÑ(Ô(€Gõ ˜yÑ)Ô)€Gõ 
Ô˜	¥8¨D¡>¤>Ñ2Ô2Ð2Ý	Ô˜	¥8¨D¡>¤>Ñ2Ô2Ð2Ý	Ô˜	¥8¨HÑ#5Ô#5Ñ6Ô6Ð6ð �‚z€zØ—’�mÑ,Ô,ˆØ€Ø—+’+�~Ñ.Ô.ˆØ€~Ø—+’+�}Ñ-Ô-ˆØ�‚{€{Ø—;’; ¨"Ñ-Ô-ˆå�7�EÑ"Ô"ð M¥s¨G¡}¤}°qÒ'8Ð'8Ý�w‘-”-ˆÝÔ" C¨Ñ1Ô1ˆØð 	/ð 	/ˆAÝÔ$ d¨AÑ.Ô.Ð.Ð.ÝÔ˜Y¨­h°t©n¬n½hÀs¹m¼mÑLÔLÐLå	ÔØÝÔ Ñ'Ô'Ý�T‰NŒNÝ�S‰MŒMñ	ô ð ð �!‚|€|Ý! 6Ñ*Ô*ˆˆå�s‰mŒmˆÝ	Ô˜ C­°$©¬½À#¹¼ÑGÔGÐGà�‚{€{ÝÔ ­H°T©N¬N¸AÑ>Ô>Ð>ÝÔ  )­X°d©^¬^Ñ<Ô<ˆÝÔ˜C¥¨#¡¤µ¸±´Ñ>Ô>Ð>ÝÔ ¥X¨c¡]¤]°GÑ<Ô<Ð<Ð<Ð<ð	 €{r*   c                ó¢   — | dk    rdS d| cxk    rdk    sn | dk    rt          | ¦  «        S d| cxk    rdk    rn ndS | d	k    rd
| d›�S d| d›�S )Nr!  z\u005crú  é   r¯  i Ø  iÿß  z\ufffdéÿÿ  z\ur
  z\UÚ08x©r*
  ©r	  s    r)   Úmake_escaper:  7L  s†   € Ø	ˆR‚x€xØˆyØ	ˆrˆˆŠˆ�SŠˆˆˆ˜B "šH˜HÝ�2‰wŒwˆØ	�2Ð	Ð	Ò	Ð	˜Ò	Ð	Ð	Ð	Ð	ØˆyØ	ˆvŠˆØ�Rˆ~ˆ~ˆ~Ðà�Rˆ~ˆ~ˆ~Ðr*   c                óJ   — t          j        | t          |¦  «        ¦  «         dS )zG
    APPEND non-ascii runes in unicode escape format to fz_buffer.
    N)r�   r1  r:  )rY  r	  s     r)   r¤  r¤  DL  s#   € õ 
Ô˜4¥¨R¡¤Ñ1Ô1Ð1Ð1Ð1r*   c                óÖ   — t          |¦  «        }|j        |j        |j        |j        ||||f}|                      |¦  «         |dz   t          j        t          j        j        ¦  «        fS )z'
    Functions for wordlist output
    r   )	r€
  r  r  r  r  rk   r�   rx  rŸ  )rÿ  rY  rþ  r¨  r«  rÿ  r�  r¯  s           r)   rú  rú  KL  sj   € õ 	˜tÑ$Ô$€AàŒHØŒHØŒHØŒHØØØØð	€Eð 
‡L‚L�ÑÔÐØ�A‰:•u”|¥E¤LÔ$<Ñ=Ô=Ð=Ð=r*   c                ó¤  — t          | ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        s#t          j        |t          d¦  «        d¦  «        }t          j        | d¦  «        }t          j        |t          d¦  «        |¦  «         |�#t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «         t          j        |t          d	¦  «        d¦  «        }|snŸt          j        |t          d
¦  «        ¦  «        }t          |¦  «        }	t          |	¦  «        D ]^}
d}t          ||
¦  «        \  }}|dk    rŒt          j        | |d¦  «        }t          j        ||¦  «        rt          j        ||¦  «         Œ_t          j        ||¦  «         dS )z1
    Add OC configuration to the PDF catalog
    r­  r   r   r  Nr©  Ú	BaseStater°  r¯  r¬  r   )r±  r�   r  r  r™  r¥  rc  r�  r^  r7   r\  rM  r˜  Úpdf_array_containsr›  )rj  r   rŸ  r¯  r¼  Úconfigsr  Úonarrayrz  rE   r®   r   rp  Úinds                 r)   r�  r�  ^L  s©  € õ ! #Ñ
&Ô
&€CÝÔ  #¥x°	Ñ':Ô':Ñ;Ô;€GÝÔ˜wÑ'Ô'ð IÝÔ*¨Cµ¸)Ñ1DÔ1DÀaÑHÔHˆÝÔ˜C Ñ#Ô#€AÝ	Ô" A¥x°Ñ'7Ô'7¸Ñ>Ô>Ð>ØÐÝÔ&¨­8°IÑ+>Ô+>ÀÑHÔHÐHÝ	Ô˜�8 KÑ0Ô0µ(¸5±/´/ÑBÔBÐBÝÔ&¨­8°D©>¬>¸1Ñ=Ô=€GØð 4ØåÔ! 3­°Ñ(8Ô(8Ñ9Ô9ˆÝ�‰GŒGˆÝ�q‘”ð 	4ð 	4ˆAØˆDÝ! " aÑ(Ô(‰GˆAˆtØ�AŠvˆvØÝÔ(¨#¨t°QÑ7Ô7ˆCÝÔ'¨¨sÑ3Ô3ð 4ÝÔ$ g¨sÑ3Ô3Ð3øÝ	Ô˜' 1Ñ%Ô%Ð%Ð%Ð%r*   c                óÖ   — t          | |¦  «        }t          j        |¦  «        }| j        j        s|S |j        |j        |j        j        z   k     r|j        |j        j        z
  |_        |S )z"
    return rect of char quad
    )ÚJM_char_quadr�   r˜  rÌ   rÓ
  r  r  rÈ  )ro   r	  r›  r.  s       r)   r¢  r¢  |L  sf   € õ 	�T˜2ÑÔ€AÝÔ Ñ"Ô"€AØŒ?Ô ð ØˆØ„tˆaŒd�R”]Ô'Ñ'Ò'Ð'ØŒt�b”mÔ(Ñ(ˆŒØ€Hr*   c                ó0  — d}|r|r|t          ||¦  «        z  }|t          j        | ¦  «        t          z  z  }|t          j        | ¦  «        t
          z  z  }|t          j        | ¦  «        t          z  z  }|t          j        | ¦  «        t          z  z  }|S r‡   )
Údetect_super_scriptr�   rü
  ÚTEXT_FONT_ITALICr  ÚTEXT_FONT_SERIFEDrþ
  ÚTEXT_FONT_MONOSPACEDrú
  ÚTEXT_FONT_BOLD)rb  ro   r	  rÎ  s       r)   ÚJM_char_font_flagsrK  ‰L  s›   € Ø€EØð /�ð /ØÕ$ T¨2Ñ.Ô.Ñ.ˆØ	�UÔ$ TÑ*Ô*Õ-=Ñ=Ñ=€EØ	�UÔ# DÑ)Ô)Õ,=Ñ=Ñ=€EØ	�UÔ(¨Ñ.Ô.Õ1EÑEÑE€EØ	�UÔ" 4Ñ(Ô(­>Ñ9Ñ9€EØ€Lr*   c                óH  — t           r1t          j        t          j        | j        |j        ¦  «        ¦  «        S t          | t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚t          j
        r|j        S | j        j        r|j        S t          j        t          j        |j        j        ¦  «        ¦  «        }t!          |¦  «        }t#          |¦  «        }|j        j        }||z
  t&          z   }|dk    r.t          j        dk    rt          j        |j        j        ¦  «        S |j        j        }t          j        |¦  «        }|j        |j        z
  }|dk     rd}d}d}t          j        s|dk     r
||z  }||z  }||z
  }||z  |z  }||z  |z  }| j        j        j        }	| j        j        j        }
t          j        |	|
 |
|	dd¦  «        }t          j        |	|
|
 |	dd¦  «        }|	dk    rd|_        d|_        t          j        dddd|j        j        j         |j        j        j         ¦  «        }t          j        dddd|j        j        j        |j        j        j        ¦  «        }t          j        t          j        |j        j        ¦  «        |¦  «        }t          j        ||¦  «        }|	dk    rA|j        j        dk    r1||j        _        ||j         _        ||j!        _        ||j"        _        n4| |j        _        | |j         _        | |j!        _        | |j"        _        |j!        j        dk     rd|j!        _        d|j        _        |j"        j        |j!        j        z
  }|t&          k     rst          j#        ||j        j$        ¦  «        }|rRt          j%        ||| j        j        ¦  «        }|j!        j        ||z  z   |j"        _        |j"        j        |j         _        t          j        ||¦  «        }t          j        ||¦  «        }|S )zI
    re-compute char quad if ascender/descender values make no sense
    r   r   r°  çš™™™™™¹¿çÍÌÌÌÌÌì?r®  rA  )&r'  r�   r   r   rD  rÌ   r>   ÚFzStextLineÚFzStextCharr  r‹   r  rÓ
  ÚFzFontÚll_fz_keep_fontrb  ÚJM_font_ascenderÚJM_font_descenderrÈ  ÚFLT_EPSILONr‰   rË
  r  r  rs  r4  r5  r#  r  r†  Úfz_transform_quadr¯  rü  rú  rû  r-  rË  r.  )ro   r	  rb  r_  r`  r  Úasc_dscr?  ÚfwidthrË  r�  Útrm1Útrm2Úxlate1Úxlate2r  Úcwidthr1  s                     r)   rD  rD  ”L  s²  € õ ð Qõ Œ|�EÔ.°´ÀÄÑOÔOÑPÔPÐPå�d�EÔ-Ñ.Ô.Ð.Ð.Ð.Ý�b�%Ô+Ñ,Ô,Ð,Ð,Ð,ÝÔ%ð ØŒwˆØ„Ôð ØŒwˆÝŒ<�Ô-¨b¬mÔ.@ÑAÔAÑBÔB€DÝ
˜4Ñ
 Ô
 €CÝ
˜DÑ
!Ô
!€CØŒMÔ€EØ�C‰i�+Ñ%€GØ�!‚|€|�Ô4¸Ò9Ð9ÝŒ|˜BœMÔ.Ñ/Ô/Ð/ð
 ŒMÔ€EÝÔ˜dÑ#Ô#€DØŒW�t”wÑ€FØ
ˆT‚z€zØˆØˆØˆåÔ#ð  w°¢{ {Ø�G‰mˆØ�G‰mˆØ�C‰i€GØ
�‰+˜Ñ
€CØ
�‰+˜Ñ
€Cð
 	ŒÔÔ€AØŒÔÔ€AÝÔ  A 2 q¨!¨Q°Ñ2Ô2€DÝÔ  1 q b¨!¨Q°Ñ2Ô2€DØ	ˆRŠˆØˆŒØˆŒÝÔ! ! Q¨¨1¨r¬}Ô/CÔ/EÐ.EÈÌÔH\ÔH^ÐG^Ñ_Ô_€FÝÔ! ! Q¨¨1¨b¬mÔ.BÔ.DÀbÄmÔFZÔF\Ñ]Ô]€FåÔ"¥5¤<°´Ô0BÑ#CÔ#CÀVÑLÔL€DÝÔ" 4¨Ñ.Ô.€Dð 	ˆA‚v€v�$”'”)˜a’-�-ØˆŒŒ	ØˆŒŒ	ØˆŒŒ	ØˆŒŒ	ˆ	à�DˆŒŒ	Ø�DˆŒŒ	Ø�DˆŒŒ	Ø�DˆŒŒ	ð
 „w„y�1‚}€}ØˆŒŒ	ØˆŒŒ	àŒWŒY˜œœÑ"€FØ•ÒÐÝÔ)¨4°´´ÑAÔAˆØð 	"ÝÔ+¨T°5¸$¼/Ô:OÑPÔPˆFØœœ	 F¨U¡NÑ2ˆDŒGŒIØœœ	ˆDŒGŒIåÔ" 4¨Ñ.Ô.€DÝÔ" 4¨Ñ0Ô0€DØ€Kr*   c           
     óâ  — t          j        | j        ¦  «        }t          j        | d¦  «        }t	          |¦  «        }|dk    rdS t          j        |t          d¦  «        ¦  «        }g }t          |¦  «        D ]õ}t          j        t          j	        ||¦  «        ¦  «        }|dk    rŠt          j
        t          j	        t          j	        ||¦  «        d¦  «        ¦  «        t          j
        t          j	        t          j	        ||¦  «        d¦  «        ¦  «        f}|                     |¦  «         Œ¹t          j
        t          j	        ||¦  «        ¦  «        }|                     |¦  «         Œö|S )z8
    return list of choices for list or combo boxes
    r   Nrå   r   r   )r�   r  rÄ   Úpdf_choice_widget_options2r7   rP  r  r\  r«  r¬  r  rk   )	rß   r0  rÅ  rE   ÚoptarrrW  r®   r�  r"  s	            r)   ÚJM_choice_optionsra  íL  sD  € õ Ô# U¤ZÑ0Ô0€IåÔ+¨U°AÑ6Ô6€DÝˆT‰
Œ
€AØˆA‚v€vØˆåÔ+¨Y½À¹¼ÑHÔH€FØ€Eå�A‰YŒYð 
ð 
ˆÝÔ¥Ô!4°f¸aÑ!@Ô!@ÑAÔAˆØ�Š6ˆ6åÔ,­eÔ.AÅ5ÔCVÐX^Ð`aÑCbÔCbÐdeÑ.fÔ.fÑgÔgÝÔ,­eÔ.AÅ5ÔCVÐX^Ð`aÑCbÔCbÐdeÑ.fÔ.fÑgÔgðˆCð �LŠL˜#ÑÔÐÐåÔ*­EÔ,?ÀÈÑ,KÔ,KÑLÔLˆCØ�LŠL˜#ÑÔÐÐØ€Lr*   c                óÆ  — t          j        |t          j        | ¦  «        ¦  «        }|j        |j        z
  }|j        |j        z
  }|dk    s|dk    rdS |                      ¦   «         }||j        |                      ¦   «         z
  z  |  	                    ¦   «         |j        |  
                    ¦   «         z
  z  z   }t          j        |                      ¦   «         ¦  «        dk    rÊd|z
  }	 |}t          d|¦  «        D ]�}t          j        | |d¦  «         |dz  }t          j        | |d¦  «         |dz  }t          j        | |d¦  «         |dz  }t          j        | ||¦  «         |dz  }|                      ¦   «         rt          j        | |d¦  «         |dz  }Œž||z  }|dk    rn|dz  }ŒÂdS 	 |}t          |¦  «        D ]�}t          |  	                    ¦   «         dz
  ¦  «        D ]}	t          j        | ||¦  «         |dz  }Œ|                      ¦   «         rt          j        | |d¦  «         |dz  }Œtt          j        | ||¦  «         |dz  }Œ�||z  }|dk    rn|dz  }Œ³dS )zO
    Clear a pixmap rectangle - my version also supports non-alpha pixmaps
    r   rZ  r
  r   )r�   Úfz_intersect_irectr6  r  r  r  r  rÓ  r5  rE   r4  r²  rë  r\  rÔ  rì  )
rõ  r¸   rÜ
  r   r5  ÚdestspanÚdestpr�  r4  rª  s
             r)   r  r  	M  s‘  € õ 	Ô  ¥EÔ$8¸Ñ$>Ô$>Ñ?Ô?€AØ	ŒˆqŒt‰€AØ	ŒˆqŒt‰€AØˆA‚v€v��a’�Øˆqà�{Š{‰}Œ}€HØ˜œ˜tŸvšv™xœx™Ñ(¨4¯6ª6©8¬8°q´t¸d¿fºf¹h¼h±Ñ+GÑG€Eõ Ô˜TŸ_š_Ñ.Ô.Ñ/Ô/°1Ò4Ð4Ø�e‘ˆð	ØˆAÝ˜1˜a‘[”[ð ð �ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘�Ø—:’:‘<”<ð ÝÔ(¨¨q°#Ñ6Ô6Ð6Ø˜‘F�AøØ�XÑˆEØ�AŠvˆvØØ�‰FˆAð#	ð$ ˆqðØˆÝ�q‘”ð 		ð 		ˆAÝ˜4Ÿ6š6™8œ8 A™:Ñ&Ô&ð ð �ÝÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘��Ø�zŠz‰|Œ|ð ÝÔ$ T¨1¨cÑ2Ô2Ð2Ø�Q‘��åÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘��Ø�ÑˆØ�Š6ˆ6ØØ	ˆQ‰ˆðð  ˆ1r*   c                óX  — t          | t          t          f¦  «        r| g} t          | t          t          f¦  «        sdg fS t          | ¦  «        dvrdg fS | d d …         }t          t          |¦  «        ¦  «        D ]}||         dk     s||         dk    rd||<   Œ t          |¦  «        |fS )NrA  )r   r   r   rZ  r   r   )r>   r4   r~  r´   rµ   r7   r\  )r  rG   r®   s      r)   rK  rK  @M  s³   € å�%�#�u˜Ñ&Ô&ð Ø�ˆå�u�t¥U˜mÑ,Ô,ð Ø�2ˆvˆå
ˆ5�z„z˜Ð%Ð%Ø�2ˆvˆà
���Œ(€CÝ•3�s‘8”8‰_Œ_ð ð ˆØˆqŒ6�AŠ:ˆ:˜˜Qœ !š˜ØˆC�‰FøÝˆs‰8Œ8�Sˆ=Ðr*   c                ó8   — 	 t          j        | j        |¦  «        S r,   )r'  r   Úll_JM_color_countrÌ   r5   r�   r6  rc  rï  r  rÓ  r  r  r  r  rE   r5  r4  rÊ  Úfz_is_empty_irectr\  r8   )rÃ  r  r    r$  ró  rÓ  rl  rà  rE   Ú	substrider�  Úoldpixr®   r‘  Únewpixr%  rË  s                    r)   r   r   RM  s   € ð<ÝÔ& r¤}°dÑ;Ô;Ð;r*   c                óÖ   — t          j        | t           j        ¦  «        \  }}|r|dk    rdS t          j        t          j        ||¦  «        ¦  «        }t          j        ||¦  «         |S )z*
    compress char* into a new buffer
    r   N)r�   Ú fz_new_deflated_data_from_bufferÚFZ_DEFLATE_BESTr|  Úfz_new_buffer_from_dataÚfz_resize_buffer)Úinbufferrˆ  Úcompressed_lengthrÐ  s       r)   ÚJM_compress_bufferrt  zM  su   € õ $ÔDØÝÔ!ñô Ñ€DÐ
ð
 ð Ð$¨Ò)Ð)ØˆtÝ
Œ.�Ô6°tÐ=NÑOÔOÑ
PÔ
P€CÝ	Ô˜3Ð 1Ñ2Ô2Ð2Ø€Jr*   c                ó†  — d}t          j        ¦   «         }| D ]”}|j        j        t          j        k    rŒ|D ]t}d}|D ]i}t          ||¦  «        }t          ||¦  «        rGd}|r|                     d¦  «         d}|                     t          |j        j
        ¦  «        ¦  «         Œj|rd}ŒuŒ•|                     ¦   «         }	|	S )Nr   r   r%   )r9   ÚStringIOrÌ   rÈ   r�   r   r¢  r£  r   r:  rË  r�  )
rÖ   r×  Úneed_new_linerñ  rg	  ro   Úline_had_textr	  r.  r�  s
             r)   rô  rô  ŠM  sè   € Ø€MÝŒ[‰]Œ]€FØð "ð "ˆØÔÔ ¥EÔ$=Ò=Ð=ØØð 	"ð 	"ˆDØˆMØð ?ð ?�Ý   rÑ*Ô*�Ý# D¨!Ñ,Ô,ð ?Ø$%�MØ$ð *ØŸš TÑ*Ô*Ð*Ø()˜Ø—L’L¥¨R¬]¬_Ñ!=Ô!=Ñ>Ô>Ð>øØð "Ø !�øð	"ð 	�ŠÑÔ€AØ€Hr*   r)  c                ó²  — t          j        ¦   «         }d}|}|}||k    rd}|}|}t          |¦  «        }|}	g }
	 t          |	||¦  «        s�nÊt          j        | |	¦  «        }t          j        |¦  «        }t          j        ||¦  «        \  }}}t          j        ||t          j        ¦   «         t          j	        ¦   «         ¦  «         t          j
        |¦  «         d}t          j        |||||¦  «        }t          j        |d|¦  «         t          j        ||	¦  «        }t          j        |¦  «        }|j        rÔ|                     ¦   «         }t          j        |                     ¦   «         ¦  «        }t          j        |¦  «        }|rt          j        |||¦  «         nRt          j        | |¦  «        \  }}}|	|||j        |j        z
  |j        |j        z
  ||dœ}|
                     |¦  «         |                     ¦   «         }|j        °Ô|	|z  }	�ŒÝ|
D ]à}t          j        ||d         ¦  «        }|d         }t          j        ¦   «         }d|_        |j        |j        _        |j         |j        _         |d         |_!        |d	         |_"        |d
         |_#        |d         |_$        d|_%        |d         }t          j&        t          j'        |¦  «        ¦  «        }t          j        |||¦  «         Œát          j(        ¦   «         }d|_)        d|_*        d|_+        d|_,        d|_-        d|_.        d|_/        d|_0        d|_1        d|_2        d|_3        t          j4        d¦  «        }t          j5        |¦  «        }t          j6        |||¦  «         | 7                    ¦   «          t          j8        |¦  «        }ts          |tt          ¦  «        sJ ‚|S )zx
    Convert any MuPDF document to a PDF
    Returns bytes object containing the PDF, created via 'write' function.
    r   rA  N)rÖ   rG   rd  rÑ  r   r·  r¸  rÖ   rG   rÐ  rÑ  r   r·  r¸  r   rd  r   i    );r�   rÆ   r•  r¯  rK  r  Úpdf_page_writer  r‚  rÕ  r  r~  r  Úpdf_load_pager¼  rÌ   rl  rx  r  r>  Úpdf_create_linkr¶  r  r  r  r  rk   rL  Úfz_link_destrÈ   rà  rß  rÖ   rÑ  r   r4  r5  rh  Úpdf_new_uri_from_explicit_destÚ
FzLinkDestr#	  r*	  r&	  r'	  r(	  r.	  r$	  r%	  r)	  r,	  r-	  r+	  rî  rï  r9	  r'  rÎ
  r>   r)  )r:  r€  rÄ  ri  rñ  r€  r�  rp  rb  r®   Úinternal_linksrÖ   r€  r  rq  r�  r‚  rg  rÁ  rl  r  rº  rG   r·  r¸  Úilinkrõ  rÅ  r/  r(  rË  s                                  r)   rÔ  rÔ  ¡M  s¹  € õ
 ÔÑ Ô €FØ€DØ
€AØ
€AØ	ˆB‚w€wØˆØˆØˆÝ
˜6Ñ
"Ô
"€CØ
€AØ€Nð Ý˜˜1˜aÑ Ô ð 	ÙÝÔ! # qÑ)Ô)ˆÝÔ& tÑ,Ô,ˆÝ#(Ô#7¸ÀÑ#IÔ#IÑ ˆˆY˜ÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÝÔ˜cÑ"Ô"Ð"ØˆÝÔ% f¨h¸¸YÈÑQÔQˆÝÔ˜f b¨(Ñ3Ô3Ð3õ Ô& v¨qÑ1Ô1ˆõ Ô" 4Ñ(Ô(ˆØŒoð 	Ø—(’(‘*”*ˆCÝ”< §	¢	¡¤Ñ,Ô,ˆDÝÔ3°CÑ8Ô8ˆKàð -ÝÔ% h°°cÑ:Ô:Ð:Ð:õ $Ô3°C¸Ñ=Ô=‘��R˜Ø ¨°dÀÄÈÌÁÐW[ÔW^Ð_cÔ_fÑWfÐnpÐxzÐ{Ð{�Ø×%Ò% eÑ,Ô,Ð,Ø—9’9‘;”;ˆDð Œoð 	ð 	
ˆT‰	ˆñA ðH  ð 3ð 3ˆÝÔ& v¨u°V¬}Ñ=Ô=ˆØ�EŒlˆÝÔ!Ñ#Ô#ˆØˆŒ	Øœ;ˆŒÔØœˆŒŒØ�s”ˆŒØ�s”ˆŒØ�t”ˆŒØ�t”ˆŒØˆŒ	Ø�6Œ]ˆÝÔ2µ5Ô3CÀDÑ3IÔ3IÑJÔJˆÝÔ˜h¨¨cÑ2Ô2Ð2Ð2åÔ Ñ"Ô"€DØ€D„OØ€DÔØ€DÔØ€DÔØ€DÔØ€DÔØ€D„MØ€DÔØ€D„NØ€D„MØ€D„Nå
Ô
˜dÑ
#Ô
#€CÝ
Œ.˜Ñ
Ô
€CÝ	Ô˜V S¨$Ñ/Ô/Ð/Ø×ÒÑÔÐÝÔ$ SÑ)Ô)€AÝ�a�ÑÔÐÐÐØ€Hr*   c           
     óþ  — t          j        t          j        t          j        | ¦  «        d¦  «        ¦  «        }t          j        |t           j        ¦  «        }t          j        |¦  «        }	 t          | ||¦  «         t          j        |t          d¦  «        |¦  «         |t           j
        k    ru|t          t          z  z  }t          j        t          j        | ¦  «        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          j        t          j        | ¦  «        d¦  «        }|j        sft          j        | d¦  «        }t          j        t          j        | ¦  «        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          j        ||¦  «         n¬# t$          $ rŸ t&          rt)          ¦   «          t          j        ||¦  «         |t           j
        k    rct          j        t          j        | ¦  «        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         ‚ w xY w|S )	NzRoot/AcroForm/SigFlagsrð   r;  r<  r´  zRoot/AcroForm/Fieldsr   rÇ  )r�   r  rÅ  r>  Úpdf_create_annot_rawrC  r  ÚJM_set_field_typer�  r  ÚPDF_WIDGET_TYPE_SIGNATUREÚSigFlag_SignaturesExistÚSigFlag_AppendOnlyr%  r$  rÌ   r[  r›  rg   r  rv   rª  )	r:  rÖ   rÈ   Ú	fieldnameÚold_sigflagsrß   r0  rµ  rq  s	            r)   rÃ  rÃ  ýM  s;  € ÝÔ#¥EÔ$7½Ô8IÈ#Ñ8NÔ8NÐPhÑ$iÔ$iÑjÔj€Lõ
 Ô& t­UÔ-CÑDÔD€EÝÔ# EÑ*Ô*€Ið&Ý˜#˜y¨$Ñ/Ô/Ð/ÝÔ& yµ(¸3±-´-ÀÑKÔKÐKà•5Ô2Ò2Ð2Ø#Õ'>ÕASÑ'SÑTˆHÝÔÝÔ% cÑ*Ô*ÝÔ% hÑ/Ô/Ý˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜ZÑ(Ô(ñô ð õ Ô"¥5Ô#4°SÑ#9Ô#9Ð;QÑRÔRˆØŒð 	ÝÔ& s¨AÑ.Ô.ˆDÝÔÝÔ% cÑ*Ô*ØÝ˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜XÑ&Ô&ñô ð õ 	Ô˜T 9Ñ-Ô-Ð-Ð-øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4ÝÔ˜t UÑ+Ô+Ð+à•5Ô2Ò2Ð2ÝÔÝÔ% cÑ*Ô*ÝÔ% lÑ3Ô3Ý˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜ZÑ(Ô(ñô ð ð 	ðøøøð €Ls   Á.E"G ÇB)I:c                ón  — t           rt          j        | ¦  «        S t          | ¦  «        }t	          j        t	          j        | t          d¦  «        ¦  «        ¦  «        }t	          j        |¦  «        st	          j	        |¦  «        r|}|j
        |j
        z
  }|j
        |j        z
  }||_        ||_
        |S )z%
    return a PDF page's CropBox
    rk  )r'  r   rƒ  rq  r�   r\  rP  r  r¾  r½  r  r  )r‚  r€  r„  r  r  s        r)   rƒ  rƒ  /N  s¯   € õ ð *ÝÔ Ñ)Ô)Ð)å˜8Ñ$Ô$€HÝÔÝÔ.¨x½À)Ñ9LÔ9LÑMÔMñô €Gõ Ô  Ñ)Ô)ð ­UÔ-CÀGÑ-LÔ-Lð ØˆØ	Œ�w”zÑ	!€BØ	Œ�w”zÑ	!€BØ€G„JØ€G„JØ€Nr*   c                ó¾   — t          | ¦  «        }t          |j        |j        z
  ¦  «        }t          |j        |j        z
  ¦  «        }t          j        ||¦  «        }|S r,   )rƒ  rý  r  r  r  r  r�   Úfz_make_point)r‚  r  r   rÑ  rÈ  s        r)   ÚJM_cropbox_sizer�  CN  sR   € Ý�hÑÔ€DÝˆDŒG�d”gÑÑÔ€AÝˆDŒG�d”gÑÑÔ€AÝÔ˜q !Ñ$Ô$€DØ€Kr*   c                óH   — t          | ¦  «        }t          j        |¦  «        S )z&
    just the inverse of rotation
    )r·  r�   r~  )rÖ   Úmps     r)   r0  r0  KN  s"   € õ 
˜tÑ	$Ô	$€BÝÔ! "Ñ%Ô%Ð%r*   c                ó  — d}t          j        | d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d	¦  «        t          d
¦  «        ¦  «         d}	t          j        | t          j        |	¦  «        t          j        ¦   «         d¦  «        }
t          j        |t          d¦  «        |
¦  «         t          | |
||¦  «         t          j
        |¦  «        \  }}t          j        |
t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         t          j        |
t          d¦  «        d¦  «        }t          j        |t          d¦  «        |¦  «         |S )zE
    embed a new file in a PDF (not only /EmbeddedFiles entries)
    r   rþ  r  rZ  r¶  r·  r¹  rº  r@  ÚFilespecs     r!  r»  r¼  r½  )r�   rc  rb  r  r�  r^  r>  rœ  r?  r9  r#  rY  )rj  rÐ  rf   r&  rÉ  rY
  r  r"  ÚefÚbsrÝ  r  rÖ  s                r)   rÿ  rÿ  SN  s·  € ð €DÝ
Ô
˜S !Ñ
$Ô
$€CÝ	Ô˜C¥¨$¡¤°Ñ3Ô3Ð3Ý	Ô	  ¥h¨t¡n¤n°aÑ	8Ô	8€BÝ	Ô" 3­°©¬°xÑ@Ô@Ð@Ý	Ô" 3­°©¬¸	ÑBÔBÐBÝ	Ô" 3­°Ñ(8Ô(8¸$Ñ?Ô?Ð?Ý	Ô�s�H VÑ,Ô,­h°zÑ.BÔ.BÑCÔCÐCØ	€BÝÔØåÔ0°Ñ4Ô4ÝŒL‰NŒNØñ	ô 	€Aõ 
Ô�r�8 C™=œ=¨!Ñ,Ô,Ð,Ý�S˜!˜S (Ñ+Ô+Ð+ÝÔ% cÑ*Ô*�G€Dˆ!Ý	Ô˜1�h t™nœn¨dÑ3Ô3Ð3Ý	Ô˜1�h xÑ0Ô0°$Ñ7Ô7Ð7ÝÔ$ Q­°Ñ(:Ô(:¸AÑ>Ô>€FÝ	Ô˜6¥8¨FÑ#3Ô#3°TÑ:Ô:Ð:Ø€Jr*   c                ó  — t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }|j        r:t          j        |¦  «        dk    r"t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        r%t          j        |t          d¦  «        d¦  «         dS dS )	z°
    perform some cleaning if we have /EmbeddedFiles:
    (1) remove any /Limits if /Names exists
    (2) remove any empty /Collection
    (3) set /PageMode/UseAttachments
    r;  Ú
Collectionr   rò  ró  r’  rÐ	  N)	r�   r  r>  r  rÌ   r‹  rQ  r*  re  )rj  rF  ÚcollÚefiless       r)   r6	  r6	  xN  só   € õ Ô�uÔ0°#Ñ6Ô6½ÀÑ8HÔ8HÑIÔI€Dõ Ô˜d¥H¨\Ñ$:Ô$:Ñ;Ô;€DØ„ð 9�5Ô-¨dÑ3Ô3°qÒ8Ð8ÝÔ˜4¥¨,Ñ!7Ô!7Ñ8Ô8Ð8åÔ ØÝ�WÑÔÝ�_Ñ%Ô%Ý�WÑÔñ	ô €Fð Ôð NÝÔ ¥h¨zÑ&:Ô&:Ð<LÑMÔMÐMÐMÐMðNð Nr*   c                ób   — | j         sdS t          j        | ¦  «        }t          |d¬¦  «        }|S )Nr\   rî  ©Úerrors)rÌ   r�   rÎ
  rõ  )rY  r�  r"  s      r)   r€
  r€
  �N  s8   € ØŒ?ð ØˆrÝÔ$ TÑ*Ô*€AÝ
*¨1°YÐ
?Ñ
?Ô
?€CØ€Jr*   c           	     ó  — t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }|j        sÎt          j        d¦  «        }d}|D ]}|t          |¦  «        z  }Œt          j        t          j        | ¦  «        t          d¦  «        d¦  «        }t          j        |t          j	        |t          |¦  «        ¦  «        ¦  «         t          j        |t          j	        |t          |¦  «        ¦  «        ¦  «         dS dS )z!
    Store ID in PDF trailer
    rD  r)
  r\   r   N)r�   r  r>  r  rÌ   Ú
fz_memrnd2r*
  r¥  r›  r  r7   )rj  r   Úrnd0Úrndr®   s        r)   r7	  r7	  ˜N  sí   € õ Ô
�eÔ/°Ñ4Ô4µh¸t±n´nÑ
EÔ
E€CØŒ>ð 	IÝÔ Ñ#Ô#ˆð ˆØð 	ð 	ˆAØ•3�q‘6”6‰MˆCˆCÝÔ&­Ô(9¸3Ñ(?Ô(?ÅÈ$ÁÄÐQRÑSÔSˆÝÔ˜c¥5Ô#7¸½cÀ#¹h¼hÑ#GÔ#GÑHÔHÐHÝÔ˜c¥5Ô#7¸½cÀ#¹h¼hÑ#GÔ#GÑHÔHÐHÐHÐHð	Ið 	Ir*   c                ó  — t          j        t          j        t          j        | ¦  «        t          d¦  «        ¦  «        t          d¦  «        ¦  «        }|j        r|S t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d	¦  «        d¦  «         t          j        |t          d
¦  «        d¦  «         t          j        |t          d¦  «        d¦  «         |S )z7
    Ensure OCProperties, return /OCProperties key
    r;  rd  r   r¬  r   r  r   r¯  r°  r®  ÚRBGroups)r�   r  r>  r  rÌ   rb  r¥  )rj  r¼  rF  r  s       r)   r±  r±  ¨N  s=  € õ Ô
�UÔ/µÔ0AÀ#Ñ0FÔ0FÍÐQWÑHXÔHXÑYÔYÕ[cÐdrÑ[sÔ[sÑ
tÔ
t€CØ
„~ð Øˆ
ÝÔ�eÔ/°Ñ4Ô4µh¸vÑ6FÔ6FÑGÔG€DÝ
Ô
! $­°Ñ(@Ô(@À!Ñ
DÔ
D€CÝ	Ô˜S¥(¨6Ñ"2Ô"2°AÑ6Ô6Ð6ÝÔ ¥X¨c¡]¤]°AÑ6Ô6€AÝ	Ô˜Q¥¨¡¤°Ñ2Ô2Ð2Ý	Ô˜Q¥¨¡¤°Ñ3Ô3Ð3Ý	Ô˜Q¥¨Ñ 1Ô 1°1Ñ5Ô5Ð5Ý	Ô˜Q¥¨Ñ 4Ô 4°aÑ8Ô8Ð8Ø€Jr*   c                ó~  — | sdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rd	S |                       d
¦  «        rd	S |                       d¦  «        rdS |                       d¦  «        rdS dS )z'
    Make /DA string of annotation
    rß  ÚCorû  ÚcoÚTirü  ÚtiÚSyÚSymbrœ  ÚZarý  Úza©r3   rÆ
  s    r)   ÚJM_expand_fnamer«  ºN  sÃ   € ð Ð!˜6˜6Ø‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØˆ6r*   c                ó  — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS dS )	z!
    String from widget type
    ÚButtonÚCheckBoxÚRadioButtonÚTextÚListBoxÚComboBoxÚ	Signaturerm
  )r�   r  r  r  ÚPDF_WIDGET_TYPE_TEXTÚPDF_WIDGET_TYPE_LISTBOXÚPDF_WIDGET_TYPE_COMBOBOXr…  )rË  s    r)   ÚJM_field_type_textr·  ÊN  sŽ   € ð •Ô,Ò,Ð,ØˆxØ•Ô.Ò.Ð.ØˆzØ•Ô1Ò1Ð1Øˆ}Ø•Ô*Ò*Ð*ØˆvØ•Ô-Ò-Ð-ØˆyØ•Ô.Ò.Ð.ØˆzØ•Ô/Ò/Ð/Øˆ{Øˆ9r*   c                ó†  — t          | t          j        ¦  «        sJ ‚t          j        |t          j        | ¦  «        ¦  «        }|j        |j        z
  }|j        |j        z
  }|dk    s|dk    rdS |  	                    ¦   «         }||j        |  
                    ¦   «         z
  z  |                      ¦   «         |j        |                      ¦   «         z
  z  z   }	 |}t          |¦  «        D ]G}t          |                      ¦   «         ¦  «        D ]#}	t          j        | |||	         ¦  «         |dz  }Œ$ŒH||z  }|dz  }|dk    rnŒkdS r)  )r>   r�   rÆ  rc  r6  r  r  r  r  rÓ  r5  rE   r4  r\  rÔ  )
rõ  ro  rÜ
  r   r5  rd  re  r�  r4  r®   s
             r)   rš  rš  ßN  s@  € Ý�d�EœNÑ+Ô+Ð+Ð+Ð+åÔ  ¥EÔ$8¸$Ñ$?Ô$?Ñ@Ô@€AØ	ŒˆqŒt‰€AØ	ŒˆqŒt‰€AØˆA‚v€v��a’�ØˆqØ�{Š{‰}Œ}€HØ˜œ˜tŸvšv™xœx™Ñ(¨4¯6ª6©8¬8°q´t¸d¿fºf¹h¼h±Ñ+GÑG€Eð	ØˆÝ�q‘”ð 	ð 	ˆAÝ˜DŸFšF™HœHÑ%Ô%ð ð �ÝÔ$ T¨1¨c°!¬fÑ5Ô5Ð5Ø�Q‘��ðð 	�ÑˆØ	ˆQ‰ˆØ�Š6ˆ6Øð	ð ˆ1r*   c                óÀ  — t          | t          j        ¦  «        sJ ‚d}t          j        | ¦  «        }d}t	          | ¦  «        }t          j        |¦  «        }	 t          |t          j        ¦  «        sJ ‚|j        sn]t          j        |¦  «        }t          j        |d¦  «        }|j        rt          j        ||¦  «        sd}nt          j	        |¦  «        }Œ�|r|S dS )z•
    Return the first annotation whose /IRT key ("In Response To") points to
    annot. Used to remove the response chain of a given annotation.
    Nr   r   r.  )
r>   r�   rõ   r  rà   rQ  rÌ   r  rŽ  rD  )rß   r®  r0  r°  rÖ   Úirt_annot_objr±  s          r)   r©  r©  öN  sö   € õ
 �e�Uœ^Ñ,Ô,Ð,Ð,Ð,Ø€IÝÔ# EÑ*Ô*€IØ€Eå˜5Ñ!Ô!€DÝÔ% dÑ+Ô+€Ið
4Ý˜)¥U¤^Ñ4Ô4Ð4Ð4Ð4ØÔ#ð 	ØÝÔ+¨IÑ6Ô6ˆÝÔ ¨uÑ5Ô5ˆØŒ<ð 	ÝÔ# A yÑ1Ô1ð Ø�ØÝÔ(¨Ñ3Ô3ˆ	ð
4ð ð ØÐðð r*   c                ó~   — t          | t          j        ¦  «        sJ ‚t          j        rdS t          j        | ¦  «        S )ú3
    need own versions of ascender / descender
    rˆ  )r>   r�   rQ  r  r‹   rÈ
  )rb  s    r)   rS  rS  O  s=   € õ �d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ%ð ØˆsÝÔ! $Ñ'Ô'Ð'r*   c                ó‚   — t          | t          j        ¦  «        sJ ‚t          j        rdS t          j        | ¦  «        }|S )r¼  gš™™™™™É¿)r>   r�   rQ  r  r‹   rØ
  )rb  rG   s     r)   rT  rT  O  sA   € õ �d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ%ð ØˆtÝ
Ô
! $Ñ
'Ô
'€CØ€Jr*   c                ó†   — 	 | dk    s| dk    sd| cxk    rdk    rn ndS |sdS t          | ¦  «        }|D ]}||k    r dS ŒdS )z7Check if ch is an extra word delimiting character.
    r   rú  rH  i*   i.   TFr8  )r	  rû  rò
  r  s       r)   rø  rø  &O  sƒ   € ðØ�Š8ˆ8Ø�Š9ˆ9Ø�RÐ!Ð!Ò!Ð!˜6Ò!Ð!Ð!Ð!Ð!ð ˆtØð ØˆuÝˆr‰7Œ7€DØð ð ˆØ�Š9ˆ9Ø�4�4ð àˆ5r*   c                ó"   — | dk     s| dk    rdS dS )Ni�  i 	  FTr-   r9  s    r)   rù  rù  :O  s   € Ø	ˆE‚z€z�R˜%’Z�ZØˆuØˆ4r*   c                óÚ   — t          | t          j        ¦  «        sJ ‚t          j        | ¦  «        }|                     d¦  «        }t
          j        s|dk    s|dk    r|S ||dz   d …         S )NrT	  rA  rþ  r   )r>   r�   rQ  r
  r¡   r  rŠ   )rb  r   r�  s      r)   ÚJM_font_namerÁ  @O  sk   € Ý�d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ˜dÑ#Ô#€DØ�	Š	�#‰Œ€AÝÔ ð  A¨¢G G¨q°Aªv¨vØˆØ��A‘��Œ<Ðr*   c           	     ó&  — d}t          j        |¦  «        }t          |¦  «        D �]é}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j        |¦  «        › dt          j        |¦  «        › d�¦  «         Œ�t          j	        |t           j
        ¦  «        }	t          j	        |t           j        ¦  «        }
|
j        rt          j        |
¦  «        r t          j	        |t           j        ¦  «        }n|
}t          j	        |t           j        ¦  «        }t          j        |¦  «        rt          j	        |t           j        ¦  «        }t          j        |¦  «        }d}|rt#          | |¦  «        }||t          j        |	¦  «        t%          t          j        |¦  «        ¦  «        t          j        |¦  «        t          j        |¦  «        |f}|                     |¦  «         �Œë|S )Nr   rü   z' is no font dict (ú 0 R)r  )r�   r‹  r\  r�  rŒ  rŠ  Úfz_warnr‰  r  r  ÚPDF_ENUM_NAME_SubtypeÚPDF_ENUM_NAME_BaseFontrÌ   r  ÚPDF_ENUM_NAME_NameÚPDF_ENUM_NAME_EncodingÚPDF_ENUM_NAME_BaseEncodingr	  rÂ  rk   )rj  Údict_ÚfontlistÚstream_xrefr    rE   r®   ÚrefnamerD  r  r  r   rû  r   r#  rô  s                   r)   ÚJM_gather_fontsrÎ  IO  sÚ  € Ø	
€BÝÔ˜5Ñ!Ô!€AÝ�1‰XŒXð ñ ˆåÔ(¨°Ñ2Ô2ˆÝÔ)¨%°Ñ3Ô3ˆÝÔ  Ñ*Ô*ð 	ÝŒMÐo�uÔ0°Ñ9Ô9ÐoÐoÍeÔN^Ð_gÑNhÔNhÐoÐoÐoÑpÔpÐpØåÔ$ X­uÔ/JÑKÔKˆÝÔ% hµÔ0LÑMÔMˆØÔ"ð 	¥eÔ&7¸Ñ&AÔ&Að 	ÝÔ% hµÔ0HÑIÔIˆDˆDàˆDÝÔ% hµÔ0LÑMÔMˆÝÔ˜XÑ&Ô&ð 	VÝÔ)¨(µEÔ4TÑUÔUˆHÝÔ Ñ)Ô)ˆØˆØð 	2Ý& s¨DÑ1Ô1ˆCàØÝÔ! 'Ñ*Ô*Ý#¥EÔ$5°dÑ$;Ô$;Ñ<Ô<ÝÔ! 'Ñ*Ô*ÝÔ! (Ñ+Ô+Øðˆð 	�Š˜ÑÔÐÑØ€Ir*   rÊ  úmupdf.PdfObjrÌ  r4   c           	     ó>  — t          | t          j        ¦  «        sJ ‚d}t          j        |¦  «        }t	          |¦  «        D �]Ù}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j	        |¦  «        › dt          j
        |¦  «        › d�¦  «         Œ�t          j        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        sŒÆt          j        |t          d¦  «        ¦  «        }
t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nt          j        ¦   «         }|
j        r(t          j        t          j        |
¦  «        |¦  «        }n#t          j        t          j        j        ¦  «        }t          j
        |¦  «        }|t          j	        |¦  «        |t+          |¦  «        f}|                     |¦  «         �ŒÛ|S )	z6
    Store info of a /Form xobject in Python list
    r   rü   z' is no form dict (rÃ  r•  ÚFormr5  r…  )r>   r�   rÆ   r‹  r\  r�  rŒ  rŠ  rÄ  r‰  r  r  r  r  rÌ   Úpdf_to_matrixr‚  r¸  r\  rx  ry  rw  rk   )r:  rÊ  Ú	imagelistrÌ  r    rE   r®   rÍ  Ú	imagedictrk  r±  r�  r†  r?  r   rô  s                   r)   ÚJM_gather_formsrÕ  nO  sæ  € õ �c�5Ô,Ñ-Ô-Ð-Ð-Ð-Ø	
€BÝÔ˜5Ñ!Ô!€AÝ�1‰XŒXð  ñ  ˆÝÔ(¨%°Ñ3Ô3ˆÝÔ*¨5°!Ñ4Ô4ˆ	ÝÔ  Ñ+Ô+ð 	ÝŒMÐp�uÔ0°Ñ9Ô9ÐpÐpÍeÔN^Ð_hÑNiÔNiÐpÐpÐpÑqÔqÐqØåÔ" 9­h°yÑ.AÔ.AÑBÔBˆÝÔ  ­°Ñ(8Ô(8Ñ9Ô9ð 	ØåÔ˜y­(°6Ñ*:Ô*:Ñ;Ô;ˆÝÔ˜y­(°8Ñ*<Ô*<Ñ=Ô=ˆØŒ<ð 	#ÝÔ% aÑ(Ô(ˆCˆCå”.Ñ"Ô"ˆCØŒ<ð 	=ÝÔ*­EÔ,=¸aÑ,@Ô,@À#ÑFÔFˆDˆDå”<¥¤Ô ;Ñ<Ô<ˆDÝÔ 	Ñ*Ô*ˆð ÝÔ! 7Ñ+Ô+ØÝ Ñ%Ô%ð	ˆð 	×Ò˜ÑÔÐÑØ€Ir*   r:  úmupdf.PdfDocumentc                óü  — d}t          j        |¦  «        }t          |¦  «        D �]Ô}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j        |¦  «        › dt          j        |¦  «        › d�¦  «         Œ�t          j	        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        sŒÆt          j        |¦  «        }
d}t          j        |t          d¦  «        t          d	¦  «        ¦  «        }|j        rt          j        |¦  «        }t          j        |t          d
¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |d¦  «        }t          j        d¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        r™|}t          j        |d¦  «        }t          j        |t          d¦  «        ¦  «        s"t          j        |t          d¦  «        ¦  «        r>t          j        |d¦  «        }t          j        |¦  «        rt          j        |d¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|
|t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        |f
}|                     |¦  «         �ŒÖ|S )z/
    Store info of an image in Python list
    r   rü   z' is no image dict (rÃ  r•  r  r   r  r  ÚFilterr·  Ú
ColorSpaceÚCSÚDeviceNÚ
Separationr   r  rù	  r  rJ  ÚBitsPerComponentÚBPC)r�   r‹  r\  r�  rŒ  rŠ  rÄ  r‰  r  r  r  r  r  rÌ   r™  r¬  r?  r  rÂ  rk   )r:  rÊ  rÓ  rÌ  r    rE   r®   rÍ  rÔ  rk  r   Úgenr  r¡  Úaltcsrï  Úcsesrl  rà  r,  rô  s                        r)   ÚJM_gather_imagesrâ  –O  s^  € ð 
€BÝÔ˜EÑ"Ô"€AÝ�1‰XŒXð 0 ñ 0 ˆÝÔ(¨°Ñ2Ô2ˆÝÔ*¨5°!Ñ4Ô4ˆ	ÝÔ  Ñ+Ô+ð 	ÝŒMÐp�eÔ/°Ñ8Ô8ÐpÐpÍeÔN^Ð_hÑNiÔNiÐpÐpÐpÑqÔqÐqØåÔ" 9­h°yÑ.AÔ.AÑBÔBˆÝÔ  ­°Ñ(9Ô(9Ñ:Ô:ð 	ØåÔ 	Ñ*Ô*ˆØˆÝÔ# I­x¸Ñ/@Ô/@Å(È6ÑBRÔBRÑSÔSˆØÔð 	*ÝÔ" 5Ñ)Ô)ˆCåÔ% iµ¸(Ñ1CÔ1CÅXÈcÁ]Ä]ÑSÔSˆÝÔ˜gÑ&Ô&ð 	6ÝÔ)¨'°1Ñ5Ô5ˆGå”˜Q‘”ˆÝÔ  ­H°\Ñ,BÔ,BÅHÈTÁNÄNÑSÔSˆÝÔ˜bÑ!Ô!ð 	:ØˆDÝÔ$ T¨1Ñ-Ô-ˆBÝÔ! "¥h¨yÑ&9Ô&9Ñ:Ô:ð :ÝÔ(¨­X°lÑ-CÔ-CÑDÔDð:õ Ô+¨D°!Ñ4Ô4�ÝÔ% eÑ,Ô,ð :Ý!Ô/°°qÑ9Ô9�EÝÔ# I­x¸Ñ/@Ô/@Å(È3Á-Ä-ÑPÔPˆÝÔ$ Yµ¸Ñ0BÔ0BÅHÈSÁMÄMÑRÔRˆÝÔ! )­XÐ6HÑ-IÔ-IÍ8ÐTYÉ?Ì?Ñ[Ô[ˆð ØÝÔ  Ñ'Ô'ÝÔ  Ñ(Ô(ÝÔ  Ñ%Ô%Ý#¥EÔ$5°bÑ$9Ô$9Ñ:Ô:Ý#¥EÔ$5°eÑ$<Ô$<Ñ=Ô=Ý#¥EÔ$5°gÑ$>Ô$>Ñ?Ô?Ý#¥EÔ$5°gÑ$>Ô$>Ñ?Ô?Øðˆð 	×Ò˜ÑÔÐÑØ€Ir*   c                ó,  — t          | t          j        ¦  «        sJ ‚d}t          j        | ¦  «        }	 |j        snB|t          j        t          j        |¦  «        ¦  «        k    rd}nt          j        |¦  «        }ŒJ|st          d|d›d�¦  «        ‚|S )z$
    retrieve annot by its xref
    r   r   úxref r  z is not an annot of this page)	r>   r�   rÓ   rQ  rÌ   r  r  rD  rg   )rÖ   r   r°  rß   s       r)   rU  rU  ÐO  s¯   € õ �d�EœMÑ*Ô*Ð*Ð*Ð*Ø€EåÔ! $Ñ'Ô'€Eð-ØÔð 	ØØ•5Ô#¥EÔ$7¸Ñ$>Ô$>Ñ?Ô?Ò?Ð?ØˆEØÝÔ$ eÑ,Ô,ˆð-ð ð GÝÐE ÐEÐEÐEÐEÑFÔFÐFØ€Lr*   c                ób  — t          | t          j        ¦  «        sJ ‚|sdS d}t          j        | ¦  «        }	 |j        snZt          j        t          j        t          j        |¦  «        d¦  «        ¦  «        \  }}||k    rd}nt          j        |¦  «        }Œb|st          d|› d�¦  «        ‚|S )z*
    retrieve annot by name (/NM key)
    Nr   r   r#  rü   z' is not an annot of this page)
r>   r�   rÓ   rQ  rÌ   rÜ  r  r  rD  rg   )rÖ   r   r°  rß   r  r  s         r)   rT  rT  äO  sÑ   € õ �d�EœMÑ*Ô*Ð*Ð*Ð*Øð ØˆØ€EåÔ! $Ñ'Ô'€Eð,ØÔð 	ØåÔ,­UÔ-@ÅÔATÐUZÑA[ÔA[Ð]aÑ-bÔ-bÑcÔc‰ˆ�$Ø�8ÒÐØˆEØÝÔ$ UÑ+Ô+ˆð,ð ð BÝÐ@˜DÐ@Ð@Ð@ÑAÔAÐAØ€Lr*   c                óv  — g }t          j        |                      ¦   «         t           j        ¦  «        }|j        s|S t          t          j        |¦  «        ¦  «        D ]Z}t          j        ||¦  «        }t          j        |d¦  «        }|j        r'| 	                    t          j
        |¦  «        ¦  «         Œ[|S )Nr#  )r�   r  r  ÚPDF_ENUM_NAME_AnnotsrÌ   r\  r«  r¬  r  rk   r  )rÖ   r½  r¯  r®   r0  r   s         r)   r¹  r¹  üO  s°   € Ø€EÝÔ §¢¡¤­UÔ-GÑHÔH€FØÔð ØˆÝ•EÔ'¨Ñ/Ô/Ñ0Ô0ð ð ˆÝÔ'¨°Ñ2Ô2ˆ	ÝÔ" 9¨dÑ3Ô3ˆØŒ?ð 	Ø�LŠLÝÔ(¨Ñ.Ô.ñô ð øð €Lr*   c                óf  — t           rt          j        | ¦  «        }|S g }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        }t          |¦  «        D ]Ë}t          j        ||¦  «        }t          j	        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j
        sŒUt          j        t          j        |¦  «        ¦  «        }|t          j        k    rŒŒt          j        |d¦  «        }	|                     ||t          j        |	¦  «        f¦  «         ŒÌ|S )zK
    return the xrefs and /NM ids of a page's annots, links and fields
    r§  r•  r#  )r'  r   r€  r�   r  r  r«  r\  r¬  r  rÌ   r™  r‰  ÚPDF_ANNOT_UNKNOWNr  rk   r  )
r‚  r½  r¯  rE   r®   r0  r   r  rk  r   s
             r)   r€  r€  
P  s  € õ ð ÝÔ,¨hÑ7Ô7ˆØˆà€EÝÔ ­8°HÑ+=Ô+=Ñ>Ô>€FÝÔ˜VÑ$Ô$€AÝ�A‰YŒYð 
Eð 
EˆÝÔ'¨°Ñ3Ô3ˆ	ÝÔ Ñ+Ô+ˆÝÔ$ iµ¸)Ñ1DÔ1DÑEÔEˆØÔ!ð 	ØÝÔ0µ%Ô2CÀWÑ2MÔ2MÑNÔNˆØ•EÔ+Ò+Ð+ØÝÔ! 9¨dÑ3Ô3ˆØ�Š�t˜U¥EÔ$<¸cÑ$BÔ$BÐCÑDÔDÐDÐDØ€Lr*   c                óš   — |                       d¬¦  «        } | j        st          ¦   «         S t          |                      ¦   «         ¦  «        S r[  )rl  rÌ   r´   r€  r  rÕ   s    r)   r½  r½  #P  s>   € Ø�>Š> 5ˆ>Ñ)Ô)€DØŒ?ð Ý‰vŒvˆÝ! 4§8¢8¡:¤:Ñ.Ô.Ð.r*   c                óN  — t           j        }| €|S | }|                     d¦  «        s|                     d¦  «        rt           j        }nÛ|                     d¦  «        s|                     d¦  «        rt           j        }n¤|                     d¦  «        s|                     d¦  «        rt           j        }nm|                     d¦  «        s|                     d	¦  «        rt           j        }n6|                     d
¦  «        s|                     d¦  «        rt           j        }|S )z7
    return pdf_obj "border style" from Python str
    NrÜ
  rø  r  r  r®   rç   rå  ÚUr�  rk	  )r�   ÚPDF_ENUM_NAME_Sr3   ÚPDF_ENUM_NAME_BÚPDF_ENUM_NAME_DÚPDF_ENUM_NAME_IÚPDF_ENUM_NAME_U)rm  r"  r�  s      r)   r,  r,  *P  s  € õ Ô
€CØ€}Øˆ
Ø€AØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ÐO˜aŸlšl¨3Ñ/Ô/ÐO½%Ô:O°CØ€Jr*   c
                óÂ  ‡	— ˆ	fd„}
d}d}|r"t          j        d||d¦  «        } |
|¦  «        S |r1t          |¦  «        }t          j        d||d¦  «        } |
|¦  «        S |dk    rt          j        |¦  «        } |
|¦  «        S | rGt          j        | ¦  «        }|j        r |
|¦  «        S t          j        | ||¦  «        } |
|¦  «        S t          dk    rt          j	        ||¦  «        \  }}}}}nt          j	        ||¦  «        \  }}}d}|rt          j
        d|||d¦  «        }|j        r |
|¦  «        S t          j        |||||¦  «        } |
|¦  «        S )z6
    return a fz_font from a number of parameters
    c                óŠ   •— | j         st          t          ¦  «        ‚| j         j        j        st          j        | ‰¦  «         | S r,   )rÌ   rÞ   ÚMSG_FONT_FAILEDrÎ  rì
  r�   Úfz_set_font_embedding)rb  rÃ
  s    €r)   ÚfertigzJM_get_font.<locals>.fertigIP  sC   ø€ ØŒð 	0Ý�Ñ/Ô/Ð/àŒÔ$Ô0ð 	5ÝÔ'¨¨eÑ4Ô4Ð4Øˆr*   r   NrA  ©r   é   )r�   Úfz_new_font_from_filer7  r,  Úfz_new_cjk_fontÚfz_new_base14_fontrÌ   Úfz_new_builtin_fontræ  Úfz_lookup_noto_fontr)  Úfz_load_fallback_font)r	  r]  r^  r¿
  r9  r$  rÀ
  rÁ
  rÂ
  rÃ
  rö  ro  rb  r/  rˆ  rÈ  r  Ú
noto_indexs            `        r)   r¾
  r¾
  :P  s²  ø€ ðð ð ð ð ð €EØ€DØð åÔ*¨D°(¸EÀ1ÑEÔEˆØˆv�d‰|Œ|Ðàð å  Ñ,Ô,ˆÝÔ,¨d°C¸ÀÑBÔBˆØˆv�d‰|Œ|Ðà�"‚}€}åÔ$ XÑ.Ô.ˆØˆv�d‰|Œ|Ðàð õ Ô'¨Ñ1Ô1ˆØŒ?ð 	 Ø�6˜$‘<”<ÐÝÔ(¨°7¸IÑFÔFˆØˆv�d‰|Œ|Ðõ ˜gÒ%Ð%Ý.3Ô.GÈÐPTÑ.UÔ.UÑ+ˆˆd�E˜4  å!Ô5°f¸dÑCÔCÑˆˆd�EØ€DØð JÝÔ,¨d°D¸$ÀÀqÑIÔIˆØ„ð Øˆv�d‰|Œ|ÐÝÔ&¨°°hÀÈÑSÔS€DØˆ6�$‰<Œ<Ðr*   c                ó¤  — |dk     rdS t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rJt          j        t          j        |d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }n"t          j        |t          d¦  «        ¦  «        }|j        st          d¦  «         dS |}d}t          j        |t          d¦  «        ¦  «        }|j        r|}t          j        |t          d¦  «        ¦  «        }|j        r|}t          j        |t          d	¦  «        ¦  «        }|j        rÝ|}t          j        |t          d
¦  «        ¦  «        }|j        r%t          j        |¦  «        st          d¦  «         dS t          j	        |t          d¦  «        ¦  «        rnjt          j	        |t          d¦  «        ¦  «        rnGt          j	        |t          d¦  «        ¦  «        rn$t          dt          j
        |¦  «        ›�¦  «         |st          d¦  «         dS t          j        |¦  «        S )z@
    Return the contents of a font file, identified by xref
    r   Nr÷	  r   r
  z%invalid font - FontDescriptor missingÚFontFileÚ	FontFile2Ú	FontFile3r•  úinvalid font descriptor subtypeÚType1CÚCIDFontType0CÚOpenTypezwarning: unhandled font type zwarning: unhandled font type)r�   rš  r  r  rÌ   r7  r¬  rr   rÊ  r  r‰  r,  )r:  r   r±  Údesftr  r	   s         r)   r+  r+  {P  s@  € ð ˆa‚x€xØˆÝÔ˜c 4Ñ(Ô(€AÝÔ˜q¥(Ð+<Ñ"=Ô"=Ñ>Ô>€EØÔð @ÝÔ(­Ô)<¸UÀAÑ)FÔ)FÑGÔGˆÝÔ  ¥hÐ/?Ñ&@Ô&@ÑAÔAˆˆåÔ  ¥HÐ-=Ñ$>Ô$>Ñ?Ô?ˆàŒ>ð ÝÐ8Ñ9Ô9Ð9Øˆà€Aà€Få
Ô
˜Q¥¨Ñ 4Ô 4Ñ
5Ô
5€CØ
„~ð Øˆå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð Øˆå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð PØˆåÔ  ¥h¨yÑ&9Ô&9Ñ:Ô:ˆØŒ>ð 	¥%Ô"3°CÑ"8Ô"8ð 	ÝÐ5Ñ6Ô6Ð6ØˆFåÔ˜S¥(¨8Ñ"4Ô"4Ñ5Ô5ð 	PØÝÔ˜s¥H¨_Ñ$=Ô$=Ñ>Ô>ð 	PØÝÔ˜s¥H¨ZÑ$8Ô$8Ñ9Ô9ð 	PØåÐNµEÔ4EÀcÑ4JÔ4JÐNÐNÑOÔOÐOàð ÝÐ.Ñ/Ô/Ð/ØˆåÔ  Ñ(Ô(Ð(r*   c                óª  — t          j        | t          d¦  «        t          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        }|dk     rdS g }t          |¦  «        D ]k}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          j	        |¦  «        }| 
                    ||f¦  «         Œl|S )z…
    Return the items of Resources/Properties (used for Marked Content)
    Argument may be e.g. a page object or a Form XObject
    rE  Ú
Propertiesr-   r   )r�   r*  r  rÌ   r‹  r\  r�  rŒ  r‰  r  rk   )	rA  Ú
propertiesrE   r    r®   r'  r"  rË  r   s	            r)   r  r  ²P  sÒ   € õ
 Ô$ S­(°;Ñ*?Ô*?ÅÈ,ÑAWÔAWÑXÔX€JØÔ ð !ØˆråÔ˜zÑ*Ô*ˆØˆqŠ5ˆ5Ø�2ØˆÝ�q‘”ð 	!ð 	!ˆAÝÔ(¨°QÑ7Ô7ˆCÝÔ(¨°QÑ7Ô7ˆCÝÔ! #Ñ&Ô&ˆAÝÔ# CÑ(Ô(ˆDØ�IŠI�q˜$�iÑ Ô Ð Ð Ø€Ir*   c                ó  — d}t          j        | ¦  «        }|j        rJt          j        |¦  «        }|t          j        |¦  «        k    rd}nt          j        |¦  «        }|j        °J|st          d|› d�¦  «        ‚t          |¦  «        S )z%
    retrieve widget by its xref
    FTrä  z is not a widget of this page)r�   rW  rÌ   r  r  rE  rg   ró   )rÖ   r   r°  rß   r0  s        r)   rn  rn  ÈP  s    € ð €EÝÔ" DÑ)Ô)€EØ
Ô
ð .ÝÔ'¨Ñ/Ô/ˆ	Ø•5Ô# YÑ/Ô/Ò/Ð/ØˆEØÝÔ% uÑ-Ô-ˆð Ô
ð .ð ð FÝÐD ÐDÐDÐDÑEÔEÐEÝ�%‰=Œ=Ðr*   c                ó’  ‡— t          j        | j        ¦  «        }t          | j        ¦  «        }|                     ¦   «         }| }ˆfd„}d„ }t          j        |j        ¦  «        }|‰_        |t           j        k    r/t          j        ||¦  «        r |dd¦  «         n |dd¦  «         n |dd¦  «          |‰dt          t          j
        |¦  «        ¦  «        ¦  «          |‰dt          t          |¦  «        ¦  «        ¦  «         t          j        |¦  «        }	 |‰d	|	¦  «         d
„ }
 |
|t          d¦  «        ¦  «        }|� |‰d|¦  «         d}|t           j        k    r…t          j        |t          d¦  «        ¦  «        }|j        r |‰dt          j        |¦  «        ¦  «         t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|st          j        |¦  «        } |‰dt          |¦  «        ¦  «          |‰dt          j        |¦  «        ¦  «         t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }|dk    rd} |‰d|¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «          |‰dt          j        |j        ¦  «        ¦  «          |‰dt          j        |j        ¦  «        ¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «          |‰d t=          | ¦  «        ¦  «         t          j        t          j         |t          d!¦  «        ¦  «        ¦  «        } |‰d"t          |¦  «        ¦  «         t          j        |t          d¦  «        t          d#¦  «        ¦  «        }|j        r, |‰d$t          t          j        |¦  «        ¦  «        ¦  «          |‰d%t          j!        |¦  «        ¦  «         ‰ "                    ¦   «          t          j        |t          d&¦  «        ¦  «        }tG          |¦  «        } |‰d'|¦  «          |‰d(tG          t          j        |t          d)¦  «        t          d*¦  «        ¦  «        ¦  «        ¦  «          |‰d+tG          t          j        |t          d)¦  «        t          d,¦  «        ¦  «        ¦  «        ¦  «          |‰d-tG          t          j        |t          d)¦  «        t          d.¦  «        ¦  «        ¦  «        ¦  «          |‰d/tG          t          j        |t          d)¦  «        t          d0¦  «        ¦  «        ¦  «        ¦  «          |‰d1tG          t          j        |t          d)¦  «        t          j$        d2¦  «        ¦  «        ¦  «        ¦  «          |‰d3tG          t          j        |t          d)¦  «        t          j$        d4¦  «        ¦  «        ¦  «        ¦  «         dS )5z…
    Populate a Python Widget object with the values from a PDF form field.
    Called by "Page.first_widget" and "Widget.next".
    c                ó*   •— t          ‰| |¦  «         d S r,   ©r>  )r'  r¸   rI  s     €r)   ÚSETATTRz)JM_get_widget_properties.<locals>.SETATTRåP  s   ø€ Ý�˜˜UÑ#Ô#Ð#Ð#Ð#r*   c                ó(   — t          | ||¦  «         d S r,   r  )Úmodr'  r¸   s      r)   ÚSETATTR_DROPz.JM_get_widget_properties.<locals>.SETATTR_DROPèP  s   € õ 	��S˜%Ñ Ô Ð Ð Ð r*   rí  TFNrà  rë  rå  c                óh  — | }d}	 | j         sdS t          j        | |¦  «        }|j         rt          j        |¦  «        }|r|S t          j        | t	          d¦  «        ¦  «        } | j         |j         k    rt          d¦  «        ‚|dz  }|dk    r$t          j        |t	          d¦  «        ¦  «        }d}Œ®)a  
        This is a modified version of MuPDF's pdf_dict_get_inheritable(), with
        some changes:
        * Returns string from pdf_to_text_string() or None if not found.
        * Recurses to parent if current node exists but with empty string
          value.
        r  r   Nr¨  zcycle in resourcesr   r   )rÌ   r�   r  r  r  rg   )r¨  r'  ÚslowÚhalfbeatr"  r¡  s         r)   Ú'pdf_dict_get_inheritable_nonempty_labelzIJM_get_widget_properties.<locals>.pdf_dict_get_inheritable_nonempty_labelÿP  sÉ   € ð ˆØˆð	Ø”?ð Ø�ÝÔ$ T¨3Ñ/Ô/ˆCØŒ~ð !ÝÔ0°Ñ5Ô5�Øð !Ø �LÝÔ% d­H°XÑ,>Ô,>Ñ?Ô?ˆDØŒ $¤/Ò1Ð1ÝÐ 4Ñ5Ô5Ð5Ø˜‰MˆHØ˜1Š}ˆ}ÝÔ)¨$µ¸Ñ0BÔ0BÑCÔC�Ø�ð	r*   ræ   ræ  r¨  rä  r  rç  ré  r  rù	  r   r   rá  r  râ  rð  rñ  ÚMKÚBGrh  ÚBCrÐ  rã  rä   rò  rF  rì  rè  r  r¿
  ró  rá   ÚKrô  r·  rõ  rñ   rö  rö  r÷  ÚBlrø  ÚFo)%r�   r  rÄ   rà   r:  Úpdf_widget_typerê  r…  Úpdf_signature_is_signedr  Úpdf_field_border_styler·  Úpdf_load_field_namer  r  r  rÌ   r  r‰  Úpdf_field_valueÚpdf_field_displayrÿ  r*  r™  r«  r\  r  r¬  Úpdf_text_widget_max_lenÚpdf_text_widget_formatra  r  rP  Úpdf_field_flagsr  ÚJM_get_scriptr?  )rß   rI  r0  rÖ   rj  Útwr  r  rê  rå  r  r¡  Úfvaluer  rá  rE   r  r®   ro  rÓ  r�  Ússs    `                    r)   ÚJM_get_widget_propertiesr+  ÙP  s’  ø€ õ Ô# E¤JÑ/Ô/€Iå˜5œ:Ñ&Ô&€DØ
�(Š(‰*Œ*€CØ	€Bð$ð $ð $ð $ð $ð!ð !ð !õ Ô& r¤wÑ/Ô/€Jà"€FÔØ•UÔ4Ò4Ð4ÝÔ(¨¨iÑ8Ô8ð 	'ØˆG�K Ñ&Ô&Ð&Ð&àˆG�K Ñ&Ô&Ð&Ð&àˆ�˜TÑ"Ô"Ð"Ø€L�˜Õ):½5Ô;WÐXaÑ;bÔ;bÑ)cÔ)cÑdÔdÐdØ€L�Ð,Õ.?Õ@RÐS]Ñ@^Ô@^Ñ._Ô._Ñ`Ô`Ð`åÔ*¨9Ñ5Ô5€JØ€L�˜ zÑ2Ô2Ð2ðð ð ð8 4Ð3°I½xÈ¹~¼~ÑNÔN€EØÐØˆ�V˜]¨EÑ2Ô2Ð2à€FØ•UÔ6Ò6Ð6ÝÔ  )­X°hÑ-?Ô-?Ñ@Ô@ˆØŒ>ð 	FØˆL˜ ­eÔ.>ÀÑ.DÔ.DÑEÔEÐEÝÔ  ­H°T©N¬NÑ;Ô;ˆØŒ>ð 	,ÝÔ& sÑ+Ô+ˆFØð 2ÝÔ& yÑ1Ô1ˆØ€L�˜Õ(9¸&Ñ(AÔ(AÑBÔBÐBà€L�˜­%Ô*AÀ)Ñ*LÔ*LÑMÔMÐMåÔ$¥UÔ%8¸ÅHÈTÁNÄNÕT\Ð]`ÑTaÔTaÑ%bÔ%bÑcÔc€LØ�qÒÐØˆØ€L�˜¨Ñ6Ô6Ð6å
Ô
˜i­°$©¬½À#¹¼Ñ
GÔ
G€CÝÔ˜#ÑÔð 1ÝÔ Ñ$Ô$ˆØˆC�!‰GˆÝ�q‘”ð 	Að 	AˆAÝÔ#¥EÔ$7¸¸QÑ$?Ô$?Ñ@Ô@ˆAˆa‰DˆDØˆ�V˜_¨aÑ0Ô0Ð0à€L�˜­Ô(EÀbÄgÑ(NÔ(NÑOÔOÐOà€L�˜­Ô(DÀRÄWÑ(MÔ(MÑNÔNÐNå
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CÝÔ˜#ÑÔð 0ÝÔ Ñ$Ô$ˆØˆc�A‰gˆÝ�q‘”ð 	Dð 	DˆAÝÔ&¥uÔ':¸3ÀÑ'BÔ'BÑCÔCˆC�‰FˆFØˆ�V˜\¨3Ñ/Ô/Ð/å
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CÝÔ˜#ÑÔð 2ÝÔ Ñ$Ô$ˆØˆc�A‰gˆÝ�q‘”ð 	Dð 	DˆAÝÔ&¥uÔ':¸3ÀÑ'BÔ'BÑCÔCˆC�‰FˆFØˆ�V˜^¨SÑ1Ô1Ð1à€L�˜Õ*;¸EÑ*BÔ*BÑCÔCÐCå	Ô	!¥%Ô"@ÀÍHÐUYÉNÌNÑ"[Ô"[Ñ	\Ô	\€BØ€L�˜Õ%6°rÑ%:Ô%:Ñ;Ô;Ð;å
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CØ
„~ð aØˆ�VÐ-Õ/@ÅÔAYÐZ]ÑA^ÔA^Ñ/_Ô/_Ñ`Ô`Ð`à€L�˜­Ô(=¸iÑ(HÔ(HÑIÔIÐIð ×ÒÑÔÐõ 	Ô˜9¥h¨s¡m¤mÑ4Ô4€AÝ	�qÑ	Ô	€BØ€L�˜ 2Ñ&Ô&Ð&à€L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÔI[Ð\`ÑIaÔIaÑbÔbÑcÔcñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÔI[Ð\`ÑIaÔIaÑbÔbÑcÔcñô ð ð ð r*   c                ó<  — |dk     rdS t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rJt          j        t          j        |d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }n"t          j        |t          d¦  «        ¦  «        }|j        sdS |}t          j        |t          d¦  «        ¦  «        }|j        rdS t          j        |t          d¦  «        ¦  «        }|j        rd	S t          j        |t          d
¦  «        ¦  «        }|j        rßt          j        |t          d¦  «        ¦  «        }|j        r%t          j        |¦  «        st          d¦  «         dS t          j	        |t          d¦  «        ¦  «        rdS t          j	        |t          d¦  «        ¦  «        rdS t          j	        |t          d¦  «        ¦  «        rdS t          dt          j
        |¦  «        › d�¦  «         dS )zF
    Return the file extension of a font file, identified by xref
    r   r  r÷	  r   r
  r  Úpfar  r2
  r  r•  r  r  Úcffr  Úcidr  r1
  zunhandled font type 'rü   )r�   rš  r  r  rÌ   r7  r¬  rÊ  rr   r  r‰  )r:  r   r±  r  r  s        r)   r	  r	  zQ  s  € ð ˆa‚x€xØˆuÝÔ˜c 4Ñ(Ô(€AÝÔ˜q¥(Ð+<Ñ"=Ô"=Ñ>Ô>€EØÔð @ÝÔ(­Ô)<¸UÀAÑ)FÔ)FÑGÔGˆÝÔ  ¥hÐ/?Ñ&@Ô&@ÑAÔAˆˆåÔ  ¥HÐ-=Ñ$>Ô$>Ñ?Ô?ˆØŒ>ð Øˆuà€Aå
Ô
˜Q¥¨Ñ 4Ô 4Ñ
5Ô
5€CØ
„~ð Øˆuå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð Øˆuå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð GÝÔ  ¥h¨yÑ&9Ô&9Ñ:Ô:ˆØŒ>ð 	¥%Ô"3°CÑ"8Ô"8ð 	ÝÐ5Ñ6Ô6Ð6Ø�5ÝÔ˜S¥(¨8Ñ"4Ô"4Ñ5Ô5ð 	GØ�5ÝÔ˜s¥H¨_Ñ$=Ô$=Ñ>Ô>ð 	GØ�5ÝÔ˜s¥H¨ZÑ$8Ô$8Ñ9Ô9ð 	GØ�5åÐE­EÔ,=¸cÑ,BÔ,BÐEÐEÐEÑFÔFÐFàˆ5r*   c                ó  — t          ¦   «         }t          j        | ¦  «        rht          j        | ¦  «        }t	          |¦  «        D ]D}t          j        | |¦  «        }t          j        |¦  «        }||vr|                     |¦  «         ŒE|S )z„
    Get OCG arrays from OC configuration
    Returns dict {"basestate":name, "on":list, "off":list, "rbg":list, "locked":list}
    )r´   r�   r™  r«  r\  r¬  r  rk   )r[  Úlist_rE   r®   r  rC   s         r)   ÚJM_get_ocg_arrays_impr2  ¦Q  sŠ   € õ
 ‰FŒF€EÝÔ˜3ÑÔð #ÝÔ Ñ%Ô%ˆÝ�q‘”ð 	#ð 	#ˆAÝÔ% s¨AÑ.Ô.ˆCÝÔ# SÑ)Ô)ˆDØ˜5Ð Ð Ø—’˜TÑ"Ô"Ð"øØ€Lr*   c                óJ  — t          ¦   «         }t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          ¦   «         }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        r_t          j        |¦  «        }t          |¦  «        D ];}t          j	        ||¦  «        }t	          |¦  «        }| 
                    |¦  «         Œ<|r||d<   t          j        | t          d	¦  «        ¦  «        }|j        rt          j        |¦  «        }||d
<   |S )Nr¯  r   r°  r�	  ÚLockedr>  r   rŽ	  r>  rŒ	  )r5   r�   r  r  r2  r´   r™  r«  r\  r¬  rk   rÌ   r‰  )	Úconfr    r[  r1  rE   r®   r  Úlist1rH  s	            r)   re  re  ¶Q  s‘  € å	‰Œ€BÝ
Ô
˜d¥H¨T¡N¤NÑ
3Ô
3€CÝ! 3Ñ'Ô'€EØð Øˆˆ4‰Ý
Ô
˜d¥H¨U¡O¤OÑ
4Ô
4€CÝ! 3Ñ'Ô'€EØð Øˆˆ5‰	Ý
Ô
˜d¥H¨XÑ$6Ô$6Ñ
7Ô
7€CÝ! 3Ñ'Ô'€EØð Øˆˆ8‰Ý‰FŒF€EÝ
Ô
˜d¥H¨ZÑ$8Ô$8Ñ
9Ô
9€CÝÔ˜3ÑÔð  ÝÔ Ñ%Ô%ˆÝ�q‘”ð 	 ð 	 ˆAÝÔ% s¨AÑ.Ô.ˆCÝ)¨3Ñ/Ô/ˆEØ�LŠL˜ÑÔÐÐØð Øˆˆ:‰Ý
Ô
˜d¥H¨[Ñ$9Ô$9Ñ
:Ô
:€Cà
„~ð  ÝÔ! 3Ñ'Ô'ˆØˆˆ;‰Ø€Ir*   c                óð  — t          j        |¦  «        }t          d|d¦  «        D ]Ï}t          j        t          j        ||¦  «        ¦  «        }t          j        |¦  «        }t          j        t          j        ||dz   ¦  «        ¦  «        }t          |dd¦  «        }t          j        |¦  «        }t          |t          ¦  «        sJ ‚| 
                    d¦  «        }|                      ||f¦  «         ŒÐd S )Nr   r   r   rÞ  )r�   r«  r\  r7  r¬  r  rq
  Úfz_buffer_extractr>   r)  rü  rk   )	rW  r:  rE   r®   r'  rá  r"  r/  rË  s	            r)   r8  r8  ×Q  sä   € ÝÔ˜DÑ!Ô!€AÝ�1�a˜‰^Œ^ð  ð  ˆÝÔ(­%Ô*=¸dÀAÑ*FÔ*FÑGÔGˆÝÔ˜sÑ#Ô#ˆÝÔ(­%Ô*=¸dÀAÈÁEÑ*JÔ*JÑKÔKˆÝ! # q¨!Ñ,Ô,ˆÝÔ# CÑ(Ô(ˆÝ˜!�UÑ#Ô#Ð#Ð#Ð#Ø�HŠH�WÑÔˆØ�Š�s˜A�hÑÔÐÐð ð  r*   c                óÔ  — | j         sdS t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        }|dk    r,t          j        | t          d¦  «        ¦  «        }|j         sdS ndS t          j        |¦  «        r"t          t          j        |¦  «        ¦  «        }n:t          j        |¦  «        r$t          j	        |¦  «        }t          |¦  «        }ndS |r|S dS )zà
    JavaScript extractor
    Returns either the script source or None. Parameter is a PDF action
    dictionary, which must have keys /S and /JS. The value of /S must be
    '/JavaScript'. The value of /JS is returned.
    Nrk	  Ú
JavaScriptÚJS)rÌ   r�   r  r  r‰  rp
  r  r  r+  r,  r€
  )r'  r‘  ÚjjÚjsr¿
  r/  s         r)   r'  r'  äQ  sï   € ð Œ>ð ØˆåÔ˜3¥¨¡¤Ñ.Ô.€AÝ	Ô	˜1Ñ	Ô	€BØ	ˆ\ÒÐÝÔ ¥X¨d¡^¤^Ñ4Ô4ˆØŒ}ð 	ØˆFð	ð 	ˆåÔ˜2ÑÔð Ý"¥5Ô#;¸BÑ#?Ô#?Ñ@Ô@ˆˆÝ	Ô	˜RÑ	 Ô	 ð ÝÔ# BÑ'Ô'ˆÝ'¨Ñ,Ô,ˆˆàˆØð ØˆØ
€Fr*   c                óL   — | j         j        rt          j        | d¦  «        sdS dS )z(
    Ensure valid journalling state
    r   r   )rÌ   r  r�   r  rà  s    r)   rß  rß  R  s/   € ð „~Ôð ¥eÔ&=¸cÀ1Ñ&EÔ&Eð ØˆqØˆ1r*   c                óþ  — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j	        k    rd	S | t           j
        k    rd
S | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS dS )z/
    return extension for MuPDF image type
    Úfaxr»  ÚflateÚlzwÚrldÚbmpÚgifÚjb2rx  ÚjpxÚjxrrÖ  rp  Útiffr  )r�   ÚFZ_IMAGE_FAXÚFZ_IMAGE_RAWÚFZ_IMAGE_FLATEÚFZ_IMAGE_LZWÚFZ_IMAGE_RLDÚFZ_IMAGE_BMPÚFZ_IMAGE_GIFÚFZ_IMAGE_JBIG2ÚFZ_IMAGE_JPEGÚFZ_IMAGE_JPXÚFZ_IMAGE_JXRÚFZ_IMAGE_PNGÚFZ_IMAGE_PNMÚFZ_IMAGE_TIFF)rk  s    r)   ÚJM_image_extensionrX  R  s  € ð •Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô$Ò$Ð$¨w¨wØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô$Ò$Ð$¨u¨uØ•Ô#Ò#Ð#¨v¨vØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô#Ò#Ð#¨v¨vàˆ5r*   c                ó\  — t          |t          j        ¦  «        sJ ‚t          j        t          j        j        ¦  «        }t          j        t          j        |¦  «        |¦  «        }t          j        |t          ¦  «        }|t          |¦  «        f}t           
                    |¦  «         d S r,   )r>   r�   r‚  rx  r{  rV  Úfz_quad_from_rectÚg_img_info_matrixÚJM_py_from_quadÚ
g_img_infork   )rˆ  rî  r   rF  r.  r›  r‹  s          r)   ÚJM_image_filterr^  &R  sŠ   € Ý�c�5œ>Ñ*Ô*Ð*Ð*Ð*ÝŒ•U”\Ô,Ñ-Ô-€AÝÔ¥Ô!8¸Ñ!;Ô!;¸SÑAÔA€AÝÔ Õ$5Ñ6Ô6€AØ• Ñ#Ô#Ð#€DÝ×Ò�dÑÔÐÐÐr*   c                ó¬  — | sdS t          | ¦  «        }|dk     rt          d¦  «         dS | }t          j        |¦  «        }|t          j        k    rdS |rt          j        ||¦  «        }nt          j        ||¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j	        |¦  «        \  }}	t          j
        |¦  «        }
t          j        |                     ¦   «         ¦  «        }t          ¦   «         }|                     ¦   «         |t          <   |                     ¦   «         |t"          <   |
|d<   t%          |¦  «        |t&          <   ||t(          <   |	|t*          <   |                     ¦   «         |t.          <   |                     ¦   «         |t2          <   t5          |¦  «        |t6          <   ||t8          <   |r
||t:          <   |S )zŒ
    Return basic properties of an image provided as bytes or bytearray
    The function creates an fz_image and optionally returns it.
    Nr   r½  Úorientation)r7   rr   r�   Úfz_recognize_image_formatÚFZ_IMAGE_UNKNOWNrœ  Úfz_new_buffer_from_shared_datar°  Úfz_image_orientation_matrixr-  Úfz_image_orientationr¯  rë  r5   r   rÂ  rÑ  rÃ  r�  rÁ  rÅ  rÆ  rE   rÄ  r,  rÇ  rX  r
  r  Údictkey_image)rï  Ú
keep_imager  rË  rk  r/  rF  rî  rJ  rK  r`  Úcs_namer+  s                r)   ÚJM_image_profileri  /R  s¤  € ð
 ð Øˆtå�	‰?Œ?€DØˆa‚x€xÝÐ!Ñ"Ô"Ð"ØˆtØ€AåÔ+¨QÑ/Ô/€EØ•Ô&Ò&Ð&Øˆtàð =ÝÔ2°A°tÑ<Ô<ˆˆåÔ2°A°tÑ<Ô<ˆÝÔ*¨CÑ0Ô0€EÝ
Ô
+¨UÑ
3Ô
3€CÝÔ*¨5Ñ1Ô1�J€Dˆ$ÝÔ,¨eÑ4Ô4€KÝÔ&¨×(8Ò(8Ñ(:Ô(:Ñ;Ô;€GÝ‰VŒV€FØ"ŸWšW™YœY€F�MÑØ#Ÿgšg™iœi€F�NÑØ(€FˆMÑÝ/°Ñ4Ô4€F�NÑØ €F�LÑØ €F�LÑØ"'§'¢'¡)¤)€FÕÑØ Ÿ9š9™;œ;€F�KÑÝ-¨eÑ4Ô4€F�KÑØ&€F�OÑàð 'Ø!&ˆ•ÑØ€Mr*   c                óx  — |                       ¦   «         }t          j        ¦   «         at          j        ¦   «         }t          j        | |t          ¦  «          G d„ dt          j        ¦  «        } |¦   «         }t          dddd|¬¦  «        }g at          j	        || |¦  «         t          t          ¦  «        }g a|S )Nc                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ú0JM_image_reporter.<locals>.SanitizeFilterOptionsc                óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S r,   ©rÇ   rŒ   Úuse_virtual_image_filter©r(   rO  s    €r)   rŒ   z9JM_image_reporter.<locals>.SanitizeFilterOptions.__init__cR  s1   ø€ Ý‰GŒG×ÒÑÔÐØ×)Ò)Ñ+Ô+Ð+Ð+Ð+r*   c                óN   — t          d t          j        |¦  «        ||¦  «         d S r,   )r^  r�   r‚  )r(   rR  rî  r   rF  rq  s         r)   Úimage_filterz=JM_image_reporter.<locals>.SanitizeFilterOptions.image_filterfR  s&   € Ý˜D¥%¤.°Ñ"5Ô"5°t¸UÑCÔCÐCÐCÐCr*   ©r/   r0   r1   rŒ   rr  rW  ©rO  s   @r)   ÚSanitizeFilterOptionsrl  bR  sN   ø€ € € € € ð	,ð 	,ð 	,ð 	,ð 	,ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dr*   ru  r   )r›  rœ  rZ  r�  rN  )r:  r�   r‚  r[  rx  r/  ÚPdfSanitizeFilterOptions2rŸ  r]  rý  rµ   )rÖ   r:  r€  ru  Úsanitize_filter_optionsÚfilter_optionsr    s          r)   rø  rø  [R  sÚ   € Ø
�(Š(‰*Œ*€CåœÑ(Ô(ÐÝŒ|‰~Œ~€HÝ	Ô˜T 8Õ->Ñ?Ô?Ð?ðDð Dð Dð Dð D¥Ô ?ñ Dô Dð Dð 4Ð3Ñ5Ô5Ðå+ØØØØØ)ðñ ô €Nð €Jå	Ô" C¨¨~Ñ>Ô>Ð>å	�zÑ	Ô	€BØ€JØ€Ir*   c                 óF  — t          t          d¦  «         } t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d	¦  «         }t          ¦   «         }	||	d
<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j	        ¦  «        |	d<   t          t          j
        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t           ¦  «        |	d<   t          t          j        ¦  «        |	d<   | |	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d <   t          t          j        ¦  «        |	d!<   |	S )"NÚTOFUÚTOFU_BASE14ÚTOFU_CJKÚTOFU_CJK_EXTÚTOFU_CJK_LANGÚ
TOFU_EMOJIÚTOFU_HISTORICÚTOFU_SILÚTOFU_SYMBOLÚbase14ÚcbzÚepubr2  Úiccrß  rG  r=  rj  zplotter-cmykz	plotter-gz	plotter-nzplotter-rgbz	py-memoryr	  Útofuztofu-cjkztofu-cjk-extztofu-cjk-langz
tofu-emojiztofu-historicztofu-silztofu-symbolÚxps)r;   r�   r5   rø   ÚFZ_ENABLE_CBZÚFZ_ENABLE_EPUBÚFZ_ENABLE_HTMLÚFZ_ENABLE_ICCÚFZ_ENABLE_IMGÚFZ_ENABLE_JPXÚFZ_ENABLE_JSÚFZ_ENABLE_PDFÚFZ_PLOTTERS_CMYKÚFZ_PLOTTERS_GÚFZ_PLOTTERS_NÚFZ_PLOTTERS_RGBÚ	JM_MEMORYÚFZ_ENABLE_SVGÚFZ_ENABLE_XPS)
Ú	have_TOFUÚhave_TOFU_BASE14Úhave_TOFU_CJKÚhave_TOFU_CJK_EXTÚhave_TOFU_CJK_LANGÚhave_TOFU_EMOJIÚhave_TOFU_HISTORICÚhave_TOFU_SILÚhave_TOFU_SYMBOLrG   s
             r)   ÚJM_fitz_configr¡  }R  s9  € Ý%¥e¨VÑ4Ô4Ð4€IÝ%¥e¨]Ñ;Ô;Ð;ÐÝ%¥e¨ZÑ8Ô8Ð8€MÝ%¥e¨^Ñ<Ô<Ð<ÐÝ%¥e¨_Ñ=Ô=Ð=ÐÝ%¥e¨\Ñ:Ô:Ð:€OÝ%¥e¨_Ñ=Ô=Ð=ÐÝ%¥e¨ZÑ8Ô8Ð8€MÝ%¥e¨]Ñ;Ô;Ð;Ðå
‰&Œ&€CØ.€Cˆ�MÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#7Ñ8Ô8€Cˆ�KÝ"¥5Ô#7Ñ8Ô8€Cˆ�KÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#5Ñ6Ô6€Cˆ�IÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#9Ñ:Ô:€CˆÑÝ"¥5Ô#6Ñ7Ô7€CˆÑÝ"¥5Ô#6Ñ7Ô7€CˆÑÝ"¥5Ô#8Ñ9Ô9€CˆÑÝ"¥9™oœo€CˆÑÝ"¥5Ô#6Ñ7Ô7€Cˆ�JØ'€Cˆ�KØ+€Cˆ
�OØ/€CˆÑØ0€CˆÑØ-€CˆÑØ0€CˆÑØ+€Cˆ
�OØ.€CˆÑÝ"¥5Ô#6Ñ7Ô7€Cˆ�JØ€Jr*   c                ó‚  — t          j        |t          d¦  «        ¦  «        }t          j        | |t          j        ¦   «         d¦  «        }t          j        |¦  «        }t          j        |¦  «        r/|rt          j        ||¦  «         n´t          j        ||d¦  «         n�t          j	        | d¦  «        }|r2|j
        rt          j        ||¦  «         t          j        ||¦  «         n1t          j        ||¦  «         |j
        rt          j        ||¦  «         t          j        |t          d¦  «        |¦  «         |S )ag  
    Insert a buffer as a new separate /Contents object of a page.
    1. Create a new stream object from buffer 'newcont'
    2. If /Contents already is an array, then just prepend or append this object
    3. Else, create new array and put old content obj and this object into it.
       If the page had no /Contents before, just create a 1-item array.
    r"  r   r   )r�   r  r  r>  r?  r  r™  r›  rh  r[  rÌ   r^  )rj  rU  Únewcontr5  r�  Únewcontsr   Úcarrs           r)   r2  r2  ¤R  s5  € õ Ô! '­8°JÑ+?Ô+?Ñ@Ô@€HÝÔ# C¨µ%´,±.´.À!ÑDÔD€HÝÔ˜HÑ%Ô%€DÝÔ˜(Ñ#Ô#ð @Øð 	:ÝÔ  ¨8Ñ4Ô4Ð4Ð4åÔ" 8¨X°qÑ9Ô9Ð9Ð9åÔ" 3¨Ñ*Ô*ˆØð 	5ØÔ"ð 5ÝÔ$ T¨8Ñ4Ô4Ð4ÝÔ   xÑ0Ô0Ð0Ð0åÔ   xÑ0Ô0Ð0ØÔ"ð 5ÝÔ$ T¨8Ñ4Ô4Ð4ÝÔ˜7¥H¨ZÑ$8Ô$8¸$Ñ?Ô?Ð?Ø€Kr*   c
           
     ó¤  — d}
d}d}d}d}d}d}d}d}d}t          | ¦  «         |	dk    rt          j        |	¦  «        \  }}}|r5t          j        d|||d¦  «        }
t          j        | |
|	||¦  «        }d}d}ná|rt          j        |¦  «        \  }}|r3t          j        |||dd¦  «        }
t          j        | |
|¦  «        }d}d}n“|rt          j        d||d¦  «        }
nGt          |¦  «        }|j	        st          t          t          ¦  «         t          j        d||d¦  «        }
|st          j        | |
¦  «        }d}nt          j        | |
|¦  «        }d}t          j        |¦  «        }t!          t          j        t          j        |t'          d¦  «        ¦  «        ¦  «        ¦  «        }t)          t          j        t          j        |t'          d¦  «        ¦  «        ¦  «        ¦  «        }|st)          t+          | |¦  «        ¦  «        }t          j        |
¦  «        }t          j        |
¦  «        }||||t1          |¦  «        |	||d	œg}|S )
z 
    Insert a font in a PDF
    Nr   rA  r  r   r   r  r•  )r   rÈ   r#  rI  r$  rG  rH  )rn  r�   r(  r)  Úpdf_add_cjk_fontr*  Úpdf_add_simple_fontrù  r7  rÌ   rÀ  r[  r{  r,  Úpdf_add_cid_fontr  rÂ  r‰  r  r  r  r	  rÈ
  rØ
  rø   )rj  r"  r]  r^  rP  rC  rÓ
  rÞ
  rû  r$  rb  r/  rˆ  Úixrefro  rI  r¸   r   r›  ÚextorÈ  rQ  r_  r`  s                           r)   r\  r\  ÂR  s‡  € ð €DØ
€CØ€DØ€EØ€EØ€FØ
€EØ	€DØ	€DØ€Då�SÑÔÐà�"‚}€}Ý!Ô4°XÑ>Ô>Ñˆˆd�EØð  ÝÔ,¨T°4¸¸uÀaÑHÔHˆÝÔ)¨#¨t°X¸uÀeÑLÔLˆØˆØˆˆð
 ð 	=ÝÔ4°VÑ<Ô<‰JˆD�$Øð 	ÝÔ0°¸¸tÀQÈÑJÔJˆDÝÔ0°°d¸HÑEÔEˆHØˆDØˆFˆFð ð HÝÔ2°4¸À3ÈÑJÔJ��å(¨Ñ4Ô4�Ø”~ð BÝÕ.Õ0@ÑAÔAÐAÝÔ4°T¸3ÀÀQÑGÔG�àð Ý Ô1°#°tÑ<Ô<�Ø��å Ô4°S¸$ÀÑIÔI�Ø�åÔ˜XÑ&Ô&€EÝ¥Ô 1µ5Ô3EÀhÕPXÐYcÑPdÔPdÑ3eÔ3eÑ fÔ fÑgÔg€Då�eÔ/µÔ1CÀXÍxÐXaÑObÔObÑ1cÔ1cÑdÔdÑeÔe€Dàð CÝ Õ!5°c¸5Ñ!AÔ!AÑBÔBˆå
Ô
  Ñ
&Ô
&€CÝ
Ô
! $Ñ
'Ô
'€CààØØÝ˜v™,œ,Ø$ØØ ðð ð€Eð €Lr*   c                óª  — t          | t          j        ¦  «        r| S t          | t          ¦  «        r-t          j        | j        | j        | j        | j        ¦  «        } | S t          | t          ¦  «        rAt          j	        | j        | j        | j        | j        ¦  «        }t          j        |¦  «        }|S t          | t          j	        ¦  «        rt          j        | ¦  «        }|S | r"t          | ¦  «        rt          | ¦  «        dk    rt          j        t          j        ¦  «        S g d¢}t          d¦  «        D ]k}| |         ||<   ||         € t          j        t          j        ¦  «        c S ||         t          k     r
t          ||<   ||         t          k    r
t          ||<   Œlt          j        |d         |d         |d         |d         ¦  «        S )z>
    PySequence to mupdf.FzIrect. Default: infinite irect
    rZ  r�  Nr   r   r   r   )r>   r�   rÃ  rÄ  r  r  r  r  r4  rx  r†  rˆ  rË  r\  rÙ  rÚ  Úfz_make_irect)r.  rG   rÝ  r®   s       r)   r»  r»  S  sž  € õ �!•U”]Ñ#Ô#ð ØˆÝ�!•UÑÔð ÝŒM˜1œ4 ¤ q¤t¨Q¬TÑ2Ô2ˆØˆÝ�!•TÑÔð ÝŒl˜1œ4 ¤ q¤t¨Q¬TÑ2Ô2ˆÝŒm˜CÑ Ô ˆØˆ
Ý�!•U”\Ñ"Ô"ð ÝŒm˜AÑÔˆØˆ
Øð 6Õ$ QÑ'Ô'ð 6­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ}�UÔ4Ñ5Ô5Ð5Øˆˆ€AÝ�1‰XŒXð #ð #ˆØ�Œtˆˆ!‰ØˆQŒ4ˆ<Ý”=¥Ô!8Ñ9Ô9Ð9Ð9Ð9ØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DøÝÔ˜q œt Q q¤T¨1¨Q¬4°°1´Ñ6Ô6Ð6r*   c                óö  — t          j        | ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        S t          j        |¦  «        }g }t          |¦  «        D ]t}t          j        ||¦  «        }t          j	        |¦  «        rt          j        |d¦  «        }| 
                    t          t          j        |¦  «        ¦  «        ¦  «         Œu|S )z 
    ListBox retrieve value
    rñ   r   )r�   r  r  r  rp
  r  r«  r\  r¬  r™  rk   r  )rß   r0  r`  rE   rW  r®   Úelems          r)   ÚJM_listbox_valuer°  ,S  så   € õ
 Ô# UÑ+Ô+€IÝÔ ­H°S©M¬MÑ:Ô:€FÝÔ˜FÑ#Ô#ð 1ÝÔ'¨Ñ0Ô0Ð0õ 	Ô˜VÑ$Ô$€AØ€Eõ �A‰YŒYð Kð KˆÝÔ" F¨AÑ.Ô.ˆÝÔ˜tÑ$Ô$ð 	1ÝÔ&¨¨aÑ0Ô0ˆDØ�ŠÕ'­Ô)AÀ4Ñ)HÔ)HÑIÔIÑJÔJÐJÐJØ€Lr*   c           	     ó¢  — d}|dk     r|dz  }nu|dk    r||d         d›d�z  }n_|dk    rJ ‚|dk    r$||d         d›d	|d         d›d	|d         d›d
�z  }n-||d         d›d	|d         d›d	|d         d›d	|d         d›d�z  }|dt          |¦  «        › d	|› d�z  }t          j        t          j        | ¦  «        t          j        |¦  «         d S )Nr\   r   z0 g r   r
  z g r   r   r³   z rg z k rb  rU  )r«  r�   r�  r  ÚPDF_ENUM_NAME_DA)rß   r^  ro  r	  r
  rÐ  s         r)   ré  ré  DS  s*  € ð
 €CØˆa‚x€xØˆw‰ˆˆØ	�ŠˆØ�#�a”&ÐÐÐÐÑˆˆØ	�ŠˆØˆqØ	�ŠˆØ�#�a”&Ð6Ð6Ð6˜S œVÐ6Ð6Ð6¨¨A¬Ð6Ð6Ð6Ð6Ñ6ˆˆà�#�a”&Ð@Ð@Ð@˜S œVÐ@Ð@Ð@¨¨A¬Ð@Ð@Ð@°3°q´6Ð@Ð@Ð@Ð@Ñ@ˆØÐ8�˜xÑ(Ô(Ð8Ð8¨8Ð8Ð8Ð8Ñ8€CÝ	Ô"¥5Ô#6°uÑ#=Ô#=½uÔ?UÐWZÑ[Ô[Ð[Ð[Ð[r*   c                ó4   — 	 t          j        | ||||¦  «        S r,   )4r'  r   ÚJM_make_spanlistr�   r¡  rx  rŸ  r¢  r£  r¾  rK  rQ  rR  rÌ   rb  r2  r†  rÈ  rÎ  ÚFZ_STEXT_SYNTHETICrX	  rÁ  ÚargbrS  r_  rT  rÉ  rÒ  Údictkey_charsr€
  r  ÚJM_py_from_pointÚdictkey_originrw  rc	  r¥  rk   r5   rÆ  Údictkey_flagsÚdictkey_bidirW	  rÂ  rV	  r  r*
  rË  Ú	dictkey_crø   r¤  r½  rb	  )Ú	line_dictro   r»  rY  r©  Ú	char_listÚ	span_listÚ	span_rectÚ	line_rectÚ
char_styleÚ	old_stylerm  rò  Úspan_originr	  r.  rÎ  r†  r_  rÉ  Ú	char_dicts                        r)   r´  r´  XS  s!   € ðKÝÔ% i°°s¸DÀ'ÑJÔJÐJr*   c                ó,  — |                       ¦   «         }t          |¦  «        }t          j        | j        ¦  «        }	 |r*|t          j        t          j        fv s|t          j        k     r4t          j        | t          j	        t          j
        ¦  «        ¦  «        }d}n”|dk    rc|                      ¦   «         dk    rKt          j        | t          j	        t          j
        ¦  «        dt          dk    rt          j        nd¦  «        }n+t          j        t          j        |j        ¦  «        ¦  «        }t%          |¦  «        }|                      ¦   «         |t(          <   |                      ¦   «         |t,          <   ||t.          <   |                      ¦   «         |t0          <   |                      ¦   «         |t4          <   |                      ¦   «         |t8          <   |                      ¦   «         |t<          <   t?          |¦  «        |t@          <   ||tB          <   dS )	zÒPopulate a dictionary with information extracted from a given image.

    Used by 'Document.extract_image' and by 'JM_make_image_block'.
    Both of these functions will add some more specific information.
    r   rÖ  rx  rZ  rn  r÷  r   N)"Úfz_compressed_image_typerX  r�   Úll_fz_compressed_image_bufferrÌ   rQ  rb  rO  Úfz_new_buffer_from_image_as_pngr&  r[  rE   Ú fz_new_buffer_from_image_as_jpegræ  ÚFZ_CMYK_JPEG_INVERTEDr|  rÍ
  rñ  r-  r   rÂ  rÑ  rÃ  r
  rÄ  rJ  rÅ  rK  rÆ  r,  rÇ  r7   rÆ  rf  )rß  Úimg_dictÚimg_typer#  Úll_cbufr/  r  s          r)   r  r  îS  s¶  € ð ×+Ò+Ñ-Ô-€HÝ
˜XÑ
&Ô
&€Cõ Ô1°#´.ÑAÔA€GðFØðFà�Ô,­eÔ.DÐEÐEÐEØ•eÔ(Ò(Ð(õ Ô3ØÝÔ'­Ô(EÑFÔFñô ˆð ˆˆØ	�Šˆ˜3Ÿ5š5™7œ7 aš<˜<åÔ4ØÝÔ'­Ô(EÑFÔFØÝ3FÈ'Ò3QÐ3Q•EÔ/Ð/ÐWXñ	ô ˆˆõ Œn�UÔ4°W´^ÑDÔDÑEÔEˆå˜cÑ"Ô"€FØ!Ÿeše™gœg€H�]ÑØ"Ÿušu™wœw€H�^ÑØ€H�[ÑØ#&§5¢5¡7¤7€HÕÑ Ø ŸXšX™ZœZ€H�\ÑØ ŸXšX™ZœZ€H�\ÑØŸGšG™IœI€H�[ÑÝ  ™[œ[€H�\ÑØ$€H�]ÑÐÐr*   c                ór  — |                       ¦   «         }t          ||¦  «         |                     ¦   «         }|j        rI|                     t          j        t
          j        ¦  «        ¦  «        }|                     ¦   «         |d<   nd |d<   t          |  
                    ¦   «         ¦  «        |t          <   d S )NrG  )r§  r  rG  rÌ   rÉ  r�   r&  r[  r8  r�  rÀ  rÁ  )rg	  rË  rß  rG  rY  s        r)   ÚJM_make_image_blockrÐ  T  sž   € Ø
�-Š-‰/Œ/€CÝ�S˜*Ñ%Ô%Ð%à�8Š8‰:Œ:€DØ„ð "Ø×3Ò3µEÔ4GÍÔHeÑ4fÔ4fÑgÔgˆØ!×3Ò3Ñ5Ô5ˆ
�6ÑÐà!ˆ
�6ÑÝ!2°5×3DÒ3DÑ3FÔ3FÑ!GÔ!G€J�~ÑÐÐr*   c                óR   — 	 t          j        | j        |||j        |j        ¦  «        S r,   )r'  r   ÚJM_make_text_blockrÌ   r�   rx  rŸ  r½  rî  r?  r¾  r5   r´  r¥  rÓ
  Údictkey_wmoder¸  rs  Údictkey_dirrw  rc	  rk   Údictkey_lines)
rg	  rË  r»  rY  r©  Ú	line_listÚ
block_rectro   r½  rÁ  s
             r)   rÒ  rÒ  )T  s*   € ðpÝÔ'¨Ô(8¸*ÀcÈ4Ì?Ð\cÔ\nÑoÔoÐor*   c                ó:   — 	 t          j        | j        ||¦  «        S r,   )r'  r   r˜  rÌ   r�   rî  rx  r€  Úfz_contains_rectr?  r¾  rÈ   ÚFZ_STEXT_BLOCK_IMAGEr½  rî  r5   r¿  r  rw  rc	  rÐ  rÒ  rk   Údictkey_blocks)	rÄ  r™  r»  Útext_bufferÚ
block_listr©  r¨  rg	  rË  s	            r)   r˜  r˜  @T  s   € ðJÝÔ*¨2¬=¸)ÀSÑIÔIÐIr*   c           	     óF  — g d¢}t          | t          j        ¦  «        r| S t          | t          ¦  «        r7t          j        | j        | j        | j        | j        | j        | j	        ¦  «        S | r"t          | ¦  «        rt          | ¦  «        dk    rt          j        ¦   «         S t          d¦  «        D ]2}t          | |¦  «        ||<   ||         €t          j        ¦   «         c S Œ3t          j        |d         |d         |d         |d         |d         |d         ¦  «        S )	N)r   r   r   r   r   r   rþ  r   r   r   r   rZ  r   )r>   r�   r‚  r…  r!   rÜ
  rË  r  rp  rÝ  r†  rˆ  r\  rë  rx  )r�  r!   r®   s      r)   rã  rã  aT  s  € ØÐÐ€AÝ�!•U”^Ñ$Ô$ð ØˆÝ�!•VÑÔð <ÝŒ~˜aœc 1¤3¨¬¨Q¬S°!´#°q´sÑ;Ô;Ð;Øð  Õ$ QÑ'Ô'ð  ­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ~ÑÔÐÝ�1‰XŒXð "ð "ˆÝ˜Q Ñ"Ô"ˆˆ!‰ØˆQŒ4ˆ<Ý”<‘>”>Ð!Ð!Ð!ð åŒ>˜!˜Aœ$  !¤ a¨¤d¨A¨a¬D°!°A´$¸¸!¼Ñ=Ô=Ð=r*   c           	     óä  — t          j        t           j        j        ¦  «        }t          j        t          j        | t          d¦  «        ¦  «        ¦  «        }t          j        |¦  «        st          j        |¦  «        rd|_        d|_	        d|_
        d|_        t          j        t          j        |j        |j
        ¦  «        t          j        |j	        |j        ¦  «        t          j        |j        |j
        ¦  «        t          j        |j	        |j        ¦  «        ¦  «        }|j
        |j        z
  dk     s|j        |j	        z
  dk     r#t          j        t           j        j        ¦  «        }|S )z&
    return a PDF page's MediaBox
    r“  r   éd  é  r   )r�   rx  r{  r\  rP  r  r½  r¾  r  r  r  r  Úfz_minÚfz_max)r‚  Úpage_mediaboxr€  s      r)   rq  rq  pT  s*  € õ ”L¥¤Ô!8Ñ9Ô9€MÝÔ ÝÔ*¨8µX¸jÑ5IÔ5IÑJÔJñô €Hõ Ô˜hÑ'Ô'ð ­5Ô+DÀXÑ+NÔ+Nð ØˆŒØˆŒØˆŒØˆŒå”LÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ñ	ô €Mð 	Ô˜=Ô+Ñ+¨aÒ/Ð/ØÔ -Ô"2Ñ2°QÒ6Ð6åœ¥U¤\Ô%<Ñ=Ô=ˆàÐr*   c
                ó  — t           rt          j        | |||||||||	¦
  «
        S |}
d}t          j        ||z
  ¦  «        dz   }||k     r\|}||k    rRt          | |||
||||	¦  «         |dz  }|dk    r||z  dk    rt          d|› d|› d�¦  «         |dz  }|
dz  }
||k    °PdS dS |}||k    rRt          | |||
||||	¦  «         |dz  }|dk    r||z  dk    rt          d|› d|› d�¦  «         |dz  }|
dz  }
||k    °PdS dS )z·
    Copy a range of pages (spage, epage) from a source PDF to a specified
    location (apage) of the target PDF.
    If spage > epage, the sequence of source pages is reversed.
    r   r   z	Inserted rG  z pages.N)r'  r   rë  r�   Úfz_absiÚ
page_mergerr   )Údoc_desÚdoc_srcÚspageÚepageÚapageri  rˆ  r¯  r×  Ú	graft_mapÚ	afterpageÚcounterÚtotalrÖ   s                 r)   rë  rë  �T  s˜  € õ" ð ÝÔ#ØØØØØØØØØØñô ð 	ð €IØ€GÝŒM˜% %™-Ñ(Ô(¨1Ñ,€Eàˆu‚}€}ØˆØ�eŠmˆmÝ�w ¨¨y¸&À%ÈÐQZÑ[Ô[Ð[Ø�q‰LˆGØ˜qÒ Ð  W¨}Ñ%<ÀÒ%AÐ%AÝÐ? GÐ?Ð?°Ð?Ð?Ð?Ñ@Ô@Ð@Ø�A‰IˆDØ˜‰NˆIð �eŠmˆmˆmˆmˆmˆmð ˆØ�eŠmˆmÝ�w ¨¨y¸&À%ÈÐQZÑ[Ô[Ð[Ø�q‰LˆGØ˜qÒ Ð  W¨}Ñ%<ÀÒ%AÐ%AÝÐ? GÐ?Ð?°Ð?Ð?Ð?Ñ@Ô@Ð@Ø�A‰IˆDØ˜‰NˆIð �eŠmˆmˆmˆmˆmˆmr*   c                ó   — t          j        |                      ¦   «         t          d¦  «        ¦  «        }|j        s5t          j        |                      ¦   «         t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }d}d}t          j        |¦  «        �r^t          j        |¦  «        }	t          j        |¦  «        r†t          t          j        |¦  «        ¦  «        D ]c}
t          j	        t          j
        ||
¦  «        ¦  «        }|                     d¦  «        sŒ?t          j        |dd…         ¦  «        }||k    r|}Œdn#t          j        |t          d¦  «        |	¦  «        }|d	z  }t          |	¦  «        D ]x}
t          j	        t          j
        ||
¦  «        ¦  «        }t          j        |dd…         ¦  «        |z   }d|› �}t          j        ||
¦  «        }t          j        |||¦  «         Œyt          j        |¦  «        r†t          t          j        |¦  «        ¦  «        D ]c}
t          j	        t          j
        ||
¦  «        ¦  «        }|                     d
¦  «        sŒ?t          j        |d	d…         ¦  «        }||k    r|}Œdn#t          j        |t          d¦  «        d¦  «        }|d	z  }t          t          j        |¦  «        ¦  «        D ]x}
t          j	        t          j
        ||
¦  «        ¦  «        }t          j        |d	d…         ¦  «        |z   }d
|› �}t          j        ||
¦  «        }t          j        |||¦  «         Œy||fS )aW  
    Merge the /Resources object created by a text pdf device into the page.
    The device may have created multiple /ExtGState/Alp? and /Font/F? objects.
    These need to be renamed (renumbered) to not overwrite existing page
    objects from previous executions.
    Returns the next available numbers n, m for objects /Alp<n>, /F<m>.
    rE  r   rI  r=  rA  ÚAlpr   Nr   r·  r   )r�   r  r  r  rÌ   rb  rŠ  r‹  r\  r‰  r�  r3   Úfz_atoirŒ  r�  )rÖ   Útemp_resrq  Ú	main_extgÚ
main_fontsÚ	temp_extgÚ
temp_fontsrb  Ú	max_fontsrE   r®   rf  r‘  r   r"  rb  s                   r)   r\  r\  ÃT  s†  € õ Ô" 4§8¢8¡:¤:­x¸Ñ/DÔ/DÑEÔE€IØÔð RÝÔ+¨D¯HªH©J¬J½ÀÑ8MÔ8MÈqÑQÔQˆ	ÝÔ" 9­h°{Ñ.CÔ.CÑDÔD€IÝÔ# I­x¸Ñ/?Ô/?Ñ@Ô@€Jõ Ô" 8­X°kÑ-BÔ-BÑCÔC€IÝÔ# H­h°vÑ.>Ô.>Ñ?Ô?€Jà€GØ€Iõ Ô˜Ñ#Ô#ñ 6ÝÔ˜yÑ)Ô)ˆÝÔ˜YÑ'Ô'ð 
	UÝ�5Ô-¨iÑ8Ô8Ñ9Ô9ð  ð  �åÔ'­Ô)?À	È1Ñ)MÔ)MÑNÔN�Ø—~’~ eÑ,Ô,ð ØÝ”M # a b b¤'Ñ*Ô*�Ø�w’;�;Ø�Gøð õ Ô/°	½8ÀKÑ;PÔ;PÐRSÑTÔTˆIà�1‰ˆÝ�q‘”ð 	6ð 	6ˆAÝÔ#¥UÔ%;¸YÈÑ%JÔ%JÑKÔKˆCÝ”˜c ! " "œgÑ&Ô&¨Ñ0ˆAØ˜�9�9ˆDÝÔ(¨)°QÑ7Ô7ˆCÝÔ 	¨4°Ñ5Ô5Ð5Ð5åÔ˜Ñ$Ô$ð 	MÝ•uÔ)¨*Ñ5Ô5Ñ6Ô6ð 	ð 	ˆAÝÔ$¥eÔ&<¸jÈ!Ñ&LÔ&LÑMÔMˆDØ—?’? 3Ñ'Ô'ð ØÝ”˜d 1 2 2œhÑ'Ô'ˆAØ�9Š}ˆ}Ø�	øð	õ Ô,¨Y½ÀÑ8HÔ8HÈ!ÑLÔLˆ
à��N€IÝ•5Ô% jÑ1Ô1Ñ2Ô2ð 3ð 3ˆÝÔ ¥%Ô"8¸*ÀaÑ"HÔ"HÑIÔIˆÝŒM˜$˜q˜r˜rœ(Ñ#Ô# iÑ/ˆØ�1ˆwˆwˆÝÔ$ Z°Ñ3Ô3ˆÝÔ˜J¨¨cÑ2Ô2Ð2Ð2Ø�YÐÐr*   c                óp   — t                                | ¦  «         t          rt          d| › �¦  «         dS dS )z!
    redirect MuPDF warnings
    zMuPDF warning: N)rÓ  rk   ÚJM_mupdf_show_warningsrr   rq   s    r)   ÚJM_mupdf_warningrü  U  sG   € õ ×"Ò" 4Ñ(Ô(Ð(Ýð *ÝÐ( $Ð(Ð(Ñ)Ô)Ð)Ð)Ð)ð*ð *r*   c                ór   — t                                | ¦  «         t          rt          d| › d�¦  «         d S d S )NzMuPDF error: r%   )rÓ  rk   r  rr   rq   s    r)   ÚJM_mupdf_errorrþ  U  sH   € Ý×"Ò" 4Ñ(Ô(Ð(Ýð *ÝÐ( Ð(Ð(Ð(Ñ)Ô)Ð)Ð)Ð)ð*ð *r*   c                óP   — t          | t          ¦  «        sJ ‚t          | |¦  «        S r,   )r>   r´   ÚJM_new_bbox_device_Device)r    r\  s     r)   rZ  rZ  U  s(   € Ý�b�$ÑÔÐÐÐÝ$ b¨*Ñ5Ô5Ð5r*   c           
     óx  — t          | t          j        ¦  «        sJ ‚t          j        | j        j        ¦  «        }t          j        d¦  «        }| D ]è}|j        j        t          j        k    rÌ|D ]§}d}|D ]|}t          |t          ||¦  «        ¦  «        st          j        |¦  «        sŒ5|j        j        s|j        j        t          j        z  rd}Œ]t          j        ||j        j        ¦  «         Œ}|r"t          j        |t%          d¦  «        ¦  «         Œ¨t          j        |t%          d¦  «        ¦  «         Œé|S )z1
    make a buffer from an stext_page's text
    r'  Tr   r%   )r>   r�   r  rx  rÌ   r€  rî  rÈ   r   r£  r¢  r¾  rL  rÎ  ÚFZ_STEXT_LINE_FLAGS_JOINEDÚfz_append_runerË  r¦  rÐ
  )rÖ   r  rÐ  rg	  ro   Ú
break_liner	  s          r)   ÚJM_new_buffer_from_stext_pager  U  sB  € õ �d�EÔ-Ñ.Ô.Ð.Ð.Ð.ÝŒ<˜œÔ0Ñ1Ô1€DÝ
Ô
˜cÑ
"Ô
"€CØð 1ð 1ˆØÔÔ ¥EÔ$=Ò=Ð=Øð 9ð 9�Ø!�
Øð Cð C�BÝ,¨Tµ<ÀÀbÑ3IÔ3IÑJÔJð !Ý$)Ô$=¸dÑ$CÔ$Cð!ð !Øœ=Ô-ð C°4´?Ô3HÍ5ÔKkÑ3kð CØ%&˜
˜
åÔ,¨S°"´-´/ÑBÔBÐBÐBØð 9ÝÔ(¨­c°$©i¬iÑ8Ô8Ð8øÝÔ  ¥c¨$¡i¤iÑ0Ô0Ð0øØ€Jr*   c                ó¬  — |€dS t          |¦  «        }|€dS t          j        |                     d¦  «        ¦  «        }t          j        | |t          j        ¦   «         d¦  «        }t          j        | d¦  «        }t          j        |t          d¦  «        t          j	        d¦  «        ¦  «         t          j        |t          d¦  «        |¦  «         |S )z“
    make new PDF action object from JavaScript source
    Parameters are a PDF document and a Python string.
    Returns a PDF action object.
    Nr
  r   rZ  rk	  r:  r;  )
r¾  r�   rœ  r×  r>  r?  r}  r^  r  r?  )rj  r¸   rˆ  r/  rf
  Ú	newactions         r)   ÚJM_new_javascriptr  3U  s¶   € ð €}àˆÝ˜ÑÔ€DØ€|àˆå
Ô
.¨t¯{ª{¸6Ñ/BÔ/BÑ
CÔ
C€CÝÔ! # s­E¬L©N¬N¸AÑ>Ô>€FÝÔ& s¨AÑ.Ô.€IÝ	Ô�y¥(¨3¡-¤-µÔ1CÀLÑ1QÔ1QÑRÔRÐRÝ	Ô�y¥(¨4¡.¤.°&Ñ9Ô9Ð9ØÐr*   c                ó    — t          | ¦  «        S r,   )ÚJM_new_output_fileptr_Output)r_
  s    r)   r%  r%  IU  s   € Ý'¨Ñ-Ô-Ð-r*   c                ó`   — | dk     r| dz  } | dk     °| dk    r| dz  } | dk    °| dz  dk    rdS | S )zB
    # return normalized /Rotate value:one of 0, 90, 180, 270
    r   rÃ  rÄ  r-   r»  s    r)   r•  r•  MU  sW   € ð �1Š*ˆ*Ø�#‰ˆð �1Š*ˆ*à
�CŠ-ˆ-Ø�#‰ˆð �CŠ-ˆ-à��{�aÒÐØˆqØ€Mr*   c                óÔ   — t          j        d¦  «        }t          j        |¦  «        }t          j        || ||¦  «         |                     ¦   «          t          j        |¦  «         |S )Nrí  )r�   rî  rï  rð  r'  Úfz_terminate_buffer)rS  rY
  rœ  r/  r(  s        r)   rq
  rq
  ZU  s`   € Ý
Ô
˜cÑ
"Ô
"€CÝ
Œ.˜Ñ
Ô
€CÝ	Ô˜˜T 8¨UÑ3Ô3Ð3Ø×ÒÑÔÐÝ	Ô˜cÑ"Ô"Ð"Ø€Jr*   c                ó"  — | j         s|S | }|j         rüt          j        |¦  «        }||v s't          j        |t	          d¦  «        ¦  «        j         rn¼|                     |¦  «         t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        rt          ||¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        s|}|j         °ü|S )zƒ
    Return list of outline xref numbers. Recursive function. Arguments:
    'obj' first OL item
    'xrefs' empty Python list
    r@  rJ  ÚNextr¨  )rÌ   r�   r  r  r  rk   rŠ  rK  )r  rN  ÚthisobjÚnewxrefrP  rû   s         r)   rK  rK  cU  s  € ð Œ>ð ØˆØ€GØ
Ô
ð ÝÔ" GÑ,Ô,ˆØ�eÐÐ�uÔ1°7½HÀVÑ<LÔ<LÑMÔMÔXÐàØ�Š�gÑÔÐÝÔ" G­X°gÑ->Ô->Ñ?Ô?ˆÝÔ˜eÑ$Ô$ð 	4Ý$ e¨UÑ3Ô3ˆEÝÔ$ g­x¸Ñ/?Ô/?Ñ@Ô@ˆÝÔ# W­h°xÑ.@Ô.@ÑAÔAˆÝÔ  'Ñ*Ô*ð 	ØˆGð Ô
ð ð €Lr*   c                ó²   — d}t          j        |                      ¦   «         t           j        ¦  «        }t          j        |¦  «        }t          |¦  «        }|S )zE
    return a PDF page's /Rotate value: one of (0, 90, 180, 270)
    r   )r�   rP  r  r^  r  r•  )rÖ   ri  r  s      r)   r  r  |U  sH   € ð €Få
Ô
(¨$¯(ª(©*¬*µeÔ6PÑ
QÔ
Q€CÝÔ˜cÑ"Ô"€FÝ˜fÑ%Ô%€FØ€Mr*   c                óÚ   — t          j        t          |d¦  «        ¦  «        }t          j        |¦  «        }t          j        t           j        ¦  «        }t          j        | ||¦  «        }|S )zP
    create PDF object from given string (new in v1.14.0: MuPDF dropped it)
    r
  )r�   rœ  r)  rb  Ú	PdfLexbufÚPDF_LEXBUF_SMALLÚpdf_parse_stm_obj)r:  rá  r=  r	   Úlexbufr+  s         r)   r@  r@  ˆU  sY   € õ Ô2µ5¸¸fÑ3EÔ3EÑFÔF€GÝÔ! 'Ñ*Ô*€FÝŒ_�UÔ3Ñ4Ô4€FÝÔ$ S¨&°&Ñ9Ô9€FØ€Mr*   c                óf  — t          | t          j        ¦  «        sJ ‚|€t          j        ¦   «         }|�7t          |t          j        ¦  «        sJ dt	          |¦  «        ›d|› �¦   «         ‚t          j        | ¦  «        }t          |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          j	        ||¦  «        }t          j
        |¦  «        }	t          |t          j        ¦  «        sJ ‚t          j        ||	||¦  «        }
|rt          j        |
¦  «         nt          j        |
d¦  «         t          j        |¦  «        sQt          j        ||
|	¦  «        }t          j        | |t          j        ¦   «         |t          j        ¦   «         ¦  «         npt          j        ||
¦  «        }t          j        | |t          j        ¦   «         t          j        t          j        j        ¦  «        t          j        ¦   «         ¦  «         t          j        |¦  «         t1          d|
¦  «        S )z�
    Version of fz_new_pixmap_from_display_list (util.c) to also support
    rendering of only the 'clip' part of the displaylist rectangle
    Nztype(seps)=r{   r
  r»  )r>   r�   r¿  ræ  rÈ   rÒ  rã  r  rî  r¸  rï  r¢  rÅ  r  r  r¾  r¾  rÔ  r‚  rÕ  r½  rx  ry  r  rç  )r1  rî  rï  rì  r  rà  r  ré  rÿ  ró  rð  r  s               r)   rÎ  rÎ  –U  sæ  € õ �e�UÔ0Ñ1Ô1Ð1Ð1Ð1Ø€|ÝÔ"Ñ$Ô$ˆØˆ<�: d­EÔ,?Ñ@Ô@ˆ<ˆ<ÐBZÅTÈ$ÁZÄZÐBZÐBZÐTXÐBZÐBZ‰<Œ<Ð@åÔ& uÑ-Ô-€DÝ˜sÑ#Ô#€FÝ˜DÑ!Ô!€EÝÔ" 4¨Ñ/Ô/€DåÔ" 4¨Ñ0Ô0€DÝÔ Ñ%Ô%€Eå�r�5Ô-Ñ.Ô.Ð.Ð.Ð.å
Ô
'¨¨E°4¸Ñ
?Ô
?€CØð 4ÝÔ˜cÑ"Ô"Ð"Ð"åÔ(¨¨dÑ3Ô3Ð3åÔ$ UÑ+Ô+ð }ÝÔ0°¸¸eÑDÔDˆÝÔ! %¨­e¬nÑ.>Ô.>ÀÅuÄ~ÑGWÔGWÑXÔXÐXÐXåÔ& v¨sÑ3Ô3ˆÝÔ! %¨­e¬nÑ.>Ô.>ÅÄÍUÌ\ÔMhÑ@iÔ@iÕkpÔkyÑk{Ôk{Ñ|Ô|Ð|å	Ô˜#ÑÔÐå�5˜#ÑÔÐr*   c                ó   — t          | t          j        ¦  «        r| S t          | t          ¦  «        rt          j        | j        | j        ¦  «        S t          rt          j        | ¦  «        S t          j        dd¦  «        }t          | d¦  «        }t          | d¦  «        }|�|€|S t          |t          ¦  «        }t          |t          ¦  «        }t          |t          ¦  «        }t          |t          ¦  «        }t          j        ||¦  «        S )zM
    PySequence to fz_point. Default: (FZ_MIN_INF_RECT, FZ_MIN_INF_RECT)
    r   r   )r>   r�   r2  rú  r4  r5  r'  r   rk  rë  rø  rÙ  rç  rÚ  )r²  rŠ  r4  r5  s       r)   rk  rk  ÃU  sé   € õ �!•U”]Ñ#Ô#ð ØˆÝ�!•UÑÔð 'ÝŒ}˜QœS !¤#Ñ&Ô&Ð&Ýð *ÝÔ% qÑ)Ô)Ð)å	Œ�q˜!Ñ	Ô	€BÝ�a˜ÑÔ€AÝ�a˜ÑÔ€AØ€y�A�IØˆ	ÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝŒ=˜˜AÑÔÐr*   c                ó  — t           rt          j        | |¦  «        S t          | t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚t	          j        |j        j	        ¦  «        }d}d}d}d}t          |¦  «        D ]X\  }}|j        j        t          j        k    r4t          |¦  «        D ]\  }	}
t          |
¦  «        D ]\  }}Œ||z  }Œ ||	z  }||z  }ŒY|D ]™}|j        j        t          j        k    r}|D ]z}
d}|
D ]R}t          |
|¦  «        }t	          j        |¦  «        st          ||¦  «        r|j        j        }t#          | |¦  «         ŒS|dk    r|dk    rt	          j        | d¦  «         Œ{ŒšdS )zÉ
    Plain text output. An identical copy of fz_print_stext_page_as_text,
    but lines within a block are concatenated by space instead a new-line
    character (which else leads to 2 new-lines).
    r   r   r¯  r%   N)r'  r   r”  r>   r�   r|  r  rx  rÌ   r€  rþ  rÈ   r   r¢  r¾  r£  rË  r¤  r1  )r/  rÖ   r  r¬  Ún_blocksÚn_linesÚn_charsÚ	n_blocks2rg	  Ún_lines2ro   Ún_chars2r	  Úchbboxs                 r)   r”  r”  ÚU  sÉ  € õ ð <ÝÔ0°°dÑ;Ô;Ð;å�c�5œ>Ñ*Ô*Ð*Ð*Ð*Ý�d�EÔ-Ñ.Ô.Ð.Ð.Ð.ÝŒ<˜œÔ0Ñ1Ô1€DØ€Ià€HØ€GØ€GÝ% tÑ,Ô,ð ð Ñˆ	�5ØÔÔ ¥EÔ$=Ò=Ð=Ý"+¨UÑ"3Ô"3ð $ð $‘�˜$Ý$-¨tÑ$4Ô$4ð ð ‘L�H˜bØØ˜8Ñ#��Ø�xÑˆGØ�IÑˆˆàð 6ð 6ˆØÔÔ ¥EÔ$=Ò=Ð=Øð 6ð 6�Ø�	Øð 7ð 7�BÝ)¨$°Ñ3Ô3�FÝÔ1°$Ñ7Ô7ð 7Ý/°°fÑ=Ô=ð7ð %'¤M¤O˜	å& s¨IÑ6Ô6Ð6øØ ’?�? y°1¢} }ÝÔ*¨3°Ñ5Ô5Ð5øøð6ð 6r*   c                óò  — t          j        | |¦  «        }t          j        | ¦  «        }|s=|�|j        st          j        | |¦  «         n|j        rt          j        ||¦  «         dS |j        r|j        st          |¦  «        }n"t          t          j        ||¦  «        ¦  «        }||k    rHt          ||¦  «        }|j        st          j        | ||¦  «         dS t          j        | |||¦  «         dS dS )a   
    Create a JavaScript PDF action.
    Usable for all object types which support PDF actions, even if the
    argument name suggests annotations. Up to 2 key values can be specified, so
    JavaScript actions can be stored for '/A' and '/AA/?' keys.
    N)	r�   r  rž  rÌ   rQ  r'  r  r^  r%  )r0  Úkey1Úkey2r¸   Úkey1_objrj  r¿
  r  s           r)   ÚJM_put_scriptr&  V  s  € õ Ô! )¨TÑ2Ô2€HÝ
Ô
& yÑ
1Ô
1€Cð ð Øˆ<˜tœˆ<ÝÔ˜y¨$Ñ/Ô/Ð/Ð/ØÔ ð 	/ÝÔ˜x¨Ñ.Ô.Ð.Øˆð Œ?ð C (Ô"5ð CÝ˜xÑ(Ô(ˆˆå�uÔ1°(¸DÑAÔAÑBÔBˆð �‚€Ý% c¨5Ñ1Ô1ˆ	ØŒð 	BÝÔ˜y¨$°	Ñ:Ô:Ð:Ð:Ð:åÔ 	¨9°d¸DÑAÔAÐAÐAÐAð €r*   c                ó6   — | j         | j        | j        | j        fS r,   r0  rè  s    r)   r7  r7  &V  ó   € ØŒ4�”�q”t˜QœTÐ!Ð!r*   c                óN   — | j         | j        | j        | j        | j        | j        fS r,   rh  )r�  s    r)   r�  r�  *V  s!   € ØŒ3�”�Q”S˜!œ#˜qœs A¤CÐ'Ð'r*   c                ó   — | j         | j        fS r,   rÂ  )r²  s    r)   r¸  r¸  .V  s   € ØŒ3�”ˆ8€Or*   c                ó¾   — | j         j        | j         j        f| j        j        | j        j        f| j        j        | j        j        f| j        j        | j        j        ffS )z"
    PySequence from fz_quad.
    )r¯  r4  r5  rü  rú  rû  )r›  s    r)   r\  r\  2V  sN   € ð
 ŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐð	ð r*   c                ó6   — | j         | j        | j        | j        fS r,   r0  rè  s    r)   rw  rw  >V  r(  r*   c           
     ób  — t          | t          j        ¦  «        r| S t          | d¦  «        rDt	          | ¦  «        dk    r1t          | d         d¦  «        rt          j        t          | ¦  «        Ž } t          | t          j        ¦  «        rt          j        | ¦  «        S t          | t          ¦  «        rkt          j	        | j
        j        | j
        j        | j        j        | j        j        | j        j        | j        j        | j        j        | j        j        ¦  «        S t          j	        dddddddd¦  «        }g d¢}| r/t          | t          t           f¦  «        rt	          | ¦  «        dk    r|S t#          | d¦  «        €!t          j        t%          | ¦  «        ¦  «        S t'          d¦  «        D �]H}|t	          | ¦  «        k    r|c S | |         }t)          |¦  «        rt+          |¦  «        dk    r|c S t#          |d¦  «        ||         _        t#          |d¦  «        ||         _        ||         j        �||         j        €|c S t-          ||         j        t.          ¦  «        ||         _        t-          ||         j        t.          ¦  «        ||         _        t1          ||         j        t2          ¦  «        ||         _        t1          ||         j        t2          ¦  «        ||         _        �ŒJ|d         |_
        |d         |_        |d         |_        |d         |_        |S )	Nrp  rZ  r   ry  r�  r   r   r   )r>   r�   r   r;   r7   rx  rµ   rZ  r<  Úfz_make_quadr¯  r4  r5  rü  rú  rû  r´   rë  r  r\  r†  rˆ  rø  rÙ  rç  rÚ  )r.  r›  r²  r®   r  s        r)   r—  r—  BV  s©  € Ý�!•U”\Ñ"Ô"ð Øˆåˆq�-Ñ Ô ð $¥S¨¡V¤V¨q¢[ [µW¸Q¸q¼TÀ;Ñ5OÔ5O [ÝŒL�% ™(œ(Ð#ˆÝ�1•e”lÑ#Ô#ð +ÝÔ&¨Ñ*Ô*Ð*Ý�1•dÑÔð ÝÔ!Ø””˜œœØ””˜œœØ””˜œœØ””˜œœñ	ô ð 	õ 	Ô˜1˜a  A q¨!¨Q°Ñ2Ô2€AØˆ	ˆ	€AØð •J˜q¥5­$ -Ñ0Ô0ð µC¸±F´F¸a²K°KØˆå�Q˜ÑÔÐ"ÝÔ&¥°qÑ'9Ô'9Ñ:Ô:Ð:å�1‰XŒXð /ñ /ˆØ•�A‘”Š;ˆ;ØˆHˆHˆHØ�ŒdˆÝ Ñ$Ô$ð 	­¸Ñ(<Ô(<ÀÒ(AÐ(AØˆHˆHˆHå˜s AÑ&Ô&ˆˆ!ŒŒÝ˜s AÑ&Ô&ˆˆ!ŒŒØˆQŒ4Œ6ˆ>˜Q˜qœTœV˜^ØˆHˆHˆHÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒ‰ØˆQŒ4€A„DØˆQŒ4€A„DØˆQŒ4€A„DØˆQŒ4€A„DØ€Hr*   c                ó|  — t          | t          j        ¦  «        sJ t          | ¦  «        › ¦   «         ‚t          j        | t          j        ¦  «        }t          j        |¦  «        r¦t          j        d¦  «        }t          t          j	        |¦  «        ¦  «        D ]o}|dk    rt          j
        |d¦  «         t          j        ||¦  «        }t          j        |¦  «        r)t          j        |¦  «        }t          j        ||¦  «         Œpn0|j        rt          j        |¦  «        }nt          j        d¦  «        }|S )zK
    Read and concatenate a PDF page's /Contents object(s) in a buffer
    r	  r   rú  )r>   r�   r?  rÈ   r  r   r™  r|  r\  r«  r¦  r¬  r+  r,  Úfz_append_bufferrÌ   )rU  r�  r/  r®   r  rM  s         r)   r=  r=  oV  s#  € õ �g�uœ|Ñ,Ô,Ð@Ð@µ°g±´Ð.@Ñ@Ô@Ð,ÝÔ! '­5Ô+GÑHÔH€HÝÔ˜(Ñ#Ô#ð  ÝŒn˜TÑ"Ô"ˆÝ•uÔ*¨8Ñ4Ô4Ñ5Ô5ð 	2ð 	2ˆAØ�1ŠuˆuÝÔ$ S¨"Ñ-Ô-Ð-ÝÔ% h°Ñ2Ô2ˆCÝÔ" 3Ñ'Ô'ð 2ÝÔ,¨SÑ1Ô1�ÝÔ& s¨DÑ1Ô1Ð1øð	2ð 
Ô	ð  ÝÔ# HÑ-Ô-ˆˆåŒn˜QÑÔˆØ€Jr*   c                óš  — t          | t          j        ¦  «        r| S t          | t          j        ¦  «        rt          j        | ¦  «        S t          | t          ¦  «        r+t          j        | j        | j        | j        | j	        ¦  «        S t          | t          ¦  «        r+t          j        | j        | j        | j        | j	        ¦  «        S | r"t          | ¦  «        rt          | ¦  «        dk    r#t          j        t          j        j        ¦  «        S g d¢}t          d¦  «        D ]x}t          | |¦  «        ||<   ||         €%t          j        t          j        j        ¦  «        c S ||         t           k     r
t           ||<   ||         t"          k    r
t"          ||<   Œyt          j        |d         |d         |d         |d         ¦  «        S )NrZ  r�  r   r   r   r   )r>   r�   rx  rÃ  r4  rq  r  r  r  r  rÄ  r†  rˆ  ry  r\  rë  rÙ  rÚ  )r.  rÝ  r®   s      r)   r  r  …V  s‹  € Ý�!•U”\Ñ"Ô"ð ØˆÝ�!•U”]Ñ#Ô#ð ÝŒ|˜A‰ŒÐÝ�!•TÑÔð :ÝÔ! !¤$¨¬¨a¬d°A´DÑ9Ô9Ð9Ý�!•UÑÔð :ÝÔ! !¤$¨¬¨a¬d°A´DÑ9Ô9Ð9Øð 9Õ$ QÑ'Ô'ð 9­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ|�EœLÔ7Ñ8Ô8Ð8Øˆˆ€AÝ�1‰XŒXð #ð #ˆÝ˜Q Ñ"Ô"ˆˆ!‰ØˆQŒ4ˆ<Ý”<¥¤Ô ;Ñ<Ô<Ð<Ð<Ð<ØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DøÝÔ˜a œd A a¤D¨!¨A¬$°°!´Ñ5Ô5Ð5r*   c                óŒ   — 	 | j         |j        k    s0| j        |j        k    s | j        |j         k    s| j        |j        k    rdS dS r)  rã  r¬  s     r)   r£  r£  œV  sE   € ðØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|àˆqØˆ1r*   c                óú  — | �| j         sdS t          j        |                      ¦   «         t	          d¦  «        ¦  «        }|j         r´|                      ¦   «         }t          j        ||                      ¦   «         ¦  «        }t          j        ¦   «         }t          j        ¦   «         }t          j	        | ||¦  «         t          j
        || |||¦  «        }t          j        |j         ¦  «        | j         _        dS dS )z<
    refreshes the link and annotation tables of a page
    Nr§  )rÌ   r�   r  r  r  r:  rÐ  rx  r‚  r/  Úpdf_load_link_annotsÚll_fz_keep_linkrˆ  )rÖ   r  rj  rh  rä  r6  rÁ  s          r)   rT
  rT
  §V  sÖ   € ð €|˜4œ?€|ØˆÝ
Ô
˜dŸhšh™jœj­(°8Ñ*<Ô*<Ñ
=Ô
=€CØ
„~ð HØ�hŠh‰jŒjˆÝÔ-¨s°D·H²H±J´JÑ?Ô?ˆÝœ™œˆÝ”>Ñ#Ô#ˆÝÔ  $¨°xÑ@Ô@Ð@ÝÔ)¨3°°c¸6À8ÑLÔLˆÝ %Ô 5°t´Ñ GÔ GˆŒÔÐÐðHð Hr*   c                óš  — | j         st          j        ¦   «         S t          | ¦  «        }|dk    rt          j        ¦   «         S t	          |                      ¦   «         ¦  «        }|j        }|j        }|dk    rt          j        dddd|d¦  «        }n9|dk    rt          j        dddd||¦  «        }nt          j        ddddd|¦  «        }|S )z*
    calculate page rotation matrices
    r   rÄ  r   rA  rö  )	rÌ   r�   r‚  r  r�  r  r4  r5  r#  )rÖ   r_  Úcb_sizer   rÑ  r�  s         r)   r·  r·  ¸V  sÌ   € ð Œ?ð  ÝŒ~ÑÔÐÝ Ñ%Ô%€Hà�1‚}€}ÝŒ~ÑÔÐÝ˜dŸhšh™jœjÑ)Ô)€GØŒ	€AØŒ	€Aà�2‚~€~ÝÔ   A r¨1¨a°Ñ3Ô3ˆˆØ	�SŠˆÝÔ   Q¨¨2¨q°!Ñ4Ô4ˆˆåÔ   B¨¨1¨a°Ñ3Ô3ˆà€Hr*   c                ó8   — 	 t          j        | j        |¦  «        S r,   )r'  r   r  rÌ   r�   rx  r€  r7   rv	  ÚhfuzzÚvfuzzr  Úfz_string_from_bufferÚfind_stringrÈ   r   r¾  r¢  r£  Úon_highlight_char)rÖ   r  r  rv	  ÚHitsÚhitsr=  Úhaystack_stringÚhaystackÚbeginr¥  Úinsider®   rg	  ro   r	  r.  s                    r)   r  r  ÐV  s   € ðCÝÔ)¨$¬/¸6ÑBÔBÐBr*   c           	     óÆ  — t          j        |¦  «        rt          j        d¦  «         dS 	 t          j        |t           j        ¦  «        }|dk    r2t          j        |t           j        ¦  «        }t          | |||¦  «         nI|dk    rt          | |||¦  «         n0|dk    rt          | |||¦  «         n	 t          j	        |¦  «         dS t          j
        |¦  «        }t          |¦  «        D ]Ã}	t          j        ||	¦  «        }
t          j        |
¦  «        rt          j        |
¦  «        }nd}t          j        |
t           j        ¦  «        }|j        r[|}||vr*|                     |¦  «         t%          | |||||¦  «         Œ˜t          j        d¦  «          t          j	        |¦  «         dS ŒÄ	 t          j	        |¦  «         dS # t          j	        |¦  «         w xY w)zP
    Step through /Resources, looking up image, xobject or font information
    z.Circular dependencies! Consider page cleaning.Nr   r   r   r   )r�   Úpdf_mark_objrÄ  r  ÚPDF_ENUM_NAME_XObjectÚPDF_ENUM_NAME_FontrÎ  râ  rÕ  Úpdf_unmark_objr‹  r\  rŒ  r+  r  rQ  rÌ   rk   rR  )rj  rV  rW  rS  rÌ  rX  Úxobjrb  rE   r®   r  ÚsxrefÚsubrsrcÚsxref_ts                 r)   rR  rR  W  sý  € õ Ô˜$ÑÔð ÝŒÐFÑGÔGÐGØˆð#ÝÔ! $­Ô(CÑDÔDˆà�1Š9ˆ9ÝÔ% d­EÔ,DÑEÔEˆDÝ˜C  u¨kÑ:Ô:Ð:Ð:Ø�QŠYˆYÝ˜S $¨¨{Ñ;Ô;Ð;Ð;Ø�QŠYˆYÝ˜C  u¨kÑ:Ô:Ð:Ð:àõ( 	Ô˜TÑ"Ô"Ð"Ð"Ð"õ# Ô˜tÑ$Ô$ˆÝ�q‘”ð 	ð 	ˆAÝÔ(¨¨qÑ1Ô1ˆCÝÔ" 3Ñ'Ô'ð ÝÔ(¨Ñ-Ô-��à�ÝÔ(¨­eÔ.KÑLÔLˆGØÔ!ð Ø�Ø &Ð(Ð(Ø—M’M 'Ñ*Ô*Ð*Ý% s¨G°U¸DÀ%ÈÑPÔPÐPÐPå”MÐ"RÑSÔSÐSØåÔ˜TÑ"Ô"Ð"Ð"Ð"ðð	õ  	Ô˜TÑ"Ô"Ð"Ð"Ð"ø�Ô˜TÑ"Ô"Ð"Ð"øøøs   ¬B	G
 ÃCG
 Æ2G
 Ç
G c                óÜ  — |sdS t          |t          t          f¦  «        sJ ‚t          |¦  «        }|dk    rdS t	          j        | ¦  «        }t	          j        |¦  «        }t	          j        ||¦  «        }t          |¦  «        D ]Â}||         }|}t          |t          ¦  «        rt	          j
        ||¦  «         Œ7t          |t          t          f¦  «        rt          |¦  «        dk    s
J d¦   «         ‚|\  }	}
|	r|
s
J d¦   «         ‚t	          j        |d¦  «        }t	          j
        ||	¦  «         t	          j
        ||
¦  «         ŒÃt	          j        |t          d¦  «        |¦  «         dS )z'
    set ListBox / ComboBox values
    Nr   r   zbad choice field listrå   )r>   rµ   r´   r7   r�   r  rž  r[  r\  rá  Úpdf_array_push_text_stringÚpdf_array_push_arrayr^  r  )rß   rW  rE   r0  rj  r`  r®   r"  ÚoptÚopt1Úopt2Ú	optarrsubs               r)   ÚJM_set_choice_optionsrT  AW  sm  € ð ð ØˆÝ�u�u¥d˜mÑ,Ô,Ð,Ð,Ð,ÝˆU‰Œ€AØˆA‚v€vØˆÝÔ# UÑ+Ô+€IÝ
Ô
&¨	Ñ
2Ô
2€CÝÔ  # qÑ)Ô)€FÝ�1‰XŒXð ?ð ?ˆØ�AŒhˆØˆÝ�c�3ÑÔð 	?ÝÔ,¨f°cÑ:Ô:Ð:Ð:å˜s¥U­D MÑ2Ô2Ð^µs¸C±y´yÀA²~°~°~ÐG^±~´~ÐEØ‰JˆD�$ØÐ9˜DÐ9Ð9Ð"9Ñ9Ô9�=ÝÔ2°F¸AÑ>Ô>ˆIÝÔ,¨i¸Ñ>Ô>Ð>ÝÔ,¨i¸Ñ>Ô>Ð>Ð>Ý	Ô˜	¥8¨E¡?¤?°FÑ;Ô;Ð;Ð;Ð;r*   c                ó�  — d}d}d}|t           j        k    rt          d¦  «        }t           j        }�n|t           j        k    r(t          d¦  «        }t           j        }t           j        }nÐ|t           j        k    r)t          d¦  «        }t           j        t           j        z  }n—|t           j        k    rt          d¦  «        }nw|t           j        k    rt          d¦  «        }t           j	        }nK|t           j
        k    rt          d¦  «        }t           j	        }n|t           j        k    rt          d¦  «        }|�*|j        r#t          j        |t          d¦  «        |¦  «         |dk    s|dk    rRt          j        |t          d¦  «        ¦  «        }|| z  }||z  }t          j        |t          d¦  «        |¦  «         dS dS )	z
    Set the field type
    r   NÚBtnÚTxÚChÚSigrâ   rã   )r�   r  r  ÚPDF_BTN_FIELD_IS_PUSHBUTTONr  ÚPDF_BTN_FIELD_IS_RADIOr  r´  rµ  ÚPDF_CH_FIELD_IS_COMBOr¶  r…  rÌ   r^  ri  rY  )r:  r  rÈ   ÚsetbitsÚ	clearbitsÚtypenamerÛ
  s          r)   r„  r„  ]W  s•  € ð €GØ€IØ€HØ�uÔ+Ò+Ð+Ý˜E‘?”?ˆÝÔ3ˆ‰Ø	•Ô2Ò	2Ð	2Ý˜E‘?”?ˆÝÔ5ˆ	ÝÔ.ˆˆØ	•Ô/Ò	/Ð	/Ý˜E‘?”?ˆÝÔ6½Ô9UÑUˆ	ˆ	Ø	•Ô+Ò	+Ð	+Ý˜D‘>”>ˆˆØ	•Ô.Ò	.Ð	.Ý˜D‘>”>ˆÝÔ/ˆ	ˆ	Ø	•Ô/Ò	/Ð	/Ý˜D‘>”>ˆÝÔ-ˆˆØ	•Ô0Ò	0Ð	0Ý˜E‘?”?ˆàÐ Ô 3ÐÝÔ˜3¥¨¡¤°Ñ9Ô9Ð9à�!‚|€|�y A’~�~ÝÔ% c­8°D©>¬>Ñ:Ô:ˆØ��
ÑˆØ�‰ˆÝÔ˜s¥H¨T¡N¤N°DÑ9Ô9Ð9Ð9Ð9ð	 &�~r*   c                óÖ  — d}t          j        | ¦  «        }|                     d¦  «        }t          |¦  «        }|dz
  }||         }||= t          |¦  «        }t          j        | |¦  «        }	|	j        sŠ|dk    r„d                     |¦  «        }
t          j        t          j        | t          |
¦  «        ¦  «        ¦  «        r t          dt          |¦  «        › d�¦  «        ‚||dz
  = t          |¦  «        }|dk    °„t          j
        | |t          j        |¦  «        ¦  «         t          j        | |¦  «        }	t          j        |	¦  «        st          d|› d�¦  «        ‚t          j        |	¦  «        }||k    rt          d|› d�¦  «        ‚t          | dd¦  «        }t          |¦  «        }d|› d	|› d
�}d|› d|› �}|                     ||d¦  «        }t#          ||¦  «        }|S )z*
    Set a PDF dict key to some value
    zfitz: replace me!rb  r   r   z	path to 'z' has indirectszcannot insert value for 'rü   r¢  r£  r³   )r�   rž  r6   r7   rÅ  rÌ   rê  r	  r¾  rg   Úpdf_dict_putpr‘  rp
  r  rq
  r€
  rî  r@  )r  r'  r¸   Ú
eyecatcherrj  r1  r  r®   ÚskeyÚtestkeyrO  r‹  r/  ÚobjstrÚnullvalÚnewvalÚnewstrrª  s                     r)   r„
  r„
  ƒW  s  € ð %€JÝ
Ô
& sÑ
+Ô
+€Cà�IŠI�c‰NŒN€EÝˆu‰:Œ:€DØˆq‰€AØ�Œ8€DàˆaˆÝˆu‰:Œ:€DÝÔ! # sÑ+Ô+€GØÔð 	ð �QŠhˆhØ—’˜‘”ˆAÝÔ$¥UÔ%8¸½lÈ1¹o¼oÑ%NÔ%NÑOÔOð QÝÐ O­L¸Ñ,>Ô,>Ð OÐ OÐ OÑPÔPÐPØ�d˜Q‘h�Ý�u‘:”:ˆDð �QŠhˆhõ 
Ô˜˜S¥%Ô";¸JÑ"GÔ"GÑHÔHÐHÝÔ! # sÑ+Ô+€GÝÔ˜wÑ'Ô'ð <ÝÐ:°CÐ:Ð:Ð:Ñ;Ô;Ð;ÝÔ# GÑ,Ô,€DØˆzÒÐÝÐ:°CÐ:Ð:Ð:Ñ;Ô;Ð;å
˜c 1 aÑ
(Ô
(€CÝ# CÑ(Ô(€Fð '�$Ð&Ð&˜Ð&Ð&Ð&€GØ�ÐÐ˜ÐÐ€FØ�^Š^˜G V¨QÑ/Ô/€Fõ " # vÑ.Ô.€GØ€Nr*   c                óœ  — |r#t          j        | t          d¦  «        |¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�•t          j        | t          d¦  «        ¦  «         |rst          j        | t          d¦  «        d¦  «        }t          |¦  «        }t          |¦  «        D ]3}||         }	t          j        |d¦  «        }
t          |
|	¦  «         Œ0d S d S d S )Nr>  r¯  r   r°  r4  r   )	r�   re  r  rQ  r¥  ÚJM_set_ocg_arrays_impr7   r\  rO  )r5  rŒ	  r   r�	  rŽ	  r>  r[  rE   r®   Úitem0r  s              r)   r‹	  r‹	  ³W  sÌ  € Øð IÝÔ ¥x°Ñ'<Ô'<¸iÑHÔHÐHà	€~ÝÔ˜D¥(¨4¡.¤.Ñ1Ô1Ð1Øð 	,ÝÔ*¨Dµ(¸4±.´.À!ÑDÔDˆCÝ! 3¨Ñ+Ô+Ð+Ø
€ÝÔ˜D¥(¨5¡/¤/Ñ2Ô2Ð2Øð 	-ÝÔ*¨Dµ(¸5±/´/À1ÑEÔEˆCÝ! 3¨Ñ,Ô,Ð,ØÐÝÔ˜D¥(¨8Ñ"4Ô"4Ñ5Ô5Ð5Øð 	0ÝÔ*¨Dµ(¸8Ñ2DÔ2DÀaÑHÔHˆCÝ! 3¨Ñ/Ô/Ð/ØÐÝÔ˜D¥(¨:Ñ"6Ô"6Ñ7Ô7Ð7Øð 	3ÝÔ*¨Dµ(¸:Ñ2FÔ2FÈÑJÔJˆCÝ�8‰}Œ}ˆAÝ˜1‘X”Xð 3ð 3�Ø  œ�ÝÔ0°#°qÑ9Ô9�Ý% s¨EÑ2Ô2Ð2Ð2ð Ðð	3ð 	3ð3ð 3r*   c                óŽ   — t          j        | ¦  «        }|D ]-}t          j        ||d¦  «        }t          j        | |¦  «         Œ.dS )z�
    Set OCG arrays from dict of Python lists
    Works with dict like {"basestate":name, "on":list, "off":list, "rbg":list}
    r   N)r�   rž  r˜  r›  )r[  r1  rj  r   r  s        r)   rj  rj  ÑW  sW   € õ
 Ô
& sÑ
+Ô
+€CØð 'ð 'ˆÝÔ$ S¨$°Ñ2Ô2ˆÝÔ˜S #Ñ&Ô&Ð&Ð&ð'ð 'r*   c                ó  — t          j        | ¦  «        }t          j        ||d¦  «        }|j        st	          t
          t          ¦  «         t          j        | t          d¦  «        ¦  «        }|j        s#t          j	        | t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s#t          j	        |t          d¦  «        d¦  «        }t          j
        |t          j        |¦  «        |¦  «         dS )zã
    Insert an item into Resources/Properties (used for Marked Content)
    Arguments:
    (1) e.g. page object, Form XObject
    (2) marked content name
    (3) xref of the referenced object (insert as indirect reference)
    r   rE  r   r
  N)r�   rž  r˜  rÌ   rÀ  r—  r{  r  r  rb  r^  r?  )rA  r   r   rj  rB  rq  r  s          r)   rs  rs  ÜW  sî   € õ Ô
& sÑ
+Ô
+€CÝ
Ô
   d¨AÑ
.Ô
.€CØŒ>ð 0Ý•Õ.Ñ/Ô/Ð/ÝÔ" 3­°Ñ(=Ô(=Ñ>Ô>€IØÔð KÝÔ+¨Cµ¸+Ñ1FÔ1FÈÑJÔJˆ	ÝÔ# I­x¸Ñ/EÔ/EÑFÔF€JØÔ ð SÝÔ,¨Y½ÀÑ8NÔ8NÐPQÑRÔRˆ
Ý	Ô�z¥5Ô#5°dÑ#;Ô#;¸SÑAÔAÐAÐAÐAr*   c                óÄ  ‡‡"‡#— d„ }d„ }t          | t          ¦  «        r| j        } t          | t          j        ¦  «        s't          dt          | ¦  «        ›dt          ›�¦  «        ‚t          | ¦  «        }|j        st          d¦  «        ‚| 
                    ¦   «         }t          j        | ¦  «        }|                     ¦   «         Š"|                     t          d¦  «        ¦  «        }|                     t          d¦  «        ¦  «        Š#‰#                     ¦   «         }|dk    r8t!          ˆ"ˆ#fd	„t#          |¦  «        D ¦   «         ¦  «        st          d
¦  «        ‚|                     ¦   «         }	ˆfd„}
 |
d¦  «        }|}|t          j        t          j        fv r7t          j        |¦  «        }|                     ¦   «         st          d¦  «        ‚ |
d¦  «        }t/          |¦  «        }t1          |¦  «        }t          j        ||¦  «        }t          j        | |¦  «          |
d¦  «        }|ryt7          |¦  «        rjt9          |¦  «        }t          j        ||¦  «        }d}t#          |¦  «        D ]}||         }t          j        ||¦  «         Œ t          j        ||¦  «          |
d¦  «        }|r‘t7          |¦  «        r‚t9          |¦  «        }t          j        ||¦  «        }t#          |¦  «        D ]}t          j         |||         ¦  «         Œt          j!        ||t          d¦  «        t          d¦  «        ¦  «          |
d¦  «        }|r•t7          |¦  «        r†t9          |¦  «        }t          j        ||¦  «        }d}t#          |¦  «        D ]}||         }t          j        ||¦  «         Œ t          j!        ||t          d¦  «        t          d¦  «        ¦  «          |
d¦  «        }|	r4|�2tE          |¦  «        }t          j#        |t          d¦  «        |¦  «          |
d¦  «        }|	rN|�LtE          |¦  «        }t          j$        |¦  «        }||k    r#t          j#        |t          d¦  «        |¦  «         |	rB|t          j%        k    r2 |
d¦  «        }|}|r#t          j&        |t          d¦  «        |¦  «          |
d¦  «        }|}t          j'        ||¦  «         |	r5|t          j(        t          j)        fv r |
d¦  «        }tU          | |¦  «          |
d¦  «        }tW          |¦  «        }t          j!        ||t          d¦  «        t          d ¦  «        ¦  «          |
d!¦  «        }|}t          j!        |t          j,        |¦  «        t          d¦  «        t          d"¦  «        ¦  «         |	r= |
d#¦  «        }tE          |¦  «        }t          j#        |t          d$¦  «        |¦  «         t          j-        |t          d%¦  «        ¦  «         t          j-        |t          d&¦  «        ¦  «          |
d'¦  «        }|	r„|�‚|t          j)        k    r|t          j.        z  }n?|t          j        k    r|t          j/        z  }n|t          j0        k    r|t          j1        z  }t          j&        |t          d(¦  «        |¦  «          |
d)¦  «        }tE          |¦  «        }|rt          j2        ||¦  «          |
d*¦  «        }tg          |t          d+¦  «        t          j4        ¦   «         |¦  «         |	�rT |
d,¦  «        }tg          |t          d-¦  «        t          d.¦  «        |¦  «          |
d/¦  «        }tg          |t          d-¦  «        t          d0¦  «        |¦  «          |
d1¦  «        }tg          |t          d-¦  «        t          d2¦  «        |¦  «          |
d3¦  «        }tg          |t          d-¦  «        t          d4¦  «        |¦  «          |
d5¦  «        }tg          |t          d-¦  «        t          j5        d6¦  «        |¦  «          |
d7¦  «        }tg          |t          d-¦  «        t          j5        d8¦  «        |¦  «          |
d9¦  «        }tE          |¦  «        } |t          j        k    r!|s ||||¦  «         �n: ||||‰#¦  «         �n*|t          j        k    rÅ| 6                    ¦   «         }!|d:|!fv s| d;k    r^t          j7        |||!d<¦  «         t          j8        |t          d=¦  «        |!¦  «         t          j8        |t          d2¦  «        |!¦  «         nœt          j8        |t          d=¦  «        d>¦  «         t          j8        |t          d2¦  «        d>¦  «         nU| rSt          j7        ||| d<¦  «         |t          j)        t          j(        fv r"t          j-        |t          d?¦  «        ¦  «         t          j9        | ¦  «         t          j:        | d<¦  «         t          j;        | d<¦  «         t          j<        | ¦  «         dS )@z�
    Update the PDF form field with the properties from a Python Widget object.
    Called by "Page.add_widget" and "Annot.update_widget".
    c                ób  — t          j        | t          d¦  «        t          d¦  «        ¦  «         |                     t          d¦  «        ¦  «                             ¦   «         }||                     ¦   «         k    r2|                     t          d¦  «        t          d¦  «        ¦  «         dS dS )zmSet a radio button to off.

        If the button was currently selected, set it Off in the /Parent.
        r  r  rñ   N)r�   r^  r  r  r‰  )r0  Úonstaterû   rñ  s       r)   Ú
set_rb_offz,JM_set_widget_properties.<locals>.set_rb_off÷W  s‘   € õ
 	Ô˜9¥h¨t¡n¤nµh¸u±o´oÑFÔFÐFØ×&Ò&¥x°¡}¤}Ñ5Ô5×AÒAÑCÔCˆØ�w×*Ò*Ñ,Ô,Ò,Ð,Ø×Ò¥¨¡¤­x¸©¬Ñ?Ô?Ð?Ð?Ð?ð -Ð,r*   c                ó  — t          |                     ¦   «         ¦  «        D ]©}|                     |¦  «        }t          j        |¦  «        }|                     ¦   «         |                     ¦   «         k    r$|                     t          d¦  «        |¦  «         Œy|                     t          d¦  «        t          d¦  «        ¦  «         Œª|                     ¦   «         s%|                     t          d¦  «        |¦  «         dS dS )zfSet a radio button to on.

        Set button to on in /Parent and all its other kids to Off.
        r  r  rñ   N)	r\  r«  r¬  r�   Úpdf_button_field_on_stater‰  r^  r  r  )r0  rp  rû   Úparent_kidsr®   r”  Úthis_onstates          r)   Ú	set_rb_onz+JM_set_widget_properties.<locals>.set_rb_onX  sõ   € õ �{×0Ò0Ñ2Ô2Ñ3Ô3ð 	Bð 	BˆAØ×+Ò+¨AÑ.Ô.ˆCÝ Ô:¸3Ñ?Ô?ˆLØ×'Ò'Ñ)Ô)¨W×-@Ò-@Ñ-BÔ-BÒBÐBØ× Ò ¥¨$¡¤°Ñ9Ô9Ð9Ð9à× Ò ¥¨$¡¤µ¸%±´ÑAÔAÐAÐAð ×!Ò!Ñ#Ô#ð 	8Ø×Ò¥¨¡¤¨wÑ7Ô7Ð7Ð7Ð7ð	8ð 	8r*   ztype(annot)=r¦  rÜ   r¨  r‘  r   c              3  ón   •K  — | ]/}‰                      |¦  «                             ¦   «         ‰k    V — Œ0d S r,   )r¬  r  )r­   r®   rê  rt  s     €€r)   r   z+JM_set_widget_properties.<locals>.<genexpr>)X  sV   øè è € ð (ð (àð 	×!Ò! !Ñ$Ô$×/Ò/Ñ1Ô1°ZÒ?ð(ð (ð (ð (ð (ð (r*   z/Widget is not listed in its /Parent/Kids array.c                ó&   •— t          ‰| d ¦  «        S r,   )rý   )r   rI  s    €r)   ÚGETATTRz)JM_set_widget_properties.<locals>.GETATTR3X  s   ø€ Ý�v˜t TÑ*Ô*Ð*r*   rê  z#Button field on-state is not a namer  rh  râ  r  r  rÐ  r  r  ræ  Nræ   rå  rð   rð  rê   ré  rã  rà  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ç  TÚYesr   r  r  rç   )=r>   ró   rÄ   r�   rõ   r¾  rÈ   rà   rÌ   rÃ   r:  r  r  r  r  r«  rß  r\  r  r  r  rs  rÊ  r  r·  r¸  rÀ  r†  r7   r[  r]  Úpdf_field_set_fill_colorr*  r%  r¾  r�  r!  r´  rY  Úpdf_field_set_displayrµ  r¶  rT  r,  r+  rQ  r\  r[  r  rZ  Úpdf_field_set_button_captionr&  r?  r?  r‰  Úpdf_set_field_valuere  r_  Úpdf_set_annot_hotÚpdf_set_annot_activer`  )$rß   rI  rq  rv  rÖ   rj  r0  rû   Úparent_kid_countÚfield_widgetry  r¸   rê  rp  r  Úrot_matrE   Úfill_colro  r®   rn  Ú
border_colr¡  r   Úold_namerð  r  r"  rá  rÓ  rè  rG  r   r   rê  rt  s$    `                                @@r)   ÚJM_set_widget_propertiesr‡  ñW  sˆ
  øøø€ ð@ð @ð @ð8ð 8ð 8õ$ �%�ÑÔð Ø”
ˆÝ�e�Uœ^Ñ,Ô,ð 3ÝÐ1�4 ™;œ;Ð1Ð1­$Ð1Ð1Ñ2Ô2Ð2å˜5Ñ!Ô!€DØŒ?ð 9ÝÐ7Ñ8Ô8Ð8à
�(Š(‰*Œ*€CÝÔ# EÑ*Ô*€IØ×%Ò%Ñ'Ô'€Jð ×#Ò#¥H¨XÑ$6Ô$6Ñ7Ô7€FØ×%Ò%¥h¨vÑ&6Ô&6Ñ7Ô7€KØ"×0Ò0Ñ2Ô2Ðà˜!ÒÐ¥Cð (ð (ð (ð (ð (åÐ'Ñ(Ô(ð(ñ (ô (ñ %ô %Ðõ ÐJÑKÔKÐKð ×%Ò%Ñ'Ô'€Lð+ð +ð +ð +ð +ð ˆG�LÑ!Ô!€EØ€Jà•eÔ7½Ô9WÐXÐXÐXÝÔ1°)Ñ<Ô<ˆØ×"Ò"Ñ$Ô$ð 	DÝÐBÑCÔCÐCð ˆG�F‰OŒO€EÝ˜5Ñ!Ô!€DÝ# DÑ)Ô)€GÝÔ" 4¨Ñ1Ô1€DÝ	Ô˜U DÑ)Ô)Ð)ð ˆG�LÑ!Ô!€EØð <Õ! %Ñ(Ô(ð <Ý�‰JŒJˆÝÔ& s¨AÑ.Ô.ˆØˆÝ�q‘”ð 	5ð 	5ˆAØ˜”(ˆCÝÔ% h°Ñ4Ô4Ð4Ð4ÝÔ& y°(Ñ;Ô;Ð;ð ˆG�OÑ$Ô$€EØð NÕ! %Ñ(Ô(ð NÝ�‰JŒJˆÝÔ$ S¨!Ñ,Ô,ˆÝ�q‘”ð 	7ð 	7ˆAÝÔ$ V¨U°1¬XÑ6Ô6Ð6Ð6ÝÔ˜I v­x¸©~¬~½xÈ¹}¼}ÑMÔMÐMð ˆG�NÑ#Ô#€EØð SÕ! %Ñ(Ô(ð SÝ�‰JŒJˆÝÔ(¨¨aÑ0Ô0ˆ
ØˆÝ�q‘”ð 	7ð 	7ˆAØ˜”(ˆCÝÔ% j°#Ñ6Ô6Ð6Ð6ÝÔ˜I zµ8¸D±>´>Å8ÈDÁ>Ä>ÑRÔRÐRð ˆG�MÑ"Ô"€EØð I˜Ð)Ý˜UÑ#Ô#ˆÝÔ& yµ(¸4±.´.À%ÑHÔHÐHð ˆG�LÑ!Ô!€EØð K˜Ð)Ý˜EÑ"Ô"ˆÝÔ,¨YÑ7Ô7ˆØ�8ÒÐÝÔ*¨9µh¸s±m´mÀTÑJÔJÐJð ð O˜
¥eÔ&@Ò@Ð@Ø�˜Ñ&Ô&ˆØˆØð 	OÝÔ" 9­h°xÑ.@Ô.@À+ÑNÔNÐNØˆG�OÑ$Ô$€EØ€AÝ	Ô 	¨1Ñ-Ô-Ð-ð ð ,˜
ÝÔ%ÝÔ&ð'ð ð ð �˜Ñ(Ô(ˆÝ˜e UÑ+Ô+Ð+ð ˆG�NÑ#Ô#€EÝ
˜eÑ
$Ô
$€CÝ	Ô˜	 3­°©¬½À¹¼ÑFÔFÐFð ˆG�NÑ#Ô#€EØ€LÝ	ÔØÝÔ˜<Ñ(Ô(Ý�‰ŒÝ�‰Œñ	ô ð ð ð FØ�˜
Ñ#Ô#ˆÝ˜%Ñ Ô ˆÝÔ& yµ(¸4±.´.À"ÑEÔEÐEå	Ô�y¥(¨4¡.¤.Ñ1Ô1Ð1Ý	Ô�y¥(¨4¡.¤.Ñ1Ô1Ð1ð �'˜-Ñ(Ô(€KØð G˜Ð/Ø�Ô7Ò7Ð7Ø�5Ô6Ñ6ˆKˆKØ�5Ô<Ò<Ð<Ø�5Ô7Ñ7ˆKˆKØ�5Ô7Ò7Ð7Ø�5Ô<Ñ<ˆKÝÔ˜y­(°4©.¬.¸+ÑFÔFÐFð ˆGÐ$Ñ%Ô%€EÝ	�eÑ	Ô	€BØ	ð :ÝÔ*¨9°bÑ9Ô9Ð9ð ˆG�HÑÔ€EÝ�)�X c™]œ]­E¬L©N¬N¸EÑBÔBÐBàñ Rà�˜Ñ(Ô(ˆÝ�i¥¨$¡¤µ¸#±´ÀÑFÔFÐFð �˜Ñ(Ô(ˆÝ�i¥¨$¡¤µ¸#±´ÀÑFÔFÐFð �˜Ñ(Ô(ˆÝ�i¥¨$¡¤µ¸#±´ÀÑFÔFÐFð �˜Ñ&Ô&ˆÝ�i¥¨$¡¤µ¸#±´ÀÑFÔFÐFð �˜Ñ&Ô&ˆÝ�i¥¨$¡¤µÔ1CÀDÑ1IÔ1IÈ5ÑQÔQÐQð �˜Ñ'Ô'ˆÝ�i¥¨$¡¤µÔ1CÀDÑ1IÔ1IÈ5ÑQÔQÐQð ˆG�MÑ"Ô"€EÝ˜ÑÔ€Dà•UÔ6Ò6Ð6Øð 	?ØˆJ�y '¨6Ñ2Ô2Ð2Ñ2àˆI�i ¨&°+Ñ>Ô>Ð>Ñ>à	•uÔ5Ò	5Ð	5Ø× Ò Ñ"Ô"ˆØ�T˜2�JÐÐ $¨%¢- -ÝÔ% c¨9°b¸!Ñ<Ô<Ð<ÝÔ# I­x¸©~¬~¸rÑBÔBÐBÝÔ# I­x¸©}¬}¸bÑAÔAÐAÐAåÔ# I­x¸©~¬~¸uÑEÔEÐEÝÔ# I­x¸©}¬}¸eÑDÔDÐDÐDàð 	=ÝÔ% c¨9°d¸AÑ>Ô>Ð>ØÝÔ.ÝÔ-ðð ð õ Ô" 9­h°s©m¬mÑ<Ô<Ð<Ý	Ô˜%Ñ Ô Ð Ý	Ô˜E 1Ñ%Ô%Ð%Ý	Ô˜u aÑ(Ô(Ð(Ý	Ô˜5Ñ!Ô!Ð!Ð!Ð!r*   c                óÚ  — d}|t          |¦  «        k     rÕt          j        ||d …         ¦  «        \  }	}
||	z  }t          j        ||
¦  «        }|dk    rt          j        ||
d|¦  «        \  }}n|}t          j        | ||||
||||¦	  «	         t          j        |||¦  «        }|dk    rt          j        ||d¦  «        }nt          j        |d| ¦  «        }|t          |¦  «        k     °Õ|S r‡   )r7   r�   Úfz_chartorunerÑ
  rÒ
  Úfz_show_glyphr.  Úfz_pre_translate)r   Ú	user_fontr'  r�  rÓ
  Ú
bidi_levelr(  r:  r®   r'  r  rÕ
  rb  r2  s                 r)   r%  r%  îX  sþ   € ð 	
€AØ
�c�!‰fŒfŠ*ˆ*ÝÔ$ Q q r r¤UÑ+Ô+‰ˆˆ3Ø	ˆQ‰ˆÝÔ*¨9°cÑ:Ô:ˆØ�!Š8ˆ8ÝÔ?À	È3ÐPQÐS[Ñ\Ô\‰IˆC��àˆDÝÔ˜D $¨¨S°#°u¸jÈ*ÐV^Ñ_Ô_Ð_ÝÔ$ T¨3°Ñ6Ô6ˆØ�AŠ:ˆ:ÝÔ(¨¨c°1Ñ5Ô5ˆCˆCåÔ(¨¨a°#°Ñ6Ô6ˆCð �c�!‰fŒfŠ*ˆ*ð €Jr*   c                ó¾   — t          j        | ¦  «        }|                     d¬¦  «        }|                     t	          d¦  «        ¦  «        }|dk    r
|d |…         }|S )Nrî  r™  r   )r�   rÎ
  rü  r¡   r*
  )rY  Ú
buff_bytesr"  r  s       r)   rÄ  rÄ  
Y  sZ   € ÝÔ-¨dÑ3Ô3€JØ
×
Ò
 9Ð
Ñ
-Ô
-€CØ�Š•�Q‘”ÑÔ€AØˆA‚v€vØ�"�1�"ŒgˆØ€Jr*   c                ó*   — t          d| › �¦  «         dS )z
    Generate a warning.
    z	warning: Nrl  rq   s    r)   r  r  Y  s!   € õ Ð˜ÐÐÑÔÐÐÐr*   c                ó–  — |r¯t          j        |¦  «        \  }}|dk    r’t          |¦  «        }t          |t           j        ¦  «        sJ ‚|j        r`t          j        |¦  «        \  }}||k     rCt          j        |t           j        t           j        ¦  «         t          j	        | ||d¦  «         dS t          j	        | ||d¦  «         dS )zD
    update a stream object
    compress stream when beneficial
    é   r   Nr   )
r�   r#  rt  r>   r|  rÌ   r^  ÚPDF_ENUM_NAME_FilterÚPDF_ENUM_NAME_FlateDecodeÚpdf_update_stream)r:  r  r=  rY
  rÇ  r  Úbuffer_compressedÚlength_compresseds           r)   r9  r9  Y  sÝ   € ð
 ð ÝÔ+¨GÑ4Ô4‰	ˆ�Ø�BŠ;ˆ;Ý 2°7Ñ ;Ô ;ÐÝÐ/µ´Ñ@Ô@Ð@Ð@Ð@Ø Ô+ð 	Ý',Ô'>Ð?PÑ'QÔ'QÑ$Ð! 1Ø$ vÒ-Ð-ÝÔ&ØÝ!Ô6Ý!Ô;ñô ð õ
 Ô+¨C°Ð6GÈÑKÔKÐKØ�Få	Ô˜C  g¨qÑ1Ô1Ð1Ð1Ð1r*   c                ó  — t          |t          j        ¦  «        sJ dt          |¦  «        ›�¦   «         ‚|dk    rt          j        | |d¦  «        }�n/t          |j        ¦  «        }|                     ¦   «         }t          j        t          j	        |t          d¦  «        ¦  «        ¦  «        }t          j	        |t          d¦  «        ¦  «        }|j        rt          j        ||¦  «        }	nt          j        | |¦  «        }	t          |¦  «        }
t          j        | |t          j        ¦   «         t          j        d¦  «        |
¦  «        }t%          | ||
d¦  «         t          j        |t          d¦  «        |	¦  «         |S )zl
    Make an XObject from a PDF page
    For a positive xref assume that its object can be used instead
    ztype(gmap)=r   r“  rE  r   )r>   r�   ÚPdfGraftMaprÈ   r˜  rÚ   rÄ   r  r\  rP  r  rÌ   rÓ  Úpdf_graft_objectr=  rx  r‚  r?  r9  r^  )rñ  Úfsrcpager   r¡  r|  ÚsrcpageÚspagerefr€  r±  rq  r/  s              r)   rw  rw  2Y  sR  € õ
 �d�EÔ-Ñ.Ô.Ð@Ð@Ð0@µ4¸±:´:Ð0@Ð0@Ñ@Ô@Ð.Øˆa‚x€xÝÔ& v¨t°QÑ7Ô7ˆ‰å˜xœ}Ñ-Ô-ˆØ—;’;‘=”=ˆÝÔ$¥UÔ%CÀHÍhÐWaÑNbÔNbÑ%cÔ%cÑdÔdˆåÔ*¨8µX¸kÑ5JÔ5JÑKÔKˆØŒ?ð 	:åÔ5°d¸AÑ>Ô>ˆIˆIåÔ.¨v°qÑ9Ô9ˆIõ ˜xÑ(Ô(ˆõ
 Ô% f¨h½¼Ñ8HÔ8HÍ%Ì,ÐWXÉ/Ì/Ð[^Ñ_Ô_ˆå˜ ¨¨QÑ/Ô/Ð/õ 	Ô˜5¥(¨;Ñ"7Ô"7¸ÑCÔCÐCØ€Lr*   c                ó:   — t          | t          t          f¦  «        S r,   )r>   rµ   r´   r  s    r)   r†  r†  UY  s   € Ý�a�%¥˜Ñ'Ô'Ð'r*   c                ó    — t          | ¦  «        S r,   )r7   r  s    r)   rˆ  rˆ  YY  s   € Ýˆq‰6Œ6€Mr*   zbad annot typezbad or missing annot AP/Nz%arg must be seq of seq of float pairszbad seq of pointszbad type: 'buffer'zbad color sequencer
  zbad filetypezbad locationzbad config numberzbad layer numberzbad 'oc' referencezbad page idræ  zPDF has no rootzrect is infinite or emptyzbad type: 'text'r  zcolor count failedzneed font file or bufferzcannot create fontzis no annotationzis no imagerå  zobject is no PDF dictzsource pixmap has no alphazpixel(s) outside imagerÃ   c                ó    — t          | ¦  «        ‚r,   )rg   )r˜   Úexcs     r)   rÀ  rÀ  Y  s   € õ �S‰/Œ/Ðr*   Ústrictc                óÔ   — | sdS t          | t          ¦  «        r|                      d|¬¦  «        }nt          | t          ¦  «        r
| d d …         }|                     d|¬¦  «        }|S )Nr\   r
  r™  Úraw_unicode_escape)r>   rá  r×  r)  rü  )r�  rš  r    rG   s       r)   rõ  rõ  …Y  sr   € àð ØˆrÝ�!•SÑÔð Ø�XŠX�f VˆXÑ,Ô,ˆˆÝ	�A•uÑ	Ô	ð ØˆqˆqˆqŒTˆØ
�)Š)Ð(°ˆ)Ñ
8Ô
8€CØ€Jr*   rÏ  c                óÔ   — | rct          | ¦  «        t          t          fvs7t          | ¦  «        dvs&t	          | ¦  «        dk     st          | ¦  «        dk    rt          d¦  «        ‚d S d S )Nrz  r   r   z/need 1, 3 or 4 color components in range 0 to 1)rÈ   r´   rµ   r7   rç  rø  rÃ   ©rË  s    r)   r  r  ‘Y  sq   € Øð På�‰GŒG�D¥%˜=Ð(Ð(Ý�1‰vŒv˜YÐ&Ð&Ý�1‰vŒv˜ŠzˆzÝ�1‰vŒv˜ŠzˆzåÐNÑOÔOÐOðPð Pð
 ˆzr*   rÖ   r	  rá  c                óT   — |                       ¦   «         D ]}|d         |k    r|c S ŒdS )zGReturn an entry in the page's font list if reference name matches.
    rZ  N)rô  )rÖ   r	  rÝ  s      r)   r'  r'  œY  sD   € ð �^Š^ÑÔð ð ˆØˆQŒ4�8ÒÐØˆHˆHˆHð ðð r*   r´   c                ó:   — | j         D ]}||d         k    r|c S ŒdS )z3Return a font info if present in the document.
    r   N)r  )r:  r   rÝ  s      r)   rX  rX  ¤Y  s:   € ð Œ]ð ð ˆØ�1�Q”4Š<ˆ<ØˆHˆHˆHð ðð r*   rv	  r®  c                óÚ   — t          | ¦  «        rt          | ¦  «        }|j        fS t          | ¦  «        r| fS | D ]/}t          |¦  «        st          |¦  «        st	          d¦  «        ‚Œ0| S )Nzbad quads entry)r÷  r4  r  rø  rÃ   )rv	  r.  r›  s      r)   r”  r”  ¬Y  s}   € Ý�ÑÔð Ý�‰KŒKˆØ”ˆyÐÝ�ÑÔð ØˆxˆØð 0ð 0ˆÝ˜!‘”ð 	0¥	¨!¡¤ð 	0ÝÐ.Ñ/Ô/Ð/øØ€Lr*   rø   c                ó”  — t          | ¦  «        sdS t          | ¦  «        t          t          fv rt	          | ¦  «        dk    st          d¦  «        ‚t	          | d         ¦  «        dk    rt	          | d         ¦  «        dk    st          d¦  «        ‚| d         d         | d         d	         cxk    rdk    sn t          d
¦  «        ‚dS )NFr   z$morph must be a sequence of length 2r   r   rþ  zinvalid morph param 0rZ  r   zinvalid morph param 1T)rø   rÈ   r´   rµ   r7   rÃ   r  s    r)   rá  rá  ¸Y  s¾   € Ý�‰7Œ7ð ØˆuÝ�‰GŒG��e�}Ð$Ð$­¨Q©¬°1ª¨ÝÐ?Ñ@Ô@Ð@Ý��!”‰IŒI˜ŠNˆN�s 1 Q¤4™yœy¨Aš~˜~ÝÐ0Ñ1Ô1Ð1ØˆQŒ4�Œ7�a˜”d˜1”gÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"ÝÐ0Ñ1Ô1Ð1Øˆ4r*   c                ó   — d S r,   )r;   rû   rÃ   rÈ   r  s    r)   rv  rv  ÄY  s   € Ø
€Fr*   r›  c                ó†   — 	 t          | ¦  «        }n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w|j        S )zkCheck whether an object is convex, not empty  quad-like.

    It must be a sequence of 4 number pairs.
    r   F)r<  rg   r  rv   r©  )r›  Úq0s     r)   rø  rø  ÊY  sV   € ð
Ý�!‰WŒWˆˆøÝð ð ð Ý !Ò#Ð#­Ñ(8Ô(8Ð(8Øˆuˆuðøøøð Œ<Ðó   ‚ ’#9¸9r.  c                ó–   — 	 t          | ¦  «        } n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w| j        p| j         S )zbCheck whether an object is non-degenerate rect-like.

    It must be a sequence of 4 numbers.
    r   F)r4  rg   r  rv   rd	  re	  rè  s    r)   r÷  r÷  ×Y  s`   € ð
Ý�‰GŒGˆˆøÝð ð ð Ý !Ò#Ð#­Ñ(8Ô(8Ð(8Øˆuˆuðøøøð ”
Ð+˜aœmÐ,Ð,r®  ú&typing.Union[list, tuple, float, None]rÝ  c                ó¦  — | sdS t          | d¦  «        r| f} t          | ¦  «         t          | ¦  «        dk    r(t          | d         ¦  «        dz   }|dk    r|dz   n|dz   S t          | ¦  «        d	k    r/t          t	          | ¦  «        ¦  «        dz   }|dk    r|d
z   n|dz   S t          t	          | ¦  «        ¦  «        dz   }|dk    r|dz   n|dz   S )Nr\   ry  r   r   r³   rË  zG zg r   zRG zrg zK zk )r;   r  r7   r¶   rµ   )rË  rÝ  r�  s      r)   rÖ  rÖ  äY  sã   € Øð ØˆrÝˆq�+ÑÔð ØˆDˆÝˆq�M„M€MÝ
ˆ1�v„v�‚{€{Ý�a˜”d‰OŒO˜cÑ!ˆØ š8˜8ˆq�4‰xˆx¨¨T©Ð1å
ˆ1�v„v�‚{€{Ý•e˜A‘h”hÑÔ #Ñ%ˆØ šH˜Hˆq�5‰yˆy¨!¨e©)Ð3å•%˜‘(”(ÑÔ˜cÑ!€AØ˜C’x�xˆ1ˆt‰8ˆ8 Q¨¡XÐ-r*   c                ó(  ‡‡— |                       ¦   «         Št          ‰¦  «        Šˆˆfd„}	 ‰dk    r5t          j        ‰                     ¦   «         t          d¦  «        d¦  «         t          j        ‰|¦  «        }|D ]&}t          |¦  «        }t          j        ||¦  «         Œ't          j	        |¦  «         t          |d¦  «          |¦   «          n0# t          $ r# t          rt          ¦   «           |¦   «          Y d S w xY wt          |¦  «        S )Nc                 ó‚   •— ‰dk    r7t          j        ‰                      ¦   «         t          d¦  «        ‰¦  «         d S d S )Nr   rD  )r�   rY  r  r  )rº  r_  s   €€r)   rØ  z$Page__add_text_marker.<locals>.finalùY  s>   ø€ Ø�qŠ=ˆ=ÝÔ" 7§;¢;¡=¤=µ(¸8Ñ2DÔ2DÀhÑOÔOÐOÐOÐOð ˆ=r*   r   rD  r  )rl  r  r�   rY  r  r  rm  r—  Úpdf_add_annot_quad_pointr`  ro  rg   r  rv   ró   )	r(   rv	  r   rØ  rß   rC   r›  rº  r_  s	          @@r)   rº  rº  öY  s5  øø€ Ø�nŠnÑÔ€GÝ Ñ(Ô(€HðPð Pð Pð Pð Pð PðØ�qŠ=ˆ=ÝÔ" 7§;¢;¡=¤=µ(¸8Ñ2DÔ2DÀaÑHÔHÐHÝÔ& w°
Ñ;Ô;ˆØð 	5ð 	5ˆDÝ Ñ%Ô%ˆAÝÔ*¨5°!Ñ4Ô4Ð4Ð4ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Øˆ‰ŒˆˆøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øˆ‰ŒˆØˆˆðøøøõ �‰<Œ<Ðs   ­B'C Ã)DÄDc                ód   — t          | t          ¦  «        sJ ‚t          t          d| › �¦  «        }|S )Nr“  )r>   rá  rý   r�   )r4  rG   s     r)   r  r  Z  s7   € Ý�a�ÑÔÐÐÐÝ
•%Ð-¨!Ð-Ð-Ñ
.Ô
.€Cð €Jr*   r,  c                ó¾   — |d         }d}t          | j        ¦  «        D ]\  }}|d         |k    rd} nŒ|r|| j        |<   d S | j                             |¦  «         d S )Nr   FT)rþ  r  rk   )r:  r,  r   r°  r®   Úfis         r)   r\  r\  Z  s�   € Ø�Œ7€DØ€EÝ˜3œ=Ñ)Ô)ð ð ‰ˆˆ2ØˆaŒ5�DŠ=ˆ=ØˆEØˆEð ð ð #ØˆŒ�aÑÐÐàŒ×Ò˜TÑ"Ô"Ð"Ð"Ð"r*   c                ó"  — d}t          t          |¦  «        ¦  «        D ]Z}||         }|t          | ¦  «        k    rt          |t          ¦  «        rd|v rŒ7 dS |�t          | |         |¦  «        s dS |dz  }Œ[|t          | ¦  «        k    rdS dS )zý
    Returns true if <args> matches <types>.

    Each item in <types> is a type or tuple of types. Any of these types will
    match an item in <args>. `None` will match anything in <args>. `type(None)`
    will match an arg whose value is `None`.
    r   NFr   T)r\  r7   r>   rµ   )r  rÂ  r‘  r®   rk  s        r)   r¹  r¹  (Z  s¦   € ð 	
€AÝ•3�u‘:”:ÑÔð 
ð 
ˆØ�a”ˆØ•�D‘	”	Š>ˆ>Ý˜%¥Ñ'Ô'ð ¨D°E¨M¨Màà�u�uØÐ¥Z°°Q´¸Ñ%?Ô%?ÐØ�5�5Ø	ˆQ‰ˆˆØ�C�‰IŒI‚~€~ØˆuØˆ4r*   c           	     óž  — | j         | j        z   dz  }|j         |j        z   dz  }t          dddd|j         |j         ¦  «        t          |¦  «        z  }| |z  }|j        |j        z  }|j        |j        z  }	|rt          ||	¦  «        x}}	|t          ||	¦  «        z  }|t          dddd|j        |j        ¦  «        z  }t          |¦  «        S )a  Calculate transformation matrix from source to target rect.

    Notes:
        The product of four matrices in this sequence: (1) translate correct
        source corner to origin, (2) rotate, (3) scale, (4) translate to
        target's top-left corner.
    Args:
        sr: source rect in PDF (!) coordinate system
        tr: target rect in PDF coordinate system
        keep: whether to keep source ratio of width to height
        rotate: rotation angle in degrees
    Returns:
        Transformation matrix.
    ç       @r   r   )	rû  rü  r…  r4  r5  rl  rà  rç  r˜  )
Úsrrv  re
  ri  ÚsmpÚtmpr�  Úsr1ÚfwÚfhs
             r)   r�  r�  AZ  sÑ   € ð  Œ5�2”5‰=˜CÑ
€CàŒ5�2”5‰=˜CÑ
€Cõ 	ˆq�!�Q˜˜CœE˜6 C¤E 6Ñ*Ô*­V°F©^¬^Ñ;€Aà
ˆq‰&€Cà	Œ�C”IÑ	€BØ	Œ�S”ZÑ	€BØð Ý�b˜"‘+”+ÐˆˆRà���B‰ŒÑ€AØ���1�a˜˜CœE 3¤5Ñ	)Ô	)Ñ)€AÝ�A‰;Œ;Ðr*   c                ót   — t          t          dd| |¦  «        |||¦  «        }t          | |¦  «        }||z  }|S )zJ
    Like calc_matrix() but returned matrix scales a 1x1 input image.
    r   )r�  r4  r…  )rl  rà  rv  ri  re
  rG   r�  s          r)   r0  r0  dZ  sL   € õ Ý��A�u˜fÑ%Ô%ØØØñ	ô €Cõ �e˜VÑ$Ô$€HØ
�S‰.€CØ€Jr*   c                óì   — | j         j        dk    rc| j         j        j        dk    rN| j         j        j        dk    r9|j         j        j        | j         j        j        j        |j         j        dz  z
  k     S dS )Nr   r   çš™™™™™¹?)rÌ   rÓ
  rs  r4  r5  r†  Ú
first_charrÈ  )ro   r	  s     r)   rF  rF  uZ  sj   € Ø„Ô Ò!Ð! d¤oÔ&9Ô&;¸qÒ&@Ð&@ÀTÄ_ÔEXÔEZÐ^_ÒE_ÐE_ØŒ}Ô#Ô%¨¬Ô(BÔ(IÔ(KÈbÌmÔN`ÐcfÑNfÑ(fÒfÐfØˆ1r*   c           	     ó    — | › dt          | ¦  «        › dt          t          | ¦  «        ¦  «        › d�}t          | ¦  «        D ]}|d|› d�z  }Œ|S )Nr³   ú (z):
rÀ  r%   )rÈ   r7   rs  )r4  rG   r®   s      r)   Údir_strrÇ  {Z  s`   € ØÐ
-Ð
-•�a‘”Ð
-Ð
-�C¥ A¡¤™KœKÐ
-Ð
-Ð
-€CÝ�‰VŒVð ð ˆØˆ|�aˆ|ˆ|ˆ|ÑˆˆØ€Jr*   rW  útyping.Union[list, tuple, None]rI  r$  c                ó¶  ‡— |                       d¦  «        r|                      d¦  «        r| S t          | ¦  «        sdS |rK‰€ d                     d„ | D ¦   «         ¦  «        }n!d                     ˆfd„| D ¦   «         ¦  «        }d|z   dz   S |dk     r"d                     ˆfd	„| D ¦   «         ¦  «        }nd                     d
„ | D ¦   «         ¦  «        }d|z   dz   S )aý   Return a PDF string enclosed in [] brackets, suitable for the PDF TJ
    operator.

    Notes:
        The input string is converted to either 2 or 4 hex digits per character.
    Args:
        simple: no glyphs: 2-chars, use char codes as the glyph
                glyphs: 2-chars, use glyphs instead of char codes (Symbol,
                ZapfDingbats)
        not simple: ordering < 0: 4-chars, use glyphs not char codes
                    ordering >=0: a CJK font! 4 chars, use char codes as glyphs
    z[<z>]z[<>]Nr\   c                óZ   — g | ](}t          |¦  «        d k     rt          |¦  «        d›nd‘Œ)S )r'  Ú02xÚb7rÊ  rR  s     r)   r¯   zgetTJstr.<locals>.<listcomp>—Z  s4   € ÐTÐTÐTÈ!­s°1©v¬v¸ª|¨|�s 1™vœv˜O˜O˜OÀÐTÐTÐTr*   c                ót   •— g | ]4}t          |¦  «        d k     r‰t          |¦  «                 d         d›nd‘Œ5S )r'  r   rË  rÌ  rÊ  rø  s     €r)   r¯   zgetTJstr.<locals>.<listcomp>šZ  sA   ø€ ÐTÐTÐTÈ!­s°1©v¬v¸ª|¨|�F�3˜q™6œ6”N 1Ô%Ð+Ð+Ð+ÀÐTÐTÐTr*   r   c                óJ   •— g | ]}‰t          |¦  «                 d          d›‘Œ S )r   r
  rÊ  rø  s     €r)   r¯   zgetTJstr.<locals>.<listcomp> Z  s.   ø€ ÐAÐAÐA°q˜6¥# a¡&¤&œ>¨!Ô,Ð2Ð2ÐAÐAÐAr*   c                ó0   — g | ]}t          |¦  «        d ›‘ŒS )r
  rÊ  rR  s     r)   r¯   zgetTJstr.<locals>.<listcomp>¢Z  s"   € Ð6Ð6Ð6¨A�3˜q™6œ6˜˜Ð6Ð6Ð6r*   )r3   rí  rø   rê  )r   rW  rI  r$  Úotxts    `   r)   rà  rà  ‚Z  s  ø€ ð ‡‚�tÑÔð  §¢¨tÑ!4Ô!4ð Øˆå�‰:Œ:ð Øˆvàð "Øˆ>Ø—7’7ÐTÐTÈtÐTÑTÔTÑUÔUˆDˆDà—7’7ØTÐTÐTÐTÈtÐTÑTÔTñô ˆDð �d‰{˜TÑ!Ð!ð �!‚|€|Ø�wŠwÐAÐAÐAÐA¸DÐAÑAÔAÑBÔBˆˆà�wŠwÐ6Ð6°Ð6Ñ6Ô6Ñ7Ô7ˆà�$‰;˜ÑÐr*   r�  c                ód  — t          | ¦  «        sdS d„ }d}| D ]�}t          |¦  «        }|dk    r || ¦  «        c S |dk    r|dk     r|dv r|dz  }||z  }Œ?|dk    r
|d|d	›�z  }ŒO|d
k    r|dz  }Œ[|dk    r|dz  }Œg|dk    r|dz  }Œs|dk    r|dz  }Œ|dk    r|dz  }Œ‹|dz  }Œ‘d|z   dz   S )až   Return a PDF string depending on its coding.

    Notes:
        Returns a string bracketed with either "()" or "<>" for hex values.
        If only ascii then "(original)" is returned, else if only 8 bit chars
        then "(original)" with interspersed octal strings 
nn is returned,
        else a string "<FEFF[hexstring]>" is returned, where [hexstring] is the
        UTF-16BE encoding of the original.
    z()c                óz   — t          ddg¦  «        t          | d¦  «        z   }d|                     ¦   «         z   dz   S )Nr©  r
  zUTF-16BEú<rf  )rh  Úhex)r�  r.  s     r)   Úmake_utf16bez!get_pdf_str.<locals>.make_utf16be´Z  s9   € Ý�s˜C�jÑ!Ô!¥I¨a°Ñ$<Ô$<Ñ<ˆØ�Q—U’U‘W”W‰}˜sÑ"Ð"r*   r\   r
  é   r5  )r¢  r£  r³
  r³
  Ú03or   z\brö  z\tr¯  r  rÜ  z\fr°  z\rz\267r¢  r£  )rø   rÐ
  )r�  rÕ  r.  rË  rÕ  s        r)   rq  rq  §Z  s3  € õ �‰7Œ7ð Øˆtð#ð #ð #ð 	€AØð ð ˆÝ�‰VŒVˆØ�Š8ˆ8Ø�< ‘?”?Ð"Ð"Ð"à�Š7ˆ7�r˜C’x�xØÐ$Ð$Ð$Ø�T‘	�Ø�‰FˆAØà�Š8ˆ8Ø��b���ÑˆAØð �Š7ˆ7Ø�‰JˆAˆAØ�1ŠWˆWØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAà�‰LˆAˆAà�‰7�S‰=Ðr*   c                óŠ  — | r| S t          j        d¦  «        } | r| S ddl}|                     ddddd¬¦  «        }|j        dk    r3t          j        d|j        ¦  «        }|r|                     d¦  «        } | S t          j
        d	k    r¾|                     d
dddd¬¦  «        }|j                             ¦   «         }|j        s|st          d¦  «        ‚t           j                             |¦  «        }t           j                             |d¦  «        } t           j                             | ¦  «        r| S t          d| › d�¦  «        ‚t#          ¦   «         }dD ]¾}|                     d|› �dddd¬¦  «        }|j        dk    r”|j                             ¦   «                              ¦   «         }t'          |¦  «        dk    rV|d         }|› d�}|                     |¦  «         t+          j        |¦  «        }	|	                     ¦   «          |	r
|	d         c S Œ¿|rd}
|D ]
}|
d|› �z  }
Œt          |
¦  «        ‚t          d¦  «        ‚)aã  Detect Tesseract language support folder.

    This function is used to enable OCR via Tesseract even if the language
    support folder is not specified directly or in environment variable
    TESSDATA_PREFIX.

    * If <tessdata> is set we return it directly.
    
    * Otherwise we return `os.environ['TESSDATA_PREFIX']` if set.
    
    * Otherwise we search for a Tesseract installation and return its language
      support folder.

    * Otherwise we raise an exception.
    ÚTESSDATA_PREFIXr   Nztesseract --list-langsr   T)ÚshellÚcapture_outputr  r   z%List of available languages in "(.+)"Úwin32zwhere tesseractz4No tessdata specified and Tesseract is not installedrN  z8No tessdata specified and Tesseract installation has no z folder)ztesseract-ocrÚ	tesseractzwhereis r   z/*/tessdatarA  z(No tessdata specified and no match for:
rÀ  )rd   r”   Ú
subprocessrØ  Ú
returncoderÑ  r„  ÚstdoutrÒ  r˜
  Úplatformr#  rÞ   r
   Údirnamerê  r  r´   r6   r7   rk   Úglobrã  )rN  rÞ  Úcpr�  r  râ  Úattemptsr
   ÚpatternÚ	tessdatasr   Úattempts               r)   rH  rH  ÜZ  s�  € ð  ð ØˆÝŒyÐ*Ñ+Ô+€HØð Øˆð ÐÐÐà	�ŠÐ0¸È!ÐSTÐ[_ˆÑ	`Ô	`€BØ	„}˜ÒÐÝŒIÐ=¸r¼yÑIÔIˆØð 	Ø—w’w˜q‘z”zˆHØˆOõ „|�wÒÐØ�^Š^Ð-°QÀqÐPQÐX\ˆ^Ñ]Ô]ˆØ”9—?’?Ñ$Ô$ˆØŒ=ð 	W ð 	WÝÐUÑVÔVÐVÝ”'—/’/ (Ñ+Ô+ˆÝ”7—<’< ¨Ñ4Ô4ˆÝŒ7�>Š>˜(Ñ#Ô#ð 	mØˆOåÐkÐZbÐkÐkÐkÑlÔlÐlõ ‰vŒv€HØ,ð )ð )ˆØ�^Š^Ð- tÐ-Ð-°QÀqÐPQÐX\ˆ^Ñ]Ô]ˆØŒ=˜AÒÐØ”y—’Ñ(Ô(×.Ò.Ñ0Ô0ˆHÝ�8‰}Œ} Ò!Ð!à" 1œ+�Ø$Ð1Ð1Ð1�Ø—’ Ñ(Ô(Ð(Ý œI gÑ.Ô.�	Ø—’Ñ Ô Ð Øð )Ø$ Rœ=Ð(Ð(Ð(øØð SØ:ˆØð 	%ð 	%ˆGØÐ$˜7Ð$Ð$Ñ$ˆDˆDÝ˜4Ñ Ô Ð åÐQÑRÔRÐRr*   )ÚCSSr0  r   Úfontcoderé  rÍ  r0  ÚAnyTypec               óæ  ‡ — d}t          |¦  «        t          urt          d¦  «        ‚|€d}ˆ fd„t                               ¦   «         D ¦   «         }|g k    rt          d‰ › d�¦  «        ‚t          |¦  «        dk    rt          d	¦  «        ‚|€‰ }|D ]]}t          |         }|d
         }|d         }	 |d         ¦   «         }
|                     |
|¦  «         |rdnd}|	rdnd}||||||fz  z  }Œ^|S )a  Create @font-face items for the given fontcode of pymupdf-fonts.

    Adds @font-face support for fonts contained in package pymupdf-fonts.

    Creates a CSS font-family for all fonts starting with string 'fontcode'.

    Note:
        The font naming convention in package pymupdf-fonts is "fontcode<sf>",
        where the suffix "sf" is either empty or one of "it", "bo" or "bi".
        These suffixes thus represent the regular, italic, bold or bold-italic
        variants of a font. For example, font code "notos" refers to fonts
        "notos" - "Noto Sans Regular"
        "notosit" - "Noto Sans Italic"
        "notosbo" - "Noto Sans Bold"
        "notosbi" - "Noto Sans Bold Italic"

        This function creates four CSS @font-face definitions and collectively
        assigns the font-family name "notos" to them (or the "name" value).

    All fitting font buffers of the pymupdf-fonts package are placed / added
    to the archive provided as parameter.
    To use the font in pymupdf.Story, execute 'set_font(fontcode)'. The correct
    font weight (bold) or style (italic) will automatically be selected.
    Expects and returns the CSS source, with the new CSS definitions appended.

    Args:
        fontcode: (str) font code for naming the font variants to include.
                  E.g. "fig" adds notos, notosi, notosb, notosbi fonts.
                  A maximum of 4 font variants is accepted.
        CSS: (str) CSS string to add @font-face definitions to.
        archive: (Archive, mandatory) where to place the font buffers.
        name: (str) use this as family-name instead of 'fontcode'.
    Returns:
        Modified CSS, with appended @font-face statements for each font variant
        of fontcode.
        Fontbuffers associated with "fontcode" will be added to 'archive'.
    z1
@font-face {font-family: %s; src: url(%s);%s%s}
z'archive' must be an ArchiveNr\   c                ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS r-   rª  )r­   rª  rê  s     €r)   r¯   z(css_for_pymupdf_font.<locals>.<listcomp>S[  s*   ø€ ÐRÐRÐR�q¸1¿<º<ÈÑ;QÔ;QÐR�ÐRÐRÐRr*   zNo font code 'z' found in pymupdf-fonts.rZ  zfontcode too shortrW  rk  rÙ  zfont-weight: bold;zfont-style: italic;)rÈ   rD  rÃ   rº
  rÕ  r7   rH  )rê  ré  r0  r   ÚCSSFONTÚ	font_keysÚfkeyrb  rW  rk  ÚfbuffÚ	bold_textÚitalic_texts   `            r)   Úcss_for_pymupdf_fontrô  "[  s;  ø€ ðR D€Gå�‰=Œ=�GÐ#Ð#ÝÐ7Ñ8Ô8Ð8Ø
€{Øˆð SÐRÐRÐRÕ0×5Ò5Ñ7Ô7ÐRÑRÔR€IØ�B‚€ÝÐM¨(ÐMÐMÐMÑNÔNÐNÝ
ˆ9�~„~˜ÒÐÝÐ-Ñ.Ô.Ð.Ø€|Øˆàð >ð >ˆÝ# DÔ)ˆØ�FŒ|ˆØ�h”ˆØ��X”Ñ Ô ˆØ�Š�E˜4Ñ Ô Ð Ø,0Ð8Ð(Ð(°bˆ	Ø/5Ð=Ð+Ð+¸2ˆØˆw˜$  i°Ð=Ñ=Ñ=ˆˆØ€Jr*   r
  r~  rû  c                ó   ‡— |                      ¦   «         }t                               |d¦  «        }dŠ|dk    rt          Š|dk    rt          Š‰� t          ˆfd„| D ¦   «         ¦  «        }||z  S |t                               ¦   «         v rt          | t          |         ||¦  «        S |dv rt          | ¦  «        |z  S t          d|› d�¦  «        ‚)a  Calculate length of a string for a built-in font.

    Args:
        fontname: name of the font.
        fontsize: font size points.
        encoding: encoding to use, 0=Latin (default), 1=Greek, 2=Cyrillic.
    Returns:
        (float) length of text.
    NrV  rU  c                óˆ   •— g | ]>}t          |¦  «        d k     r‰t          |¦  «                 d         n‰d         d         ‘Œ?S )r'  r   rÛ  rÊ  rø  s     €r)   r¯   z#get_text_length.<locals>.<listcomp>z[  sC   ø€ ÐUÐUÐUÈ1¥c¨!¡f¤f¨s¢l l��˜A™œ” Ô"Ð"¸¸s¼ÀA¼ÐUÐUÐUr*   )rµ
  r·
  r¶
  r$  r¹
  r%  r¸
  r&  zFont 'z' is unsupported)
râ  r½
  r8   r[  rZ  rW  rÕ  Úutil_measure_stringr7   rÃ   )r   r	  r
  rû  rè  r   rW  s         @r)   rË  rË  g[  sù   ø€ ð �~Š~ÑÔ€HÝ×"Ò" 8¨TÑ2Ô2€Hà€FØ�8ÒÐÝˆØ�>Ò!Ð!ÝˆØÐÝÐUÐUÐUÐUÐPTÐUÑUÔUÑVÔVˆØ�8‰|Ðà•?×'Ò'Ñ)Ô)Ð)Ð)Ý"Ø•/ (Ô+¨X°xñ
ô 
ð 	
ð ð 	ð 	ð 	õ �4‰yŒy˜8Ñ#Ð#å
Ð8˜hÐ8Ð8Ð8Ñ
9Ô
9Ð9r*   rß  rê  r5   c                ó>  — t          | ¦  «        t          j        u r|                      ¦   «         }nTt	          | d¦  «        r|                      ¦   «         }n/t          | ¦  «        t          t          fv r| }nt          d¦  «        ‚t           
                    |¦  «        S )aG   Return basic properties of an image.

    Args:
        img: bytes, bytearray, io.BytesIO object or an opened image file.
    Returns:
        A dictionary with keys width, height, colorspace.n, bpc, type, ext and size,
        where 'type' is the MuPDF image type (0 to 14) and 'ext' the suitable
        file extension.
    r}  zbad argument 'img')rÈ   r9   ri  r�  r;   r}  r)  rh  rÃ   r  Úimage_profile)rß  r	   s     r)   rù  rù  ‘[  s‡   € õ ˆC�y„y•B”JÐÐØ—’‘”ˆˆÝ	��fÑ	Ô	ð /Ø—’‘”ˆˆÝ	ˆc‰Œ•u�iÐ(Ð	(Ð	(ØˆˆåÐ-Ñ.Ô.Ð.å×Ò˜vÑ&Ô&Ð&r*   c                óÀ  ‡ — t          ‰ j        t          ¦  «        sJ ‚t          ‰ j        ¦  «        s‰ j        rK‰ j        €J ‚ t          ‰ j        ‰ j        ¦  «        ‰ j        ¦  «        }|st          d¦  «         d‰ _        dS ˆ fd„}t          ‰ j        t          ¦  «        sJ ‚t          ‰ j        ¦  «        }|dk    r
 |¦   «         S ‰ j        t                   }|dk    r
 |¦   «         S ‰ j        |dz
           }|t                   }|dk    r
 |¦   «         S |t                   }‰ j        t                   }||k    r
 |¦   «         S 	 ‰ j                             ¦   «         D ]\  }	}
|	|vr|
||	<   Œd}n'# t          $ r t          rt          ¦   «          d}Y nw xY w|dk    r%d	|t          <   ‰ j                             ¦   «          dS t          d
¦  «          |¦   «          dS )aq  
    Append current path to list or merge into last path of the list.
    (1) Append if first path, different item lists or not a 'stroke' version
        of previous path
    (2) If new path has the same items, merge its content into previous path
        and change path["type"] to "fs".
    (3) If "out" is callable, skip the previous and pass dictionary to it.
    Nr   z2calling cdrawings callback function/method failed!c                 óœ   •— ‰ j                              ‰ j                             ¦   «         ¦  «         ‰ j                             ¦   «          d S r,   )r(  rk   Úpathdictrm  rŒ  )r  s   €r)   rk   zjm_append_merge.<locals>.appendÂ[  s?   ø€ àŒ�Š�s”|×(Ò(Ñ*Ô*Ñ+Ô+Ð+ØŒ×ÒÑÔÐÐÐr*   r�  r   rÝ  rA  rÊ  z$could not merge stroke and fill path)r>   r(  r´   r`  re  rý   rü  rr   r7   r  Údictkey_itemsrB   rg   r  rv   rŒ  )r  Úresprk   r  ÚthistyperÃ  ÚprevtypeÚ	previtemsÚ	thisitemsrª  rF   r    s   `           r)   Újm_append_merger  §[  s  ø€ õ �c”g�tÑ$Ô$Ð$Ð$Ð$õ �”
ÑÔð ˜sœzð àŒ:Ðà�1ð 0•7˜3œ7 C¤JÑ/Ô/°´Ñ=Ô=ˆDØð 	JÝÐHÑIÔIÐIØˆŒØˆðð ð ð ð õ �c”g�tÑ$Ô$Ð$Ð$Ð$ÝˆsŒw‰<Œ<€Dàˆq‚y€yØˆv‰xŒxˆàŒ|�\Ô*€Hà�3‚€Øˆv‰xŒxˆØŒ7�D˜‘FÔ€Dà•\Ô"€Hà�3‚€Øˆv‰xŒxˆà•mÔ$€IØ”�mÔ,€IØ�IÒÐØˆv‰xŒxˆðØ”L×&Ò&Ñ(Ô(ð 	ð 	‰DˆAˆqØ˜ˆ}ˆ}Ø��Q‘øØˆˆøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4àˆˆˆðøøøð 
ˆQ‚w€wØ"ˆ�lÑØŒ×ÒÑÔÐÐÐåÐ6Ñ7Ô7Ð7Øˆ‰Œˆˆˆs   Å*E3 Å3!FÆFc                óÈ   — | j         s+| j                             |t          |¦  «        f¦  «         d S | j                             |t          |¦  «        | j        f¦  «         d S r,   )r[  r+  rk   rw  Ú
layer_name)r  rR  r  rØ  s       r)   Újm_bbox_add_rectr  î[  sc   € ØŒ:ð JØŒ
×Ò˜D¥/°$Ñ"7Ô"7Ð8Ñ9Ô9Ð9Ð9Ð9àŒ
×Ò˜D¥/°$Ñ"7Ô"7¸¼ÐHÑIÔIÐIÐIÐIr*   c                ó¾   — t          j        t           j        j        ¦  «        }t          j        |                     ¦   «         |¦  «        }t          | ||d¦  «         d S )Nz
fill-image)r�   rx  r{  Úll_fz_transform_rectr  r  )r  rR  rF  rî  rì  Úcolor_paramsr.  s          r)   Újm_bbox_fill_imager
  õ[  sJ   € ÝŒ•U”\Ô,Ñ-Ô-€AÝÔ" A§J¢J¡L¤L°#Ñ6Ô6€AÝ�c˜3  <Ñ0Ô0Ð0Ð0Ð0r*   c                ó®   — 	 t          | |t          j        t          j        |¦  «        d¦  «         d S # t          $ r t
          rt          ¦   «          ‚ w xY w)Nzfill-imgmask)r  r�   r  Úfz_unit_rectrg   r  rv   )r  rR  rF  rî  rë  r  rì  r	  s           r)   Újm_bbox_fill_image_maskr  û[  sb   € ðÝ˜#˜s¥EÔ$>½uÔ?QÐSVÑ$WÔ$WÐYgÑhÔhÐhÐhÐhøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ‚/3 ³!Ac	           	     ó¨   — |rdnd}	 t          | |t          j        |d |¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)NTFz	fill-path©r  r�   Úll_fz_bound_pathrg   r  rv   ©	r  rR  r
   rp  rî  rë  r  rì  r	  s	            r)   Újm_bbox_fill_pathr  \  sm   € ØÐ*ˆtˆt U€HðÝ˜#˜s¥EÔ$:¸4ÀÀsÑ$KÔ$KÈ[ÑYÔYÐYÐYÐYøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ˆ&0 °!Ac                óš   — 	 t          | |t          j        ||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nz
fill-shade)r  r�   Úll_fz_bound_shaderg   r  rv   )r  rR  Úshaderî  rì  r	  s         r)   Újm_bbox_fill_shader  \  s]   € ðÝ˜#˜s¥EÔ$;¸UÀCÑ$HÔ$HÈ,ÑWÔWÐWÐWÐWøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ‚%) ©!A
c           	     óœ   — 	 t          | |t          j        |||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nzstroke-text©r  r�   Úll_fz_bound_textrg   r  rv   )r  rR  r   rw  rî  r  s         r)   Újm_bbox_stroke_textr  \  ó`   € ðÝ˜#˜s¥EÔ$:¸DÀ&È#Ñ$NÔ$NÐP]Ñ^Ô^Ð^Ð^Ð^øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøó	   ‚&* ª!Ac           	     óœ   — 	 t          | |t          j        |d |¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nz	fill-textr  )r  rR  r   rî  r  s        r)   Újm_bbox_fill_textr  \  s_   € ðÝ˜#˜s¥EÔ$:¸DÀ$ÈÑ$LÔ$LÈkÑZÔZÐZÐZÐZøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøør  c           	     óR   — t          | |t          j        |d |¦  «        d¦  «         d S )Nzignore-text)r  r�   r  )r  rR  r   rî  s       r)   Újm_bbox_ignore_textr   $\  s+   € Ý�c˜3¥Ô 6°t¸TÀ3Ñ GÔ GÈÑWÔWÐWÐWÐWr*   c	           	     óœ   — 	 t          | |t          j        |||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nzstroke-pathr  )	r  rR  r
   rw  rî  rë  r  rì  r	  s	            r)   Újm_bbox_stroke_pathr"  (\  r  r  c                óP  — | j         t                   }t          |¦  «        }dgdz  }t          d¦  «        D ]W}||dz
  |z            }t	          |d         ¦  «        }|j        ||dz  <   |j        ||dz  dz   <   t	          |d         ¦  «        }ŒX|j        |d         k    s|j        |d         k    rdS d| _        t          j	        |d         |d         |d         |d         |d         |d         |d         |d	         ¦  «        }d
t          |¦  «        f}	|	||dz
  <   ||dz
  |…= dS )a  
    Check whether the last 4 lines represent a quad.
    Because of how we count, the lines are a polyline already, i.e. last point
    of a line equals 1st point of next line.
    So we check for a polygon (last line's end point equals start point).
    If not true we return 0.
    r   r   rZ  r   r   rþ  rÐ  r   r   rr  )rü  rý  r7   r\  rk  r4  r5  Ú	linecountr�   r.  r\  )
r  rB   r  rÝ  r®   ro   r‹  r‹  r›  r  s
             r)   Újm_checkquadr%  0\  s5  € ð ŒL�-Ô(€EÝˆu‰:Œ:€DØ	
ˆˆa‰€Aå�A‰YŒYð )ð )ˆØ�d˜Q‘h ‘lÔ#ˆÝ  a¤Ñ)Ô)ˆØ”6ˆˆ!ˆa‰%‰Ø”vˆˆ!ˆa‰%�!‰)‰Ý˜t QœxÑ(Ô(ˆˆØ	„tˆq�Œt‚|€|�r”t˜q œt’|�|ð ˆqð €C„Mõ 	Ô˜1˜Qœ4  1¤ q¨¤t¨Q¨q¬T°1°Q´4¸¸1¼¸qÀ¼tÀQÀqÄTÑJÔJ€AØ•/ !Ñ$Ô$Ð%€Dà€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØˆ1r*   c                óÜ  — d| _         d}| j        t                   }t          |¦  «        }||dz
           }t	          |d         ¦  «        }t	          |d         ¦  «        }||dz
           }t	          |d         ¦  «        }t	          |d         ¦  «        }		 |j        |j        k    s0|j        |	j        k    s |j        |	j        k    s|j        |j        k    rdS || _        |	j        |j        k     r.t          j	        |	j        |	j        |j        |j        ¦  «        }
d}n-t          j	        |j        |j        |j        |j        ¦  «        }
d}dt          |
¦  «        |f}|||dz
  <   ||dz
  |…= dS )z}
    Check whether the last 3 path items represent a rectangle.
    Returns 1 if we have modified the path, otherwise 0.
    r   r   r   r   rA  rÑ  )r$  rü  rý  r7   rk  r5  r4  Ú	lastpointr�   rq  rw  )r  r`  rB   r  rP  rú  rû  Úline2rü  r¯  r.  r  s               r)   Újm_checkrectr)  W\  s^  € ð €C„MØ€KØŒL�-Ô(€EÝˆu‰:Œ:€Dà�4˜!‘8Ô€EÝ	˜5 !œ9Ñ	%Ô	%€BÝ	˜5 !œ9Ñ	%Ô	%€Bð �4˜!‘8Ô€EÝ	˜5 !œ9Ñ	%Ô	%€BÝ	˜5 !œ9Ñ	%Ô	%€BðØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|àˆqð €C„Mð 
„tˆbŒd‚{€{ÝÔ˜rœt R¤T¨2¬4°´Ñ6Ô6ˆØˆˆåÔ˜rœt R¤T¨2¬4°´Ñ6Ô6ˆØˆà•? 1Ñ%Ô% {Ð3€DØ€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØˆ1r*   c           
     óV   — |j         }	 |sd S t          | |||||||¦  «         |j        }Œ"r,   )ÚheadÚjm_trace_text_spanrL  )	r  r   rk  rî  rë  r  rì  Úseqnorò  s	            r)   Újm_trace_textr.  ‹\  sC   € ØŒ9€DðØð 	ØˆEÝ˜C  u¨c°:¸uÀeÈUÑSÔSÐSØŒyˆð	r*   c                óX  — d}t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |                     ¦   «         ¦  «        }	t          j        | 	                    ¦   «         |¦  «        }
t          j
        t          j        dd¦  «        |
¦  «        }t          j        |j        |j        z  |j        |j        z  z   ¦  «        }t          j        |¦  «        }d}t#          |                     ¦   «         ¦  «        }t%          |                     ¦   «         ¦  «        }|dk     rd}d}||z  ||z
  z  }||z  ||z
  z  }d}t          j        |                     ¦   «         ¦  «        }||t(          z  z  }|t          j        |                     ¦   «         ¦  «        t,          z  z  }|t          j        |                     ¦   «         ¦  «        t0          z  z  }|t          j        |                     ¦   «         ¦  «        t4          z  z  }d}t          j        ¦   «         }t          j        |j        |j        |j         |j        dd¦  «        }|j        dk    rd|_        g }t=          |j        j         ¦  «        D �]ˆ}d}| !                    |¦  «        j"        dk    rJt          j#        |                     ¦   «         | !                    |¦  «        j"        |j        j$        ¦  «        }||z  }|}| !                    |¦  «        j%        dk    r|}t          j        | !                    |¦  «        j        | !                    |¦  «        j        ¦  «        }t          j&        ||¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        ||¦  «        }t          j        |t          j        dddd|j        |j        ¦  «        ¦  «        }|j        }||z   }|
j        dk    r|j        dk    s'|j        dk    s|
j'        dk    r&|
j'        |
j(         k    r|j        |z   }|j        |z   }n|j        |z
  }|j        |z
  }t          j)        ||||¦  «        } t          j*        | |¦  «        } | +                    | !                    |¦  «        j%        | !                    |¦  «        j"        |j        |j        f| j,        | j-        | j.        | j/        ff¦  «         |dk    rt          j0        || ¦  «        }�Œ†| }�ŒŠtc          |¦  «        }|st|t(          z  sht          j2        |                     ¦   «         ddd¦  «        \  }!}t          j#        |                     ¦   «         |!|j        j$        ¦  «        }||z  }|s|}n|}tg          ¦   «         }"ti          |¦  «        |"d	<   tk          |	¦  «        |"d
<   |j        j$        |"d<   ||"d<   |j        j6        |"d<   |j        j7        |"d<   ||"d<   ||"d<   d|"d<   |rzt          j8        t          j9        t          j:        |¦  «        ¦  «        |t          j;        ¦   «         t          j9        ¦   «         t          j<        ¦   «         ¦  «        }#|#dd…         }#nd}#| j=        dk    r| j=        }$n|dz  }$|#|"d<   ||"d<   ||"d<   |$|"d<   ||"d<   ||"d<   t}          |¦  «        |"d<   | j?        |"d<   ||"d<   ||"d<   | j@         +                    |"¦  «         dS )z³
    jm_trace_text_span(fz_context *ctx, PyObject *out, fz_text_span *span, int type, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, size_t seqno)
    Nr   r   r°  rM  rN  rA  rú  rs  rb  rÓ
  rÎ  Úbidi_lvlÚbidi_dirrG  rH  r   rë  rÞ  rY  r  rÈ  rf  Ú	linewidthÚ
spacewidthrÈ   r?  Úlayerr-  rA
  )Ar>   r�   Úfz_text_spanÚ
FzTextSpanÚ	fz_matrixr‚  rÁ  rb  r1  r'  Úfz_transform_vectorrŒ  rU  rV  r4  r5  Úfz_normalize_vectorrS  rT  rþ
  rI  rü
  rG  r  rH  rú
  rJ  rx  r#  r  r\  rÌ   r7   rB   rÕ
  r.  rÓ
  r  r3  rÜ
  rË  rq  r¸  rk   r  r  r  r  r¥  rµ   rÒ
  r5   r¸  rÂ  r�  r(  Úfz_convert_colorr¢  r¾  rä  r&  r2  rw  r  r(  )%r  rò  rk  rî  rë  r  rì  r-  Úout_fontr	  r†  rs  r  Ú	space_advr_  r`  ÚascsizeÚdscsizeÚfflagsrÝ
  Úlast_advÚ	span_bboxrb  rA
  r®   r2  Ú	char_origrs  r  r  r  r  Ú	char_bboxrË  Ú	span_dictrÛ  r2  s%                                        r)   r,  r,  ”\  s§  € ð €HÝ�t�UÔ/Ñ0Ô0Ð0Ð0Ð0ÝÔ˜TÑ"Ô"€DÝ�s�EœOÑ,Ô,Ð,Ð,Ð,Ý
Œ.˜#Ñ
Ô
€CÝ˜TŸYšY™[œ[Ñ)Ô)€Hõ Œ/˜$Ÿ(š(™*œ* cÑ
*Ô
*€CÝ
Ô
#¥EÔ$7¸¸1Ñ$=Ô$=¸sÑ
CÔ
C€CÝŒI�c”e˜cœe‘m c¤e¨c¬e¡mÑ3Ñ4Ô4€Eå
Ô
# CÑ
(Ô
(€Cà€IÝ
˜DŸIšI™KœKÑ
(Ô
(€CÝ
˜TŸYšY™[œ[Ñ
)Ô
)€CØ
ˆT‚z€zØˆØˆð �E‰k˜S 3™YÑ'€GØ�E‰k˜S 3™YÑ'€GØ€FÝÔ&¨¯	ª	©¬Ñ4Ô4€DØ
ˆdÕ)Ñ)Ñ)€FØ
�eÔ% t§y¢y¡{¤{Ñ3Ô3Õ6FÑFÑF€FØ
�eÔ$ d§i¢i¡k¤kÑ2Ô2Õ5FÑFÑF€FØ
�eÔ# T§Y¢Y¡[¤[Ñ1Ô1µNÑBÑB€Fà€Hõ ”‘”€IÝ
Ô
˜sœu c¤e¨c¬e¨V°S´U¸A¸qÑ
AÔ
A€CØ
„u�‚{€{ØˆŒà€EÝ�D”OÔ'Ñ(Ô(ð ."ñ ."ˆØˆØ�:Š:�a‰=Œ=Ô Ò!Ð!ÝÔ(¨$¯)ª)©+¬+°t·z²zÀ!±}´}Ô7HÈ$Ì/ÔJ_Ñ`Ô`ˆCØˆu‰ˆØˆØ�:Š:�a‰=Œ=Ô Ò"Ð"ØˆIÝÔ'¨¯
ª
°1©¬¬¸¿ºÀA¹¼¼ÑIÔIˆ	ÝÔ,¨Y¸Ñ<Ô<ˆ	ÝÔ! ! Q¨¨1¨y¬{¨l¸Y¼[¸LÑIÔIˆÝŒ_˜R Ñ%Ô%ˆÝŒ_˜R¥¤°°1°a¸¸I¼KÈÌÑ!UÔ!UÑVÔVˆØŒ[ˆØ�#‰Xˆà”˜’� ¤¨¢
 
¨c¬e°rªk¨kà”˜!’� ¤¨#¬%¨¢ à”˜wÑ&ˆBØ”˜wÑ&ˆBˆBà”˜wÑ&ˆBØ”˜wÑ&ˆBÝÔ& r¨2¨r°2Ñ6Ô6ˆ	ÝÔ+¨I°rÑ:Ô:ˆ	Ø�Šà—J’J˜q‘M”MÔ%Ø—J’J˜q‘M”MÔ%à!œØ!œðð
 "œØ!œØ!œØ!œð	ðñ	ô 	ð 	ð  ˆqŠ5ˆ5ÝÔ+¨I°yÑAÔAˆI‰Ià!ˆI‰IÝ�%‰LŒL€Eàð !ØÕ-Ñ-ð 	!ÝÔAÀ4Ç9Â9Á;Ä;ÐPRÐTUÐWXÑYÔY‰KˆAˆxÝÔ.Ø—I’I‘K”KØØ”OÔ)ñô ˆIð
 ˜ÑˆIØð %Ø$�	øà ˆIõ ‘”€IÝ(¨Ñ-Ô-€IˆuÑÝ,¨XÑ6Ô6€IˆvÑØœ/Ô/€IˆwÑØ€IˆwÑØ œOÔ6€IˆzÑØ!œ_Ô7€IˆzÑØ €IˆzÑØ!€Iˆ{ÑØ €Iˆ|Ñàð 
ÝÔ$ÝÔ"¥EÔ$?ÀÑ$LÔ$LÑMÔMØÝÔ#Ñ%Ô%ÝÔ"Ñ$Ô$ÝÔ#Ñ%Ô%ñô ˆð �"�1�"Œgˆˆàˆà
„}�qÒÐØ”Mˆ	ˆ	à˜D‘Lˆ	ð €IˆwÑØ€IˆvÑØ!€IˆyÑØ'€Iˆ{ÑØ(€Iˆ|ÑØ€IˆvÑÝ(¨Ñ3Ô3€IˆvÑØœ.€IˆwÑØ€IˆwÑØ€IˆwÑà„G‡N‚N�IÑÔÐÐÐr*   c                ó4  — | r•	 t          j        t           j        j        ¦  «        }t          j        ¦   «         }t          j        | ||j        d |                     ¦   «         ¦  «        }n$# t          $ r t          rt          ¦   «          ‚ w xY w|d d…         S dS )Nr   r-   )
r�   r¢  r¨  r&  Úll_fz_convert_colorrÌ   r  rg   r  rv   )rë  r  rï  rä  rÛ  s        r)   Újm_lineart_colorrG  ,]  s§   € àð ð	õ Ô#¥UÔ%7Ô%AÑBÔBˆBÝÔ$Ñ&Ô&ˆBÝÔ+ØØØ”MØØ—K’K‘M”Mñô ˆCˆCøõ ð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøð �2�A�2ŒwˆØˆ2s   „A%A* Á*!Bc                óV   — t          | j        t          ¦  «        rg | _        g | _        d S r,   )r>   r(  r´   Úscissors©r  rR  s     r)   Újm_lineart_drop_devicerK  H]  s(   € Ý�#”'�4Ñ Ô ð ØˆŒØ€C„L€L€Lr*   c	                óp  — |rdnd}	 t          |t          j        ¦  «        sJ ‚t          j        |¦  «        | _        t
          | _        t          | ||¦  «         | j        €d S d| j        t          <   || j        d<   || j        d<   t          ||¦  «        | j        d<   t          | j        ¦  «        | j        t          <   | j        | j        d<   | j        | j        d<   | j        r| j        | j        d	<   t%          | ¦  «         | xj        d
z  c_        d S # t&          $ r t(          rt+          ¦   «          ‚ w xY w)NTFrÝ  rp  r'  r  r-  r4  r   r   )r>   r�   r7  r‚  rî  Útrace_device_FILL_PATHÚ	path_typeÚjm_lineart_pathrü  r  rG  rw  ÚpathrectÚdictkey_rectr-  r  rf  r=  r  rg   r  rv   r  s	            r)   Újm_lineart_fill_pathrR  N]  s>  € ð  Ð*ˆtˆt U€HðÝ˜3¥¤Ñ0Ô0Ð0Ð0Ð0Ý”. #Ñ&Ô&ˆŒÝ.ˆŒÝ˜˜c 4Ñ(Ô(Ð(ØŒ<ÐØˆFð &)ˆŒ•lÑ#Ø$,ˆŒ�jÑ!Ø(-ˆŒ�nÑ%õ !1°*¸eÑ DÔ DˆŒ�fÑÝ&5°c´lÑ&CÔ&CˆŒ•lÑ#Ø!$¤ˆŒ�gÑà!$¤ˆŒ�gÑØŒ9ð 	/Ø%(¤YˆCŒL˜'Ñ"Ý˜ÑÔÐØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ˆAD Á#B/D Ä!D5c           
     ó^   — 	 t          | |d||||| j        ¦  «         | xj        dz  c_        d S )Nr   z
type(ctx)=z ctx=z
type(dev)=z dev=ztype(text)=z text=z
type(ctm)=z ctm=ztype(colorspace)=z colorspace=ztype(color)=z color=ztype(alpha)=r¼  ztype(color_params)=z color_params=r   )r'   rÈ   r.  r-  )r  rR  r   rî  rë  r  rì  r	  s           r)   Újm_lineart_fill_textrT  u]  s:   € ð6õ �#�t˜Q  Z°¸¸s¼yÑIÔIÐIØ€I„I��N€I„I€I€Ir*   c           
     ó\   — t          | |d|d d d| j        ¦  «         | xj        dz  c_        d S )Nr   r   ©r.  r-  )r  r   rî  s      r)   Újm_lineart_ignore_textrW  ƒ]  s3   € å�#�t˜Q  T¨4°°C´IÑ>Ô>Ð>Ø€I„I��N€I„I€I€Ir*   c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚWalkerc                óö   •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          || _        d S r,   )rÇ   rŒ   Úuse_virtual_movetoÚuse_virtual_linetoÚuse_virtual_curvetoÚuse_virtual_closepathr  )r(   r  rO  s     €r)   rŒ   zWalker.__init__‹]  sl   ø€ Ý‰Œ×ÒÑÔÐØ×ÒÑ!Ô!Ð!Ø×ÒÑ!Ô!Ð!Ø× Ò Ñ"Ô"Ð"Ø×"Ò"Ñ$Ô$Ð$ØˆŒˆˆr*   c                ó<  — 	 | j         j        dk    rt          | j         ¦  «        rd S d| j         _        | j         j        r�| j         j        | j         j        k    rsdt          | j         j        ¦  «        t          | j         j        ¦  «        f}| j         j        t                    	                    |¦  «         | j         j        | j         _        d| j         j        d<   nd| j         j        d<   d| j         _        d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nr   r   r'  Fr#  T)r  r$  r)  Úhavemover'  Ú
firstpointr¸  rü  rý  rk   rg   r  rv   )r(   rR  rC   s      r)   Ú	closepathzWalker.closepath“]  s  € ð	ØŒxÔ! QÒ&Ð&Ý ¤Ñ)Ô)ð à�FØ!"ˆDŒHÔàŒxÔ ð 
7Ø”8Ô%¨¬Ô)<Ò<Ð<ØÕ!1°$´(Ô2DÑ!EÔ!EÝ!1°$´(Ô2EÑ!FÔ!FðH�Dà”HÔ%¥mÔ4×;Ò;¸DÑAÔAÐAØ)-¬Ô)<�D”HÔ&Ø16�”Ô! +Ñ.Ð.ð 37�”Ô! ;Ñ/ð !"ˆDŒHÔÐÐøåð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚$C: ¨CC: Ã:!Dc                óŒ  — 	 d| j         _        t          j        ||¦  «        }t          j        ||¦  «        }	t          j        ||¦  «        }
t          j        || j         j        ¦  «        }t          j        |	| j         j        ¦  «        }	t          j        |
| j         j        ¦  «        }
t          j        | j         j        |¦  «        | j         _        t          j        | j         j        |	¦  «        | j         _        t          j        | j         j        |
¦  «        | j         _        dt          | j         j	        ¦  «        t          |¦  «        t          |	¦  «        t          |
¦  «        f}|
| j         _	        | j         j
        t                                        |¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nr   rË  )r  r$  r�   rŒ  r3  rî  Úfz_include_point_in_rectrP  r¸  r'  rü  rý  rk   rg   r  rv   )r(   rR  r  r  Úx2Úy2Úx3Úy3r  r  r!  r1  s               r)   ÚcurvetozWalker.curveto¯]  s|  € ð	Ø!"ˆDŒHÔÝÔ$ R¨Ñ,Ô,ˆBÝÔ$ R¨Ñ,Ô,ˆBÝÔ$ R¨Ñ,Ô,ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔð Ý$ T¤XÔ%7Ñ8Ô8Ý$ RÑ(Ô(Ý$ RÑ(Ô(Ý$ RÑ(Ô(ðˆEð "$ˆDŒHÔØŒHÔ�}Ô-×4Ò4°eÑ<Ô<Ð<Ð<Ð<øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚FF" Æ"!Gc                ól  — 	 t          j        t          j        ||¦  «        | j        j        ¦  «        }t          j        | j        j        |¦  «        | j        _        dt          | j        j        ¦  «        t          |¦  «        f}|| j        _        | j        j	        t                   }|                     |¦  «         | j        xj        dz  c_        | j        j        dk    r+| j        j        t          k    rt          | j        ¦  «         d S d S d S # t           $ r t"          rt%          ¦   «          ‚ w xY w)Nr'  r   rZ  )r�   r3  rŒ  r  rî  rd  rP  r¸  r'  rü  rý  rk   r$  rN  rM  r%  rg   r  rv   )r(   rR  r4  r5  r  r1  rB   s          r)   ÚlinetozWalker.linetoÊ]  s$  € ð	ÝÔ)­5Ô+>¸qÀ!Ñ+DÔ+DÀdÄhÄlÑSÔSˆBÝ %Ô >ÀÄÔ@QÐSUÑ VÔ VˆDŒHÔàÝ$ d¤hÔ&8Ñ9Ô9Ý$ RÑ(Ô(ðˆEð
 "$ˆDŒHÔØ”HÔ%¥}Ô5ˆEØ�LŠL˜%Ñ Ô Ð ØŒHÐÔ !Ñ#ÐÔØŒxÔ! QÒ&Ð&¨4¬8Ô+=ÕAWÒ+WÐ+Wå˜TœXÑ&Ô&Ð&Ð&Ð&ð 'Ð&Ð+WÐ+Wøõ ð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚D
D Ä!D3c                ó  — 	 	 t          j	        t          j
        ||¦  «        | j        j        ¦  «        | j        _        t          j        | j        j        ¦  «        r]t          j        | j        j        j        | j        j        j        | j        j        j        | j        j        j        ¦  «        | j        _        | j        j        | j        _        d| j        _        d| j        _        d S # t*          $ r t,          rt/          ¦   «          ‚ w xY w)Nr   zself.dev.pathdict:z    type(n)=z len(n)=r³   r{   r   )r>   r  rü  r5   r'   rB   rÈ   r7   r�   r3  rŒ  rî  r'  r¾  rP  rq  r4  r5  ra  r`  r$  rg   r  rv   )r(   rR  r4  r5  rE   rF   s         r)   ÚmovetozWalker.movetoß]  sò   € ð	Gð	å!&Ô!9ÝÔ'¨¨1Ñ-Ô-Ø”H”Lñ"ô "ˆDŒHÔõ Ô(¨$¬(Ô*;Ñ<Ô<ð Ý$)Ô$6ØœÔ*Ô,ØœÔ*Ô,ØœÔ*Ô,ØœÔ*Ô,ñ	%ô %�”Ô!ð #'¤(Ô"4ˆDŒHÔØ !ˆDŒHÔØ!"ˆDŒHÔÐÐøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ƒC%C* Ã*!D)	r/   r0   r1   rŒ   rb  ri  rk  rm  rW  rt  s   @r)   rY  rY  ‰]  st   ø€ € € € € ðð ð ð ð ðð ð ð8ð ð ð6ð ð ð*ð ð ð ð ð ð r*   rY  c                óø  — 	 t          j        t           j        j        ¦  «        | _        d| _        t          j        dd¦  «        | _        t          ¦   «         | _        g | j        t          <   t          | ¦  «        }t          j        t          j        t          j        |¦  «        ¦  «        ||j        ¦  «         | j        t                   s	d| _        dS dS # t          $ r t           rt#          ¦   «          ‚ w xY w)a#  
    Create the "items" list of the path dictionary
    * either create or empty the path dictionary
    * reset the end point of the path
    * reset count of consecutive lines
    * invoke fz_walk_path(), which create the single items
    * if no items detected, empty path dict again
    r   N)r�   rx  ry  rP  r$  r2  r'  r5   rü  rý  rY  Úfz_walk_pathÚFzPathÚll_fz_keep_pathrÌ   rg   r  rv   )r  rR  r
   Úwalkers       r)   rO  rO  ü]  sÝ   € ðÝ”|¥U¤\Ô%@ÑAÔAˆŒØˆŒÝœ q¨!Ñ,Ô,ˆŒÝ‘v”vˆŒØ')ˆŒ•mÑ$õ ˜‘”ˆõ 	Ô�EœL­Ô)>¸tÑ)DÔ)DÑEÔEÀvÈvÔO`ÑaÔaÐaàŒ|�]Ô+ð 	 ØˆCŒLˆLˆLð	 ð 	 øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚CC Ã!C9c	                óN  — 	 t          |t          j        ¦  «        sJ ‚t          j        t          |j        |j        z  |j        |j	        z  z
  ¦  «        ¦  «        | _
        t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        t"          <   || j        d<   t%          ||¦  «        | j        d<   | j
        |j        z  | j        t(          <   |j        |j        |j        f| j        d<   t1          |j        ¦  «        | j        d<   d| j        vr
d| j        d<   |j        rÄt          j        d¦  «        }	t          j        |	d	¦  «         t;          |j        ¦  «        D ]I}
t          j        |j        |
¦  «        }t          j        |	tA          | j
        |z  ¦  «        › d
�¦  «         ŒJt          j        |	dtA          | j
        |j!        z  ¦  «        › �¦  «         |	| j        d<   n
d| j        d<   tE          | j#        ¦  «        | j        tH          <   | j%        | j        d<   | j&        | j        d<   | j'        r| j(        | j        d<   tS          | ¦  «         | xj&        dz  c_&        d S # tT          $ r tV          rtY          ¦   «          ‚ w xY w)Nr�  r&  r  r$  r%  r#  Fr'  z[ r³   z] rn  r  r4  r-  r   r   )-r>   r�   r7  rU  rV  rý  r!   r  rÜ
  rË  Ú
pathfactorr‚  rî  Útrace_device_STROKE_PATHrN  rO  rü  r  rG  r2  rÂ  Ú	start_capÚdash_capÚend_capr~  ÚlinejoinÚdash_lenrî  r1  r\  Úfloats_getitemÚ	dash_listr¶   Ú
dash_phaserw  rP  rQ  r  r-  rf  r=  r  rg   r  rv   )r  rR  r
   rw  rî  rë  r  rì  r	  rY  r®   r¸   s               r)   Újm_lineart_stroke_pathr~   ^  sŠ  € ð.Ý˜3¥¤Ñ0Ô0Ð0Ð0Ð0Ýœ¥3 s¤u¨s¬u¡}°s´u¸s¼u±}Ñ'DÑ#EÔ#EÑFÔFˆŒÝ”. #Ñ&Ô&ˆŒÝ0ˆŒå˜˜c 4Ñ(Ô(Ð(ØŒ<ÐØˆFØ&)ˆŒ•lÑ#Ø*/ˆŒÐ&Ñ'Ý!1°:¸uÑ!EÔ!EˆŒ�gÑØ'*¤~¸Ô8HÑ'HˆŒ•mÑ$àÔ Ø”Ø”ð$ˆŒ�iÑ õ
 %*¨&¬/Ñ$:Ô$:ˆŒ�jÑ!Ø˜cœlÐ*Ð*à(-ˆCŒL˜Ñ%ð Œ?ð 	-ÝÔ&¨Ñ,Ô,ˆDÝÔ" D¨$Ñ/Ô/Ð/Ý˜FœOÑ,Ô,ð Wð W�õ Ô,¨fÔ.>ÀÑBÔB�ÝÔ&¨µ¸3¼>ÈEÑ;QÑ1RÔ1RÐ.UÐ.UÐ.UÑVÔVÐVÐVÝÔ" DÐ*^­y¸¼È&ÔJ[Ñ9[Ñ/\Ô/\Ð*^Ð*^Ñ_Ô_Ð_Ø&*ˆCŒL˜(Ñ#Ð#à&,ˆCŒL˜(Ñ#Ý&5°c´lÑ&CÔ&CˆŒ•lÑ#Ø #¤ˆŒ�WÑØ!$¤ˆŒ�gÑØŒ9ð 	/Ø%(¤YˆCŒL˜'Ñ"Ý˜ÑÔÐØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚BJ Â G!J Ê!J$c                óÊ  — | j         sd S t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        t          <   t          |¦  «        | j        d<   d| j        vr
d| j        d<   t          t          | ¦  «        ¦  «        | j        d<   | j        | j        d<   | j        | j        d<   t          | ¦  «         | xj        dz  c_        d S )	Nr  rp  r#  Frq  r   r4  r   )rf  r�   r‚  rî  Útrace_device_CLIP_PATHrN  rO  rü  r  rø   rw  Úcompute_scissorr=  r  r  )r  rR  r
   rp  rî  rq  s         r)   Újm_lineart_clip_pathr‚  S^  sØ   € ØŒ9ð ØˆÝŒn˜SÑ!Ô!€C„GÝ*€C„MÝ�C˜˜dÑ#Ô#Ð#Ø
„|ÐØˆØ"(€C„L•,ÑÝ $ X¡¤€C„L�*ÑØ˜#œ,Ð&Ð&à$)ˆŒ�[Ñ!å-­o¸cÑ.BÔ.BÑCÔC€C„L�ÑØœI€C„L�ÑØœN€C„L�ÑÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                ó¦  — | j         sd S t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        d<   d | j        d<   d| j        vr
d| j        d<   t          t          | ¦  «        ¦  «        | j        d<   | j
        | j        d<   | j        | j        d<   t          | ¦  «         | xj
        d	z  c_
        d S )
Nr  r  rp  r#  Frq  r   r4  r   )rf  r�   r‚  rî  Útrace_device_CLIP_STROKE_PATHrN  rO  rü  rw  r�  r=  r  r  )r  rR  r
   rw  rî  rq  s         r)   Újm_lineart_clip_stroke_pathr…  h^  sÒ   € ØŒ9ð ØˆÝŒn˜SÑ!Ô!€C„GÝ1€C„MÝ�C˜˜dÑ#Ô#Ð#Ø
„|ÐØˆØ#)€C„L�Ñ Ø#€C„L�ÑØ˜#œ,Ð&Ð&à$)ˆŒ�[Ñ!Ý-­o¸cÑ.BÔ.BÑCÔC€C„L�ÑØœI€C„L�ÑØœN€C„L�ÑÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S r\  ©rf  r�  r=  )r  rR  r   rw  rî  rq  s         r)   Újm_lineart_clip_stroke_textrˆ  |^  ó2   € ØŒ9ð ØˆÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S r\  r‡  )r  rR  r   rî  rq  s        r)   Újm_lineart_clip_textr‹  ƒ^  r‰  r*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S r\  r‡  )r  rR  rF  rî  rq  s        r)   Újm_lineart_clip_image_maskr�  Š^  r‰  r*   c                óŽ   — | j         r| j        sd S t          | j        ¦  «        }|dk     rd S | j        d= | xj        dz  c_        d S )Nr   rA  )rf  rI  r7   r=  )r  rR  r  s      r)   Újm_lineart_pop_clipr�  ‘^  sT   € ØŒ9ð ˜CœLð ØˆÝˆsŒ|ÑÔ€DØˆa‚x€xØˆØŒ�RÐØ€I„I��N€I„I€I€Ir*   c                ó*   — |r	|| _         d S d| _         d S ©Nr\   ©r  )r  rR  r   s      r)   Újm_lineart_begin_layerr“  ›^  s    € Øð ØˆŒˆˆàˆŒˆˆr*   c                ó   — d| _         d S r‘  r’  rJ  s     r)   Újm_lineart_end_layerr•  ¢^  s   € Ø€C„N€N€Nr*   c           	     óü   — | j         sd S dt          |¦  «        t          |¦  «        t          |¦  «        t          j        |¦  «        || j        | j        dœ| _        t          | ¦  «         | xj        dz  c_        d S )NrÒ  )rÈ   r  ÚisolatedÚknockoutr“  rf  r   r4  r   )	rf  rw  rø   r�   Úfz_blendmode_namer=  r  rü  r  )r  rR  r?  rï  r—  r˜  r“  rì  s           r)   Újm_lineart_begin_grouprš  ¦^  s}   € àŒ9ð ØˆàÝ# DÑ)Ô)Ý˜X™œÝ˜X™œÝÔ0°Ñ;Ô;ØØ”YØ”^ð	ð 	€C„Lõ �CÑÔÐØ€I„I��N€I„I€I€Ir*   c                ó8   — | j         sd S | xj        dz  c_        d S r\  )rf  r=  rJ  s     r)   Újm_lineart_end_grouprœ  ¸^  s$   € àŒ9ð ØˆØ€I„I��N€I„I€I€Ir*   c	           
     ó\   — t          | |d||||| j        ¦  «         | xj        dz  c_        d S r\  rV  )	r  rR  r   rw  rî  rë  r  rì  r	  s	            r)   Újm_lineart_stroke_textrž  ¿^  s3   € Ý�#�t˜Q  Z°¸¸s¼yÑIÔIÐIØ€I„I��N€I„I€I€Ir*   c	                ó>   — |j         | _         t          | |¦  «         d S r,   )r2  Újm_increase_seqno)	r  rR  r
   rw  ré  rë  r  rì  r	  s	            r)   Újm_dev_linewidthr¡  Ä^  s"   € ØÔ$€C„MÝ�s˜CÑ Ô Ð Ð Ð r*   c                óp   — 	 | xj         dz  c_         d S # t          $ r t          rt          ¦   «          ‚ w xY wr\  )r-  rg   r  rv   )r  rR  Úvargss      r)   r   r   É^  sI   € ðØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚ ”!5r  r  c                óx   — t          | ¦  «        } t          |¦  «        }t          t          | |¦  «        ¦  «        S )am  Compute matrix which maps line from p1 to p2 to the x-axis, such that it
    maintains its length and p1 * matrix = Point(0, 0).

    Args:
        p1, p2: point_like
    Returns:
        Matrix which maps p1 to Point(0, 0) and p2 to a point on the x axis at
        the same distance to Point(0,0). Will always combine a rotation and a
        transformation.
    )rú  r…  rù  )r  r  s     r)   r  r  Ñ^  s2   € õ 
ˆr‰Œ€BÝ	ˆr‰Œ€BÝ•/ " bÑ)Ô)Ñ*Ô*Ð*r*   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚJM_image_reporter_Filterc                óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S r,   rn  rp  s    €r)   rŒ   z!JM_image_reporter_Filter.__init__â^  s1   ø€ Ý‰Œ×ÒÑÔÐØ×%Ò%Ñ'Ô'Ð'Ð'Ð'r*   c                ó˜   — t          |t          j        ¦  «        sJ ‚t          | t          j        |¦  «        ||¦  «         t
          rdS d S r‡   )r>   r�   r7  r^  r‚  rœ   )r(   rR  rî  r   rF  s        r)   rr  z%JM_image_reporter_Filter.image_filteræ^  sQ   € Ý˜#�uœÑ/Ô/Ð/Ð/Ð/Ý˜�eœn¨SÑ1Ô1°4¸Ñ?Ô?Ð?Ýð 	ð �1ð	ð 	r*   rs  rt  s   @r)   r¦  r¦  á^  sG   ø€ € € € € ð(ð (ð (ð (ð (ðð ð ð ð ð ð r*   r¦  c                  óF   ‡ — e Zd Zˆ fd„ZeZeZeZ	e
ZeZeZeZeZeZeZˆ xZS )r   c                ó  •— t          ¦   «                              ¦   «          || _        || _        d| _        |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |  	                    ¦   «          |  
                    ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          d S r‘  )rÇ   rŒ   r+  r[  r  Úuse_virtual_fill_pathÚuse_virtual_stroke_pathÚuse_virtual_fill_textÚuse_virtual_stroke_textÚuse_virtual_ignore_textÚuse_virtual_fill_shadeÚuse_virtual_fill_imageÚuse_virtual_fill_image_maskÚuse_virtual_begin_layerÚuse_virtual_end_layer)r(   r+  r[  rO  s      €r)   rŒ   z"JM_new_bbox_device_Device.__init__ð^  sè   ø€ Ý‰Œ×ÒÑÔÐØˆŒØˆŒØˆŒØ×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×$Ò$Ñ&Ô&Ð&Ø×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$r*   )r/   r0   r1   rŒ   r“  Úbegin_layerr•  Ú	end_layerr  Ú	fill_pathr"  Ústroke_pathr  Ú	fill_textr  Ústroke_textr   Úignore_textr  Ú
fill_shader
  Ú
fill_imager  Úfill_image_maskrW  rt  s   @r)   r   r   ï^  s`   ø€ € € € € ð%ð %ð %ð %ð %ð" )€KØ$€Ià!€IØ%€KØ!€IØ%€KØ%€KØ#€JØ#€JØ-€O€O€O€O€Or*   r   c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r
  c                óö   •— t          ¦   «                              ¦   «          || _        |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          d S r,   )rÇ   rŒ   r_
  Úuse_virtual_writeÚuse_virtual_seekÚuse_virtual_tellÚuse_virtual_truncate)r(   r_
  rO  s     €r)   rŒ   z%JM_new_output_fileptr_Output.__init___  sn   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ×ÒÑ Ô Ð Ø×ÒÑÔÐØ×ÒÑÔÐØ×!Ò!Ñ#Ô#Ð#Ð#Ð#r*   c                ó8   — | j                              ||¦  «        S r,   )r_
  r 	  )r(   rR  r=  Úwhences       r)   r 	  z!JM_new_output_fileptr_Output.seek_  s   € ØŒx�}Š}˜f fÑ-Ô-Ð-r*   c                ó8   — | j                              ¦   «         }|S r,   )r_
  Útell)r(   rR  rG   s      r)   rÈ  z!JM_new_output_fileptr_Output.tell_  s   € ØŒh�mŠm‰oŒoˆØˆ
r*   c                ó4   — | j                              ¦   «         S r,   )r_
  Útruncate)r(   rR  s     r)   rÊ  z%JM_new_output_fileptr_Output.truncate_  s   € ØŒx× Ò Ñ"Ô"Ð"r*   c                ó`   — t          j        ||¦  «        }| j                             |¦  «        S r,   )r�   Úraw_to_python_bytesr_
  r   )r(   rR  Údata_rawÚdata_lengthrˆ  s        r)   r   z"JM_new_output_fileptr_Output.write!_  s(   € ÝÔ(¨°;Ñ?Ô?ˆØŒx�~Š~˜dÑ#Ô#Ð#r*   )	r/   r0   r1   rŒ   r 	  rÈ  rÊ  r   rW  rt  s   @r)   r
  r
  _  st   ø€ € € € € ð$ð $ð $ð $ð $ð.ð .ð .ðð ð ð#ð #ð #ð$ð $ð $ð $ð $ð $ð $r*   r
  c                ó>  — | j         €t          ¦   «         | _         t          | j         ¦  «        }|dk    r:| j         |dz
           }t          |¦  «        }t	          j        || j        ¦  «        }n| j        }| j                              t          |¦  «        ¦  «         |S )zs
    Every scissor of a clip is a sub rectangle of the preceding clip scissor
    if the clip level is larger.
    Nr   r   )	rI  r´   r7   r  r�   rî  rP  rk   rw  )r  Únum_scissorsÚlast_scissorrq  s       r)   r�  r�  &_  sŽ   € ð
 „|ÐÝ‘v”vˆŒÝ�s”|Ñ$Ô$€LØ�aÒÐØ”| L°¡NÔ3ˆÝ! ,Ñ/Ô/ˆÝÔ)¨'°3´<Ñ@Ô@ˆˆà”,ˆØ„L×Ò�¨Ñ0Ô0Ñ1Ô1Ð1Ø€Nr*   c                  ój   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZeZeZeZeZeZeZe Z!e"Z#ˆ xZ$S )ra  z?
    LINEART device for Python method Page.get_cdrawings()
    c                ó   •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j	         | j
         | j         |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          || _        d| _        d| _        || _        || _        d | _        d| _        d | _        d| _        t;          j        ¦   «         | _        t;          j        ¦   «         | _         t;          j        ¦   «         | _!        t;          j"        ¦   «         | _#        t;          j"        ¦   «         | _$        d| _%        t;          j&        ¦   «         | _        d| _'        d| _(        d| _)        d S ©Nr   r\   )*rÇ   rŒ   r«  r¬  Úuse_virtual_clip_pathÚuse_virtual_clip_image_maskÚuse_virtual_clip_stroke_pathÚuse_virtual_clip_stroke_textÚuse_virtual_clip_textr­  r®  r¯  r°  r±  r²  Úuse_virtual_pop_clipÚuse_virtual_begin_groupÚuse_virtual_end_groupr³  r´  r(  r-  r=  rf  re  rI  r  rP  r2  r�   r‚  rb  rî  rb  r2  r'  ra  r`  rx  rt  r$  rN  )r(   r(  rf  re  rO  s       €r)   rŒ   z%JM_new_lineart_device_Device.__init__=_  s÷  ø€ å‰Œ×ÒÑÔÐð 	×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×(Ò(Ñ*Ô*Ð*Ø×)Ò)Ñ+Ô+Ð+Ø×)Ò)Ñ+Ô+Ð+Ø×"Ò"Ñ$Ô$Ð$àÔ"Ð"ØÔ$Ð$ØÔ$Ð$à×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×!Ò!Ñ#Ô#Ð#à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$àˆŒØˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒØˆŒØˆŒàˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝœ™œˆŒÝœ-™/œ/ˆŒØˆŒÝœ™œˆŒØˆŒØˆŒØˆŒˆˆr*   )%r/   r0   r1   rµ  rŒ   rR  r·  r~  r¸  r�  Úclip_image_maskr‚  Ú	clip_pathr…  Úclip_stroke_pathr‹  Ú	clip_textrˆ  Úclip_stroke_textr   r¹  rº  r»  r¼  r½  r¾  r�  Úpop_cliprš  Úbegin_grouprœ  Ú	end_groupr“  rµ  r•  r¶  rW  rt  s   @r)   ra  ra  8_  s•   ø€ € € € € ðð ð1ð 1ð 1ð 1ð 1ðj /€IØ0€KØ4€OØ.€IØ5ÐØ.€IØ5Ðà+€IØ+€KØ+€Kà+€JØ+€JØ+€Oà-€Hà0€KØ.€Ià0€KØ.€I€I€I€I€Ir*   ra  c                  óJ   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZˆ xZS )r   zB
    Trace TEXT device for Python method Page.get_texttrace()
    c                ó®  •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |  	                    ¦   «          |  
                    ¦   «          |                      ¦   «          || _        d| _        d| _        d| _        d | _        d| _        t#          ¦   «         | _        t'          ¦   «         | _        d| _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        d| _        d| _         d| _!        d| _"        d S rÔ  )#rÇ   rŒ   r«  r¬  r­  r®  r¯  r°  r±  r²  r³  r´  r(  r-  r=  rf  re  r5   rü  r´   rI  r2  r�   r‚  rb  rî  rb  r2  r'  rx  rP  rt  r$  rN  r  )r(   r(  rO  s     €r)   rŒ   z JM_new_texttrace_device.__init__�_  s{  ø€ Ý‰Œ×ÒÑÔÐØ×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×$Ò$Ñ&Ô&Ð&Ø×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$àˆŒàˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒ
å™œˆŒÝ™œˆŒØˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝœ™œˆŒÝœ™œˆŒØˆŒØˆŒØˆŒØˆŒˆˆr*   )r/   r0   r1   rµ  rŒ   r   r·  r¡  r¸  rT  r¹  rž  rº  rW  r»  r¼  r½  r¾  r“  rµ  r•  r¶  rW  rt  s   @r)   r   r   ‹_  sk   ø€ € € € € ðð ð"ð "ð "ð "ð "ðH "€IØ"€KØ$€IØ(€KØ(€KØ"€JØ"€JØ'€Oà(€KØ$€I€I€I€I€Ir*   r   rm
  r®   c                ó  — |                       ¦   «         }dd l}|                     d¦  «        }|                     d|› d�¦  «        }|                     d¦  «        }d}d|› d�}|d	k    r|}	n|d
k    r|}	n|dk    r|}	n|dk    r|}	n|}	|	S )Nr   a^  
            <!DOCTYPE html>
            <html>
            <head>
            <style>
            body{background-color:gray}
            div{position:relative;background-color:white;margin:1em auto}
            p{position:absolute;margin:0}
            img{position:absolute}
            </style>
            </head>
            <body>
            z?
            <?xml version="1.0"?>
            <document name="z">
            aÏ  
            <?xml version="1.0"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <style>
            body{background-color:gray}
            div{background-color:white;margin:1em;padding:1em}
            p{white-space:pre-wrap}
            </style>
            </head>
            <body>
            r\   z{"document": "z", "pages": [
r2  r‡  rÅ  Úxhtml)râ  ÚtextwrapÚdedent)
r®   rf   rO  ré  r2  rÅ  rè  r   r‡  r.  s
             r)   ÚConversionHeaderrë  Á_  s×   € Ø	�Š‰	Œ	€AØ€O€O€OØ�?Š?ð ñ ô €Dð �/Š/ð à%ðð ð ñ ô €Cð
 �OŠOð ñ ô €Eð €DØ6˜XÐ6Ð6Ð6€DØˆF‚{€{ØˆˆØ	
ˆfŠˆØˆˆØ	
ˆeŠˆØˆˆØ	
ˆgŠˆØˆˆàˆà€Hr*   c                óŽ   — |                       ¦   «         }d}d}d}d}|}|dk    r|}n|dk    r|}n|dk    r|}n|dk    r|}n|}|S )	Nr\   z]
}z</body>
</html>
z</document>
r2  r‡  rÅ  rè  )râ  )r®   rO  r   r‡  r2  rÅ  rè  r.  s           r)   ÚConversionTrailerrí  õ_  sr   € Ø	�Š‰	Œ	€AØ€DØ€DØ€DØ
€CØ€EØˆF‚{€{ØˆˆØ	
ˆfŠˆØˆˆØ	
ˆeŠˆØˆˆØ	
ˆgŠˆØˆˆàˆà€Hr*   rÆ  c                óž   — t          | ¦  «         | j        j        st          d¦  «        ‚| j        }|dk    r|                      d¦  «         |S )z�Prepare for annotation insertion on the page.

    Returns:
        Old page rotation value. Temporarily sets rotation to 0 when required.
    rå  r   )rv  rû   rç  rÃ   r_  rÅ  )rÖ   r„  s     r)   r‚  r‚  
`  sY   € õ �ÑÔÐØŒ;Ôð &Ý˜Ñ%Ô%Ð%Ø”=€LØ�qÒÐØ×Ò˜!ÑÔÐØÐr*   rß   ú'Annot'rã  c                ó¬   — t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚| |_        || j        t          |¦  «        <   d|_        dS )zuClean up after annotation insertion.

    Set ownership flag and store annotation in page annotation dictionary.
    TN)r>   rÒ   ró   rû   rG  rH  r  )rÖ   rß   s     r)   rƒ  rƒ  `  sU   € õ �t�TÑ"Ô"Ð"Ð"Ð"Ý�u�eÑ$Ô$Ð$Ð$Ð$Ø€E„LØ"'€DÔ•R˜‘Y”YÑØ€E„M€M€Mr*   c                ó–  — t          | t          ¦  «        sJ ‚| dk    s| dk    s| dk    rt          d¦  «        S | t          d¦  «        k    s&| t          d¦  «        k    s| t          d¦  «        k    rt          d¦  «        S | t          d¦  «        k    r5| t          d	¦  «        k    r"| t          d¦  «        z
  t          d
¦  «        z   S | S )NrH  i(   i)   r³   úr%   ú	r  ÚZr!   )r>   r4   rÐ
  r¦  s    r)   Úcanonrõ  &`  s±   € Ý�a�ÑÔÐÐÐð 	ˆD‚y€y�A˜’K�K 1¨¢; ;Ý�3‰xŒxˆØ�C�‰IŒI‚~€~˜�c $™iœiš˜¨1µ°D±	´	ª>¨>Ý�3‰xŒxˆØ�C�‰HŒH‚}€}˜�c #™hœhš˜Ø•3�s‘8”8‰|�c #™hœhÑ&Ð&Ø€Hr*   c                ó„   — t          | t          ¦  «        sJ ‚t          j        | ¦  «        \  }}t	          |¦  «        }||fS r,   )r>   rá  r�   r‰  rõ  )r�  rE   rË  s      r)   Úchartocanonr÷  3`  s@   € Ý�a�ÑÔÐÐÐÝÔ˜qÑ!Ô!�D€A€qÝˆa‰Œ€AØˆaˆ4€Kr*   c                ó  — t          j        | t          d¦  «        ¦  «        }t          j        t          j        |t          d¦  «        ¦  «        t          d¦  «        ¦  «        r2t	          t          j        |t          d¦  «        ¦  «        |¦  «        sdS t          j        | t          d¦  «        ¦  «        }|j        snJt          j        |¦  «        rt	          ||¦  «        S t          t          j        |d¦  «        ||¦  «        sdS dS )Nr  rk	  rÏ  r  r   r  r   )	r�   r  r  r  Ústring_in_names_listrÌ   rp
  Údest_is_valid_pager¬  )r±  rÜ  Úpage_object_numsÚ
names_listr²  s        r)   Údest_is_validrý  :`  s  € ÝÔ˜A�x¨™}œ}Ñ-Ô-€AåÔÝÔ" A¥x°¡}¤}Ñ5Ô5Ý˜Ñ Ô ñô ð
õ
 )ÝÔ" A¥x°¡}¤}Ñ5Ô5Øñô ð
ð ˆqåÔ˜A�x¨Ñ/Ô/Ñ0Ô0€AØŒ<ð 	ØÝ	Ô	˜aÑ	 Ô	 ð Ý# Q¨
Ñ3Ô3Ð3ÝÝÔ  AÑ&Ô&ØØñô ð ð
 ˆqØˆ1r*   c                ó€   — t          j        | ¦  «        }|dk    rdS t          |¦  «        D ]}||         |k    r dS ŒdS r)  )r�   r  r\  )r  rû  rÑ  Únumr®   s        r)   rú  rú  V`  sX   € Ý
Ô
˜3Ñ
Ô
€Cà
ˆa‚x€xØˆqÝ�9ÑÔð ð ˆØ˜AÔ #Ò%Ð%Ø�1�1ð &àˆ1r*   c                ó¼   — t          | t          ¦  «        sJ ‚t          t          | ¦  «        ¦  «        D ]'}t	          | |d …         |¦  «        }|�||z  }||fc S Œ(dS )Nrø	  )r>   rá  r\  r7   Úmatch_string)r�  r  r®   r¥  s       r)   r<  r<  a`  sq   € Ý�a�ÑÔÐÐÐÝ•3�q‘6”6‰]Œ]ð ð ˆÝ˜1˜Q˜R˜Rœ5 &Ñ)Ô)ˆØˆ?Ø�1‰HˆCØ�c�6ˆMˆMˆMð ð ˆ:r*   c                 ó’  — ddl } t          t          | j        dz  ¦  «        ¦  «                             dd¦  «        }t          t          | j        dz  ¦  «        dz  ¦  «                             dd¦  «        }|› d|› d�} | j        d | j        ¦   «         ¦  «        }| j        dk    r	|d	|z   z  }n| j        dk     r	|d
|z   z  }n	 |S )z'
    "Now" timestamp in PDF Format
    r   Ni  r   rz   rú  rü   zD:%Y%m%d%H%M%Sr  rT	  )Útimerá  rý  ÚaltzoneÚrjustÚstrftimeÚ	localtime)r  r!   rÜ
  ÚtzÚtstamps        r)   rï  rï  k`  sÛ   € ð €K€K€KÝ�C�” Ñ$Ñ%Ô%Ñ&Ô&×,Ò,¨Q°Ñ4Ô4€AÝ�S�” Ñ#Ñ$Ô$ rÑ)Ñ+Ô+×1Ò1°!°SÑ9Ô9€AØˆˆ�ˆˆˆ€BØˆTŒ]Ð+¨^¨T¬^Ñ-=Ô-=Ñ>Ô>€FØ„|�aÒÐØ�#˜‘(ÑˆˆØ	Œ˜Ò	Ð	Ø�#˜‘(ÑˆˆàØ€Mr*   c                  ó   — e Zd ZdZd„ ZdS )ÚElementPositionzDConvert a dictionary with element position information to an object.c                ó   — d S r,   r-   r.   s    r)   rŒ   zElementPosition.__init__€`  r™  r*   NrÛ  r-   r*   r)   r  r  }`  s)   € € € € € ØNÐNðð ð ð ð r*   r  c                 ó   — t          ¦   «         S r,   )r  r-   r*   r)   Úmake_story_elposr  „`  s   € ÝÑÔÐr*   r¤  rë  r  c                ó8  — |€| j         }t          |¦  «        }|€|j        }|€|j        }|j        |_        |j        |_        |j        s|j        rg S |  	                    dd|¬¦  «        d         }g }|D ]j}t          |d         ¦  «        }|j        s|j        rŒ&|d         D ];}t          |d         ¦  «        }|j        s|j        rŒ&| 
                    |¦  «         Œ<Œk|g k    r|S |                     d„ ¬	¦  «         |                     d¦  «        }	|	j        |j        z
  d
|	j        z  k    rEt          |j        |	j        |	j        ¦  «        }
|
j        s|
j        s|                     d|
¦  «         n|                     d|	¦  «         |g k    r|S |                     ¦   «         }|j        |j        z
  d
|j        z  k    rDt          |j        |j        |j        ¦  «        }
|
j        s|
j        s| 
                    |
¦  «         n| 
                    |¦  «         |S )aÃ  Return rectangles of text lines between two points.

    Notes:
        The default of 'start' is top-left of 'clip'. The default of 'stop'
        is bottom-reight of 'clip'.

    Args:
        start: start point_like
        stop: end point_like, must be 'below' start
        clip: consider this rect_like only, default is page rectangle
    Returns:
        List of line bbox intersections with the area established by the
        parameters.
    Nr5   r   )rÎ  r  r_	  r?  rÿ  c                ó   — | j         S r,   )r  )r?  s    r)   r¸	  z)get_highlight_selection.<locals>.<lambda>·`  s   €  ¤€ r*   rÚ	  rÃ  )r  r4  rû  rü  r5  r  r  rd	  re	  r  rk   rã  r­  rà  r4  Úinsert)rÖ   r¤  rë  r  r_	  rÿ  rÜ
  r?  ro   Úbboxfr.  Úbboxls               r)   r“  r“  ˆ`  sH  € ð  €|ØŒyˆÝ�‰:Œ:€DØ€}Ø”ˆØ€|ØŒwˆØŒg€D„GØŒf€D„GØ„}ð ˜Ô(ð Øˆ	ð �]Š]Ø�a˜dð ñ ô àô€Fð €EØð ð ˆÝ�A�f”I‰ŒˆØÔð 	˜tœ}ð 	ØØ�g”Jð 	ð 	ˆDÝ˜˜VœÑ%Ô%ˆDØÔð  4¤=ð ØØ�LŠL˜ÑÔÐÐð		ð �‚{€{Øˆà	‡J‚JÐ'Ð'€JÑ(Ô(Ð(ð �IŠI�a‰LŒL€EØ„x�%”'Ñ˜S 5¤<Ñ/Ò/Ð/Ý�”˜%œ( E¤HÑ-Ô-ˆØ”
ð 	˜aœmð 	Ø�LŠL˜˜AÑÔÐøà�Š�Q˜ÑÔÐà�‚{€{Øˆð �IŠI‰KŒK€EØ„v�”Ñ˜C %¤,Ñ.Ò.Ð.Ý�”˜4œ6 5¤8Ñ,Ô,ˆØ”
ð 	˜aœmð 	Ø�LŠL˜‰OŒOˆOøà�Š�UÑÔÐà€Lr*   c                óz   — ddl }	 t          |                     | ¦  «        ¦  «        }n# t          $ r d}Y nw xY w|S )z+Convenience function accessing unicodedata.r   Nr
  )ÚunicodedatarÐ
  Úlookuprg   )r   r  r#
  s      r)   rö
  rö
  Ñ`  sY   € àÐÐÐðÝ�+×$Ò$ TÑ*Ô*Ñ+Ô+ˆˆøÝð ð ð Øˆˆˆðøøøà€Jó   †") ©8·8c                óŒ   — |j         |j         z
  }|j        |j        z
  }t          j        || j         z  || j        z  z   ¦  «        S r,   ©r4  r5  r�   Úfz_abs©rs  r!   rÜ
  ÚdxÚdys        r)   Úhdistr  Û`  ó=   € Ø	
ŒˆqŒs‰€BØ	
ŒˆqŒs‰€BÝŒ<˜˜SœU™
 R¨#¬%¡ZÑ/Ñ0Ô0Ð0r*   r  r_  Úrowsc                óø  — t          | ¦  «        } | j        s| j        rt          d¦  «        ‚| j        }| j        |z  }| j        |z  }|d|df}d|d|f}t          ||j        |z   |j        |z   ¦  «        }|g}	t          d|¦  «        D ]}
||z  }|	 
                    |¦  «         Œ|	g}t          d|¦  «        D ]A}
||
dz
           }	g }|	D ]}| 
                    ||z   ¦  «         Œ| 
                    |¦  «         ŒB|S )a†  Return a list of (rows x cols) equal sized rectangles.

    Notes:
        A utility to fill a given area with table cells of equal size.
    Args:
        rect: rect_like to use as the table area
        rows: number of rows
        cols: number of columns
    Returns:
        A list with <rows> items, where each item is a list of <cols>
        PyMuPDF Rect objects of equal sizes.
    rM  r   r   )r4  rd	  re	  rÃ   rû  rà  rl  r4  r5  r\  rk   )r  r_  r   rû  rà  rl  Údelta_hÚdelta_vr.  r  r®   ÚrectsÚnrows                r)   Ú
make_tabler&  á`  s8  € õ �‰:Œ:€DØ„}ð >˜Ô(ð >ÝÐ<Ñ=Ô=Ð=Ø	Œ€BàŒ[˜4Ñ€FØŒJ˜Ñ€EØ�a˜ Ð"€GØ�&˜!˜VÐ$€GåˆR�”˜‘˜rœt f™}Ñ-Ô-€Að ˆ#€CÝ�1�d‰^Œ^ð ð ˆØ	ˆW‰ˆØ�
Š
�1‰Œˆˆð ˆE€EÝ�1�d‰^Œ^ð ð ˆØ�A˜‘EŒlˆØˆØð 	%ð 	%ˆAØ�KŠK˜˜G™Ñ$Ô$Ð$Ð$Ø�Š�TÑÔÐÐà€Lr*   r2  c                ó¬   ‡‡‡— d„ Šd„ Šˆˆˆfd„} |¦   «         \  }}	}
}| � ‰| ¦  «        \  }}	|� ‰|¦  «        \  }
}|�|}|�|}	|�|}
|�|}||	|
|fS )aß  
    Helper for initialising rectangle classes.
    
    2022-09-02: This is quite different from PyMuPDF's util_make_rect(), which
    uses `goto` in ways that don't easily translate to Python.

    Returns (x0, y0, x1, y1) derived from <args>, then override with p0, p1,
    x0, y0, x1, y1 if they are not None.

    Accepts following forms for <args>:
        () returns all zeros.
        (top-left, bottom-right)
        (top-left, x1, y1)
        (x0, y0, bottom-right)
        (x0, y0, x1, y1)
        (rect)

    Where top-left and bottom-right are (x, y) or something with .x, .y
    members; rect is something with .x0, .y0, .x1, and .y1 members.

    2023-11-18: we now override with p0, p1, x0, y0, x1, y1 if not None.
    c                óø   — t          | t          t          f¦  «        r#t          | ¦  «        dk    r| d         | d         fS t          | t          t
          j        t
          j        f¦  «        r| j        | j	        fS dS )Nr   r   r   rø	  )
r>   r´   rµ   r7   rú  r�   r2  rÇ  r4  r5  )rð  s    r)   Úget_xyzutil_make_rect.<locals>.get_xy#a  sh   € Ý�s�T¥5˜MÑ*Ô*ð 	"­s°C©y¬y¸Aª~¨~Ø�q”6˜3˜qœ6�>Ð!Ý�s�U¥E¤Mµ5´>ÐBÑCÔCð 	 Ø”5˜#œ%�<ÐØˆzr*   c                óP  — t          | t          ¦  «        r| S t          | t          ¦  «        r| j        | j        fS t          | t
          t          t          j        t          j	        f¦  «        r| j
        | j        | j        | j        fS t          | t          t          f¦  «        s| f} | S r,   )r>   rµ   rú  r4  r5  r4  rÄ  r�   rx  Úfz_rectr  r  r  r  r´   rÓ  s    r)   Ú
make_tuplez"util_make_rect.<locals>.make_tuple)a  s�   € Ý�q�%Ñ Ô ð 	ØˆHÝ�q�%Ñ Ô ð 	*Ø”3˜œ�8ˆOÝ˜�T¥5­%¬,½¼ÐFÑGÔGð 	*Ø”4˜œ˜qœt Q¤TÐ)Ð)Ý˜1�t¥U˜mÑ,Ô,ð 	Ø�ˆAØˆr*   c                 óV  •— t          ‰¦  «        dk    rdS t          ‰¦  «        dk    �r ‰d         } t          | t          t          f¦  «        r6t          | ¦  «        dk    r#| \  }}g |¢|¢R }t          |¦  «        dk    sJ ‚|S t          | t          t          f¦  «        rZt          | ¦  «        dk    rG| \  }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }g |¢|¢|¢R }t          |¦  «        dk    sJ ‚|S  ‰| ¦  «        }t          |¦  «        dk    sJ d| ›d|›�¦   «         ‚|S t          ‰¦  «        dk    r: ‰‰d         ¦  «         ‰‰d         ¦  «        z   }t          |¦  «        dk    sJ ‚|S t          ‰¦  «        dk    r] ‰‰d         ¦  «        \  }}||fd	k    r||‰d         ‰d         fS  ‰‰d         ¦  «        \  }	}
|	|
fd	k    r‰d         ‰d         |	|
fS n1t          ‰¦  «        dk    r‰d         ‰d         ‰d         ‰d         fS t	          d
‰› �¦  «        ‚)Nr   r�  r   r   rZ  r   zarg=z ret=rø	  r�  )r7   r>   r´   rµ   rg   )rð  r  r  rG   r!   rÜ
  rË  r  r  r  r  r  r)  r,  s              €€€r)   Úhandle_argsz#util_make_rect.<locals>.handle_args3a  sb  ø€ Ýˆt‰9Œ9˜Š>ˆ>Ø�:Ý�‰YŒY˜!Š^‰^Ø�q”'ˆCÝ˜3¥¥u Ñ.Ô.ð µ3¸±9´9À²>°>Ø‘��BØ�r�h˜B�h�h�Ý˜3‘x”x 1’}�}�}�}Ø�
Ý˜3¥¥u Ñ.Ô.ð µ3¸±9´9À²>°>Ø‘��1�aØ�J˜q‘M”M�Ø�J˜q‘M”M�Ø�J˜q‘M”M�Ø �q�j˜1�j˜q�j�j�Ý˜3‘x”x 1’}�}�}�}Ø�
Ø�*˜cÑ"Ô"ˆCÝ�s‘8”8˜q’=�=�=Ð"2 SÐ"2Ð"2¨CÐ"2Ð"2‘=”=�=ØˆJÝ�‰YŒY˜!Š^ˆ^Ø�&˜$˜qœ'Ñ"Ô" V V¨T°!¬WÑ%5Ô%5Ñ5ˆCÝ�s‘8”8˜q’=�=�=�=ØˆJÝ�‰YŒY˜!Š^ˆ^Ø�V˜T !œWÑ%Ô%‰FˆB�Ø�Bˆx˜<Ò'Ð'Ø˜2˜t Aœw¨¨Q¬Ð/Ð/Ø�V˜T !œWÑ%Ô%‰FˆB�Ø�Bˆx˜<Ò'Ð'Ø˜A”w  Q¤¨¨RÐ/Ð/ð (å�‰YŒY˜!Š^ˆ^Ø˜”7˜D œG T¨!¤W¨d°1¬gÐ5Ð5ÝÐ5¨tÐ5Ð5Ñ6Ô6Ð6r*   r-   )rŠ  r  r  r  r  r  r  r.  Úret_x0Úret_y0Úret_x1Úret_y1r)  r,  s         `     @@r)   r4  r4  a  sº   øøø€ ð.ð ð ð	ð 	ð 	ð"7ð "7ð "7ð "7ð "7ð "7ð "7ðF &1 [¡]¤]Ñ"€FˆF�F˜FØ	€~¨¨°©¬™˜ Ø	€~¨¨°©¬™˜ Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø�6˜6 6Ð)Ð)r*   c           
     ó    — t          || |||||dœŽ\  }}}	}
d„ } ||d¦  «        } ||d¦  «        } ||	d¦  «        }	 ||
d¦  «        }
|||	|
fS )Nr2  c                óŠ   — |r!t          t          j        | ¦  «        ¦  «        S t          t          j        | ¦  «        ¦  «        S r,   )r4   rU  rÍ  Úfloor)r4  rÍ  s     r)   Úconvertz util_make_irect.<locals>.convertba  s6   € Øð 	&Ý•t”y ‘|”|Ñ$Ô$Ð$å•t”z !‘}”}Ñ%Ô%Ð%r*   FT)r4  )rŠ  r  r  r  r  r  r  r!   rÜ
  rË  r  r6  s               r)   rp  rp  `a  s‰   € Ý $¨2°"¸ÀÀrÈbÐQÐQÐQ�J€A€qˆ!ˆQð&ð &ð &ð
 	ˆ��5ÑÔ€AØˆ��5ÑÔ€AØˆ��4ÑÔ€AØˆ��4ÑÔ€AØˆa��Aˆ:Ðr*   c                ó^   — t          t          j        t          | ¦  «        ¦  «        ¦  «        S r,   )r7  r�   rï  r  rç  s    r)   ry  ry  na  s#   € Ý�EÔ/µÀÑ0EÔ0EÑFÔFÑGÔGÐGr*   c                ó²   — t           rt          j        | |¦  «        S t          t	          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )r'  r   r„  rw  r�   r¸  r  rã  )r  ré  s     r)   r„  r„  ra  sJ   € Ýð 8ÝÔ(¨$°Ñ7Ô7Ð7Ý�5Ô2µ?À4Ñ3HÔ3HÕJ[Ð\bÑJcÔJcÑdÔdÑeÔeÐer*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )rw  r�   rî  r  ©rÕ  rÖ  s     r)   r\  r\  xa  s:   € ÝÝÔ#Ý Ñ#Ô#Ý Ñ#Ô#ñô ñô ð r*   c                ó`   — t          j        t          | ¦  «        t          |¦  «        ¦  «        S r,   )r�   Úfz_is_point_inside_rectrk  r  )r²  r.  s     r)   r,  r,  �a  s-   € ÝÔ(Ý  Ñ#Ô#Ý Ñ"Ô"ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t	          |¦  «        ¦  «        ¦  «        S r,   )rw  r�   rd  r  rk  )r.  r²  s     r)   rX  rX  ‡a  s:   € ÝÝÔ*Ý Ñ"Ô"Ý  Ñ#Ô#ñô ñô ð r*   c                óh   — t          | ¦  «        }t          |¦  «        }t          j        ||¦  «        S r,   )rk  r—  r�   Úfz_is_point_inside_quad)rÌ  rë   r²  r›  s       r)   rö  rö  �a  s/   € Ý˜ÑÔ€AÝ˜ÑÔ€AÝÔ(¨¨AÑ.Ô.Ð.r*   c                óz   — t          t          j        t          | ¦  «        t	          |¦  «        ¦  «        ¦  «        S r,   )r¸  r�   r3  rk  rã  )r9  ré  s     r)   rç  rç  –a  s:   € ÝÝÔ$Ý  Ñ'Ô'Ý! &Ñ)Ô)ñô ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )rw  r�   r¥  r  r:  s     r)   rZ  rZ  Ÿa  s:   € ÝÝÔÝ Ñ#Ô#Ý Ñ#Ô#ñô ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )r�  r�   r1  rã  )rs  rŒ  s     r)   r�  r�  ¨a  s9   € ÝÝŒOÝ! "Ñ%Ô%Ý! "Ñ%Ô%ñô ñô ð r*   c                óH  — 	 t'          | ¦  «        }|j        }||j
        z  |j        |j	        z  z
  }|t           j        j         k     s|t           j        j        k    rÅt          j        ¦   «         }d|z  }|j
        |z  |_        |j         |z  |_        |j	         |z  |_	        ||z  |_
        |j         |j        z  |j        |j	        z  z
  }|j         |j        z  |j        |j
        z  z
  |_        ||_        d|j        |j        |j	        |j
        |j        |j        ffS dS )Nr   ztype(matrix)=r{   r   )r   r-   )r>   rµ   r´   r�   r‚  r7  r…  r!   rÜ
  rË  r  rp  rÝ  rÈ   r~  rý  r˜
  Ú
float_infoÚepsilonrã  )ré  rG   rá  r!   Údetr  Úrdets          r)   rŠ  rŠ  ±a  s  € ð=õ( ˜FÑ
#Ô
#€CØŒ€AØ
ˆcŒe‰)�c”e˜cœe‘mÑ
#€CØ
�cŒnÔ$Ð$Ò$Ð$¨­c¬nÔ.DÒ(DÐ(DÝŒnÑÔˆØ�3‰wˆØ”˜‘ˆŒØ”�˜‘ˆŒØ”�˜‘ˆŒØ�D‘ˆŒØŒUˆF�S”U‰N˜SœU S¤U™]Ñ*ˆØ”�˜œ‘ ¤¨¬¡Ñ.ˆŒØˆŒØ�3”5˜#œ% ¤¨¬¨s¬u°c´eÐ<Ð<Ð<àˆ5r*   c                ó   — t          j        |¦  «        }d}d}|t          | ¦  «        k     rÍt          j        | |d …         ¦  «        \  }}||z  }|t           j        k    rt          j        |¦  «        }n9|t           j        k    rt          j        |¦  «        }nt          j        |¦  «        }|dk     rd}t          j	        ||¦  «        }	t          j
        ||	d¦  «        }
||
z  }|t          | ¦  «        k     °Í||z  }|S )Nr   rÛ  )r�   rû  r7   r‰  ÚPDF_SIMPLE_ENCODING_GREEKÚfz_iso8859_7_from_unicodeÚPDF_SIMPLE_ENCODING_CYRILLICÚfz_windows_1251_from_unicodeÚfz_windows_1252_from_unicoder-  r.  )r   r	  r
  rû  rb  r   ru  rO  rË  r
  rÖ  rG   s               r)   r÷  r÷  Øa  sþ   € ÝÔ# HÑ-Ô-€DØ	€AØ
€CØ
•�D‘	”	Š/ˆ/ÝÔ" 4¨¨¨¤:Ñ.Ô.‰ˆˆ1Øˆq‰ˆØ•uÔ6Ò6Ð6ÝÔ/°Ñ2Ô2ˆAˆAØ�Ô;Ò;Ð;ÝÔ2°1Ñ5Ô5ˆAˆAåÔ2°1Ñ5Ô5ˆAØˆqŠ5ˆ5ØˆAÝÔ% d¨AÑ.Ô.ˆÝÔ# D¨!¨QÑ/Ô/ˆØ	ˆR‰ˆð •�D‘	”	Š/ˆ/ð ˆh‰,€CØ€Jr*   c                ó  — t          | ¦  «        }t          |¦  «        }t          |¦  «        }t          j        t          j        |j        |j        z
  |j        |j        z
  ¦  «        ¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        |j        |j         |j        |j        dd¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }|j        S )Nr   r   )	rk  r�   r9  rŒ  r4  r5  r#  r1  r3  )	rö  rÌ  rë   rË  r²  r›  r�  rs  rŒ  s	            r)   r  r  îa  sÖ   € å˜ÑÔ€AÝ˜ÑÔ€AÝ˜ÑÔ€AÝÔ!¥%Ô"5°a´c¸A¼C±iÀÄÀqÄsÁÑ"KÔ"KÑLÔL€AÝ	Ô	˜a  A q¨1¬3¨$°´°Ñ	5Ô	5€BÝ	Ô	˜aœc A¤C 4¨¬¨a¬c°1°aÑ	8Ô	8€BÝ	Œ˜˜RÑ	 Ô	 €BÝÔ   BÑ'Ô'€AÝÔ! !Ñ$Ô$€AØŒ3€Jr*   c                óª  — t          | ¦  «        }t          |¦  «        }t          j        t          j        |j        |j        z
  |j        |j        z
  ¦  «        ¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        |j        |j         |j        |j        dd¦  «        }t          t          j        ||¦  «        ¦  «        S )z‡
    Return the matrix that maps two points C, P to the x-axis such that
    C -> (0,0) and the image of P have the same distance.
    r   r   )	rk  r�   r9  rŒ  r4  r5  r#  r�  r1  )rö  rÌ  rË  r²  r�  rs  rŒ  s          r)   rù  rù  üa  s­   € õ
 	˜ÑÔ€AÝ˜ÑÔ€Aõ 	Ô!¥%Ô"5°a´c¸A¼C±iÀÄÀqÄsÁÑ"KÔ"KÑLÔL€Aå	Ô	˜a  A q¨1¬3¨$°´°Ñ	5Ô	5€BÝ	Ô	˜aœc A¤C 4¨¬¨a¬c°1°aÑ	8Ô	8€BÝ�Uœ_¨R°Ñ4Ô4Ñ5Ô5Ð5r*   c                óZ  — d}d}|}t          | |d …         ¦  «        \  }}||z  }t          ||d …         ¦  «        \  }}||z  }||k    rØ|}|t          d¦  «        k    r6	 t          | |d …         ¦  «        \  }}||z  }|t          d¦  «        k    rnŒ4nt          | |d …         ¦  «        \  }}||z  }|t          d¦  «        k    r6	 t          ||d …         ¦  «        \  }}||z  }|t          d¦  «        k    rnŒ4nt          ||d …         ¦  «        \  }}||z  }||k    °Ø|dk    rd n|S )Nr   r³   )r÷  rÐ
  )	Úh0rŠ  rÑ  rE   rp  r"  ÚhcÚdelta_nÚncs	            r)   r  r  b  sj  € Ø	€AØ	€AØ	€AÝ˜b   œfÑ%Ô%�K€GˆRØˆ�L€AÝ˜b   œfÑ%Ô%�K€GˆRØˆ�L€AØ
�Š(ˆ(ØˆØ•�S‘”Š>ˆ>ðÝ)¨"¨Q¨R¨R¬&Ñ1Ô1‘�˜Ø�W‘�Ø�˜S™œ’>�>Øð	ð å% b¨¨¨¤fÑ-Ô-‰KˆG�RØ�‰LˆAØ•�S‘”Š>ˆ>ðÝ)¨"¨Q¨R¨R¬&Ñ1Ô1‘�˜Ø�W‘�Ø�˜S™œ’>�>Øð	ð å% b¨¨¨¤fÑ-Ô-‰KˆG�RØ�‰LˆAð' �Š(ˆ(ð( ˜’7�7ˆ4ˆ4 Ð!r*   c                óD  — | sJ ‚t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚|j        j        | j        z  }|j        j        | j        z  }t          ||¦  «        }| j	        dk    rö| j
        | j	        dz
           }t          |¦  «        }	 t          |j        j        |j        |j        ¦  «        |k     r¨t!          |j        j        |j        |j        ¦  «        |k     rt          |j        j        |j        |j        ¦  «        |k     rVt!          |j        j        |j        |j        ¦  «        |k     r-|j        |_        |j        |_        | j
        d         |k    sJ ‚d S | j
                             |¦  «         | xj	        dz  c_	        d S r  )r>   r�   rO  rP  rÌ   rÈ  r:  r9  rD  r7   rv	  r—  r  rs  rû  rú  Úvdistrü  r¯  rk   )r?  ro   r	  r:  r9  Úch_quadr  r¥  s           r)   r=  r=  +b  st  € Ø€K€Kˆ4Ý�d�EÔ-Ñ.Ô.Ð.Ð.Ð.Ý�b�%Ô+Ñ,Ô,Ð,Ð,Ð,ØŒMÔ ¤Ñ+€EØŒMÔ ¤Ñ+€EÝ˜4 Ñ$Ô$€GØ„x�!‚|€|àŒz˜$œ( Q™,Ô'ˆÝ˜dÑ#Ô#ˆð		Ý˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJà”ZˆCŒFØ”ZˆCŒFØ”:˜b”> SÒ(Ð(Ð(Ð(ØˆFØ„J×Ò�gÑÔÐØ€H„H��M€H„H€H€Hr*   c                ób  — t           rt          j        | |||||||¦  «        S t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d	¦  «        g	}t	          j        ||¦  «        }	t	          j        | d
¦  «        }
t	          j        |
t          d¦  «        t          d¦  «        ¦  «         t          t          |¦  «        ¦  «        D ]X}t	          j
        |	||         ¦  «        }|j        r4t	          j        |
||         t	          j        |j        |¦  «        ¦  «         ŒY|�ræt	          j        |	t          d¦  «        ¦  «        }t	          j        |¦  «        }|dk    �r©t	          j        |
t          d¦  «        |¦  «        }t          |¦  «        D �]u}t	          j        ||¦  «        }|j        rt	          j        |¦  «        sŒ4t	          j        |d¦  «        j        rŒOt	          j        |t          d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        rŒ”t	          j        |t          d¦  «        ¦  «        rŒ·t	          j        |t          d¦  «        ¦  «        rŒÚt	          j        |t          d¦  «        ¦  «         t	          j        |t          d¦  «        ¦  «         t	          j        |j        |¦  «        }t	          j        | t	          j        |¦  «        d¦  «        }t	          j        ||¦  «         �Œw|dk    r#t	          j        |
t          d¦  «        |¦  «         t	          j        | |
¦  «        }t	          j        | ||¦  «         dS )z¹
    Deep-copies a source page to the target.
    Modified version of function of pdfmerge.c: we also copy annotations, but
    we skip some subtypes. In addition we rotate output.
    r"  rE  r“  rk  rl  rm  rn  rD  ÚUserUnitrZ  r@  rÒ   r§  r   r.  r•  r"  r¦  rI  rÌ  rA  N)r'  r   rç  r  r�   rO  rc  r^  r\  r7   rP  rÌ   rÓ  rÄ   r  r«  r¥  r¬  rŠ  r  r  rQ  r˜  r  r›  rY  r¦  r  )rè  ré  Ú	page_fromÚpage_tori  rˆ  Úcopy_annotsrí  Úknown_page_objsÚpage_refr™  r®   r  r@  rE   rA  r±  r  rB  rß   rA  s                        r)   rç  rç  Db  sc  € õ ð nåÔ ¨'°9¸gÀvÈuÐVaÐclÑmÔmÐmõ 	�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔð

€Oõ Ô(¨°)Ñ<Ô<€Hõ Ô" 7¨AÑ.Ô.€IÝ	Ô�y¥(¨6Ñ"2Ô"2µH¸VÑ4DÔ4DÑEÔEÐEõ •C˜Ñ(Ô(Ñ)Ô)ð sð sˆÝÔ,¨h¸ÈÔ8JÑKÔKˆØŒ>ð 	såÔ 	¨?¸1Ô+=½uÔ?\Ð]fÔ]kÐmpÑ?qÔ?qÑrÔrÐrøð ñ 9ÝÔ'¨µ8¸HÑ3EÔ3EÑFÔFˆ
ÝÔ Ñ,Ô,ˆØˆqŠ5‰5ÝÔ1°9½hÀxÑ>PÔ>PÐRSÑTÔTˆJÝ˜1‘X”Xð 9ñ 9�ÝÔ'¨°QÑ7Ô7�Ø”|ð ­5Ô+<¸QÑ+?Ô+?ð ØÝÔ&¨¨5Ñ1Ô1Ô<ð ØÝÔ,¨aµ¸)Ñ1DÔ1DÑEÔE�ÝÔ$ g­x¸Ñ/?Ô/?Ñ@Ô@ð ØÝÔ$ g­x¸Ñ/@Ô/@ÑAÔAð ØÝÔ$ W­h°xÑ.@Ô.@ÑAÔAð ØÝÔ" A¥x°Ñ'8Ô'8Ñ9Ô9Ð9ÝÔ" A¥x°¡}¤}Ñ5Ô5Ð5ÝÔ6¸	¼ÈÑJÔJ�ÝÔ.°½Ô9IÈ6Ñ9RÔ9RÐTUÑVÔV�ÝÔ$ j°%Ñ8Ô8Ð8Ñ8ð �‚|€|ÝÔ 	­8°HÑ+=Ô+=¸vÑFÔFÐFå
Ô
 ¨Ñ
3Ô
3€Cõ 
Ô˜7 G¨SÑ1Ô1Ð1Ð1Ð1r*   c                óJ   — t          | ¦  «        \  }}t          dd||¦  «        S )z‰Return a Rect for the paper size indicated in string 's'. Must conform to the argument of method 'PaperSize', which will be invoked.
    r­  )Ú
paper_sizer4  )r�  rl  rà  s      r)   Ú
paper_rectra  ‹b  s'   € õ ˜q‘M”M�M€Eˆ6Ý��S˜% Ñ(Ô(Ð(r*   c                ó"  — |                       ¦   «         }d}|                     d¦  «        rd}|dd…         }|                     d¦  «        r
|dd…         }t          ¦   «                              |d¦  «        }|dk    r|S |d         |d	         fS )
zÑReturn a tuple (width, height) for a given paper format string.

    Notes:
        'A4-L' will return (842, 595), the values for A4 landscape.
        Suffix '-P' and no suffix return the portrait tuple.
    r²  z-lr'  Nræ  z-prµ  r   r   )râ  rí  Úpaper_sizesr8   )r�  rÈ  rÝ  r    s       r)   r`  r`  ’b  s–   € ð �7Š7‰9Œ9€DØ€AØ‡}‚}�TÑÔð ØˆØ�C�R�CŒyˆØ‡}‚}�TÑÔð Ø�C�R�CŒyˆÝ	‰Œ×	Ò	˜4 Ñ	*Ô	*€BØˆC‚x€xØˆ	ØˆqŒE�2�a”5ˆ>Ðr*   c                 óð   — i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdFdGdHdIdJdKdLdMdNdOœ
¥S )Pa6  Known paper formats @ 72 dpi as a dictionary. Key is the format string
    like "a4" for ISO-A4. Value is the tuple (width, height).

    Information taken from the following web sites:
    www.din-formate.de
    www.din-formate.info/amerikanische-formate.html
    www.directtools.de/wissen/normen/iso.htm
    Úa0)éP	  i*  Úa1)é”  rf  Úa10)r  r/  Úa2)é§  rh  Úa3)rx  rk  Úa4)rw  rx  Úa5)é¤  rw  Úa6)é*  ro  Úa7)r{  rq  Úa8)é“   r{  Úa9)r/  rt  Úb0)é  i¨  Úb1)éÔ  rw  Úb10)r  rF  Úb2)é‰  ry  Úb3)éé  r|  Úb4)éÅ  r~  Úb5)éó  r€  Úb6)éb  r‚  rÌ  )r¤  r„  Úb8)r[  r¤  Úb9)rF  r[  Úc0)é'
  i]  Úc1)é-  rˆ  Úc10)r  r9  Úc2)é  rŠ  Úc3)é–  r�  Úc4)é‰  r�  Úc5)éË  r‘  Úc6)éC  r“  Úc7)r‘  r•  Úc8)rJ  r‘  Úc9)r9  rJ  zcard-4x6)i   i°  )rÃ  iø  )i)  i¬  )i
  iô  )iŒ  rà  )rá  iÈ  )rà  ið  )rà  i¨  )rà  rá  )i  i  )i`  i  )
zcard-5x7Ú
commercialÚ	executiveÚinvoiceÚledgerÚlegalzlegal-13ÚletterÚmonarchztabloid-extrar-   r-   r*   r)   rc  rc  ¦b  sá  € ð-
Øˆlð-
àˆlð-
ð 	ˆyð-
ð 	ˆlð	-
ð
 	ˆkð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆlð-
ð 	ˆlð-
ð 	ˆyð-
ð 	ˆlð-
ð  	ˆlð!-
ð" 	ˆkð#-
ð -
ð$ 	ˆjð%-
ð& 	ˆjð'-
ð( 	ˆjð)-
ð* 	ˆjð+-
ð, 	ˆjð--
ð. 	ˆlð/-
ð0 	ˆlð1-
ð2 	ˆyð3-
ð4 	ˆlð5-
ð6 	ˆkð7-
ð8 	ˆjð9-
ð: 	ˆjð;-
ð< 	ˆjð=-
ð> 	ˆjð?-
ð@ 	ˆjðA-
ðB 	ˆjðC-
ðD 	�JðE-
ð -
ðF Ø ØØØØØØØØ$ðY-
ð -
ð -
ð -
r*   c                ó,   — t          j        | |¦  «        S r,   )r�   rg  )r:  r  s     r)   rg  rg  Þb  s   € ÝÔ$ S¨&Ñ1Ô1Ð1r*   c                ó   — J d¦   «         ‚)zH
    Returns description of mupdf.PdfObj (wrapper for pdf_obj) <o>.
    r   zuse mupdf.pdf_debug_obj() ?)r�   r™  r«  r\  r¬  Úpdfobj_stringrk  Úarray_get_boolrŠ  r‹  r�  r  Úpdf_is_embedded_fileÚembedded_file_namer	  rn
  r  Úpdf_is_jpx_imagerÊ  r‰  r  ro
  rÿ  r+  rp
  rÜ  )r±  rÕ	  rG   r'  r®   Úoor'  r¸   s           r)   r¢  r¢  âb  s   € ð ,Ð+Ñ+Ô+ˆ1r*   ú'Font'c                ó‚  ‡— ‰j         d         sdS | j        }|                      ¦   «         }ˆfd„|D ¦   «         }|g k    rdS t          |¦  «        }t	          t          ‰                     d¦  «        dz  ¦  «        ¦  «        }|D ]9}t                               |||¦  «        st          d‰j
        › d|d›�¦  «         Œ:dS )	aÞ  Repair character spacing for mono fonts.

    Notes:
        Some mono-spaced fonts are displayed with a too large character
        distance, e.g. "a b c" instead of "abc". This utility adds an entry
        "/W[0 65535 w]" to the descendent font(s) of font. The float w is
        taken to be the width of 0x20 (space).
        This should enforce viewers to use 'w' as the character width.

    Args:
        page: pymupdf.Page object.
        font: pymupdf.Font object.
    rÝ
  Nc                ó®   •— g | ]Q}|d          ‰j         k    ¯|d                              d¦  «        ¯.|d                              d¦  «        ¯I|d         ‘ŒRS )r   rZ  r·  r   r¨  r   )r   r3   )r­   rÝ  rb  s     €r)   r¯   z$repair_mono_font.<locals>.<listcomp>&c  sb   ø€ ð ð ð àØˆaŒD�D”IÒÐ ! A¤$§/¢/°#Ñ"6Ô"6Ð¸1¸Q¼4¿?º?È:Ñ;VÔ;VÐð 	
ˆ!ŒàÐÐr*   rú  iè  zCannot set width for 'z
' in xref r  )rÎ  rû   rô  râ  r4   rk  rï
  r  Úset_font_widthr'   r   )rÖ   rb  r:  rË  rN  rl  r   s    `     r)   r]  r]  c  s÷   ø€ ð Œ:�fÔð ØˆtØ
Œ+€CØ�~Š~ÑÔ€Hðð ð ð àðñ ô €Eð
 �‚{€{ØˆÝ�‰JŒJ€EÝ•�t×)Ò)¨"Ñ-Ô-°Ñ4Ñ6Ô6Ñ7Ô7€EØð Hð HˆÝ×#Ò# C¨¨uÑ5Ô5ð 	HÝÐF¨¬ÐFÐF¸dÐFÐFÐFÑGÔGÐGøðHð Hr*   Úsrgbc                ó`   — t          | ¦  «        }|d         dz  |d         dz  |d         dz  fS )a  Convert sRGB color code to a PDF color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) RRGGBB (red, green, blue), each color in range(255).
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 1.
    r   g     ào@r   r   )r  )r¬  rO  s     r)   ÚsRGB_to_pdfr®  4c  s6   € õ 	�DÑÔ€AØˆQŒ4�%‰<˜˜1œ ™ q¨¤t¨e¡|Ð3Ð3r*   c                óR   — | dz  } | dz	  }| |dz  z
  dz	  }| |dz  z
  |dz  z
  }|||fS )aI  Convert sRGB color code to an RGB color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) SSRRGGBB (red, green, blue), each color in range(255).
        With MuPDF < 1.26, `s` is always 0.
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 255.
    iÿÿÿ r)
  r   r-   )r¬  r.  r
  rÜ
  s       r)   r  r  Bc  sM   € ð 	ˆHÑ€DØ�‰
€AØ	��b‘Ñ	˜aÑ€AØ��R‘Ñ˜A ™FÑ#€AØˆq�!ˆ9Ðr*   c                óâ   — |rt          j        |¦  «        nd}t          j        | ¦  «        }t          d|d¦  «        D ]0}t          j        t          j        ||¦  «        ¦  «        |k    r dS Œ1dS )Nr   r   r   )r�   r«  r  r\  r¬  )r²  rü  rE   Ústr_r®   s        r)   rù  rù  Tc  sz   € Ø,6Ð=�Ô˜ZÑ(Ô(Ð(¸A€AÝÔ# QÑ'Ô'€DÝ�1�a˜‰^Œ^ð ð ˆÝÔ#¥UÔ%8¸*ÀaÑ%HÔ%HÑIÔIÈTÒQÐQØ�1�1ð Ràˆ1r*   c                óV  — d}d}|}d}|j         �r•t          | ||||¦  «        }	t          ||||¦  «        �s3|	dk    rÆt          j        |t          d¦  «        ¦  «        }
|
j         s*|j         r"t          j        |t          d¦  «        ¦  «         np|j         rGt          j        |t          d¦  «        |
¦  «         t          j        |
t          d¦  «        |¦  «         n"t          j        |
t          d¦  «        ¦  «         |
}n›t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «        }n4|r|j         s|}|}t          j        |t          d¦  «        ¦  «        }|dz  }|j         �°•|||fS )z'
    Returns (count, first, prev).
    Nr   r  ÚPrevr  r  r   )rÌ   Ústrip_outlinesrý  r�   r  r  rQ  r^  )r:  ÚoutlinesrÜ  rû  rü  rP  r  r  rÃ  rT  rL  s              r)   Ústrip_outliner¶  ]c  sÁ  € ð €EØ€EØ€GØ€DØ
Ô
ñ õ ˜C ¨*Ð6FÈ
ÑSÔSˆå˜W jÐ2BÀJÑOÔOñ 	Ø�QŠwˆwõ Ô)¨'µ8¸FÑ3CÔ3CÑDÔD�Ø”ð ?à”ð CÝÔ*¨4µ¸&Ñ1AÔ1AÑBÔBÐBøØ”_ð ?ÝÔ& t­X°fÑ-=Ô-=¸tÑDÔDÐDÝÔ& t­X°fÑ-=Ô-=¸tÑDÔDÐDÐDåÔ& t­X°fÑ-=Ô-=Ñ>Ô>Ð>Ø��õ Ô" 7­H°VÑ,<Ô,<Ñ=Ô=Ð=ÝÔ" 7­H°S©M¬MÑ:Ô:Ð:ÝÔ,¨Wµh¸vÑ6FÔ6FÑGÔG��ð ð   Ô 0ð  Ø�ØˆDÝÔ(¨µ(¸6Ñ2BÔ2BÑCÔCˆGØ�Q‰JˆEð? Ô
ñ ðB �%˜ÐÐr*   c                óè  — |j         sdS t          j        |t          d¦  «        ¦  «        }|j         sd}nt	          | ||||¦  «        \  }}}|dk    rgt          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         n¸t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        t          j        |dk    r|n| ¦  «        ¦  «         |S )Nr   rJ  ÚLastr  )	rÌ   r�   r  r  r¶  rQ  r  r^  r$  )	r:  rµ  rÜ  rû  rü  rP  rT  rß	  Ú	old_counts	            r)   r´  r´  ‰c  sY  € ØÔð ØˆqåÔ˜x­°'Ñ):Ô):Ñ;Ô;€EØÔð ^Øˆˆå'¨¨U°JÐ@PÐR\Ñ]Ô]‰ˆˆE�4à	ˆQ‚w€wÝÔ˜8¥X¨gÑ%6Ô%6Ñ7Ô7Ð7ÝÔ˜8¥X¨fÑ%5Ô%5Ñ6Ô6Ð6ÝÔ˜8¥X¨gÑ%6Ô%6Ñ7Ô7Ð7Ð7åÔ$¥UÔ%7¸Å(È7ÑBSÔBSÑ%TÔ%TÑUÔUˆ	ÝÔ˜8¥X¨gÑ%6Ô%6¸Ñ>Ô>Ð>ÝÔ˜8¥X¨fÑ%5Ô%5°tÑ<Ô<Ð<ÝÔ˜8¥X¨gÑ%6Ô%6½Ô8IÐPYÐ\]ÒP]ÐP]È"È"ÐdfÐcfÑ8gÔ8gÑhÔhÐhØ€Ir*   r	  c                óz   — ddl }	 |                     t          | ¦  «        ¦  «        }n# t          $ r d}Y nw xY w|S )z5
    Convenience function accessing unicodedata.
    r   Nz.notdef)r  r   r*
  rÃ   )r	  r  r   s      r)   r  r  ¥c  sY   € ð ÐÐÐðØ×Ò¥ B¡¤Ñ(Ô(ˆˆøÝð ð ð Øˆˆˆðøøøà€Kr  c                óŒ   — |j         |j         z
  }|j        |j        z
  }t          j        || j        z  || j         z  z   ¦  «        S r,   r  r  s        r)   rV  rV  ±c  r  r*   r-   Úsingle)	Úpagefn_argsÚpagefn_kwargsÚinitfnÚinitfn_argsÚinitfn_kwargsr�  re  ÚconcurrencyÚ_statsc       	        óà  — |
rt          j         ¦   «         }|dk    ru|r ||i |¤Ž t          ¦   «         }t          | ¦  «        }|€t          t	          |¦  «        ¦  «        }|D ]+}||         } ||g|¢R i |¤Ž}|                     |¦  «         Œ,�n2ddlm} |€’|
rt          j         ¦   «         }t          | ¦  «        5 }t	          |¦  «        }t          t          |¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   |
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |
rt          j         ¦   «         }|dk    r| 	                    | ||||||||	|
¦
  «
        }n3|dk    r| 
                    | ||||||||	|
¦
  «
        }nJ d
|›d�¦   «         ‚|
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |S )a˜  
    Returns list of results from `pagefn()`, optionally using concurrency for
    speed.
    
    Args:
        path:
            Path of document.
        pagefn:
            Function to call for each page; is passed (page, *pagefn_args,
            **pagefn_kwargs). Return value is added to list that we return. If
            `method` is not 'single', must be a top-level function - nested
            functions don't work with concurrency.
        pagefn_args
        pagefn_kwargs:
            Additional args to pass to `pagefn`. Must be picklable.
        initfn:
            If true, called once in each worker process; is passed
            (*initfn_args, **initfn_kwargs).
        initfn_args
        initfn_kwargs:
            Args to pass to initfn. Must be picklable.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork()`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        _stats:
            Internal, may change or be removed. If true, we output simple
            timing diagnostics.
    
    Note: We require a file path rather than a Document, because Document
    instances do not work properly after a fork - internal file descriptor
    offsets are shared between the parent and child processes.
    r¼  Nr   )Ú_apply_pagesz.2fzs: count pages.r�  Úforkr   zUnrecognised method=r   zs: work.z	s: total.)r  r´   rÁ   r\  r7   rk   r\   rÅ  r'   Ú_multiprocessingÚ_fork)r
   rQ  r½  r¾  r¿  rÀ  rÁ  r�  re  rÂ  rÃ  rä	  rG   rÉ   rá  rÖ   r.  rÅ  rO  Ú	num_pagess                       r)   Úapply_pagesrÊ  ·c  s¬  € ðp ð ÝŒY‰[Œ[ˆà�ÒÐØð 	2ØˆF�KÐ1 =Ð1Ð1Ð1Ý‰fŒfˆÝ˜D‘>”>ˆØˆ=Ý�#˜h™-œ-Ñ(Ô(ˆEØð 	ð 	ˆCØ˜C”=ˆDØ��tÐ;˜kÐ;Ð;Ð;¨]Ð;Ð;ˆAØ�JŠJ�q‰MŒMˆMˆMñ	ð 	#Ð"Ð"Ð"Ð"Ð"àˆ=Øð  Ý”I‘K”K�Ý˜$‘”ð / 8Ý ™MœM�	Ý�U 9Ñ-Ô-Ñ.Ô.�ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð ð /Ý”I‘K”K !‘O�Ý�qÐ-Ð-Ð-Ð-Ñ.Ô.Ð.àð 	Ý”	‘”ˆAà�TŠ>ˆ>Ø×/Ò/ØØØØØ!ØØØ!ØØñô ˆCˆCð �vÒÐØ×$Ò$ØØØØØ!ØØØ!ØØñô ˆCˆCð 1Ð0 fÐ0Ð0Ð0Ñ0Ô0�1àð 	$Ý”	‘”˜a‘ˆAÝ�1Ð"Ð"Ð"Ð"Ñ#Ô#Ð#àð !ÝŒI‰KŒK˜"ÑˆÝˆqÐÐÐÐÑ Ô Ð Ø€Js   Â=,C5Ã5C9Ã<C9)
r�  re  rÂ  rª  r  rÎ  r¬  rã  rû  rÃ  c       
   	     ól   — t          ||||||	¬¦  «        }t          | t          j        |||||
¬¦  «        S )ag  
    Returns list of results from `Page.get_text()`, optionally using
    concurrency for speed.
    
    Args:
        path:
            Path of document.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        option
        clip
        flags
        textpage
        sort
        delimiters:
            Passed to internal calls to `Page.get_text()`.
    )rª  r  rÎ  r¬  rã  rû  )r¾  r�  re  rÂ  rÃ  )r5   rÊ  rÒ   r  )r
   r�  re  rÂ  rª  r  rÎ  r¬  rã  rû  rÃ  Ú	args_dicts               r)   r  r  9d  s[   € õX ØØØØØØ!ðñ ô €Iõ ØÝŒMØ#ØØØ#Øðñ ô ð r*   c                  ó¦  — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed/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„ Zed„ ¦   «         Zed„ ¦   «         Zed0d„¦   «         Zed1d„¦   «         Zed1d„¦   «         Zed„ ¦   «         Zed/d„¦   «         Zed „ ¦   «         Z ed!„ ¦   «         Z!ed1d"„¦   «         Z"ed#„ ¦   «         Z#ed$„ ¦   «         Z$ed0d%„¦   «         Z%ed1d&„¦   «         Z&ed1d'„¦   «         Z'ed1d(„¦   «         Z(ed)„ ¦   «         Z)ed*„ ¦   «         Z*ed+„ ¦   «         Z+ed,„ ¦   «         Z,ed1d-„¦   «         Z-d.Z. e/¦   «         Z0dS )2r  zU
    We use @staticmethod to avoid the need to create an instance of this class.
    c                ó®   — t          | t          j        ¦  «        rt          t	          | ¦  «        ¦  «        S t          t          j        ¦   «         ¦  «        S r,   )r>   r�   rÓ   r�  r0  r‚  rÕ   s    r)   Ú_derotate_matrixzTOOLS._derotate_matrix~d  sC   € Ý�d�EœMÑ*Ô*ð 	7Ý$Õ%<¸TÑ%BÔ%BÑCÔCÐCå$¥U¤^Ñ%5Ô%5Ñ6Ô6Ð6r*   c                óZ  — t          | |¦  «        }t          | j        ¦  «        |_        | j        |_        | j        |_        | |_        |j        sd |_        |j        sd |_        |j        sd |_        |j	        sd |_	        |j
        sd |_
        |j        sd |_        |j        sd |_        |S r,   )r+  r4  r  r   rû   r(  r¿
  ró  rô  rõ  rö  r÷  rø  )rß   rK  r"  s      r)   rJ  zTOOLS._fill_widget„d  sÃ   € å& u¨fÑ5Ô5ˆå˜5œ:Ñ&Ô&ˆŒØ”jˆŒØœˆŒØˆŒØŒ}ð 	!Ø ˆFŒMØÔ#ð 	(Ø#'ˆFÔ ØÔ#ð 	(Ø#'ˆFÔ ØÔ#ð 	(Ø#'ˆFÔ ØÔ!ð 	&Ø!%ˆFÔØÔ!ð 	&Ø!%ˆFÔØÔ"ð 	'Ø"&ˆFÔØˆ
r*   c                óŽ   — t          | j        ¦  «        } t          |                      ¦   «         ¦  «        }t	          |¦  «        }|S r,   )rÚ   rÄ   r=  r  r-  )rÖ   r/  r+  s      r)   rx  zTOOLS._get_all_contentsœd  s8   € å˜DœIÑ&Ô&ˆÝ˜tŸxšx™zœzÑ*Ô*ˆÝ! 3Ñ'Ô'ˆØˆr*   r   c                ó²   — t          | d¬¦  «        }t          |¦  «        }t          |                     ¦   «         |                     ¦   «         ||¦  «        }|S )zDAdd bytes as a new /Contents object for a page, and return its xref.r   r:  )rÚ   r7  r2  r:  r  )rÖ   r£  r5  rº  Úcontbufr   s         r)   r½  zTOOLS._insert_contents£d  sK   € õ ˜t¨aÐ0Ñ0Ô0ˆÝ$ WÑ-Ô-ˆÝ! '§+¢+¡-¤-°·²±´ÀÈÑQÔQˆàˆr*   c                óº  — | j         d         }| j        d         }|sd}d                     t          t          |¦  «        ¦  «        dz   }|r|}n| j        d         }|sd}d                     t          t          |¦  «        ¦  «        dz   }|}	|}
t          t          |	|
¦  «        ¦  «        }| }|	|z  }|
|z  }d	| j        cxk    rd
k     rn nd}nd}||||||||fS )as  Get common parameters for making annot line end symbols.

        Returns:
            m: matrix that maps p1, p2 to points L, P on the x-axis
            im: its inverse
            L, P: transformed p1, p2
            w: line width
            scol: stroke color string
            fcol: fill color store_shrink
            opacity: opacity string (gs command)
        rl  rw  rÞ  r³   z RG
r  r¥  z rg
r   r   rÛ  r\   )r˜  r  rê  rë  rá  r…  rù  rf  )rß   r  r  rh  r   ÚscÚscolr(  rm  Únp1Únp2r�  r’  r+  rô  rf  s                   r)   Ú_le_annot_parmszTOOLS._le_annot_parms¬d  s  € ð ŒL˜Ô!ˆØŒ\˜(Ô#ˆØð 	ØˆBØ�xŠx��C ™œÑ%Ô%¨Ñ/ˆØð 	&ØˆBˆBà”˜fÔ%ˆBØð 	ØˆBØ�xŠx��C ™œÑ%Ô%¨Ñ/ˆàˆØˆÝ•? 3¨Ñ,Ô,Ñ-Ô-ˆØˆRˆØ�!‰GˆØ�!‰GˆØ�”Ð!Ð!Ò!Ð! Ò!Ð!Ð!Ð!Ð!ØˆGˆGàˆGØ�"�a˜˜A˜t T¨7Ð2Ð2r*   c                óT  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r|n|}|d| dz  fz   |z  }|d|dz  fz   |z  }d|› |j        d›d|j        d›d�}||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
dz   z  }|S )zaMake stream commands for butt line end symbol. "lr" denotes left (False) or right point.
        r   r   r   rº  r  rÝ  r³   r–  r—  r  ús
Q
©r  rÙ  rø  r4  r5  r¶   )rß   r  r  rû  rh  r�  r’  r+  rô  r   rÖ  rm  rf  r©  r  r!  r	  Úbotr1  s                      r)   rô  zTOOLS._le_buttÒd  sõ   € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØˆNˆAˆA˜ˆØ�A˜�r˜"‘u�:‰~ Ñ#ˆØ�A�q˜‘t�9‰} Ñ"ˆØ5�WÐ5˜cœeÐ5Ð5Ð5¨¬Ð5Ð5Ð5Ð5ˆØ
�”Ð(Ð(Ð(˜3œ5Ð(Ð(Ð(Ð(Ñ(ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                ó   — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }d|z   t                                |j        |z  |j        |z  |j        |z  |j        |z  ¦  «        z   }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zcMake stream commands for circle line end symbol. "lr" denotes left (False) or right point.
        ç      @r   rº  r   úq
r  úb
Q
)
r  rÙ  rø  r4  Ú_oval_stringrû  rv  rü  rÎ  r¶   )rß   r  r  rû  rh  r�  r’  r+  rô  r   rÖ  rm  rf  r©  r  r!  r.  r1  s                     r)   rð  zTOOLS._le_circleâd  sõ   € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆØ�W‰_�u×1Ò1°!´$¸±)¸Q¼TÀB¹YÈÌÈrÉ	ÐSTÔSWÐZ\ÑS\Ñ]Ô]Ñ]ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )ziMake stream commands for closed arrow line end symbol. "lr" denotes left (False) or right point.
        rß  r   rº  r   ræ  r   r  rÝ  r³   r–  r—  r  rá  rÜ  ©rß   r  r  rû  rh  r�  r’  r+  rô  r   rÖ  rm  rf  r©  r  r!  r1  s                    r)   ró  zTOOLS._le_closedarrowðd  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ "Ð6ˆR�2�a‘4˜!˜�*‰_ˆ_¨¨a°©c°A°2¨Y©ˆØ!Ð4ˆR�2�a‘4˜�)‰^ˆ^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óº  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }|j        |j        |j        z
  dz  z   |z  }d|› |j        d›d|j        d›d	�}|j        |j        |j        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|j        |j	        |j        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|j	        |j        |j	        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zdMake stream commands for diamond line end symbol. "lr" denotes left (False) or right point.
        rß  r   rº  r   rÊ  rà  rÝ  r³   r–  r—  r  rá  )r  rÙ  rø  r4  rû  rÎ  r4  r5  rv  rü  r¶   ©rß   r  r  rû  rh  r�  r’  r+  rô  r   rÖ  rm  rf  r©  r  r!  r.  r²  r1  s                      r)   rñ  zTOOLS._le_diamonde  sÅ  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆàŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ/�7Ð/˜AœCÐ/Ð/Ð/ A¤CÐ/Ð/Ð/Ð/ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óæ  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
dz   z  }|S )zgMake stream commands for open arrow line end symbol. "lr" denotes left (False) or right point.
        rß  r   rº  r   ræ  r   r  rÝ  r³   r–  r—  r  úS
Q
rÜ  rä  s                    r)   rò  zTOOLS._le_openarrowe  sp  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ "Ð6ˆR�2�a‘4˜!˜�*‰_ˆ_¨¨a°©c°A°2¨Y©ˆØ!Ð4ˆR�2�a‘4˜�)‰^ˆ^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
|d|z  dfz
  n	|d|z  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d|j        d›d	�}||j        d›d|j        d›d
�z  }||j        d›d|j        d›d
�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zoMake stream commands for right closed arrow line end symbol. "lr" denotes left (False) or right point.
        rß  r   r   r   ræ  r  rÝ  r³   r–  r—  r  rá  rÜ  rä  s                    r)   rö  zTOOLS._le_rclosedarrow.e  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ1ˆQ�!�A‘#�q�‰\ˆ\ Q¨!¨A©#¨q¨¡\ˆØ!Ð6ˆR�1�Q‘3˜˜�)‰^ˆ^ r¨R°©T°A°2¨J¡ˆØ Ð4ˆR�1�Q‘3˜�(‰]ˆ] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zmMake stream commands for right open arrow line end symbol. "lr" denotes left (False) or right point.
        rß  r   g      @r   r   ræ  r  rÝ  r³   r–  r—  r  rè  rÜ  rä  s                    r)   rõ  zTOOLS._le_ropenarrowBe  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ!Ð6ˆR�1�Q‘3˜˜�)‰^ˆ^ r¨R°©T°A°2¨J¡ˆØ Ð4ˆR�1�Q‘3˜�(‰]ˆ] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                ó¸  — t                                | |||¦  «        \  }}}}}	}
}}dt          d|	¦  «        z  dz  }|r|n|}t          |j        |z
  |j        d|	z  z
  |j        |z   |j        d|	z  z   ¦  «        }|j        |z  }|j        |z  }d|› |j        d›d|j        d›d�}||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
dz   z  }|S )zbMake stream commands for slash line end symbol. "lr" denotes left (False) or right point.
        g(µ¦yò?r   r®  r   r  rÝ  r³   r–  r—  r  rÛ  )	r  rÙ  rø  r4  r4  r5  rû  rü  r¶   )rß   r  r  rû  rh  r�  r’  r+  rô  r   rÖ  rm  rf  Úrwr!  r.  r	  rÝ  r1  s                      r)   r÷  zTOOLS._le_slashVe  s  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØ•c˜!˜Q‘i”iÑ #Ñ%ˆØˆNˆAˆA˜ˆÝ�”�r‘˜1œ3  Q¡™;¨¬¨b©°!´#¸¸A¹±+Ñ>Ô>ˆØŒd�R‰iˆØŒd�R‰iˆØ5�WÐ5˜cœeÐ5Ð5Ð5¨¬Ð5Ð5Ð5Ð5ˆØ
�”Ð(Ð(Ð(˜3œ5Ð(Ð(Ð(Ð(Ñ(ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                ó"  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }|j        |z  }d|› |j        d›d|j        d›d�}|j        |z  }||j        d›d|j        d›d	�z  }|j        |z  }||j        d›d|j        d›d	�z  }|j	        |z  }||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
|z   dz   z  }|S )zcMake stream commands for square line end symbol. "lr" denotes left (False) or right point.
        rß  r   rº  r   rà  rÝ  r³   r–  r—  r  rá  )r  rÙ  rø  r4  rû  r4  r5  rv  rü  rÎ  r¶   ræ  s                      r)   rï  zTOOLS._le_squarefe  sy  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆàŒD�2‰IˆØ/�7Ð/˜AœCÐ/Ð/Ð/ A¤CÐ/Ð/Ð/Ð/ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óÀ  — d„ }d}| || z
  dz  z   }| || z
  dz  z   }|||z
  dz  z   }|||z
  dz  z   }	|| |z
  |z  z   }
|| |z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|	||	z
  |z  z   }|	||	z
  |z  z   }|||z
  |z  z   }|j         d›d|j        d›d�}| ||
||¦  «        z  }| ||||¦  «        z  }| ||||	¦  «        z  }| ||||¦  «        z  }|S )zQReturn /AP string defining an oval within a 4-polygon provided as points
        c                ór   — | j         d›d| j        d›d|j         d›d|j        d›d|j         d›d|j        d›d�S )NrÝ  r³   r›  rÂ  )r²  r›  r.  s      r)   Úbezierz"TOOLS._oval_string.<locals>.bezier€e  sW   € Ø”cÐIÐIÐI˜aœcÐIÐIÐI a¤cÐIÐIÐI¨a¬cÐIÐIÐI°a´cÐIÐIÐI¸a¼cÐIÐIÐIÐIÐIr*   r¥  rÊ  rÝ  r³   r–  rÂ  )r  r  r!  r"  rð  r¦  r¡  Úmor   ÚmuÚol1Úol2Úor1Úor2Úur1Úur2Úul1Úul2r1  s                      r)   râ  zTOOLS._oval_string|e  s€  € ð	Jð 	Jð 	Jð ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆà”Ð%Ð%Ð%˜œÐ%Ð%Ð%Ð%ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØˆ	r*   c                ó¸  — t           rt          j        | j        ¦  «        }nd„ } || ¦  «        }|sdS d}d}d}|                     ¦   «         }t          |¦  «        D ]÷\  }}|dk    rA||dz
           dd …         }t          ||dz
           ¦  «        }d	x||<   x||dz
  <   ||dz
  <   ŒL|d
k    r't          ||dz
           ¦  «        g}d	x||<   ||dz
  <   Œy|dk    r5d„ ||dz
  |…         D ¦   «         }d	x||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ´|dk    r=d„ ||dz
  |…         D ¦   «         }d	x||<   x||dz
  <   x||dz
  <   x||dz
  <   ||dz
  <   Œ÷Œø|||f}|S )Nc                ó
  — | j         }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          j        |¦  «        }	 t          j        |t          d¦  «        ¦  «        }|j        sRt          j	        |¦  «        }t          j
        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        }n&# t          $ r t          rt          ¦   «          Y d S w xY w|S )Nrä   r;  r<  )rÄ   r>   r�   rõ   r  rž  rP  r  rÌ   r>  r*  r  rg   r  rv   )rß   r8  Úthis_annot_objrj  rÓ  r
  rš  s          r)   ÚTools__parse_daz(TOOLS._parse_da.<locals>.Tools__parse_daže  sú   € Ø"œZ�
Ý! *­e¬nÑ=Ô=Ð=Ð=Ð=Ý!&Ô!4°jÑ!AÔ!A�ÝÔ2°NÑCÔC�ðÝÔ7¸ÍÐRVÉÌÑXÔX�BØœ=ð "Ý"'Ô"3°CÑ"8Ô"8˜Ý"Ô0°Ý (¨Ñ 0Ô 0Ý (¨Ñ 4Ô 4Ý (¨¡¤ñ"ô "˜õ
 #Ô5°bÑ9Ô9�F�FøÝ ð ð ð Ý+Ð@µÑ0@Ô0@Ð0@Ø�F�Fðøøøð �s   ÁBC ÃD Ã?D )r=  r\   r   rß  rÜ  rÞ  r	  r   r   r\   r
  r  c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   r  r  s     r)   r¯   z#TOOLS._parse_da.<locals>.<listcomp>Äe  r  r*   r   rª  c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   r  r  s     r)   r¯   z#TOOLS._parse_da.<locals>.<listcomp>Èe  r  r*   rZ  )r'  r   ÚTools_parse_darÄ   r6   rþ  r~  )	rß   r"  rþ  rb  r  ro  r  r®   rC   s	            r)   r  zTOOLS._parse_da˜e  sð  € õ ð 	)ÝÔ&¨¬
Ñ3Ô3ˆCˆCðð ð ð& "�/ %Ñ(Ô(ˆCàð 	!Ø �=ØˆØˆØˆØ�iŠi‰kŒkˆÝ  ‘~”~ð 	ð 	‰GˆAˆtØ�tŠ|ˆ|Ø˜1˜q™5”z ! " "”~�Ý˜c ! a¡%œjÑ)Ô)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{ˆ{Ý˜c ! a¡%œjÑ)Ô)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�tŠ|ˆ|Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØØ�sŠ{ˆ{Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�ØEGÐG��A‘ÐG˜˜Q˜q™S™ÐG C¨¨!©¡HÐG¨s°1°Q±3©x¸#¸aÀ¹c¹(Øð ð
 �D˜%Ð ˆØˆ
r*   c                ó„   — | }t          j        |¦  «        }t          j        |¦  «        }t          j        ||¦  «         d S r,   )r�   r  rž  Úpdf_field_reset)rß   r8  rý  rj  s       r)   r-  zTOOLS._reset_widgetÏe  s@   € àˆ
ÝÔ,¨ZÑ8Ô8ˆÝÔ*¨>Ñ:Ô:ˆÝÔ˜c >Ñ2Ô2Ð2Ð2Ð2r*   c                ó´   — |                       d¬¦  «        }|j        s t          t          j        ¦   «         ¦  «        S t          t          |¦  «        ¦  «        S r[  )rl  rÌ   r�  r�   r‚  r·  )rÖ   rº  s     r)   r�  zTOOLS._rotate_matrixÖe  sM   € à—.’.¨%�.Ñ0Ô0ˆØÔ!ð 	7Ý$¥U¤^Ñ%5Ô%5Ñ6Ô6Ð6Ý Õ!6°wÑ!?Ô!?Ñ@Ô@Ð@r*   c                ó&   — t          | |¦  «         d S r,   )r‡  )rß   rK  s     r)   r1  zTOOLS._save_widgetÝe  s   € å  ¨Ñ/Ô/Ð/Ð/Ð/r*   c                ó  — t           rt          j        | j        |¦  «         d S 	 | j        }t	          |t
          j        ¦  «        sJ ‚t          j        t          j        |¦  «        t          d¦  «        |¦  «         t          j
        t          j        |¦  «        t          d¦  «        ¦  «         t          j
        t          j        |¦  «        t          d¦  «        ¦  «         n&# t          $ r t          rt          ¦   «          Y d S w xY wd S )Nrä   rì   rÓ  )r'  r   ÚTools_update_darÄ   r>   r�   rõ   r�  r  r  rQ  rg   r  rv   )rß   rš  r8  s      r)   Ú
_update_dazTOOLS._update_daáe  sù   € Ýð 	ÝÔ! 5¤:¨vÑ6Ô6Ð6Ð6Ð6ðØ"œZ�
Ý! *­e¬nÑ=Ô=Ð=Ð=Ð=ÝÔ.­uÔ/BÀ:Ñ/NÔ/NÕPXÐY]ÑP^ÔP^Ð`fÑgÔgÐgÝÔ"¥5Ô#6°zÑ#BÔ#BÅHÈTÁNÄNÑSÔSÐSÝÔ"¥5Ô#6°zÑ#BÔ#BÅHÈTÁNÄNÑSÔSÐSÐSøÝð ð ð Ý'Ð<­NÑ,<Ô,<Ð,<Ø��ðøøøð ˆFs   ¥C C& Ã&D	ÄD	c                 ó$   — t           dz  a t           S r\  )ÚTOOLS_JM_UNIQUE_IDr-   r*   r)   r'  zTOOLS.gen_idðe  s   € õ 	˜aÑÐÝ!Ð!r*   c                 ó,   — t          j        ¦   «          dS )z(
        Empty the glyph cache.
        N)r�   Úfz_purge_glyph_cacher-   r*   r)   Úglyph_cache_emptyzTOOLS.glyph_cache_emptyöe  s   € õ
 	Ô"Ñ$Ô$Ð$Ð$Ð$r*   r   c                ó"   — t          | |¦  «        S )z5
        Metadata of an image binary stream.
        )ri  )r	   rg  s     r)   rù  zTOOLS.image_profileýe  s   € õ
   ¨
Ñ3Ô3Ð3r*   Nc                ó2   — | �t          | ¦  «        at          S )z;
        Set MuPDF error display to True or False.
        )rø   r  ©r   s    r)   Úmupdf_display_errorszTOOLS.mupdf_display_errorsf  s   € ð ˆ>Ý#'¨¡8¤8Ð Ý#Ð#r*   c                ó2   — | �t          | ¦  «        at          S )z>
        Set MuPDF warnings display to True or False.
        )rø   rû  r  s    r)   Úmupdf_display_warningszTOOLS.mupdf_display_warningsf  s   € ð ˆ>Ý%)¨"¡X¤XÐ"Ý%Ð%r*   c                 ó   — t           j        S )z"Get version of MuPDF binary build.)r�   Ú
FZ_VERSIONr-   r*   r)   r  zTOOLS.mupdf_versionf  s   € õ ÔÐr*   c                ó–   — t          j        ¦   «          d                     t          ¦  «        }| rt                               ¦   «          |S )zN
        Get the MuPDF warnings/errors with optional reset (default).
        r%   )r�   Úfz_flush_warningsrê  rÓ  r  Úreset_mupdf_warnings)rn	  rG   s     r)   r÷  zTOOLS.mupdf_warningsf  sD   € õ 	ÔÑ!Ô!Ð!Ø�iŠiÕ0Ñ1Ô1ˆØð 	)Ý×&Ò&Ñ(Ô(Ð(Øˆ
r*   c                 ó"   — t          ¦   «         ad S r,   )r´   rÓ  r-   r*   r)   r  zTOOLS.reset_mupdf_warnings)f  s   € õ #'¡&¤&ÐÐÐr*   c                ó.   — t          j        | ¦  «         dS )z*
        Set anti-aliasing level.
        N)r�   Úfz_set_aa_level)r   s    r)   Úset_aa_levelzTOOLS.set_aa_level.f  s   € õ
 	Ô˜eÑ$Ô$Ð$Ð$Ð$r*   c                ój   — | €t           S t          | ¦  «        dz   }|dk    rd}| d d…         a t           S )Nr   rá  )r  r7   )r  r  s     r)   Úset_annot_stemzTOOLS.set_annot_stem5f  s@   € ð ˆ<Ý#Ð#Ý�4‰yŒy˜1‰}ˆØ�"Š9ˆ9ØˆDØ   œ9ÐÝÐr*   c                ó   — t          | d¬¦  «        }|j        sdS t          j        ||¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        rèt          j        |¦  «        }t          |¦  «        D ]Ä}t          j	        ||¦  «        }t          j
        |d¦  «        }	t          j        |	t          j        d¦  «        ¦  «         t          j        |	t          j        d¦  «        ¦  «         t          j        |	t          j        |¦  «        ¦  «         t          j        |t          d¦  «        |	¦  «         ŒÅdS )	Nr   r:  Fr÷	  r   r6  rù	  T)rÎ   rÌ   r�   rš  r  r  r™  r«  r\  r¬  r[  r›  r$  r^  )
r:  r   rl  rj  rb  ÚdfontsrE   r®   ÚdfontÚwarrays
             r)   r«  zTOOLS.set_font_width@f  s,  € å˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	Ø�5ÝÔ$ S¨$Ñ/Ô/ˆÝÔ# D­(Ð3DÑ*EÔ*EÑFÔFˆÝÔ˜fÑ%Ô%ð 	AÝÔ# FÑ+Ô+ˆAÝ˜1‘X”Xð Að A�ÝÔ+¨F°AÑ6Ô6�ÝÔ,¨S°!Ñ4Ô4�ÝÔ$ V­UÔ->¸qÑ-AÔ-AÑBÔBÐBÝÔ$ V­UÔ->¸uÑ-EÔ-EÑFÔFÐFÝÔ$ V­UÔ->¸uÑ-EÔ-EÑFÔFÐFÝÔ" 5­(°3©-¬-¸Ñ@Ô@Ð@Ð@Øˆtr*   c                ó.   — t          j        | ¦  «         dS )z6
        Set the graphics minimum line width.
        N)r�   Úfz_set_graphics_min_line_width)Úmin_line_widths    r)   Úset_graphics_min_line_widthz!TOOLS.set_graphics_min_line_widthRf  s   € õ
 	Ô,¨^Ñ<Ô<Ð<Ð<Ð<r*   c                ó¼   — | r8t           j        rt          j        ¦   «          dS t          dt          ¦  «         dS t           j        rt          j        ¦   «          dS dS )z!Set ICC color handling on or off.zMuPDF built w/o ICC supportN)r�   rŒ  Úfz_enable_iccrÀ  r{  Úfz_disable_iccr  s    r)   Úset_icczTOOLS.set_iccYf  so   € ð ð 	#ÝÔ"ð IÝÔ#Ñ%Ô%Ð%Ð%Ð%åÐ6Õ7GÑHÔHÐHÐHÐHÝÔ ð 	#ÝÔ Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r*   c                óP   — | �t          | ¦  «        t          _        t          j        S )z!Set / unset MuPDF device caching.)rø   r  rˆ   r  s    r)   Úset_low_memoryzTOOLS.set_low_memorydf  s    € ð ˆ>Ý)-¨b©¬�HÔ&ÝÔ)Ð)r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )z Set / unset small glyph heights.)rø   r  r‰   r'  r   Úset_small_glyph_heightsr  s    r)   r.  zTOOLS.set_small_glyph_heightskf  s=   € ð ˆ>Ý+/°©8¬8�HÔ(Ýð LÝÔ-­hÔ.JÑKÔKÐKÝÔ+Ð+r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )zK
        Set / unset returning fontnames with their subset prefix.
        )rø   r  rŠ   r'  r   Úset_subset_fontnamesr  s    r)   r0  zTOOLS.set_subset_fontnamestf  s=   € ð
 ˆ>Ý(,¨R©¬�HÔ%Ýð FÝÔ*­8Ô+DÑEÔEÐEÝÔ(Ð(r*   c                 óŒ   — t          t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         ¬¦  «        S )z,
        Show anti-aliasing values.
        )rú  r   Úgraphics_min_line_width)r5   r�   Úfz_graphics_aa_levelÚfz_text_aa_levelÚfz_graphics_min_line_widthr-   r*   r)   Úshow_aa_levelzTOOLS.show_aa_levelf  s?   € õ
 Ý Ô5Ñ7Ô7ÝÔ-Ñ/Ô/Ý*/Ô*JÑ*LÔ*Lðñ ô ð 	r*   c                 ó   — dS )z)
        MuPDF store size limit.
        Nr-   r-   r*   r)   Ústore_maxsizezTOOLS.store_maxsizeŠf  ó	   € ð ˆtr*   c                óz   — | dk    rt          j        ¦   «          dS | dk    rt          j        d| z
  ¦  «         dS dS )z7
        Free 'percent' of current store size.
        rª  r   N)r�   Úfz_empty_storeÚfz_shrink_store)Úpercents    r)   r¬  zTOOLS.store_shrink’f  sL   € ð
 �cŠ>ˆ>ÝÔ Ñ"Ô"Ð"Ø�1Ø�QŠ;ˆ;ÝÔ! 3¨¡=Ñ1Ô1Ð1Ð1Ð1ð ˆ;r*   c                 ó   — dS )z+
        MuPDF current store size.
        Nr-   r-   r*   r)   Ú
store_sizezTOOLS.store_sizežf  r9  r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )zA
        Set ascender / descender corrections on or off.
        )rø   r  r‹   r'  r   Úset_skip_quad_correctionsr  s    r)   Úunset_quad_correctionszTOOLS.unset_quad_corrections¦f  s=   € ð
 ˆ>Ý-1°"©X¬X�HÔ*Ýð PÝÔ/µÔ0NÑOÔOÐOÝÔ-Ð-r*   r­  r>  r=  r,   )1r/   r0   r1   rµ  rÏ  r›  rJ  rx  r½  rÙ  rô  rð  ró  rñ  rò  rö  rõ  r÷  rï  râ  r  r-  r�  r1  r  r'  r  rù  r  r  r  r÷  r  r  r  r«  r&  r*  r,  r.  r0  r6  r8  r¬  r?  rB  r  r¡  Úfitz_configr-   r*   r)   r  r  yd  s¤  € € € € € ðð ð7ð 7ð 7ð ðð ñ „\ðð. ðð ñ „\ðð ðð ð ñ „\ðð ð#3ð #3ñ „\ð#3ðJ ðð ñ „\ðð ðð ñ „\ðð ðð ñ „\ðð& ðð ñ „\ðð* ðð ñ „\ðð& ðð ñ „\ðð& ðð ñ „\ðð& ðð ñ „\ðð ðð ñ „\ðð* ðð ñ „\ðð6 ð4ð 4ñ „\ð4ðl ð3ð 3ñ „\ð3ð ðAð Añ „\ðAð ð0ð 0ñ „\ð0ðð ð ð ð"ð "ñ „\ð"ð
 ð%ð %ñ „\ð%ð ð4ð 4ð 4ñ „\ð4ð ð$ð $ð $ñ „\ð$ð ð&ð &ð &ñ „\ð&ð ð ð  ñ „\ð ð ð	ð 	ð 	ñ „\ð	ð ð)ð )ñ „\ð)ð ð%ð %ñ „\ð%ð ð ð  ð  ñ „\ð ð ðð ñ „\ðð" ð=ð =ñ „\ð=ð ð#ð #ð #ñ „\ð#ð ð*ð *ð *ñ „\ð*ð ð,ð ,ð ,ñ „\ð,ð ð)ð )ð )ñ „\ð)ð ðð ñ „\ðð ðð ñ „\ðð ð2ð 2ñ „\ð2ð ðð ñ „\ðð ð.ð .ð .ñ „\ð.ð Ðà �.Ñ"Ô"€K€K€Kr*   r  c                 ó|   — t          j        ¦   «          t          j        d ¦  «         t          j        d ¦  «         d S r,   )r�   r  Úfz_set_warning_callbackÚfz_set_error_callbackr-   r*   r)   Ú_atexitrG  Îf  s9   € å	ÔÑÔÐÝ	Ô! $Ñ'Ô'Ð'Ý	Ô Ñ%Ô%Ð%Ð%Ð%r*   ©Ú	_wxcolorsr
  c                 ó   — t           S )z�
    Returns dict mapping from name to (red, green, blue).
        name: lower-case name.
        red, green, blue: float in range 0..1.
    )Úpdfcolorr-   r*   r)   Úcolors_pdf_dictrL  èf  s	   € õ €Or*   c                 ó   — t           S )z�
    Returns list of (name, red, green, blue) tuples:
        name: upper-case name.
        red, green, blue: integers in range 0..255.
    rH  r-   r*   r)   Úcolors_wx_listrN  ñf  s
   € õ Ðr*   c                ó®  — ddl }t          dt          ›�¦  «         t          j                             t          › d�¦  «        }|› d�}|                     ¦   «         dk    r|› d�}n|}t          d¦  «         t          d	|›�¦  «         t          d
|›�¦  «         t          j                             |¦  «        sJ d|›d�¦   «         ‚t          j                             |¦  «        sJ d|›d�¦   «         ‚|                     ¦   «         dk    �rE| �rBt          d|›dt          › d�¦  «         t           	                    d¦  «        dd…         }d 
                    |¦  «        }d|› d�}t          d|›d�¦  «         t          j        |¦  «        D ]Â}t          j        ||¦  «        }|r©|› d|                     d¦  «        › �}	t          j                             |	¦  «        st          j                             |	¦  «        r't          d|	›d�¦  «         t          j        |	¦  «         t          d|	› d|› �¦  «         t          j        ||	¦  «         ŒÃ||fS )aù  
    Allows PyMuPDF installation to be used to compile and link programmes that
    use the MuPDF C/C++ API.
    
    Args:
        make_links:
            If true, then on non-windows we also create softlinks to any shared
            libraries that are supplied with a version suffix; this allows them
            to be used in a link command.

            For example we create links such as:

            site-packages/pymupdf/
                libmupdf.so -> libmupdf.so.26.7
                libmupdfcpp.so -> libmupdfcpp.so.26.7
    
    Returns: (mupdf_include, mupdf_lib).
        mupdf_include:
            Path of MuPDF include directory within PyMuPDF install.
        mupdf_lib
            Path of MuPDF library directory within PyMuPDF install.
    r   Nzmupdf_version=z/..z/mupdf-devel/includeÚWindowsz/mupdf-devel/libzWithin installed PyMuPDF:z    mupdf_include=z    mupdf_lib=zNot a directory: mupdf_include=r   zNot a directory: mupdf_lib=zCreating symlinks in mupdf_lib=z for MuPDF-z .so files.r   r   z[.]z^(lib[^.]+[.]so)[.]ú$zmupdf_lib_regex=rb  zRemoving existing link pfrom=zCreating symlink: z -> )rá  r'   r  rd   r
   ÚnormpathÚ__file__Úsystemrz  r6   rê  r{  rÑ  r  rÒ  Úislinkr  rA  Úsymlink)
Ú
make_linksrá  r²  Úmupdf_includeÚ	mupdf_libÚregex_suffixÚmupdf_lib_regexÚleafr�  Úpfroms
             r)   Ú_mupdf_develr^  úf  s�  € ð. €O€O€OåÐ�=ÐÐÑÔÐå
Œ×Ò�HÐ)Ð)Ð)Ñ*Ô*€AàÐ.Ð.Ð.€Mà‡‚ÑÔ˜IÒ%Ð%àÐ*Ð*Ð*ˆ	ˆ	ð ˆ	ÝÐ$Ñ%Ô%Ð%ÝÐˆ}ÐÐÑ Ô Ð ÝÐˆyÐÐÑÔÐåŒ7�=Š=˜Ñ'Ô'ÐNÐNÐ)N¸]Ð)NÐ)NÐ)NÑNÔNÐ'ÝŒ7�=Š=˜Ñ#Ô#ÐFÐFÐ%F¸Ð%FÐ%FÐ%FÑFÔFÐ#à‡‚ÑÔ˜IÒ%Ñ%¨*Ñ%õ 	ÐU IÐUÐU½=ÐUÐUÐUÑVÔVÐVÝ$×*Ò*¨3Ñ/Ô/°°!°Ô4ˆØ—z’z ,Ñ/Ô/ˆØ?°Ð?Ð?Ð?ˆÝÐ"ˆÐ"Ð"Ð"Ñ#Ô#Ð#Ý”J˜yÑ)Ô)ð 	(ð 	(ˆDÝ”˜¨$Ñ/Ô/ˆAØð 	(Ø$Ð3Ð3 q§w¢w¨q¡z¤zÐ3Ð3�õ ”7—>’> %Ñ(Ô(ð %­B¬G¯NªN¸5Ñ,AÔ,Að %ÝÐ;°%Ð;Ð;Ð;Ñ<Ô<Ð<Ý”I˜eÑ$Ô$Ð$ÝÐ:¨Ð:Ð:°DÐ:Ð:Ñ;Ô;Ð;Ý”
˜4 Ñ'Ô'Ð'øà˜)Ð#Ð#r*   )r  )rN  c                  ó   — e Zd ZdS )ÚFitzDeprecationNr9  r-   r*   r)   r`  r`  Vg  s   € € € € € Ø€Dr*   r`  c                 óê  — t          j        dt          ¬¦  «         dþd„} | t           _        dÿd„} |t          dd¦  «          |t          d¦  «          |t          dd	¦  «          |t          d
¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          d¦  «          |t          dd¦  «          |t
          d¦  «          |t
          dd¦  «          |t          d¦  «          |t          d¦  «          |t          dd ¦  «          |t          d!¦  «          |t          d"¦  «          |t          d#d$¦  «          |t          d%d&¦  «          |t          d'd(¦  «          |t          d)d*¦  «          |t          d+d,¦  «          |t          d-d.¦  «          |t          d/d0¦  «          |t          d1d2¦  «          |t          d3¦  «          |t          d4¦  «          |t          d5¦  «          |t          d6¦  «          |t          d7¦  «          |t          d8d9¦  «          |t          d:d;¦  «          |t          d<d=¦  «          |t          d>¦  «          |t          d?¦  «          |t          d@dA¦  «          |t          dBdC¦  «          |t          dDdE¦  «          |t          dF¦  «          |t          dG¦  «          |t          dHdI¦  «          |t          dJ¦  «          |t          dKdL¦  «          |t          dMdN¦  «          |t          dO¦  «          |t          dP¦  «          |t          dQ¦  «          |t          dR¦  «          |t          dS¦  «          |t          dT¦  «          |t          dU¦  «          |t          dV¦  «          |t          dW¦  «          |t          dX¦  «          |t          dYdZ¦  «          |t          d[¦  «          |t          d\d]¦  «          |t          d^d_¦  «          |t          d`da¦  «          |t          db¦  «          |t          dc¦  «          |t          dd¦  «          |t          de¦  «          |t          dfdg¦  «          |t          dh¦  «          |t          di¦  «          |t          dj¦  «          |t          dkdl¦  «          |t          dm¦  «          |t          dn¦  «          |t          do¦  «          |t          dp¦  «          |t          dqdr¦  «          |t          ds¦  «          |t          dsdt¦  «          |t          du¦  «          |t          dv¦  «          |t          dw¦  «          |t          dx¦  «          |t          dy¦  «          |t          d¦  «          |t          d¦  «          |t          dz¦  «          |t          d{d|¦  «          |t          d}d~¦  «          |t          dd€¦  «          |t          d�d‚¦  «          |d dƒd„¦  «          |d d…d†¦  «          |d d‡¦  «          |d d‡dˆ¦  «          |d d‰dŠ¦  «          |d d‹dŒ¦  «          |d d�dŽ¦  «          |d d�¦  «          |d d�¦  «          |t          dy¦  «          |t          d‘¦  «          |t          d’¦  «          |t          d“¦  «          |t          d”¦  «          |t          d•¦  «          |t          d–¦  «          |t          d—¦  «          |t          d˜¦  «          |t          d™¦  «          |t          dš¦  «          |t          d›¦  «          |t          dœ¦  «          |t          d�¦  «          |t          dž¦  «          |t          dŸ¦  «          |t          d ¦  «          |t          d¡¦  «          |t          d¢¦  «          |t          d£¦  «          |t          d¤d¥¦  «          |t          d¦d§¦  «          |t          d¨¦  «          |t          d©¦  «          |t          dª¦  «          |t          d«¦  «          |t          d¬¦  «          |t          d­¦  «          |t          d®¦  «          |t          d¯¦  «          |t          d°¦  «          |t          d±¦  «          |t          d²¦  «          |t          d³¦  «          |t          d´¦  «          |t          dµ¦  «          |t          d¶¦  «          |t          d·¦  «          |t          d¸¦  «          |t          d¹¦  «          |t          dº¦  «          |t          d»d¼¦  «          |t          d½¦  «          |t          d¾d¿¦  «          |t          dÀ¦  «          |t          dÁdÂ¦  «          |t          dÃ¦  «          |t          d¦  «          |t          dÄdÅ¦  «          |t          d
¦  «          |t          dÆ¦  «          |t          dÇ¦  «          |t          d¦  «          |t          dd¦  «          |t          dÈ¦  «          |t          dÉ¦  «          |t          dÊ¦  «          |t          dË¦  «          |t          dÌ¦  «          |t          dÍdÎ¦  «          |t          dÏ¦  «          |t          dÐ¦  «          |t          dÑdÒ¦  «          |t          dÓdÔ¦  «          |t          dÕ¦  «          |t          dÖ¦  «          |t          d×¦  «          |t          dØ¦  «          |t          dÙdÚ¦  «          |t          dÛdÜ¦  «          |t          dÝ¦  «          |t          dÞdß¦  «          |t          dà¦  «          |t          dá¦  «          |t          dâ¦  «          |t          dã¦  «          |t          dä¦  «          |t          dådæ¦  «          |t          dç¦  «          |t          dèdé¦  «          |t          dêdë¦  «          |t          dìdí¦  «          |t          dîdï¦  «          |t          dîdð¦  «          |t          dñ¦  «          |t          dòdó¦  «          |t          dô¦  «          |t          dõ¦  «          |t          d¦  «          |t          dö¦  «          |t          d÷dø¦  «          |t          d÷dù¦  «          |t          d÷dú¦  «          |t          dû¦  «          |t          dw¦  «          |t          dü¦  «          |t          ds¦  «          |t          dsdt¦  «          |t          du¦  «          |t          dv¦  «          |t          dw¦  «          |t          dx¦  «          |t          dý¦  «          |t          dã¦  «          |t           d¬¦  «          |t           d­¦  «          |t           d®¦  «          |t           d¯¦  «          |t           d°¦  «          |t           d±¦  «          |t           d²¦  «          |t           d³¦  «          |t           d´¦  «          |t           dµ¦  «          |t           d¶¦  «          |t           dË¦  «          |t           dÌ¦  «         d S (   NÚonce©Úcategoryc                ó  — t          j        | ||||¬¦  «        }|                     d¦  «        }|dk     rt          |¦  «         d S ||d …                              ¦   «         d         dd …         }t          |¦  «         d S )N)ro   r`  r   rZ  )ÚwarningsÚformatwarningr¡   r'   rì  )r˜   Úcatrf   rh   ra   ro   r   r�  s           r)   Úshowthisz!restore_aliases.<locals>.showthis\g  s~   € ÝÔ% c¨3°¸&ÀtÐLÑLÔLˆØ�IŠIÐ'Ñ(Ô(ˆØˆqŠ5ˆ5Ý�‰IŒIˆIØˆFØ�A�B�BŒx×"Ò"Ñ$Ô$ QÔ'¨¨¨Ô+ˆÝˆD‰	Œ	ˆ	ˆ	ˆ	r*   c                ó¦  ‡ ‡‡‡— ‰ €t           j        t                   Š ‰s3dŠd}‰D ],}|dk    rd}Œ|r‰|                     ¦   «         z  Šd}Œ'‰|z  ŠŒ-t	          ‰ ‰¦  «        Št	          ‰ ‰d¦  «        rJ d‰ › d‰› �¦   «         ‚t          ‰¦  «        r-ˆ ˆˆˆfd„}t          ‰ ‰|¦  «         d	‰› d
‰j        › �|_        dS t          ‰ ‰‰¦  «         dS )a¹  
        Adds an alias for a class_ or module item clled <class_>.<new>.

        class_:
            Class/module to modify; use None for the current module.
        new_name:
            String name of existing item, e.g. name of method.
        legacy_name:
            Name of legacy object to create in <class_>. If None, we generate
            from <item> by removing underscores and capitalising the next
            letter.
        Nr\   Fr  Tzclass z already has c            	     ó^   •— t          j        d‰›d‰› d‰› d�t          ¬¦  «          ‰| i |¤ŽS )Nz"legacy_name=z" removed from z after v1.19.0 - use "z".rc  )rf  r1  r`  )r  r  Úclass_Úlegacy_nameÚnew_nameÚ
new_objects     €€€€r)   Údeprecated_functionz<restore_aliases.<locals>._alias.<locals>.deprecated_function„g  sU   ø€ Ý”Øc˜KÐcÐc¸ÐcÐcÐW_ÐcÐcÐcÝ!0ðñ ô ð ð "�z DÐ3¨FÐ3Ð3Ð3r*   z;*** Deprecated and removed in version after v1.19.0 - use "z". ***
)r˜
  Úmodulesr/   rŠ	  rý   r`  r>  rµ  )rl  rn  rm  Úcapitalise_nextrË  rp  ro  s   ```   @r)   Ú_aliaszrestore_aliases.<locals>._aliasgg  sO  øøøø€ ð ˆ>Ý”[¥Ô*ˆFØð 
	%ØˆKØ#ˆOØð %ð %�Ø˜’8�8Ø&*�O�OØ$ð %Ø 1§7¢7¡9¤9Ñ,�KØ&+�O�Oà 1Ñ$�K�KÝ˜f hÑ/Ô/ˆ
Ý˜F K°Ñ6Ô6ÐcÐcÐ8cÀÐ8cÐ8cÐVaÐ8cÐ8cÑcÔcÐ6Ý�ZÑ Ô ð 	6ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4õ �V˜[Ð*=Ñ>Ô>Ð>ð,ÐRZð ,ð ,Ø!Ô)ð,ð ,ð  Ô'Ð'Ð'õ
 �V˜[¨*Ñ5Ô5Ð5Ð5Ð5r*   rÑ  ÚfileGetrñ  r  ÚsoundGetr  r  r  ÚgetTextPagerA  ri  ÚsetBlendModert  r‚  r…  r“  r¦  r¨  r«  ÚsetOCr²  rÁ  r(  ÚfileUpdrÝ  rÞ  r+  ÚconvertToPDFrÜ  rè  ré  ÚdeletePageRangerñ  ÚembeddedFileAddró  ÚembeddedFileCountrö  ÚembeddedFileDelrø  ÚembeddedFileGetrþ  ÚembeddedFileInforú  ÚembeddedFileNamesr  ÚembeddedFileUpdr  r  r8  rC  rb  r}  ÚgetOCGsr–  ÚgetPageFontListrš  ÚgetPageImageListr©  r°  r²  ÚgetPageXObjectListr·  ÚgetSigFlagsrå  ÚgetToCrÆ  rã  rÚ  Ú	insertPDFrö  rÑ  Ú	isFormPDFrç  ÚisPDFr  r  r9  r  rY  rg  r)  râ  r~  rÜ  r…  ÚpageCropBoxr|  r‘  Ú
PDFCatalogr>  Ú
PDFTrailerr¨  ÚpreviousLocationr»  r}	  r¡  rm	  rë	  ÚsetToCrò	  r“  rq	  ri
  ÚisStreamr†  r’  rˆ
  rj
  rŒ
  ÚmetadataXMLrU  ÚgetRectArear;  r<  rd	  re	  rº  r•  r˜  Ú	preRotater�  ÚpreScalerŸ  ÚpreShearr£  ÚpreTranslaterï  Ú	getPDFnowrq  Ú	getPDFstrrË  ÚgetTextlengthrù  ÚImagePropertiesra  Ú	PaperRectr`  Ú	PaperSizerc  r  r3  r…  r‰  r�  r�  r–  r™  r›  rŸ  r¡  r£  rf	  rª  r¬  r¯  r²  rµ  r·  r¢  r„  rk  r   ÚCropBoxPositionr  ro	  r  r|  r*  r/  r1  r4  r7  r9  r;  rÕ  rC  rG  rJ  rR  rU  rX  rj  rn  ÚgetDisplayListr  rô  ÚgetFontListr  r†  ÚgetImageListr}  r  ÚgetSVGimager  r  r-  rU  rB  r4  r×  rû  Ú
_isWrappedrÄ  rT  r€  r“  rs  ÚMediaBoxSizerÔ  ry  ra  r|	  r�  Ú
setCropBoxr¾  ÚsetMediaBoxrÅ  rA  ÚshowPDFpager{  r§  rü  r±  r  rm  Ú
copyPixmapr/  r4  ÚinvertIRectr[  ÚpillowWriter^  Ú
pillowDatar3  Ú
writeImageÚwritePNGr�  rè  ÚsetResolutionr•  r—  r¦  rÙ  ÚgetImageDataÚ
getPNGDataÚ
getPNGdatar©  r  rQ  rø	  r,   )rf  Úfilterwarningsr`  Úshowwarningró   rÇ  rÁ   rÄ  r"  r…  rb  rÒ   rç  r<  r4  r°  ru  )ri  rs  s     r)   Úrestore_aliasesr´  Yg  s�  € ÝÔ˜V­oÐ>Ñ>Ô>Ð>ðð ð ð ð $…HÔð)6ð )6ð )6ð )6ðV €F�E�:¨IÑ6Ô6Ð6Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;¨JÑ7Ô7Ð7Ø
€F�E�:ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�E�>¨MÑ:Ô:Ð:Ø
€F�E�;ÑÔÐØ
€F�E�?¨NÑ;Ô;Ð;Ø
€F�E�<Ñ Ô Ð Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;ÑÔÐØ
€F�E�:ÑÔÐØ
€F�E�?Ñ#Ô#Ð#Ø
€F�E�:ÑÔÐØ
€F�E�8˜WÑ%Ô%Ð%Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�:ÑÔÐØ
€F�E�=¨IÑ6Ô6Ð6Ø
€F�K˜Ñ&Ô&Ð&Ø
€F�K˜¨MÑ:Ô:Ð:Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ*Ñ+Ô+Ð+Ø
€F�HÐ&¨NÑ;Ô;Ð;Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�nÐ,=Ñ>Ô>Ð>Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�oÐ,?Ñ@Ô@Ð@Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�nÐ,>Ñ?Ô?Ð?Ø
€F�H�oÐ,?Ñ@Ô@Ð@Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�j¨IÑ6Ô6Ð6Ø
€F�HÐ&Ð,=Ñ>Ô>Ð>Ø
€F�HÐ'Ð,>Ñ?Ô?Ð?Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ)Ð,@ÑAÔAÐAØ
€F�H�n¨MÑ:Ô:Ð:Ø
€F�H�i Ñ*Ô*Ð*Ø
€F�HÐ(Ñ)Ô)Ð)Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�l¨KÑ8Ô8Ð8Ø
€F�H�jÑ!Ô!Ð!Ø
€F�H�m¨KÑ8Ô8Ð8Ø
€F�H�h Ñ(Ô(Ð(Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�lÑ#Ô#Ð#Ø
€F�H�jÑ!Ô!Ð!Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�lÑ#Ô#Ð#Ø
€F�H�n¨MÑ:Ô:Ð:Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�m¨LÑ9Ô9Ð9Ø
€F�H�m¨LÑ9Ô9Ð9Ø
€F�H�oÐ,>Ñ?Ô?Ð?Ø
€F�H�nÑ%Ô%Ð%Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�i Ñ*Ô*Ð*Ø
€F�HÐ(Ñ)Ô)Ð)Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ&¨JÑ7Ô7Ð7Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�mÑ$Ô$Ð$Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�HÐ)¨MÑ:Ô:Ð:Ø
€F�E�:ÑÔÐØ
€F�E�:¨MÑ:Ô:Ð:Ø
€F�E�?Ñ#Ô#Ð#Ø
€F�E�>Ñ"Ô"Ð"Ø
€F�E�:ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�,ÑÔÐØ
€F�FÐ$Ñ%Ô%Ð%Ø
€F�F�K¨KÑ8Ô8Ð8Ø
€F�F�J¨JÑ7Ô7Ð7Ø
€F�F�J¨JÑ7Ô7Ð7Ø
€F�F�N¨NÑ;Ô;Ð;Ø
€FˆD�-¨KÑ8Ô8Ð8Ø
€FˆD�-¨KÑ8Ô8Ð8Ø
€FˆDÐ#Ñ$Ô$Ð$Ø
€FˆDÐ#¨OÑ<Ô<Ð<Ø
€FˆD�/Ð,=Ñ>Ô>Ð>Ø
€FˆD�,¨KÑ8Ô8Ð8Ø
€FˆD�,¨KÑ8Ô8Ð8Ø
€FˆD�-Ñ Ô Ð Ø
€FˆD�.Ñ!Ô!Ð!Ø
€F�G�]Ñ#Ô#Ð#Ø
€F�G�YÑÔÐØ
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ$Ñ%Ô%Ð%Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ%Ñ&Ô&Ð&Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ$Ñ%Ô%Ð%Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�D�,ÑÔÐØ
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�)¨IÑ6Ô6Ð6Ø
€F�DÐ$Ð,=Ñ>Ô>Ð>Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ%Ñ&Ô&Ð&Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�/Ñ"Ô"Ð"Ø
€F�D�+ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�.Ñ!Ô!Ð!Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�DÐ#Ð,<Ñ=Ô=Ð=Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�+¨MÑ:Ô:Ð:Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�,¨NÑ;Ô;Ð;Ø
€F�D�+ÑÔÐØ
€F�D�,ÑÔÐØ
€F�D�/¨MÑ:Ô:Ð:Ø
€F�D�*ÑÔÐØ
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�-Ñ Ô Ð Ø
€F�D�.¨MÑ:Ô:Ð:Ø
€F�D�-Ñ Ô Ð Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�,¨LÑ9Ô9Ð9Ø
€F�D�,ÑÔÐØ
€F�D�,ÑÔÐØ
€F�D�*¨JÑ7Ô7Ð7Ø
€F�D�/¨NÑ;Ô;Ð;Ø
€F�D�+ÑÔÐØ
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ#Ñ$Ô$Ð$Ø
€F�D�,ÑÔÐØ
€F�D�-¨LÑ9Ô9Ð9Ø
€F�D�.¨MÑ:Ô:Ð:Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�/¨MÑ:Ô:Ð:Ø
€F�DÐ)Ñ*Ô*Ð*Ø
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�,ÑÔÐØ
€F�F�LÑ!Ô!Ð!Ø
€F�F�F¨LÑ9Ô9Ð9Ø
€F�F�LÑ!Ô!Ð!Ø
€F�F�N¨MÑ:Ô:Ð:Ø
€F�F�J¨MÑ:Ô:Ð:Ø
€F�F�M¨LÑ9Ô9Ð9Ø
€F�F�F¨LÑ9Ô9Ð9Ø
€F�F�F¨JÑ7Ô7Ð7Ø
€F�F�KÑ Ô Ð Ø
€F�F�I¨OÑ<Ô<Ð<Ø
€F�F�LÑ!Ô!Ð!Ø
€F�F�KÑ Ô Ð Ø
€F�F�JÑÔÐØ
€F�F�KÑ Ô Ð Ø
€F�F�I¨NÑ;Ô;Ð;Ø
€F�F�I¨LÑ9Ô9Ð9Ø
€F�F�I¨LÑ9Ô9Ð9Ø
€F�D�+ÑÔÐØ
€F�D�*ÑÔÐØ
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�*ÑÔÐØ
€F�D�*¨MÑ:Ô:Ð:Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�*ÑÔÐØ
€F�D�-Ñ Ô Ð Ø
€F�J˜Ñ'Ô'Ð'Ø
€F�J˜Ñ%Ô%Ð%Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;ÑÔÐØ
€F�E�;ÑÔÐØ
€F�E�?Ñ#Ô#Ð#Ø
€F�E�;ÑÔÐØ
€F�E�;ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�E�?Ñ#Ô#Ð#Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�EÐ#Ñ$Ô$Ð$Ð$Ð$r*   zPyMuPDF z : Python bindings for the MuPDF z library.
Python z running on rÆ  l        z-bit).
c                 óP   — t           rt          j        | i |¤ŽS t          d¦  «        ‚©Nz(pymupdf4llm functions are not available.)Úpymupdf4llmÚto_markdownr³  ©r  r  s     r)   Ú_to_markdownrº  h  s0   € Ýð NÝÔ&¨Ð7°Ð7Ð7Ð7å!Ð"LÑMÔMÐMr*   c                 óP   — t           rt          j        | i |¤ŽS t          d¦  «        ‚r¶  )r·  Úto_textr³  r¹  s     r)   Ú_to_textr½  …h  ó0   € Ýð NÝÔ" DÐ3¨FÐ3Ð3Ð3å!Ð"LÑMÔMÐMr*   c                 óP   — t           rt          j        | i |¤ŽS t          d¦  «        ‚r¶  )r·  Úto_jsonr³  r¹  s     r)   Ú_to_jsonrÁ  ‹h  r¾  r*   c                 óP   — t           rt          j        | i |¤ŽS t          d¦  «        ‚r¶  )r·  Ú	to_chunksr³  r¹  s     r)   Ú
_to_chunksrÄ  ‘h  s0   € Ýð NÝÔ$ dÐ5¨fÐ5Ð5Ð5å!Ð"LÑMÔMÐMr*   c                 óP   — t           rt          j        | i |¤ŽS t          d¦  «        ‚r¶  )r·  Úconvert_batchr³  r¹  s     r)   Ú_convert_batchrÇ  —h  s0   € Ýð NÝÔ(¨$Ð9°&Ð9Ð9Ð9å!Ð"LÑMÔMÐMr*   c                óV   — t           rt          j        | ¦  «        S t          d¦  «        ‚r¶  )r·  Ú
use_layoutr³  )Úyess    r)   Ú_use_layoutrË  �h  s+   € Ýð NÝÔ% cÑ*Ô*Ð*å!Ð"LÑMÔMÐMr*   )r\   r   r¯
  rš  )r   r   r   r   r   N)r±  r  rÚ  rµ   rµ  )rÊ  rÏ  rÌ  r4   )r:  rÖ  rÊ  rÏ  rÌ  r4   )r¢  )rË  rÏ  )rÖ   rÒ   r	  rá  rÚ  rµ   )r:  rÁ   r   r4   rÚ  r´   )rv	  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  )Tr   )
r   rá  rW  rÈ  rI  rø   r$  r4   rÚ  rá  )r�  rá  rÚ  rá  r,   )
rê  rá  ré  rÍ  r0  rë  r   rÍ  rÚ  rá  )rÞ  r  r   )
r   rá  r	  rá  r
  r~  rû  r4   rÚ  r~  )rß  rê  rÚ  r5   )r  rº   r  rº   rÚ  r…  )rm
  )r®   rá  rf   rÍ  )r®   rá  )rÖ   rÆ  rÚ  r4   )rÖ   rÆ  rß   rï  rÚ  rã  r�
  r?  )r¤  rº   rë  rº   r  r¼   rÚ  r´   )r   rá  rÚ  r4   )r  r   r   )r  r¼   r_  r4   r   r4   rÚ  r´   )r�  rá  rÚ  r4  )r�  rá  rÚ  rµ   )rÖ   rÆ  rb  r¨  rÚ  rã  )r¬  r4   rÚ  rµ   )r	  r4   rÚ  rá  (Ü  rµ  Ú
__future__r   ÚatexitrE  rÓ  rã  Úimportlib.utilr•   rb   r9   rU  rd   rx  rÑ  r
  r˜
  rƒ  r  r–
  rf  r  r~  r\   r   rH   r}   r8   rà  rW   rZ   r´   rM   rP   rN   rR   rT   rX   r[   r'   rr   rv   râ  r¦  r*
  r‚
  r   r�   r  r'  r…   r  rŽ   Ú__annotations__Úpymupdf.layoutr   r
  r�   r‘   r™   rœ   rS  Ú	machineryÚSourceFileLoaderÚload_moduler  r  r�   rg   r;   rž   Úreinit_singlethreadedr¢   Ú_buildr£   r¤   r¥   r¦   r§   r¨   r©   rª   r  r  Úpymupdf_daterµ   r6   ræ  ÚFZ_VERSION_MAJORÚFZ_VERSION_MINORÚFZ_VERSION_PATCHÚversionÚVersionFitzÚVersionBindÚVersionDater¶   Úformat_gr)  rh  r  rê  ÚOptionalr   r5   rE  r~  rÎ  ÚUnionr4   r«  ÚSequencerÏ  rá  rÍ  r¹   rº   r»   r¼   rÊ   rÎ   r×   rÚ   rà   r•  rÇ  ró   rD  r“  r   r·  rÇ  ÚFzDocument_insert_pdfrê  rÁ   r:   r�
  r=  ré  r"  r…  r¨  r¨  r:  rI  r3  rb  rŸ  rÒ   rç  rú  r<  r4  ru  r;  r  r°  rÄ  rq  r/   Ú_selfr�
  rB   r°  Ú_valuer3   r>  Ú
getmembersÚPDF_SIGNATURE_SHOW_LABELSÚPDF_SIGNATURE_SHOW_DNÚPDF_SIGNATURE_SHOW_DATEÚPDF_SIGNATURE_SHOW_TEXT_NAMEÚPDF_SIGNATURE_SHOW_GRAPHIC_NAMEÚPDF_SIGNATURE_SHOW_LOGOÚ PDF_SIGNATURE_DEFAULT_APPEARANCEÚUCDN_EAST_ASIAN_HÚPDF_TX_FIELD_IS_MULTILINEÚUCDN_SCRIPT_ADLAMÚAnyrë  ÚBase14_fontnamesr½
  rÝ  râ  r”  rU  rÙ  rÚ  r  rÓ  r  rû  ÚFZ_RECOMPRESS_NEVERÚFZ_RECOMPRESS_SAMEÚFZ_RECOMPRESS_LOSSLESSrÂ  ÚFZ_RECOMPRESS_J2Kr»  r½  ÚFZ_SUBSAMPLE_BICUBICÚ	PDF_OC_ONÚPDF_OC_TOGGLEÚ
PDF_OC_OFFrá	  rm  rs  rr  rÐ  rp  rÇ  rÆ  ÚLINK_FLAG_R_VALIDÚLINK_FLAG_B_VALIDÚLINK_FLAG_FIT_HÚLINK_FLAG_FIT_VÚLINK_FLAG_R_IS_ZOOMr†  r‡  ÚSTAMP_ApprovedÚ
STAMP_AsIsÚSTAMP_ConfidentialÚSTAMP_DepartmentalÚSTAMP_ExperimentalÚSTAMP_ExpiredÚSTAMP_FinalÚSTAMP_ForCommentÚSTAMP_ForPublicReleaseÚSTAMP_NotApprovedÚSTAMP_NotForPublicReleaseÚ
STAMP_SoldÚSTAMP_TopSecretÚSTAMP_DraftrK  rL  rM  rN  ÚTEXT_FONT_SUPERSCRIPTrG  rH  rI  rJ  ÚTEXT_OUTPUT_TEXTÚTEXT_OUTPUT_HTMLÚTEXT_OUTPUT_JSONÚTEXT_OUTPUT_XMLÚTEXT_OUTPUT_XHTMLÚFZ_STEXT_PRESERVE_LIGATURESry	  ÚFZ_STEXT_PRESERVE_WHITESPACErz	  ÚFZ_STEXT_PRESERVE_IMAGESr„  ÚFZ_STEXT_INHIBIT_SPACESÚTEXT_INHIBIT_SPACESÚFZ_STEXT_DEHYPHENATErx	  ÚFZ_STEXT_PRESERVE_SPANSr`	  ÚFZ_STEXT_MEDIABOX_CLIPr{	  Ú$FZ_STEXT_USE_CID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_CID_FOR_UNKNOWN_UNICODEÚFZ_STEXT_COLLECT_STRUCTUREÚTEXT_COLLECT_STRUCTUREÚFZ_STEXT_ACCURATE_BBOXESÚTEXT_ACCURATE_BBOXESÚFZ_STEXT_COLLECT_VECTORSÚTEXT_COLLECT_VECTORSÚFZ_STEXT_IGNORE_ACTUALTEXTÚTEXT_IGNORE_ACTUALTEXTÚFZ_STEXT_SEGMENTÚTEXT_SEGMENTÚFZ_STEXT_CLIPÚ	TEXT_CLIPÚFZ_STEXT_LAZY_VECTORSÚTEXT_LAZY_VECTORSÚFZ_STEXT_FUZZY_VECTORSÚTEXT_FUZZY_VECTORSÚFZ_STEXT_PARAGRAPH_BREAKÚTEXT_PARAGRAPH_BREAKÚFZ_STEXT_TABLE_HUNTÚTEXT_TABLE_HUNTÚFZ_STEXT_COLLECT_STYLESra	  Ú$FZ_STEXT_USE_GID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_GID_FOR_UNKNOWN_UNICODEr  ÚTEXT_CLIP_RECTÚFZ_STEXT_ACCURATE_ASCENDERSÚTEXT_ACCURATE_ASCENDERSÚFZ_STEXT_ACCURATE_SIDE_BEARINGSÚTEXT_ACCURATE_SIDE_BEARINGSÚTEXT_STEXT_SEGMENTÚTEXT_CID_FOR_UNKNOWN_UNICODEÚTEXTFLAGS_WORDSÚTEXTFLAGS_BLOCKSÚTEXTFLAGS_DICTÚTEXTFLAGS_RAWDICTÚTEXTFLAGS_SEARCHÚTEXTFLAGS_HTMLÚTEXTFLAGS_XHTMLÚTEXTFLAGS_XMLÚTEXTFLAGS_TEXTÚTEXT_ENCODING_LATINÚTEXT_ENCODING_GREEKÚTEXT_ENCODING_CYRILLICr
  r§  r£  r¥  ÚPDF_BM_ColorÚPDF_BM_ColorBurnÚPDF_BM_ColorDodgeÚPDF_BM_DarkenÚPDF_BM_DifferenceÚPDF_BM_ExclusionÚPDF_BM_HardLightÚ
PDF_BM_HueÚPDF_BM_LightenÚPDF_BM_LuminosityÚPDF_BM_MultiplyÚPDF_BM_NormalÚPDF_BM_OverlayÚPDF_BM_SaturationÚPDF_BM_ScreenÚPDF_BM_SoftLightrn  rÞ   r  r   r  rß  rÞ  rà  r  Údictkey_ascr»  rc	  rÛ  rÇ  r¼  r·  r  rÄ  r%  r(  r  Ú
dictkey_dar  rÄ  Údictkey_descrÔ  Údictkey_effectr
  rÃ  r&  rº  rW	  rV	  Údictkey_glyphrÃ  r+  rf  rý  rÅ  rÕ  rÁ  r)  r&  r¿  r¹  rQ  rÆ  r  rb	  r%  r  r*  r  r'  r  r  rÂ  rÓ  r  rÅ  rÆ  r»
  r×  rØ  rm  rº
  rÕ  rª  r[  rZ  rT  rÊ  r¯  r„  rÕ  r×  rÛ  rÚ  rn  râ  r  r-  r-  rÂ  r7  rë  rM  rX  r¾  r˜  r  r  ro  rª  r•  r¤  rr  r:  r¤  rú  r�  r¢  rK  rD  ra  r  rK  r   rt  rô  rÔ  rÃ  rƒ  r�  r0  rÿ  r6	  r€
  r7	  r±  r«  r·  rš  r©  rS  rT  rø  rù  rÁ  rÎ  rÕ  râ  rU  rT  r¹  r€  r½  r,  r¾
  r+  r  rn  r+  r	  r2  re  r8  r'  rß  rX  r]  r^  ri  rø  r¡  r2  r\  r»  r°  ré  r´  r  rÐ  rÒ  r˜  rã  rq  rë  r\  rü  rþ  rZ  r  r  r%  r•  rq
  rK  r  r@  rÎ  rk  r”  r&  r7  r�  r¸  r\  rw  r—  r=  r  r£  rT
  r·  r  rR  rT  r„  r„
  r‹	  rj  rs  r‡  r%  rÄ  r  r9  rw  r†  rˆ  r¿  r6  r‡  r“  r8  r˜  ÚMSG_BAD_DOCUMENTÚMSG_BAD_FILETYPEÚMSG_BAD_LOCATIONr²  rM
  r  rz  rN  rñ	  r¿  r  r—  ÚMSG_COLOR_COUNT_FAILEDr[  rô  rš  r  rÓ  rW
  rÉ  ra  rÁ  r{  rÀ  rõ  r  r'  rX  r”  rá  rv  rø  r÷  rÖ  rº  r  r\  r¹  r�  r0  rF  rÇ  rà  rq  rH  rô  rË  rù  r  r  r
  r  r  r  r  r  r   r"  r%  r)  r.  r,  rG  rK  rR  rT  rW  ÚFzPathWalker2rY  rO  r~  r‚  r…  rˆ  r‹  r�  r�  r“  r•  rš  rœ  rž  r¡  r   r  ÚPdfFilterOptions2r¦  Ú	FzDevice2r   Ú	FzOutput2r
  r�  ra  r   rë  rí  r‚  rƒ  rõ  r÷  rý  rú  r<  rï  rv  r  r  r“  rö
  r  r&  r4  rp  ry  r„  r\  r,  rX  rö  rç  rZ  r�  rŠ  r÷  r  rù  r  r=  rç  ra  r`  rc  rg  r¢  r]  r®  r  rù  r¶  r´  rM  ru  r€  r„  r  rV  rÊ  r  r  rE  rF  rG  ÚregisterrI  rK  r   r.  r
  rÜ
  rL  rN  r^  r  Úrecover_bbox_quadÚrecover_char_quadÚrecover_line_quadÚrecover_quadÚrecover_span_quadrN  ÚDeprecationWarningr`  r´  Ú__version__r™
  rá  Úmaxsizer·  ÚModuleNotFoundErrorrº  r½  rÁ  rÄ  rÇ  rË  r¸  r¼  rÀ  rÃ  rÆ  rÉ  r-   r*   r)   ú<module>rn     sR+  ððð ð ð #Ð "Ð "Ð "Ð "Ð "ð €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð ð ØØØØØØØØØðsð sð sð sð sðl � 2¤:§>¢>Ð2CÑ#DÔ#DÈcÌjÐYÑYÔY€ð ˆ\˜rœzŸ~š~¨mÑ<Ô<ÀcÄjÐQÑQÔQ€
ð ˆt‰vŒv€ØÐ ðð ð ð!ð !ð !ðð ð ð ØØØØØØØØðð ð ð ð ð> ØØØØØØØØðð ð ð ð ñ<.ð .ð .ð .ñ22ð 2ð 2ð 2ð ð  ð  ð �S˜Ô*¨\Ñ9¸C¸CÀ¹F¼FÑBÑCÔCÐ ðð ð ð$ð ð ð  #�{Ð$@À!ÑDÔDÐ ð ˆlÐ/°Ñ6Ô6€ð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð ˆ8‰:Œ:€à04€Ð 4Ð 4Ð 4Ñ 4ð	ØÐÐÐÐøØð 	ð 	ð 	Ø€Dð	øøøð Ð ðð ð ð"ð "ð "ð. Œj�nŠn˜mÑ,Ô,€ØÐà€CˆHÐ	YÐ	Y [Ð	YÐ	YÐ	YÑZÔZÐZØ€CˆHÐ	>Ð	> B¤J¨|Ô$<Ð	>Ð	>Ñ?Ô?Ð?Ø�bÒÐØÐÐÐÐàÐÐÐØÔ)×:Ò:ØØñô ÷ ’+‘-”-ð 	ð ÔÔ!Ô'€E€EðØÐÐÐÐÐÐøØð ð ð Øˆˆˆˆˆðøøøà€wˆuÐ-Ñ.Ô.ð &Ø#ˆÔ#Ñ%Ô%Ð%Ø€EÔÑ!Ô!Ð!ðð ð ð #Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &àÔ €ð €ð �eÐKÐK°-×2EÒ2EÀcÑ2JÔ2JÐKÑKÔKÑLÔLÐ à˜uÔ5°uÔ7MÈuÔOeÐfÒfÐfÐfð 	UÐ/Bð  	Uð  	UÈ%ÔJ`ÐbgÔbxÐzô  {Qð  JRð  	Uð  	Uñ gÔfÐfð
 ˜M¨4Ð
0€Ø€Ø€Ø€ð
 !ð 2ð 2ð 2ð 2ð 2ð$ €à�YÑ Ñ+€
ð Œ?˜:Ô&€Ø
Œ/˜$Ô
€ØŒ?˜5Ô!€Ø	Œ�c˜4�iÔ	 €Ø	Œ˜œÔ	)€Ø	Œ˜Ô	€à€Ø€
Ø€	Ø€	ð4ð 4ð 4ñ$4ð 4ð 4ð 4ð.0ð 0ð 0ñ0ð 0ð 0ð 0ð*ð ð ð  €	ð€ð.R<ð R<ð R<ð R<ð R<ñ R<ô R<ð R<ðj*c'ð c'ð c'ð c'ð c'ñ c'ô c'ð c'ðLP	ð P	ð P	ð P	ð P	ñ P	ô P	ð P	ðfð ð ð ð ñ ô ð ðBOð Oð Oð Oð Oñ Oô Oð Oð.+ð +ð +ð +ð +ñ +ô +ð +ðZ ð >Ø"'Ô"=ÐðtTð tTð tTð tTð tTñ tTô tTð tTðli €ð)&ð )&ð )&ð )&ð )&ñ )&ô )&ð )&ðX|"ð |"ð |"ð |"ð |"ñ |"ô |"ð |"ð~ð ð ð ð ñ ô ð ðtð tð tð tð tñ tô tð tðnoð oð oð oð oñ oô oð oðd:ð :ð :ð :ð :�Vñ :ô :ð :ð. ˆ>ÑÔ€ðu,ð u,ð u,ð u,ð u,ñ u,ô u,ð u,ðnGð Gð Gð Gð Gñ Gô Gð GðT
 Ð Ð Ð Ð Ð ðOð Oð Oð Oð Oñ Oô Oð Oðf ØØØØØñ;ð ;ð ;ð ;ð|IBð IBð IBð IBð IBñ IBô IBð IBðXDW'ð W'ð W'ð W'ð W'ñ W'ô W'ð W'ðtxð xð xð xð xñ xô xð xðveXð eXð eXð eXð eXñ eXô eXð eXðP`ð `ð `ð `ð `ñ `ô `ð `ðF	[ð [ð [ð [ð [ñ [ô [ð [ð|hBð hBð hBð hBð hBñ hBô hBð hBðVWð Wð Wð Wð Wñ Wô Wð Wðt
að að að að añ aô að aðHtð tð tð tð tñ tô tð tðt.ØŒK˜Ô!€Eð2Ø"œ^×1Ò1Ñ3Ô3ð 	2ð 	2‰MˆE�6Ø×ÒÐ 8Ñ9Ô9ð 2Ø×#Ò#Ð$4Ñ5Ô5ð 2àð �G˜E 5¨&Ñ1Ô1Ð1øð	2ð2 )*ØÔ-ñ).àÔ)ñ)*ð Ô+ñ),ð Ô0ñ	)1ð
 Ô3ñ)4ð Ô+ñ),Ð$ð Ô" aÒ'Ð'Ð'Ð'ð %¨Ô(GÒGÐGÐGÐGØ Ô 7Ò7Ð7Ð7Ð7Øˆu�fà
Œ*€ðÐ ð" €Ø	ð #ð #€AØ!"€O�A—G’G‘I”IÑÐØ%€�Ñ Ø-€�Ñ Ø*€�Ñ Ø1€�Ñ Ø#€�Ñ Ø+€�Ñ Ø(€�Ñ Ø/€�Ñ Ø'€�Ñ Ø&€�Ñ Ø(€�Ñ Ø,€�Ñ Ø"€�Ñ Ø(€�Ñ à
€Ø€ð €Ø€àÐ ØÐ ØÐ ØÐ ð Ô/Ð ØÔ-Ð ØÔ5Ð ØÔ-Ð ØÔ+Ð ØÔ+Ð ØÔ1Ð ØÔ1Ð ð
 €	Ø€Ø€
ð
 €	Ø€	Ø€Ø€Ø€
Ø€
ØÐ ØÐ ØÐ ØÐ Ø€Ø€ØÐ àÐ ØÐ à€Ø€
ØÐ ØÐ ØÐ Ø€Ø€ØÐ ØÐ ØÐ ØÐ Ø€
Ø€Ø€à€ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ØÐ Ø€àÐ ØÐ ØÐ Ø€ØÐ àÔ;Ð Ø Ô=Ð ØÔ5Ð ØÔ3Ð ØÔ-Ð ØÔ3Ñ ØÕ1Ñ Ø#(Õ#MÑ  ØÕ9Ñ ØÕ5Ñ ØÕ5Ñ ØÕ9Ñ ØÕ%�ØÕ�	Ø˜*Ò$Ð$ØÕ3ÑØ˜*Ò$Ð$ØÕ5ÑàÕ5Ñ ØÕ+�ØÕ3Ñ Ø#(Õ#MÑ  ØÕ)�ØÕ;Ñ Ø#ÕCÑ ñ "Ñ Ù?Ñ àØ
!ñ"à
"ñ#ñ ññ +ñ	+�ð Ø
!ñ"à
"ñ#ñ ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ñ ñð ñ	ñ
 +ñ+�ñ #Ñ àØ
"ñ#á
ñð ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ñ ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ñ ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ñ ññ +ñ	+�ð Ø
!ñ"à
"ñ#ñ ññ +ñ	+�ð Ñ ØÑ ØÑ àÑ ð 
�Ø
�Ø
�ð �ØÑ Ø Ñ Ø�Ø Ñ ØÑ ØÑ Ø�
Ø�Ø Ñ Ø�Ø�Ø�Ø Ñ Ø�ØÑ ð Dð  DØYÐYð lð  lØeÐeØ}Ð}ØZÐZØgÐgð
ð 
�
ð	ð 	ð 	ð 	ð 	‘Lñ 	ô 	ñ 	ð	ð 	ð 	ð 	ð 	™ñ 	ô 	ñ 	ð	ð 	ð 	ð 	ð 	‘]ñ 	ô 	ñ 	ð 	ˆ
‘6ÑÔ�Ø	ˆ‘GÑ	Ô	�Ø	ˆ‘GÑ	Ô	�ð
 �Ø�Ø�Ø�Ø�Ø�Ø�	Ø�Ø�Ø!Ñ Ø�Ø%Ñ Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø!Ñ Ø�Ø�Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø�Ø�Ù�ðØ:Ñ:Ñ:Ñ:Ñ:Ñ:Ñ:Ð:à/™?Õ/Ñ1Ô1ÑÙ!×&Ó&Ñ(Ô(ð ;ð ;‰Ù,7¹¬NÑ™QÔ¡Ñ)Ð)Ù™˜øØð ð ð ØÑÐÐðøøøñA
�ñHA
�ñNð ñ ñ	ð 	ñ 	ñ"ð "ñ "ñ!3ð !3ñ !3ñH'ð 'ñ 'ñUð Uñ Uñð ñ ñTð Tñ Tñ<ð <ñ <ñ
Uð Uñ Uñ ð  ñ  ñTð Tñ Tñð ñ ñð ñ ñ:6ð 6ñ 6ñ$ð ñ ñ
ð ñ ñCð Cñ CñLð ñ ñIñ Ið Iñ IñIñ Ið Iñ Iñð ñ ñ/ð /ñ /ñ*2ð 2ñ 2ñ %ð %ñ %ñPð ñ ñ.3=ð 3=ñ 3=ñl
ð 
ñ 
ñ2ð 2ñ 2ñ>ð >ñ >ñ&&ð &ñ &ñ<
ð 
ñ 
ñð ñ ñVð Vñ Vñrð ñ ñ84ð 4ñ 4ñnð ñ ñ$%ð %ñ %ñPð ñ ñ ð ñ ñ.Wñ Wð Wñ Wñx/ð /ñ /ñdð ñ ñ(ð ñ ñ&ð &ñ &ñ"ð "ñ "ñJNð Nñ Nñ0ð ñ ñIð Iñ Iñ ð ñ ñ$ð ñ ñ ð ñ ñ*ð ñ ñ.ð ñ ñ6(ð (ñ (ñð ñ ñð ñ ñ(ð ñ ñð ñ ñ"ð "ñ "ñJ%ñ %ð %ñ %ñP7ñ 7ð 7ñ 7ñtð ñ ñ(ð ñ ñ0ð ñ ñð ñ ñ2/ð /ñ /ñð ñ ñ >ð >ñ >ñB4)ð 4)ñ 4)ñnð ñ ñ,ð ñ ñ"^ð ^ñ ^ñB)ð )ñ )ñXð ñ ñ ð ñ ñB
 ð 
 ñ 
 ñð ñ ñ>ð ñ ñð ñ ð. �
ñð ñ ñ)ð )ñ )ñXð ñ ñD$ð $ñ $ñNð ñ ñ<Kð Kñ KñZ7ð 7ñ 7ñ:ð ñ ñ0\ð \ñ \ñ(Tð Tñ Tñl,%ð ,%ñ ,%ñ\
Hð 
Hñ 
Hñ*ð *ñ *ñ.+ð +ñ +ñB>ð >ñ >ñð ñ ñ:3ð 3ñ 3ñl? ð ? ñ ? ñD*ð *ñ *ñ*ð *ñ *ñ6ð 6ñ 6ñ
ð ñ ñ4ð ñ ñ,.ð .ñ .ñ
ð 
ñ 
ñð ñ ñð ñ ñ2	ð 	ñ 	ñð ñ ñ*ð *ñ *ñZð ñ ñ.(6ð (6ñ (6ñVBð Bñ BñB"ð "ñ "ñ(ð (ñ (ñð ñ ñ	ð 	ñ 	ñ"ð "ñ "ñ*ð *ñ *ñZð ñ ñ,6ð 6ñ 6ñ.ð ñ ñHð Hñ Hñ"ð ñ ñ0Eð Eñ EñP&#ð &#ñ &#ñR<ð <ñ <ñ8#:ð #:ñ #:ñL-ð -ñ -ñ`3ð 3ñ 3ñ<'ð 'ñ 'ñBð Bñ Bñ*z"ð z"ñ z"ñzð ñ ñ8ð ñ ñ ð  ñ  ñ2ð 2ñ 2ñ0 ð  ñ  ñF(ð (ñ (ñð ñ ñ &Ñ Ù)�Ù?Ñ Ù(Ñ Ù%�Ù(Ñ Ù0Ñ Ù!Ñ Ù!Ñ Ù'Ñ Ù%Ñ Ù%�Ù�Ù%�Ù#�Ù*�Ù!�Ù�Ù-Ñ Ù/Ñ Ù&�Ù$�Ù�Ù�Ù(�Ù.�Ù,Ñ ð 'Ñ ÙÑ ñð ñ ñ	ñ 	ð 	ñ 	ñPñ Pð Pñ Pññ ð ñ ññ ð ñ ñ	ñ 	ð 	ñ 	ñ	ñ 	ð 	ñ 	ñHñ Hð Hñ Hñ
ñ 
ð 
ñ 
ñ
-ñ 
-ð 
-ñ 
-ñ.ñ .ð .ñ .ñ$ð ñ ñ.ð ñ ñ
#ñ 
#ð 
#ñ 
#ñð ñ ñ2 ñ  ð  ñ  ñFð ñ ñ"ð ñ ñð ñ ñ"ñ "ð "ñ "ñJ2ñ 2ð 2ñ 2ñjCSñ CSð CSñ CSðN %)¸TÐRVñBð Bñ Bñ Bð Bñ BñJ':ñ ':ñ ':ð ':ñ ':ñT'ñ 'ð 'ñ 'ñ,Dð Dñ DñNJð Jñ Jñ1ð 1ñ 1ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñXð Xñ Xñð ñ ñ$ð $ñ $ñN1ð 1ñ 1ñhð ñ ñUð Uñ Uñpð ñ ñ8ð ñ ñð ñ ñNð ñ ñð ñ ðpð pñ pð pñ pˆUÕ ñ pô pñ pñf!ð !ñ !ñH0ð 0ñ 0ñfð ñ ñ*ð ñ ñ(ð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñ$ð ñ ñð ñ ñ
!ð !ñ !ñ
ð ñ ñ+ñ +ð +ñ +ð ð ñ ð ñ ˜uÕ6ñ ô ñ ð.ð .ñ .ð .ñ . ¥ñ .ô .ñ .ð>$ð $ñ $ð $ñ $ 5¥?ñ $ô $ñ $ñ0ð ñ ð$P/ð P/ñ P/ð P/ñ P/ 5¥?ñ P/ô P/ñ P/ðf3%ð 3%ñ 3%ð 3%ñ 3%˜e�oñ 3%ô 3%ñ 3%ñl1ñ 1ñ 1ð 1ñ 1ñhñ ð ñ ñ*ñ ð ñ ñ
ñ 
ð 
ñ 
ñ
ð 
ñ 
ñð ñ ñð ñ ñ8ð ñ ñð ñ ññ ð ñ ð$ð ñ ð ñ ‘fñ ô ñ ñð ñ ñFñ Fñ Fð Fñ FñRñ ð ñ ñ1ð 1ñ 1ñ(ñ (ñ (ð (ñ (ðV # t°¸À$È4ñ Q*ð Q*ñ Q*ð Q*ñ Q*ðh  $¨°¸$À4ÈDñ ð ñ ð ñ ñHð Hñ Hñfð fñ fñð ñ ñð ñ ñð ñ ñ/ð /ñ /ñð ñ ñð ñ ñð ñ ñ$ð $ñ $ñNð ñ ñ,ð ñ ñ6ð 6ñ 6ñ "ð "ñ "ñ>ð ñ ñ2D2ð D2ñ D2ñN)ñ )ð )ñ )ññ ð ñ ñ(6
ð 6
ñ 6
ñp2ð 2ñ 2ñ/ñ /ð /ñ /ñdHñ Hð Hñ Hñ@4ñ 4ð 4ñ 4ññ ð ñ ñ$ð ñ ñ)ð )ñ )ñXð ñ ð, Ñ ØÑ ØÑ Ø !Ñ ñ	ñ 	ð 	ñ 	ñ1ð 1ñ 1ñ Ø�d‘f”fØÙØ�d‘f”fØÙØØñð ñ ð ñ ðJ ÙØàØØØØØàñ=ð =ñ =ð =ñ =ð@{#ð {#ñ {#ð {#ñ {#ñ {#ô {#ñ {#ð~ ð 0Ø!€EÕ!Ñ"2Ñ3Ô3Ð3Ø€EÕ¡Ñ/Ô/Ð/ñ(&ð &ñ &ð €…‘Ñ Ô Ð ð Ñ Ð Ñ Ñ Ð ÙÕ�	ð ˆ4‰6Œ6�Ùð 3ð 3�M�D‰!‰Q‘Ù¡™e¡Q¡s¡U©A©c©EÐ2�H‰T�ZŠZ‰\Œ\ÑÐñð ñ ñð ñ ñI$ñ I$ð I$ñ I$ð^ Ñ Ð Ñ Ñ Ð ñ
 $Õ5Ñ Ù#Õ5Ñ Ù#Õ5Ñ Ù#Õ0�Ù#Õ5Ñ à Ñ Ð Ñ Ñ Ð ð	ð 	ñ 	ð 	ñ 	Ñ(ñ 	ô 	ñ 	ñU%ð U%ñ U%ðnð �ñ	E�;ð 	Eñ 	EÀð 	Eñ 	EØÕ" 1Ô%ð	Eð 	EØ(+Õ(8¸Ô(;ð	Eñ 	EØILÍð	Eñ 	EØ_bÕ_jÑmrÒ_rÐ_rÐY[ÐY[Ðxzð	Eñ 	Eð 	Eð ðØÐÑÑÐøØÑ(Ð)ð ð ð Ø�K€K€KðøøøñNð Nñ NñNð Nñ NñNð Nñ NñNð Nñ NñNð Nñ NñNð Nñ Nñ $€Õ Ù€Õ Ù€Õ Ù€Õ Ù�Ù�
€
€
sO   ÅE ÅE&Å%E&ÈH È	HÈHå>Ag çgçgÁGAG$ ÁG$AG2ÁG1AG2