grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i76ã@sBddlZddlZddlZddlZejdkrDdd„Zdd„Zdd„Znâejd krnejd krndd l m Z d d„Zn¸ej  d ¡rˆddl mZnžejd k�r&ddlZddlZdd„Zdd„ZejdkrÈdd„Zndd„Zej  d¡rîdd„Zdd„Zn8ejdk�rdd„Zd'dd„Zndd „Zd!d"„Zd#d„Zd$d%„Zed&k�r>eƒdS)(éNÚntcCsšd}tj |¡}|dkrdS|t|ƒ}tj|d… dd¡\}}t|dd…ƒd}|dkrf|d7}t|dd …ƒd }|dkr†d }|dkr–||SdS) NzMSC v.éÿÿÿÿéú ééþÿÿÿé éég$@r)ÚsysÚversionÚfindÚlenÚsplitÚint)ÚprefixÚiÚsÚrestZ majorVersionZ minorVersion©rú#/usr/lib64/python3.9/ctypes/util.pyÚ_get_build_version s  rcCs^tƒ}|durdS|dkr d}n|dkr6d|d}ndSddl}d|jjvrV|d7}|d S) NrÚmsvcrtrzmsvcr%dé rz_d.pydÚdú.dll)rÚimportlib.machineryÚ machineryÚEXTENSION_SUFFIXES)r ZclibnameÚ importlibrrrÚ find_msvcrt"s r cCsx|dvrtƒStjd tj¡D]R}tj ||¡}tj |¡rF|S| ¡  d¡rVq |d}tj |¡r |Sq dS)N)ÚcÚmÚPATHr) r ÚosÚenvironrÚpathsepÚpathÚjoinÚisfileÚlowerÚendswith)ÚnameZ directoryÚfnamerrrÚ find_library7s   r.ÚposixÚdarwin)Ú dyld_findc CsNd|d|d||fg}|D]*}zt|ƒWStyFYqYq0qdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s)Ú _dyld_findÚ ValueError)r,Úpossiblerrrr.Hs þ  Úaix)r.cCs@d}t|dƒ�}| d¡|kWdƒS1s20YdS)NsELFÚbré)ÚopenÚread)ÚfilenameZ elf_headerÚthefilerrrÚ_is_elf`s r<c Cstt dt |¡¡}t d¡}|s,t d¡}|s4dSt ¡}zÔ|dd|jd|g}t tj ƒ}d|d<d|d <zt j |t j t j|d �}Wn6ty¼YWz | ¡Wnty¶Yn0dS0|�|j ¡}Wdƒn1sâ0YWz | ¡Wnt�yYn0n$z | ¡Wnt�y2Yn00t ||¡}|�sLdS|D]} t| ƒ�sb�qPt | ¡SdS) Nú[^\(\)\s]*lib%s\.[^\(\)\s]*ZgccZccz-Wl,-tú-oz-lÚCÚLC_ALLÚLANG©ÚstdoutÚstderrÚenv)r$ÚfsencodeÚreÚescapeÚshutilÚwhichÚtempfileÚNamedTemporaryFiler,Údictr%Ú subprocessÚPopenÚPIPEÚSTDOUTÚOSErrorÚcloseÚFileNotFoundErrorrCr9Úfindallr<Úfsdecode) r,ÚexprZ c_compilerZtempÚargsrEÚprocZtraceÚresÚfilerrrÚ _findLib_gccfsT   ý    ÷* û   r\Zsunos5cCsŽ|sdSztjdd|ftjtjd�}Wnty:YdS0|�|j ¡}Wdƒn1s`0Yt d|¡}|s~dSt   |  d¡¡S)Nz/usr/ccs/bin/dumpz-Lpv©rCrDs\[.*\]\sSONAME\s+([^\s]+)r) rNrOrPÚDEVNULLrRrCr9rGÚsearchr$rVÚgroup)ÚfrYÚdatarZrrrÚ _get_sonamešs þ  ( rccCs¤|sdSt d¡}|sdSz"tj|ddd|ftjtjd�}WntyPYdS0|�|j ¡}Wdƒn1sv0Yt   d|¡}|s”dSt   |  d¡¡S)NÚobjdumpú-pz-jz.dynamicr]s\sSONAME\s+([^\s]+)r)rIrJrNrOrPr^rRrCr9rGr_r$rVr`)rardrYÚdumprZrrrrc«s$ þ  ( )ZfreebsdZopenbsdZ dragonflycCsL| d¡}g}z|r*| dt| ¡ƒ¡qWnty>Yn0|pJtjgS)Nó.r)rÚinsertrÚpopr3r Úmaxsize)ZlibnameÚpartsZnumsrrrÚ _num_versionÃs  rlcCs´t |¡}d||f}t |¡}ztjdtjtjd�}WntyNd}Yn00|�|j   ¡}Wdƒn1st0Yt  ||¡}|sšt t |ƒƒS|jtd�t |d¡S)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+))ú/sbin/ldconfigz-rr]ó)Úkeyr)rGrHr$rFrNrOrPr^rRrCr9rUrcr\ÚsortrlrV)r,ZenamerWrYrbrZrrrr.Îs"   þ   (   c Csútj d¡sdSttjƒ}d|d<|r,d}nd}d}ztj|tjtj|d�}Wnt ybYdS0|�@|j D](}|  ¡}|  d¡rpt  |¡ ¡d}qpWdƒn1s®0Y|sÀdS| d ¡D]*}tj |d |¡}tj |¡rÊ|SqÊdS) Nú /usr/bin/crler?r@)rqú-64)rqrBsDefault Library Path (ELF):r7ú:zlib%s.so)r$r'ÚexistsrMr%rNrOrPr^rRrCÚstripÚ startswithrVrr() r,Úis64rErXÚpathsrYÚlineÚdirZlibfilerrrÚ _findLib_crleås8  ý    2  r{FcCstt||ƒpt|ƒƒS©N)rcr{r\)r,rwrrrr. scCsddl}| d¡dkr&t ¡jd}nt ¡jd}dddddd œ}| |d ¡}d }t |t |¡|f¡}z~t j d d gt j t j t j dddœd��F}t  ||j ¡¡}|rÊt | d¡¡WdƒWSWdƒn1sÞ0YWntyüYn0dS)NrÚlr7z-32rrz libc6,x86-64z libc6,64bitz libc6,IA-64)z x86_64-64zppc64-64z sparc64-64zs390x-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%srmrer?)r@rA)ÚstdinrDrCrEr)ÚstructÚcalcsizer$ÚunameÚmachineÚgetrFrGrHrNrOr^rPr_rCr9rVr`rR)r,rr‚Zmach_mapZabi_typeZregexÚprZrrrÚ_findSoname_ldconfigs4û  üB r…c CsÐdt |¡}ddg}tj d¡}|rD| d¡D]}| d|g¡q0| dtjd|g¡d}zZtj |tj tj d d �}|  ¡\}}t  |t  |¡¡} | D]} t| ƒs¦q˜t  | ¡WSWntyÊYn0|S) Nr=Zldz-tZLD_LIBRARY_PATHrsz-Lr>z-l%sT)rCrDÚuniversal_newlines)rGrHr$r%rƒrÚextendÚdevnullrNrOrPÚ communicaterUrVr<Ú Exception) r,rWÚcmdZlibpathrÚresultr„ÚoutÚ_rZr[rrrÚ _findLib_ld,s,  þ  r�cCs t|ƒptt|ƒƒptt|ƒƒSr|)r…rcr\r�)r,rrrr.Gs  ÿ ÿcCsÈddlm}tjdkr:t|jƒt| d¡ƒttdƒƒtjdk�rÄttdƒƒttdƒƒttdƒƒtj d kr°t|  d ¡ƒt|  d ¡ƒt|  d ¡ƒt|  d ¡ƒ�ntj   d¡�rœddlm }tj dk�rtd|dtjƒ›�ƒtd|  d¡›�ƒttdƒƒt|  d¡ƒn*td|dtjƒ›�ƒtd|  d¡›�ƒtdtdƒ›�ƒtd|  tdƒ¡›�ƒtdtdƒ›�ƒtd|  tdƒ¡›�ƒn(t|  d¡ƒt|  d¡ƒttdƒƒdS)Nr)Úcdllrrr/r"r!Úbz2r0z libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemr5)Ú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)Zctypesr�r$r,ÚprintrÚloadr.r ÚplatformZ LoadLibraryrvr’rjZ RTLD_MEMBER)r�r’rrrÚtestOs<            r–Ú__main__)F)r$rIrNr r,rr r.r•Zctypes.macholib.dyldr1r2rvZ ctypes._aixrGrKr<r\rcrlr{r…r�r–Ú__name__rrrrÚs>     2     $ (