
    Ngi                         d dl Z d dlmZ d dlmZmZmZ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)BytesIO)BinaryIOIteratorListOptionalcastc                       e Zd ZdS )CorruptDataErrorN)__name__
__module____qualname__     H/var/www/html/ai-engine/env/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   readEOFError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 #"N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>2   s     :::!%++:::r   r   i  r!   i  
   i     i     )	ranger   appendr   r   r   r-   lenr
   )r   r)   r'   table_lengths       r   feedzLZWDecoder.feed/   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   r#   r8   r
   loggerdebugr   )r   r)   r'   s      r   runzLZWDecoder.runN   s      	}}TZ00   IIdOO#    GGGLL8

344   	s     
..A 
AA)r   r   r   r   r   intr(   r-   r8   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   d   s4    	B2A88A;;r   )loggingior   typingr   r   r   r   r   	getLoggerr   r:   	Exceptionr
   r   r-   rB   r   r   r   <module>rH      s           ; ; ; ; ; ; ; ; ; ; ; ; ; ;		8	$	$	 	 	 	 	y 	 	 	U U U U U U U UpE e      r   