
    )iDQ                        % S r SSKrSSKrSSKr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JrJrJrJrJrJr  \(       a  SSKJr  SSKrSr\\R8                  \\R<                  4   r\\\	4   r  " S S	\!5      r"S
\S\#4S jr$S\!S\4S jr%S\S\&S\4S jr' STS\\#\4   S\S\S\4S jjr(S\&S\&S\&S\&4S jr)S\&S\&S\&S\&S\#S\#4S jr*\\+\+4   r,\\+\+\+\+4   r-\\+\+\+\+\+\+4   r.\\\   \\\+\+4   \\\+\+\+\+4   \\\+\+\+\+\+\+4   4   r/S r0\.\1S!'   S"\.S#\.S\.4S$ jr2S%\.S&\,S\.4S' jr3S%\.S&\,S\,4S( jr4S%\.S&\,S\,4S) jr5S*\!S\64S+ jr7\" S,5      r8S-\\8   S\\8   4S. jr9S\
\8/\64   S-\\8   S\\\8   \\8   4   4S/ jr:S0\+S1\+S2\&S\;4S3 jr<S4\\,   S\-4S5 jr= SUS6\\8   S7\
\8/\+4   S8\\8   S\\8   4S9 jjr>S:\&S6\\8   S\\\8S;4      4S< jr?SVS\#S=\&S\&4S> jjr@S?R                  S@ SA 5       5      rBS\#S\4SB jrCS*\S\4SC jrDSD\-S\4SE jrES%\.S\4SF jrFSGSHSISHS\,4SJ jrG\" SKSHSL9rH " SM SN\\H   5      rI/ SOQrJ/ SPQrKSQ\&S\4SR jrLSQ\&S\4SS jrMg)Wz
Miscellaneous Routines.
    N)escape)AnyBinaryIOCallableDictGenericIterableIteratorListOptionalSetTextIOTupleTypeVarUnionTYPE_CHECKINGcast   )LTComponentic                   Z    \ rS rSrSrS\S\S\SS4S jrS\4S	 jr	S
\
S\
S\
SS4S jrSrg)open_filename*   z
Context manager that allows opening a filename
(str or pathlib.PurePath type is supported) and closes it on exit,
(just like `open`), but does nothing for file-like objects.
filenameargskwargsreturnNc                 ^   [        U[        R                  5      (       a  [        U5      n[        U[        5      (       a  [	        U/UQ70 UD6U l        SU l        g [        U[        R                  5      (       a  [        [        U5      U l        SU l        g [        S[        U5      -  5      e)NTFzUnsupported input type: %s)
isinstancepathlibPurePathstropenfile_handlerclosingioIOBaser   AnyIO	TypeErrortype)selfr   r   r   s       N/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pdfminer/utils.py__init__open_filename.__init__1   s    h 0 0118}Hh$$'+H'Ft'Fv'FDDL")),, $UH 5D DL84>IJJ    c                     U R                   $ N)r#   r*   s    r+   	__enter__open_filename.__enter__=   s       r.   exc_typeexc_valexc_tbc                 \    U R                   (       a  U R                  R                  5         g g r0   )r$   r#   close)r*   r4   r5   r6   s       r+   __exit__open_filename.__exit__@   s     <<##% r.   )r$   r#   )__name__
__module____qualname____firstlineno____doc__
FileOrNamer   r,   r'   r2   objectr9   __static_attributes__ r.   r+   r   r   *   sZ    
K 
KC 
K3 
K4 
K!5 !& && && &T &r.   r   in_strr   c                 ~    [        U [        5      (       d   [        [        U 5      5      5       eU R                  5       $ )z'Converts to bytes, encoding to unicode.)r   r!   r)   encode)rD   s    r+   make_compat_bytesrG   E   s/    fc""5CV$55"==?r.   oc                     [        U [        5      (       a+  [        R                  " U 5      n U R	                  US   5      $ [        U 5      $ ! [
         a    [        U 5      s $ f = f)z>Converts everything to string, if bytes guessing the encoding.encoding)r   bytescharset_normalizerdetectdecodeUnicodeDecodeErrorr!   )rH   encs     r+   make_compat_strrQ   K   s\    !U ''*	88C
O,, 1v " 	q6M	s   A A$#A$ssizec                 z    US:  a  U S U $ [        U 5      U:  a   US-
  S-  nSR                  U S U X* S  5      $ U $ )N         z	{} ... {})lenformat)rR   rS   lengths      r+   shorten_strr[   W   sP    ax$x
1v}(q!!!GV*ak::r.   bytesorstringrJ   	erractionc                     [        U [        5      (       a  U $ [        U [        5      (       d   [        [        U 5      5      5       eU R	                  X5      $ )zVWhen Py2 str.encode is called, it often means bytes.encode in Py3.

This does either.
)r   r!   rK   r)   rN   )r\   rJ   r]   s      r+   compatible_encode_methodr_   a   sJ     -%%mU++ESm1D-EE+44r.   leftabove
upper_leftc                     X-   U-
  n[        X0-
  5      n[        X1-
  5      n[        X2-
  5      nXE::  a  XF::  a  U $ XV::  a  U$ U$ r0   )abs)r`   ra   rb   ppapbpcs          r+   paeth_predictorri   n   sR     	z!A	QXB	QYB	Q^	B 
xBH	r.   predcolorscolumnsbitspercomponentdatac                    US;  a  SU-  n[        U5      eX-  U-  S-  nX-  S-  nSnSU-  n	[        S[        U5      US-   5       GH  n
XJ   nXJS-   U
S-   U-    nSnUS:X  a  X-  nGOjUS:X  aH  [        U5       H7  u  pX-
  S:  a  SnO[	        XU-
     5      nUU-   S-  nU[        U45      -  nM9     GOUS	:X  a-  [        X5       H  u  nnUU-   S-  nU[        U45      -  nM     OUS
:X  a[  [        U5       HK  u  nnX-
  S:  a  SnO[	        XU-
     5      n[	        X   5      nUUU-   S	-  -   S-  nU[        U45      -  nMM     OUS:X  at  [        U5       Hd  u  nnX-
  S:  a  SnSnO [	        XU-
     5      n[	        XU-
     5      n[	        X   5      n[        UUU5      nUU-   S-  nU[        U45      -  nMf     O[        SU-  5      eX-  nUn	GM     U$ )zpReverse the effect of the PNG predictor

Documentation: http://www.libpng.org/pub/png/spec/1.2/PNG-Filters.html
)   r   z"Unsupported `bitspercomponent': %drp   r.       r   r      rW         zUnsupported predictor value: %d)
ValueErrorrangerX   	enumerateintrK   zipri   )rj   rk   rl   rm   rn   msgnbytesbppbuf
line_above
scanline_ifilter_typeline_encodedrawjsub_x	raw_x_bppraw_xup_xprior_x	average_xpaeth_xprior_x_bpppaeths                           r+   apply_png_predictorr      sZ    v%25EEo 00A5F

#q
(C
C7"JAs4y&1*5
&NZ!^f-DE!CA &l37Q; !I #CCL 1I*c1ueX& 4 A $'|#@w3.ueX& $A A !*, 797Q; !I #CCL 1Ijm,"i'&9a%??3FueX& !8 A (5
77Q; !I"#K #CCL 1I"%jS&9":Kjm,'	7KH 5C/ueX& 6 >LMM

] 6^ Jr.   )r   r   r   r   r   r   MATRIX_IDENTITYm1m0c                     U u  p#pEpgUu  ppp X-  X-  -   X-  X-  -   X-  X-  -   X-  X-  -   X-  X-  -   U-   X-  X-  -   U-   4$ r0   rC   )r   r   a1b1c1d1e1f1a0b0c0d0e0f0s                 r+   mult_matrixr      sy    !RRR!RRR5
"'
"'
"'
"'
"'B
"'B r.   mvc                 J    U u  p#pEpgUu  pX#XEX-  X-  -   U-   X-  X-  -   U-   4$ )zTranslates a matrix by (x, y).rC   
r   r   abcdefxys
             r+   translate_matrixr      s>    Q1FQququ}q(!%!%-!*;;;r.   c                 H    U u  p#pEpgUu  p X(-  XI-  -   U-   X8-  XY-  -   U-   4$ r0   rC   r   s
             r+   apply_matrix_ptr     s=    Q1FQ&515=1aeaema///r.   c                 :    U u  p#pEpgUu  pX(-  XI-  -   X8-  XY-  -   4$ )zCEquivalent to apply_matrix_pt(M, (p,q)) - apply_matrix_pt(M, (0,0))rC   )
r   r   r   r   r   r   r   r   re   qs
             r+   apply_matrix_normr     s0    Q1FQ515=!%!%-''r.   r   c                 .    [        U [        [        45      $ r0   )r   rx   floatr   s    r+   isnumberr     s    a#u&&r.   _Tobjsc              #   j   #    [        5       nU  H  nX!;   a  M
  UR                  U5        Uv   M!     g7f)zEliminates duplicated elements.N)setadd)r   doneobjs      r+   uniqr     s3     5D;		 
 s   13c                     / n/ nU H4  nU " U5      (       a  UR                  U5        M#  UR                  U5        M6     X#4$ )z9Split a list into two classes according to the predicate.)append)rj   r   tr   r   s        r+   fsplitr   '  s>    
A
A99HHSMHHSM	 
 4Kr.   v0v1r   c                 N    [        [        U 5      U-  [        X-   5      U-  5      $ )zReturns a discrete range.)rv   rx   )r   r   r   s      r+   dranger   3  s"    RAs26{a/00r.   ptsc                     [         [         [         * [         * 4nUu  p#pEU  H1  u  pg[        X&5      n[        X75      n[        XF5      n[        XW5      nM3     X#XE4$ )z7Compute a minimal rectangle that covers all the points.)INFminmax)r   limitx0y0x1y1r   r   s           r+   	get_boundr   8  sZ    cTC4(ERRZZZZ	 
 2>r.   seqfuncmaxobjc                 D    SnU  H  nU" U5      nUb  X5:  d  M  XTp#M     U$ )z;Picks the object obj where func(obj) has the highest value.NrC   )r   r   r   maxscorer   scores         r+   pickr   D  s3     HS	x/"'v  Mr.   n.c              #      #    / nU H4  nUR                  U5        [        U5      U :X  d  M%  [        U5      v   / nM6     g7f)z$Groups every n elements of the list.N)r   rX   tuple)r   r   rr   s       r+   choplistr   P  s=     
A	q6Q;(NA	 
 s
   &A A defaultc                    [        U 5      nU(       d  U$ US:X  a  [        U 5      $ US:X  a(  [        [        [        R
                  " SU 5      S   5      $ US:X  a+  [        [        [        R
                  " SSU -   5      S   5      $ US:X  a(  [        [        [        R
                  " SU 5      S   5      $ US	:X  a(  [        [        [        R
                  " S
U 5      S   5      $ [        SU-  5      e)z/Unpacks 1 to 4 or 8 byte integers (big endian).r   rW   z>Hr   rs   z>Lrq   rt   rp   z>Qzinvalid length: %d)rX   ordr   rx   structunpackr(   )rR   r   rZ   s      r+   nunpackr   [  s    VF	11v	1CtQ/233	1CtWq[9!<==	1CtQ/233	1CtQ/233,v566r.    c              #   8   #    U  H  n[        U5      v   M     g 7fr0   )chr).0r   s     r+   	<genexpr>r   n  s$      DA FFAs   (   r   r   rW   rs   rt   rV      rU   rp   	   
                                       r   i  i  i  i  i  i  i  i      !   "   #   $   %   &   '   (   )   r   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~   r   i"   i    i!   i&   i   i   i  iD   i9   i:   i"  i0   i   i   i   i   i   i   i"!  i  i  iA  iR  i`  ix  i}  i1  iB  iS  ia  i~  r   i                                       r                                                                                                                                                                                                                                                      rr   c                 ~    U R                  S5      (       a  [        U SS SS5      $ SR                  S U  5       5      $ )z+Decodes a PDFDocEncoding string to Unicode.s   rW   Nzutf-16beignorer   c              3   4   #    U  H  n[         U   v   M     g 7fr0   )PDFDocEncoding)r   r   s     r+   r   decode_text.<locals>.<genexpr>z  s     4!Q~a(!s   )
startswithr!   join)rR   s    r+   decode_textr  u  s;    ||K  1QR5*h//ww4!444r.   c                 D    [        U [        5      (       a  g[        U 5      $ )z"Encodes a string for SGML/XML/HTMLr   )r   rK   r   r   s    r+   rP   rP   }  s    !U!9r.   bboxc                 0    U u  pp4SR                  XX45      $ )Nz{:.3f},{:.3f},{:.3f},{:.3f}rY   )r  r   r   r   r   s        r+   bbox2strr    s    RR(//??r.   c                 4    U u  pp4pVSR                  XX4XV5      $ )Nz.[{:.2f},{:.2f},{:.2f},{:.2f}, ({:.2f},{:.2f})]r  )r   r   r   r   r   r   r   s          r+   
matrix2strr    s#    Q1;BB1qTTr.   obj1r   obj2c                    [        U R                  UR                  5      [        U R                  UR                  5      p2[        U R                  UR                  5      [        U R
                  UR
                  5      pTXB-
  XS-
  pvX`R                  -
  UR                  -
  XpR                  -
  UR                  -
  pUS:  a|  U	S:  av  U R                  U R                  -   S-  U R                  U R
                  -   S-  pUR                  UR                  -   S-  UR                  UR
                  -   S-  pX-
  X-
  4$ [        SU5      [        SU	5      4$ )aj  A distance function between two TextBoxes.

Consider the bounding rectangle for obj1 and obj2.
Return vector between 2 boxes boundaries if they don't overlap, otherwise
returns vector betweeen boxes centers

         +------+..........+ (x1, y1)
         | obj1 |          :
         +------+www+------+
         :          | obj2 |
(x0, y0) +..........+------+
r   rW   )r   r   r   r   r   r   widthheight)r  r  r   r   r   r   owohiwihxc1yc1xc2yc2s                 r+   vecBetweenBoxesr    s    DGGTWW%s477DGG'<DGGTWW%s477DGG'<ZZ$**,b;;.>.L	Av"q&ww(A-$''0AQ/Fcww(A-$''0AQ/Fcy#)##1bz3q":%%r.   LTComponentT)boundc                       \ rS rSrSrSS\S\SS4S jjrS\4S jr	S\
\   4S	 jrS\4S
 jrS\S\4S 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\
\   4S jrSrg)Planei  zA set-like data structure for objects placed on a plane.

Can efficiently find objects in a certain rectangular area.
It maintains two parallel lists of objects, each of
which is sorted by its x or y coordinate.
r  gridsizer   Nc                     / U l         [        5       U l        0 U l        X l        Uu  U l        U l        U l        U l        g r0   )	_seqr   _objs_gridr  r   r   r   r   )r*   r  r  s      r+   r,   Plane.__init__  s4    (*	(+
68
 /3,$'47DGr.   c                     S[        U 5      -  $ )Nz<Plane objs=%r>)listr1   s    r+   __repr__Plane.__repr__  s     4:--r.   c                 0   ^  U 4S jT R                    5       $ )Nc              3   J   >#    U  H  oTR                   ;   d  M  Uv   M     g 7fr0   r  )r   r   r*   s     r+   r   !Plane.__iter__.<locals>.<genexpr>  s     >y4::,=ys   #	#)r  r1   s   `r+   __iter__Plane.__iter__  s    >tyy>>r.   c                 ,    [        U R                  5      $ r0   )rX   r  r1   s    r+   __len__Plane.__len__  s    4::r.   r   c                     XR                   ;   $ r0   r  )r*   r   s     r+   __contains__Plane.__contains__  s    jj  r.   c              #     #    Uu  p#pEX@R                   ::  d/  U R                  U::  d  XPR                  ::  d  U R                  U::  a  g [	        U R                   U5      n[	        U R                  U5      n[        U R                  U5      n[        U R                  U5      n[        X5U R                  5       H%  n[        X$U R                  5       H  nXv4v   M
     M'     g 7fr0   )r   r   r   r   r   r   r   r  )r*   r  r   r   r   r   grid_ygrid_xs           r+   	_getrangePlane._getrange  s     =DGGrMR77]dggm""""RT]]3F 7&& 8 4s   CCr   c                 8    U H  nU R                  U5        M     g r0   )r   )r*   r   r   s      r+   extendPlane.extend  s    CHHSM r.   c                 x   U R                  UR                  UR                  UR                  UR                  45       HC  nX R
                  ;  a  / nX0R
                  U'   OU R
                  U   nUR                  U5        ME     U R                  R                  U5        U R                  R                  U5        g)zplace an object.N)
r  r   r   r   r   r  r   r  r  r   )r*   r   kr   s       r+   r   	Plane.add  s     @AA

"(* !

1JJqMHHSM B 			

sr.   c                 .   U R                  UR                  UR                  UR                  UR                  45       H"  n U R
                  U   R                  U5        M$     U R                  R                  U5        g! [        [        4 a     MU  f = f)zdisplace an object.N)
r  r   r   r   r   r  removeKeyErrorru   r  )r*   r   r  s      r+   r  Plane.remove  sw     @AA

1$$S) B
 	

# j) s   B  BBc              #   `  #    Uu  p#pE[        5       nU R                  U5       H  nXpR                  ;  a  M  U R                  U    H_  nX;   a  M
  UR                  U5        UR                  U::  d.  XHR
                  ::  d  UR                  U::  d  XXR                  ::  a  M[  Uv   Ma     M     g7f)z)finds objects that are in a certain area.N)r   r  r  r   r   r   r   r   )	r*   r  r   r   r   r   r   r  r   s	            r+   find
Plane.find  s     u%A

"zz!};66R<2<366R<2<	 % &s   B,B.)r  r  r  r  r   r   r   r   )r  )r;   r<   r=   r>   r?   Rectrx   r,   r!   r  r
   r  r  r  rA   boolr  Pointr  r	   r  r   r  r  rB   rC   r.   r+   r  r    s    4T 4S 4$ 4.# .?(<0 ? ! !4 !
'd 
'x 
'8L1 d 
| 
 
, 4  (<"8 r.   r  )ir   r   r   )r   lr   valuec                    SU s=:  a  S:  d   e   e/ nSnU S:w  a  [        U S5      u  pUS:X  a6  UR                  S[        U   5        UR                  S[        US-      5        OUS:X  a3  UR                  S[        U   5        UR                  S[        U   5        OOUS:  nU(       a  UR                  S[        U   5        US-  nUR                  U(       a  SOS[        U   U-  5        US-  nU S:w  a  M  SR	                  U5      $ )	z,Format a number as lowercase Roman numerals.r   i  r   r   r   rt   rV   r   )divmodinsert
ROMAN_ONESROMAN_FIVESr  )r  resultindex	remainder	over_fives        r+   format_int_romanr	    s    utFE
1*!%,>MM!Z./MM!Z	23!^MM!Z./MM![/0!QIaU!34Q	MMy!aE1BY1NO
 1*  776?r.   c                    U S:  d   e/ nU S:w  aR  [        U S-
  [        [        R                  5      5      u  pUR	                  [        R                  U   5        U S:w  a  MR  UR                  5         SR                  U5      $ )z5Format a number as lowercase letters a-z, aa-zz, etc.r   r   r   )r  rX   stringascii_lowercaser   reverser  )r  r  r  s      r+   format_int_alphar    st     199F
1*!%!)S1G1G-HIf,,Y78 1* NN776?r.   )zutf-8r  r0   )r   )Nr?   r%   r   r  r   htmlr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   layoutr   rL   r   r    r!   r&   r@   r'   rA   r   rK   rG   rQ   rx   r[   r_   ri   r   r   r  r  MatrixPathSegmentr   __annotations__r   r   r   r   r  r   r   r   r   rv   r   r   r   r   r   r  r  r  rP   r  r  r  r  r  r  r  r	  r  rC   r.   r+   <module>r     sg   
        & #   7##S"))34
fh&F &6c e 	v 	# 	3 c c  QY
5$
503
5JM
5
5# c s s $^
^^%(^<?^GL^
^B 	eUlUE5%'(	ueUE5%7	8	#J	#ue
	#ueUE
)*	#ueUE5%
78: - ,F  6 < <5 <V <0v 0% 0E 0( (E (e (' '4 ' T]x|  	2$*% 	Xb\ 	eDHdSUhDV>W 	1u 1% 1C 1E 1
	8E? 	t 	 LP		"	%rdEk2	<DRL	b\	 (2, 8E"c'N+C 7u 7s 73 7&  DAD DN55 5S 53 3 @4 @C @
U& US U
&- &} & &4 ~];MGL! M` "
C C 4C C r.   