U
    Y»{j€  ã                	   @   s.  d dl 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mZ ddlmZmZ ddlmZmZ eeeeef d	œd
d„Zde	edeee eeef f ed dœdd„Zde	edeee eeef f ed dœdd„Zdeeef edeee eeef f eeef dœdd„Zeedœdd„ZdS )é    N)ÚDictÚListÚTupleÚUnioné   )Ú_pdfdoc_encoding)Ú
StreamTypeÚb_Úlogger_warningÚread_non_whitespace)ÚSTREAM_TRUNCATED_PREMATURELYÚPdfStreamErroré   )ÚByteStringObjectÚTextStringObject)ÚvalueÚreturnc                    s   t ‡ fdd„dD ƒƒS )Nc                 3   s.   | ]&}t ˆ  d ¡||d … dƒd V  qdS )ú#r   é   g     ào@N)ÚintÚlstrip)Ú.0Úi©r   © úT/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PyPDF2/generic/_utils.pyÚ	<genexpr>   s     zhex_to_rgb.<locals>.<genexpr>)r   r   é   )Útupler   r   r   r   Ú
hex_to_rgb
   s    r   )r   r   )ÚstreamÚforced_encodingr   c                 C   s    |   d¡ d}d}t| ƒ}|s&ttƒ‚|dkr0q^||7 }t|ƒdkr|tt|dd�ƒ7 }d}qt|ƒdkrr|d7 }t|ƒdkr’|tt|dd�ƒ7 }tt|ƒ|ƒS )	Nr   Ú ó    ó   >r   r   ©Úbaseó   0)	Úreadr   r   r   ÚlenÚchrr   Úcreate_string_objectr	   )r    r!   ÚtxtÚxÚtokr   r   r   Úread_hex_string_from_stream   s"    
r/   c           	      C   sš  |   d¡}d}g }|   d¡}|s(ttƒ‚|dkr<|d7 }�nB|dkr\|d8 }|dkrX�qŠ�n"|dk�r~|   d¡}dddd	d
ddddddddddddddddœ}z|| }W nÒ tk
�r|   d|k�r.|dk�r.tdƒD ]>}|   d¡}d|k�r|dk�r||7 }qØ|  dd¡  �qqØttt|dd�ƒƒ}nJ|dk�r^|   d¡}|dk�rX|  dd¡ d}nd | 	d!¡› �}t
|tƒ Y nX | |¡ qtd |¡|ƒS )"Nr   ó   (ó   )r   ó   \ó   
ó   ó   	ó   ó   s   \có   /ó    ó   %ó   <r$   ó   [ó   ]ó   #ó   _ó   &ó   $)ó   nó   ró   tó   bó   fó   cr0   r1   r8   r2   r9   r:   r;   r$   r<   r=   r>   r?   r@   rA   r'   ó   7r   éÿÿÿÿé   r%   s   
r#   zUnexpected escaped string: Úutf8)r(   r   r   ÚKeyErrorÚrangeÚseekr	   r*   r   Údecoder
   Ú__name__Úappendr+   Újoin)	r    r!   r.   Zparensr,   Zescape_dictÚ_ZntokÚmsgr   r   r   Úread_string_from_stream&   sn    



ì




rU   )Ústringr!   r   c              	   C   s  t | tƒrt| ƒS t | tƒ�rt |ttfƒr|d}| D ]>}z||| 7 }W q4 tk
rp   |t|fƒ d¡7 }Y q4X q4t|ƒS t |tƒr¤|dkr–t| ƒS t|  |¡ƒS zB|  	t
j¡rÌt|  d¡ƒ}d|_|W S tt| ƒƒ}d|_|W S W n tk
�r   t| ƒ Y S X ntdƒ‚dS )zÎ
    Create a ByteStringObject or a TextStringObject from a string to represent the string.

    :param Union[str, bytes] string: A string

    :raises TypeError: If string is not of type str or bytes.
    r"   ÚcharmapÚbyteszutf-16Tz3create_string_object should have str or unicode argN)Ú
isinstanceÚstrr   rX   ÚlistÚdictÚ	ExceptionrO   r   Ú
startswithÚcodecsÚBOM_UTF16_BEZautodetect_utf16Údecode_pdfdocencodingZautodetect_pdfdocencodingÚUnicodeDecodeErrorÚ	TypeError)rV   r!   Úoutr-   Úretvalr   r   r   r+   q   s4    


r+   )Ú
byte_arrayr   c                 C   s>   d}| D ]0}t | }|dkr0tdt|ƒdddƒ‚||7 }q|S )Nr"   ú ZpdfdocencodingrI   z#does not exist in translation table)r   rb   Ú	bytearray)rf   re   ÚbÚcr   r   r   ra   Ÿ   s    û
ra   )N)N)N)r_   Útypingr   r   r   r   Ú_codecsr   Z_utilsr   r	   r
   r   Úerrorsr   r   Z_baser   r   rZ   Úfloatr   r   r/   rU   rX   r+   ra   r   r   r   r   Ú<module>   s2    þý þýM þ

ý.