
    )i,                     z   S SK r S SKrS SKJrJrJr  S SKJrJrJ	r	J
r
JrJrJr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   4   r%\\"\\\
\   \
\   4   4   r&\\"\\\\#\%\&4   4   r' " S S5      r( " S S 5      r)g)!    N)packunpackcalcsize)BinaryIODictIterableListOptionalTupleUnioncast))>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     N/var/www/html/land-doc-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                 p    [        SS5       H  n[        X 5      (       d  M  X-  U-	  s  $    [        S5      eNr      zInvalid mask or valueranger%   	Exceptionr+   r   r   s      r$   masked_valuer3   -   s8    B<7!!LW,,   +
,,r&   c                 v    [        SS5       H  n[        X 5      (       d  M  XU-	  -  U-  s  $    [        S5      er-   r/   r2   s      r$   
mask_valuer5   5   s=    B<7!!W_-'99   +
,,r&   formatbufferc                 Z    U S;   d   e[        [        [           [        X5      5      u  nU$ )N>   r   >Ir   )r   r   intr   )r6   r7   results      r$   
unpack_intr<   =   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)JBIG2StreamReaderJ   z&Read segments from a JBIG2 byte streamstreamr    Nc                     Xl         g r)   r@   selfr@   s     r$   __init__JBIG2StreamReader.__init__M       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-  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_errorzparse_%s)is_eof
SEG_STRUCTr   r@   readlenr<   getattrcallablegetappend)	rD   segmentssegmentfield_formatname	field_lenfieldr   parsers	            r$   get_segmentsJBIG2StreamReader.get_segmentsP   s    ')++--$&G&0"$\2	((3u:	)(,GH%"<7 zD'8$?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@   rL   seekosSEEK_CUR)rD   s    r$   rJ   JBIG2StreamReader.is_eofd   s7    ;;A#%KKR-r&   rS   r   rW   c                 b    [        [        U5      [        [        U5      [        [        U5      S.$ )N)deferredpage_assoc_longtype)r*   HEADER_FLAG_DEFERREDHEADER_FLAG_PAGE_ASSOC_LONGr3   SEG_TYPE_MASK)rD   rS   r   rW   s       r$   parse_flagsJBIG2StreamReader.parse_flagsk   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      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         r9   )	ref_countretain_segmentsref_segments)r3   REF_COUNT_SHORT_MASKREF_COUNT_LONGr0   rQ   r%   r@   rL   r<   REF_COUNT_LONG_MASKr:   mathceil
isinstancer   )rD   rS   r   rW   rp   rq   rr   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_flagst   st    !!5u=	~% 8&&ww'>? $ [[%%a((E"4/I$%8)DI!$))Y]a,?"@AO"'"8%dDKK,<,<Q,?@$QxG#**77+EF  ( #9
 (#'3''''c>JJJJ'y)I{{''1HZ2C$ * #.(
 	
r&   pagec                     [        [        US   5      S   (       a)  X0R                  R                  S5      -  n[	        SU5      nU$ )Nr   rc   rl   r   )r   JBIG2SegmentFlagsr@   rL   r<   )rD   rS   r   rW   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   rd   z:Working with unknown segment length is not implemented yetraw_data)r   r   SEG_TYPE_IMMEDIATE_GEN_REGIONDATA_LEN_UNKNOWNNotImplementedErrorr@   rL   )rD   rS   r   rW   s       r$   parse_data_length#JBIG2StreamReader.parse_data_length   s]     &(89&A01--)S  '+kk&6&6v&>
#r&   rB   )__name__
__module____qualname____firstlineno____doc__r   rE   r	   JBIG2SegmentrY   r#   rJ   r:   bytesr   rh   JBIG2RetentionFlagsr   r   r   __static_attributes__ r&   r$   r>   r>   J   s    0x D d<0 ( 
#
,/
8=
	
(
#(
,/(
8=(
	(
T C  RU #-09>	r&   r>   c                   *   \ 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   )rp   rr   rq   EMPTY_RETENTION_FLAGSr@   r    Nc                     Xl         g r)   rB   rC   s     r$   rE   JBIG2StreamWriter.__init__   rG   r&   rR   fix_last_pagec                 6   SnS nS nU H  nU R                  U5      nU R                  R                  U5        U[        U5      -  n[	        [
        [           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   rd   r   )encode_segmentr@   writerM   r   r
   r:   rP   r   SEG_TYPE_END_OF_PAGEget_eop_segment)	rD   rR   r   data_lencurrent_pager|   rS   dataseg_pages	            r$   write_segments JBIG2StreamWriter.write_segments   s    &*!%G&&w/DKKd#D	!H8C='(*;<G}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n	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   rM   r   r   r:   get_eof_segmentr   )rD   rR   r   headerheader_flagsnumber_of_pagesr   r|   rS   seg_num_offseteof_segmentr   s               r$   
write_fileJBIG2StreamWriter.write_file   s      0$t\** tQ-!&!v;''@@G3 12G   NN**7+CD"";/$CIr&   rS   c                     Sn[          HN  u  p4UR                  U5      n[        U SU-  S 5      n[        U5      (       a	  U" XQ5      nO[	        X55      nX'-  nMP     U$ )Nr&   z	encode_%s)rK   rP   rN   rO   r   )rD   rS   r   rT   rU   r   encoderrW   s           r$   r    JBIG2StreamWriter.encode_segment  sb    ",LKK%EdK$$6=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   rb   rc   r      rd   r   )rP   re   rf   r   r:   r5   rg   r   )rD   r   rS   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   rp   rq      r   rm   r   B   r   rr   r   rn   ro   IL)rx   r:   r   r	   r#   rP   r5   rs   	enumeraterQ   rv   rw   rt   r0   r   )rD   r   rS   r   flags_formatrp   rq   
flags_byter   
ref_retainbytes_countflags_dword
byte_indexr{   ret_partr   ret_segrr   r|   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   )rD   r   rS   r   s       r$   encode_data_length$JBIG2StreamWriter.encode_data_lengthM  s)    D% UGJ/00r&   
seg_numberpage_numberc                 >    SS[         S.UUS[        R                  S.$ Nr   F)rb   rd   r&   )r   r   r   r   r   r   )r   r   r   )rD   r   r   s      r$   r   !JBIG2StreamWriter.get_eop_segmentR  s*    "'1EF %0FF
 	
r&   c                 >    SS[         S.USS[        R                  S.$ r   )SEG_TYPE_END_OF_FILEr   r   )rD   r   s     r$   r   !JBIG2StreamWriter.get_eof_segment\  s*    "'1EF 0FF
 	
r&   rB   )T)r   r   r   r   r   r   r	   r:   r#   r   r   __annotations__r   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r$   r   r      s/   8 T#Y+T
B/2. x D  GK .?C	D GK .?C	>
l 
u 
!"3 !l !u !$+*(+*3?+*	+*Z l u 

# 
C 
L 

# 
, 
r&   r   )*rv   r^   structr   r   r   typingr   r   r   r	   r
   r   r   r   rK   re   rf   rg   rs   ru   rt   r   r   r   r   r   r   r:   r#   r%   r*   r3   r5   strr   r<   r   r   r   r>   r   r   r&   r$   <module>r      sj    	 ) ) O O O
 " ( !     !#    5& (S ( ( (S   -s -3 -3 --S - - -s E c  eCI../ 3c49d4j&@ AAB tS%!24GG	HH
i iXn
 n
r&   