a „oeÞ"ã@s¨UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z ddlmZmZmZmZdZdZdZejee e eddfdœd d „ƒZeed œd d „Zeed œdd„Zeeedœdd„Ze dd„¡Zeeefe d<Gdd„de ƒZ!e edœdd„Z"e edœdd„Z#e edœdd„Z$ee eefdœd d!„Z%e &¡e eefdœd"d#„ƒZ'eee!ed$œd%d&„Z(d'd(d)d*œZ)eee ed+œd,d-„Z*dS).éN)ÚDictÚ GeneratorÚIteratorÚ NamedTupleÚOptionalÚTupleé)ÚEIClassÚEIDataÚELFFileÚEMachinel~ii)ÚpathÚreturnc cs\z8t|dƒ�}t|ƒVWdƒn1s,0YWntttfyVdVYn0dS)NÚrb)Úopenr ÚOSErrorÚ TypeErrorÚ ValueError)r Úf©rúHC:\Program Files\Certbot\pkgs\setuptools\_vendor\packaging\_manylinux.pyÚ _parse_elfs  ,r)Ú executablercCstt|ƒ�X}|duoP|jtjkoP|jtjkoP|jtj koP|j t @t koP|j t @t kWdƒS1sf0YdS©N)rÚcapacityr ÚC32Úencodingr ÚLsbÚmachiner ZArmÚflagsÚEF_ARM_ABIMASKÚEF_ARM_ABI_VER5ÚEF_ARM_ABI_FLOAT_HARD©rrrrrÚ_is_linux_armhfs  ÿ þ ý ü úr$cCsXt|ƒ�<}|duo4|jtjko4|jtjko4|jtj kWdƒS1sJ0YdSr) rrr rrr rrr ZI386r#rrrÚ_is_linux_i686+s  ÿ þ ür%)rÚarchrcCs(|dkrt|ƒS|dkr t|ƒS|dvS)NZarmv7lÚi686>Úx86_64Zppc64Zaarch64Zppc64leZs390x)r$r%)rr&rrrÚ_have_compatible_abi5s r)cCsdS)Né2rrrrrÚBór+Ú_LAST_GLIBC_MINORc@seZdZUeed<eed<dS)Ú _GLibCVersionÚmajorÚminorN)Ú__name__Ú __module__Ú __qualname__ÚintÚ__annotations__rrrrr.Es r.)rc CsLz*ttdƒdƒ}|dusJ‚| ¡\}}WnttttfyFYdS0|S)zJ Primary implementation of glibc_version_string using os.confstr. ÚconfstrZCS_GNU_LIBC_VERSIONN)ÚgetattrÚosÚrsplitÚAssertionErrorÚAttributeErrorrr)Zversion_stringÚ_ÚversionrrrÚ_glibc_version_string_confstrJs r>cCsŒz ddl}Wnty YdS0z| d¡}WntyDYdS0z |j}WntydYdS0|j|_|ƒ}t|t ƒsˆ|  d¡}|S)zG Fallback implementation of glibc_version_string using ctypes. rNÚascii) ÚctypesÚ ImportErrorZCDLLrÚgnu_get_libc_versionr;Zc_char_pZrestypeÚ isinstanceÚstrÚdecode)r@Zprocess_namespacerBÚ version_strrrrÚ_glibc_version_string_ctypes]s"       rGcCs tƒp tƒS)z9Returns glibc version string, or None if not using glibc.)r>rGrrrrÚ_glibc_version_string‰srH)rFrcCsBt d|¡}|s&t d|›�t¡dSt| d¡ƒt| d¡ƒfS)a3Parse glibc version. We use a regexp instead of str.split because we want to discard any random junk that might come after the minor version -- this might happen in patched/forked versions of glibc (e.g. Linaro's version of glibc uses version strings like "2.20-2014.11"). See gh-3588. z$(?P[0-9]+)\.(?P[0-9]+)z;Expected glibc version with 2 components major.minor, got: ©éÿÿÿÿrJr/r0)ÚreÚmatchÚwarningsÚwarnÚRuntimeWarningr4Úgroup)rFÚmrrrÚ_parse_glibc_versionŽs ÿýrRcCstƒ}|durdSt|ƒS)NrI)rHrR)rFrrrÚ_get_glibc_version¡srS)Únamer&r=rcCsÒtƒ}||krdSz ddl}Wnty2YdS0t|dƒrh| |d|d|¡}|durdt|ƒSdS|tddƒkrŠt|dƒrŠt|jƒS|tdd ƒkr¬t|d ƒr¬t|jƒS|tdd ƒkrÎt|d ƒrÎt|j ƒSdS) NFrTÚmanylinux_compatiblerééÚmanylinux1_compatibleé Úmanylinux2010_compatibleéÚmanylinux2014_compatible) rSÚ _manylinuxrAÚhasattrrUÚboolr.rXrZr\)rTr&r=Z sys_glibcr]ÚresultrrrÚ_is_compatibleªs,         raZ manylinux2014Z manylinux2010Z manylinux1))rVr[)rVrY)rVrW)Úlinuxr&rc csttj|ƒsdStddƒ}|dvr,tddƒ}ttƒŽ}|g}t|jdddƒD]}t|}| t||ƒ¡qN|D]Š}|j|jkrˆ|j }nd}t|j |dƒD]^}t|j|ƒ} dj | Ž} t | || ƒrÎ|  d| ¡V| t vršt | } t | || ƒrš|  d| ¡VqšqpdS) NrVé>r(r'érrJzmanylinux_{}_{}rb)r)Úsysrr.rSÚranger/r-Úappendr0ÚformatraÚreplaceÚ_LEGACY_MANYLINUX_MAP) rbr&Ztoo_old_glibc2Z current_glibcZglibc_max_listZ glibc_majorZ glibc_minorZ glibc_maxZ min_minorZ glibc_versionÚtagZ legacy_tagrrrÚ platform_tagsÎs.         rl)+Ú collectionsÚ contextlibÚ functoolsr8rKrerMÚtypingrrrrrrZ_elffiler r r r r r!r"ÚcontextmanagerrDrr_r$r%r)Ú defaultdictr-r4r5r.r>rGrHrRÚ lru_cacherSrarjrlrrrrÚs<     ,ú