o
    fS                     @   s   d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZ dedee fddZee ZG dd dZG d	d
 d
eZG dd deZdedeeef defddZdee ddfddZdS )    N)
AnyCallableDictIteratorListMutableSequenceOptionalSequenceUnioncastdatareturnc                 c   s    | E d H  d S N )r   r   r   G/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pdfminer/ccitt.py	get_bytes   s   r   c                	   @   s   e Zd ZU eed< eeegef  ed< dddZe	dede
eef d	eddfd
dZdeddfddZdeddfddZdS )	BitParser_state_acceptr   Nc                 C   s
   d| _ d S )Nr   )_posselfr   r   r   __init__.   s   
zBitParser.__init__rootvbitsc                 C   s|   |}d }t t|D ]'}d|k r&|d usJ || d u r"d d g||< || }|| dkr/d}q
d}q
|d us8J |||< d S )Nr   1   )rangelen)clsr   r   r   pbir   r   r   add1   s   zBitParser.addr   c                 C   s*   t |D ]}dD ]	}| ||@  qqd S N   @                   r   )r   
_parse_bitr   r   bytemr   r   r   	feedbytesB   s
   zBitParser.feedbytesxc                 C   sZ   |r| j d }n| j d }|  jd7  _t|tr|| _ d S | jd us%J | || _ d S Nr   r   )r   r   
isinstancelistr   )r   r3   r   r   r   r   r.   G   s   


zBitParser._parse_bitr   N)__name__
__module____qualname__BitParserState__annotations__r   r   r   r   classmethodr
   intstrr$   bytesr2   objectr.   r   r   r   r   r   '   s   
 
$r   c                   @   s  e Zd ZU ddgZeedd eedd eedd eedd	 eed
d eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eed d! eed"d# eed$d% ddgZeedd& eedd' eedd( eedd) eed*d+ eed,d- eed.d/ eed0d1 eed2d3 eed4d5 eed6d7 eed8d9 eed:d; eed<d eed=d> eed?d@ eedAdB eedCdD eedEdF eedGdH eedIdJ eedKdL eedMd eedNdO eedPdQ eedRdS eedTdU eedVdW eedXdY eedZd[ eed\d] eed^d_ eed`da eedbdc eeddde eedfdg eedhdi eedjdk eedldm eedndo eedpdq eedrds eedtdu eedvdw eedxdy eedzd{ eed|d} eed~d eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eedd eeddá eeddš eeddǡ eeddɡ eeddˡ eedd͡ eeddϡ eeddѡ eeddӡ eeddա eeddס eedd١ eeddۡ eeddݡ eeddߡ eedd eedd eedd eedd eedd eedd eedd eedd ddgZeedd eedd eedd eedd eed*d eed,d eed.d eed0d eed2d eed4d eed6dO eed8d eed:d eed<d{ eed=d eed?d eedAd eedCd eedEd eedGd eedId eedKd  eedMd eedNd eedPd eedRd eedTd eedVd eedXd eedZd eed\d	 eed^d
 eed`d eedbd eeddd eedfd eedhd eedjd eedld eednd eedpd eedrd eedtd eedvd eedxd eedzd eed|d eed~d eedd eedd eedd eedd eedd eedd  eedd! eedd" eedd# eedd$ eedd% eedd& eedd' eedd( eedd) eedd* eedd eedd+ eedd, eedd- eedd. eedd/ eedd0 eedd1 eedd2 eedd3 eedd4 eedd5 eedd6 eedd7 eedd8 eedd9 eedd: eedd; eedĐd< eedƐd= eedȐd> eedʐd? eed̐d@ eedΐdA eedАdB eedҐdC eedԐdD eeddס eedd١ eeddۡ eeddݡ eeddߡ eedd eedd eedd eedd eedd eedd eedd eedd ddgZeedd eedEdE eed	d	 eedd eedFdF eedGdH eedId] eedJd[ eedKdL eedMdN eedOdP eedQdR eedSdT eedUdV G dWdX dXe	Z
G dYdZ dZe	ZG d[d\ d\e	Zeed]< dd_ed`edadfdbdcZddedadfdedfZdgedaefdhdiZdjedaefdkdlZdjedaefdmdnZdoee daefdpdqZdaefdrdsZdtedaefdudvZddwdxZdyedoee dadfdzd{Z dd|d}Z!dd~dZ"dedadfddZ#dddZ$dededadfddZ%doedadfddZ&dS (  CCITTG4ParserNr   r   r   011010h001r!   0001r-   000011000010   00000110000010u
0000001111x1
0000001000x2
0000001001x3
0000001010x4
0000001011x5
0000001100x6
0000001101x7
0000001110e0000000000010000000000010011010100011101111000r,   1011   1100   1110   1111r+   10011	   10100
   00111   01000   001000      110100   110101r*   101010   101011   0100111   0001100   0001000   0010111      0000100   0101000   0101011   0010011   0100100   0011000   00000010   00000011   00011010r)   00011011!   00010010"   00010011#   00010100$   00010101%   00010110&   00010111'   00101000(   00101001)   00101010*   00101011+   00101100,   00101101-   00000100.   00000101/   000010100   000010111   010100102   010100113   010101004   010101015   001001006   001001017   010110008   010110019   01011010:   01011011;   01001010<   01001011=   00110010>   00110011?   00110100r(   11011r'   10010   010111   0110111i@  00110110i  00110111i  01100100i   01100101i@  01101000i  01100111i  	011001100i   	011001101i@  	011010010i  	011010011i  	011010100i   	011010101i@  	011010110i  	011010111i  	011011000i   	011011001i@  	011011010i  	011011011i  	010011000i   	010011001i@  	010011010i  011000i  	010011011i   00000001000i@  00000001100i  00000001101i  000000010010i   000000010011i@  000000010100i  000000010101i  000000010110i 	  000000010111i@	  000000011100i	  000000011101i	  000000011110i 
  000000011111
0000110111111000110010000110001010001000000101000011100000111	000011000
0000010111
00000110000000110011100001101000000011011000000011011100000101000000000101110000001100000001100101000001100101100001100110000001100110100000110100000000110100100000110101000000110101100001101001000001101001100001101010000001101010100001101011000001101011100000110110000000110110100001101101000001101101100000101010000000101010100000101011000000101011100000110010000000110010100000101001000000101001100000010010000000011011100000011100000000010011100000010100000000101100000000101100100000010101100000010110000000101101000000110011000000110011100001100100000001100100100000101101100000011001100000011010000000011010100000011011000000001101101000000100101000000010010110000001001100000000100110100000011100100000001110011000000111010000000011101010000001110110000000111011100000010100100000001010011000000101010000000010101010000001011010000000101101100000011001000000001100101010000100000000001T00T10T000	000000011T100	000000010T0000
0000000011T1000
0000000010T0000000000000011T1000000000000010c                   @      e Zd ZdS )zCCITTG4Parser.EOFBNr8   r9   r:   r   r   r   r   EOFBN      rk  c                   @   ri  )zCCITTG4Parser.InvalidDataNrj  r   r   r   r   InvalidDataQ  rl  rm  c                   @   ri  )zCCITTG4Parser.ByteSkipNrj  r   r   r   r   ByteSkipT  rl  rn  _colorFwidth	bytealignr   c                 C   s"   t |  || _|| _|   d S r   )r   r   rp  rq  reset)r   rp  rq  r   r   r   r   Y  s
   
zCCITTG4Parser.__init__r   c              	   C   sh   t |D ]-}zdD ]	}| ||@  q	W q | jy&   | j| _| j| _Y q | jy1   Y  d S w d S r%   )r   r.   rn  _parse_moder   MODEr   rk  r/   r   r   r   r2   `  s   zCCITTG4Parser.feedbytesmodec                 C   s   |dkr|    |   | jS |dkr#d| _| j| _| jr | jS | jS |dkr.| j	| _| j
S |dkr5| jt|trF| | |   | jS | |)Nr!   rF   r   rP   r`   )_do_pass_flush_linert  _n1_parse_horiz1r   ro  WHITEBLACK_parse_uncompressedUNCOMPRESSEDrk  r5   r>   _do_verticalrm  )r   ru  r   r   r   rs  l  s(   


zCCITTG4Parser._parse_modenc                 C   sP   |d u r| j |  j|7  _|dk rd| _d| j | _| j| _| jr%| jS | jS )Nr(   r   r   )rm  rx  _n2ro  _parse_horiz2r   rz  r{  r   r  r   r   r   ry    s   zCCITTG4Parser._parse_horiz1c                 C   sh   |d u r| j |  j|7  _|dk r+d| j | _| j| _| | j| j |   | jS | jr1| j	S | j
S )Nr(   r   )rm  r  ro  rs  r   _do_horizontalrx  rw  rt  rz  r{  r  r   r   r   r    s   zCCITTG4Parser._parse_horiz2r   c                 C   sR   |s| j |dr!| j| _t|d | _| |dd   | jS | | | jS )NTr   r-   )	rm  
startswithrs  r   r>   ro  _do_uncompressedrt  r}  )r   r   r   r   r   r|    s   

z!CCITTG4Parser._parse_uncompressedc                 C   s    d dd | jd | j D S )N c                 s       | ]}t |V  qd S r   r?   .0r"   r   r   r   	<genexpr>      z*CCITTG4Parser._get_bits.<locals>.<genexpr>)join_curline_curposr   r   r   r   	_get_bits  s    zCCITTG4Parser._get_bitsr#   c                 C   s   |dk rdd dd | jD  S t| j|kr%d dd | jD d S d dd | jd | D d t| j|  d	 d d
d | j|d d  D  S )Nr   z[]r  c                 s   r  r   r  r  r   r   r   r    r  z-CCITTG4Parser._get_refline.<locals>.<genexpr>c                 s   r  r   r  r  r   r   r   r    r  c                 s   r  r   r  r  r   r   r   r    r  []c                 s   r  r   r  r  r   r   r   r    r  r   )r  _refliner   r?   )r   r#   r   r   r   _get_refline  s    zCCITTG4Parser._get_reflinec                 C   s8   d| _ tddg| j | _|   | j| _| j| _d S )Nr   r"   r   )	_yarrayrp  r  _reset_liners  r   rt  r   r   r   r   r   rr    s   zCCITTG4Parser.resetyc                 C   s   t |ddd |D  d S )Nr  c                 s   r  r   r  r  r   r   r   r    r  z,CCITTG4Parser.output_line.<locals>.<genexpr>)printr  )r   r  r   r   r   r   output_line  s   zCCITTG4Parser.output_linec                 C   s.   | j | _tddg| j | _ d| _d| _d S )Nr"   r   rD   )r  r  r  rp  r  ro  r   r   r   r   r    s
   zCCITTG4Parser._reset_linec                 C   sB   | j | jkr| | j| j |  jd7  _|   | jr| jd S Nr   )rp  r  r  r  r  r  rq  rn  r   r   r   r   rw    s   zCCITTG4Parser._flush_linedxc                 C   s   | j d }	 |dkr| jdkr| j| | jkrn!n|t| jkr!n| j|d  | jkr4| j| | jkr4n|d7 }q||7 }td| j }tdt| j|}||k r_t||D ]}| j| j|< qUn||k rqt||D ]}| j| j|< qh|| _ d| j | _d S r4   )	r  ro  r  r   maxminrp  r   r  )r   r  rR   x0r3   r   r   r   r~    s4   
zCCITTG4Parser._do_verticalc                 C   s  | j d }	 |dkr| jdkr| j| | jkrn!n|t| jkr!n| j|d  | jkr4| j| | jkr4n|d7 }q	 |dkrM| jdkrL| j| | jkrLn!n|t| jkrUn| j|d  | jkrh| j| | jkrhn|d7 }q:t| j |D ]}| j| j|< qs|| _ d S r4   )r  ro  r  r   r   r  )r   rR   r3   r   r   r   rv    s:   
zCCITTG4Parser._do_passn1n2c                 C   s   | j dk rd| _ | j }t|D ]}t| j|kr n| j| j|< |d7 }qt|D ]}t| j|kr4 nd| j | j|< |d7 }q)|| _ d S )Nr   r   )r  r   r   r  ro  )r   r  r  r3   _r   r   r   r    s   


zCCITTG4Parser._do_horizontalc                 C   s4   |D ]}t || j| j< |  jd7  _|   qd S r  )r>   r  r  rw  )r   r   cr   r   r   r  $  s
   
zCCITTG4Parser._do_uncompressedFr7   )'r8   r9   r:   rt  r   r$   rz  r{  r}  	Exceptionrk  rm  rn  r>   r<   boolr   r@   r2   rA   r;   rs  r   ry  r  r   r?   r|  r  r  rr  r	   r  r  rw  r~  rv  r  r  r   r   r   r   rB   T   s  
 
$$	 rB   c                	   @   sR   e Zd Z	ddedededdfddZdefd	d
Zdedee ddfddZ	dS )CCITTFaxDecoderFrp  rq  reversedr   Nc                 C   s    t j| ||d || _d| _d S )Nrq      )rB   r   r  _buf)r   rp  rq  r  r   r   r   r   -  s   zCCITTFaxDecoder.__init__c                 C   s   | j S r   )r  r   r   r   r   close5  s   zCCITTFaxDecoder.closer  r   c                 C   sz   t  ddgt|d d  }| jrdd |D }t|D ]\}}|r1||d   d|d  7  < q|  j| 7  _d S )NBr   rk   r+   c                 S   s   g | ]}d | qS )r   r   r  r   r   r   
<listcomp>;  s    z/CCITTFaxDecoder.output_line.<locals>.<listcomp>r&   )r  r   r  	enumerater  tobytes)r   r  r   arrr#   r"   r   r   r   r  8  s   zCCITTFaxDecoder.output_line)FF)
r8   r9   r:   r>   r  r   r@   r  r	   r  r   r   r   r   r  ,  s    
r  paramsc                 C   sl   | d}|dkr)tt| d}tt| d}tt| d}t|||d}nt|||  | S )NKrD   ColumnsEncodedByteAlignBlackIs1)rq  r  )getr   r>   r  r  
ValueErrorr2   r  )r   r  r  colsrq  r  parserr   r   r   ccittfaxdecodeC  s   

r  argvc           
      C   s   | dd  sdd l }|  d S G dd dt}| dd  D ]'}t|d}|d\}}}}}}|t|}	|	|  |	  |  qd S )Nr   r   c                   @   sH   e Zd ZddededdfddZded	ee ddfd
dZdddZdS )zmain.<locals>.ParserFrp  rq  r   Nc                 S   s.   dd l }tj| ||d || jdf| _d S )Nr   r  i  )pygamerB   r   Surfacerp  img)r   rp  rq  r  r   r   r   r   Y  s   zmain.<locals>.Parser.__init__r  r   c                 S   s@   t |D ]\}}|r| j||fd q| j||fd qd S )N)   r  r  )r   r   r   )r  r  set_at)r   r  r   r3   r"   r   r   r   r  `  s
   z main.<locals>.Parser.output_linec                 S   s   dd l }|j| jd d S )Nr   zout.bmp)r  imagesaver  )r   r  r   r   r   r  h  s   zmain.<locals>.Parser.closer  r7   )	r8   r9   r:   r>   r  r   r	   r  r  r   r   r   r   ParserX  s    r  rb.)	unittestmainrB   opensplitr>   r2   readr  )
r  r  r  pathfpr  kwrF   r  r   r   r   r  Q  s   

r  )r  typingr   r   r   r   r   r   r   r	   r
   r   r@   r>   r   r;   r   rB   r  r?   rA   r  r  r   r   r   r   <module>   s   0-   [