o
    liB!                     @   s   d dl Z d dlmZ ddlmZmZmZ ddlmZ e 	e
Z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defddZdedefddZdS )    N)BytesIO   )WHITESPACES
StreamTyperead_non_whitespace)PdfReadErrori    streamreturnc                 C   st  d}	 t | | t }|std|d}|dkr3||d|d  7 }| t| | d d nX|d}|dkrn| t| | d d | d}|tv re| d	d | d}|d8 }|tv sR||d| 7 }nt|d
kr|||7 }td||dd	 7 }| d	d qt | }|| d
7 }| dd |dd
 dks|d
d dks|d
d tv std|S )z_
    Extract HexEncoded Stream from Inline Image.
    the stream will be moved onto the EI
        TUnexpected end of stream   >r   N      EIr      EI stream not foundr   readBUFFER_SIZEr   findseeklenr   )r   data_outdata_bufferedpos_tokpos_eicei_tok r   Z/var/www/html/pca-backend/venv/lib/python3.10/site-packages/pypdf/generic/_image_inline.pyextract_inline_AHx+   sB   



0r!   c                 C   s   d}	 t | | t }|std|d}|dkr3||d|d  7 }| t| | d d nt|dkrA||7 }td||dd	 7 }| d	d qt | }|| d7 }| d
d |dd dksy|dd dks}|dd tv s}td|S )zX
    Extract A85 Stream from Inline Image.
    the stream will be moved onto the EI
    r
   Tr   s   ~>r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    extract_inline_A85U   s0   
0r#   c                 C   s   d}	 |  t}|std|d}|dkr/||d|d  7 }| t| | d d n||7 }qt| }||  d7 }| d	d |dd d
ks]|dd dksa|dd tv satd|S )zW
    Extract RL Stream from Inline Image.
    the stream will be moved onto the EI
    r
   Tr      r   Nr   r   r   r   r   r   )r   r   r   r   r   r   r   r   r"   r   r   r    extract_inline_RLv   s$   

0r%   c                 C   s  d}d}	 |  d}|s|dkr||7 }|dkrqd}|  d}||7 }|dkr/| dd n*|dkr4n%|dkr9n!|d	v rY|  d
}||7 }|d d |d  }||  |d
 7 }qt| }||  d
7 }| dd |dd
 dks|d
d dks|d
d tv std|S )z_
    Extract DCT (JPEG) Stream from Inline Image.
    the stream will be moved onto the EI
    r
   FTr             s&   r   r      r   r   r   r   )r   r   r   r   r   )r   r   notfirstr   szr   r   r   r    extract_inline_DCT   s>   


0r-   c                 C   s  t  }	 | t}|std|d}|dkr|| nm||d|d   | d }| |d t| d |  }| d}|dkrO| |d q| d}|t	vr_| |d q|t	v rl| d}|t	v sc||d | t	vr|dvr| |d q|
| 	 | S q)	z+
    Legacy method
    used by default
    Tr      Er'   r   r      I>   r.      Q)r   r   r   r   r   writetellr   r   r   truncategetvalue)r   
stream_outr   r   
sav_pos_ei	saved_postok2tok3r   r   r    extract_inline_default   s@   




r:   )loggingior   _utilsr   r   r   errorsr   	getLogger__name__loggerr   bytesr!   r#   r%   r-   r:   r   r   r   r    <module>   s   
*!,