§
    ±ÛgmŒ  ã                   ó`  — d 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m	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ 	 ddl
mZ no# e $ rgZ! e"e!¦  «         #                    ¦   «          $                    d¦  «        r1 ej%        ¦   «         d         dk     rdZ&e&dz  Z&e&dz  Z& e'e&¦  «        e!‚‚ dZ![!ww xY wg d¢Z(dZ)d Z*d!ej+        v Z, ej-        d"d#d$i¦  «        Z.e.j/        Z/ej0        ej1        ej2        ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        ej;        ej<        ej=        ej>        ej?        ej@        ejA        ejB        ejC        ejD        ejE        ejF        e)ejG        ejH        iZI G d%„ d&ej-        ¦  «        ZJ eK¦   «          L                    eJjM        ¦  «          G d'„ d(ej-        ¦  «        ZN eK¦   «          L                    eNjM        ¦  «          eOdƒi d)d“d*d“d+d,“d-d.“d/d0“d1d2“d3d“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“ŽZP e	dRg dS¢¦  «        ZQ e	dTg dU¢¦  «        ZR e	dVg dW¢¦  «        ZS e	dXeSjT        dYz   ¦  «        ZU e	dZd[d\g¦  «        ZV e	d]d^d_ W                    eVjT        ¦  «        z   ¦  «        ZX e	d`g da¢¦  «        ZY ejZ        db¬c¦  «        dd„ ¦   «         Z[ede„ ¦   «         Z\df„ Z]dg„ Z^ej_        Z_dh„ Z`di„ Zadj„ Zbdk„ Zcdl„ Zddm„ Zedn„ Zfdo„ Zgdpahdq„ Zid„dr„Zjds„ Zkdt„ Zldu„ Zmdv„ Zndaodw„ Zpdx„ Zqdy„ Zrdz„ Zs G d{„ d|¦  «        Zteju        Zuejv        Zvejw        Zwd}„ Zxd…d~„Zyd„ Zzd€„ Z{ G d�„ d‚¦  «        Z|dS )†z Windows platform implementation.é    N)Ú
namedtupleé   )Ú_common)ÚENCODING)ÚAccessDenied)ÚNoSuchProcess)ÚTimeoutExpired)Ú	conn_tmap)Úconn_to_ntuple)Údebug)Úisfile_strict)Úmemoize)Úmemoize_when_activated)Úparse_environ_block)Úusage_percent)ÚABOVE_NORMAL_PRIORITY_CLASS)ÚBELOW_NORMAL_PRIORITY_CLASS)ÚHIGH_PRIORITY_CLASS)ÚIDLE_PRIORITY_CLASS)ÚNORMAL_PRIORITY_CLASS)ÚREALTIME_PRIORITY_CLASS)Ú_psutil_windowszdll load failedé   z3this Windows version is too old (< Windows Vista); z:psutil 3.4.2 is the latest version which supports Windows z2000, XP and 2003 server)Úwin_service_iterÚwin_service_getr   r   r   r   r   r   ÚIOPRIO_VERYLOWÚ
IOPRIO_LOWÚIOPRIO_NORMALÚIOPRIO_HIGHÚCONN_DELETE_TCBÚAF_LINKÚ
DELETE_TCBi+  Ú__pypy__ÚAddressFamilyr!   éÿÿÿÿc                   ó&   — e Zd ZeZeZeZeZeZeZdS )ÚPriorityN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   © ó    úG/granary/edev/quantum/lib/python3.11/site-packages/psutil/_pswindows.pyr'   r'   e   s4   € € € € € Ø"=ÐØ"=ÐØ-ÐØ-ÐØ1ÐØ5ÐÐÐr,   r'   c                   ó   — e Zd ZdZdZdZdZdS )Ú
IOPriorityr   r   é   é   N)r(   r)   r*   r   r   r   r   r+   r,   r-   r/   r/   q   s"   € € € € € Ø€NØ€JØ€MØ€K€K€Kr,   r/   Únum_handlesÚctx_switchesÚ	user_timer0   Úkernel_timer1   Úcreate_timeé   Únum_threadsé   Ú	io_rcountÚ	io_wcounté   Ú	io_rbytesé   Ú	io_wbytesé	   Úio_count_othersé
   Úio_bytes_othersé   Únum_page_faultsé   Ú	peak_wseté   Úwseté   Úpeak_paged_poolé   Ú
paged_poolé   Úpeak_non_paged_poolé   Únon_paged_poolé   Úpagefileé   Úpeak_pagefileé   Úmem_privateé   Ú	scputimes)ÚuserÚsystemÚidleÚ	interruptÚdpcÚsvmem)ÚtotalÚ	availableÚpercentÚusedÚfreeÚpmem)ÚrssÚvmsrE   rG   rI   rK   rM   Úpeak_nonpaged_poolÚnonpaged_poolrS   rU   ÚprivateÚpfullmem)ÚussÚpmmap_groupedÚpathrf   Ú	pmmap_extzaddr perms ú Úpio)Ú
read_countÚwrite_countÚ
read_bytesÚwrite_bytesÚother_countÚother_bytesi   )Úmaxsizec                 óø   — d                      |                      d¦  «        dd…         ¦  «        }t          j        |¦  «        }| t	          |¦  «        d…         }t
          j                              ||¦  «        S )zžConvert paths using native DOS format like:
        "\Device\HarddiskVolume1\Windows\systemew\file.txt"
    into:
        "C:\Windows\systemew\file.txt".
    ú\Nr1   )ÚjoinÚsplitÚcextÚQueryDosDeviceÚlenÚosrn   )ÚsÚrawdriveÚdriveletterÚ	remainders       r-   Úconvert_dos_pathr…   ¸   sb   € ð �yŠy˜Ÿš ™œ r¨ rÔ*Ñ+Ô+€HÝÔ% hÑ/Ô/€KØ•#�h‘-”-�/�/Ô"€IÝŒ7�<Š<˜ YÑ/Ô/Ð/r,   c                  ó(   — t          j        ¦   «         S ©N)r}   Úgetpagesizer+   r,   r-   rˆ   rˆ   Å   s   € åÔÑÔÐr,   c                  óœ   — t          j        ¦   «         } | \  }}}}|}|}|}||z
  }t          ||z
  |d¬¦  «        }	t          |||	||¦  «        S )z&System virtual memory as a namedtuple.r   ©Úround_)r}   Úvirtual_memr   r_   )
ÚmemÚtotphysÚ	availphysÚ_totsysÚ	_availsysr`   Úavailrd   rc   rb   s
             r-   Úvirtual_memoryr“   Ï   sd   € å
Ô
Ñ
Ô
€CØ-0Ñ*€GˆY˜ Ø€EØ€EØ€DØ�5‰=€DÝ˜U U™]¨U¸1Ð=Ñ=Ô=€GÝ�˜˜w¨¨dÑ3Ô3Ð3r,   c                  ó  — t          j        ¦   «         } | d         }| d         }||z
  }|dk    r)t          j        ¦   «         }t          d|z  |z  ¦  «        }nd}d}||z
  }t	          |d¦  «        }t          j        ||||dd¦  «        S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r0   g{®Gáz„?ç        r   )r}   rŒ   Úswap_percentÚintÚroundr   Ússwap)r�   Ú
total_physÚtotal_systemr`   Úpercentswaprc   rd   rb   s           r-   Úswap_memoryr�   Û   sœ   € å
Ô
Ñ
Ô
€Cà�Q”€JØ�q”6€Lð ˜:Ñ%€Eð
 ˆq‚y€yÝÔ'Ñ)Ô)ˆÝ�4˜+Ñ%¨Ñ-Ñ.Ô.ˆˆàˆØˆà�4‰<€DÝ�K Ñ#Ô#€GÝŒ=˜  d¨G°Q¸Ñ:Ô:Ð:r,   c                 óî   — t          | t          ¦  «        r|                      t          d¬¦  «        } t	          j        | ¦  «        \  }}||z
  }t          ||d¬¦  «        }t          j        ||||¦  «        S )z'Return disk usage associated with path.Ústrict)Úerrorsr   rŠ   )	Ú
isinstanceÚbytesÚdecoder   r}   Ú
disk_usager   r   Ú
sdiskusage)rn   r`   rd   rc   rb   s        r-   r¤   r¤   ý   sr   € å�$�ÑÔð 6ð �{Š{�8¨Hˆ{Ñ5Ô5ˆÝ”/ $Ñ'Ô'�K€Eˆ4Ø�4‰<€DÝ˜D %°Ð2Ñ2Ô2€GÝÔ˜e T¨4°Ñ9Ô9Ð9r,   c                 óB   — t          j        | ¦  «        }d„ |D ¦   «         S )zReturn disk partitions.c                 ó*   — g | ]}t          j        |Ž ‘ŒS r+   )r   Ú	sdiskpart)Ú.0Úxs     r-   ú
<listcomp>z#disk_partitions.<locals>.<listcomp>  s    € Ð3Ð3Ð3 a�GÔ˜qÐ!Ð3Ð3Ð3r,   )r}   Údisk_partitions)ÚallÚrawlists     r-   r¬   r¬   	  s&   € åÔ" 3Ñ'Ô'€GØ3Ð3¨7Ð3Ñ3Ô3Ð3r,   c                  óÀ   — t          j        ¦   «         \  } }}t          d„ t          t          j        ¦   «         Ž D ¦   «         Ž }t          | |||j        |j        ¦  «        S )z)Return system CPU times as a named tuple.c                 ó,   — g | ]}t          |¦  «        ‘ŒS r+   )Úsum)r©   Úns     r-   r«   zcpu_times.<locals>.<listcomp>  s   € ÐKÐKÐK¨1¥ A¡¤ÐKÐKÐKr,   )r}   Ú	cpu_timesrY   ÚzipÚper_cpu_timesr]   r^   )rZ   r[   r\   Úpercpu_summeds       r-   r³   r³     sb   € åœÑ)Ô)Ñ€Dˆ&�$õ ÐKÐKµµTÔ5GÑ5IÔ5IÐ0JÐKÑKÔKÐL€MÝØˆf�d˜MÔ3°]Ô5Fñô ð r,   c                  ó’   — g } t          j        ¦   «         D ]0\  }}}}}t          |||||¦  «        }|                      |¦  «         Œ1| S )z6Return system per-CPU times as a list of named tuples.)r}   rµ   rY   Úappend)ÚretrZ   r[   r\   r]   r^   Úitems          r-   rµ   rµ      sY   € à
€CÝ.2Ô.@Ñ.BÔ.Bð ð Ñ*ˆˆf�d˜I sÝ˜˜v t¨Y¸Ñ<Ô<ˆØ�
Š
�4ÑÔÐÐØ€Jr,   c                  ó(   — t          j        ¦   «         S )z0Return the number of logical CPUs in the system.)r}   Úcpu_count_logicalr+   r,   r-   r¼   r¼   )  s   € åÔ!Ñ#Ô#Ð#r,   c                  ó(   — t          j        ¦   «         S )z-Return the number of CPU cores in the system.)r}   Úcpu_count_coresr+   r,   r-   r¾   r¾   .  s   € åÔÑ!Ô!Ð!r,   c                  ód   — t          j        ¦   «         \  } }}}d}t          j        | |||¦  «        S )zReturn CPU statistics.r   )r}   Ú	cpu_statsr   Ú	scpustats)r3   Ú
interruptsÚ_dpcsÚsyscallsÚsoft_interruptss        r-   rÀ   rÀ   3  s;   € å04´Ñ0@Ô0@Ñ-€L�*˜e XØ€OÝÔØ�j /°8ñô ð r,   c                  ó”   — t          j        ¦   «         \  } }d}t          j        t	          | ¦  «        |t	          |¦  «        ¦  «        gS )zMReturn CPU frequency.
    On Windows per-cpu frequency is not supported.
    r•   )r}   Úcpu_freqr   ÚscpufreqÚfloat)ÚcurrÚmax_Úmin_s      r-   rÇ   rÇ   <  s<   € õ ”‘”�J€Dˆ$Ø€DÝÔ�U 4™[œ[¨$µ°d±´Ñ<Ô<Ð=Ð=r,   Fc                  ó’   — t           st          j        ¦   «          da t          j        ¦   «         } t	          d„ | D ¦   «         ¦  «        S )z„Return the number of processes in the system run queue averaged
    over the last 1, 5, and 15 minutes respectively as a tuple.
    Tc              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS )r0   N)r˜   )r©   Úloads     r-   ú	<genexpr>zgetloadavg.<locals>.<genexpr>T  s*   è è € Ð6Ð6 D•�t˜Q‘”Ð6Ð6Ð6Ð6Ð6Ð6r,   )Ú_loadavg_inititializedr}   Úinit_loadavg_counterÚ
getloadavgÚtuple)Ú	raw_loadss    r-   rÓ   rÓ   H  sM   € õ "ð &ÝÔ!Ñ#Ô#Ð#Ø!%Ðõ ”Ñ!Ô!€IÝÐ6Ð6¨IÐ6Ñ6Ô6Ñ6Ô6Ð6r,   c                 ó  — t           |          \  }}t          j        |||¦  «        }t          ¦   «         }|D ]E}|\  }}}	}
}}}t	          |||	|
||t
          |dk    r|nd¬¦  «        }|                     |¦  «         ŒFt          |¦  «        S )zˆReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    r%   N)Úpid)r
   r}   Únet_connectionsÚsetr   ÚTCP_STATUSESÚaddÚlist)ÚkindÚ_pidÚfamiliesÚtypesr®   r¹   rº   ÚfdÚfamÚtypeÚladdrÚraddrÚstatusr×   Únts                  r-   rØ   rØ   \  s¨   € õ   ”o�O€HˆeÝÔ" 4¨°5Ñ9Ô9€GÝ
‰%Œ%€CØð ð ˆØ37Ñ0ˆˆC��u˜e V¨SÝØØØØØØÝØ˜r’z�z�� tð	
ñ 	
ô 	
ˆð 	�Š�‰ŒˆˆÝ�‰9Œ9Ðr,   c                  óú   — i } t          j        ¦   «         }|                     ¦   «         D ]P\  }}|\  }}}}t          t          d¦  «        rt	          j        |¦  «        }t	          j        ||||d¦  «        | |<   ŒQ| S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexÚ )r}   Únet_if_statsÚitemsÚhasattrr   ré   Ú	snicstats)r¹   ÚrawdictÚnamerì   ÚisupÚduplexÚspeedÚmtus           r-   rë   rë   s  s…   € à
€CÝÔÑ!Ô!€GØ—}’}‘”ð Dð D‰ˆˆeØ#(Ñ ˆˆf�e˜SÝ•7˜KÑ(Ô(ð 	/ÝÔ& vÑ.Ô.ˆFÝÔ% d¨F°E¸3ÀÑCÔCˆˆD‰	ˆ	Ø€Jr,   c                  ó(   — t          j        ¦   «         S )zsReturn network I/O statistics for every network interface
    installed on the system as a dict of raw tuples.
    )r}   Únet_io_countersr+   r,   r-   rö   rö     s   € õ ÔÑ!Ô!Ð!r,   c                  ó(   — t          j        ¦   «         S )z,Return the addresses associated to each NIC.)r}   Únet_if_addrsr+   r,   r-   rø   rø   †  s   € åÔÑÔÐr,   c                  ó   — t          j        ¦   «         \  } }}}| dk    }t          |dz  ¦  «        }t          |dz  ¦  «        }|rdS |s|rt          j        }n|dk    rt          j        }t          j        |||¦  «        S )zReturn battery information.r   é€   r>   Nr%   )r}   Úsensors_batteryÚboolr   ÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNÚsbattery)Úacline_statusÚflagsrb   ÚsecsleftÚpower_pluggedÚ
no_batteryÚchargings          r-   rû   rû   �  s‘   € õ
 /3Ô.BÑ.DÔ.DÑ+€M�5˜' 8Ø! QÒ&€MÝ�e˜c‘kÑ"Ô"€JÝ�E˜A‘I‰Œ€Hàð ØˆtØð .˜ð .ÝÔ/ˆˆØ	�RŠˆÝÔ-ˆåÔ˜G X¨}Ñ=Ô=Ð=r,   c                  óŽ   — t          t          j        ¦   «         ¦  «        } t          | t          z
  ¦  «        dk    rt          S | a| S )z:The system boot time expressed in seconds since the epoch.r   )rÉ   r}   Ú	boot_timeÚabsÚ_last_btime)r¹   s    r-   r  r  ¬  sA   € õ •”Ñ Ô Ñ
!Ô
!€CÝ
ˆ3•ÑÑÔ Ò"Ð"ÝÐàˆØˆ
r,   c                  ó    — g } t          j        ¦   «         }|D ]5}|\  }}}t          j        |d||d¦  «        }|                      |¦  «         Œ6| S )z:Return currently connected users as a list of namedtuples.N)r}   Úusersr   Úsuserr¸   )Úretlistr®   rº   rZ   ÚhostnameÚtstamprç   s          r-   r  r  º  s^   € à€GÝŒj‰lŒl€GØð ð ˆØ!%Ñˆˆh˜ÝŒ]˜4  x°¸Ñ>Ô>ˆØ�Š�rÑÔÐÐØ€Nr,   c               #   ó`   K  — t          j        ¦   «         D ]\  } }t          | |¦  «        V — ŒdS )z*Yields a list of WindowsService instances.N)r}   Úwinservice_enumerateÚWindowsService)rð   Údisplay_names     r-   r   r   Ê  sF   è è € å"Ô7Ñ9Ô9ð 1ð 1ÑˆˆlÝ˜T <Ñ0Ô0Ð0Ð0Ð0Ð0ð1ð 1r,   c                 ód   — t          | d¦  «        }|                     ¦   «         d         |_        |S )zBOpen a Windows service and return it as a WindowsService instance.Nr  )r  Ú_query_configÚ_display_name)rð   Úservices     r-   r   r   Ð  s/   € å˜T 4Ñ(Ô(€GØ#×1Ò1Ñ3Ô3°NÔC€GÔØ€Nr,   c                   ó’   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej        d	„ ¦   «         Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r  z(Represents an installed Windows service.c                 ó"   — || _         || _        d S r‡   )Ú_namer  )Úselfrð   r  s      r-   Ú__init__zWindowsService.__init__Ú  s   € ØˆŒ
Ø)ˆÔÐÐr,   c                 óH   — d| j         ›d| j        ›d�}| j        j        › |› �S )Nz(name=z, display_name=ú))r  r  Ú	__class__r(   )r  Údetailss     r-   Ú__str__zWindowsService.__str__Þ  s5   € ØO˜4œ:ÐOÐO¸Ô8JÐOÐOÐOˆØ”.Ô)Ð4¨7Ð4Ð4Ð4r,   c                 óR   — d|                       ¦   «         › dt          | ¦  «        › d�S )Nú<z at ú>)r!  Úid©r  s    r-   Ú__repr__zWindowsService.__repr__â  s)   € Ø2�4—<’<‘>”>Ð2Ð2¥r¨$¡x¤xÐ2Ð2Ð2Ð2r,   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r‡   )r¡   r  ÚNotImplementedr  ©r  Úothers     r-   Ú__eq__zWindowsService.__eq__å  s+   € õ ˜%¥Ñ0Ô0ð 	"Ý!Ð!ØŒz˜Uœ[Ò(Ð(r,   c                 ó   — | |k     S r‡   r+   r*  s     r-   Ú__ne__zWindowsService.__ne__ì  s   € Ø˜5’=Ð Ð r,   c                 ó¼   — |                       ¦   «         5  t          j        | j        ¦  «        \  }}}}d d d ¦  «         n# 1 swxY w Y   t	          ||||¬¦  «        S )N)r  ÚbinpathÚusernameÚ
start_type)Ú_wrap_exceptionsr}   Úwinservice_query_configr  Údict)r  r  r0  r1  r2  s        r-   r  zWindowsService._query_configï  s«   € Ø×"Ò"Ñ$Ô$ð 	ð 	åÔ,¨T¬ZÑ8Ô8ñ 8ˆL˜' 8¨Zð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 Ø%ØØØ!ð	
ñ 
ô 
ð 	
s   •A Á AÁAc                 óÄ   — |                       ¦   «         5  t          j        | j        ¦  «        \  }}d d d ¦  «         n# 1 swxY w Y   |dk    rd }t	          ||¬¦  «        S )Nr   )ræ   r×   )r3  r}   Úwinservice_query_statusr  r5  )r  ræ   r×   s      r-   Ú_query_statuszWindowsService._query_statusü  s±   € Ø×"Ò"Ñ$Ô$ð 	Cð 	CÝÔ6°t´zÑBÔB‰KˆF�Cð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cà�!Š8ˆ8ØˆCÝ˜6 sÐ+Ñ+Ô+Ð+s   •>¾AÁAc              #   ó  K  — 	 dV — dS # t           $ rm}| j        }t          |¦  «        rd|›d�}t          d||¬¦  «        |‚|j        t
          j        t
          j        hv rd|›d�}t          d||¬¦  «        |‚‚ d}~ww xY w)z{Ctx manager which translates bare OSError and WindowsError
        exceptions into NoSuchProcess and AccessDenied.
        Nzservice z( is not querable (not enough privileges)©r×   rð   Úmsgz does not exist)	ÚOSErrorr  Úis_permission_errr   Úwinerrorr}   ÚERROR_INVALID_NAMEÚERROR_SERVICE_DOES_NOT_EXISTr   )r  Úerrrð   r;  s       r-   r3  zWindowsService._wrap_exceptions  sÆ   è è € ð
	ØˆEˆEˆEˆEˆEøÝð 	ð 	ð 	Ø”:ˆDÝ  Ñ%Ô%ð àO˜tÐOÐOÐOð õ # t°$¸CÐ@Ñ@Ô@ÀcÐIØ”ÝÔ'ÝÔ1ð"ð ð ð 9 Ð8Ð8Ð8�Ý#¨°4¸SÐAÑAÔAÀsÐJàøøøøð	øøøs   „
 Š
B”A(A<Á<Bc                 ó   — | j         S )z¢The service name. This string is how a service is referenced
        and can be passed to win_service_get() to get a new
        WindowsService instance.
        )r  r&  s    r-   rð   zWindowsService.name  s   € ð
 ŒzÐr,   c                 ó   — | j         S )z_The service display name. The value is cached when this class
        is instantiated.
        )r  r&  s    r-   r  zWindowsService.display_name#  s   € ð Ô!Ð!r,   c                 ó6   — |                       ¦   «         d         S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        r0  ©r  r&  s    r-   r0  zWindowsService.binpath)  s   € ð ×!Ò!Ñ#Ô# IÔ.Ð.r,   c                 ó6   — |                       ¦   «         d         S )z,The name of the user that owns this service.r1  rE  r&  s    r-   r1  zWindowsService.username/  s   € à×!Ò!Ñ#Ô# JÔ/Ð/r,   c                 ó6   — |                       ¦   «         d         S )zRA string which can either be "automatic", "manual" or
        "disabled".
        r2  rE  r&  s    r-   r2  zWindowsService.start_type3  s   € ð ×!Ò!Ñ#Ô# LÔ1Ð1r,   c                 ó6   — |                       ¦   «         d         S )zzThe process PID, if any, else None. This can be passed
        to Process class to control the service's process.
        r×   ©r8  r&  s    r-   r×   zWindowsService.pid;  s   € ð ×!Ò!Ñ#Ô# EÔ*Ð*r,   c                 ó6   — |                       ¦   «         d         S )zService status as a string.ræ   rI  r&  s    r-   ræ   zWindowsService.statusA  s   € à×!Ò!Ñ#Ô# HÔ-Ð-r,   c                 óN   — t          j        |                      ¦   «         ¦  «        S )zService long description.)r}   Úwinservice_query_descrrð   r&  s    r-   ÚdescriptionzWindowsService.descriptionE  s   € åÔ*¨4¯9ª9©;¬;Ñ7Ô7Ð7r,   c                 ó  — |                       ¦   «         }|                     |                      ¦   «         ¦  «         |                      ¦   «         |d<   |                      ¦   «         |d<   |                      ¦   «         |d<   |S )zUUtility method retrieving all the information above as a
        dictionary.
        rð   r  rM  )r  Úupdater8  rð   r  rM  )r  Úds     r-   Úas_dictzWindowsService.as_dictK  su   € ð ×ÒÑ Ô ˆØ	�Š�×#Ò#Ñ%Ô%Ñ&Ô&Ð&Ø—I’I‘K”Kˆˆ&‰	Ø ×-Ò-Ñ/Ô/ˆˆ.ÑØ×+Ò+Ñ-Ô-ˆˆ-ÑØˆr,   N)r(   r)   r*   Ú__doc__r  r!  r'  r,  r.  r  r8  Ú
contextlibÚcontextmanagerr3  rð   r  r0  r1  r2  r×   ræ   rM  rQ  r+   r,   r-   r  r  ×  s)  € € € € € Ø2Ð2ð*ð *ð *ð5ð 5ð 5ð3ð 3ð 3ð)ð )ð )ð!ð !ð !ð
ð 
ð 
ð,ð ,ð ,ð Ôðð ñ Ôðð0ð ð ð"ð "ð "ð/ð /ð /ð0ð 0ð 0ð2ð 2ð 2ð+ð +ð +ð.ð .ð .ð8ð 8ð 8ð	ð 	ð 	ð 	ð 	r,   r  c                 ó¨   — t          | t          ¦  «        s
J | ¦   «         ‚t          | t          ¦  «        p| j        t          j        t          j        hv S )z*Return True if this is a permission error.)r¡   r<  ÚPermissionErrorr>  r}   ÚERROR_ACCESS_DENIEDÚERROR_PRIVILEGE_NOT_HELD)Úexcs    r-   r=  r=  ˆ  sR   € å�c�7Ñ#Ô#Ð(Ð( SÑ(Ô(Ð(Ý�c�?Ñ+Ô+ð ¨s¬|ÝÔ ÝÔ%ð@ð 0ð r,   c                 óÐ   — t          | t          ¦  «        s
J | ¦   «         ‚t          | ¦  «        rt          ||¬¦  «        S t          | t          ¦  «        rt          ||¬¦  «        S | ‚)z3Convert OSError into NoSuchProcess or AccessDenied.©r×   rð   )r¡   r<  r=  r   ÚProcessLookupErrorr   )rY  r×   rð   s      r-   Úconvert_oserrorr]  ‘  sn   € å�c�7Ñ#Ô#Ð(Ð( SÑ(Ô(Ð(Ý˜ÑÔð 0Ý ¨$Ð/Ñ/Ô/Ð/Ý�#Õ)Ñ*Ô*ð 1Ý ¨4Ð0Ñ0Ô0Ð0Ø
€Ir,   c                 óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                 ó|   •— 	  ‰| g|¢R i |¤ŽS # t           $ r"}t          || j        | j        ¬¦  «        |‚d }~ww xY w)Nr[  )r<  r]  r×   r  )r  ÚargsÚkwargsrA  Úfuns       €r-   Úwrapperz wrap_exceptions.<locals>.wrapperž  sg   ø€ ð	OØ�3�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-øÝð 	Oð 	Oð 	OÝ! #¨4¬8¸$¼*ÐEÑEÔEÈ3ÐNøøøøð	Oøøøs   ƒ �
;™6¶;©Ú	functoolsÚwraps©rb  rc  s   ` r-   Úwrap_exceptionsrh  ›  s?   ø€ õ „_�SÑÔðOð Oð Oð Oñ ÔðOð €Nr,   c                 óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )z�Workaround for https://github.com/giampaolo/psutil/issues/875.
    See: https://stackoverflow.com/questions/4457745#4457745.
    c                 ó:  •— d}d}t          |¦  «        D ]a}	  ‰| g|¢R i |¤Žc S # t          $ rD}|}|j        t          k    r,t	          j        |¦  «         t          |dz  d¦  «        }Y d }~ŒY‚ d }~ww xY w‰› d|› d|› �}t          | j        | j	        |¬¦  «        ‚)Nç-Cëâ6?é!   r0   ç{®Gáz¤?z	 retried z: times, converted to AccessDenied as it's still returning r:  )
Úranger<  r>  ÚERROR_PARTIAL_COPYÚtimeÚsleepÚminr   r×   r  )	r  r`  ra  ÚdelayÚtimesÚ_rA  r;  rb  s	           €r-   rc  z)retry_error_partial_copy.<locals>.wrapper­  sø   ø€ àˆØˆÝ�u‘”ð 		ð 		ˆAðØ�s˜4Ð1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1øÝð ð ð Ø�Ø”<Õ#5Ò5Ð5Ý”J˜uÑ%Ô%Ð%Ý ¨¡	¨4Ñ0Ô0�EØ�H�H�H�HØøøøøðøøøð ð %ð %˜Uð %ð %Ø"ð%ð %ð 	õ ˜tœx¨d¬j¸cÐBÑBÔBÐBs   ˜&¦
A4°9A/Á.A/Á/A4rd  rg  s   ` r-   Úretry_error_partial_copyrv  ¨  s?   ø€ õ
 „_�SÑÔðCð Cð Cð Cñ ÔðCð& €Nr,   c                   ó  — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d„ Z
eed„ ¦   «         ¦   «         Zeed	„ ¦   «         ¦   «         Zeed
„ ¦   «         ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed*d„¦   «         Zed„ ¦   «         Zed+d„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zeed„ ¦   «         ¦   «         Ze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'„ ¦   «         Z)ed(„ ¦   «         Z*ed)„ ¦   «         Z+dS )-ÚProcessz1Wrapper class around underlying C implementation.)Ú_cacher  Ú_ppidr×   c                 ó0   — || _         d | _        d | _        d S r‡   )r×   r  rz  )r  r×   s     r-   r  zProcess.__init__É  s   € ØˆŒØˆŒ
ØˆŒ
ˆ
ˆ
r,   c                 ón   — | j                              | ¦  «         | j                             | ¦  «         d S r‡   )Ú
_proc_infoÚcache_activateÚexer&  s    r-   Úoneshot_enterzProcess.oneshot_enterÐ  s4   € ØŒ×&Ò& tÑ,Ô,Ð,ØŒ×Ò Ñ%Ô%Ð%Ð%Ð%r,   c                 ón   — | j                              | ¦  «         | j                             | ¦  «         d S r‡   )r}  Úcache_deactivater  r&  s    r-   Úoneshot_exitzProcess.oneshot_exitÔ  s4   € ØŒ×(Ò(¨Ñ.Ô.Ð.ØŒ×!Ò! $Ñ'Ô'Ð'Ð'Ð'r,   c                 ó†   — t          j        | j        ¦  «        }t          |¦  «        t          t          ¦  «        k    sJ ‚|S )zOReturn multiple information about this process as a
        raw tuple.
        )r}   Ú	proc_infor×   r   Ú	pinfo_map©r  r¹   s     r-   r}  zProcess._proc_infoØ  s7   € õ
 Œn˜TœXÑ&Ô&ˆÝ�3‰xŒx�3�y™>œ>Ò)Ð)Ð)Ð)Øˆ
r,   c                 ó˜   — | j         dk    rdS | j         dk    rdS t          j                             |                      ¦   «         ¦  «        S )zbReturn process name, which on Windows is always the final
        part of the executable.
        r   zSystem Idle Processr7   ÚSystem)r×   r€   rn   Úbasenamer  r&  s    r-   rð   zProcess.nameá  sC   € ð Œ8�qŠ=ˆ=Ø(Ð(ØŒ8�qŠ=ˆ=Ø�8ÝŒw×Ò §¢¡
¤
Ñ+Ô+Ð+r,   c                 óZ  — t           rf	 t          j        | j        ¦  «        }nd# t          $ r>}|j        dk    r-t          |›d�¦  «         t          | j        | j        ¦  «        |‚‚ d }~ww xY wt          j        | j        ¦  «        }| 	                    d¦  «        rt          |¦  «        S |S )Né   z translated into AccessDeniedrz   )ÚPYPYr}   Úproc_exer×   r<  Úerrnor   r   r  Ú
startswithr…   )r  r  rA  s      r-   r  zProcess.exeí  sº   € õ ð 	*ðÝ”m D¤HÑ-Ô-��øÝð ð ð ð ”9 ’?�?Ý˜SÐAÐAÐAÑBÔBÐBÝ& t¤x°´Ñ<Ô<À#ÐEØøøøøðøøøõ ”- ¤Ñ)Ô)ˆCØ�>Š>˜$ÑÔð 	)Ý# CÑ(Ô(Ð(Øˆ
s   ‰# £
A+­9A&Á&A+c                 ó(  — t           j        t           j        k    r^	 t          j        | j        d¬¦  «        S # t
          $ r5}t          |¦  «        r t          j        | j        d¬¦  «        cY d }~S ‚ d }~ww xY wt          j        | j        d¬¦  «        S )NT)Úuse_pebF)r}   ÚWINVERÚWINDOWS_8_1Úproc_cmdliner×   r<  r=  ©r  rA  s     r-   ÚcmdlinezProcess.cmdline   s¤   € õ Œ;�$Ô*Ò*Ð*ðÝÔ(¨¬¸4Ð@Ñ@Ô@Ð@øÝð ð ð Ý$ SÑ)Ô)ð ÝÔ,¨T¬X¸uÐEÑEÔEÐEÐEÐEÐEÐEÐEàøøøøð	øøøõ Ô$ T¤X°tÐ<Ñ<Ô<Ð<s!   œ7 ·
A6Á)A1Á*A6Á0A1Á1A6c                 óR   — t          j        | j        ¦  «        }t          |¦  «        S r‡   )r}   Úproc_environr×   r   )r  r�   s     r-   ÚenvironzProcess.environ  s$   € õ Ô˜dœhÑ'Ô'ˆÝ" 1Ñ%Ô%Ð%r,   c                 óˆ   — 	 t          ¦   «         | j                 S # t          $ r t          | j        | j        ¦  «        d ‚w xY wr‡   )Úppid_mapr×   ÚKeyErrorr   r  r&  s    r-   ÚppidzProcess.ppid  sN   € ð	@Ý‘:”:˜dœhÔ'Ð'øÝð 	@ð 	@ð 	@Ý ¤¨$¬*Ñ5Ô5¸4Ð?ð	@øøøs	   ‚ ›&Ac                 ó6  — 	 t          j        | j        ¦  «        S # t          $ ró}t	          |¦  «        rÞt          d¦  «         |                      ¦   «         }|t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d	                  |t          d
                  |t          d                  f
cY d }~S ‚ d }~ww xY w)Nz*attempting memory_info() fallback (slower)rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   )r}   Úproc_memory_infor×   r<  r=  r   r}  r†  )r  rA  Úinfos      r-   Ú_get_raw_meminfozProcess._get_raw_meminfo  s  € ð	ÝÔ(¨¬Ñ2Ô2Ð2øÝð 	ð 	ð 	Ý  Ñ%Ô%ð õ ÐBÑCÔCÐCØ—’Ñ(Ô(�à�Ð#4Ô5Ô6Ø� ;Ô/Ô0Ø� 6Ô*Ô+Ø�Ð#4Ô5Ô6Ø� <Ô0Ô1Ø�Ð#8Ô9Ô:Ø�Ð#3Ô4Ô5Ø� :Ô.Ô/Ø� ?Ô3Ô4Ø� =Ô1Ô2ðð ð ð ð ð ð ð øøøøð%	øøøs!   ‚ ›
D¥C'DÄDÄDÄDc                 óf   — |                       ¦   «         }|d         }|d         }t          ||f|z   Ž S )Nr0   r<   )r¢  re   )r  Útrf   rg   s       r-   Úmemory_infozProcess.memory_info3  s:   € ð
 ×!Ò!Ñ#Ô#ˆØ�ŒdˆØ�ŒdˆÝ�c˜3�Z !‘^Ð$Ð$r,   c                 ó˜   — |                       ¦   «         }t          j        | j        ¦  «        }|t	          ¦   «         z  }t          ||fz   Ž S r‡   )r¥  r}   Úproc_memory_ussr×   rˆ   rk   )r  Ú	basic_memrl   s      r-   Úmemory_full_infozProcess.memory_full_info=  sE   € à×$Ò$Ñ&Ô&ˆ	ÝÔ" 4¤8Ñ,Ô,ˆØ�{‰}Œ}ÑˆÝ˜ c VÑ+Ð,Ð,r,   c              #   óú   K  — 	 t          j        | j        ¦  «        }|D ]-\  }}}}t          |¦  «        }t	          |¦  «        }||||fV — Œ.d S # t
          $ r!}t          || j        | j        ¦  «        |‚d }~ww xY wr‡   )r}   Úproc_memory_mapsr×   r…   Úhexr<  r]  r  )r  ÚrawÚaddrÚpermrn   rf   rA  s          r-   Úmemory_mapszProcess.memory_mapsD  s°   è è € ð
	.ÝÔ'¨¬Ñ1Ô1ˆCð *-ð .ð .Ñ%��d˜D #Ý'¨Ñ-Ô-�Ý˜4‘y”y�Ø˜T 4¨Ð-Ð-Ð-Ð-Ð-ð.ð .øõ ð 	Fð 	Fð 	Fõ " # t¤x°´Ñ<Ô<À#ÐEøøøøð	Føøøs   „A Á
A:ÁA5Á5A:c                 ó4   — t          j        | j        ¦  «        S r‡   )r}   Ú	proc_killr×   r&  s    r-   ÚkillzProcess.killQ  s   € åŒ~˜dœhÑ'Ô'Ð'r,   c                 óæ   — |t           j        k    rt          j        | j        ¦  «         d S |t           j        t           j        hv rt          j        | j        |¦  «         d S d}t          |¦  «        ‚)NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
ÚsignalÚSIGTERMr}   r²  r×   ÚCTRL_C_EVENTÚCTRL_BREAK_EVENTr€   r³  Ú
ValueError)r  Úsigr;  s      r-   Úsend_signalzProcess.send_signalU  so   € à•&”.Ò Ð ÝŒN˜4œ8Ñ$Ô$Ð$Ð$Ð$Ø•VÔ(­&Ô*AÐBÐBÐBÝŒG�D”H˜cÑ"Ô"Ð"Ð"Ð"ð+ð õ ˜S‘/”/Ð!r,   Nc                 óB  — |€t           j        }nt          |dz  ¦  «        }t          t          dt          j        ¦  «        }|� |¦   «         |z   nd }	 t          j        | j        |¦  «        }nE# t           j        $ r!}t          || j        | j        ¦  «        |‚d }~wt           j	        $ r d }Y nw xY wd}	 t          | j        ¦  «        s|S |r* |¦   «         |k    rt          || j        | j        ¬¦  «        ‚t	          j        |¦  «         t          |dz  d¦  «        }Œj)Niè  Ú	monotonicrk  Tr[  r0   rm  )r}   ÚINFINITEr—   Úgetattrrp  Ú	proc_waitr×   r	   r  ÚTimeoutAbandonedÚ
pid_existsrq  rr  )r  ÚtimeoutÚcext_timeoutÚtimerÚstop_atÚ	exit_coderA  rs  s           r-   ÚwaitzProcess.waitb  sG  € àˆ?Ýœ=ˆLˆLõ ˜w¨™~Ñ.Ô.ˆLå�˜k­4¬9Ñ5Ô5ˆØ'.Ð':�%�%‘'”'˜GÑ#Ð#Àˆð	õ œ t¤x°Ñ>Ô>ˆIˆIøÝÔ"ð 	Ið 	Ið 	Iå  ¨$¬(°D´JÑ?Ô?ÀSÐHøøøøÝÔ$ð 		ð 		ð 		ð ˆIˆIˆIð		øøøð ˆð	)Ý˜dœhÑ'Ô'ð !Ø Ð Øð M˜5˜5™7œ7 gÒ-Ð-Ý$ W°$´(ÀÄÐLÑLÔLÐLÝŒJ�uÑÔÐÝ˜ ™	 4Ñ(Ô(ˆEð	)s   ÁA/ Á/B1Á>BÂB1Â0B1c                 ó^   — | j         dv rdS t          j        | j         ¦  «        \  }}|› d|› �S )N¾   r   r7   zNT AUTHORITY\SYSTEMrz   )r×   r}   Úproc_username)r  ÚdomainrZ   s      r-   r1  zProcess.username�  s?   € àŒ8�vÐÐØ)Ð)ÝÔ)¨$¬(Ñ3Ô3‰ˆ�ØÐ"Ð"˜DÐ"Ð"Ð"r,   Fc                 óþ   — 	 t          j        | j        ¦  «        \  }}}|S # t          $ rQ}t	          |¦  «        r<|r‚ t          d¦  «         |                      ¦   «         t          d                  cY d }~S ‚ d }~ww xY w)Nz*attempting create_time() fallback (slower)r6   )r}   Ú
proc_timesr×   r<  r=  r   r}  r†  )r  Ú	fast_onlyÚ_userÚ_systemÚcreatedrA  s         r-   r6   zProcess.create_time”  sš   € ð		Ý&*¤o°d´hÑ&?Ô&?Ñ#ˆE�7˜GØˆNøÝð 	ð 	ð 	Ý  Ñ%Ô%ð CØð ØÝÐBÑCÔCÐCØ—’Ñ(Ô(­°=Ô)AÔBÐBÐBÐBÐBÐBÐBØøøøøð	øøøs!   ‚! ¡
A<«AA7Á0A<Á6A7Á7A<c                 óL   — |                       ¦   «         t          d                  S )Nr8   )r}  r†  r&  s    r-   r8   zProcess.num_threads£  s   € à�ŠÑ Ô ¥¨=Ô!9Ô:Ð:r,   c                 ó¤   — t          j        | j        ¦  «        }g }|D ]1\  }}}t          j        |||¦  «        }|                     |¦  «         Œ2|S r‡   )r}   Úproc_threadsr×   r   Úpthreadr¸   )r  r®   r  Ú	thread_idÚutimeÚstimeÚntuples          r-   ÚthreadszProcess.threads§  s\   € åÔ# D¤HÑ-Ô-ˆØˆØ'.ð 	#ð 	#Ñ#ˆI�u˜eÝ”_ Y°°uÑ=Ô=ˆFØ�NŠN˜6Ñ"Ô"Ð"Ð"Øˆr,   c                 óN  — 	 t          j        | j        ¦  «        \  }}}np# t          $ rc}t	          |¦  «        s‚ t          d¦  «         |                      ¦   «         }|t          d                  }|t          d                  }Y d }~nd }~ww xY wt          j	        ||dd¦  «        S )Nz(attempting cpu_times() fallback (slower)r4   r5   r•   )
r}   rÎ  r×   r<  r=  r   r}  r†  r   Ú	pcputimes)r  rZ   r[   Ú_createdrA  r¡  s         r-   r³   zProcess.cpu_times°  s²   € ð	4Ý%)¤_°T´XÑ%>Ô%>Ñ"ˆD�&˜(˜(øÝð 	4ð 	4ð 	4Ý$ SÑ)Ô)ð ØÝÐ<Ñ=Ô=Ð=Ø—?’?Ñ$Ô$ˆDØ�	 +Ô.Ô/ˆDØ�) MÔ2Ô3ˆFˆFˆFˆFˆFˆFøøøøð	4øøøõ Ô   v¨s°CÑ8Ô8Ð8s   ‚   
BªABÂBc                 ó:   — t          j        | j        d¦  «         d S )NT©r}   Úproc_suspend_or_resumer×   r&  s    r-   ÚsuspendzProcess.suspend¾  s   € åÔ# D¤H¨dÑ3Ô3Ð3Ð3Ð3r,   c                 ó:   — t          j        | j        d¦  «         d S )NFrà  r&  s    r-   ÚresumezProcess.resumeÂ  s   € åÔ# D¤H¨eÑ4Ô4Ð4Ð4Ð4r,   c                 ó¸   — | j         dv rt          | j         | j        ¦  «        ‚t          j        | j         ¦  «        }t
          j                             |¦  «        S )NrÊ  )r×   r   r  r}   Úproc_cwdr€   rn   Únormpath)r  rn   s     r-   ÚcwdzProcess.cwdÆ  sN   € ð Œ8�vÐÐÝ˜tœx¨¬Ñ4Ô4Ð4õ Œ}˜TœXÑ&Ô&ˆÝŒw×Ò Ñ%Ô%Ð%r,   c                 ó  — | j         dv rg S t          ¦   «         }t          j        | j         ¦  «        }|D ]J}t	          |¦  «        }t          |¦  «        r*t          j        |d¦  «        }|                     |¦  «         ŒKt          |¦  «        S )NrÊ  r%   )
r×   rÙ   r}   Úproc_open_filesr…   r   r   Ú	popenfilerÛ   rÜ   )r  r¹   Úraw_file_namesÚfilerÚ  s        r-   Ú
open_fileszProcess.open_filesÐ  s‹   € àŒ8�vÐÐØˆIÝ‰eŒeˆõ
 Ô-¨d¬hÑ7Ô7ˆØ"ð 	 ð 	 ˆDÝ# DÑ)Ô)ˆDÝ˜TÑ"Ô"ð  Ý Ô*¨4°Ñ4Ô4�Ø—’˜‘”�øÝ�C‰yŒyÐr,   Úinetc                 ó.   — t          || j        ¬¦  «        S )N)rÞ   )rØ   r×   )r  rÝ   s     r-   rØ   zProcess.net_connectionsá  s   € å˜t¨$¬(Ð3Ñ3Ô3Ð3r,   c                 óV   — t          j        | j        ¦  «        }t          |¦  «        }|S r‡   )r}   Úproc_priority_getr×   r'   ©r  Úvalues     r-   Únice_getzProcess.nice_getå  s$   € åÔ& t¤xÑ0Ô0ˆÝ˜‘”ˆØˆr,   c                 ó6   — t          j        | j        |¦  «        S r‡   )r}   Úproc_priority_setr×   ró  s     r-   Únice_setzProcess.nice_setë  s   € åÔ% d¤h°Ñ6Ô6Ð6r,   c                 óV   — t          j        | j        ¦  «        }t          |¦  «        }|S r‡   )r}   Úproc_io_priority_getr×   r/   r‡  s     r-   Ú
ionice_getzProcess.ionice_getï  s$   € åÔ'¨¬Ñ1Ô1ˆÝ˜‰oŒoˆØˆ
r,   c                 óè   — |rd}t          |¦  «        ‚|t          j        t          j        t          j        t          j        hvr|› d�}t          |¦  «        ‚t          j        | j	        |¦  «         d S )Nz&value argument not accepted on Windowsz is not a valid priority)
Ú	TypeErrorr/   r   r   r   r   r¹  r}   Úproc_io_priority_setr×   )r  Úioclassrô  r;  s       r-   Ú
ionice_setzProcess.ionice_setõ  s|   € àð 	!Ø:ˆCÝ˜C‘.”.Ð ØÝÔ%ÝÔ!ÝÔ$ÝÔ"ð	
ð 
ð 
ð Ð6Ð6Ð6ˆCÝ˜S‘/”/Ð!ÝÔ! $¤(¨GÑ4Ô4Ð4Ð4Ð4r,   c           	      óº  — 	 t          j        | j        ¦  «        }n¸# t          $ r«}t	          |¦  «        s‚ t          d¦  «         |                      ¦   «         }|t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  f}Y d }~nd }~ww xY wt          |Ž S )Nz*attempting io_counters() fallback (slower)r:   r;   r=   r?   rA   rC   )	r}   Úproc_io_countersr×   r<  r=  r   r}  r†  rq   )r  r¹   rA  r¡  s       r-   Úio_counterszProcess.io_counters  sØ   € ð	ÝÔ'¨¬Ñ1Ô1ˆCˆCøÝð 	ð 	ð 	Ý$ SÑ)Ô)ð ØÝÐ>Ñ?Ô?Ð?Ø—?’?Ñ$Ô$ˆDà•Y˜{Ô+Ô,Ø•Y˜{Ô+Ô,Ø•Y˜{Ô+Ô,Ø•Y˜{Ô+Ô,Ø•YÐ0Ô1Ô2Ø•YÐ0Ô1Ô2ðˆCˆCˆCˆCˆCˆCøøøøð	øøøõ �CˆyÐs   ‚ œ
C¦B!CÃCc                 óh   — t          j        | j        ¦  «        }|rt          j        S t          j        S r‡   )r}   Úproc_is_suspendedr×   r   ÚSTATUS_STOPPEDÚSTATUS_RUNNING)r  Ú	suspendeds     r-   ræ   zProcess.status  s.   € åÔ*¨4¬8Ñ4Ô4ˆ	Øð 	*ÝÔ)Ð)åÔ)Ð)r,   c                 óP   — d„ }t          j        | j        ¦  «        } ||¦  «        S )Nc                 ó:   ‡ — ˆ fd„t          d¦  «        D ¦   «         S )Nc                 ó$   •— g | ]}d |z  ‰z  ¯
|‘ŒS )r   r+   )r©   Úirª   s     €r-   r«   zBProcess.cpu_affinity_get.<locals>.from_bitmask.<locals>.<listcomp>"  s&   ø€ Ð9Ð9Ð9˜!¨Q°!©V°q©LÐ9�AÐ9Ð9Ð9r,   é@   )rn  )rª   s   `r-   Úfrom_bitmaskz.Process.cpu_affinity_get.<locals>.from_bitmask!  s#   ø€ Ø9Ð9Ð9Ð9�u R™yœyÐ9Ñ9Ô9Ð9r,   )r}   Úproc_cpu_affinity_getr×   )r  r  Úbitmasks      r-   Úcpu_affinity_getzProcess.cpu_affinity_get  s5   € ð	:ð 	:ð 	:õ Ô,¨T¬XÑ6Ô6ˆØˆ|˜GÑ$Ô$Ð$r,   c                 óN  — d„ }t          t          t          t          ¦   «         ¦  «        ¦  «        ¦  «        }|D ]D}||vr>t	          |t
          ¦  «        sd|›d�}t          |¦  «        ‚d|›�}t          |¦  «        ‚ŒE ||¦  «        }t          j	        | j
        |¦  «         d S )Nc                 óP   — | sd| ›�}t          |¦  «        ‚d}| D ]
}|d|z  z  }Œ|S )Nzinvalid argument r   r0   )r¹  )Úlsr;  ÚoutÚbs       r-   Ú
to_bitmaskz,Process.cpu_affinity_set.<locals>.to_bitmask)  sK   € Øð &Ø0¨"Ð0Ð0�Ý  ‘o”oÐ%ØˆCØð ð �Ø�q˜!‘t‘��ØˆJr,   zinvalid CPU z; an integer is required)rÜ   rn  r   rµ   r¡   r—   rý  r¹  r}   Úproc_cpu_affinity_setr×   )r  rô  r  ÚallcpusÚcpur;  r  s          r-   Úcpu_affinity_setzProcess.cpu_affinity_set'  sÆ   € ð	ð 	ð 	õ •u�S¥¡¤Ñ1Ô1Ñ2Ô2Ñ3Ô3ˆØð 	&ð 	&ˆCØ˜'Ð!Ð!Ý! #¥sÑ+Ô+ð )ØH¨ÐHÐHÐH�CÝ# C™.œ.Ð(Ø, SÐ,Ð,�Ý  ‘o”oÐ%ð "ð �*˜UÑ#Ô#ˆÝÔ" 4¤8¨WÑ5Ô5Ð5Ð5Ð5r,   c                 óì   — 	 t          j        | j        ¦  «        S # t          $ rN}t	          |¦  «        r9t          d¦  «         |                      ¦   «         t          d                  cY d }~S ‚ d }~ww xY w)Nz*attempting num_handles() fallback (slower)r2   )r}   Úproc_num_handlesr×   r<  r=  r   r}  r†  r–  s     r-   r2   zProcess.num_handlesA  s…   € ð	ÝÔ(¨¬Ñ2Ô2Ð2øÝð 	ð 	ð 	Ý  Ñ%Ô%ð CÝÐBÑCÔCÐCØ—’Ñ(Ô(­°=Ô)AÔBÐBÐBÐBÐBÐBÐBØøøøøð		øøøs!   ‚ ›
A3¥AA.Á'A3Á-A.Á.A3c                 óv   — |                       ¦   «         t          d                  }t          j        |d¦  «        S )Nr3   r   )r}  r†  r   Úpctxsw)r  r3   s     r-   Únum_ctx_switcheszProcess.num_ctx_switchesK  s-   € à—’Ñ(Ô(­°>Ô)BÔCˆåŒ~˜l¨AÑ.Ô.Ð.r,   r‡   )F)rï  ),r(   r)   r*   rR  Ú	__slots__r  r€  rƒ  r   r}  rð   rh  r  rv  r—  rš  rž  r¢  r¥  r©  r°  r³  r»  rÈ  r1  r6   r8   rÛ  r³   râ  rä  rè  rî  rØ   rõ  rø  rû  r   r  ræ   r  r  r2   r   r+   r,   r-   rx  rx  Ä  sÝ  € € € € € Ø;Ð;à3Ð3Ð3€Iðð ð ð&ð &ð &ð(ð (ð (ð ðð ñ Ôðð
,ð 
,ð 
,ð Øðð ñ Ôñ „_ðð" Øð=ð =ñ Ôñ „_ð=ð Øð&ð &ñ Ôñ „_ð&ð@ð @ð @ðð ð ð. ð%ð %ñ „_ð%ð ð-ð -ñ „_ð-ð.ð .ð .ð ð(ð (ñ „_ð(ð ð
"ð 
"ñ „_ð
"ð ð()ð ()ð ()ñ „_ð()ðT ð#ð #ñ „_ð#ð ðð ð ñ „_ðð ð;ð ;ñ „_ð;ð ðð ñ „_ðð ð9ð 9ñ „_ð9ð ð4ð 4ñ „_ð4ð ð5ð 5ñ „_ð5ð Øð&ð &ñ Ôñ „_ð&ð ðð ñ „_ðð  ð4ð 4ð 4ñ „_ð4ð ðð ñ „_ðð
 ð7ð 7ñ „_ð7ð ðð ñ „_ðð
 ð5ð 5ñ „_ð5ð ðð ñ „_ðð$ ð*ð *ñ „_ð*ð ð%ð %ñ „_ð%ð ð6ð 6ñ „_ð6ð2 ðð ñ „_ðð ð/ð /ñ „_ð/ð /ð /r,   rx  r+   )r%   )NN)}rR  rS  Úenumre  r€   rµ  Úsysrp  Úcollectionsr   rê   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   ÚImportErrorrA  ÚstrÚlowerr�  Úgetwindowsversionr;  ÚRuntimeErrorÚ__extra__all__r    ro  Úbuiltin_module_namesr�  ÚIntEnumr$   r!   ÚMIB_TCP_STATE_ESTABÚCONN_ESTABLISHEDÚMIB_TCP_STATE_SYN_SENTÚCONN_SYN_SENTÚMIB_TCP_STATE_SYN_RCVDÚCONN_SYN_RECVÚMIB_TCP_STATE_FIN_WAIT1ÚCONN_FIN_WAIT1ÚMIB_TCP_STATE_FIN_WAIT2ÚCONN_FIN_WAIT2ÚMIB_TCP_STATE_TIME_WAITÚCONN_TIME_WAITÚMIB_TCP_STATE_CLOSEDÚ
CONN_CLOSEÚMIB_TCP_STATE_CLOSE_WAITÚCONN_CLOSE_WAITÚMIB_TCP_STATE_LAST_ACKÚCONN_LAST_ACKÚMIB_TCP_STATE_LISTENÚCONN_LISTENÚMIB_TCP_STATE_CLOSINGÚCONN_CLOSINGÚMIB_TCP_STATE_DELETE_TCBÚPSUTIL_CONN_NONEÚ	CONN_NONErÚ   r'   ÚglobalsrO  Ú__members__r/   r5  r†  rY   r_   re   Ú_fieldsrk   rm   r{   ro   rq   Ú	lru_cacher…   rˆ   r“   r�   Údisk_io_countersr¤   r¬   r³   rµ   r¼   r¾   rÀ   rÇ   rÑ   rÓ   rØ   rë   rö   rø   rû   r	  r  r  r   r   r  ÚpidsrÂ  rœ  r=  r]  rh  rv  rx  r+   r,   r-   ú<module>rL     s-  ðð
 'Ð &à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø (Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðØ)Ð)Ð)Ð)Ð)Ð)Ð)øØð ð ð àˆˆC‰Œ�ŠÑÔ×#Ò#Ð$5Ñ6Ô6ðà!ˆCÔ!Ñ#Ô# AÔ&¨Ò*Ð*ð DˆØÐKÑKˆØÐ)Ñ)ˆØˆl˜3ÑÔ SÐ(àøøøøðøøøð(
ð 
ð 
€ð$ €ØÐ Ø�SÔ-Ð-€à�”˜_¨y¸"¨oÑ>Ô>€Ø
Ô
€ð 	Ô˜gÔ6ØÔ Ô!6ØÔ Ô!6ØÔ  'Ô"8ØÔ  'Ô"8ØÔ  'Ô"8ØÔ˜wÔ1ØÔ! 7Ô#:ØÔ Ô!6ØÔ˜wÔ2ØÔ Ô 4ØÔ! ?ØÔ˜7Ô,ð€ð"6ð 6ð 6ð 6ð 6ˆtŒ|ñ 6ô 6ð 6ð €�	„	× Ò �Ô%Ñ &Ô &Ð &ðð ð ð ð �”ñ ô ð ð €�	„	× Ò �Ô'Ñ (Ô (Ð (àˆDð ð ð Ø�ðà�ðð ˆaðð �ð	ð
 �ðð �ðð ˆaðð ˆaðð ˆaðð ˆaðð �Bðð �Bðð �Bðð ˆbðð 
ˆðð  �Bð!ð" ˆrð#ð$ ˜ð%ð& �2ð'ð( ˆRð)ð* �"ð+ð, �ð-€	ðB ˆJ�{ØEÐEÐEñGô G€	ð 	ˆ
�7ÐMÐMÐMÑNÔN€à€zØ
ð 5ð 5ð 5ñ6ô 6€ð ˆ:�j $¤,°Ñ":Ñ;Ô;€à�
˜?¨V°U¨OÑ<Ô<€àˆJØ� §¢¨-Ô*?Ñ!@Ô!@Ñ@ñBô B€	ð €j�ð 7ð 7ð 7ñ 8ô 8€ð €Ô˜SÐ!Ñ!Ô!ð	0ð 	0ñ "Ô!ð	0ð 	ðð ñ 	„ðð	4ð 	4ð 	4ð;ð ;ð ;ð> Ô(Ð ð	:ð 	:ð 	:ð4ð 4ð 4ð	ð 	ð 	ðð ð ð$ð $ð $ð
"ð "ð "ð
ð ð ð>ð >ð >ð Ð ð7ð 7ð 7ð(ð ð ð ð.	ð 	ð 	ð"ð "ð "ðð ð ð>ð >ð >ð2 €ðð ð ðð ð ð 1ð 1ð 1ðð ð ð}ð }ð }ð }ð }ñ }ô }ð }ðX „y€ØŒ_€
ØŒ=€ðð ð ðð ð ð ð
ð 
ð 
ðð ð ð8K/ð K/ð K/ð K/ð K/ñ K/ô K/ð K/ð K/ð K/s   ÂB ÂDÂ$A"DÄD