§
    dÒ³g  ã            
       óZ  — d dl Z d dlmZ d dlmZmZmZmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
l
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ erddlmZ  e j        e¦  «        Z G d„ de¦  «        Z G d„ deeeeedf                  ¦  «        Z G d„ de¦  «        ZdS )é    N)ÚBytesIO)ÚBinaryIOÚTYPE_CHECKINGÚOptionalÚUnioné   )Úsettings)ÚPDFException)Ú	PDFObjRef)Ú	PDFStream)Ú
dict_value)Ú	int_value)ÚKWD)ÚPSEOF)Ú	PSKeyword)ÚPSStackParser)ÚPSSyntaxError)ÚPDFDocumentc                   ó   — e Zd ZdS )ÚPDFSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úP/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pdfminer/pdfparser.pyr   r      s   € € € € € Ø€Dr   r   c                   óÂ   — e Zd ZdZdeddfd„Zdd„Z ed	¦  «        Z ed
¦  «        Z	 ed¦  «        Z
 ed¦  «        Z ed¦  «        Z ed¦  «        Zdededdfd„ZdS )Ú	PDFParsera£  
    PDFParser fetch PDF objects from a file stream.
    It can handle indirect references by referring to
    a PDF document set by set_document method.
    It also reads XRefs at the end of every PDF file.

    Typical usage:
      parser = PDFParser(fp)
      parser.read_xref()
      parser.read_xref(fallback=True) # optional
      parser.set_document(doc)
      parser.seek(offset)
      parser.nextobject()

    ÚfpÚreturnNc                 óL   — t          j        | |¦  «         d | _        d| _        d S )NF)r   Ú__init__ÚdocÚfallback)Úselfr   s     r   r"   zPDFParser.__init__-   s'   € ÝÔ˜t RÑ(Ô(Ð(Ø,0ˆŒØˆŒˆˆr   r#   r   c                 ó   — || _         dS )z0Associates the parser with a PDFDocument object.N)r#   )r%   r#   s     r   Úset_documentzPDFParser.set_document2   s   € àˆŒˆˆr   ó   Rs   nulls   endobjs   streams   xrefs	   startxrefÚposÚtokenc           	      óB  — || j         | j        fv r | j        |                      d¦  «        Ž  dS || j        u r | j        |                      d¦  «        Ž  dS || j        u r|                      |df¦  «         dS || j        u r t          | j	        ¦  «        dk    r†	 |                      d¦  «        \  \  }}\  }}t          |¦  «        t          |¦  «        }}| j        €J ‚t          | j        ||¦  «        }|                      ||f¦  «         dS # t          $ r Y dS w xY wdS || j        u �r[|                      d¦  «        \  \  }}t          |¦  «        }d}| j        sE	 t#          |d         ¦  «        }n.# t$          $ r! t&          j        rt+          d|z  ¦  «        ‚Y nw xY w|                      |¦  «         	 |                      ¦   «         \  }}	n,# t0          $ r t&          j        rt+          d¦  «        ‚Y dS w xY w|t          |	¦  «        z  }| j                             |¦  «         t5          | j                             |¦  «        ¦  «        }
|                      ||z   ¦  «         	 	 |                      ¦   «         \  }}	n+# t0          $ r t&          j        rt+          d¦  «        ‚Y nVw xY wd	|	v r/|	                     d	¦  «        }||z  }| j        r|
|	d|…         z  }
n|t          |	¦  «        z  }| j        r|
|	z  }
Œ–|                      ||z   ¦  «         t:                               d
||||
dd…         ¦  «         | j        €J ‚t?          |tA          |
¦  «        | j        j!        ¦  «        }|                      ||f¦  «         dS |                      ||f¦  «         dS )zHandles PDF-related keywords.r   é   Né   r   ÚLengthz/Length is undefined: %rzUnexpected EOFs	   endstreamz-Stream: pos=%d, objlen=%d, dic=%r, data=%r...é
   )"ÚKEYWORD_XREFÚKEYWORD_STARTXREFÚadd_resultsÚpopÚKEYWORD_ENDOBJÚKEYWORD_NULLÚpushÚ	KEYWORD_RÚlenÚcurstackÚintr#   r   r   ÚKEYWORD_STREAMr   r$   r   ÚKeyErrorr	   ÚSTRICTr   ÚseekÚnextliner   r   Ú	bytearrayÚreadÚindexÚlogÚdebugr   ÚbytesÚdecipher)r%   r)   r*   Ú_ÚobjidÚgennoÚobjÚdicÚobjlenÚlineÚdataÚlineposÚiÚstreams                 r   Ú
do_keywordzPDFParser.do_keyword=   s  € ð �TÔ&¨Ô(>Ð?Ð?Ð?ØˆDÔ˜dŸhšh q™kœkÐ*Ð*Ð*Ð*à�dÔ)Ð)Ð)ØˆDÔ˜dŸhšh q™kœkÐ*Ð*Ð*Ð*à�dÔ'Ð'Ð'à�IŠI�s˜D�kÑ"Ô"Ð"Ð"Ð"à�d”nÐ$Ð$å�4”=Ñ!Ô! QÒ&Ð&ðØ/3¯xªx¸©{¬{Ñ,‘Z�a˜¡ ! UÝ&)¨%¡j¤jµ#°e±*´*˜E�UØœ8Ð/Ð/Ð/Ý# D¤H¨e°UÑ;Ô;�CØ—I’I˜s C˜jÑ)Ô)Ð)Ð)Ð)øÝ$ð ð ð Ø�D�Dðøøøð 'Ð&ð �dÔ)Ð)Ñ)àŸ(š( 1™+œ+‰K‰Xˆa�Ý˜S‘/”/ˆCØˆFØ”=ð OðOÝ& s¨8¤}Ñ5Ô5�F�FøÝð Oð Oð OÝ”ð OÝ,Ð-GÈ#Ñ-MÑNÔNÐNðOð OðOøøøð �IŠI�c‰NŒNˆNðØ ŸMšM™OœO‘	��D�DøÝð ð ð Ý”?ð ;Ý(Ð)9Ñ:Ô:Ð:Ø��ðøøøð •3�t‘9”9ÑˆCØŒG�LŠL˜ÑÔÐÝ˜TœWŸ\š\¨&Ñ1Ô1Ñ2Ô2ˆDØ�IŠI�c˜F‘lÑ#Ô#Ð#ð!ðØ&*§m¢m¡o¤o‘O�W˜d˜døÝð ð ð Ý”ð ?Ý,Ð-=Ñ>Ô>Ð>Ø�Eðøøøð   4Ð'Ð'ØŸ
š
 <Ñ0Ô0�AØ˜a‘K�FØ”}ð )Ø  R a R¤Ñ(˜ØØ�#˜d™)œ)Ñ#�Ø”=ð !Ø˜D‘L�Dð!ð  �IŠI�c˜F‘lÑ#Ô#Ð#å�IŠIØ?ØØØØ�S�b�S”	ñô ð ð ”8Ð'Ð'Ð'Ý˜s¥E¨$¡K¤K°´Ô1BÑCÔCˆFØ�IŠI�s˜F�mÑ$Ô$Ð$Ð$Ð$ð �IŠI�s˜E�lÑ#Ô#Ð#Ð#Ð#sI   ÂA2D Ä
DÄDÅ E6 Å6(F!Æ F!Æ:G Ç%G;Ç:G;É+J Ê%J+Ê*J+)r#   r   r    N)r   r   r   Ú__doc__r   r"   r'   r   r7   r5   r4   r;   r0   r1   r:   r   rR   r   r   r   r   r      sÙ   € € € € € ðð ð ˜8ð ¨ð ð ð ð ð
ð ð ð ð ��D‘	”	€IØ�3�w‘<”<€LØ�S˜‘^”^€NØ�S˜‘^”^€NØ�3�w‘<”<€LØ˜˜LÑ)Ô)ÐðM$˜cð M$¨)ð M$¸ð M$ð M$ð M$ð M$ð M$ð M$r   r   c                   óT   — e Zd ZdZdeddfd„Zdd„Z ed¦  «        Zde	d	e
ddfd
„ZdS )ÚPDFStreamParsera(  
    PDFStreamParser is used to parse PDF content streams
    that is contained in each page and has instructions
    for rendering the page. A reference to a PDF document is
    needed because a PDF content stream can also have
    indirect references to other objects in the same document.
    rN   r    Nc                 óV   — t                                | t          |¦  «        ¦  «         d S ©N)r   r"   r   )r%   rN   s     r   r"   zPDFStreamParser.__init__–   s$   € Ý×Ò˜4¥¨¡¤Ñ/Ô/Ð/Ð/Ð/r   c                 ó>   —  | j         |                      ¦   «         Ž  d S rW   )r2   Úpopall)r%   s    r   ÚflushzPDFStreamParser.flush™   s    € ØˆÔ˜$Ÿ+š+™-œ-Ð(Ð(Ð(Ð(r   s   objr)   r*   c                 óš  — || j         u r}	 |                      d¦  «        \  \  }}\  }}t          |¦  «        t          |¦  «        }}t          | j        ||¦  «        }|                      ||f¦  «         n# t          $ r Y nw xY wd S || j        | j        fv rt          j
        rt          d¦  «        ‚d S |                      ||f¦  «         d S )Nr-   zKeyword endobj found in stream)r7   r3   r:   r   r#   r6   r   ÚKEYWORD_OBJr4   r	   r=   r   )r%   r)   r*   rG   rH   rI   rJ   s          r   rR   zPDFStreamParser.do_keywordž   sé   € Ø�D”NÐ"Ð"ðØ+/¯8ª8°A©;¬;Ñ(‘�!�U™Z˜a Ý"% e¡*¤*­c°%©j¬j˜�Ý ¤¨%°Ñ7Ô7�Ø—	’	˜3 ˜*Ñ%Ô%Ð%Ð%øÝ ð ð ð Ø�ðøøøàˆFØ�tÔ'¨Ô)<Ð=Ð=Ð=ÝŒð Gõ %Ð%EÑFÔFÐFØˆFà�	Š	�3˜�,ÑÔÐÐÐs   ‹A)A5 Á5
BÂB)r    N)r   r   r   rS   rE   r"   rZ   r   r\   r:   r   rR   r   r   r   rU   rU   �   sŒ   € € € € € ðð ð0˜Uð 0 tð 0ð 0ð 0ð 0ð)ð )ð )ð )ð �#�f‘+”+€Kð ˜cð  ¨)ð  ¸ð  ð  ð  ð  ð  ð  r   rU   )ÚloggingÚior   Útypingr   r   r   r   Ú r	   Úpdftypesr
   r   r   r   r   Úpsparserr   r   r   r   r   Úpdfdocumentr   Ú	getLoggerr   rC   r   r   rU   r   r   r   ú<module>re      sÚ  ðØ €€€Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #àð )Ø(Ð(Ð(Ð(Ð(Ð(à€gÔ˜Ñ!Ô!€ð	ð 	ð 	ð 	ð 	�\ñ 	ô 	ð 	ð
n$ð n$ð n$ð n$ð n$�˜e I¨y¸)ÀTÐ$IÔJÔKñ n$ô n$ð n$ðb# ð # ð # ð # ð # �iñ # ô # ð # ð # ð # r   