
    )iT              	          S SK r S SKJr  S SKJrJrJrJrJrJ	r	J
r
JrJrJr  S SKJr  S SKJrJrJrJrJrJr  S SKJrJr  S SKJr  S SKJr  S	S
KJr  S	SK J!r!J"r"J#r#J$r$  S	SK%J&r&  S	SK'J(r(J)r)J*r*J+r+  S	SKJ,r,J-r-J.r.  S	SK/J0r0  \ Rb                  " S5      r2\3" / SQ5      r4\(       a  S	SK5J6r6  S	SK7J8r8  SSSSSS.r9S\:S\;4S jr<S\\S4   S\\
\\\=\>4   S4      \
\;   4   4S jr?S\S\\
\\\=\>4   S4      \
\;   4   4S  jr@ " S! S"\5      rA " S# S$\&5      rB " S% S&\B5      rCS'\!S(\!SS4S) jrD " S* S+\C5      rE " S, S-\C5      rFg).    N)	lru_cache)
TYPE_CHECKINGAnyCallableDict	GeneratorListOptionalPatternTupleUnion)PDFPageAggregator)LTCharLTComponentLTContainerLTItemLTPageLTTextContainer)PDFPageInterpreter	PDFStackT)PDFPage)	PSLiteral   )utils)T_bboxT_numT_obj
T_obj_list)	Container)T_table_settingsTableTableFinderTableSettings)decode_textresolve_allresolve_and_decode)TextMapz^LT)advheight	linewidthptssizesrcsizewidthx0x1y0y1bitsmatrixuprightfontnametext	imagemask
colorspaceevenoddfillnon_stroking_colorpathstreamstrokestroking_colormcidtag)	PageImage)PDFzSimSun,RegularzSimHei,RegularzSimKai,RegularzSimFang,RegularzSimLi,Regular)s   s   s   _GB2312s   _GB2312s   r6   returnc                     SU ;   a  U R                  S5      S-   nU S U XS  p2OSU p2[        R                  U[        U5      SS 5      n[        U5      SS U-   $ )N   +r          )indexCP936_FONTNAMESgetstr)r6   split_atprefixsuffix
suffix_news        O/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pdfplumber/page.pyfix_fontname_bytesrT   V   sj    x>>$'!+!)8,hy.Ah $$VS[2->?Jv;qz))rH   color.c                     [        U S   [        5      (       a&  U S S =(       d    S [        U S   R                  5      4$ U S 4$ )NrJ   )
isinstancer   r$   name)rU   s    rS   separate_patternrY   a   sB     %)Y''cr
"d[r%@@@d{rH   c                     U c  g[        U [        5      (       a  U nO$[        U [        5      (       a  [        U 5      nOU 4n[        U5      $ )N)NN)rW   tuplelistrY   )rU   	tuplefieds     rS   normalize_colorr^   j   sF     }	E5	!	!		E4	 	 %L	H	I&&rH   c                      ^  \ rS rSr% SrSr\\   \S'   Sr	\\
   \S'   SS\S\\   SS4S	 jjrSS
 jrSS jrS\4U 4S jjrSU 4S jjrSU 4S jjrSrU =r$ )"PDFPageAggregatorWithMarkedContentx   zVExtract layout from a specific page, adding marked-content IDs to
objects where found.Ncur_mcidcur_tagrB   propsrE   c                     [        UR                  5      U l        [        U[        5      (       a  SU;   a  US   U l        gSU l        g)z5Handle beginning of tag, setting current MCID if any.MCIDN)r$   rX   rc   rW   dictrb   )selfrB   rd   s      rS   	begin_tag,PDFPageAggregatorWithMarkedContent.begin_tag   s7    "388,eT""v!&MDM DMrH   c                      SU l         SU l        g)z/Handle beginning of tag, clearing current MCID.N)rc   rb   rh   s    rS   end_tag*PDFPageAggregatorWithMarkedContent.end_tag   s    rH   c                 z    U R                   R                  S   nU R                  Ul        U R                  Ul        g)zVAdd current MCID to what we hope to be the most recent object created
by pdfminer.six.rJ   N)cur_item_objsrb   rA   rc   rB   )rh   cur_objs     rS   tag_cur_item/PDFPageAggregatorWithMarkedContent.tag_cur_item   s.     --%%b)}}llrH   c                 H   > [         TU ]  " U0 UD6nU R                  5         U$ )z;Hook for rendering characters, adding the `mcid` attribute.)superrender_charrs   )rh   argskwargsr(   	__class__s       rS   rw   .PDFPageAggregatorWithMarkedContent.render_char   s(    g!4262
rH   c                 F   > [         TU ]  " U0 UD6  U R                  5         g)z7Hook for rendering images, adding the `mcid` attribute.N)rv   render_imagers   rh   rx   ry   rz   s      rS   r}   /PDFPageAggregatorWithMarkedContent.render_image   s!    d-f-rH   c                 F   > [         TU ]  " U0 UD6  U R                  5         g)zAHook for rendering lines and curves, adding the `mcid` attribute.N)rv   
paint_pathrs   r~   s      rS   r   -PDFPageAggregatorWithMarkedContent.paint_path   s!    D+F+rH   )rb   rc   N)rE   N)__name__
__module____qualname____firstlineno____doc__rb   r
   int__annotations__rc   rN   r   r   ri   rm   rs   floatrw   r}   r   __static_attributes____classcell__rz   s   @rS   r`   r`   x   sj     #Hhsm"!GXc]!!Y !x	/B !d !
#e 
 rH   r`   c                   <   \ rS rSr% \R
                  S/-   r\\   \S'   Sr	\
\S'   Sr SDSSS	\S
\S\4S jjr\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\4S j5       r\S\\\4   4S j5       rS\\\4   S\\\4   4S jrS\S\4S jrS\\   S\ \SS4   4S jr!S\\\4   4S jr" SES\#\$   S\%4S jjr& SES\#\$   S\\'   4S jjr( SES\#\$   S\#\'   4S jjr) SES\#\$   S\\\\#\            4S jjr* SES\#\$   S\#\\\#\            4S  jjr+S!\,S\-4S" jr.     SFS#\/\\0\   4   S$\
S%\
S&\S'\
S(\
S!\,S\\\\,4      4S) jjr1S!\,S\4S* jr2S!\,S\4S+ jr3S!\,S\4S, jr4 SGS-\
S'\
S!\,S\4S. jjr5 SHS/\6S0\
S1\
SS24S3 jjr7 SHS/\6S0\
S1\
SS24S4 jjr8 SHS/\6S0\
S1\
SS24S5 jjr9S6\:\/\
4   SS74S8 jr;S!\,SS74S9 jr<    SIS:\#\/\\=4      S;\#\/\\=4      S<\#\/\\=4      S=\
SS>4
S? jjr>SES@\#\\      S\\\,4   4SA jjr?S\4SB jr@SCrAg)JPage   _layoutcached_propertiesTis_originalNpdfrD   page_objpage_numberinitial_doctopc                 n   Xl         X l        X l        X0l        [	        U R                  R
                  R                  SS5      5      =(       d    SnUS-  U l        U R                  U R                  l        X@l	        UR
                  R                  S5      nUR
                  R                  S5      nUb  [	        U5      OS U l
        [	        U5      =(       d    U R                  U l        U R                  nU R                  S;   aF  [        US   US   5      [        US   US	   5      [        US   US   5      [        US   US	   5      4OE[        US   US	   5      [        US   US   5      [        US   US	   5      [        US   US   5      4U l        [        5       " U R                   5      U l        g )
NRotater   ih  CropBoxMediaBox)Z   i  r      rI   )r   	root_pager   r   r%   attrsrM   rotationrotater   cropboxmediaboxminmaxbboxr   _get_textmapget_textmap)	rh   r   r   r   r   	_rotationr   r   ms	            rS   __init__Page.__init__   s{     & 3 3 7 7! DEJ	!C#}},..$$Y/>>%%j1/6/B{7+#H-=MM }}	) AaD!A$AaD!A$AaD!A$AaD!A$	 AaD!A$AaD!A$AaD!A$AaD!A$	 		" %;t'8'89rH   rE   c                 @    U R                   S   U R                   S   -
  $ )NrI   r   r   rl   s    rS   r.   
Page.width       yy|diil**rH   c                 @    U R                   S   U R                   S   -
  $ )Nr   r   r   rl   s    rS   r)   Page.height   r   rH   c                 n   [        U S5      (       a  U R                  $ [        U R                  R                  U R
                  U R                  R                  S9n[        U R                  R                  U5      nUR                  U R                  5        UR                  5       U l        U R                  $ )Nr   )pagenolaparams)hasattrr   r`   r   rsrcmgrr   r   r   process_pager   
get_result)rh   deviceinterpreters      rS   layoutPage.layout   s    4##<<3HH##XX&&

 ))9)96B  /%002||rH   c                    ^  S[         S[         4U 4S jjn[        T R                  R                  5      =(       d    / n[	        [        X5      5      $ )NannotrE   c                 n  > U S   nU R                  S0 5      nUR                  S5      U R                  S5      U R                  S5      S.nUR                  5        H  u  pEUc  M
   UR                  S5      X4'   M      TR                  S	US
   US   US   US   TR
                  TR                  -   US   -
  TR                  US   -
  TR                  US   -
  US   US
   -
  US   US   -
  S.nUR                  U5        SU ;   a  TU S'   XS'   U$ ! [         a    UR                  S5      X4'    M  f = f)NRectAURITContents)urititlecontentszutf-8zutf-16r   r   r   rI   r   )r   object_typer/   r1   r0   r2   doctoptopbottomr.   r)   Pdata)rM   itemsdecodeUnicodeDecodeErrorr   r   r)   update)r   rectaextraskvparsedrh   s          rS   parsePage.annots.<locals>.parse   sL   =D		#r"AuuU|3!IIj1F
 =7$%HHW$5	 '  $//&1g1g1g1g--;d1gE{{T!W,++Q/a47*q'DG+F MM&! e|!c
"6NM- . 7$%HHX$6	7s   'DD43D4)r   r%   r   annotsr\   map)rh   r   raws   `  rS   r   Page.annots   sA    #	 #	5 #	J $--../52CO$$rH   c                 T    U R                    Vs/ s H  oS   c  M
  UPM     sn$ s  snf )Nr   )r   )rh   r   s     rS   
hyperlinksPage.hyperlinks  s"    ;;?;aE(;???s   	%%c                 ~    [        U S5      (       a  U R                  $ U R                  5       U l        U R                  $ N_objects)r   r   parse_objectsrl   s    rS   objectsPage.objects  s3    4$$== /3/A/A/C}}rH   ptc                 0    US   U R                   US   -
  4$ )Nr   r   )r)   )rh   r   s     rS   point2coordPage.point2coord$  s    1t{{RU*++rH   objc           
         [         R                  " [        SUR                  R                  5      R                  5       nS[        [        [        4   S[        [        [        [        4      4S jn[        [        S [        X1R                  R                  5       5      5      5      nX$S'   U R                  US'   S H5  n[!        X5      (       d  M  [#        [%        X5      R&                  5      XE'   M7     S H   u  pgXd;   d  M  [)        XF   5      u  XF'   XG'   M"     [+        U[,        [.        45      (       a  UR1                  5       US	'   [+        U[,        5      (       aq  UR2                  n[)        UR4                  5      u  US
'   US'   [)        UR6                  5      u  US'   US'   [+        US   [8        5      (       a  [;        US   5      US'   SU;   a%  [=        [        U R>                  US   5      5      US'   SU;   a?  U R@                  US   -
  US'   U R@                  US   -
  US'   U RB                  US   -   US'   U$ )N itemrE   c                 <    U u  pU[         ;   a  [        U5      nX4$ g r   )	ALL_ATTRSr%   )r   r   r   ress       rS   process_attr)Page.process_object.<locals>.process_attr*  s#    DAI~!!nxrH   r   r   )ncsscs))r@   stroking_pattern)r<   non_stroking_patternr7   r@   r   r<   r   r6   r+   r1   r2   r   r   r   )"resublt_patrz   r   lowerr   rN   r   r
   rg   filterr   __dict__r   r   r   r&   getattrrX   r^   rW   r   r   get_textgraphicstatescolorncolorbytesrT   r\   r   r)   r   )	rh   r   kindr   attrcs
color_attrpattern_attrgss	            rS   process_objectPage.process_object'  s   vvfb#--"8"89??A	uS#X 	8E#s(O3L 	 F4\<<3E3E3G!HIJ"]"..] B s-gc.>.C.CD !)
$J !7FtGW7X4 $"4)
 cFO455<<>DLc6"" !!B?N		@<D!"D);$< HW		HDD%&-C(D
 $z*E22#5d:6F#GZ D=s4#3#3T%[ABDK4<++T
2DK![[4:5DN!004;>DNrH   layout_objectsc              #     #    U Hz  n[        U[        5      (       aO  U R                  R                  b  U R	                  U5      v   U R                  UR                  5       S h  vN   Mg  U R	                  U5      v   M|     g  N7fr   )rW   r   r   r   r  iter_layout_objectsrq   )rh   r  r   s      rS   r  Page.iter_layout_objectsd  sm      "C#{++88$$0--c2233CII>>>))#.. " ?s   A#B%B&Bc                     0 nU R                  U R                  R                  5       H9  nUS   nUS;   a  M  UR                  U5      c  / X'   X   R	                  U5        M;     U$ )Nr   )anno)r  r   rq   rM   append)rh   r   r   r  s       rS   r   Page.parse_objectsr  sh    )+++DKK,=,=>C}%Dx{{4 ( "M  % ? rH   table_settingsc                 D    [         R                  " U5      n[        X5      $ r   )r#   resolver"   rh   r  tsets      rS   debug_tablefinderPage.debug_tablefinder}  s     $$^44&&rH   c                 X    [         R                  " U5      n[        X5      R                  $ r   )r#   r  r"   tablesr  s      rS   find_tablesPage.find_tables  s%     $$^44&---rH   c                     [         R                  " U5      nU R                  U5      n[        U5      S:X  a  g S[        S[
        [        [        [        4   4S jn[        [        X4S95      S   nU$ )Nr   xrE   c                 h    [        U R                  5      * U R                  S   U R                  S   4$ )Nr   r   )lencellsr   r"  s    rS   sorterPage.find_table.<locals>.sorter  s)    \M166!9affQi88rH   )key)
r#   r  r  r$  r!   r   r   r   r\   sorted)rh   r  r  r  r'  largests         rS   
find_tablePage.find_table  sm     $$^4!!$'v;!	9e 	9c5%&7 8 	9 vf1215rH   c           	          [         R                  " U5      nU R                  U5      nU Vs/ s H'  oDR                  " S0 UR                  =(       d    0 D6PM)     sn$ s  snf N )r#   r  r  extracttext_settings)rh   r  r  r  tables        rS   extract_tablesPage.extract_tables  sQ     $$^4!!$'IOP;!3!3!9r;PPPs   .Ac                     [         R                  " U5      nU R                  U5      nUc  g UR                  " S0 UR                  =(       d    0 D6$ r/  )r#   r  r,  r1  r2  )rh   r  r  r3  s       rS   extract_tablePage.extract_table  sG     $$^4%===>D$6$6$<">>rH   ry   c                 $   [        U R                  S   U R                  S   S9nSU;  a  UR                  SU R                  05        SU;  a  UR                  SU R                  05        0 UEUEn[
        R                  " U R                  40 UD6$ )Nr   r   )x_shifty_shiftlayout_width_charslayout_widthlayout_height_charslayout_height)rg   r   r   r.   r)   r   chars_to_textmapchars)rh   ry   defaultsfull_kwargss       rS   r   Page._get_textmap  s    		!diilCv-OO^TZZ89 .OO_dkk:;&<&<V&<%%djj@K@@rH   patternregexcase
main_groupreturn_charsreturn_groupsc           	      N    U R                   " S0 UD6nUR                  UUUUUUS9$ )N)rF  rG  rH  rI  rJ  r0  )r   search)	rh   rE  rF  rG  rH  rI  rJ  ry   textmaps	            rS   rL  Page.search  s?     "",V,~~!%'  
 	
rH   c                 :    U R                   " S0 UD6R                  $ r/  )r   	as_stringrh   ry   s     rS   extract_textPage.extract_text  s    )&)333rH   c                 D    [         R                  " U R                  40 UD6$ r   )r   extract_text_simplerA  rQ  s     rS   rU  Page.extract_text_simple  s    ((>v>>rH   c                 D    [         R                  " U R                  40 UD6$ r   )r   extract_wordsrA  rQ  s     rS   rX  Page.extract_words  s    ""4::888rH   stripc                 @    U R                   " S0 UD6R                  XS9$ )N)rZ  rI  r0  )r   extract_text_lines)rh   rZ  rI  ry   s       rS   r\  Page.extract_text_lines  s-     )&)<< = 
 	
rH   r   relativestrictCroppedPagec                     [        XX#S9$ )N)r^  r_  )r`  rh   r   r^  r_  s       rS   crop	Page.crop  s     4HHrH   c                 4    [        XX#[        R                  S9$ zC
Same as .crop, except only includes objects fully within the bbox
)r^  r_  crop_fn)r`  r   within_bboxrb  s       rS   rh  Page.within_bbox  s     %BSBS
 	
rH   c                 4    [        XX#[        R                  S9$ rf  )r`  r   outside_bboxrb  s       rS   rk  Page.outside_bbox  s     %BTBT
 	
rH   test_functionFilteredPagec                     [        X5      $ r   )rn  )rh   rm  s     rS   r   Page.filter  s    D00rH   c                     [        U S 5      nU R                  R                  5        VVs0 s H  u  p4X4_M	     snnUl        [        R
                  " U R                  40 UD6UR                  S'   U$ s  snnf )u   
Removes duplicate chars — those sharing the same text, fontname, size,
and positioning (within `tolerance`) as other characters on the page.
c                     g)NTr0  r&  s    rS   <lambda>#Page.dedupe_chars.<locals>.<lambda>  s    rH   char)rn  r   r   r   r   dedupe_charsrA  )rh   ry   pr  objss        rS   rv  Page.dedupe_chars  sf    
 ~.37<<3E3E3GH3GZTdj3GH
"//

EfE

6 Is   A2
resolutionr.   r)   	antialiasrC   c                     SSK JnJn  [        S XU4 5       5      nUS:  a  [	        SU 35      eUb  SU-  U R
                  -  nOUb  SU-  U R                  -  nU" X=(       d    UUS9$ )z
You can pass a maximum of 1 of the following:
- resolution: The desired number pixels per inch. Defaults to 72.
- width: The desired image width in pixels.
- height: The desired image width in pixels.
r   )DEFAULT_RESOLUTIONrC   c              3   (   #    U  H  oS Lv   M
     g 7fr   r0  ).0r"  s     rS   	<genexpr> Page.to_image.<locals>.<genexpr>  s     K/J!/Js   zUOnly one of these arguments can be provided: resolution, width, height. You provided H   )rz  r{  )displayr}  rC   sum
ValueErrorr.   r)   )rh   rz  r.   r)   r{  r}  rC   	num_specss           rS   to_imagePage.to_image  s     	;K
6/JKK	q=ghqgrs  edjj0Jft{{2J=+=
 	
rH   object_typesc           	      N   Uc(  [        U R                  R                  5       5      S/-   nOUnU R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  S.nU H  n[        XS-   5      X4S-   '   M     U$ )Nr   )r   r   r   r   r   r   r.   r)   s)r\   r   keysr   r   r   r   r   r   r.   r)   r   )rh   r  _object_typesdts        rS   to_dictPage.to_dict  s     !2!2!45	AM(M++"11||IIZZkk	
 A 3w/A#gJ rH   c                 "    SU R                    S3$ )Nz<Page:>)r   rl   s    rS   __repr__Page.__repr__.  s    (()++rH   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )TTr   TT)TT)FT)NNNF)Br   r   r   r   r   r   r	   rN   r   r   boolpagesr   r   r   r   propertyr.   r)   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r
   r    r"   r  r!   r  r,  r4  r7  r   r'   r   r   r   rL  rR  rU  rX  r\  r   rc  rh  rk  r   r   rv  r   r  r  r  r   r0  rH   rS   r   r      s   #,#>#>)#LtCyLKE !"(:(: (: 	(:
 (:T +u + + + + +    '%
 '% '%R @J @ @ c:o.  ,eE5L1 ,eE5L6I ,;& ;U ;z/";//	5$$	%/	tCO4 	 <@'&'78'	' <@.&'78.	e. <@&'78	%$ <@Q&'78Q	d4&'	(Q <@?&'78?	$tHSM*+	,?AS AW A !"
sGCL()
 
 	

 
 
 
 
 
d38n	
(4S 4S 4?C ?C ?9c 9j 9 8<

04
GJ
	
 DHII&*I<@I	I DH

&*
<@
	
 DH

&*
<@
	
1HeWd]$; 1 1S ^  37-1.2
U3:./
 c5j)*
 sEz*+	

 
 

:HT#Y$7 4S> &,# ,rH   r   c                   2    \ rS rSr% Sr\\S'   S\4S jrSr	g)DerivedPagei2  Fr   parent_pagec                    Xl         UR                  U l        UR                  U l        UR                  U l        UR                  U l        U R                  [        R                  5        [        5       " U R                  5      U l
        g r   )r  r   r   r   r   flush_cacher   r   r   r   r   )rh   r  s     rS   r   DerivedPage.__init__5  sd    &$..??#,,&22445$;t'8'89rH   )r   r   r   r  r   r   N)
r   r   r   r   r   r  r   r   r   r   r0  rH   rS   r  r  2  s    K:D :rH   r  r   parent_bboxc                    [         R                  " U 5      nUS:X  a  [        SU  S35      e[         R                  " X5      nUc  [        SU  SU 35      e[         R                  " U5      nXB:  a  [        SU  SU 35      eg )Nr   zBounding box z has an area of zero.z. is entirely outside parent page bounding box z. is not fully within parent page bounding box )r   calculate_arear  get_bbox_overlap)r   r  	bbox_areaoverlapoverlap_areas        rS   test_proposed_bboxr  ?  s    $$T*IA~=.CDEE$$T7GD6 "((3}6
 	

 ''0LD6 "((3}6
 	
  rH   c                      ^  \ rS rSr\R
                  SS4S\S\S\\	\/\	4   S\
S\
4
U 4S	 jjjr\S
\\\	4   4S j5       rSrU =r$ )r`  iS  FTr  	crop_bboxrg  r^  r_  c                 D  >^^ U(       a#  UR                   u  pg  nTu  ppX-   X-   X-   X-   4mU(       a  [        TUR                   5        S[        S[        4UU4S jjn[        TU ]  U5        Xl        T[        R                  L a  UR                   U l         g TU l         g )Nrx  rE   c                    > T" U T5      $ r   r0  )rx  r  rg  s    rS   _crop_fn&CroppedPage.__init__.<locals>._crop_fnd  s    4++rH   )r   r  r   rv   r   r  r   rk  )rh   r  r  rg  r^  r_  o_x0o_top_r/   r   r0   r   r  rz   s     ``          rS   r   CroppedPage.__init__T  s      + 0 0DA"+BRCKFNKIy+*:*:;	,: 	,* 	, 	, 	%  e(((#((DI!DIrH   rE   c                     [        U S5      (       a  U R                  $ U R                  R                  R	                  5        VVs0 s H  u  pXR                  U5      _M     snnU l        U R                  $ s  snnf r   )r   r   r  r   r   r  rh   r   r   s      rS   r   CroppedPage.objectsq  si    4$$== ,0,<,<,D,D,J,J,L0
,LDAA}}Q,L0
 }}0
s   A7)r  r   r   )r   r   r   r   r   crop_to_bboxr   r   r   r   r  r   r  r   rN   r   r   r   r   s   @rS   r`  r`  S  s    
 ?D>P>P"" " :v.
:;	"
 " " ": c:o.  rH   r`  c                   b   ^  \ rS rSrS\S\\/\4   4U 4S jjr\	S\
\\4   4S j5       rSrU =r$ )rn  i{  r  	filter_fnc                 R   > UR                   U l         X l        [        TU ]  U5        g r   )r   r  rv   r   )rh   r  r  rz   s      rS   r   FilteredPage.__init__|  s"    $$	"%rH   rE   c                    [        U S5      (       a  U R                  $ U R                  R                  R	                  5        VVs0 s H%  u  pU[        [        U R                  U5      5      _M'     snnU l        U R                  $ s  snnf r   )r   r   r  r   r   r\   r   r  r  s      rS   r   FilteredPage.objects  sw    4$$==  ((006680
8 tF4>>1-..80
 }}	0
s   ,B)r   r   r  )r   r   r   r   r   r   r   r  r   r  r   rN   r   r   r   r   r   s   @rS   rn  rn  {  sE    &D &Xugtm5L &
 c:o.  rH   rn  )Gr   	functoolsr   typingr   r   r   r   r   r	   r
   r   r   r   pdfminer.converterr   pdfminer.layoutr   r   r   r   r   r   pdfminer.pdfinterpr   r   pdfminer.pdfpager   pdfminer.psparserr   r   r   _typingr   r   r   r   	containerr   r3  r    r!   r"   r#   r$   r%   r&   
utils.textr'   compiler   setr   r  rC   r   rD   rL   r  rN   rT   r   r   rY   r^   r`   r   r  r  r`  rn  r0  rH   rS   <module>r     s}   	    1  = $ '  5 5   F F ? ? 	F		B "
 *) 0 1(* *3 *c?
8E%s
+S012HSMAB''
8E%s
+S012HSMAB'/): /dE,9 E,P
:$ 
:
V 
& 
T 
(%+ %P; rH   