§
    WŠtj�§  ã                  ó˜  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlZe
rdd	lmZmZ e
s ej        ¦   «         d
k    rddlZddlmZ n G d„ d¦  «        Z e¦   «         Zded<    G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z  G d„ d¦  «        Z!dS )zo
Environment info about Microsoft Compilers.

>>> getfixture('windows_only')
>>> ei = EnvironmentInfo('amd64')
é    )ÚannotationsN)ÚTYPE_CHECKINGÚ	TypedDictÚoverload)Úunique_everseené   )ÚStrPath)Úpy310)ÚLiteralStringÚNotRequiredÚWindows)Úenvironc                  ó   — e Zd ZdZdZdZdZdS )ÚwinregN)Ú__name__Ú
__module__Ú__qualname__Ú
HKEY_USERSÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚHKEY_CLASSES_ROOT© ó    úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/setuptools/msvc.pyr   r   #   s'   € € € € € Øˆ
Ø ÐØ!ÐØ ÐÐÐr   r   zdict[str, str]r   c                  ó¦   — e Zd ZdZ ej        dd¦  «                             ¦   «         Zdd„Ze	dd	„¦   «         Z
dd„Zdd„Zddd„Zddd„Zddd„ZdS )ÚPlatformInfoz�
    Current and Target Architectures information.

    Parameters
    ----------
    arch: str
        Target architecture.
    Úprocessor_architectureÚ ÚarchÚstrÚreturnÚNonec                ó`   — |                      ¦   «                              dd¦  «        | _        d S )NÚx64Úamd64)ÚlowerÚreplacer   )Úselfr   s     r   Ú__init__zPlatformInfo.__init__8   s%   € Ø—J’J‘L”L×(Ò(¨°Ñ8Ô8ˆŒ	ˆ	ˆ	r   c                óV   — | j         | j                              d¦  «        dz   d…         S )zs
        Return Target CPU architecture.

        Return
        ------
        str
            Target CPU
        Ú_r   N)r   Úfind©r(   s    r   Ú
target_cpuzPlatformInfo.target_cpu;   s*   € ð Œy˜œŸš¨Ñ,Ô,¨qÑ0Ð2Ð2Ô3Ð3r   Úboolc                ó   — | j         dk    S )z‡
        Return True if target CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        Úx86©r.   r-   s    r   Útarget_is_x86zPlatformInfo.target_is_x86G   s   € ð Œ %Ò'Ð'r   c                ó   — | j         dk    S )zˆ
        Return True if current CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        r1   ©Úcurrent_cpur-   s    r   Úcurrent_is_x86zPlatformInfo.current_is_x86R   s   € ð Ô 5Ò(Ð(r   Fc                óR   — | j         dk    r|rdn| j         dk    r|rdn	d| j         › �S )uk  
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not 'Â†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '	arget', or '' (see hidex86 parameter)
        r1   r   r%   ú\x64ú\r5   ©r(   Úhidex86r$   s      r   Úcurrent_dirzPlatformInfo.current_dir]   sM   € ð$ Ô  EÒ)Ð)¨gÐ)ð ˆBð Ô  GÒ+Ð+°Ð+ð �à(�dÔ&Ð(Ð(ð	
r   c                óR   — | j         dk    r|rdn| j         dk    r|rdn	d| j         › �S )ar  
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '\current', or '' (see hidex86 parameter)
        r1   r   r%   r9   r:   r2   r;   s      r   Ú
target_dirzPlatformInfo.target_diru   sJ   € ð$ ” 5Ò(Ð(¨WÐ(ð ˆBð ” 7Ò*Ð*¨sÐ*ð �à'�d”oÐ'Ð'ð	
r   c                óŠ   — |rdn| j         }| j        |k    rdn+|                      ¦   «                              dd|› d�¦  «        S )ap  
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current architecture is
            not x86.

        Return
        ------
        str
            subfolder: '' if target architecture is current architecture,
            '\current_target' if not.
        r1   r   r:   r+   )r6   r.   r?   r'   )r(   Úforcex86Úcurrents      r   Ú	cross_dirzPlatformInfo.cross_dir�   sU   € ð  $Ð9�%�%¨Ô)9ˆð Œ 'Ò)Ð)ð ˆBà—’Ñ"Ô"×*Ò*¨4°°g°°°ÑAÔAð	
r   N)r   r    r!   r"   ©r!   r    )r!   r/   )FF©F)r   r   r   Ú__doc__r   Úgetr&   r6   r)   Úpropertyr.   r3   r7   r=   r?   rC   r   r   r   r   r   ,   sç   € € € € € ðð ð �'”+Ð6¸Ñ;Ô;×AÒAÑCÔC€Kð9ð 9ð 9ð 9ð ð	4ð 	4ð 	4ñ „Xð	4ð	(ð 	(ð 	(ð 	(ð	)ð 	)ð 	)ð 	)ð
ð 
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð 
ð 
ð 
r   r   c                  ól  — e Zd ZdZej        ej        ej        ej        fZ	dd„Z
edd„¦   «         Zedd	„¦   «         Zedd
„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd d„¦   «         Zedd!d„¦   «         Zdd!d„Zd"d„ZdS )#ÚRegistryInfozŸ
    Microsoft Visual Studio related registry information.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    Úplatform_infor   r!   r"   c                ó   — || _         d S ©N)Úpi)r(   rK   s     r   r)   zRegistryInfo.__init__¶   s   € ØˆŒˆˆr   r   c                ó   — dS )z€
        Microsoft Visual Studio root registry key.

        Return
        ------
        str
            Registry key
        ÚVisualStudior   r-   s    r   ÚvisualstudiozRegistryInfo.visualstudio¹   s	   € ð ˆ~r   c                óL   — t           j                             | j        d¦  «        S )z
        Microsoft Visual Studio SxS registry key.

        Return
        ------
        str
            Registry key
        ÚSxS)ÚosÚpathÚjoinrQ   r-   s    r   ÚsxszRegistryInfo.sxsÅ   s   € õ Œw�|Š|˜DÔ-¨uÑ5Ô5Ð5r   c                óL   — t           j                             | j        d¦  «        S )z|
        Microsoft Visual C++ VC7 registry key.

        Return
        ------
        str
            Registry key
        ÚVC7©rT   rU   rV   rW   r-   s    r   ÚvczRegistryInfo.vcÑ   ó   € õ Œw�|Š|˜DœH eÑ,Ô,Ð,r   c                óL   — t           j                             | j        d¦  «        S )z
        Microsoft Visual Studio VS7 registry key.

        Return
        ------
        str
            Registry key
        ÚVS7rZ   r-   s    r   ÚvszRegistryInfo.vsÝ   r\   r   c                ó   — dS )zƒ
        Microsoft Visual C++ for Python registry key.

        Return
        ------
        str
            Registry key
        zDevDiv\VCForPythonr   r-   s    r   Úvc_for_pythonzRegistryInfo.vc_for_pythoné   s
   € ð %Ð$r   c                ó   — dS )zq
        Microsoft SDK registry key.

        Return
        ------
        str
            Registry key
        zMicrosoft SDKsr   r-   s    r   Úmicrosoft_sdkzRegistryInfo.microsoft_sdkõ   s
   € ð  Ðr   c                óL   — t           j                             | j        d¦  «        S )z‚
        Microsoft Windows/Platform SDK registry key.

        Return
        ------
        str
            Registry key
        r   ©rT   rU   rV   rc   r-   s    r   Úwindows_sdkzRegistryInfo.windows_sdk  s   € õ Œw�|Š|˜DÔ.°	Ñ:Ô:Ð:r   c                óL   — t           j                             | j        d¦  «        S )z€
        Microsoft .NET Framework SDK registry key.

        Return
        ------
        str
            Registry key
        ÚNETFXSDKre   r-   s    r   Ú	netfx_sdkzRegistryInfo.netfx_sdk  s   € õ Œw�|Š|˜DÔ.°
Ñ;Ô;Ð;r   c                ó   — dS )z€
        Microsoft Windows Kits Roots registry key.

        Return
        ------
        str
            Registry key
        zWindows Kits\Installed Rootsr   r-   s    r   Úwindows_kits_rootszRegistryInfo.windows_kits_roots  s
   € ð /Ð.r   FÚkeyr1   r/   c                ó   — d S rM   r   ©r(   rl   r1   s      r   Ú	microsoftzRegistryInfo.microsoft%  s   € ØQTÐQTr   r    c                ó   — d S rM   r   rn   s      r   ro   zRegistryInfo.microsoft'  s   € Ø=@¸Sr   c                ó„   — | j                              ¦   «         s|rdnd}t          j                             d|d|¦  «        S )a  
        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: bool
            Force x86 software registry.

        Return
        ------
        str
            Registry key
        r   ÚWow6432NodeÚSoftwareÚ	Microsoft)rN   r7   rT   rU   rV   )r(   rl   r1   Únode64s       r   ro   zRegistryInfo.microsoft)  s?   € ð  ”w×-Ò-Ñ/Ô/ÐI°3ÐI��¸MˆÝŒw�|Š|˜J¨°¸SÑAÔAÐAr   Únameú
str | Nonec           	     ó  — t           j        }t           j        }t           j        }| j        }| j        D ]Ò}d}	  || ||¦  «        d|¦  «        }nV# t          $ rI | j                             ¦   «         s+	  || ||d¦  «        d|¦  «        }n# t          $ r Y Y Œgw xY wY ŒmY nw xY w	 t          j	        ||¦  «        d         |r ||¦  «         c S c S # t          $ r Y nw xY w	 |r ||¦  «         ŒÀ# |r ||¦  «         w w xY wdS )a%  
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str | None
            value
        Nr   T)
r   ÚKEY_READÚOpenKeyÚCloseKeyro   ÚHKEYSÚOSErrorrN   r7   ÚQueryValueEx)	r(   rl   rv   Úkey_readÚopenkeyÚclosekeyÚmsÚhkeyÚbkeys	            r   ÚlookupzRegistryInfo.lookup<  s‰  € õ  ”?ˆÝ”.ˆÝ”?ˆØŒ^ˆØ”Jð 	#ð 	#ˆDØˆDð	Ø�w˜t R R¨¡W¤W¨a°Ñ:Ô:��øÝð ð ð Ø”w×-Ò-Ñ/Ô/ð ð!Ø&˜w t¨R¨R°°T©]¬]¸A¸xÑHÔH˜˜øÝ"ð !ð !ð !Ø ˜˜ð!øøøð �Hð	 ˜ðøøøð#ÝÔ*¨4°Ñ6Ô6°qÔ9ð ð #Ø�H˜T‘N”N�N�N�N�Nð#ð #ð #øõ ð ð ð Ø�ðøøøØàð #Ø�H˜T‘N”N�Nøøð ð #Ø�H˜T‘N”N�N�Nð#øøøàˆtsY   ¸AÁ#B#Á4BÂB#Â
BÂB#ÂBÂB#Â"B#Â'CÃ
C!ÃC3Ã C!Ã!C3Ã3DN)rK   r   r!   r"   )r!   r   rE   )rl   r   r1   r/   r!   r   )rl   r    r1   r/   r!   r    )rl   r    rv   r    r!   rw   )r   r   r   rF   r   r   r   r   r   r|   r)   rH   rQ   rW   r[   r_   ra   rc   rf   ri   rk   r   ro   r…   r   r   r   rJ   rJ   ¥   sÙ  € € € € € ðð ð 	ÔØÔ ØÔ!ØÔ ð	€Eð ð  ð  ð  ð ð	ð 	ð 	ñ „Xð	ð ð	6ð 	6ð 	6ñ „Xð	6ð ð	-ð 	-ð 	-ñ „Xð	-ð ð	-ð 	-ð 	-ñ „Xð	-ð ð	%ð 	%ð 	%ñ „Xð	%ð ð	 ð 	 ð 	 ñ „Xð	 ð ð	;ð 	;ð 	;ñ „Xð	;ð ð	<ð 	<ð 	<ñ „Xð	<ð ð	/ð 	/ð 	/ñ „Xð	/ð ØTÐTÐTÐTñ „XØTØØ@Ð@Ð@Ð@ñ „XØ@ðBð Bð Bð Bð Bð&'ð 'ð 'ð 'ð 'ð 'r   rJ   c                  óF  — e Zd ZdZ ej        dd¦  «        Z ej        dd¦  «        Z ej        de¦  «        Z	 d.d/d„Z	d„ Z
d0d„Zd1d„Zed„ ¦   «         Zed2d„¦   «         Zed2d„¦   «         Zd„ Zd„ Zed3d„¦   «         Zed2d„¦   «         Zed2d„¦   «         Zed4d„¦   «         Zed2d„¦   «         Zed4d „¦   «         Zed2d!„¦   «         Zed3d"„¦   «         Zed4d#„¦   «         Zed2d$„¦   «         Zed2d%„¦   «         Zed5d'„¦   «         Zed5d(„¦   «         Z d5d)„Z!ed6d7d-„¦   «         Z"dS )8Ú
SystemInfozê
    Microsoft Windows and Visual Studio related system information.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    ÚWinDirr   ÚProgramFileszProgramFiles(x86)NÚregistry_inforJ   Úvc_verúfloat | Noner!   r"   c                ó¬   — || _         | j         j        | _        |                      ¦   «         | _        |p|                      ¦   «         x| _        | _        d S rM   )ÚrirN   Úfind_programdata_vs_versÚknown_vs_pathsÚ_find_latest_available_vs_verÚvs_verr‹   )r(   rŠ   r‹   s      r   r)   zSystemInfo.__init__x  sO   € ð  ˆŒØ”'”*ˆŒà"×;Ò;Ñ=Ô=ˆÔð %+Ð$R¨d×.PÒ.PÑ.RÔ.RÐRˆŒ�d”k�k�kr   c                óê   — |                       ¦   «         }|s&| j        st          j                             d¦  «        ‚t          |¦  «        }|                     | j        ¦  «         t          |¦  «        S )zm
        Find the latest VC version

        Return
        ------
        float
            version
        z%No Microsoft Visual C++ version found)Úfind_reg_vs_versr�   Ú	distutilsÚerrorsÚDistutilsPlatformErrorÚsetÚupdateÚmax)r(   Úreg_vc_versÚvc_verss      r   r‘   z(SystemInfo._find_latest_available_vs_verƒ  su   € ð ×+Ò+Ñ-Ô-ˆàð 	˜tÔ2ð 	ÝÔ"×9Ò9Ø7ñô ð õ �kÑ"Ô"ˆØ�Š�tÔ*Ñ+Ô+Ð+Ý�7‰|Œ|Ðr   úlist[float]c           
     ó²  — | j         j        }| j         j        | j         j        | j         j        f}g }t          j        | j         j        |¦  «        D �]w\  }}	 t          j	        | ||¦  «        dt          j
        ¦  «        }n# t          $ r Y Œ>w xY w|5  t          j        |¦  «        \  }}}	t          |¦  «        D ]t}
t          j        t           ¦  «        5  t#          t          j        ||
¦  «        d         ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œut          |¦  «        D ]n}
t          j        t           ¦  «        5  t#          t          j        ||
¦  «        ¦  «        }||vr|                     |¦  «         ddd¦  «         n# 1 swxY w Y   Œo	 ddd¦  «         n# 1 swxY w Y   �Œyt+          |¦  «        S )z˜
        Find Microsoft Visual Studio versions available in registry.

        Return
        ------
        list of float
            Versions
        r   N)rŽ   ro   r[   ra   r_   Ú	itertoolsÚproductr|   r   rz   ry   r}   ÚQueryInfoKeyÚrangeÚ
contextlibÚsuppressÚ
ValueErrorÚfloatÚ	EnumValueÚappendÚEnumKeyÚsorted)r(   r‚   ÚvckeysÚvs_versrƒ   rl   r„   ÚsubkeysÚvaluesr+   ÚiÚvers               r   r”   zSystemInfo.find_reg_vs_vers—  sˆ  € ð ŒWÔˆØ”'”*˜dœgÔ3°T´W´ZÐ@ˆØˆÝ"Ô*¨4¬7¬=¸&ÑAÔAð 	0ñ 	0‰IˆD�#ðÝ”~ d¨B¨B¨s©G¬G°Q½¼ÑHÔH��øÝð ð ð Ø�ðøøøàð 0ð 0Ý%+Ô%8¸Ñ%>Ô%>Ñ"�˜ Ý˜v™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥FÔ$4°T¸1Ñ$=Ô$=¸aÔ$@ÑAÔA˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øõ ˜w™œð 0ð 0�AÝ#Ô,­ZÑ8Ô8ð 0ð 0Ý#¥F¤N°4¸Ñ$;Ô$;Ñ<Ô<˜Ø gÐ-Ð-Ø#ŸNšN¨3Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð0ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ùõ �g‰ŒÐsn   Á*BÂ
BÂBÂAF=ÃAD&	ÄF=Ä&D*Ä*F=Ä-D*Ä..F=Å<F$	ÆF=Æ$F(Æ(F=Æ+F(Æ,F=Æ=G	ÇG	údict[float, str]c                ó  — i }d}	 t          j        |¦  «        }n# t          $ r |cY S w xY w|D ]Ñ}	 t           j                             ||d¦  «        }t          |dd¬¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   |d         }t          j        t           j                             |d¦  «        ¦  «         |||                      |d	         ¦  «        <   Œ»# t          t          f$ r Y ŒÎw xY w|S )
zé
        Find Visual studio 2017+ versions from information in
        "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances".

        Return
        ------
        dict
            float version as key, path as value.
        z9C:\ProgramData\Microsoft\VisualStudio\Packages\_Instancesz
state.jsonÚrtzutf-8)ÚencodingNÚinstallationPathúVC\Tools\MSVCÚinstallationVersion)
rT   Úlistdirr}   rU   rV   ÚopenÚjsonÚloadÚ_as_float_versionÚKeyError)	r(   Úvs_versionsÚinstances_dirÚhashed_namesrv   Ú
state_pathÚ
state_fileÚstateÚvs_paths	            r   r�   z#SystemInfo.find_programdata_vs_vers¶  sq  € ð )+ˆØTˆð	Ýœ: mÑ4Ô4ˆLˆLøåð 	ð 	ð 	àÐÐÐð	øøøð !ð 	ð 	ˆDðåœWŸ\š\¨-¸¸|ÑLÔL�
Ý˜* d°WÐ=Ñ=Ô=ð 2ÀÝ œI jÑ1Ô1�Eð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2àÐ 2Ô3�õ ”
�2œ7Ÿ<š<¨Ð1AÑBÔBÑCÔCÐCð ð ˜D×2Ò2°5Ð9NÔ3OÑPÔPÑQÐQøõ �XÐ&ð ð ð à�ðøøøð ÐsB   † ›*©*²3C*Á%BÁ:C*ÂB
	Â
C*ÂB
	ÂAC*Ã*C>Ã=C>c                ó|   — t          d                     |                      d¦  «        dd…         ¦  «        ¦  «        S )zç
        Return a string version as a simplified float version (major.minor)

        Parameters
        ----------
        version: str
            Version.

        Return
        ------
        float
            version
        ú.Né   )r¦   rV   Úsplit)Úversions    r   r¼   zSystemInfo._as_float_versionà  s3   € õ �S—X’X˜gŸmšm¨CÑ0Ô0°°!°Ô4Ñ5Ô5Ñ6Ô6Ð6r   r    c                óº   — t           j                             | j        d| j        d›�¦  «        }| j                             | j        j        | j        d›¦  «        p|S )zp
        Microsoft Visual Studio directory.

        Return
        ------
        str
            path
        úMicrosoft Visual Studio ú0.1f)rT   rU   rV   ÚProgramFilesx86r’   rŽ   r…   r_   )r(   Údefaults     r   ÚVSInstallDirzSystemInfo.VSInstallDirñ  sX   € õ ”'—,’,ØÔ Ð"O¸T¼[Ð"OÐ"OÐ"Oñ
ô 
ˆð
 Œw�~Š~˜dœgœj¨T¬[Ð*?Ð*?Ñ@Ô@ÐKÀGÐKr   c                óÖ   — |                       ¦   «         p|                      ¦   «         }t          j                             |¦  «        s!d}t
          j                             |¦  «        ‚|S )zm
        Microsoft Visual C++ directory.

        Return
        ------
        str
            path
        z(Microsoft Visual C++ directory not found)Ú	_guess_vcÚ_guess_vc_legacyrT   rU   Úisdirr•   r–   r—   )r(   rU   Úmsgs      r   ÚVCInstallDirzSystemInfo.VCInstallDir  s[   € ð �~Š~ÑÔÐ: 4×#8Ò#8Ñ#:Ô#:ˆåŒw�}Š}˜TÑ"Ô"ð 	?Ø<ˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>àˆr   c                óŒ  — | j         dk    rdS 	 | j        | j                  }n# t          $ r
 | j        }Y nw xY wt          j                             |d¦  «        }	 t	          j        |¦  «        d         }|                      |¦  «        | _	        t          j                             ||¦  «        S # t          t          f$ r Y dS w xY w)zl
        Locate Visual C++ for VS2017+.

        Return
        ------
        str
            path
        ç      ,@r   r¶   éÿÿÿÿ)r’   r�   r½   rÏ   rT   rU   rV   r¸   r¼   r‹   r}   Ú
IndexError)r(   Úvs_dirÚguess_vcr‹   s       r   rÑ   zSystemInfo._guess_vc  sÖ   € ð Œ;˜$ÒÐØ�2ð	'àÔ(¨¬Ô5ˆFˆFøÝð 	'ð 	'ð 	'àÔ&ˆFˆFˆFð	'øøøõ ”7—<’< Ð(8Ñ9Ô9ˆð	å”Z Ñ)Ô)¨"Ô-ˆFØ×0Ò0°Ñ8Ô8ˆDŒKÝ”7—<’< ¨&Ñ1Ô1Ð1øÝ�Ð$ð 	ð 	ð 	Ø�2�2ð	øøøs   �" ¢6µ6ÁAB. Â.CÃCc                óœ  — t           j                             | j        d| j        d›d�¦  «        }t           j                             | j        j        | j        d›¦  «        }| j                             |d¦  «        }|r t           j                             |d¦  «        n|}| j                             | j        j        | j        d›¦  «        p|S )z{
        Locate Visual C++ for versions prior to 2017.

        Return
        ------
        str
            path
        rË   rÌ   z\VCÚ
installdirÚVC)	rT   rU   rV   rÍ   r’   rŽ   ra   r…   r[   )r(   rÎ   Úreg_pathÚ	python_vcÚ
default_vcs        r   rÒ   zSystemInfo._guess_vc_legacy3  s³   € õ ”'—,’,ØÔ Ø=¨¬Ð=Ð=Ð=Ð=ñ
ô 
ˆõ ”7—<’< ¤Ô 5¸$¼+Ð7LÐ7LÑMÔMˆØ”G—N’N 8¨\Ñ:Ô:ˆ	Ø6?ÐL•R”W—\’\ )¨TÑ2Ô2Ð2ÀWˆ
ð Œw�~Š~˜dœgœj¨T¬[Ð*?Ð*?Ñ@Ô@ÐNÀJÐNr   útuple[LiteralString, ...]c                óˆ   — | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         dk    rdS | j         d	k    rd
S dS )z—
        Microsoft Windows SDK versions for specified MSVC++ version.

        Return
        ------
        tuple of str
            versions
        ç      "@)z7.0z6.1z6.0aç      $@)z7.1z7.0aç      &@)z8.0z8.0aç      (@)ú8.1z8.1ar×   )z10.0rè   r   ©r’   r-   s    r   ÚWindowsSdkVersionzSystemInfo.WindowsSdkVersionI  sd   € ð Œ;˜#ÒÐØ'Ð'ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=ØŒ[˜DÒ Ð Ø �=Øˆrr   c                ór   — |                       t          j                             | j        d¦  «        ¦  «        S )zt
        Microsoft Windows SDK last version.

        Return
        ------
        str
            version
        Úlib)Ú_use_last_dir_namerT   rU   rV   ÚWindowsSdkDirr-   s    r   ÚWindowsSdkLastVersionz SystemInfo.WindowsSdkLastVersion_  s+   € ð ×&Ò&¥r¤w§|¢|°DÔ4FÈÑ'NÔ'NÑOÔOÐOr   c                ó4  — d}| j         D ]N}t          j                             | j        j        d|› �¦  «        }| j                             |d¦  «        }|r nŒO|rt          j                             |¦  «        snt          j                             | j        j        | j	        d›¦  «        }| j                             |d¦  «        }|r t          j                             |d¦  «        }|rt          j                             |¦  «        sr| j         D ]j}|d| 
                    d¦  «        …         }d	|› �}t          j                             | j        |¦  «        }t          j                             |¦  «        r|}Œk|rt          j                             |¦  «        sU| j         D ]M}d
|› �}t          j                             | j        |¦  «        }t          j                             |¦  «        r|}ŒN|s%t          j                             | j        d¦  «        }|S )zn
        Microsoft Windows SDK directory.

        Return
        ------
        str
            path
        r   ÚvÚinstallationfolderrÌ   rÝ   ÚWinSDKNrÆ   zMicrosoft SDKs\Windows Kits\zMicrosoft SDKs\Windows\vÚPlatformSDK)rê   rT   rU   rV   rŽ   rf   r…   rÓ   ra   r‹   Úrfindr‰   rÕ   )r(   Úsdkdirr°   ÚlocrU   Úinstall_baseÚintverÚds           r   rî   zSystemInfo.WindowsSdkDirk  sô  € ð  ˆØÔ)ð 	ð 	ˆCå”'—,’,˜tœwÔ2°I¸°I°IÑ>Ô>ˆCØ”W—^’^ CÐ)=Ñ>Ô>ˆFØð Ø�ðàð 	>�RœWŸ]š]¨6Ñ2Ô2ð 	>å”7—<’< ¤Ô 5¸$¼+Ð7LÐ7LÑMÔMˆDØœ7Ÿ>š>¨$°Ñ=Ô=ˆLØð >ÝœŸš l°HÑ=Ô=�Øð 	�RœWŸ]š]¨6Ñ2Ô2ð 	àÔ-ð ð �ØÐ-˜sŸyšy¨™~œ~Ð-Ô.�Ø?°vÐ?Ð?�Ý”G—L’L Ô!2°DÑ9Ô9�Ý”7—=’= Ñ#Ô#ð Ø�FøØð 	�RœWŸ]š]¨6Ñ2Ô2ð 	àÔ-ð ð �Ø8°3Ð8Ð8�Ý”G—L’L Ô!2°DÑ9Ô9�Ý”7—=’= Ñ#Ô#ð Ø�FøØð 	Då”W—\’\ $Ô"3°]ÑCÔCˆFØˆr   rw   c                ó
  — | j         dk    rd}d}nAd}| j         dk    rdnd}| j                             d|¬¦  «                             d	d
¦  «        }d|› d|› �}g }| j         dk    r9| j        D ]1}|t
          j                             | j        j	        ||¦  «        gz  }Œ2| j
        D ]5}|t
          j                             | j        j        d|› d�|¦  «        gz  }Œ6|D ]#}| j                             |d¦  «        }|r|c S Œ$dS )z€
        Microsoft Windows SDK executable directory.

        Return
        ------
        str | None
            path
        ræ   é#   r   é(   rç   TF)r$   r<   r:   ú-zWinSDK-NetFxÚToolsr×   rñ   ÚArò   N)r’   rN   r=   r'   ÚNetFxSdkVersionrT   rU   rV   rŽ   ri   rê   rf   r…   )	r(   Únetfxverr   r<   ÚfxÚregpathsr°   rU   Úexecpaths	            r   ÚWindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePath–  sK  € ð Œ;˜$ÒÐØˆHØˆDˆDàˆHØ"œk¨TÒ1Ð1�d�d°uˆGØ”7×&Ò&¨4¸Ð&ÑAÔA×IÒIÈ$ÐPSÑTÔTˆDØ1˜HÐ1Ð1¨4Ð1Ð1ˆð ˆØŒ;˜$ÒÐØÔ+ð Gð G�Ø�RœWŸ\š\¨$¬'Ô*;¸SÀ"ÑEÔEÐFÑF��àÔ)ð 	Lð 	LˆCØ�œŸš d¤gÔ&9¸:¸s¸:¸:¸:ÀrÑJÔJÐKÑKˆHˆHð ð 	 ð 	 ˆDØ”w—~’~ dÐ,@ÑAÔAˆHØð  Ø���ð ð ˆtr   c                ó¢   — t           j                             | j        j        | j        d›d�¦  «        }| j                             |d¦  «        pdS )zl
        Microsoft Visual F# directory.

        Return
        ------
        str
            path
        rÌ   z	\Setup\F#Ú
productdirr   )rT   rU   rV   rŽ   rQ   r’   r…   )r(   rU   s     r   ÚFSharpInstallDirzSystemInfo.FSharpInstallDir»  sG   € õ Œw�|Š|˜DœGÔ0°d´kÐ2QÐ2QÐ2QÐ2QÑRÔRˆØŒw�~Š~˜d LÑ1Ô1Ð7°RÐ7r   c                óŠ   — | j         dk    rdnd}|D ]0}| j                             | j        j        d|› �¦  «        }|r|c S Œ1dS )z{
        Microsoft Universal CRT SDK directory.

        Return
        ------
        str | None
            path
        r×   )Ú10Ú81r   ÚkitsrootN)r’   rŽ   r…   rk   )r(   Úversr°   rö   s       r   ÚUniversalCRTSdkDirzSystemInfo.UniversalCRTSdkDirÈ  sj   € ð  $œ{¨dÒ2Ð2ˆ|ˆ|¸ˆð ð 	ð 	ˆCØ”W—^’^ D¤GÔ$>Ð@PÈ3Ð@PÐ@PÑQÔQˆFØð Ø���ðð ˆtr   c                óÄ   — 	 |                       t          j                             | j        d¦  «        ¦  «        S # t
          $ r}t          j        |d¦  «         ‚ d}~ww xY w)z€
        Microsoft Universal C Runtime SDK last version.

        Return
        ------
        str
            version
        rì   úCannot find UniversalCRTSdkDirN)rí   rT   rU   rV   r  Ú	TypeErrorr
   Úadd_note)r(   Úexs     r   ÚUniversalCRTSdkLastVersionz%SystemInfo.UniversalCRTSdkLastVersionÝ  sd   € ð	Ø×*Ò*­2¬7¯<ª<¸Ô8OÐQVÑ+WÔ+WÑXÔXÐXøÝð 	ð 	ð 	ÝŒN˜2Ð?Ñ@Ô@Ð@Øøøøøð	øøøs   ‚7: º
AÁAÁAc                ó    — | j         dk    rdndS )z�
        Microsoft .NET Framework SDK versions.

        Return
        ------
        tuple of str
            versions
        r×   )	z4.7.2z4.7.1z4.7z4.6.2z4.6.1z4.6z4.5.2z4.5.1z4.5r   ré   r-   s    r   r  zSystemInfo.NetFxSdkVersioní  s"   € ð Œ{˜dÒ"Ð"ð XÐWàð	
r   c                ó°   — d}| j         D ]K}t          j                             | j        j        |¦  «        }| j                             |d¦  «        }|r nŒL|S )z|
        Microsoft .NET Framework SDK directory.

        Return
        ------
        str | None
            path
        r   Úkitsinstallationfolder)r  rT   rU   rV   rŽ   ri   r…   )r(   rö   r°   r÷   s       r   ÚNetFxSdkDirzSystemInfo.NetFxSdkDirþ  sb   € ð  ˆØÔ'ð 	ð 	ˆCÝ”'—,’,˜tœwÔ0°#Ñ6Ô6ˆCØ”W—^’^ CÐ)AÑBÔBˆFØð Ø�ðàˆr   c                óš   — t           j                             | j        d¦  «        }| j                             | j        j        d¦  «        p|S )zw
        Microsoft .NET Framework 32bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\FrameworkÚframeworkdir32©rT   rU   rV   rˆ   rŽ   r…   r[   ©r(   Úguess_fws     r   ÚFrameworkDir32zSystemInfo.FrameworkDir32  s>   € õ ”7—<’< ¤Ð-GÑHÔHˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   c                óš   — t           j                             | j        d¦  «        }| j                             | j        j        d¦  «        p|S )zw
        Microsoft .NET Framework 64bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework64Úframeworkdir64r  r  s     r   ÚFrameworkDir64zSystemInfo.FrameworkDir64   s>   € õ ”7—<’< ¤Ð-IÑJÔJˆð Œw�~Š~˜dœgœjÐ*:Ñ;Ô;ÐG¸xÐGr   útuple[str, ...]c                ó,   — |                       d¦  «        S )zƒ
        Microsoft .NET Framework 32bit versions.

        Return
        ------
        tuple of str
            versions
        é    ©Ú_find_dot_net_versionsr-   s    r   ÚFrameworkVersion32zSystemInfo.FrameworkVersion320  ó   € ð ×*Ò*¨2Ñ.Ô.Ð.r   c                ó,   — |                       d¦  «        S )zƒ
        Microsoft .NET Framework 64bit versions.

        Return
        ------
        tuple of str
            versions
        é@   r&  r-   s    r   ÚFrameworkVersion64zSystemInfo.FrameworkVersion64<  r)  r   c                ód  — | j                              | j         j        d|› �¦  «        }t          | d|› �¦  «        }|p|                      |d¦  «        pd}| j        dk    r|dfS | j        dk    r&|                     ¦   «         dd	…         d
k    rdn|dfS | j        dk    rdS | j        dk    rdS dS )zê
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.

        Return
        ------
        tuple of str
            versions
        ÚframeworkverÚFrameworkDirrñ   r   rç   zv4.0rå   NrÇ   Úv4z
v4.0.30319úv3.5rä   )r1  ú
v2.0.50727g       @)zv3.0r2  r   )rŽ   r…   r[   Úgetattrrí   r’   r&   )r(   ÚbitsÚreg_verÚdot_net_dirr°   s        r   r'  z!SystemInfo._find_dot_net_versionsH  s×   € ð ”'—.’. ¤¤Ð-B¸DÐ-BÐ-BÑCÔCˆÝ˜dÐ$9°4Ð$9Ð$9Ñ:Ô:ˆØÐH˜×0Ò0°¸cÑBÔBÐHÀbˆð Œ;˜$ÒÐØ˜�;ÐØŒ[˜DÒ Ð Ø#&§9¢9¡;¤;¨r°¨r¤?°dÒ#:Ð#:�<�<ÀÀVÐKÐKØŒ[˜CÒÐØ'Ð'ØŒ[˜CÒÐØ'Ð'Øˆrr   rU   r	   Úprefixc                ó‚   ‡ ‡— ˆ ˆfd„t          t          j        ‰ ¦  «        ¦  «        D ¦   «         }t          |d¦  «        S )a-  
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: StrPath
            Use dirs in this path
        prefix: str
            Use only dirs starting by this prefix

        Return
        ------
        str
            name
        c              3  óÀ   •K  — | ]X}t           j                             t           j                             ‰|¦  «        ¦  «        ¯?|                     ‰¦  «        ¯T|V — ŒYd S rM   )rT   rU   rÓ   rV   Ú
startswith)Ú.0Údir_namerU   r7  s     €€r   ú	<genexpr>z0SystemInfo._use_last_dir_name.<locals>.<genexpr>w  ss   øè è € ð 
ð 
àÝŒw�}Š}�RœWŸ\š\¨$°Ñ9Ô9Ñ:Ô:ð
ð ×#Ò# FÑ+Ô+ð	
Øð
ð 
ð 
ð 
ð 
ð 
r   r   )ÚreversedrT   r¸   Únext)rU   r7  Úmatching_dirss   `` r   rí   zSystemInfo._use_last_dir_namef  sU   øø€ ð"
ð 
ð 
ð 
ð 
å$¥R¤Z°Ñ%5Ô%5Ñ6Ô6ð
ñ 
ô 
ˆõ �M 2Ñ&Ô&Ð&r   rM   )rŠ   rJ   r‹   rŒ   r!   r"   )r!   r�   )r!   r±   rD   )r!   râ   ©r!   rw   )r!   r#  )r   )rU   r	   r7  r    r!   r    )#r   r   r   rF   r   rG   rˆ   r‰   rÍ   r)   r‘   r”   r�   Ústaticmethodr¼   rH   rÏ   rÕ   rÑ   rÒ   rê   rï   rî   r  r	  r  r  r  r  r  r"  r(  r,  r'  rí   r   r   r   r‡   r‡   f  s  € € € € € ð	ð 	ð ˆWŒ[˜ 2Ñ&Ô&€FØ�7”;˜~¨rÑ2Ô2€LØ!�g”kÐ"5°|ÑDÔD€Oð CGð	Sð 	Sð 	Sð 	Sð 	Sðð ð ð(ð ð ð ð>(ð (ð (ð (ðT ð7ð 7ñ „\ð7ð  ðLð Lð Lñ „XðLð" ðð ð ñ „Xðð"ð ð ð<Oð Oð Oð, ðð ð ñ „Xðð* ð	Pð 	Pð 	Pñ „Xð	Pð ð(ð (ð (ñ „Xð(ðT ð"ð "ð "ñ „Xð"ðH ð
8ð 
8ð 
8ñ „Xð
8ð ðð ð ñ „Xðð( ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð  ðð ð ñ „Xðð" ðHð Hð Hñ „XðHð ðHð Hð Hñ „XðHð ð	/ð 	/ð 	/ñ „Xð	/ð ð	/ð 	/ð 	/ñ „Xð	/ðð ð ð ð< ð'ð 'ð 'ð 'ñ „\ð'ð 'ð 'r   r‡   c                  óB   — e Zd ZU ded<   ded<   ded<   ded<   ded<   dS )	Ú_EnvironmentDictr    Úincluderì   ÚlibpathrU   zNotRequired[str | None]Úpy_vcruntime_redistN)r   r   r   Ú__annotations__r   r   r   rD  rD  €  sB   € € € € € € Ø€L€L�LØ€H€H�HØ€L€L�LØ€I€I�IØ0Ð0Ð0Ñ0Ð0Ð0r   rD  c                  óL  — e Zd ZdZd)d*d„Zed„ ¦   «         Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed+d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed,d„¦   «         Zed,d„¦   «         Zed+d„¦   «         Zed „ ¦   «         Zed-d"„¦   «         Zd.d/d'„Zd(„ Z dS )0ÚEnvironmentInfoaY  
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.X.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    Nr   r!   r"   c                óì   — t          |¦  «        | _        t          | j        ¦  «        | _        t	          | j        |¦  «        | _        | j        |k     r!d}t          j         	                    |¦  «        ‚d S )Nz.No suitable Microsoft Visual C++ version found)
r   rN   rJ   rŽ   r‡   Úsir‹   r•   r–   r—   )r(   r   r‹   Ú
vc_min_verÚerrs        r   r)   zEnvironmentInfo.__init__   sf   € Ý˜tÑ$Ô$ˆŒÝ˜tœwÑ'Ô'ˆŒÝ˜TœW fÑ-Ô-ˆŒàŒ;˜Ò#Ð#ØBˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>ð $Ð#r   c                ó   — | j         j        S )zk
        Microsoft Visual Studio.

        Return
        ------
        float
            version
        )rL  r’   r-   s    r   r’   zEnvironmentInfo.vs_ver©  ó   € ð ŒwŒ~Ðr   c                ó   — | j         j        S )zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )rL  r‹   r-   s    r   r‹   zEnvironmentInfo.vc_verµ  rP  r   c                ó    ‡ — ddg}‰ j         dk    r1‰ j                             dd¬¦  «        }|dgz  }|dgz  }|d|› �gz  }ˆ fd„|D ¦   «         S )	zu
        Microsoft Visual Studio Tools.

        Return
        ------
        list of str
            paths
        zCommon7\IDEzCommon7\Toolsr×   T©r<   r$   z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance Toolsc                ód   •— g | ],}t           j                             ‰j        j        |¦  «        ‘Œ-S r   ©rT   rU   rV   rL  rÏ   ©r;  rU   r(   s     €r   ú
<listcomp>z+EnvironmentInfo.VSTools.<locals>.<listcomp>Ó  ó.   ø€ ÐKÐKÐK¸T•”—’˜TœWÔ1°4Ñ8Ô8ÐKÐKÐKr   )r’   rN   r=   )r(   ÚpathsÚarch_subdirs   `  r   ÚVSToolszEnvironmentInfo.VSToolsÁ  sƒ   ø€ ð  Ð!1Ð2ˆàŒ;˜$ÒÐØœ'×-Ò-°dÀÐ-ÑEÔEˆKØÐJÐKÑKˆEØÐ5Ð6Ñ6ˆEØÐC°kÐCÐCÐDÑDˆEàKÐKÐKÐKÀUÐKÑKÔKÐKr   c                óª   — t           j                             | j        j        d¦  «        t           j                             | j        j        d¦  «        gS )z’
        Microsoft Visual C++ & Microsoft Foundation Class Includes.

        Return
        ------
        list of str
            paths
        ÚIncludezATLMFC\Include©rT   rU   rV   rL  rÕ   r-   s    r   Ú
VCIncludeszEnvironmentInfo.VCIncludesÕ  s?   € õ ŒG�LŠL˜œÔ-¨yÑ9Ô9ÝŒG�LŠL˜œÔ-Ð/@ÑAÔAð
ð 	
r   c                óà   ‡ — ‰ j         dk    r‰ j                             d¬¦  «        }n‰ j                             d¬¦  «        }d|› �d|› �g}‰ j         dk    r	|d|› �gz  }ˆ fd	„|D ¦   «         S )
z“
        Microsoft Visual C++ & Microsoft Foundation Class Libraries.

        Return
        ------
        list of str
            paths
        ç      .@T©r$   ©r<   ÚLibz
ATLMFC\Libr×   z	Lib\storec                ód   •— g | ],}t           j                             ‰j        j        |¦  «        ‘Œ-S r   r^  rV  s     €r   rW  z/EnvironmentInfo.VCLibraries.<locals>.<listcomp>÷  rX  r   )r’   rN   r?   )r(   rZ  rY  s   `  r   ÚVCLibrarieszEnvironmentInfo.VCLibrariesä  sœ   ø€ ð Œ;˜$ÒÐØœ'×,Ò,°Ð,Ñ6Ô6ˆKˆKàœ'×,Ò,°TÐ,Ñ:Ô:ˆKØ$�{Ð$Ð$Ð&A°KÐ&AÐ&AÐBˆàŒ;˜$ÒÐØÐ0 ;Ð0Ð0Ð1Ñ1ˆEàKÐKÐKÐKÀUÐKÑKÔKÐKr   c                ór   — | j         dk     rg S t          j                             | j        j        d¦  «        gS )z‡
        Microsoft Visual C++ store references Libraries.

        Return
        ------
        list of str
            paths
        r×   zLib\store\references)r’   rT   rU   rV   rL  rÕ   r-   s    r   ÚVCStoreRefszEnvironmentInfo.VCStoreRefsù  s5   € ð Œ;˜ÒÐØˆIÝ”—’˜TœWÔ1Ð3JÑKÔKÐLÐLr   c                ó  — | j         }t          j                             |j        d¦  «        g}| j        dk    rdnd}| j                             |¦  «        }|r,|t          j                             |j        d|› �¦  «        gz  }| j        dk    rId| j                             d¬¦  «        › �}|t          j                             |j        |¦  «        gz  }�n/| j        dk    rû| j        j	         
                    d	d
¦  «                             ¦   «         }t          j                             dd|› d�¦  «        }|t          j                             |j        || j                             d¬¦  «        z  ¦  «        gz  }| j        j	        | j        j        k    rE|t          j                             |j        || j                             d¬¦  «        z  ¦  «        gz  }n)|t          j                             |j        d¦  «        gz  }|S )aÛ  
        Microsoft Visual C++ Tools.

        Return
        ------
        list of str
            paths

        When host CPU is ARM, the tools should be found for ARM.

        >>> getfixture('windows_only')
        >>> mp = getfixture('monkeypatch')
        >>> mp.setattr(PlatformInfo, 'current_cpu', 'arm64')
        >>> ei = EnvironmentInfo(arch='irrelevant')
        >>> paths = ei.VCTools
        >>> any('HostARM64' in path for path in paths)
        True
        Ú
VCPackagesrå   TFÚBinr×   rc  ra  r%   r$   ÚbinÚHostz%srb  )rL  rT   rU   rV   rÕ   r’   rN   rC   r=   r6   r'   Úupperr?   r.   )r(   rL  ÚtoolsrA   rZ  rU   Úhost_idÚhost_dirs           r   ÚVCToolszEnvironmentInfo.VCTools  sÞ  € ð( ŒWˆÝ”—’˜bœo¨|Ñ<Ô<Ð=ˆàœ;¨$Ò.Ð.�4�4°EˆØ”g×'Ò'¨Ñ1Ô1ˆØð 	JØ•b”g—l’l 2¤?Ð4G¸+Ð4GÐ4GÑHÔHÐIÑIˆEàŒ;˜$ÒÐØ<˜œ×,Ò,°TÐ,Ñ:Ô:Ð<Ð<ˆDØ•b”g—l’l 2¤?°DÑ9Ô9Ð:Ñ:ˆE‰EàŒ[˜DÒ Ð Ø”gÔ)×1Ò1°'¸5ÑAÔA×GÒGÑIÔIˆGÝ”w—|’| EÐ+=°'Ð+=Ð+=Ð+=Ñ>Ô>ˆHØÝ”—’˜Rœ_¨h¸¼×9KÒ9KÐPTÐ9KÑ9UÔ9UÑ.UÑVÔVðñ ˆEð ŒwÔ" d¤gÔ&8Ò8Ð8ØÝ”G—L’LØœ¨°D´G×4GÒ4GÈDÐ4GÑ4QÔ4QÑ)Qñô ðñ �øð •b”g—l’l 2¤?°EÑ:Ô:Ð;Ñ;ˆEàˆr   c                ó�  — | j         dk    rJ| j                             dd¬¦  «        }t          j                             | j        j        d|› �¦  «        gS | j                             d¬¦  «        }t          j                             | j        j        d¦  «        }| j        }t          j                             ||› d|› �¦  «        gS )zw
        Microsoft Windows SDK Libraries.

        Return
        ------
        list of str
            paths
        rå   TrS  rd  rb  rì   Úum)	r’   rN   r?   rT   rU   rV   rL  rî   Ú_sdk_subdir)r(   rZ  rì   Úlibvers       r   ÚOSLibrarieszEnvironmentInfo.OSLibraries:  sµ   € ð Œ;˜$ÒÐØœ'×,Ò,°T¸tÐ,ÑDÔDˆKÝ”G—L’L ¤Ô!6Ð8K¸kÐ8KÐ8KÑLÔLÐMÐMð œ'×,Ò,°Ð,Ñ6Ô6ˆKÝ”'—,’,˜tœwÔ4°eÑ<Ô<ˆCØÔ%ˆFÝ”G—L’L ¨Ð&@Ð&@°;Ð&@Ð&@ÑAÔAÐBÐBr   c                óª  — t           j                             | j        j        d¦  «        }| j        dk    r"|t           j                             |d¦  «        gS | j        dk    r| j        }nd}t           j                             ||› d�¦  «        t           j                             ||› d�¦  «        t           j                             ||› d�¦  «        gS )	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        rE  rå   Úglr×   r   Úsharedrt  Úwinrt)rT   rU   rV   rL  rî   r’   ru  )r(   rE  Úsdkvers      r   Ú
OSIncludeszEnvironmentInfo.OSIncludesN  s¿   € õ ”'—,’,˜tœwÔ4°iÑ@Ô@ˆàŒ;˜$ÒÐØ�RœWŸ\š\¨'°4Ñ8Ô8Ð9Ð9ð Œ{˜dÒ"Ð"ØÔ)��à�å”—’˜W¨Ð&7Ð&7Ð&7Ñ8Ô8Ý”—’˜W¨ m m mÑ4Ô4Ý”—’˜W¨Ð&6Ð&6Ð&6Ñ7Ô7ðð r   c                ó„  — t           j                             | j        j        d¦  «        }g }| j        dk    r
|| j        z  }| j        dk    r$|t           j                             |d¦  «        gz  }| j        dk    rÄ||t           j                             | j        j        d¦  «        t           j                             |dd¦  «        t           j                             |d	d¦  «        t           j                             |d
d¦  «        t           j                             | j        j        dd| j        d›ddd¦  «        gz  }|S )z}
        Microsoft Windows SDK Libraries Paths.

        Return
        ------
        list of str
            paths
        Ú
Referencesrä   ræ   zCommonConfiguration\Neutralr×   ÚUnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContractÚExtensionSDKszMicrosoft.VCLibsrÌ   ÚCommonConfigurationÚneutral)rT   rU   rV   rL  rî   r’   rw  )r(   ÚrefrF  s      r   Ú	OSLibpathzEnvironmentInfo.OSLibpathh  s$  € õ Œg�lŠl˜4œ7Ô0°,Ñ?Ô?ˆØˆàŒ;˜#ÒÐØ�tÔ'Ñ'ˆGàŒ;˜$ÒÐØ�œŸš SÐ*HÑIÔIÐJÑJˆGàŒ;˜$ÒÐØØÝ”—’˜TœWÔ2°OÑDÔDÝ”—’˜SÐ"KÈYÑWÔWÝ”—’˜SÐ"IÈ9ÑUÔUÝ”—’ØÐGÈñô õ ”—’Ø”GÔ)Ø#Ø&Ø”{Ð)Ð)Ø Ø)Øñô ðñ ˆGð$ ˆr   c                óD   — t          |                      ¦   «         ¦  «        S )zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )ÚlistÚ
_sdk_toolsr-   s    r   ÚSdkToolszEnvironmentInfo.SdkTools�  s   € õ �D—O’OÑ%Ô%Ñ&Ô&Ð&r   c              #  ó‚  K  — | j         dk     r;| j         dk    rdnd}t          j                             | j        j        |¦  «        V — | j                             ¦   «         sL| j                             d¬¦  «        }d|› �}t          j                             | j        j        |¦  «        V — | j         dv rj| j         	                    ¦   «         rd}n| j                             dd¬	¦  «        }d
|› �}t          j                             | j        j        |¦  «        V — n‚| j         dk    rwt          j                             | j        j        d¦  «        }| j                             d¬¦  «        }| j        j
        }t          j                             ||› |› �¦  «        V — | j        j        r| j        j        V — dS dS )zˆ
        Microsoft Windows SDK Tools paths generator.

        Return
        ------
        generator of str
            paths
        ra  ræ   rk  zBin\x86Trb  )rå   ræ   r   rS  zBin\NETFX 4.0 ToolsN)r’   rT   rU   rV   rL  rî   rN   r7   r=   r3   rï   r  )r(   Úbin_dirrZ  rU   r|  s        r   rˆ  zEnvironmentInfo._sdk_toolsœ  s»  è è € ð Œ;˜ÒÐØ#œ{¨dÒ2Ð2�e�e¸
ˆGÝ”'—,’,˜tœwÔ4°gÑ>Ô>Ð>Ð>Ð>àŒw×%Ò%Ñ'Ô'ð 	<Øœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ&˜Ð&Ð&ˆDÝ”'—,’,˜tœwÔ4°dÑ;Ô;Ð;Ð;Ð;àŒ;˜,Ð&Ð&ØŒw×$Ò$Ñ&Ô&ð JØ ��à"œg×1Ò1¸$ÀDÐ1ÑIÔI�Ø7¨+Ð7Ð7ˆDÝ”'—,’,˜tœwÔ4°dÑ;Ô;Ð;Ð;Ð;Ð;àŒ[˜DÒ Ð Ý”7—<’< ¤Ô 5°uÑ=Ô=ˆDØœ'×-Ò-°$Ð-Ñ7Ô7ˆKØ”WÔ2ˆFÝ”'—,’,˜t¨Ð%=°Ð%=Ð%=Ñ>Ô>Ð>Ð>Ð>àŒ7Ô+ð 	3Ø”'Ô2Ð2Ð2Ð2Ð2Ð2ð	3ð 	3r   r    c                ó,   — | j         j        }|r|› d�ndS )zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        r:   r   )rL  rï   ©r(   Úucrtvers     r   ru  zEnvironmentInfo._sdk_subdir¿  s#   € ð ”'Ô/ˆØ#*Ð2�7����°Ð2r   c                ór   — | j         dk    rg S t          j                             | j        j        d¦  «        gS )zs
        Microsoft Windows SDK Setup.

        Return
        ------
        list of str
            paths
        rä   ÚSetup)r’   rT   rU   rV   rL  rî   r-   s    r   ÚSdkSetupzEnvironmentInfo.SdkSetupÌ  s4   € ð Œ;˜ÒÐØˆIå”—’˜TœWÔ2°GÑ<Ô<Ð=Ð=r   c                ót  ‡— | j         }| j        Š| j        dk    r-d}|                     ¦   «          o|                     ¦   «          }n>|                     ¦   «         p|                     ¦   «         }|j        dk    p
|j        dk    }g }|r|ˆfd„‰j        D ¦   «         z  }|r|ˆfd„‰j        D ¦   «         z  }|S )zv
        Microsoft .NET Framework Tools.

        Return
        ------
        list of str
            paths
        rå   Tr%   c                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S r   )rT   rU   rV   r  ©r;  r°   rL  s     €r   rW  z+EnvironmentInfo.FxTools.<locals>.<listcomp>ñ  ó9   ø€ ð ð ð Ø9<•”—’˜RÔ.°Ñ4Ô4ðð ð r   c                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S r   )rT   rU   rV   r"  r”  s     €r   rW  z+EnvironmentInfo.FxTools.<locals>.<listcomp>õ  r•  r   )	rN   rL  r’   r3   r7   r6   r.   r(  r,  )r(   rN   Ú	include32Ú	include64ro  rL  s        @r   ÚFxToolszEnvironmentInfo.FxToolsÛ  s  ø€ ð ŒWˆØŒWˆàŒ;˜$ÒÐØˆIØ×,Ò,Ñ.Ô.Ð.ÐJ°r×7HÒ7HÑ7JÔ7JÐ3JˆIˆIà×(Ò(Ñ*Ô*ÐA¨b×.?Ò.?Ñ.AÔ.AˆIØœ¨'Ò1ÐM°R´]ÀgÒ5MˆIàˆØð 	Øð ð ð ð Ø@BÔ@Uðñ ô ñ ˆEð ð 	Øð ð ð ð Ø@BÔ@Uðñ ô ñ ˆEð ˆr   c                óÆ   — | j         dk     s| j        j        sg S | j                             d¬¦  «        }t
          j                             | j        j        d|› �¦  «        gS )z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        r×   Trb  zlib\um)r’   rL  r  rN   r?   rT   rU   rV   )r(   rZ  s     r   ÚNetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibrariesú  s_   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆÝ”—’˜TœWÔ0Ð2I¸KÐ2IÐ2IÑJÔJÐKÐKr   c                óŠ   — | j         dk     s| j        j        sg S t          j                             | j        j        d¦  «        gS )z}
        Microsoft .Net Framework SDK Includes.

        Return
        ------
        list of str
            paths
        r×   z
include\um)r’   rL  r  rT   rU   rV   r-   s    r   ÚNetFxSDKIncludesz EnvironmentInfo.NetFxSDKIncludes
  s>   € ð Œ;˜ÒÐ T¤WÔ%8ÐØˆIå”—’˜TœWÔ0°-Ñ@Ô@ÐAÐAr   c                óX   — t           j                             | j        j        d¦  «        gS )z„
        Microsoft Visual Studio Team System Database.

        Return
        ------
        list of str
            paths
        zVSTSDB\DeployrU  r-   s    r   ÚVsTDbzEnvironmentInfo.VsTDb  s#   € õ ”—’˜TœWÔ1Ð3CÑDÔDÐEÐEr   c                ó`  — | j         dk     rg S | j         dk     r(| j        j        }| j                             d¬¦  «        }n| j        j        }d}d| j         d›d|› �}t          j                             ||¦  «        g}| j         dk    r%|t          j                             ||d	¦  «        gz  }|S )
zn
        Microsoft Build Engine.

        Return
        ------
        list of str
            paths
        rç   ra  Trc  r   zMSBuild\rÌ   z\binÚRoslyn)	r’   rL  rÍ   rN   r=   rÏ   rT   rU   rV   )r(   Ú	base_pathrZ  rU   Úbuilds        r   ÚMSBuildzEnvironmentInfo.MSBuild%  s¹   € ð Œ;˜ÒÐØˆIØŒ[˜4ÒÐØœÔ/ˆIØœ'×-Ò-°dÐ-Ñ;Ô;ˆKˆKàœÔ,ˆIØˆKà>˜4œ;Ð>Ð>Ð>°Ð>Ð>ˆÝ”—’˜i¨Ñ.Ô.Ð/ˆàŒ;˜$ÒÐà•b”g—l’l 9¨d°HÑ=Ô=Ð>Ñ>ˆEàˆr   c                ór   — | j         dk     rg S t          j                             | j        j        d¦  «        gS )zt
        Microsoft HTML Help Workshop.

        Return
        ------
        list of str
            paths
        ræ   zHTML Help Workshop)r’   rT   rU   rV   rL  rÍ   r-   s    r   ÚHTMLHelpWorkshopz EnvironmentInfo.HTMLHelpWorkshopA  s5   € ð Œ;˜ÒÐØˆIå”—’˜TœWÔ4Ð6JÑKÔKÐLÐLr   ú	list[str]c                óT  — | j         dk     rg S | j                             d¬¦  «        }	 t          j                             | j        j        d¦  «        }n(# t          $ r}t          j
        |d¦  «         ‚ d}~ww xY w| j        }t          j                             ||› d|› �¦  «        gS )zƒ
        Microsoft Universal C Runtime SDK Libraries.

        Return
        ------
        list of str
            paths
        r×   Trb  rì   r  NÚucrt)r’   rN   r?   rT   rU   rV   rL  r  r  r
   r  Ú_ucrt_subdir)r(   rZ  rì   r  rŽ  s        r   ÚUCRTLibrarieszEnvironmentInfo.UCRTLibrariesP  sµ   € ð Œ;˜ÒÐØˆIà”g×(Ò(¨TÐ(Ñ2Ô2ˆð	Ý”'—,’,˜tœwÔ9¸5ÑAÔAˆCˆCøÝð 	ð 	ð 	ÝŒN˜2Ð?Ñ@Ô@Ð@Øøøøøð	øøøð Ô#ˆÝ”—’˜S WÐ"?Ð"?°+Ð"?Ð"?Ñ@Ô@ÐAÐAs   ª*A Á
A:ÁA5Á5A:c                ó  — | j         dk     rg S 	 t          j                             | j        j        d¦  «        }n(# t          $ r}t          j        |d¦  «         ‚ d}~ww xY wt          j                             || j	        › d�¦  «        gS )z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        r×   rE  r  Nr©  )
r’   rT   rU   rV   rL  r  r  r
   r  rª  )r(   rE  r  s      r   ÚUCRTIncludeszEnvironmentInfo.UCRTIncludesf  s“   € ð Œ;˜ÒÐØˆIð	Ý”g—l’l 4¤7Ô#=¸yÑIÔIˆGˆGøÝð 	ð 	ð 	ÝŒN˜2Ð?Ñ@Ô@Ð@Øøøøøð	øøøõ ”—’˜W¨Ô):Ð&@Ð&@Ð&@ÑAÔAÐBÐBs   �*: º
AÁAÁAc                ó,   — | j         j        }|r|› d�ndS )z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        r:   r   )rL  r  r�  s     r   rª  zEnvironmentInfo._ucrt_subdirz  s#   € ð ”'Ô4ˆØ#*Ð2�7����°Ð2r   c                óJ   — d| j         cxk    rdk    rn ng S | j        j        gS )zk
        Microsoft Visual F#.

        Return
        ------
        list of str
            paths
        ræ   rç   )r’   rL  r	  r-   s    r   ÚFSharpzEnvironmentInfo.FSharp‡  s;   € ð �$”+Ð$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$Ð$ØˆIà”Ô(Ð)Ð)r   rw   c                ó*  ‡‡— d| j         › d�Š| j                             d¬¦  «                             d¦  «        Šg }| j        j        }t          j                             | 	                    dd¦  «        ¦  «        }t          j         
                    |¦  «        r]t          j                             |t          j        |¦  «        d         ¦  «        }||t          j                             |d	¦  «        gz  }|t          j                             |d
¦  «        gz  }d| j         dz  › d�dt          | j        ¦  «        dz  › d�f}ˆˆfd„t          j        ||¦  «        D ¦   «         }t#          t%          t          j        j        |¦  «        d¦  «        S )z{
        Microsoft Visual C++ runtime redistributable dll.

        Returns the first suitable path found or None.
        Ú	vcruntimez0.dllTrb  r:   z\Toolsz\RedistrØ   ÚonecoreÚredistzMicrosoft.VCé
   z.CRTc              3  ób   •K  — | ])\  }}t           j                             |‰|‰¦  «        V — Œ*d S rM   )rT   rU   rV   )r;  r7  Úcrt_dirrZ  r²  s      €€r   r=  z2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>³  sO   øè è € ð 
ð 
á!�˜õ ŒG�LŠL˜ ¨g°yÑAÔAð
ð 
ð 
ð 
ð 
ð 
r   N)r‹   rN   r?   ÚstriprL  rÕ   rT   rU   Údirnamer'   rÓ   rV   r¸   Úintr’   rŸ   r    r?  ÚfilterÚisfile)r(   ÚprefixesÚ
tools_pathÚredist_pathÚcrt_dirsÚcandidate_pathsrZ  r²  s         @@r   ÚVCRuntimeRedistzEnvironmentInfo.VCRuntimeRedist–  s~  øø€ ð 3 ¤Ð2Ð2Ð2ˆ	Ø”g×(Ò(¨TÐ(Ñ2Ô2×8Ò8¸Ñ>Ô>ˆð ˆØ”WÔ)ˆ
Ý”g—o’o j×&8Ò&8¸ÀJÑ&OÔ&OÑPÔPˆÝŒ7�=Š=˜Ñ%Ô%ð 	Låœ'Ÿ,š, {µB´J¸{Ñ4KÔ4KÈBÔ4OÑPÔPˆKØ˜¥b¤g§l¢l°;À	Ñ&JÔ&JÐKÑKˆHà•R”W—\’\ *¨hÑ7Ô7Ð8Ñ8ˆð 2˜4œ;¨Ñ+Ð1Ð1Ð1à6�3˜tœ{Ñ+Ô+¨bÑ0Ð6Ð6Ð6ð
ˆð
ð 
ð 
ð 
ð 
å%.Ô%6°xÀÑ%JÔ%Jð
ñ 
ô 
ˆõ •F�2œ7œ>¨?Ñ;Ô;¸TÑBÔBÐBr   TÚexistsr/   rD  c                ó  — t          |                      d| j        | j        | j        | j        g|¦  «        |                      d| j        | j        | j        | j	        | j
        g|¦  «        |                      d| j        | j        | j        | j        g|¦  «        |                      d| j        | j        | j        | j        | j        | j        | j        | j        | j        g	|¦  «        ¬¦  «        }| j        dk    r| j        r
| j        |d<   |S )zÛ
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.

        Return
        ------
        dict
            environment
        rE  rì   rF  rU   )rE  rì   rF  rU   é   rG  )rD  Ú_build_pathsr_  r}  r­  r�  rf  rw  r™  r«  r›  rh  r…  rr  r[  rŸ  r‰  r‘  r¤  r¦  r°  r’   rÂ  )r(   rÃ  Úenvs      r   Ú
return_envzEnvironmentInfo.return_env¹  s9  € õ Ø×%Ò%Øà”OØ”OØÔ%ØÔ)ð	ð ñ	ô 	ð ×!Ò!ØàÔ$ØÔ$Ø”LØÔ&ØÔ*ðð ñ
ô 
ð ×%Ò%ØØÔ! 4¤<°Ô1AÀ4Ä>ÐRØñô ð
 ×"Ò"Øà”LØ”LØ”JØ”MØ”MØ”LØ”LØÔ)Ø”Kð
ð ñô ð7*
ñ *
ô *
ˆðV Œ;˜"ÒÐ Ô!5ÐØ)-Ô)=ˆCÐ%Ñ&Øˆ
r   c                óú  — t           j                             |¦  «        }t          j        |d¦  «                             t          j        ¦  «        }t          j        ||¦  «        }|r,t          t          t          j
        j        |¦  «        ¦  «        n|}|s6|                     ¦   «         › d�}t          j                             |¦  «        ‚t!          |¦  «        }	t          j                             |	¦  «        S )aC  
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.

        Parameters
        ----------
        name: str
            Environment variable name
        spec_path_lists: list of str
            Paths
        exists: bool
            It True, only return existing paths.

        Return
        ------
        str
            Pathsep-separated paths
        r   z environment variable is empty)rŸ   ÚchainÚfrom_iterabler   rG   rÈ   rT   Úpathsepr‡  r»  rU   rÓ   rn  r•   r–   r—   r   rV   )
r(   rv   Úspec_path_listsrÃ  Ú
spec_pathsÚ	env_pathsrY  Úextant_pathsrÔ   Úunique_pathss
             r   rÆ  zEnvironmentInfo._build_pathsö  sÆ   € õ. ”_×2Ò2°?ÑCÔCˆ
Ý”K  bÑ)Ô)×/Ò/µ´
Ñ;Ô;ˆ	Ý” 
¨IÑ6Ô6ˆØ=CÐN•t�F¥2¤7¤=°%Ñ8Ô8Ñ9Ô9Ð9ÈˆØð 	?Ø—Z’Z‘\”\ÐAÐAÐAˆCÝÔ"×9Ò9¸#Ñ>Ô>Ð>Ý& |Ñ4Ô4ˆÝŒz�Š˜|Ñ,Ô,Ð,r   )Nr   )r!   r"   rD   )r!   r§  rA  )T)rÃ  r/   r!   rD  )!r   r   r   rF   r)   rH   r’   r‹   r[  r_  rf  rh  rr  rw  r}  r…  r‰  rˆ  ru  r‘  r™  r›  r�  rŸ  r¤  r¦  r«  r­  rª  r°  rÂ  rÈ  rÆ  r   r   r   rJ  rJ  ˆ  s8  € € € € € ðð ð.?ð ?ð ?ð ?ð ?ð ð	ð 	ñ „Xð	ð ð	ð 	ñ „Xð	ð ðLð Lñ „XðLð& ð
ð 
ñ „Xð
ð ðLð Lñ „XðLð( ðMð Mñ „XðMð ð0ð 0ñ „Xð0ðd ðCð Cñ „XðCð& ðð ñ „Xðð2 ð%ð %ñ „Xð%ðN ð	'ð 	'ñ „Xð	'ð!3ð !3ð !3ðF ð
3ð 
3ð 
3ñ „Xð
3ð ð>ð >ñ „Xð>ð ðð ñ „Xðð< ðLð Lñ „XðLð ðBð Bñ „XðBð ð	Fð 	Fñ „Xð	Fð ðð ñ „Xðð6 ðMð Mñ „XðMð ðBð Bð Bñ „XðBð* ðCð Cð Cñ „XðCð& ð
3ð 
3ð 
3ñ „Xð
3ð ð*ð *ñ „Xð*ð ð Cð  Cð  Cñ „Xð CðD;ð ;ð ;ð ;ð ;ðz-ð -ð -ð -ð -r   rJ  )"rF   Ú
__future__r   r£   rŸ   rº   rT   Úos.pathÚplatformÚtypingr   r   r   Úmore_itertoolsr   Ú_pathr	   Úcompatr
   Údistutils.errorsr•   Útyping_extensionsr   r   Úsystemr   r   ÚdictrH  r   rJ   r‡   rD  rJ  r   r   r   ú<module>rÝ     sZ  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð àð =Ø<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð ð %˜˜œÑ*Ô*¨iÒ7Ð7Ø€M€M€MØÐÐÐÐÐÐð!ð !ð !ð !ð !ñ !ô !ð !ð #˜d™fœf€GÐ$Ð$Ð$Ñ$ðv
ð v
ð v
ð v
ð v
ñ v
ô v
ð v
ðr~ð ~ð ~ð ~ð ~ñ ~ô ~ð ~ðBW'ð W'ð W'ð W'ð W'ñ W'ô W'ð W'ðt1ð 1ð 1ð 1ð 1�yñ 1ô 1ð 1ðM
-ð M
-ð M
-ð M
-ð M
-ñ M
-ô M
-ð M
-ð M
-ð M
-r   