\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A U e5d76@sBddlZddlZddlZddlZejdkrDddZddZddZnejd krnejd krndd l m Z d dZnej d rddl mZnejd kr&ddlZddlZddZddZejdkrddZnddZej drddZddZn8ejdkrddZd'ddZndd Zd!d"Zd#dZd$d%Zed&kr>edS)(NntcCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkrf|d7}t|dd d }|dkrd }|dkr||SdS) NzMSC v.  g$@r)sysversionfindlensplitint)prefixisrestZ majorVersionZ minorVersionr#/usr/lib64/python3.8/ctypes/util.py_get_build_version s  rcCs^t}|dkrdS|dkr d}n|dkr6d|d}ndSddl}d|jjkrV|d7}|d S) Nrmsvcrtrzmsvcr%d rz_d.pydd.dll)rimportlib.machinery machineryEXTENSION_SUFFIXES)r Zclibname importlibrrr find_msvcrt"s r cCsx|dkrtStjdtjD]R}tj||}tj|rF|S| drVq |d}tj|r |Sq dS)N)cmPATHr) r osenvironrpathseppathjoinisfilelowerendswith)nameZ directoryZfnamerrr find_library7s   r-posixdarwin) dyld_findc CsPd|d|d||fg}|D],}zt|WStk rHYqYqXqdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s) _dyld_find ValueError)r,possiblerrrr-Hs  aix)r-c Cs4d}t|d}|d|kW5QRSQRXdS)NsELFbr)openread)filenameZ elf_headerZthefilerrr_is_elf`s r:c Cs tdt|}td}|s,td}|s4dSt}z|dd|j d|g}t tj }d|d<d|d <zt j|t jt j|d }Wntk rYW$dSX||j}W5QRXW5z |Wnt k rYnXXt||}|sdS|D]} t| sqt| SdS) N[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-t-oz-lCLC_ALLLANGstdoutstderrenv)r$fsencodereescapeshutilwhichtempfileZNamedTemporaryFilecloseFileNotFoundErrorr,dictr% subprocessPopenPIPEZSTDOUTOSErrorrAr8findallr:fsdecode) r,exprZ c_compilerZtempargsrCprocZtraceresfilerrr _findLib_gccfsB        rXZsunos5c Cs||sdSztjdd|ftjtjd}Wntk r<YdSX||j}W5QRXtd|}|sldSt | dS)Nz/usr/ccs/bin/dumpz-LpvrArBs\[.*\]\sSONAME\s+([^\s]+)r) rMrNrODEVNULLrPrAr8rEsearchr$rRgroup)frUdatarVrrr _get_sonames   r_c Cs|sdStd}|sdSz"tj|ddd|ftjtjd}Wntk rRYdSX||j}W5QRXt d|}|sdSt | dS)Nobjdump-pz-jz.dynamicrYs\sSONAME\s+([^\s]+)r)rGrHrMrNrOrZrPrAr8rEr[r$rRr\)r]r`rUdumprVrrrr_s$   )ZfreebsdZopenbsdZ dragonflycCsN|d}g}z|r*|dt|qWntk r@YnX|pLtjgS)N.r)rinsertrpopr2r maxsize)ZlibnamepartsZnumsrrr _num_versions rhc Cst|}d||f}t|}ztjdtjtjd}Wntk rPd}YnX||j }W5QRXt ||}|st t |S|jtdt|dS)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))/sbin/ldconfigz-rrY)keyr)rErFr$rDrMrNrOrZrPrAr8rQr_rXsortrhrR)r,ZenamerSrUr^rVrrrr-s"        c CstjdsdSttj}d|d<|r,d}nd}d}ztj|tjtj|d}Wnt k rdYdSX|6|j D](}| }| drrt |d}qrW5QRX|sdS|d D]*}tj|d |}tj|r|SqdS) N /usr/bin/crler=r>)rm-64)rmr@sDefault Library Path (ELF):r6:zlib%s.so)r$r'existsrLr%rMrNrOrZrPrAstrip startswithrRrr() r,is64rCrTpathsrUlinedirZlibfilerrr _findLib_crles8       rwFcCstt||pt|SN)r_rwrX)r,rsrrrr- sc Csddl}|ddkr&tjd}ntjd}dddddd }||d }d }t|t||f}zht j d d gt j t j t j dddd:}t ||j}|rt|dW5QRWSW5QRXWntk rYnXdS)Nrlr6z-32rnz libc6,x86-64z libc6,64bitz libc6,IA-64)z x86_64-64zppc64-64z sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%srirar=)r>r?)stdinrBrArCr)structZcalcsizer$unamemachinegetrDrErFrMrNrZrOr[rAr8rRr\rP)r,r{r}Zmach_mapZabi_typeZregexprVrrr_findSoname_ldconfigs4  ,rc Csdt|}ddg}tjd}|rD|dD]}|d|gq0|dtjd|gd}zZtj |tj tj d d }| \}}t |t |} | D]} t| sqt | WSWntk rYnX|S) Nr;Zldz-tZLD_LIBRARY_PATHroz-Lr<z-l%sT)rArBZuniversal_newlines)rErFr$r%r~rextenddevnullrMrNrOZ communicaterQrRr: Exception) r,rScmdZlibpathrresultrout_rVrWrrr _findLib_ld,s,   rcCs t|ptt|ptt|Srx)rr_rXr)r,rrrr-Gs   cCsddlm}tjdkr:t|jt|dttdtjdkrttdttdttdtj d krt| d t| d t| d t| d ntj drddlm }tj dkrtd|dtjtd| dttdt| dn*td|dtjtd| dtdtdtd| tdtdtdtd| tdn(t| dt| dttddS)Nr)cdllrrr.r"r!bz2r/z libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr4)CDLLlz"Using CDLL(name, os.RTLD_MEMBER): z libc.a(shr.o)zUsing cdll.LoadLibrary(): Zrpmz librpm.sozlibc.a(shr_64.o)z crypt :: Zcryptz crypto :: Zcryptozlibm.soz libcrypt.so)Zctypesrr$r,printrloadr-r platformZ LoadLibraryrrrrfZ RTLD_MEMBER)rrrrrtestOs<            r__main__)F)r$rGrMr r,rr r-rZctypes.macholib.dyldr0r1rrZ ctypes._aixrErIr:rXr_rhrwrrr__name__rrrrs>     2     $ (