
    .i3-                        d dl Z d dlZd dlmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZ d dlmZ g dZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdededefdZ dededefdZ!dededefdZ"dededefdZ#de$de%defdZ&ee$eeef         f         Z'ee$eee
e         e
e         f         f         Z(ee$eeee%e'e(f         f         Z) G d d          Z* G d  d!          Z+dS )"    N)calcsizepackunpack)BinaryIODictIterableListOptionalTupleUnioncast)PDFValueError))>Lnumber)>Bflags)r   retention_flags)r   
page_assoc)r   data_length   @   ?      i   l    &   1   3   s   JB2

   bit_posvaluereturnc                 ,    t          || z	  dz            S )Nr   bool)r   r    s     J/var/www/html/analyses/venv/lib/python3.11/site-packages/pdfminer/jbig2.pybit_setr&   '   s    '!Q&'''    flagc                 &    t          | |z            S Nr#   )r(   r    s     r%   
check_flagr+   +   s    ur'   maskc                 x    t          d          D ]}t          ||           r
|| z  |z	  c S t          d          N   zInvalid mask or valueranger&   r   r,   r    r   s      r%   masked_valuer3   /   sT    99 - -7D!! 	-DLW,,,,	- /
0
00r'   c                 ~    t          d          D ]}t          ||           r|| |z	  z  |z  c S  t          d          r.   r0   r2   s      r%   
mask_valuer5   7   sY    99 : :7D!! 	:TW_-'9999	: /
0
00r'   formatbufferc                 r    | dv sJ t          t          t                   t          | |                    \  }|S )N>   r   >Ir   )r   r   intr   )r6   r7   results      r%   
unpack_intr<   ?   s8    '''''E#Jvv 6 677HVMr'   c                       e Zd ZdZdeddfdZdee         fdZde	fdZ
ded	ed
edefdZded	ed
edefdZdeded
edefdZdeded
edefdZdS )JBIG2StreamReaderz&Read segments from a JBIG2 byte streamstreamr!   Nc                     || _         d S r*   r?   selfr?   s     r%   __init__zJBIG2StreamReader.__init__P       r'   c                    g }|                                  si }t          D ]\  }}t          |          }| j                            |          }t          |          |k     rd|d<    nFt          ||          }t          | d|z  d           }t          |          r ||||          }|||<   |	                    d          s|
                    |           |                                  |S )NT_errorzparse_%s)is_eof
SEG_STRUCTr   r?   readlenr<   getattrcallablegetappend)	rC   segmentssegmentfield_formatname	field_lenfieldr    parsers	            r%   get_segmentszJBIG2StreamReader.get_segmentsS   s   ')++-- 	)$&G&0 
& 
&"d$\22	((33u::	))(,GH%E"<77 zD'8$??F## :"F7E599E %;;x(( )((( ++-- 	)  r'   c                     | j                             d          dk    rdS | j                             dt          j                   dS )Nr   r'   TF)r?   rJ   seekosSEEK_CUR)rC   s    r%   rH   zJBIG2StreamReader.is_eofg   sA    ;A#%%4KR---5r'   rQ   r   rU   c                     t          t          |          t          t          |          t          t          |          dS )N)deferredpage_assoc_longtype)r+   HEADER_FLAG_DEFERREDHEADER_FLAG_PAGE_ASSOC_LONGr3   SEG_TYPE_MASK)rC   rQ   r   rU   s       r%   parse_flagszJBIG2StreamReader.parse_flagsn   s<     ##7??)*EuMM 66
 
 	
r'   c                    t          t          |          }g }g }|t          k     r6t          d          D ]%}|                    t          ||                     &n|| j                            d          z  }t          d|          }t          t          |          }t          t          j        |dz   dz                      }t          |          D ]_}	t          d| j                            d                    }
t          d          D ]%}|                    t          ||
                     &`|d         }t          |t                    sJ |d	k    rd}n|d
k    rd}nd}t          |          }t          |          D ]A}| j                            |          }t          ||          }|                    |           B|||dS )N      r   r      r   r   r         r9   )	ref_countretain_segmentsref_segments)r3   REF_COUNT_SHORT_MASKREF_COUNT_LONGr1   rO   r&   r?   rJ   r<   REF_COUNT_LONG_MASKr:   mathceil
isinstancer   )rC   rQ   r   rU   rk   rl   rm   r   ret_bytes_countret_byte_indexret_byteseg_num
ref_formatref_size	ref_indexref_datarefs                    r%   parse_retention_flagsz'JBIG2StreamReader.parse_retention_flagsz   s    !!5u==	~%% 88 @ @&&ww'>'>????@ T[%%a(((E"4//I$%8)DDI!$)Y]a,?"@"@AAO"'"8"8 G G%dDK,<,<Q,?,?@@$Qxx G GG#**77H+E+EFFFFG (#'3'''''c>>JJJJJJ''y)) 	% 	%I{''11HZ22C$$$$ #.(
 
 	
r'   pagec                     t          t          |d                   d         r-|| j                            d          z  }t	          d|          }|S )Nr   r_   rg   r   )r   JBIG2SegmentFlagsr?   rJ   r<   )rC   rQ   r~   rU   s       r%   parse_page_assocz"JBIG2StreamReader.parse_page_assoc   sN    !77#3445FG 	+T[%%a(((EdE**Dr'   lengthc                     |rat          t          |d                   d         t          k    r|t          k    rt	          d          | j                            |          |d<   |S )Nr   r`   z:Working with unknown segment length is not implemented yetraw_data)r   r   SEG_TYPE_IMMEDIATE_GEN_REGIONDATA_LEN_UNKNOWNNotImplementedErrorr?   rJ   )rC   rQ   r   rU   s       r%   parse_data_lengthz#JBIG2StreamReader.parse_data_length   ss      		?&(899&A01 1---)P   '+k&6&6v&>&>
#r'   )__name__
__module____qualname____doc__r   rD   r	   JBIG2SegmentrW   r$   rH   r:   bytesr   rd   JBIG2RetentionFlagsr}   r   r    r'   r%   r>   r>   M   sW       00x D    d<0    (    



 

 	


 


 

 

 

+
+
 +
 	+

 
+
 +
 +
 +
Z C  RU      	
 
     r'   r>   c                   2   e Zd ZU dZd eee         g            eee         g           dZe	e
d<   deddfdZ	 dd
ee         dedefdZ	 dd
ee         dedefdZdedefdZdededefdZde	dedefdZdededefdZdededefdZdedefdZdS )JBIG2StreamWriterz.Write JBIG2 segments to a file in JBIG2 formatr   )rk   rm   rl   EMPTY_RETENTION_FLAGSr?   r!   Nc                     || _         d S r*   rA   rB   s     r%   rD   zJBIG2StreamWriter.__init__   rE   r'   TrP   fix_last_pagec                 `   d}d }d }|D ]}|                      |          }| j                            |           |t          |          z  }t	          t
          t                   |d                   }|rYt	          t          |                    d                    }t	          t          |d                   d         t          k    rd }|r|}|r^|r\|Z| 
                    |dz   |          }|                      |          }| j                            |           |t          |          z  }|S )Nr   r   r   r   r`   r   )encode_segmentr?   writerK   r   r
   r:   rN   r   SEG_TYPE_END_OF_PAGEget_eop_segment)	rC   rP   r   data_lencurrent_pagerw   rQ   dataseg_pages	            r%   write_segmentsz JBIG2StreamWriter.write_segments   s?   
 &*!% 	, 	,G&&w//DKd###D		!H8C='(*;<<G 	,W[[%>%>?? *GG,<==fE+, , $(LL ,#+L 	"\ 	"w/B**7Q;EEG&&w//DKd###D		!Hr'   c                    t           }t          }|t          d|          z  }t          dd          }||z  }| j                            |           t          |          }||                     ||          z  }d}|D ]}t          t          |d                   }|rd}	nd}	| 	                    ||	z             }
| 
                    |
          }| j                            |           |t          |          z  }|S )Nr   r   r   r   r      )FILE_HEADER_IDFILE_HEAD_FLAG_SEQUENTIALr   r?   r   rK   r   r   r:   get_eof_segmentr   )rC   rP   r   headerheader_flagsnumber_of_pagesr   rw   rQ   seg_num_offseteof_segmentr   s               r%   
write_filezJBIG2StreamWriter.write_file   s
   
  0$t\*** tQ--/!&!!!v;;D''-@@@ 	3 	3G3 122GG 	NNN**7^+CDD"";//$CIIr'   rQ   c                     d}t           D ]_\  }}|                    |          }t          | d|z  d           }t          |          r |||          }nt	          ||          }||z  }`|S )Nr'   z	encode_%s)rI   rN   rL   rM   r   )rC   rQ   r   rR   rS   r    encoderrU   s           r%   r   z JBIG2StreamWriter.encode_segment  s    ", 	 	L$KK%%EdK$$6==G   2w//\511EMDDr'   r    c                 D   d}|                     d          r
|t          z  }d|v r||d         rt          n|z  }n9|t          t          |                     dd                    dk    rt          n|z  }|t          t          |d                   z  }t          d|          S )Nr   r^   r_   r~      r`   r   )rN   ra   rb   r   r:   r5   rc   r   )rC   r    rQ   r   s       r%   encode_flagszJBIG2StreamWriter.encode_flags  s    99Z   	*))E%%E:K4LW00RWWEEW[[3344s:: ,+E 	M5=999D%   r'   c                    g }d}|d         }t          |t                    sJ t          t          t                   |                    dg                     }|dk    rJt          t          |          }t          |          D ]\  }}	|	r|d|z  z  }|	                    |           nt          j        |dz   dz            }
dd|
z  z   }t          t          t                    d	z  }|	                    |           t          |
          D ]M}d
}||dz  |dz  dz            }t          |          D ]\  }}||rd|z  n|z  }|	                    |           Nt          t          t                   |                    dg                     }t          t          |d                   }|dk    rd}n|dk    rd}nd}|D ]}||z  }|	                    |           t          |g|R  S )Nr   rk   rl      r   rh   r   B   r   rm   r   ri   rj   IL)rs   r:   r   r	   r$   rN   r5   rn   	enumeraterO   rq   rr   ro   r1   r   )rC   r    rQ   r   flags_formatrk   rl   
flags_byterz   
ref_retainbytes_countflags_dword
byte_indexrv   ret_partr   ret_segrm   rw   rx   r|   s                        r%   encode_retention_flagsz(JBIG2StreamWriter.encode_retention_flags/  s#   
 +&	)S)))))tDz5995F+K+KLL>>#$8)DDJ)2?)C)C 1 1%	: 1!y.0JLL$$$$)Y]a$788K3#45L$%9>JJbPKLL%%%#K00 ' '
*:>JNQ<N+NO(1((;(; F F$GW EWXEHHX&&&&DIuyy'D'DEEsGH-..c>>JJJJJ 	 	CJ&LLLL)5))))r'   c                 b    t          d|          }|t          t          |d                   z  }|S )Nr   r   )r   r   r   )rC   r    rQ   r   s       r%   encode_data_lengthz$JBIG2StreamWriter.encode_data_length^  s/    D%  UGJ/000r'   
seg_numberpage_numberc                 8    ddt           d||dt          j        dS Nr   F)r^   r`   r'   )r   r   r   r   r   r   )r   r   r   )rC   r   r   s      r%   r   z!JBIG2StreamWriter.get_eop_segmentc  s/    "'1EFF %0F
 
 	
r'   c                 8    ddt           d|ddt          j        dS r   )SEG_TYPE_END_OF_FILEr   r   )rC   r   s     r%   r   z!JBIG2StreamWriter.get_eof_segmentm  s/    "'1EFF 0F
 
 	
r'   )T)r   r   r   r   r   r	   r:   r$   r   r   __annotations__r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r'   r%   r   r      s        88 T#Y++4T
B//2 2.   x D     #! !<(! ! 
	! ! ! !L # <(  
	   B
l 
u 
 
 
 
!"3 !l !u ! ! ! !$-*"-* -* 
	-* -* -* -*^ l u    

# 
C 
L 
 
 
 

# 
, 
 
 
 
 
 
r'   r   ),rq   r[   structr   r   r   typingr   r   r   r	   r
   r   r   r   pdfminer.pdfexceptionsr   rI   ra   rb   rc   rn   rp   ro   r   r   r   r   r   r   r:   r$   r&   r+   r3   r5   strr   r<   r   r   r   r>   r   r   r'   r%   <module>r      s    				 ) ) ) ) ) ) ) ) ) ) O O O O O O O O O O O O O O O O O O O O 0 0 0 0 0 0  
 " ( !     !#    5& (S ( ( ( ( ( (S      1s 13 13 1 1 1 11S 1 1 1 1 1 1s E c     eCI../ 3c49d4j&@ AAB 	$U-/B
BCEq q q q q q q qht
 t
 t
 t
 t
 t
 t
 t
 t
 t
r'   