
    daf6                        d dl Z d dlZd dlZd dlZe j                  dk(  r
d Zd Zd Zne j                  dk(  rej                  dk(  r
d dl	m
Z d	 Znej                  j                  d
      rd dlmZ nue j                  dk(  rfd dlZd dlZd Zd Zej                  dk(  rd Znd Zej                  j                  d      rd Zd Zn ej                  dk(  rd ZddZn	d Zd Zd Zd Zedk(  r e        yy)    Nntc                  4   d} t         j                  j                  |       }|dk(  ry|t        |       z   }t         j                  |d j	                  dd      \  }}t        |dd       dz
  }|dk\  r|dz  }t        |d	d
       dz  }|dk(  rd}|dk\  r||z   S y)zReturn the version of MSVC that was used to build Python.

        For Python 2.3 and up, the version number is included in
        sys.version.  For earlier versions, assume the compiler is MSVC 6.
        zMSC v.   N             g      $@r   )sysversionfindlensplitint)prefixisrestmajorVersionminorVersions         &/root/Python-3.12.4/Lib/ctypes/util.py_get_build_versionr   	   s     KKV$7FO++ab/''Q/41Sb6{Q2AL1Qq6{T)1L1,..    c                      t               } | y| dk  rd}n| dk  r	d| dz  z  }nyddl}d|j                  j                  v r|d	z  }|d
z   S )z%Return the name of the VC runtime dllNr   msvcrtr
   zmsvcr%d
   r   z_d.pydd.dll)r   importlib.machinery	machineryEXTENSION_SUFFIXES)r   clibname	importlibs      r   find_msvcrtr&   "   sd    $&?a<H] GbL1H  	#y**===OHr   c                    | dv r
t               S t        j                  d   j                  t        j                        D ]  }t        j
                  j                  ||       }t        j
                  j                  |      r|c S |j                         j                  d      rf|dz   }t        j
                  j                  |      s|c S  y )N)cmPATHr    )
r&   osenvironr   pathseppathjoinisfilelowerendswith)name	directoryfnames      r   find_libraryr6   7   s    := F+11"**= 	IGGLLD1Eww~~e${{}%%f-FNEww~~e$	 r   posixdarwin)	dyld_findc                 j    d| z  d| z  | d| g}|D ]  } 	 t        |       c S  y # t        $ r Y w xY w)Nzlib%s.dylibz%s.dylibz.framework/)
_dyld_find
ValueError)r3   possibles     r   r6   r6   H   s[    !D(%)-t46  	D!$''	
   s   
&	22aix)r6   c                     d}	 t        | d      5 }|j                  d      |k(  cddd       S # 1 sw Y   yxY w# t        $ r Y yw xY w)z,Return True if the given file is an ELF files   ELFbr   NF)openreadFileNotFoundError)filename
elf_headerthefiles      r   _is_elfrH   `   sN    
	h% 5||A*45 5 5  		s#   : .	: 7: : 	AAc                    t        j                  dt        j                  |       z        }t	        j
                  d      }|st	        j
                  d      }|sy t        j                         }	 |dd|j                  d| z   g}t        t         j                        }d|d<   d|d	<   	 t        j                  |t        j                  t        j                  |
      }|5  |j$                  j'                         }d d d        	 |j!                          t        j(                  |      }|sy |D ]$  }	t+        |	      st        j,                  |	      c S  y # t        $ r# Y 	 |j!                          y # t"        $ r Y y w xY ww xY w# 1 sw Y   xY w# t"        $ r Y w xY w# 	 |j!                          w # t"        $ r Y w w xY wxY w)N[^\(\)\s]*lib%s\.[^\(\)\s]*gccccz-Wl,-t-oz-lCLC_ALLLANGstdoutstderrenv)r+   fsencodereescapeshutilwhichtempfileNamedTemporaryFiler3   dictr,   
subprocessPopenPIPESTDOUTOSErrorcloserD   rR   rC   findallrH   fsdecode)
r3   expr
c_compilertempargsrT   proctraceresfiles
             r   _findLib_gccrm   i   s   
 {{9BIIdOKL\\%(
d+J**,	$		4$;GDrzz"CCMCK!''/9/9/@/@,/1  +((*+


 jju% 	%D 4=;;t$$	%  

$  + +
 %  

$  s   07F  (5E F  F:F  F 	FF  !E2 2	E>=E>FF  F
F  	FF G"F32G3	F?<G>F??Gsunos5c                 r   | sy 	 t        j                  dd| ft         j                  t         j                        }|5  |j
                  j                         }d d d        t        j                  d      }|sy t        j                  |j                  d            S # t        $ r Y y w xY w# 1 sw Y   UxY w)Nz/usr/ccs/bin/dumpz-LpvrR   rS   s   \[.*\]\sSONAME\s+([^\s]+)r   )r]   r^   r_   DEVNULLra   rR   rC   rV   searchr+   rd   group)fri   datark   s       r   _get_sonamerv      s    !'')<fa(H/9/9/A/AC
  *{{'')*))94@C;;syy|,,  * *s   7B B-	B*)B*-B6c                    | sy t        j                  d      }|sy 	 t        j                  |ddd| ft        j                  t        j
                        }|5  |j                  j                         }d d d        t        j                  d      }|sy t        j                  |j                  d            S # t        $ r Y y w xY w# 1 sw Y   UxY w)Nobjdump-pz-jz.dynamicrp   s   \sSONAME\s+([^\s]+)r   )rX   rY   r]   r^   r_   rq   ra   rR   rC   rV   rr   r+   rd   rs   )rt   rx   ri   dumprk   s        r   rv   rv      s    ll9-G!''$j!(L/9/9/A/AC
  *{{'')*))3T:C;;syy|,,  * *s   9B8 C8	CCC)freebsdopenbsd	dragonflyc                     | j                  d      }g }	 |r,|j                  dt        |j                                      |r,|xs t
        j                  gS # t        $ r Y  w xY w)N   .r   )r   insertr   popr<   r   maxsize)libnamepartsnumss      r   _num_versionr      sb    MM$'EDKK3uyy{#34  (CKK=(  s   -A 	A$#A$c                 
   t        j                  |       }d|d|d}t        j                  |      }	 t	        j
                  dt        j                  t        j                        }|5  |j                  j                         }d d d        t        j                  |      }|st        t        |             S |j                  t               t        j                   |d         S # 1 sw Y   cxY w# t        $ r d}Y sw xY w)	Nz:-lz\.\S+ => \S*/(libz\.\S+))/sbin/ldconfigz-rrp   r   )keyr   )rV   rW   r+   rU   r]   r^   r_   rq   rR   rC   ra   rc   rv   rm   sortr   rd   )r3   enamere   ri   ru   rk   s         r   r6   r6      s    IIdOE8=uED;;t$D.!''(@/9/9/A/AC  .;;++-D. **T4(C"<#566HHH&;;s2w''. .  s   4C4 +C((C14DDc                    t         j                  j                  d      sy t        t         j                        }d|d<   |rd}nd}d }	 t        j                  |t
        j                  t
        j                  |      }|5  |j                  D ]J  }|j                         }|j                  d      s%t        j                  |      j                         d   }L 	 d d d        |sy |j                  d	      D ]H  }t         j                  j                  |d
| z        }t         j                  j                  |      sF|c S  y # t        $ r Y y w xY w# 1 sw Y   xxY w)N/usr/bin/crlerN   rO   )r   -64)r   rQ   s   Default Library Path (ELF):rA   :zlib%s.so)r+   r.   existsr\   r,   r]   r^   r_   rq   ra   rR   strip
startswithrd   r   r/   )	r3   is64rT   rh   pathsri   linedirlibfiles	            r   _findLib_crler      s0   77>>/2rzz"CCM/)E!''/9/9/A/A,/1  = KK =D::<D'EF "D 1 7 7 9! <== {{3' #'',,sJ,=>77>>'*"N#
 !  = =s$   	5E  1E2(E	EEEc                 F    t        t        | |      xs t        |             S N)rv   r   rm   )r3   r   s     r   r6   r6     s    }T48NL<NOOr   c           	         dd l }|j                  d      dk(  r"t        j                         j                  dz   }n!t        j                         j                  dz   }dddddd	}|j                  |d
      }d}t        j                  |t        j                  |       |fz        }	 t        j                  ddgt        j                  t        j                  t        j                  ddd      5 }t        j                  ||j                  j                               }|r-t        j                   |j#                  d            cd d d        S 	 d d d        y # 1 sw Y   y xY w# t$        $ r Y y w xY w)Nr   lrA   z-32r   zlibc6,x86-64zlibc6,64bitzlibc6,IA-64)z	x86_64-64zppc64-64z
sparc64-64zs390x-64zia64-64libc6z\s+(lib%s\.[^\s]+)\s+\(%sr   ry   rN   )rO   rP   )stdinrS   rR   rT   r   )structcalcsizer+   unamemachinegetrU   rV   rW   r]   r^   rq   r_   rr   rR   rC   rd   rs   ra   )r3   r   r   mach_mapabi_typeregexprk   s           r   _findSoname_ldconfigr     s=   s#q(((*,,u4((*,,u4+)+)(H  ||GW5H 1EKK4((C CDE
%%'7&>,6,>,>-7-?-?-7__58#*F	H 9 LM))E188==?;C!{{399Q<89 9 9 9 9  s8   &A	E# /AE	E# E# E E#  E# #	E/.E/c                 x   dt        j                  |       z  }ddg}t        j                  j	                  d      }|r)|j                  d      D ]  }|j                  d|g        |j                  dt        j                  d| z  g       d }	 t        j                  |t        j                  t        j                  d	
      }|j                         \  }}t        j                  |t        j                  |            }	|	D ]$  }
t        |
      st        j                  |
      c S  	 |S # t        $ r Y |S w xY w)NrJ   ldz-tLD_LIBRARY_PATHr   z-LrM   z-l%sT)rR   rS   universal_newlines)rV   rW   r+   r,   r   r   extenddevnullr]   r^   r_   communicaterc   rd   rH   	Exception)r3   re   cmdlibpathr   resultr   out_rk   rl   s              r   _findLib_ldr   /  s   1BIIdOCD,Cjjnn%67G s+ *AJJay)*JJbjj&4-89F$$S,6OO8<> Qjjr{{3'78 -D #4= ;;t,,- M  Ms   BD, (D, ,	D98D9c                 p    t        |       xs* t        t        |             xs t        t        |             S r   )r   rv   rm   r   )r3   s    r   r6   r6   J  s6    '- U|D12U6A+dBS6TUr   c                     ddl m}  t        j                  dk(  rCt	        | j
                         t	        | j                  d             t	        t        d             t        j                  dk(  rdt	        t        d             t	        t        d             t	        t        d             t        j                  d	k(  rit	        | j                  d
             t	        | j                  d             t	        | j                  d             t	        | j                  d             y t        j                  j                  d      rCddl m} t        j                  dk  rot	        d |dt        j                                t	        d| j                  d              t	        t        d             t	        | j                  d             n@t	        d |dt        j                                t	        d| j                  d              t	        dt        d              t	        d| j                  t        d                    t	        dt        d              t	        d| j                  t        d                    y t	        | j                  d             t	        | j                  d             t	        t        d             y y )Nr   )cdllr   r   r7   r)   r(   bz2r8   z
libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr>   )CDLLl        z"Using CDLL(name, os.RTLD_MEMBER): zlibc.a(shr.o)zUsing cdll.LoadLibrary(): rpmz	librpm.sozlibc.a(shr_64.o)z	crypt	:: cryptz
crypto	:: cryptozlibm.sozlibcrypt.so)ctypesr   r+   r3   printr   loadr6   r   platformLoadLibraryr   r   r   RTLD_MEMBER)r   r   s     r   testr   R  s%   	ww$dkkdii!"l8$%	ww'l3 l3 l5!" <<8#$""<01$""#456$""#456$""#<=>\\$$U+#{{U":4QSQ_Q_;`:abc243C3CO3T2UVWl5)*d&&{34:4@RTVTbTb;c:def243C3CDV3W2XYZJ|G4567Jt//W0EFGHIKX 6789K 0 0h1G HIJK$""9-.$""=12,w'(? r   __main__)F)r+   rX   r]   r   r3   r   r&   r6   r   ctypes.macholib.dyldr9   r;   r   ctypes._aixrV   rZ   rH   rm   rv   r   r   r   r   r   __name__ r   r   <module>r      s    	   
 77d?2* WWCLLH4<	 	\\U# )WW/%d ||x	-"	-, ||BC		)	(* 
	!"	H	P
	<	6	U&)P zF r   