
    %oiyC                        S r SSKrSSKrSSKrSSKrSSKrSSKr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  SSKJr  SSKJrJr  SSKJrJr  SSKJrJrJrJ r J!r!  SS	K"J#r#J$r$  \RJ                  " \&5      r' " S
 S\5      r( " S S5      r) " S S\)5      r* " S S\)5      r+ " S S\+5      r, " S S\)5      r- " S S\-5      r. " S S\*5      r/ " S S\-5      r0 " S S\*5      r1 " S S\-5      r2 " S  S!5      r3 " S" S#\ \   5      r4g)$zAdobe character mapping (CMap) support.

CMaps provide the mapping between character codes and Unicode
code-points to character ids (CIDs).

More information is available on:

  https://github.com/adobe-type-tools/cmap-resources

    N)IterableIteratorMutableMapping)AnyBinaryIOClassVarTextIOUnioncast)name2unicode)PDFExceptionPDFTypeError)PSEOFPSSyntaxError)KWD	PSKeyword	PSLiteralPSStackParserliteral_name)choplistnunpackc                       \ rS rSrSrg)	CMapError'    N__name__
__module____qualname____firstlineno____static_attributes__r       K/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfminer/cmapdb.pyr   r   '   s    r"   r   c                       \ rS rSrSrS\S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 jrS\S\\   4S jrSrg)CMapBase+   r   kwargsreturnNc                 .    UR                  5       U l        g N)copyattrsselfr'   s     r#   __init__CMapBase.__init__.   s    28++-
r"   c                 @    U R                   R                  SS5      S:g  $ )NWModer   )r,   getr.   s    r#   is_verticalCMapBase.is_vertical1   s    zz~~gq)Q..r"   kvc                      X R                   U'   g r*   r,   )r.   r7   r8   s      r#   set_attrCMapBase.set_attr4   s    

1r"   codecidc                     g r*   r   )r.   r=   r>   s      r#   add_code2cidCMapBase.add_code2cid7       r"   c                     g r*   r   )r.   r>   r=   s      r#   add_cid2unichrCMapBase.add_cid2unichr:   rB   r"   c                     g r*   r   )r.   cmaps     r#   use_cmapCMapBase.use_cmap=   rB   r"   c                     [         er*   )NotImplementedError)r.   r=   s     r#   decodeCMapBase.decode@   s    !!r"   r:   )rG   r%   r(   N)r   r   r   r    debugobjectr/   boolr5   strr;   intr@   r   bytesrD   rH   r   rL   r!   r   r"   r#   r%   r%   +   s    E@ @D @/T /# & T  3 4 # Y->-D  "5 "Xc] "r"   r%   c            	           \ rS rSrS\\-  SS4S jrS\4S jrS\SS4S jr	S	\
S\\   4S
 jr\R                  SS4S\S\\\4   S-  S	\\S4   SS4S jjrSrg)CMapD   r'   r(   Nc                 @    [         R                  " U 40 UD6  0 U l        g r*   )r%   r/   code2cidr-   s     r#   r/   CMap.__init__E   s    $)&)+-r"   c                 V    SR                  U R                  R                  S5      5      $ )Nz
<CMap: {}>CMapNameformatr,   r3   r4   s    r#   __repr__CMap.__repr__I   s     ""4::>>*#=>>r"   rG   c                    ^ [        U[        5      (       d   [        [        U5      5      5       eS[        [
        [        4   S[        [
        [        4   SS 4U4S jjmT" U R                  UR                  5        g )Ndstsrcr(   c                    > UR                  5        H.  u  p#[        U[        5      (       a  0 nX@U'   T" XC5        M*  X0U'   M0     g r*   )items
isinstancedict)ra   rb   r7   r8   dr+   s        r#   r+   CMap.use_cmap.<locals>.copyO   s<    		a&&+-AFJF $r"   )re   rU   rQ   typerf   rR   rO   rX   )r.   rG   r+   s     @r#   rH   CMap.use_cmapL   sc    $%%6s4:6%	d3;' 	d3;.? 	D 	 	T]]DMM*r"   r=   c              #   *  #    [         R                  SX5        U R                  n[        U5       H^  nX2;   aJ  X#   n[	        U[
        5      (       a  Uv   U R                  nM3  [        [        [
        [        4   U5      nMR  U R                  nM`     g 7f)Nzdecode: %r, %r)	logrN   rX   iterre   rR   r   rf   rO   )r.   r=   rg   ixs        r#   rL   CMap.decodeZ   sp     		"D/MMdAvDa%%GAT#v+.2AMM s   BBr   outrX   .c           	      0   Uc  U R                   nSn[        UR                  5       5       Hh  u  pE/ UQUP7n[        U[        5      (       a  UR                  SU< SU S35        M<  U R                  U[        [        [        [        4   U5      US9  Mj     g )Nr   zcode z = cid 
)rq   rX   r=   )
rX   sortedrd   re   rR   writedumpr   rf   rO   )r.   rq   rX   r=   r7   r8   cs          r#   rv   	CMap.dumph   s     }}HD8>>+,DA$

A!S!!		E!gaS34		cDc6k1BA,FQ	O -r"   rX   )r   r   r   r    rQ   rR   r/   r^   r%   rH   rS   r   rL   sysstdoutr	   rf   rO   tuplerv   r!   r   r"   r#   rU   rU   D   s    .s .t .?# ?+X +$ +"5 "Xc] "  jj-1 "	PP sF{#d*P CHo	P
 
P Pr"   rU   c                   0    \ rS rSrS\S\\S4   4S jrSrg)IdentityCMapy   r=   r(   .c                 p    [        U5      S-  nU(       a!  [        R                  " SU S3US US-   5      $ g)N   >Hr   lenstructunpackr.   r=   ns      r#   rL   IdentityCMap.decodez   s8    IN==1QCq4!a%=99r"   r   N	r   r   r   r    rS   r|   rR   rL   r!   r   r"   r#   r~   r~   y       5 U38_ r"   r~   c                   0    \ rS rSrS\S\\S4   4S jrSrg)IdentityCMapByte   r=   r(   .c                 d    [        U5      nU(       a  [        R                  " SU S3US U 5      $ g)Nr   Br   r   r   s      r#   rL   IdentityCMapByte.decode   s0    I==1QCq4844r"   r   Nr   r   r"   r#   r   r      r   r"   r   c                   x    \ rS rSrS\\-  SS4S jrS\4S jrS\S\4S jr\	R                  4S	\SS4S
 jjrSrg)
UnicodeMap   r'   r(   Nc                 @    [         R                  " U 40 UD6  0 U l        g r*   )r%   r/   
cid2unichrr-   s     r#   r/   UnicodeMap.__init__   s    $)&)*,r"   c                 V    SR                  U R                  R                  S5      5      $ )Nz<UnicodeMap: {}>r[   r\   r4   s    r#   r^   UnicodeMap.__repr__   s     !((
)CDDr"   r>   c                 L    [         R                  SX5        U R                  U   $ )Nget_unichr: %r, %r)rl   rN   r   r.   r>   s     r#   
get_unichrUnicodeMap.get_unichr   s     		&2s##r"   rq   c                     [        U R                  R                  5       5       H  u  p#UR                  SU SU< S35        M      g )Nzcid z = unicode rs   )rt   r   rd   ru   )r.   rq   r7   r8   s       r#   rv   UnicodeMap.dump   s;    4??0023DAIIQC{1%r23 4r"   r   )r   r   r   r    rQ   rR   r/   r^   r   rz   r{   r	   rv   r!   r   r"   r#   r   r      s[    -s -t -E# E$c $c $ "% 4 4 4 4r"   r   c                   &    \ rS rSrS\S\4S jrSrg)IdentityUnicodeMap   r>   r(   c                 D    [         R                  SX5        [        U5      $ )z+Interpret character id as unicode codepointr   )rl   rN   chrr   s     r#   r   IdentityUnicodeMap.get_unichr   s    		&23xr"   r   N)r   r   r   r    rR   rQ   r   r!   r   r"   r#   r   r      s    c c r"   r   c                   *    \ rS rSrS\S\SS4S jrSrg)FileCMap   r=   r>   r(   Nc                 f   [        U[        5      (       a  [        U[        5      (       d$   [        [        U5      [        U5      45      5       eU R                  nUS S  H<  n[        U5      nXS;   a!  [        [        [        [        4   X5   5      nM4  0 nXcU'   UnM>     [        US   5      nX#U'   g )N)	re   rQ   rR   ri   rX   ordr   rf   rO   )r.   r=   r>   rg   rw   cits          r#   r@   FileCMap.add_code2cid   s    $$$C)=)= 	
s$Zc#@
 	
= MMcrAQBwc6k*AE2')"  b]"r"   r   )r   r   r   r    rQ   rR   r@   r!   r   r"   r#   r   r      s     3 4 r"   r   c                   6    \ rS rSrS\S\\-  \-  SS4S jrSrg)FileUnicodeMap   r>   r=   r(   Nc                    [        U[        5      (       d   [        [        U5      5      5       e[        U[        5      (       a7  [        UR
                  [        5      (       d   e[        UR
                  5      nOT[        U[        5      (       a  UR                  SS5      nO,[        U[        5      (       a  [        U5      nO[        U5      eUS:X  a   U R                  R                  U5      S:X  a  g X0R                  U'   g )NzUTF-16BEignore     )re   rR   rQ   ri   r   namer   rS   rL   r   r   r   r3   )r.   r>   r=   unichrs       r#   rD   FileUnicodeMap.add_cid2unichr   s    #s##3Sc^3#dI&&dii----!$)),Fe$$[[X6Fc""YFt$$ X$//"5"5c":c"A%r"   r   )	r   r   r   r    rR   r   rS   rD   r!   r   r"   r#   r   r      s&    &# &Y->-D & &r"   r   c                   8   ^  \ rS rSrS\S\SS4U 4S jjrSrU =r$ )PyCMap   r   moduler(   Nc                    > [         TU ]  US9  UR                  U l        UR                  (       a  SU R
                  S'   g g N)r[      r2   )superr/   CODE2CIDrX   IS_VERTICALr,   )r.   r   r   	__class__s      r#   r/   PyCMap.__init__   s:    $'"#DJJw r"   ry   )	r   r   r   r    rQ   r   r/   r!   __classcell__r   s   @r#   r   r      s"    $S $# $$ $ $r"   r   c                   <   ^  \ rS rSrS\S\S\SS4U 4S jjrSrU =r	$ )	PyUnicodeMap   r   r   verticalr(   Nc                    > [         TU ]  US9  U(       a!  UR                  U l        SU R                  S'   g UR
                  U l        g r   )r   r/   CID2UNICHR_Vr   r,   CID2UNICHR_H)r.   r   r   r   r   s       r#   r/   PyUnicodeMap.__init__   s>    $'$11DO"#DJJw$11DOr"   r   )
r   r   r   r    rQ   r   rP   r/   r!   r   r   s   @r#   r   r      s)    2S 2# 2 2$ 2 2r"   r   c                      \ rS rSr% 0 r\\\\4      \	S'   0 r
\\\\\   4      \	S'    " S S\5      r\S\\\\4   \4   S\\\\4   \4   4S j5       r\S	\S\\   4S
 j5       r\S	\S\4S j5       r\SS	\S\S\4S jj5       rSrg)CMapDB   _cmap_cache_umap_cachec                       \ rS rSrSrg)CMapDB.CMapNotFound   r   Nr   r   r"   r#   CMapNotFoundr      s    r"   r   rg   r(   c                    [        U [        5      (       d  U $ 0 nU R                  5        HC  u  p# [        U5      n[        U[        5      (       a  [        R                  U5      X'   M?  X1U'   ME     U$ ! [        [
        4 a    Un NLf = f)zERecursively convert string keys to integers in CODE2CID dictionaries.)re   rf   rd   rR   
ValueError	TypeErrorr   _convert_code2cid_keys)rg   resultr7   r8   new_keys        r#   r   CMapDB._convert_code2cid_keys   s    
 !T""H$&GGIDAa& !T"""("?"?"B"#w   	* s   A33BBr   c           	         UR                  SS5      n[        R                  SU5        [        R                  R                  SS5      [        R                  R                  [        R                  R                  [        5      S5      4nU GH  nU S3n[        R                  R                  X45      n[        R                  R                  U5      n[        R                  R                  U5      nUR                  U[        R                  -   5      (       d  M  [        R                  R                  U5      (       d  M  [        R                  SU5        [        R                  " US	S
S9 n[         R"                  " U5      n	SU	;   a5  U	S   R%                  5        V
Vs0 s H  u  p['        U
5      U_M     snn
U	S'   SU	;   a5  U	S   R%                  5        V
Vs0 s H  u  p['        U
5      U_M     snn
U	S'   U	R                  S5      (       a  U R)                  U	S   5      U	S'   [+        [-        U5      SU	5      sS S S 5        s  $    [.        R1                  U5      es  snn
f s  snn
f ! , (       d  f       GM  = f)N  zloading: %r	CMAP_PATHz/usr/share/pdfminer/rG   z.json.gzzloading JSON: %rrtzutf-8)encodingr   r   r   r   )replacerl   rN   osenvironr3   pathjoindirname__file__realpath
startswithsepexistsgzipopenjsonloadrd   rR   r   ri   rQ   r   r   )clsr   
cmap_paths	directoryjson_filename	json_pathresolved_json_pathresolved_directorygzfiledatar7   r8   s               r#   
_load_dataCMapDB._load_data   s   ||D"%		-&JJNN;(>?GGLL2F;


 $I#fH-MY>I!#!1!1)!<!#!1!1)!< ",,"RVV+ ''..!344		,i8YY14'Jf+/99V+<D%-26~2F2L2L2N02N$!CFAI2N0^, &-26~2F2L2L2N02N$!CFAI2N0^, xx
+++.+E+Ed:FV+WZ(D	2t4 KJ $8 !!$''00 KJs+   -3I+ I
8#I+I%
3A	I+I++
I;	c                    US:X  a	  [        SS9$ US:X  a	  [        SS9$ US:X  a	  [        SS9$ US:X  a	  [        SS9$  U R                  U   $ ! [         a     Of = fU R	                  U5      n[        X5      =U R                  U'   nU$ )Nz
Identity-Hr   )r2   z
Identity-Vr   OneByteIdentityHOneByteIdentityV)r~   r   r   KeyErrorr   r   )r   r   r   rG   s       r#   get_cmapCMapDB.get_cmap  s    <a((\!a((''#!,,''#!,,	??4(( 		~~d#'-d'99s   A 
AAr   c                      U R                   U   U   $ ! [         a     Of = fU R                  SU 35      nS Vs/ s H  n[        XU5      PM     Os  snf snU R                   U'   U R                   U   U   $ )Nzto-unicode-)FT)r   r  r   r   )r   r   r   r   r8   s        r#   get_unicode_mapCMapDB.get_unicode_map1  sz    	??4(22 		~~D623FS Tmd!!<m Tt$X..s    
!!Ar   N)F)r   r   r   r    r   r   rf   rQ   r   __annotations__r   listr   r   r   staticmethodr
   rO   rR   r   classmethodri   r   r   r%   r  rP   r   r	  r!   r   r"   r#   r   r      s    /1K$sF{+,1;=K$sD$6678=y  c6k"C'(	tCK #%	& ( $(c $(d3i $( $(L C H  " /3 /$ /: / /r"   r   c                   \   \ rS rSrS\S\SS4S jrSS jr\" S5      r	\" S	5      r
\" S
5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      rS\S\SS4S jrS\SS4S jrSrg)
CMapParseri<  rG   fpr(   Nc                 h    [         R                  " X5        Xl        SU l        [	        5       U l        g )NT)r   r/   rG   _in_cmapset	_warnings)r.   rG   r  s      r#   r/   CMapParser.__init__=  s%    t(	#&5r"   c                     [         R                  " [        5         U R                  5         S S S 5        g ! , (       d  f       g = fr*   )
contextlibsuppressr   
nextobjectr4   s    r#   runCMapParser.runD  s&      'OO (''s	   5
As	   begincmaps   endcmaps   usecmaps   defs   begincodespaceranges   endcodespaceranges   begincidranges   endcidranges   begincidchars
   endcidchars   beginbfranges
   endbfranges   beginbfchars	   endbfchars   beginnotdefranges   endnotdefrangepostokenc                    X R                   L a  SU l        U R                  5         gX R                  L a  SU l        gU R                  (       d  gX R                  L a?   U R                  S5      u  u  p4u  p5U R                  R                  [        U5      U5        gX R                  L aN   U R                  S5      u  u  p6U R                  R                  [        R                  [        U5      5      5        gX R                  L a  U R                  5         gX R                   L a  U R                  5         gX R"                  L a  U R                  5         gX R$                  L Ga  U R                  5        VVs/ s H  u  pxUPM	     n	nn['        SU	5       GHO  u  pn[)        U
[*        5      (       d  U R-                  S5        M/  [)        U[*        5      (       d  U R-                  S5        MW  [)        U[.        5      (       d  U R-                  S	5        M  [1        U
5      [1        U5      :w  a  U R-                  S
5        M  U
SS nUSS nX:w  a  U R-                  S5        M  U
SS nUSS n[3        U5      n[3        U5      n[1        U5      n[5        UU-
  S-   5       HC  nU[6        R8                  " SUU-   5      U* S -   nU R                  R;                  UU-   U5        ME     GMR     gX R<                  L a  U R                  5         gX R>                  L a  U R                  5        VVs/ s H  u  pxUPM	     n	nn['        SU	5       HP  u  nn[)        U[*        5      (       d  M  [)        U[.        5      (       d  M4  U R                  R;                  UU5        MR     gX R@                  L a  U R                  5         gX RB                  L Ga  U R                  5        VVs/ s H  u  pxUPM	     n	nn['        SU	5       GH  u  pn[)        U
[*        5      (       d  U R-                  S5        M/  [)        U[*        5      (       d  U R-                  S5        MW  [1        U
5      [1        U5      :w  a  U R-                  S5        M  [3        U
5      n[3        U5      n[)        U[D        5      (       ag  [1        U5      UU-
  S-   :w  a  U R-                  S5        [G        [5        UUS-   5      USS9 H"  u  nnU R                  R;                  UU5        M$     GM  [)        U[*        5      (       d   eUSS n[3        U5      nUSS n[1        U5      n[5        UU-
  S-   5       HC  nU[6        R8                  " SUU-   5      U* S -   nU R                  R;                  UU-   U5        ME     GM     gX RH                  L a  U R                  5         gX RJ                  L a  U R                  5        VVs/ s H  u  pxUPM	     n	nn['        SU	5       HY  u  nn[)        U[*        5      (       d  M  [)        U[*        5      (       d  M4  U R                  R;                  [3        U5      U5        M[     gX RL                  L a  U R                  5         gX RN                  L a  U R                  5         gU RQ                  X45        g! [         a     gf = f! [         a     g[        R                   a     gf = fs  snnf s  snnf s  snnf s  snnf )zKToUnicode CMaps

See Section 5.9.2 - ToUnicode CMaps of the PDF Reference.
TNFr   r      z0The start object of begincidrange is not a byte.z.The end object of begincidrange is not a byte.z.The cid object of begincidrange is not a byte.z?The start and end byte of begincidrange have different lengths.zGThe prefix of the start and end byte of begincidrange are not the same.z>LzThe start object is not a byte.zThe end object is not a byte.z.The start and end byte have different lengths.zPThe difference between the start and end offsets does not match the code length.)strict))KEYWORD_BEGINCMAPr  popallKEYWORD_ENDCMAPKEYWORD_DEFpoprG   r;   r   r   KEYWORD_USECMAPrH   r   r  r   KEYWORD_BEGINCODESPACERANGEKEYWORD_ENDCODESPACERANGEKEYWORD_BEGINCIDRANGEKEYWORD_ENDCIDRANGEr   re   rS   
_warn_oncerR   r   r   ranger   packrD   KEYWORD_BEGINCIDCHARKEYWORD_ENDCIDCHARKEYWORD_BEGINBFRANGEKEYWORD_ENDBFRANGEr  zipKEYWORD_BEGINBFCHARKEYWORD_ENDBFCHARKEYWORD_BEGINNOTDEFRANGEKEYWORD_ENDNOTDEFRANGEpush)r.   r  r  _r7   r8   cmapname__objobjs
start_byteend_byter>   start_prefix
end_prefixsvarevarstartendvlenrn   ro   r=   unicode_valuevarbaseprefixs                              r#   
do_keywordCMapParser.do_keywordY  s    
 *** DMKKM***!DM}}$$$#'88A; !!		""<?A6 (((#'88A; !		""6??<3I#JK
 444KKM222KKM...KKM,,,)-7IRCD7-5a->)
c!*e44OO$VW!(E22OO$TU!#s++OO$TUz?c(m3OO- )#2%cr]
-OO: !"#}dm4ysU{Q/A$v{{4'CTEF'KKAII,,S1Wa8 0; .?@ ---KKM+++)-7IRCD7%a.	TdE**z#s/C/CII,,S$7 / ---KKM+++)-7IRCD7.6q$.?*
d!*e44OO$EF!(E22OO$CDz?c(m3OO$TU
+h'dD))4yC%K!O3F /2eS1W-tE/*] 		00mD/
 &dE2222rs)C"3<D!#2YFs8D"3;?3"V[[tax%@$%HH		00A> 49 /@> ,,,KKM***)-7IRCD7%a.	Tc5))ju.E.EII,,WS\4@ / 111KKM///KKM		3,E !  !   &&   8P 8 8N 8sC   =Z. +AZ> 7[#)[)[/"[5.
Z;:Z;>
[ 
[ [ msgc                     XR                   ;  a5  U R                   R                  U5        Sn[        R                  X!-   5        gg)z!Warn once for each unique messagezIgnoring (part of) ToUnicode map because the PDF data does not conform to the format. This could result in (cid) values in the output. N)r  addrl   warning)r.   rN  base_msgs      r#   r-  CMapParser._warn_once  s=    nn$NNs#/ 
 KK' %r"   )r  r  rG   )r(   N)r   r   r   r    r%   r   r/   r  r   r#  r%  r(  r&  r)  r*  r+  r,  r0  r1  r2  r3  r5  r6  r7  r8  rR   r   rL  rQ   r-  r!   r   r"   r#   r  r  <  s   )X )8 ) ) L)*oO*oOf+K"%&<"= #$8 9 01n-/]+/]+n-L)"#67 !23W c W ) W  W r	(c 	(d 	(r"   r  )5__doc__r  r   r   loggingr   os.pathr   rz   collections.abcr   r   r   typingr   r   r   r	   r
   r   pdfminer.encodingdbr   pdfminer.pdfexceptionsr   r   pdfminer.psexceptionsr   r   pdfminer.psparserr   r   r   r   r   pdfminer.utilsr   r   	getLoggerr   rl   r   r%   rU   r~   r   r   r   r   r   r   r   r   r  r   r"   r#   <module>r_     s   	     	   
 > >  - = 6 T T ,!	 	" "22P8 2Pj8 | 4 4" t $&Z &*$T $2: 2]/ ]/@(y) (r"   