
    #j                         d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
  e j        e          Z G d de
          Z G d d	          Zd
edefdZdS )    N)Iterator)BytesIO)BinaryIOcast)PDFEOFErrorPDFExceptionc                       e Zd ZdS )CorruptDataErrorN)__name__
__module____qualname__     T/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pdfminer/lzw.pyr
   r
      s        Dr   r
   c                   V    e Zd ZdeddfdZdedefdZdedefdZde	e         fd	Z
dS )

LZWDecoderfpreturnNc                 Z    || _         d| _        d| _        d| _        g | _        d | _        d S )Nr      	   )r   buffbposnbitstableprevbuf)selfr   s     r   __init__zLZWDecoder.__init__   s0    		
)+
%)r   bitsc                 :   d}	 d| j         z
  }||k    r-||z  | j        ||z
  z	  d|z  dz
  z  z  }| xj         |z  c_         nZ||z  | j        d|z  dz
  z  z  }||z  }| j                            d          }|st          t          |          | _        d| _         |S )Nr      r   )r   r   r   readr   ord)r   r   vrxs        r   readbitszLZWDecoder.readbits   s    	DIAqyy $YDI!d($;da#PQ		T!		
 !V	a1f\ :;	GLLOO &%%FF		)	* r   codec                 v   d}|dk    rbd t          d          D             | _        | j                            d            | j                            d            d| _        d| _        nN|dk    rnF| j        s)t          t          | j        |                   x}| _        n|t          | j                  k     rKt          t          | j        |                   }| j                            | j        |d d         z              no|t          | j                  k    rP| j                            | j        | j        d d         z              t          t          | j        |                   }nt          t          | j                  }|dk    rd| _        n|d	k    rd
| _        n|dk    rd| _        || _        |S )Nr      c                 .    g | ]}t          |f          S r   )bytes).0cs     r   
<listcomp>z#LZWDecoder.feed.<locals>.<listcomp>5   s     :::!%++:::r   r   i  r!   i  
   i     i     )	ranger   appendr   r   r   r,   lenr
   )r   r(   r&   table_lengths       r   feedzLZWDecoder.feed2   s   3;;::uSzz:::DJJd###Jd###DLDJJS[[ 	#E4:d+;<<<Ac$*oo%%
4 011
!!$,2A2"67777TZ((
!!$,bqb1A"ABBB
4 011&&tz??Ls""

%%

%%
DLr   c           	   #     K   	 	 |                      | j                  }n# t          $ r Y d S w xY w	 |                     |          }n# t          $ r Y d S w xY w|V  t
                              d| j        ||| j        dd                     )Nr!   z&nbits=%d, code=%d, output=%r, table=%ri  )r'   r   EOFErrorr7   r
   loggerdebugr   )r   r(   r&   s      r   runzLZWDecoder.runQ   s      	}}TZ00   IIdOO#    GGGLL8

344   	s     
..A 
AA)r   r   r   r   r   intr'   r,   r7   r   r<   r   r   r   r   r      s        *8 * * * * *S S    2     >Xe_      r   r   datar   c                     t          |           }t          |                                          }d                    |          S )Nr   )r   r   r<   join)r>   r   ss      r   	lzwdecoderB   g   s4    	B2A88A;;r   )loggingcollections.abcr   ior   typingr   r   pdfminer.pdfexceptionsr   r   	getLoggerr   r:   r
   r   r,   rB   r   r   r   <module>rI      s     $ $ $ $ $ $       ! ! ! ! ! ! ! ! < < < < < < < <		8	$	$	 	 	 	 	| 	 	 	U U U U U U U UpE e      r   