
    %oi,                        S SK r S SKrS SKJr  S SKJrJrJr  S SKJ	r	J
r
Jr  S SKJr  / SQrSrSrS	rS
rSrSrSrSrSrSrSrSrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jr S\!S\"S\4S jr#\$\!\\-  4   r%\$\!\\&\   -  \&\   -  4   r'\$\!\\-  \"-  \%-  \'-  4   r( " S S 5      r) " S! S"5      r*g)#    N)Iterable)calcsizepackunpack)BinaryIOClassVar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                 "    [        X-	  S-  5      $ )Nr   bool)r   r   s     J/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/jbig2.pybit_setr"   (   s    !Q&''    flagc                     [        X-  5      $ Nr   )r$   r   s     r!   
check_flagr'   ,   s    r#   maskc                 n    [        S5       H  n[        X 5      (       d  M  X-  U-	  s  $    [        S5      eN   zInvalid mask or valueranger"   r
   r(   r   r   s      r!   masked_valuer/   0   s6    97!!LW,,  /
00r#   c                 t    [        S5       H  n[        X 5      (       d  M  XU-	  -  U-  s  $    [        S5      er*   r,   r.   s      r!   
mask_valuer1   8   s;    97!!W_-'99  /
00r#   formatbufferc                 Z    U S;   d   e[        [        [           [        X5      5      u  nU$ )N>   r   >Ir   )r	   tupleintr   )r2   r3   results      r!   
unpack_intr9   @   s-    ''''E#Jv 67HVMr#   c                       \ rS rSrSrS\SS4S jrS\\   4S jr	S\
4S jrS	\S
\S\S\4S jrS	\S
\S\S\4S jrS	\S\S\S\4S jrS	\S\S\S\4S jrSrg)JBIG2StreamReaderN   z&Read segments from a JBIG2 byte streamstreamr   Nc                     Xl         g r&   r=   selfr=   s     r!   __init__JBIG2StreamReader.__init__Q       r#   c                    / nU R                  5       (       d  0 n[         Hy  u  p4[        U5      nU R                  R	                  U5      n[        U5      U:  a  SUS'     O<[        X65      n[        U SU 3S 5      n[        U5      (       a	  U" X'U5      nXrU'   M{     UR                  S5      (       d  UR                  U5        U R                  5       (       d  M  U$ )NT_errorparse_)is_eof
SEG_STRUCTr   r=   readlenr9   getattrcallablegetappend)	rA   segmentssegmentfield_formatname	field_lenfieldr   parsers	            r!   get_segmentsJBIG2StreamReader.get_segmentsT   s    ')++--$&G&0"$\2	((3u:	)(,GH%"<7 v=F##"759E % '1 ;;x((( ++--  r#   c                     U R                   R                  S5      S:X  a  gU R                   R                  S[        R                  5        g)Nr   r#   TF)r=   rJ   seekosSEEK_CUR)rA   s    r!   rH   JBIG2StreamReader.is_eofh   s7    ;;A#%KKR-r#   rQ   r   rU   c                 b    [        [        U5      [        [        U5      [        [        U5      S.$ )N)deferredpage_assoc_longtype)r'   HEADER_FLAG_DEFERREDHEADER_FLAG_PAGE_ASSOC_LONGr/   SEG_TYPE_MASK)rA   rQ   r   rU   s       r!   parse_flagsJBIG2StreamReader.parse_flagso   s.     ##7?)*EuM 6
 	
r#   c                    [        [        U5      n/ n/ nU[        :  a-  [        S5       H  nUR	                  [        Xr5      5        M     OX0R                  R                  S5      -  n[        SU5      n[        [        U5      n[        R                  " US-   S-  5      n[        U5       HT  n	[        SU R                  R                  S5      5      n
[        S5       H  nUR	                  [        Xz5      5        M     MV     US   n[        U[        5      (       d   eUS	::  a  SnOUS
::  a  SnOSn[        U5      n[        U5       H:  nU R                  R                  U5      n[        X5      nUR	                  U5        M<     UUUS.$ )N      r   r      r   r   r         r5   )	ref_countretain_segmentsref_segments)r/   REF_COUNT_SHORT_MASKREF_COUNT_LONGr-   rO   r"   r=   rJ   r9   REF_COUNT_LONG_MASKmathceil
isinstancer7   r   )rA   rQ   r   rU   rn   ro   rp   r   ret_bytes_count_ret_byte_indexret_byteseg_num
ref_formatref_size
_ref_indexref_datarefs                    r!   parse_retention_flags'JBIG2StreamReader.parse_retention_flags{   so    !!5u=	~% 8&&ww'>? $ [[%%a((E"4/I$%8)DI"iiQ!(;<O#(#9%dDKK,<,<Q,?@$QxG#**77+EF  ( $:
 (#'3''''c>JJJJ'	*J{{''1HZ2C$ + #.(
 	
r#   pagec                     [        [        US   5      S   (       a)  X0R                  R                  S5      -  n[	        SU5      nU$ )Nr   ra   rj   r   )r	   JBIG2SegmentFlagsr=   rJ   r9   )rA   rQ   r   rU   s       r!   parse_page_assoc"JBIG2StreamReader.parse_page_assoc   s@    !77#345FG[[%%a((EdE*Dr#   lengthc                     U(       aQ  [        [        US   5      S   [        :X  a  U[        :X  a  [	        S5      eU R
                  R                  U5      US'   U$ )Nr   rb   z:Working with unknown segment length is not implemented yetraw_data)r	   r   SEG_TYPE_IMMEDIATE_GEN_REGIONDATA_LEN_UNKNOWNNotImplementedErrorr=   rJ   )rA   rQ   r   rU   s       r!   parse_data_length#JBIG2StreamReader.parse_data_length   s]     &(89&A01--)P  '+kk&6&6v&>
#r#   r?   )__name__
__module____qualname____firstlineno____doc__r   rB   listJBIG2SegmentrW   r    rH   r7   bytesr   rf   JBIG2RetentionFlagsr   r   r   __static_attributes__ r#   r!   r;   r;   N   s    0x D d<0 ( 



 

 	


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

 
+
Z C  RU   	
 
r#   r;   c                   0   \ rS rSr% SrS\" \\   / 5      \" \\   / 5      S.r	\
\   \S'   S\SS4S	 jr SS
\\   S\S\4S jjr SS
\\   S\S\4S jjrS\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\S\4S jrS\S\4S jrSrg)JBIG2StreamWriter   z.Write JBIG2 segments to a file in JBIG2 formatr   )rn   rp   ro   EMPTY_RETENTION_FLAGSr=   r   Nc                     Xl         g r&   r?   r@   s     r!   rB   JBIG2StreamWriter.__init__   rD   r#   rP   fix_last_pagec                 .   SnS nS nU H  nU R                  U5      nU R                  R                  U5        U[        U5      -  n[	        [
        S -  US   5      nU(       d  M\  [	        [
        UR                  S5      5      n[	        [        US   5      S   [        :X  a  S nM  U(       d  M  UnM     U(       aY  U(       aR  UbO  U R                  US-   U5      nU R                  U5      nU R                  R                  U5        U[        U5      -  nU$ )Nr   r   r   r   rb   r   )
encode_segmentr=   writerK   r	   r7   rN   r   SEG_TYPE_END_OF_PAGEget_eop_segment)	rA   rP   r   data_lencurrent_pagerz   rQ   dataseg_pages	            r!   write_segments JBIG2StreamWriter.write_segments   s   
 #'"G&&w/DKKd#D	!H3:wx'89G}W[[%>? *GG,<=fE+, $(LX#+L!  $ \w/B**7Q;EG&&w/DKKd#D	!Hr#   c                    [         n[        nU[        SU5      -  n[        SS5      nX5-  nU R                  R	                  U5        [        U5      nX`R                  X5      -  nSnU H  n[        [        US   5      nM     U(       a  SOSn	U R                  Xy-   5      n
U R                  U
5      nU R                  R	                  U5        U[        U5      -  nU$ )Nr   r   r   r   r      )FILE_HEADER_IDFILE_HEAD_FLAG_SEQUENTIALr   r=   r   rK   r   r	   r7   get_eof_segmentr   )rA   rP   r   headerheader_flagsnumber_of_pagesr   rz   rQ   seg_num_offseteof_segmentr   s               r!   
write_fileJBIG2StreamWriter.write_file   s    
  0$t\** tQ-!&!v;''@@G3 12G   ,**7+CD"";/$CIr#   rQ   c                     Sn[          HN  u  p4UR                  U5      n[        U SU 3S 5      n[        U5      (       a	  U" XQ5      nO[	        X55      nX'-  nMP     U$ )Nr#   encode_)rI   rN   rL   rM   r   )rA   rQ   r   rR   rS   r   encoderrU   s           r!   r    JBIG2StreamWriter.encode_segment  sd    ",LKK%EdgdV$4d;G  /\1MD #- r#   r   c                    SnUR                  S5      (       a	  U[        -  nSU;   a  X1S   (       a  [        OU-  nO/U[        [        UR                  SS5      5      S:  a  [        OU-  nU[        [        US   5      -  n[        SU5      $ )Nr   r`   ra   r      rb   r   )rN   rc   rd   r	   r7   r1   re   r   )rA   r   rQ   r   s       r!   encode_flagsJBIG2StreamWriter.encode_flags  s    99Z  ))E%:K4L0RWWEW[[34s: ,E 	M5=99D%  r#   c                 d   / nSnUS   n[        U[        5      (       d   e[        [        [           UR                  S/ 5      5      nUS::  aG  [        [        U5      n[        U5       H  u  pU	(       d  M  USU-  -  nM     UR                  U5        O[        R                  " US-   S-  5      n
SSU
-  -   n[        [        [        5      S	-  nUR                  U5        [        U
5       HI  nS
nXlS-  US-  S-    n[        U5       H  u  nnUU(       a  SU-  OU-  nM     UR                  U5        MK     [        [        [           UR                  S/ 5      5      n[        [        US   5      nUS::  a  SnOUS::  a  SnOSnU H  nUU-  nUR                  U5        M     [        U/UQ76 $ )Nr   rn   ro      r   rk   r   B   r   rp   r   rl   rm   IL)rv   r7   r	   r   r    rN   r1   rq   	enumeraterO   rt   ru   rr   r-   r   )rA   r   rQ   r   flags_formatrn   ro   
flags_byte	ref_index
ref_retainbytes_countflags_dword
byte_indexry   ret_partr   ret_segrp   rz   r{   r   s                        r!   encode_retention_flags(JBIG2StreamWriter.encode_retention_flags-  s   
 +&	)S))))tDz5995F+KL>#$8)DJ)2?)C%	:!y.0J *D LL$))Y]a$78K3#45L$%9>JbPKLL%#K0
*>JNQ<NO(1((;$GWWXEH )< X& 1 DIuyy'DEsGH-.c>JJJCJ&LLL   L)5))r#   c                 J    [        SU5      nU[        [        US   5      -  nU$ )Nr   r   )r   r	   r   )rA   r   rQ   r   s       r!   encode_data_length$JBIG2StreamWriter.encode_data_length\  s)    D% UGJ/00r#   
seg_numberpage_numberc                 >    SS[         S.UUS[        R                  S.$ Nr   F)r`   rb   r#   )r   r   r   r   r   r   )r   r   r   )rA   r   r   s      r!   r   !JBIG2StreamWriter.get_eop_segmenta  s*    "'1EF %0FF
 	
r#   c                 >    SS[         S.USS[        R                  S.$ r   )SEG_TYPE_END_OF_FILEr   r   )rA   r   s     r!   r   !JBIG2StreamWriter.get_eof_segmentk  s*    "'1EF 0FF
 	
r#   r?   )T)r   r   r   r   r   r	   r   r7   r    r   r   r   __annotations__r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r!   r   r      s<   8 T#Y+T
B/<8$78 x D  #!<(! ! 
	!L #<(  
	<
l 
u 
!"3 !l !u !$-*"-* -* 
	-*^ l u 

# 
C 
L 

# 
, 
r#   r   )+rt   r\   collections.abcr   structr   r   r   typingr   r   r	   pdfminer.pdfexceptionsr
   rI   rc   rd   re   rq   rs   rr   r   r   r   r   r   r   r7   r    r"   r'   r/   r1   strr   r9   dictr   r   r   r   r;   r   r   r#   r!   <module>r      sk    	 $ ) ) + + 0
 " ( !     !#    5& (S ( ( (S   1s 13 13 11S 1 1 1s E c  cDj) 3d3i$t* <<= 3J**-@@Bq qhq
 q
r#   