
ݲk^c           @   s)  d  d d f 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 Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z y d d l Z Wn9 e k
 r Z y d d l Z Wn e k
 r Z n Xn Xe j d d k Z e j   j   d k ry d d l j Z WnK e k
 rjZ y d d l j Z Wn" e k
 rfZ d d l j Z n Xn Xd e j f d     YZ e e _ n  d e f d	     YZ d
   Z d   Z e  d  Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d e f d     YZ. d   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d    Z4 d!   Z5 d"   Z6 d#   Z7 d$   Z8 d%   Z9 d&   Z: d'   Z; d(   Z< d)   Z= d*   Z> d+   Z? d,   Z@ d-   ZA eB d. k rd d/ l mC ZC eC   eA   n e@   d S(0   i   i    iNi   t   windowst   _Popenc           B   s   e  Z d    Z RS(   c         O   s   t  t d  r% t j d t j  n  z t t |   j | |   Wd  t  t d  r t  t d  rs t j d  q t j d d  n  Xd  S(   Nt   frozent	   _MEIPASS2t   unsetenvt    (	   t   hasattrt   syst   ost   putenvt   _MEIPASSt   superR   t   __init__R   (   t   selft   argst   kw(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR   D   s    (   t   __name__t
   __module__R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR   C   s   t
   DataSourcec           B   s  e  Z e j   d  Z e j   Z e j   j   d k Z	 e j
   Z e 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 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$ e d    Z% e d    Z& e d    Z' e d    Z( e d    Z) e d    Z* e d    Z+ e d    Z, RS(    i    R    c           C   s   t  j j d  S(   Ns   /proc/cpuinfo(   R   t   patht   exists(    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_proc_cpuinfo_   s    c           C   s   t  t d   d k S(   Nt   dmesgi    (   t   lent   program_paths(    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   has_dmesgc   s    c          C   sL   t  j   j   j d  j d  j   j   }  d |  k oK t j j d  S(   Nt   "t   't   linuxs   /var/run/dmesg.boot(   t   platformt   systemt   stript   lowerR   R   R   (   t   uname(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_var_run_dmesg_bootg   s    0c           C   s   t  t d   d k S(   Ns   cpufreq-infoi    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_cpufreq_infol   s    c           C   s   t  t d   d k S(   Nt   sestatusi    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_sestatusp   s    c           C   s   t  t d   d k S(   Nt   sysctli    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   has_sysctlt   s    c           C   s   t  t d   d k S(   Nt   isainfoi    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_isainfox   s    c           C   s   t  t d   d k S(   Nt   kstati    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   has_kstat|   s    c           C   s   t  t d   d k S(   Nt   sysinfoi    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_sysinfo   s    c           C   s   t  t d   d k S(   Nt   lscpui    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   has_lscpu   s    c           C   s   t  t d   d k S(   Nt   lspropi    (   R   R   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_ibm_pa_features   s    c          C   s:   t  d d d d g  \ }  } |  d k o9 t |  d k S(   Nt   wmicR   t   gett   Versioni    (   t   run_and_get_stdoutR   (   t
   returncodet   output(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   has_wmic   s    c           C   s   t  d d g  S(   Nt   cats   /proc/cpuinfo(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   cat_proc_cpuinfo   s    c           C   s   t  d g  S(   Ns   cpufreq-info(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   cpufreq_info   s    c           C   s5   t  d d g d d d g  d j   j   j d  S(   NR$   s   -bt   greps   -is   "allow_execheap"i   t   on(   R5   R   R    t   endswith(    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   sestatus_allow_execheap   s    c           C   s5   t  d d g d d d g  d j   j   j d  S(   NR$   s   -bR<   s   -is   "allow_execmem"i   R=   (   R5   R   R    R>   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   sestatus_allow_execmem   s    c           C   s   t  d d g  S(   NR   s   -a(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   dmesg_a   s    c           C   s   t  d d g  S(   NR9   s   /var/run/dmesg.boot(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   cat_var_run_dmesg_boot   s    c           C   s   t  d d d g  S(   NR&   s   machdep.cpus   hw.cpufrequency(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt"   sysctl_machdep_cpu_hw_cpufrequency   s    c           C   s   t  d d g  S(   NR(   s   -vb(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   isainfo_vb   s    c           C   s   t  d d d g  S(   NR*   s   -mt   cpu_info(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   kstat_m_cpu_info   s    c           C   s   t  d d g  S(   NR,   s   -cpu(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   sysinfo_cpu   s    c           C   s   t  d g  S(   NR.   (   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR.      s    c          C   s-   t  j  d  }  |  r) t d |  d g  Sd  S(   Ns(   /proc/device-tree/cpus/*/ibm,pa-featuresR0   i    (   t   globR5   (   t   ibm_features(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   ibm_pa_features   s    c           C   s   t  d d d d d g  S(   NR2   t   cpuR3   sO   Name,CurrentClockSpeed,L2CacheSize,L3CacheSize,Description,Caption,Manufacturers   /format:list(   R5   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   wmic_cpu   s    c          C   s<   t  j t  j d  }  t  j |  d  d } t  j |   | S(   Ns.   Hardware\Description\System\CentralProcessor\0t   ProcessorNameStringi    (   t   winregt   OpenKeyt   HKEY_LOCAL_MACHINEt   QueryValueExt   CloseKey(   t   keyt   processor_brand(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   winreg_processor_brand   s    c          C   s<   t  j t  j d  }  t  j |  d  d } t  j |   | S(   Ns.   Hardware\Description\System\CentralProcessor\0t   VendorIdentifieri    (   RN   RO   RP   RQ   RR   (   RS   t	   vendor_id(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   winreg_vendor_id   s    c          C   s<   t  j t  j d  }  t  j |  d  d } t  j |   | S(   Ns<   SYSTEM\CurrentControlSet\Control\Session Manager\Environmentt   PROCESSOR_ARCHITECTUREi    (   RN   RO   RP   RQ   RR   (   RS   t   raw_arch_string(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   winreg_raw_arch_string   s    c          C   sH   t  j t  j d  }  t  j |  d  d } t  j |   t |  } | S(   Ns.   Hardware\Description\System\CentralProcessor\0s   ~Mhzi    (   RN   RO   RP   RQ   RR   t   to_hz_string(   RS   t	   hz_actual(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   winreg_hz_actual   s
    c          C   s<   t  j t  j d  }  t  j |  d  d } t  j |   | S(   Ns.   Hardware\Description\System\CentralProcessor\0t
   FeatureSeti    (   RN   RO   RP   RQ   RR   (   RS   t   feature_bits(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   winreg_feature_bits   s    (-   R   R   R   t   architecturet   bitst   multiprocessingt	   cpu_countR   R    t
   is_windowst   machineRZ   t   Truet	   can_cpuidt   staticmethodR   R   R"   R#   R%   R'   R)   R+   R-   R/   R1   R8   R:   R;   R?   R@   RA   RB   RC   RD   RF   RG   R.   RJ   RL   RU   RX   R[   R^   Ra   (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR   X   sF   c         C   s7   |  } t  j |  } t j |  } | j d  } | S(   Nt   utf8(   t   picklet   dumpst   base64t	   b64encodet   decode(   t   thingt   at   bt   ct   d(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   obj_to_b64   s
    c         C   s5   y& t  j |   } t j |  } | SWn i  SXd  S(   N(   Rn   t	   b64decodeRl   t   loads(   Rq   Rr   Rs   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   b64_to_obj   s    c         C   s  | sh t  j |  d t  j d t  j d t  j } | j   d } t s[ | j d d  } n  | j | f St  j |  d t  j d t  j d t  j } t  j | d | j d t  j d t  j } | j j   | j   d } t s | j d d  } n  | j | f Sd  S(   Nt   stdoutt   stderrt   stdini    t   encodings   UTF-8(	   t
   subprocesst   Popent   PIPEt   communicatet   PY2Rp   R6   Rz   t   close(   t   commandt   pipe_commandt   p1R7   t   p2(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR5      s    ***c         C   s   g  } t  d  t j j d d  j t j   } t j d } x t j d j t j  D] } t j j | |   } t j	 | t j
  r | j |  n  x= | D]5 } | | } t j	 | t j
  r | j |  q q WqW W| S(   Nt   PATHEXTR   t   PATH(   t   filtert   NoneR   t   environR3   t   splitt   pathsepR   t   joint   accesst   X_OKt   append(   t   program_namet   pathst   extsR   t   pt   et   pext(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR     s    * 
c         C   s   x | j    D] } x | D] } | j   } d | k r | j d d  \ } } | j   j   } | j   } | | k r t |  d k r |  r | j   s | Sq | Sq q q Wq Wd  S(   Nt   :i   i    (   t
   splitlinesR    R   R   R   t   isdigitR   (   t   cant_be_numbert
   raw_stringt   field_namest   linet
   field_namet   leftt   right(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_field_actual  s    c         G   sZ   t  |  | |  } | rA | rA y | |  } WqA | } qA Xn  | d  k rV | } n  | S(   N(   R   R   (   R   R   t
   convert_tot   default_valueR   t   retval(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   _get_field*  s    	c         C   s   d |  j    k r d	 S|  j    } d } | j d  r@ d } n | j d  rX d } n  d | k rz | j d  d } n | j d  d  d } | j d  j d  j   } t |  } | | f S(
   Nt   hzi   s   0.0t   mhzi   t   ghzi	   t   @(   i   s   0.0(   R    R>   R   t   rsplitR   t   rstripR   R\   (   RT   t   hz_brandt   scale(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_hz_string_from_brand:  s    		c         C   s   t  |  |  \ } } d j | |  }  |  j d  } |  j d d  }  d } d } | d k ro d } d } n6 | d k r d	 } d } n | d
 k r d } d
 } n  d j |  | d  |  | d  }  d j t |   |  }  |  j d  }  |  S(   Ns   {0}.{1}t   .R   t   Hzi    i	   t   GHzi   t   MHzi   t   KHzi   s   {0:.4f} {1}t   0(   t	   to_raw_hzt   formatt   indext   replacet   floatR   (   t   ticksR   R   R   t	   dot_indext   symbol(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   to_friendly_hzP  s&    			$c         C   s   |  j  d  }  |  j d  } |  j d d  }  |  j | | d d  }  | | } d j |  |  |  |  }  |  j d  \ } } t |  t |  } } | | f S(   NR   R   R   i   s   {0}.{1}(   t   lstripR   R   t   ljustR   R   t   int(   R   R   t	   old_indext	   new_indexR   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR   p  s    
c         C   sa   d j  |   }  d |  k r- d j  |   }  n  |  j d  }  |  j d  r] d j  |   }  n  |  S(   Ns   {0}R   s   {0}.0R   s   {0}0(   R   R   R>   (   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR\   |  s    c         C   s   |  s
 |  Sd j  |   }  i d d 6d d 6d d 6d d	 6} xF | j   D]8 \ } } t j | |   rH d
 j  |  d  j   |  SqH W|  S(   Ns   {0}t   Bs	   ^[0-9]+B$t   KBs	   ^[0-9]+K$t   MBs	   ^[0-9]+M$t   GBs	   ^[0-9]+G$s   {0} {1}i(   R   t   itemst   ret   matchR   (   t   inputt   formatst   patternt   friendly_size(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   to_friendly_bytes  s    
c         C   s-  |  j  d |  j  d   } |  } | d k rC |  d | !j   } n  d  } | d k rb |  | } n  t |  \ } } d \ } } } }	 | ry{| j d d  d j d  d j d  } g  | D] }
 |
 j   j   ^ q } g  | D] }
 |
 j d  ^ q } g  | D]' }
 i |
 d j   |
 d j   6^ q	} x | D] } t | j    d } t | j	    d } | d	 k r| j d
  } q=| d k rt
 | j d  d  } q=| d k rt
 | j d  d  } q=| d k r=t
 | j d  d  }	 q=q=WWqqXn  | | | | | | |	 f S(   Nt   (R   ii    i   t   )t   ,R   t   originR   t   steppingt   0xi   t   modelt   famt   family(   NNNN(   R   R   (   t   findR   R   R   R   R   R    t   listt   keyst   valuesR   R   (   t
   cpu_stringt   fields_indexRT   t   fieldsR   R   RW   R   R   R   t   ft   fieldt   namet   value(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _parse_cpu_string  s:    ,%"4#c         C   sM  y?|  j  d  d |  j  d  d |  j  d  d |  j  d  d |  j  d  d |  j  d  d } g  | D] } | j  d  d	 j   ^ qr } g  | D] } t |  ^ q } d  } d	 } xN | D]F } t g  | D] } | d  k	 ^ q  } | | k r | } | } q q W| si  S| \ }	 }
 } } } } } d
 |  k r|  |  j d
  j  d  d	 } | j   j    } g  | D] } | j   j  d  ^ q}} g  | D]- } i | d j   | d	 j   j   6^ q} x | D] } t | j    d	 } t | j	    d	 } | d k r/| j d  } q| d k rVt
 | j d  d  } q| d k r}t
 | j d  d  } q| d$ k rt
 | j d  d  } qqWn  g  } xP d d d d g D]< } | |  k r| j |  j  |  d j  d  d	  qqWg  } x[ | D]S } | j  d  d j  d  d	 j   } x$ | j  d  D] } | j |  qMWqW| j   t |	  \ } } i | d 6|	 d 6| d 6| d 6| d 6| d 6} | r| d k rt | |  | d <t |
 |  | d  <n  | r*| d k r*t | |  | d! <t |
 |  | d" <n  d#   | j   D SWn n Xi  S(%   Ns    CPU0:i   s    CPU1:s    CPU:s   
CPU0:s   
CPU1:s   
CPU:s   
i    s	     Origin=t   =R   R   R   R   i   R   R   R   s     Features=s     Features2=s     AMD Features=s     AMD Features2=t   <t   >R   RW   t   brandt   flagss   0.0t   hz_advertisedR]   t   hz_advertised_rawt   hz_actual_rawc         S   s%   i  |  ] \ } } | r | |  q S(    (    (   t   .0t   kt   v(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>!  s   	 (   R   R   (   R   R   R   R   t   sumR   R    R   R   R   R   R   R   t   sortR   R   R   R   (   R7   t   linest   lt   cpu_stringst   best_stringt   highest_countR   t   nt   countRT   R]   R   RW   R   R   R   R   R   R   R   t
   flag_linest   categoryR   R   t   flagR   t   info(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _parse_dmesg_output  sv    T,% (:".&

c         C   sK  d \ } } |  j   }  t j d |   r9 d } d } nt j d |   rZ d } d } n t j d |   r{ d } d } n t j d	 |   r d
 } d } n t j d |   r d } d } n t j d |   r d } d } nc t j d |   r d } d } nB t j d |   r d } d } n! t j d |   rAd } d } n  | | f S(   Ns4   ^i\d86$|^x86$|^x86_32$|^i86pc$|^ia32$|^ia-32$|^bepc$t   X86_32i    s9   ^x64$|^x86_64$|^x86_64t$|^i686-64$|^amd64$|^ia64$|^ia-64$t   X86_64i@   s   ^armv8-a|aarch64$t   ARM_8s/   ^armv7$|^armv7[a-z]$|^armv7-[a-z]$|^armv6[a-z]$t   ARM_7s"   ^armv8$|^armv8[a-z]$|^armv8-[a-z]$s    ^ppc32$|^prep$|^pmac$|^powermac$t   PPC_32s   ^powerpc$|^ppc64$|^ppc64le$t   PPC_64s   ^sparc32$|^sparc$t   SPARC_32s   ^sparc64$|^sun4u$|^sun4v$t   SPARC_64(   NN(   R   R    R   R   (   RZ   t   archRc   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   parse_arch(  s<    									c         C   s   d | >} |  | @d k } | S(   Ni   i    (    (   t   regt   bitt   maskt   is_set(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   is_bit_setN  s    
t   CPUIDc           B   s   e  Z d    Z e f  g  d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z RS(   c         C   sO   d  |  _ t |  _ t j   s" d  St j   } t j   } | pE | |  _ d  S(   N(   R   t
   prochandlet   Falset   is_selinux_enforcingR   R%   R?   R@   (   R   t   can_selinux_exec_heapt   can_selinux_exec_memory(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR   U  s    		c         C   s=  t  j d |  } d  } t j rt |  } | d k  rB d } n  t j d  } t j d  } t j j	 j
 } t j | _ | d  t j |  | |  } | s t d   n  t j t j t j t j t j  t j  }	 |	 | | |  d k  rt d   n  t j d  }
 t j d  } t j j	 j } | t j |  t j |  |
 t j |   } | stt d   n  |  j st j j	 j } t j | _ t j |    |  _ n  t j j	 j |  j t j |  t j |   } | st d	   qnt |  } t j j } t j | _ | t j |   } | sFt d
   n  |  j sd } t j j t j |  | |  d k  rt d   qn  t j j t j |  | t j |   d k  rt d   n  |  j sd } t j j t j |  | |  d k  rt d   qn  t j | |  } | |  } | | f S(   NR   i   i   s   Failed to VirtualAlloci    s   Failed to memmovei   s   Failed VirtualProtects   Failed FlushInstructionCaches   Failed to valloci   s   Failed to mprotecti   (   t   bytesR   R   R   Rf   R   t   ctypest   c_ulongt   windllt   kernel32t   VirtualAlloct   c_void_pt   restypet   c_size_tt	   Exceptiont	   CFUNCTYPEt   _memmove_addrt   VirtualProtectt   byrefR  t   GetCurrentProcesst   FlushInstructionCachet	   pythonapit   vallocR  t   mprotectt   memmove(   R   R  t   argtypest	   byte_codet   addresst   sizet
   MEM_COMMITt   PAGE_READWRITEt   pfnVirtualAllocR'  t   PAGE_EXECUTEt   old_protectt   pfnVirtualProtectt   rest   pfnGetCurrentProcesst	   pfnvalloct   WRITEt   WRITE_EXECUTEt   functypet   fun(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   _asm_funcd  s`    	 	-0	0	'0	'c   
      G   s   t  j } d } |  j | | |  \ } } |   } t j d |  } t  j t |   } t j r t  j	 d  } t  j
 j j t  j |  t  j d  |  nU d }	 t  j j t  j |  | |	  d k  r t d   n  t  j j t  j |   | S(	   NR   i   i    i   i   s   Failed to mprotect(    i   (   R  t   c_uint32R9  R  R   R  R   R   Rf   R  R  R  t   VirtualFreeR  R$  R&  R  t   free(
   R   R)  R  R(  t   funcR*  R   R+  t   MEM_RELEASEt
   READ_WRITE(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _run_asm  s    			.'c         C   s   d S(   Ns   1(    (   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   _zero_eax  s    c         C   s   d S(   Ns   1(    (   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   _zero_ecx  s    c         C   s   d S(   Ns      (    (   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _one_eax  s    c         C   s   |  j  |  j   d  } |  j  |  j   d  } |  j  |  j   d  } g  } xO | | | g D]> } x5 d d d d g D]! } | j t | | ?d @  qw Wq^ Wd	 j |  } | S(
   Ns   s   s   i    i   i   i   i   R   (   R@  RA  R   t   chrR   (   R   t   ebxt   ecxt   edxRW   R	  R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_vendor_id  s    						#c         C   s   |  j  |  j   d  } | d ?d @} | d ?d @} | d ?d @} | d ?d @} | d ?d @} | d	 ?d
 @} i | d 6| d 6| d 6| d 6| d 6| d 6S(   Ns   i    i   i   i   i   i   i   i   i   R   R   R   t   processor_typet   extended_modelt   extended_family(   R@  RC  (   R   t   eaxR   R   R   RI  RJ  RK  (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_info  s     		c         C   s   |  j  d  } | S(   Ns      (   R@  (   R   t   max_extension_support(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_max_extension_support  s    	c   	      C   s  |  j  |  j   d  } |  j  |  j   d  } i< t | d  d 6t | d  d 6t | d  d 6t | d	  d
 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d  6t | d!  d" 6t | d#  d$ 6t | d%  d& 6t | d'  d( 6t | d)  d* 6t | d+  d, 6t | d-  d. 6t | d/  d0 6t | d1  d2 6t | d3  d4 6t | d5  d6 6t | d7  d8 6t | d9  d: 6t | d;  d< 6t | d=  d> 6t | d  d? 6t | d  d@ 6t | d  dA 6t | d	  dB 6t | d  dC 6t | d  dD 6t | d  dE 6t | d  dF 6t | d  dG 6t | d  dH 6t | dI  dJ 6t | d  dK 6t | d  dL 6t | d  dM 6t | d  dN 6t | d#  dO 6t | d%  dP 6t | d'  dQ 6t | dR  dS 6t | d)  dT 6t | d+  dU 6t | d-  dV 6t | d/  dW 6t | d1  dX 6t | d3  dY 6t | d5  dZ 6t | d7  d[ 6t | d9  d\ 6t | d;  d] 6t | d=  d^ 6} g  | j   D] \ } } | r| ^ q} | d k r;|  j  |  j   d_  } |  j  |  j   d`  } i* t | d  da 6t | d	  db 6t | d  dc 6t | d  dd 6t | d  de 6t | d  df 6t | d  dg 6t | dI  dh 6t | d  di 6t | d  dj 6t | d  dk 6t | d  dl 6t | d!  dm 6t | d#  dn 6t | d%  do 6t | d'  dp 6t | dR  dq 6t | d)  dr 6t | d+  ds 6t | d-  dt 6t | d/  du 6t | d1  dv 6t | d3  dw 6t | d5  dx 6t | d7  dy 6t | d9  dz 6t | d;  d{ 6t | d=  d| 6t | d  d} 6t | d  d~ 6t | d  d 6t | d	  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | dI  d 6t | d  d 6t | d  d 6t | d  d 6t | d+  d 6t | d;  d 6} g  | j   D] \ } } | r| ^ q} | | 7} n  | d k r
|  j  d  } |  j  d  } i5 t | d  d 6t | d  d 6t | d  d 6t | d	  d
 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d  6t | d!  d" 6t | d#  d$ 6t | d'  d 6t | dR  d 6t | d+  d 6t | d-  d. 6t | d/  d0 6t | d1  d 6t | d3  d 6t | d5  d 6t | d9  d 6t | d;  d 6t | d=  d 6t | d  d 6t | d  d 6t | d  d 6t | d	  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | dI  d 6t | d  d 6t | d  d 6t | d  d 6t | d  d 6t | d!  d 6t | d#  d 6t | d'  d 6t | d)  d 6t | d+  d 6t | d-  d 6t | d/  d 6t | d3  d 6t | d5  d 6t | d7  d 6} g  | j   D] \ } } | r
| ^ q
} | | 7} n  | j   | S(   Ns   s   i    t   fpui   t   vmei   t   dei   t   psei   t   tsci   t   msri   t   paei   t   mcei   t   cx8i	   t   apici   t   sepi   t   mtrri   t   pgei   t   mcai   t   cmovi   t   pati   t   pse36i   t   pni   t   clflushi   t   dtsi   t   acpii   t   mmxi   t   fxsri   t   ssei   t   sse2i   t   ssi   t   hti   t   tmi   t   ia64i   t   pbet   pnit	   pclmulqdqt   dtes64t   monitort   ds_cplt   vmxt   smxt   estt   tm2t   ssse3i
   t   cidt   fmat   cx16t   xtprt   pdcmt   pcidt   dcat   sse4_1i   t   sse4_2t   x2apict   movbet   popcntt   tscdeadlinet   aest   xsavet   osxsavet   avxt   f16ct   rdrndt
   hypervisors
      s
      t   sgxt   bmi1t   hlet   avx2t   smept   bmi2t   ermst   invpcidt   rtmt   pqmt   mpxt   pqet   avx512ft   avx512dqt   rdseedt   adxt   smapt
   avx512ifmat   pcommitt
   clflushoptt   clwbt   intel_ptt   avx512pft   avx512ert   avx512cdt   shat   avx512bwt   avx512vlt   prefetchwt1t
   avx512vbmit   umipt   pkut   ospket   avx512vbmi2t   gfnit   vaest
   vpclmulqdqt
   avx512vnnit   avx512bitalgt   avx512vpopcntdqt   rdpidt   sgx_lcI      s
     s
     t   syscallt   mpt   nxt   mmxextt   fxsr_optt   pdpe1gpt   rdtscpt   lmt   3dnowextt   3dnowt   lahf_lmt
   cmp_legacyt   svmt   extapict
   cr8_legacyt   abmt   sse4at   misalignsset   3dnowprefetcht   osvwt   ibst   xopt   skinitt   wdtt   lwpt   fma4t   tcet
   nodeid_msrt   tbmt   topoextt   perfctr_coret
   perfctr_nbt   dbxt   perftsct   pci_l2i(   R@  RC  R  R   RB  R   (	   R   RN  RG  RF  R   R   R   RE  t   extended_flags(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   get_flags  sn   				+				+		+
c         C   s   d } | d k r d d d g } x | D] } |  j  | d  } |  j  | d  } |  j  | d  } |  j  | d	  } xO | | | | g D]; }	 x2 d
 d d d g D] }
 | t |	 |
 ?d @ 7} q Wq Wq( Wn  | j d  j   } | S(   NR   I      s     s     s     s   s   s   s   i    i   i   i   i   s    (   R@  RD  R   (   R   RN  RT   t   instructionst   instructionRL  RE  RF  RG  R	  R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_processor_brand2  s.    					'c         C   sX   i  } | d k  r | S|  j  d  } i | d @d 6| d ?d @d 6| d ?d	 @d
 6} | S(   NI      s
     i   t   size_kbi   i   t   line_size_bi   i  t   associativity(   R@  (   R   RN  t
   cache_infoRF  (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   get_cacheh  s    	c   	      C   s7  d  } t j d k r d  } t j t j  t j t j  f } |  j | | d d d d d d d d	 d
 d d g  \ } } t j d  } t j d  } | t j |  t j |   | j	 d >d @| j	 B} n` t j d k r3t j
 } d } |  j | | d d d d d d d d d g	  \ } } |   } n  | S(   Nt   32bitt   Us   s   1s   s   1s   ]s   Ms   s   s   ]s   i    i    l        t   64bitt   Hs    s   	(    (   R   R   Rc   R  t   POINTERt   c_uintR9  R:  R!  R   t   c_uint64(	   R   R   R  R(  t   get_ticks_x86_32R*  t   hight   lowt   get_ticks_x86_64(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt	   get_ticks  sF    $	c         C   s3   |  j    } t j d  |  j    } | | } | S(   Ni   (   R  t   timet   sleep(   R   t   startt   endR   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt
   get_raw_hz  s
    
(   R   R   R   R   R9  R@  RA  RB  RC  RH  RM  RO  R  R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR  T  s   	F					#			 	6		1c         C   s  t  t j d  t _ t  t j d  t _ t t j  \ } } | d k rb |  j	 t
 i    d St   } | j r |  j	 t
 i    d S| j   } | j |  } | j   } | j |  } | j   } t |  } t |  \ }	 }
 i | j   d 6d d 6| d 6t |
 |	  d	 6t | d
  d 6t |
 |	  d 6t | d
  d 6t | d  d 6| d d 6t | d  d 6| d d 6| d d 6| d d 6| d d 6| d d 6| d d 6| j |  d 6} d   | j   D } |  j	 t
 |   d S(   s   
    Warning! This function has the potential to crash the Python runtime.
    Do not call it directly. Use the _get_cpu_info_from_cpuid function instead.
    It will safely call this function in another process.
    t   wR   R   NRW   R   t   hardwareR   R   i    R]   R   R   R  t   l2_cache_sizeR  t   l2_cache_line_sizeR  t   l2_cache_associativityR   R   R   RI  RJ  RK  R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 (   R   R   (   t   openR   t   devnullR   Rz   R{   R  R   RZ   t   putRv   R  R  RO  R  RM  R  R  R\   R   RH  R   R   R   t   hexR  R   (   t   queueR  Rc   t   cpuidRN  R  R   RT   R]   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _actual_get_cpu_info_from_cpuid  sJ    		c          C   s   d d l  m }  m } t j s# i  St t j  \ } } | d k rH i  Sy |   } |  d t d | f  } | j   x | j	   r | j
 d  qy W| j d k r i  S| j   s | j   } t |  SWn n Xi  S(	   s   
    Returns the CPU info gathered by querying the X86 cpuid register in a new process.
    Returns {} on non X86 cpus.
    Returns {} if SELinux is in enforcing mode.
    i(   t   Processt   QueueR   R   t   targetR   i    (   R   R   (   Rd   R   R  R   Ri   R  RZ   R  R  t   is_aliveR   t   exitcodet   emptyR3   Ry   (   R   R  R  Rc   R  R   R7   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_cpuid  s(    		
c          C   s  yt  j   s i  St  j   \ }  } |  d k r5 i  St t | d d d d d  } t t | d d d d d  } t t | d d d	  } t t | t d d
  } t t | t d d  } t t | t d d  } t t | d d d  } t t | d d d d  }	 |	 r#|	 j   }	 |	 j	   n  t t | d d d d d  }
 |
 j
   j d  j   }
 t |
  }
 d  \ } } y t |  \ } } Wn t k
 rn Xi | d 6| d 6t |  d 6|	 d 6| d 6| d
 6| d 6| d 6} | s| d k r|
 } d } n |
 s|
 d k r | }
 n  t | |  d! k r^t | |  | d <t | |  | d <n  t |
 |  d" k rt |
 d  | d <t |
 d  | d <n  d   | j   D } | SWn i  SXd S(#   si   
    Returns the CPU info gathered from /proc/cpuinfo.
    Returns {} if /proc/cpuinfo is not found.
    i    R   RW   s	   vendor idt   vendors
   model nameRK   t	   processors
   cache sizeR   R   s
   cpu familyt   HardwareR   t   Featuress   cpu MHzs	   cpu speedt   clockR   R  R   t   l3_cache_sizeR   s   0.0i   R   R   R]   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>i  s   	 N(   i    N(   i    i    (   i    i    (   R   R   R:   R   R  R   Rh   R   R   R   R    R   R   R\   R   R  R   R   R   R   (   R6   R7   RW   RT   t
   cache_sizeR   R   R   R  R   R]   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_proc_cpuinfo&  sb    
		c          C   si  yZd \ }  } t  j   s i  St  j   \ } } | d k rA i  S| j d  d j d  d } | j d  } | d k s t  | d | d !j   j   } | j d	  r d
 }  n | j d  r d }  n  | j	 d	  j	 d  j   } t
 |  } i t | |   d 6t | |   d 6t | |   d 6t | |   d 6} d   | j   D } | SWn i  SXd S(   sg   
    Returns the CPU info gathered from cpufreq-info.
    Returns {} if cpufreq-info is not found.
    i   s   0.0i    s   current CPU frequency iss   
R   ii   R   i   R   i	   R   R]   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   i   s   0.0(   R   R#   R;   R   R   t   AssertionErrorR   R    R>   R   R\   R   R   R   (   R   R   R6   R7   t   iR   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_cpufreq_infoo  s4     		c          C   s  yt  j   s i  St  j   \ }  } |  d k r5 i  Si  } t t | d d d d  } | r t |  } d } t | |  | d <t | |  | d <t | |  | d <t | |  | d <n  t t | d d d	  } | r | | d
 <n  t t | d d d  } | r| | d <n  t t | d d d  } | rP| j	   rPt
 |  | d <n  t t | d d d  } | r| j	   rt
 |  | d <n  t t | d d d  }	 |	 r|	 j	   rt
 |	  | d <n  t t | d d d  }
 |
 rt |
  | d <n  t t | d d d  } | r,t |  | d <n  t t | d d d  } | r]t |  | d <n  t t | d d d  } | rt |  | d <n  t t | d d d d  } | r| j   } | j   | | d <n  d   | j   D } | SWn i  SXd S(   sY   
    Returns the CPU info gathered from lscpu.
    Returns {} if lscpu is not found.
    i    s   CPU max MHzs   CPU MHzi   R   R]   R   R   s	   Vendor IDRW   s
   Model nameR   s
   CPU familyR   t   SteppingR   t   ModelR   s	   L1d cachet   l1_data_cache_sizes	   L1i cachet   l1_instruction_cache_sizes   L2 cacheR  s   L3 cacheR  R   R
  c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   R/   R.   R   R  R   R\   R   R   R   R   R   R   R   R   (   R6   R7   R   t   new_hzR   RW   R   R   R   R   R  R  R  R  R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_lscpu  sf    
c          C   sH   t  j   s i  St  j   \ }  } | d k s: |  d k r> i  St |  S(   s{   
    Returns the CPU info gathered from dmesg.
    Returns {} if dmesg is not found or does not have the desired info.
    i    N(   R   R   RA   R   R   (   R6   R7   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_dmesg  s    c    
      C   s  yt  j   s i  St  j   \ }  } | d: k s= |  d k rA i  S| j d  d j   } g  | D] } | t d  k ra | ^ qa } d j |  } t | d d !d  } t | d d !d  } i t	 | d  d 6t	 | d  d	 6t	 | d
  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d 6t	 | d  d  6t	 | d!  d" 6t	 | d  d# 6t	 | d$  d% 6t	 | d&  d' 6t	 | d(  d) 6t	 | d*  d+ 6t	 | d,  d- 6t	 | d.  d/ 6t	 | d0  d1 6t	 | d  d2 6t	 | d  d3 6t	 | d  d4 6t	 | d  d5 6t	 | d  d6 6t	 | d  d7 6} g  | j
   D] \ } } | r| ^ q} | j   i | d8 6}	 d9   |	 j
   D }	 |	 SWn i  SXd: S(;   s   
    Returns the CPU info gathered from lsprop /proc/device-tree/cpus/*/ibm,pa-features
    Returns {} if lsprop is not found or ibm,pa-features does not have the desired info.
    i    s   ibm,pa-featuresi   t   0123456789abcfedR   i   i   t   mmuRP  i   t   slbi   t   runi   t   dabri   t   nei   t   wtrt   mcri	   t   dsisri
   t   lpi   t   rii   t   dabrxi   t   sprg3i   t   rislbi   t   ppt   vpmi   s   dss_2.05i   t   dari   t   ppri   s   dss_2.02i   s   dss_2.06i   t   lsd_in_dscri   t   ugr_in_dscrs   sso_2.06t   let   cfart   ebs   lsq_2.07s   dss_2.07R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>e  s   	 N(   R   R1   RJ   R   R   R    R   R   R   R  R   R   (
   R6   R7   R   t   sR   R   R   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt"   _get_cpu_info_from_ibm_pa_features  sb    +	
+

c          C   sH   t  j   s i  St  j   \ }  } | d k s: |  d k r> i  St |  S(   s   
    Returns the CPU info gathered from /var/run/dmesg.boot.
    Returns {} if dmesg is not found or does not have the desired info.
    i    N(   R   R"   RB   R   R   (   R6   R7   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt)   _get_cpu_info_from_cat_var_run_dmesg_bootl  s    c          C   s2  y#t  j   s i  St  j   \ }  } | d k s= |  d k rA i  St t | d d d  } t t | d d d  } t t | d d d  } t t | t d d  } t t | t d d  } t t | t d d  } t t | d d d	  j   j	   } | j
 t t | d d d
  j   j	    | j
 t t | d d d  j   j	    | j   t |  \ }	 }
 t t | d d d  } t |  } i | d 6| d 6t |
 |	  d 6t | d  d 6t |
 |	  d 6t | d  d 6t |  d 6| d 6| d 6| d 6| d 6} d   | j   D } | SWn i  SXd S(   s[   
    Returns the CPU info gathered from sysctl.
    Returns {} if sysctl is not found.
    i    s   machdep.cpu.vendors   machdep.cpu.brand_strings   machdep.cpu.cache.sizes   machdep.cpu.steppings   machdep.cpu.models   machdep.cpu.familyR   s   machdep.cpu.featuress   machdep.cpu.leaf7_featuress   machdep.cpu.extfeaturess   hw.cpufrequencyRW   R   R   R]   R   R   R  R   R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   R'   RC   R   R   R  Rh   R   R    R   t   extendR   R   R\   R   R   R   R   (   R6   R7   RW   RT   R  R   R   R   R   R   R   R]   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_sysctl}  sF    $++

c          C   s   t    }  |  j t    |  S(   s]   
    Returns the CPU info gathered from sysinfo.
    Returns {} if sysinfo is not found.
    (   t   _get_cpu_info_from_sysinfo_v1t   updatet   _get_cpu_info_from_sysinfo_v2(   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_sysinfo  s    	c          C   s  yt  j   s i  St  j   \ }  } | d k s= |  d k rA i  Sd } | j d  d j d  d } d } t | j d  d j d  d j    } t | j d  d j d  d j    } t | j d	  d j d  d j    } g  } xY | j d
  D]H }	 |	 j d  rx0 |	 j   j   j   D] }
 | j	 |
  q5WqqW| j
   t |  \ } } | } i | d 6| d 6t | |  d 6t | |  d 6t | |  d 6t | |  d 6t |  d 6| d 6| d 6| d 6| d 6} d   | j   D } | SWn i  SXd S(   s]   
    Returns the CPU info gathered from sysinfo.
    Returns {} if sysinfo is not found.
    i    R   s	   CPU #0: "i   s   "
s   , stepping R   s   , model s	   , family s   
s   		RW   R   R   R]   R   R   R  R   R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   R-   RG   R   R   R   R   t
   startswithR    R   R   R   R   R   R   R   (   R6   R7   RW   RT   R  R   R   R   R   R   R   R   R   R]   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR5    sH     ,,,

c          C   s0  y!t  j   s i  St  j   \ }  } | d k s= |  d k rA i  Sd } | j d  d j d  d } d } | j d  d j d  d j   } t | j d  d j d	  d j    } t | j d
  d j d	  d j    } t | j d  d j d	  d j    } d   }	 |	 | j d  d  |	 | j d  d  |	 | j d  d  }
 |
 j   t |  \ } } | } i | d 6| d 6t	 | |  d 6t	 | |  d 6t
 | |  d 6t
 | |  d 6t |  d 6| d 6| d 6| d 6|
 d 6} d   | j   D } | SWn i  SXd S(   s]   
    Returns the CPU info gathered from sysinfo.
    Returns {} if sysinfo is not found.
    i    R   s	   CPU #0: "i   s   "
s
   Signature:s   
s	   stepping R   s   model s   family c         S   sn   g  } xa |  j  d  d D]L } | j d  s3 Pn  x0 | j   j   j  d  D] } | j |  qO Wq W| S(   Ns   
i   s                   t    (   R   R9  R   R    R   (   R7   R   R   t   entry(    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_subsection_flags  s     "s
   Features: s    Extended Features (0x00000001): s    Extended Features (0x80000001): RW   R   R   R]   R   R   R  R   R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>4  s   	 N(   R   R-   RG   R   R   R   R   R   R   R   R   R   R   (   R6   R7   RW   RT   R  t	   signatureR   R   R   R<  R   R   R   R]   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR7    sF     &,,,		-

c          C   s  yt  j s t  j   r i  St  j   \ }  } | d  k sH |  d k rL i  S| j d  } g  | D]' } d | k rb | j   j d  ^ qb } d   | D } | j d  } t |  \ } } | j d  } d } | r t	 |  } n  | j d  }	 |	 r|	 d	 }	 n  | j d
  }
 |
 r.|
 d	 }
 n  d! \ } } } | j d  pX| j d  } | j d  } d | k r| j
 d  t |  d k  r| j
 d  } t | | d  } n  d | k r| j
 d  t |  d k  r| j
 d  } t | | d  } n  d | k r]| j
 d  t |  d k  r]| j
 d  } t | | d  } n  i | j d  d 6| d 6t | |  d 6t | |  d 6t | |  d 6t | |  d 6|	 d 6|
 d 6| d 6| d 6| d 6} d   | j   D } | SWn i  SXd  S("   sm   
    Returns the CPU info gathered from WMI.
    Returns {} if not on Windows, or wmic is not installed.
    i    s   
R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>K  s   	 t   Namet   CurrentClockSpeedi   t   L2CacheSizes    KBt   L3CacheSizeR   t   Descriptiont   CaptionR:  t   Familyi   R  R  t   ManufacturerRW   R   R   R]   R   R   R  R  R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   R   R   (   R   Rf   R8   RL   R   R   R   R3   R   R\   R   R   R   R   R   R   (   R6   R7   R   R0  RT   t   scale_advertisedR   R]   t   scale_actualR  R  R   R   R   t   descriptiont   entriesR  R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_wmic9  sb    4+++
c             s  yt  j s i  St  j   }  t  j   } t  j   } t |  \ } } t  j   } t |  } t |   \ } } t  j	       f d   } i | d  d 6| d  d 6| d  d 6| d  d	 6| d
  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d  d 6| d   d! 6| d"  d# 6| d$  d% 6| d&  d' 6| d(  d) 6| d*  d+ 6| d,  d- 6| d.  d/ 6| d0  d1 6| d2  d3 6| d4  d5 6| d6  d7 6| d8  d9 6| d:  d; 6| d<  d= 6}	 g  |	 j
   D] \ }
 } | r$|
 ^ q$}	 |	 j   i | d> 6|  d? 6t | |  d@ 6t | d  dA 6t | |  dB 6t | d  dC 6|	 dD 6} dE   | j
   D } | SWn i  SXdF S(G   s   
    FIXME: Is missing many of the newer CPU flags like sse3
    Returns the CPU info gathered from the Windows Registry.
    Returns {} if not on Windows.
    c            s   d |  ?} |   @d k } | S(   NI       i    (    (   R
  R  R   (   R`   (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyR    s    
i    RP  i   RQ  i   RR  i   RS  i   RT  i   RU  i   RV  i   RW  i   RX  i	   RY  i
   t   sepamdi   RZ  i   R[  i   R\  i   R]  i   R^  i   R_  i   R`  i   t   seriali   Rb  i   Rc  i   Rd  i   Re  i   Rf  i   Rg  i   Rh  i   Ri  i   Rk  i   Rl  i   R  RW   R   R   R]   R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   Rf   RU   RX   R[   R  R^   R\   R   Ra   R   R   R   R   (   RT   RW   RZ   R  Rc   R]   R   R   R  R   R   R   R   (    (   R`   s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_registry  sr    	+

c          C   s  ywt  j   s t  j   r! i  St  j   \ }  } | d k sK |  d k rO i  St  j   \ }  } | d k sy |  d k r} i  S| j d  d j d  d j   } | j d  d j d  d j   } t | j d  d j d  d j    } t | j d  d j d  d j    } t | j d  d j d  d j    } | j   j d  d	 j   j	   j   } | j
   d
 }	 | j d  d j d  d j   }
 t |
  }
 | j d  d j d  d j   } t |  } i
 | d 6| d 6t |
 |	  d 6t | d  d 6t |
 |	  d 6t | d  d 6| d 6| d 6| d 6| d 6} d   | j   D } | SWn i  SXd S(   sq   
    Returns the CPU info gathered from isainfo and kstat.
    Returns {} if isainfo or kstat are not found.
    i    s   	vendor_id i   s   
s   	brand s
   	stepping s   	model s   	family ii   s   	clock_MHz s   	current_clock_Hz RW   R   R   R]   R   R   R   R   R   R   c         S   s%   i  |  ] \ } } | r | |  q S(    (    (   R   R   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pys
   <dictcomp>  s   	 N(   R   R)   R+   RD   R   RF   R   R   R   R    R   R\   R   R   R   (   R6   t   flag_outputR*   RW   RT   R   R   R   R   R   R   R]   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _get_cpu_info_from_kstat  sH    &&,,,+
&&
c         C   s   d d d d d d d d d	 d
 d d d d d d d d d d d d d d g } x | D] } | j  | d   r |  j  | d   r | | |  | <qU | d k rU | j  d  rU x6 | d D]* } | |  d k r |  d j |  q q W|  d j   qU qU Wd  S(   NRW   R  R   R   R]   R   R   R  Rc   R   RZ   R  R  R  R   R   R   RI  RJ  RK  R   R  R  R  (   R3   R   R   R   (   R   t   new_infoR   RS   R   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   CopyNewFields#  s    	% c          C   sY  t  t j  \ }  } i d d 6d d 6j t j  p8 d } d j t j   } d	 j | |  } i | d
 6t d 6|  d 6| d 6t j	 d 6t j d 6} t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    t
 | t    | S(   sx   
    Returns the CPU info by using the best sources of information for your OS.
    Returns {} if nothing is found.
    s   32 biti   i   i   s   64 biti?   s   unknown bitss   {0}.{1}.{2}.{3}.{4}s	   {0} ({1})t   python_versiont   cpuinfo_versionR  Rc   R   RZ   I       il            l    (   R  R   RZ   R3   R   t   maxsizeR   t   version_infot   CPUINFO_VERSIONRe   RQ  RJ  RM  R  R  R  R4  RO  R  R2  R1  R8  R  (   R  Rc   t   friendly_maxsizet   friendly_versiont   PYTHON_VERSIONR   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   get_cpu_info5  s0    &
c          C   s4   t  t j  \ }  } |  d k r0 t d   n  d  S(   NR   R   R  R  R  sA   py-cpuinfo currently only works on X86 and some PPC and ARM CPUs.(   R   R   R  R  R  (   R  R   RZ   R  (   R  Rc   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   _check_archr  s    c          C   s(  y t    Wn: t k
 rG }  t j j t |   d  t j d  n Xt   } | rd j | j	 d d   GHd j | j	 d d   GHd j | j	 d	 d   GHd
 j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd j | j	 d d   GHd  j | j	 d! d   GHd" j | j	 d# d   GHd$ j | j	 d% d   GHd& j | j	 d' d   GHd( j | j	 d) d   GHd* j | j	 d+ d   GHd, j | j	 d- d   GHd. j | j	 d/ d   GHd0 j | j	 d1 d   GHd2 j | j	 d3 d   GHd4 j | j	 d5 d   GHd6 j d7 j
 | j	 d8 d    GHn t j j d9  t j d  d  S(:   Ns   
i   s   python version: {0}RR  R   s   cpuinfo version: {0}RS  s   Vendor ID: {0}RW   s   Hardware Raw: {0}R  s
   Brand: {0}R   s   Hz Advertised: {0}R   s   Hz Actual: {0}R]   s   Hz Advertised Raw: {0}R   s   Hz Actual Raw: {0}R   s	   Arch: {0}R  s	   Bits: {0}Rc   s
   Count: {0}R   s   Raw Arch String: {0}RZ   s   L1 Data Cache Size: {0}R  s   L1 Instruction Cache Size: {0}R  s   L2 Cache Size: {0}R  s   L2 Cache Line Size: {0}R  s   L2 Cache Associativity: {0}R  s   L3 Cache Size: {0}R  s   Stepping: {0}R   s
   Model: {0}R   s   Family: {0}R   s   Processor Type: {0}RI  s   Extended Model: {0}RJ  s   Extended Family: {0}RK  s
   Flags: {0}s   , R   s   Failed to find cpu info
(   R[  R  R   R{   t   writet   strt   exitRZ  R   R3   R   (   t   errR   (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   mainw  sF    	&t   __main__(   t   freeze_support(D   RV  R   R   RH   R   R  R   Rd   R  Rl   Rn   R~   t   _winregRN   t   ImportErrorR_  RU  R   R   R    t!   multiprocessing.popen_spawn_win32t   popen_spawn_win32t   forkingt   multiprocessing.popen_forkt
   popen_forkt   multiprocessing.forkingR   R   t   objectR   Rv   Ry   R   R5   R   R   R   R   R   R   R\   R   R   R   R  R  R  R  R  R  R  R  R  R1  R2  R4  R8  R5  R7  RJ  RM  RO  RQ  RZ  R[  R`  R   Rb  (    (    (    s4   lib/python2.7/site-packages/conda/_vendor/cpuinfo.pyt   <module>    s   							 				.	[	&	  i	@	+	I	(	I		y		9			9	A	O	_	<		=		*
