o
    j؀                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZ ejdd dkrFd dlmZ nd dlmZ ejd	krXd d
lmZ nd d
lmZ ddlmZ ddlmZmZ ddlmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z& dZ'dZ(G dd deZ)G dd de)Z*G dd de)Z+G dd de)Z,dZ-G dd de.e)Z/G dd de0e)Z1G dd de2e)Z3G d d! d!e4e)Z5G d"d# d#e4e)Z6d$e4d%e2fd&d'Z7d(ed%eede*e,f  fd)d*Z8dS )+    N)Sequence)log10)iter_unpack)AnyCallableClassVarOptionalUnioncast   )   
   )	TypeGuard)r      )Self_pdfdoc_encoding_rev)PdfObjectProtocolPdfWriterProtocol)
StreamTypeclasspropertydeprecation_no_replacementdeprecation_with_replacementlogger_warningread_non_whitespaceread_until_regex)STREAM_TRUNCATED_PREMATURELYPdfReadErrorPdfStreamErrorzMathieu Fenniakzbiziqe@mathieu.fenniak.netc                   @   s   e Zd ZU ejZed ed< ed ed< de	fddZ
defdd	Zdefd
dZdedd fddZ		ddededeeeee	f   dd fddZ	d dd dededd fddZded  fddZ	d!dededeef ddfddZdS )"	PdfObject).zhashlib._Hash	hash_funcIndirectObjectindirect_referencereturnc                 C      t | jj d)q
        Used to detect modified object.

        Returns:
            Hash considering type and value.

        z& does not implement .hash_bin() so farNotImplementedError	__class____name__self r,   Y/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/pypdf/generic/_base.pyhash_binE   s   zPdfObject.hash_binc                 C   s
   |    S Nencoder*   r,   r,   r-   hash_value_dataQ      
zPdfObject.hash_value_datac                 C   s$   | j j d| |     S )N:)r(   r)   r    r2   	hexdigestr1   r*   r,   r,   r-   
hash_valueT   s
   
zPdfObject.hash_valuepdf_destc                 C   s
   |  |S )a/  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter)
        without ensuring links. This is used in clone_document_from_root with incremental = True.

        Args:
          pdf_dest: Target to clone to.

        Returns:
          The cloned PdfObject

        )cloner+   r7   r,   r,   r-   	replicateZ   s   
zPdfObject.replicateFr,   force_duplicateignore_fieldsc                 C   r$   )a  
        Clone object into pdf_dest (PdfWriterProtocol which is an interface for PdfWriter).

        By default, this method will call ``_reference_clone`` (see ``_reference``).


        Args:
          pdf_dest: Target to clone to.
          force_duplicate: By default, if the object has already been cloned and referenced,
            the copy will be returned; when ``True``, a new copy will be created.
            (Default value = ``False``)
          ignore_fields: List/tuple of field names (for dictionaries) that will be ignored
            during cloning (applies to children duplication as well). If fields are to be
            considered for a limited number of levels, you have to add it as integer, for
            example ``[1,"/B","/TOTO"]`` means that ``"/B"`` will be ignored at the first
            level only but ``"/TOTO"`` on all levels.

        Returns:
          The cloned PdfObject

        z! does not implement .clone so farr&   r+   r7   r;   r<   r,   r,   r-   r8   k   s   zPdfObject.cloner8   c                 C   s  z|s|j dur|j j|kr|W S W n	 ty   Y nw z| j }W n ty,   | Y S w |jrF|durF|j|jkrF|jt|jkrF|j}nt|jd }|durt	|j|j
vrli |j
t	|j< |j|j
t	|j d< |s|j|j
t	|j v r||j
t	|j |j }t|tsJ d|S ||j
t	|j |j< z	||j|d < W n ty   |j| t|j}Y nw t|d||_ |S )aX  
        Reference the object within the _objects of pdf_dest only if
        indirect_reference attribute exists (which means the objects was
        already identified in xref/xobjstm) if object has been already
        referenced do nothing.

        Args:
          clone:
          pdf_dest:

        Returns:
          The clone

        N   	PreventGCmypyr   )r"   pdf	ExceptionAttributeErrorincremental_readeridnumlen_objectsid_id_translated
get_object
isinstancer   
IndexErrorappendr!   )r+   r8   r7   r;   indiobjr,   r,   r-   _reference_clone   sV   

zPdfObject._reference_clonec                 C      | S )zResolve indirect references.r,   r*   r,   r,   r-   rK         zPdfObject.get_objectNstreamencryption_keyc                 C   s   t r/   )r'   r+   rU   rV   r,   r,   r-   write_to_stream      zPdfObject.write_to_streamFr,   )Fr/   )r)   
__module____qualname__hashlibsha1r    r   __annotations__r   intr.   bytesr2   r6   r   r:   boolr   r	   strr8   rR   rK   r   rX   r,   r,   r,   r-   r   @   sR   
 

 
>r   c                   @   s   e Zd Z		ddededeeeee	f   dd fddZ
de	fd	d
Z	ddededeef ddfddZededd fddZdefddZdedefddZde	fddZdS )
NullObjectFr,   r7   r;   r<   r#   c                 C   s   t d| t ||S )Clone object into pdf_dest.rd   )r
   rR   rd   r=   r,   r,   r-   r8      s   zNullObject.clonec                 C   s   t | jfS r%   hashr(   r*   r,   r,   r-   r.      s   zNullObject.hash_binNrU   rV   c                 C   s    |d ur	t dd |d d S )N/the encryption_key parameter of write_to_stream5.0.0   null)r   writerW   r,   r,   r-   rX      s
   zNullObject.write_to_streamc                 C   s    |  d}|dkrtdt S )N   rk   zCould not read Null object)readr   rd   )rU   nulltxtr,   r,   r-   read_from_stream   s   
zNullObject.read_from_streamc                 C   s   dS )Nrd   r,   r*   r,   r,   r-   __repr__   s   zNullObject.__repr__otherc                 C   s
   t |tS r/   )rL   rd   r+   rr   r,   r,   r-   __eq__   r3   zNullObject.__eq__c                 C      |   S r/   r.   r*   r,   r,   r-   __hash__      zNullObject.__hash__rZ   r/   )r)   r[   r\   r   rb   r   r   r	   rc   r`   r8   r.   r   ra   rX   staticmethodrp   rq   objectrt   rw   r,   r,   r,   r-   rd      s4    

	rd   c                   @   s   e Zd ZU eed< deddfddZ		dded	ed
ee	e
eef   dd fddZdefddZdedefddZdefddZdefddZ	ddede
deef ddfddZededd fddZdS )BooleanObjectvaluer#   Nc                 C   s
   || _ d S r/   r|   )r+   r|   r,   r,   r-   __init__  r3   zBooleanObject.__init__Fr,   r7   r;   r<   c                 C   s   t d| t| j||S )re   r{   )r
   rR   r{   r|   r=   r,   r,   r-   r8     s   zBooleanObject.clonec                 C      t | j| jfS rf   )rh   r(   r|   r*   r,   r,   r-   r.        zBooleanObject.hash_binoc                C   s.   t |tr| j|jkS t |tr| j|kS dS )NF)rL   r{   r|   rb   r+   r   r,   r,   r-   rt     s
   


zBooleanObject.__eq__c                 C   ru   r/   rv   r*   r,   r,   r-   rw   %  rx   zBooleanObject.__hash__c                 C   s   | j rdS dS )NTrueFalser}   r*   r,   r,   r-   rq   (  s   zBooleanObject.__repr__rU   rV   c                 C   s4   |d ur	t dd | jr|d d S |d d S )Nri   rj      trues   false)r   r|   rl   rW   r,   r,   r-   rX   +  s   zBooleanObject.write_to_streamc                 C   s<   |  d}|dkrtdS |dkr|  d tdS td)Nrm   r   Ts   falsr>   FzCould not read Boolean object)rn   r{   r   )rU   wordr,   r,   r-   rp   7  s   

zBooleanObject.read_from_streamrZ   r/   )r)   r[   r\   rb   r_   r   r~   r   r   r   r	   rc   r`   r8   r.   rz   rt   rw   rq   r   ra   rX   ry   rp   r,   r,   r,   r-   r{     s8   
 


r{   c                   @   s  e Zd ZdedededdfddZdefdd	Zdefd
dZdeddfddZ			d<dede
deeeeef   dd fddZed=ddZded fddZdedd fddZded fddZdedefd d!Zd"edefd#d$Zd"ede
fd%d&Zdefd'd(Zdefd)d*Zdefd+d,Zdefd-d.Zdefd/d0Zd1ede
fd2d3Zd1ede
fd4d5Z	d>d6e d7edee!f ddfd8d9Z"e#d6e dedd fd:d;Z$dS )?r!   rF   
generationrA   r#   Nc                 C   s   || _ || _|| _d S r/   )rF   r   rA   )r+   rF   r   rA   r,   r,   r-   r~   C  s   
zIndirectObject.__init__c                 C   s   t | j| jt| jfS r/   )rh   rF   r   rI   rA   r*   r,   r,   r-   rw   H  s   zIndirectObject.__hash__c                 C   s   t | j| j| jt| jfS rf   )rh   r(   rF   r   rI   rA   r*   r,   r,   r-   r.   K  s   zIndirectObject.hash_binr7   r   c                 C   s   t | j| j|S r/   )r!   rF   r   r9   r,   r,   r-   r:   U  s   zIndirectObject.replicateFr,   r;   r<   c                 C   s  | j |kr	|s	| S t| j |jvr$i |jt| j < | j |jt| j  d< | j|jt| j  v rY||jt| j  | j }|rX|dusEJ |jdusLJ |j}t|j|j|j S n |  }|du rot }t	| tfslJ | |_|
||||}t	|tsJ d|jdusJ d|jS )re   r?   Nr@   )rA   rI   rJ   rF   rK   r"   r!   r   rd   rL   _add_objectr8   r   )r+   r7   r;   r<   dupidrefrQ   r,   r,   r-   r8   [  s0   zIndirectObject.clonec                 C   rS   r/   r,   r*   r,   r,   r-   r"     rT   z!IndirectObject.indirect_referencec                 C   s   | j | }|S r/   )rA   rK   )r+   rQ   r,   r,   r-   rK     s   zIndirectObject.get_objectmemoc                 C   s   t | j| j| jS r/   )r!   rF   r   rA   )r+   r   r,   r,   r-   __deepcopy__     zIndirectObject.__deepcopy__c                 C   s0   |   }t|trt|   d|  |S )Nz references an IndirectObject )rK   rL   r!   r   rq   r   r,   r,   r-   _get_object_with_check  s   
z%IndirectObject._get_object_with_checknamec                 C   s0   zt |  |W S  ty   td| dw )NzNo attribute z* found in IndirectObject or pointed object)getattrr   rC   r+   r   r,   r,   r-   __getattr__  s   
zIndirectObject.__getattr__keyc                 C   s   |   | S r/   r   r+   r   r,   r,   r-   __getitem__     zIndirectObject.__getitem__c                 C   s   ||   v S r/   r   r   r,   r,   r-   __contains__     zIndirectObject.__contains__c                 C      |    S r/   )r   __iter__r*   r,   r,   r-   r     r   zIndirectObject.__iter__c                 C   r   r/   )rK   	__float__r*   r,   r,   r-   r     r   zIndirectObject.__float__c                 C   r   r/   )rK   __int__r*   r,   r,   r-   r     r   zIndirectObject.__int__c                 C   r   r/   )rK   __str__r*   r,   r,   r-   r     r   zIndirectObject.__str__c                 C   s"   d| j d| jdt| j dS )NzIndirectObject(z, ))rF   r   rI   rA   r*   r,   r,   r-   rq     s   "zIndirectObject.__repr__rr   c                 C   s6   |d uot |to| j|jko| j|jko| j|ju S r/   )rL   r!   rF   r   rA   rs   r,   r,   r-   rt     s   


zIndirectObject.__eq__c                 C   s   |  | S r/   )rt   rs   r,   r,   r-   __ne__  r   zIndirectObject.__ne__rU   rV   c                 C   s4   |d ur	t dd || j d| j d  d S )Nri   rj    z R)r   rl   rF   r   r1   rW   r,   r,   r-   rX     s
   "zIndirectObject.write_to_streamc                 C   s   d}	 |  d}|stt| rn||7 }qd}	 |  d}|s&tt| r.|s-qn||7 }qt| }|dkrFtdt|   tt	|t	||S )N    Tr>      Rz0Error reading indirect object reference at byte )
rn   r   r   isspacer   r   hextellr!   r`   )rU   rA   rF   tokr   rr,   r,   r-   rp     s4   

	zIndirectObject.read_from_streamrZ   )r#   r!   r/   )%r)   r[   r\   r`   r   r~   rw   r.   r   r:   rb   r   r   r	   rc   r8   propertyr"   rK   r   r   r   r   r   r   r   r   r   rq   rz   rt   r   r   ra   rX   ry   rp   r,   r,   r,   r-   r!   B  sZ    

	
$			
	r!      c                   @   s   e Zd Z	ddedee defddZ			dd
ededeee	e
ef   dd fddZdefddZde
fddZde
fddZdefddZ	ddede	de
ef ddfddZdS )FloatObject0.0Nr|   contextr#   c              
   C   s^   zt |}t | |W S  ty. } zt| d| dt t | dW  Y d }~S d }~ww )Nz : FloatObject (z) invalid; use 0.0 insteadg        )float__new__rB   r   r)   )clsr|   r   er,   r,   r-   r     s   zFloatObject.__new__Fr,   r7   r;   r<   c                 C      t d| t| ||S )re   r   )r
   rR   r   r=   r,   r,   r-   r8        zFloatObject.clonec                 C   r   rf   rh   r(   
as_numericr*   r,   r,   r-   r.     r   zFloatObject.hash_binc                 C   sB   | dkrdS t ttt|  }| dtd| dddS )Nr   r   .r>   f0)FLOAT_WRITE_PRECISIONr`   r   absmaxrstrip)r+   nbr,   r,   r-   myrepr  s   "zFloatObject.myreprc                 C   ru   r/   )r   r*   r,   r,   r-   rq     rx   zFloatObject.__repr__c                 C   s   t | S r/   )r   r*   r,   r,   r-   r     rx   zFloatObject.as_numericrU   rV   c                 C   s*   |d ur	t dd ||  d d S Nri   rj   utf8)r   rl   r   r1   rW   r,   r,   r-   rX     
   zFloatObject.write_to_stream)r   NrZ   r/   )r)   r[   r\   r   r   r   r   rb   r   r	   rc   r`   r8   r.   r   rq   r   r   r   ra   rX   r,   r,   r,   r-   r     s@    


r   c                   @   s   e Zd ZedZdedefddZ		dded	e	d
e
eeeef   dd fddZdefddZdefddZ	ddededeef ddfddZededed fddZdS )NumberObjects	   [^+-.0-9]r|   r#   c                 C   sD   z	t | t |W S  ty!   td| dt t | d Y S w )NzNumberObject(z) invalid; use 0 insteadr   )r`   r   
ValueErrorr   r)   )r   r|   r,   r,   r-   r   '  s   zNumberObject.__new__Fr,   r7   r;   r<   c                 C   r   )re   r   )r
   rR   r   r=   r,   r,   r-   r8   .  r   zNumberObject.clonec                 C   s   t | j|  fS rf   r   r*   r,   r,   r-   r.   :     zNumberObject.hash_binc                 C   s   t t| dS )Nr   )r`   reprr1   r*   r,   r,   r-   r   D  r   zNumberObject.as_numericNrU   rV   c                 C   s*   |d ur	t dd |t| d d S r   )r   rl   r   r1   rW   r,   r,   r-   rX   G  r   zNumberObject.write_to_stream)r   r   c                 C   s$   t | tj}d|v rt|S t|S )N   .)r   r   NumberPatternr   )rU   numr,   r,   r-   rp   P  s   zNumberObject.read_from_streamrZ   r/   )r)   r[   r\   recompiler   r   r   r   rb   r   r   r	   rc   r`   r8   r.   r   r   ra   rX   ry   rp   r,   r,   r,   r-   r   $  s4    




	r   c                   @   s   e Zd ZdZ		ddededeeee	e
f   dd fdd	Zde
fd
dZedefddZ	ddedede	ef ddfddZde	fddZdS )ByteStringObjecta>  
    Represents a string object where the text encoding could not be determined.

    This occurs quite often, as the PDF spec doesn't provide an alternate way to
    represent strings -- for example, the encryption data stored in files (like
    /O) is clearly not text, but is still stored in a "String" object.
    Fr,   r7   r;   r<   r#   c                 C   s   t d| tt| ||S )re   r   )r
   rR   r   ra   r=   r,   r,   r-   r8   a  s   zByteStringObject.clonec                 C   s   t | jt| fS rf   )rh   r(   ra   r*   r,   r,   r-   r.   o  r   zByteStringObject.hash_binc                 C   rS   )z7For compatibility with TextStringObject.original_bytes.r,   r*   r,   r,   r-   original_bytesy  rY   zByteStringObject.original_bytesNrU   rV   c                 C   s:   |d ur	t dd |d |t|  |d d S )Nri   rj      <   >)r   rl   binasciihexlifyrW   r,   r,   r-   rX   ~  s   
z ByteStringObject.write_to_streamc              	   C   sD   dgt tj}|D ]}z| |W   S  ty   Y q
w td)Nutf-16zCannot decode ByteStringObject.)list
NameObjectCHARSETSdecodeUnicodeDecodeErrorr   )r+   charset_to_tryencr,   r,   r-   r     s   zByteStringObject.__str__rZ   r/   )r)   r[   r\   __doc__r   rb   r   r   r	   rc   r`   r8   r.   r   ra   r   r   rX   r   r,   r,   r,   r-   r   X  s2    


r   c                   @   s   e Zd ZU dZeed< eed< eed< dZee ed< de	de
fd	d
Z		dde	dedeeeeef   dd fddZdefddZedefddZdefddZdefddZ	ddededeef ddfddZdS ) TextStringObjectz
    A string object that has been decoded into a real unicode string.

    If read from a PDF document, this string appeared to match the
    PDFDocEncoding, or contained a UTF-16BE BOM mark to cause UTF-16 decoding
    to occur.
    autodetect_pdfdocencodingautodetect_utf16	utf16_bomN_original_bytesr|   r#   c              
   C   s&  d }t |tr|}|d}t| |}||_d|_d|_d|_|d urw|d d t	j
t	jhv rwzt| |d}W n, tyg } z t|d|jt t| |jd |j d}W Y d }~nd }~ww ||_d|_|d d |_|S z
t| d|_W |S  ty   d|_t	j|_Y |S w )NcharmapFr   r   r   z
initial string:T)rL   ra   r   rc   r   r   r   r   r   codecsBOM_UTF16_LEBOM_UTF16_BEr   r   rz   r)   startencode_pdfdocencodingUnicodeEncodeError)r   r|   r   text_string_object	exceptionr,   r,   r-   r     sB   

 *
zTextStringObject.__new__Fr,   r7   r;   r<   c                 C   s<   t | }| j|_| j|_| j|_| j|_td| |||S )re   r   )r   r   r   r   r   r
   rR   )r+   r7   r;   r<   rQ   r,   r,   r-   r8     s   zTextStringObject.clonec                 C   r   rf   )rh   r(   r   r*   r,   r,   r-   r.     r   zTextStringObject.hash_binc                 C   s   | j dur| j S |  S )a-  
        It is occasionally possible that a text string object gets created where
        a byte string object was expected due to the autodetection mechanism --
        if that occurs, this "original_bytes" property can be used to
        back-calculate what the original encoded bytes were.
        N)r   get_original_bytesr*   r,   r,   r-   r     s   
zTextStringObject.original_bytesc                 C   s^   | j r$| jtjkrtj| d S | jtjkrtj| d S | dS | jr+t| S td)Nutf-16leutf-16bez#no information about original bytes)	r   r   r   r   r1   r   r   r   rB   r*   r,   r,   r-   r     s   
z#TextStringObject.get_original_bytesc                 C   s   z| j d ur
| j W S | jrtdddddt| }W |S  tyL   | jtjkr3tj| d }Y |S | jtjkrDtj| d }Y |S | d}Y |S w )N forcedr   r   )	r   r   r   r   r   r   r   r1   r   )r+   bytearrr,   r,   r-   get_encoded_bytes  s"   

z"TextStringObject.get_encoded_bytesrU   rV   c                 C   s~   |d ur	t dd |  }|d td|D ] }tt|d }| s2|dkr2|dt|  q|| q|d d S )	Nri   rj      (cr       s   \%03o   ))r   r   rl   r   r
   ra   isalnumord)r+   rU   rV   r   c_r   r,   r,   r-   rX     s   
z TextStringObject.write_to_streamrZ   r/   )r)   r[   r\   r   rb   r_   ra   r   r   r   r   r   r   r	   rc   r`   r8   r.   r   r   r   r   r   rX   r,   r,   r,   r-   r     s>   
 &

r   c                   @   s  e Zd ZU edZdZi dd dD dd edD Ze	e
eef  ed< 			
d%dededeeeeef   dd fddZdefddZ	d&dededeef ddfddZdefddZd'ddZedefddZededefdd Zd!Zeded"edd fd#d$ZdS )(r   s   \s+|[\(\)<>\[\]{}/%]   /c                 C   "   i | ]}t |d |d qS #02Xchrr1   .0rP   r,   r,   r-   
<dictcomp>'     " zNameObject.<dictcomp>s   #()<>[]{}/%c                 C   r   r   r   r   r,   r,   r-   r   (  r  !   renumber_tableFr,   r7   r;   r<   r#   c                 C   r   )re   r   )r
   rR   r   r=   r,   r,   r-   r8   +  r   zNameObject.clonec                 C   s   t | j| fS rf   rg   r*   r,   r,   r-   r.   7  s   zNameObject.hash_binNrU   rV   c                 C   s$   |d ur	t dd ||   d S )Nri   rj   )r   rl   renumberrW   r,   r,   r-   rX   A  s
   zNameObject.write_to_streamc              	   C   s   | d  d}|dkrtd|  dd |g}| dd  D ]/}|dkr1|d	d
 | dD  qz
|| j|  W q tyL   || d Y qw d|S )Nr   utf-8r   z<Incorrect first char in NameObject, should start with '/': (r   rj   r>   ~c                 s   s     | ]}d |d  V  qdS )r   r   Nr0   )r   xr,   r,   r-   	<genexpr>T  s    z&NameObject.renumber.<locals>.<genexpr>r   )r1   r   extendrN   r  KeyErrorjoin)r+   outpartsr   r,   r,   r-   r  J  s    

zNameObject.renumberc                 C   s6   t | d}tdd|}tdd|}td| S )a0  
        Sanitize the NameObject's name to be a valid PDF name part
        (alphanumeric, underscore, hyphen). The _sanitize method replaces
        spaces and any non-alphanumeric/non-underscore/non-hyphen with
        underscores.

        Returns:
            NameObject with sanitized name.
        /z\ _z[^a-zA-Z0-9_-])rc   removeprefixr   subr   r   r,   r,   r-   	_sanitize\  s   
zNameObject._sanitizec                 C   s   t ddd dS )Nsurfixprefixrj   r   )r   )r   r,   r,   r-   r  k  s   zNameObject.surfixsinc              	   C   s   t  }d}|t| k rH| ||d  dkr7z|t| |d |d  d |d7 }W q ttfy6   Y nw || |  |d7 }|t| k st|S )Nr   r>      #r      )	bytearrayrG   rN   r`   r   rM   ra   )r  resultrP   r,   r,   r-   unnumberp  s    zNameObject.unnumber)r  gbklatin1rA   c              
   C   s   |  d}|tjkrtd|t| tj7 }z)t|}tjD ]}z||}t|W   W S  t	y7   Y qw t
d|ddd tt
fyo } z"|jsbtd|dt t|dW  Y d }~S td|d	|d }~ww )
Nr>   zName read errorr   r   zCode Not Foundz!Illegal character in NameObject (z-), you may need to adjust NameObject.CHARSETSr   z.). You may need to adjust NameObject.CHARSETS.)rn   r   r  r   r   delimiter_patternr  r   r   rB   r   r   strictr   r)   )rU   rA   r   r   retr   r,   r,   r-   rp     s8   






zNameObject.read_from_streamrZ   r/   )r#   r   ) r)   r[   r\   r   r   r  r  ranger  r   dictrc   ra   r_   r   rb   r   r   r	   r`   r8   r.   r   rX   r  r  r   r  ry   r  r   rp   r,   r,   r,   r-   r   #  sJ   
 


	
r   unicode_stringr#   c              	   C   s4   z
t dd | D W S  ty   td| dddw )Nc                 S   s   g | ]}t | qS r,   r   )r   kr,   r,   r-   
<listcomp>  s    z)encode_pdfdocencoding.<locals>.<listcomp>pdfdocencodingr   z#does not exist in translation table)ra   r
  r   )r"  r,   r,   r-   r     s   r   r  c                 C   s,   | du pt | to|  du pt |  tS )z<
    Returns:
        True if x is None or NullObject.

    N)rL   r   rK   rd   )r  r,   r,   r-   is_null_or_none  s   
r&  )9r   r   r]   r   syscollections.abcr   mathr   structr   typingr   r   r   r   r	   r
   version_infor   typing_extensionsr   _codecsr   
_protocolsr   r   _utilsr   r   r   r   r   r   r   errorsr   r   r   
__author____author_email__r   rd   r{   r!   r   r   r   r`   r   ra   r   rc   r   r   r   r&  r,   r,   r,   r-   <module>   sJ    
$	 0@ %;4;  $