JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbro h76@s@ddlZddlZddlZddlZejdkr"ddZddZddZnoejd kr7ejd kr7dd l m Z d dZnZej d rDddl mZnMejd krddlZddlZddZddZejdkrcddZnddZej drvddZddZnejdkrddZd'ddZn dd Zd!d"Zd#dZd$d%Zed&kredSdS)(NntcCsd}tj|}|dkrdS|t|}tj|ddd\}}t|ddd}|dkr3|d7}t|d d d }|dkrCd }|dkrK||SdS) 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. zMSC v.N  g$@r)sysversionfindlensplitint)prefixisrestZ majorVersionZ minorVersionr2/opt/alt/python310/lib64/python3.10/ctypes/util.py_get_build_version s  rcCs^t}|dur dS|dkrd}n |dkrd|d}ndSddl}d|jjvr+|d 7}|d S) z%Return the name of the VC runtime dllNrmsvcrtrzmsvcr%d rz_d.pydd.dll)rimportlib.machinery machineryEXTENSION_SUFFIXES)r Zclibname importlibrrr find_msvcrt"s r cCsx|dvrtStjdtjD])}tj||}tj|r#|S| dr+q|d}tj|r9|SqdS)N)cmPATHr) r osenvironrpathseppathjoinisfilelowerendswith)nameZ directoryZfnamerrr find_library7s  r-posixdarwin) dyld_findc CsHd|d|d||fg}|D]}zt|WSty!YqwdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s) _dyld_find ValueError)r,possiblerrrr-Hs  aix)r-cCs@d}t|d}|d|kWdS1swYdS)z,Return True if the given file is an ELF filesELFbrN)openread)filenameZ elf_headerZthefilerrr_is_elf`s  $r:c Csftdt|}td}|std}|sdSt}zh|dd|jd|g}t tj }d|d<d|d <z t j |t j t j|d }Wnty^YWz|WdSty]YdSww| |j}Wdn1sqwYWz|WntyYnwz|WwtyYwwt||}|sdS|D] } t| sqt| SdS) N[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-t-oz-lCLC_ALLLANGstdoutstderrenv)r$fsencodereescapeshutilwhichtempfileZNamedTemporaryFiler,dictr% subprocessPopenPIPEZSTDOUTOSErrorcloseFileNotFoundErrorrAr8findallr:fsdecode) r,exprZ c_compilerZtempargsrCprocZtraceresfilerrr _findLib_gccfs`           rXZsunos5cCs|sdSztjdd|ftjtjd}Wn tyYdSw| |j}Wdn1s0wYtd|}|s?dSt | dS)Nz/usr/ccs/bin/dumpz-LpvrArBs\[.*\]\sSONAME\s+([^\s]+)r) rKrLrMDEVNULLrNrAr8rEsearchr$rRgroup)frUdatarVrrr _get_sonames"    r_cCs|sdStd}|s dSztj|ddd|ftjtjd}Wn ty(YdSw| |j}Wdn1s;wYt d|}|sJdSt | dS)Nobjdump-pz-jz.dynamicrYs\sSONAME\s+([^\s]+)r)rGrHrKrLrMrZrNrAr8rEr[r$rRr\)r]r`rUdumprVrrrr_s(    )ZfreebsdZopenbsdZ dragonflycCsN|d}g}z|r|dt||s Wn ty Ynw|p&tjgS)N.r)rinsertrpopr2r maxsize)ZlibnamepartsZnumsrrr _num_versions   rhcCst|}d||f}t|}z tjdtjtjd}Wn ty'd}Ynw| |j }Wdn1s:wYt ||}|sMt t |S|jtdt|dS)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))/sbin/ldconfigz-rrY)keyr)rErFr$rDrKrLrMrZrNrAr8rQr_rXsortrhrR)r,ZenamerSrUr^rVrrrr-s&        c CstjdsdSttj}d|d<|rd}nd}d}z tj|tjtj|d}Wn t y1YdSw| |j D]}| }| drLt |d}q8Wdn1sWwY|s`dS|d D]}tj|d |}tj|rz|SqedS) N /usr/bin/crler=r>)rm-64)rmr@sDefault Library Path (ELF):r6:zlib%s.so)r$r'existsrJr%rKrLrMrZrNrAstrip startswithrRrr() r,is64rCrTpathsrUlinedirZlibfilerrr _findLib_crlesB      rwFcCstt||p t|SN)r_rwrX)r,rsrrrr- scCsddl}|ddkrtjd}ntjd}dddddd }||d }d }t|t||f}zBt j d d gt j t j t j dddd%}t ||j}|ret|dWdWSWdWdS1sqwYWdStyYdSw)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$unamemachinegetrDrErFrKrLrZrMr[rAr8rRr\rN)r,r{r}Zmach_mapZabi_typeZregexprVrrr_findSoname_ldconfigs<  & rc Csdt|}ddg}tjd}|r"|dD] }|d|gq|dtjd|gd}z.tj |tj tj d d }| \}}t |t |} | D]} t| sSqLt | WSW|StygY|Sw) Nr;Zldz-tZLD_LIBRARY_PATHroz-Lr<z-l%sT)rArBZuniversal_newlines)rErFr$r%r~rextenddevnullrKrLrMZ communicaterQrRr: Exception) r,rScmdZlibpathrresultrout_rVrWrrr _findLib_ld,s2    rcCs t|ptt|ptt|Srx)rr_rXr)r,rrrr-Gs   cCsddlm}tjdkrt|jt|dttdtjdkrttdttdttdtj d krWt| d t| d t| d t| d dStj drddlm }tj dkrtd|dtjtd| dttdt| dntd|dtjtd| dtdtdtd| tdtdtdtd| tddSt| dt| dttddSdS)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$rGrKr r,rr r-rZctypes.macholib.dyldr0r1rrZ ctypes._aixrErIr:rXr_rhrwrrr__name__rrrrsB       2    $(