Ë
    vl�jò  ã            
       ó  — d dl Z d dlmZ d dl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mZmZmZ d dlmZ d d	lmZmZmZ erd d
lmZ  e j4                  e«      Z G d„ de«      Z G d„ deeeeedf      «      Z G d„ de«      Zy)é    N)ÚBytesIO)ÚTYPE_CHECKINGÚBinaryIOÚUnion)Úsettings)Úsafe_int)ÚPDFException)Ú	PDFObjRefÚ	PDFStreamÚ
dict_valueÚ	int_value)ÚPSEOF)ÚKWDÚ	PSKeywordÚPSStackParser)ÚPDFDocumentc                   ó   — e Zd Zy)ÚPDFSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úH/var/www/html/pp/venv/lib/python3.12/site-packages/pdfminer/pdfparser.pyr   r      s   „ Ør   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y)Ú	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| _        y )NF)r   Ú__init__ÚdocÚfallback)Úselfr   s     r   r    zPDFParser.__init__'   s    € Ü×Ñ˜t RÔ(Ø'+ˆŒØˆ�r   c                 ó   — || _         y)z0Associates the parser with a PDFDocument object.N)r!   )r#   r!   s     r   Úset_documentzPDFParser.set_document,   s	   € àˆ�r   ó   Rs   nulls   endobjs   streams   xrefs	   startxrefÚposÚtokenc           	      ó  — || j                   | j                  fv r | j                  | j                  d«      Ž  y|| j                  u r | j                  | j                  d«      Ž  y|| j
                  u r| j                  |df«       y|| j                  u rht        | j                  «      dk\  rO| j                  d«      \  \  }}}t        |«      }|�*t        | j                  |«      }| j                  ||f«       yyy|| j                  u �r§| j                  d«      }	 |\  \  }}t!        |«      }d}
| j"                  s	 t%        |d   «      }
| j-                  |«       	 | j/                  «       \  }}|t        |«      z  }| j2                  j-                  |«       t5        | j2                  j7                  |
«      «      }| j-                  ||
z   «       	 	 | j/                  «       \  }}d
|v r+|j9                  d
«      }|
|z  }
| j"                  r||d| z  }n |
t        |«      z  }
| j"                  r||z  }Œc| j-                  ||
z   «       t:        j=                  d||
||dd «       | j                  €J ‚t?        |tA        |«      | j                  jB                  «      }| j                  ||f«       y| j                  ||f«       y# t        $ r}	t        d|› �«      |	‚d}	~	ww xY w# t&        $ r*}	t(        j*                  rt        d|›�«      |	‚Y d}	~	�ŒÈd}	~	ww xY w# t0        $ r&}	t(        j*                  rt        d	«      |	‚Y d}	~	yd}	~	ww xY w# t0        $ r'}	t(        j*                  rt        d	«      |	‚Y d}	~	�ŒCd}	~	ww xY w)zHandles PDF-related keywords.é   é   Né   zInvalid stream dictionary: r   ÚLengthz/Length is undefined: z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Úcurstackr   r
   r!   ÚKEYWORD_STREAMÚ
ValueErrorr   r   r"   r   ÚKeyErrorr   ÚSTRICTÚseekÚnextliner   r   Ú	bytearrayÚreadÚindexÚlogÚdebugr   ÚbytesÚdecipher)r#   r'   r(   Ú_Ú
_object_idÚ	object_idÚobjÚpopped_dataÚdicÚerrÚobjlenÚlineÚdataÚ_lineposÚiÚstreams                   r   Ú
do_keywordzPDFParser.do_keyword7   sQ  € à�T×&Ñ&¨×(>Ñ(>Ð?Ñ?ØˆD×Ñ˜dŸh™h q›kÒ*à�d×)Ñ)Ñ)ØˆD×Ñ˜dŸh™h q›kÒ*à�d×'Ñ'Ñ'à�I‰I�s˜D�kÕ"à�d—n‘nÑ$ä�4—=‘=Ó! QÒ&Ø%)§X¡X¨a£[Ñ"‘��J Ü$ ZÓ0�	ØÐ(Ü# D§H¡H¨iÓ8�CØ—I‘I˜s C˜jÕ)ð )ð 'ð �d×)Ñ)Ò)àŸ(™( 1›+ˆKðØ)‘‘�!�Sô ˜S“/ˆCØˆFØ—=’=ðXÜ& s¨8¡}Ó5�Fð �I‰I�cŒNðØ ŸM™M›O‘	��Dð
 ”3�t“9ÑˆCØ�G‰G�L‰L˜ÔÜ˜TŸW™WŸ\™\¨&Ó1Ó2ˆDØ�I‰I�c˜F‘lÔ#ØðØ'+§}¡}£Ñ$�X˜tð
   4Ñ'ØŸ
™
 <Ó0�AØ˜a‘K�FØ—}’}Ø  R a Ñ(˜ØØœ#˜d›)Ñ#�Ø—=’=Ø˜D‘L�Dð ð  �I‰I�c˜F‘lÔ#ä�I‰IØ?ØØØØ�S�b�	ôð —8‘8Ð'Ð'Ð'Ü˜s¤E¨$£K°·±×1BÑ1BÓCˆFØ�I‰I�s˜F�mÕ$ð �I‰I�s˜E�lÕ#øôo ò Ü$Ø1°+°Ð?óàðûðûô  ò XÜ—’Ü,Ð/EÀcÀWÐ-MÓNÐTWÐWõ 'ûðXûô ò Ü—?’?Ü(Ð)9Ó:ÀÐCÜûðûô ò Ü—’Ü,Ð-=Ó>ÀCÐGÝûðús`   Ä K	 ÅK) Å!L ÇM Ë		K&ËK!Ë!K&Ë)	LË2LÌLÌ	MÌ(M	Í	MÍ	NÍM<Í<N)r!   r   r   N)r   r   r   Ú__doc__r   r    r%   r   r6   r4   r3   r9   r/   r0   Úintr   rS   r   r   r   r   r      sw   „ ñð˜8ð ¨ó ó
ñ �D“	€IÙ�w“<€LÙ˜“^€NÙ˜“^€NÙ�w“<€LÙ˜LÓ)ÐðQ$˜cð Q$¨)ð Q$¸ô Q$r   r   c                   óL   — 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y)Ú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.
    rO   r   Nc                 óB   — t         j                  | t        |«      «       y ©N)r   r    r   )r#   rO   s     r   r    zPDFStreamParser.__init__“   s   € Ü×Ñ˜4¤¨£Õ/r   c                 ó>   —  | j                   | j                  «       Ž  y rY   )r1   Úpopall)r#   s    r   ÚflushzPDFStreamParser.flush–   s   € Øˆ×Ñ˜$Ÿ+™+›-Ò(r   s   objr'   r(   c                 óN  — || j                   u rN| j                  d«      \  \  }}}t        |«      }|�)t        | j                  |«      }| j                  ||f«       y || j                  | j                  fv rt        j                  rt        d«      ‚y | j                  ||f«       y )Nr,   zKeyword endobj found in stream)r6   r2   r   r
   r!   r5   ÚKEYWORD_OBJr3   r   r<   r   )r#   r'   r(   rF   rG   rH   rI   s          r   rS   zPDFStreamParser.do_keyword›   sš   € Ø�D—N‘NÑ"à!%§¡¨!£Ñ‰OˆQ�
˜QÜ  Ó,ˆIØÐ$Ü §¡¨)Ó4�Ø—	‘	˜3 ˜*Ô%Øà�t×'Ñ'¨×)<Ñ)<Ð=Ñ=Ü�Šô %Ð%EÓFÐFØð 	�	‰	�3˜�,Õr   )r   N)r   r   r   rT   rD   r    r\   r   r^   rU   r   rS   r   r   r   rW   rW   ‹   sD   „ ñð0˜Uð 0 tó 0ó)ñ �f“+€Kð ˜cð  ¨)ð  ¸ô  r   rW   ) ÚloggingÚior   Útypingr   r   r   Úpdfminerr   Úpdfminer.castingr   Úpdfminer.pdfexceptionsr	   Úpdfminer.pdftypesr
   r   r   r   Úpdfminer.psexceptionsr   Úpdfminer.psparserr   r   r   Úpdfminer.pdfdocumentr   Ú	getLoggerr   rB   r   r   rW   r   r   r   ú<module>rj      s{   ðÛ Ý ß 1Ñ 1å Ý %Ý /ß IÓ IÝ 'ß ;Ñ ;áÝ0à€g×Ñ˜Ó!€ô	�\ô 	ô
q$�˜e I¨y¸)ÀTÐ$IÑJÑKô q$ôh" �iõ " r   