Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
§ Ìß]jµ@ã ó€ —dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddl*m+Z+ddl*m,Z,ddl*m-Z-dd l*m.Z.dd!l*m/Z/dd"l*m0Z0e j1d#krddl2Z2ndZ2gd$¢Z3d%Z4ej5 6d&ej7¦«z¦«Z8e9ed'¦«Z:e9ed(¦«Z;e<¦«Z=ej>d)¦«Z?ej@¦«ZAdaBe0rd*nd+ZCe jDd,kZEd-ZFe2€e jGZHn(e2jId.d/eJe jG¦«i¦«ZKeKjHZHe2€ dZLdZMd0ZNd1ZOn5Gd2„d3e2jI¦«ZPeQ¦« RePjS¦«ejTejUejVejWejXejYejZejZej[ej\ej]ej^d4œ Z_ej`ejaejbejcejdejeejfejgejhejiejjd5œ Zked6gd7¢¦«Zled8gd9¢¦«Zmed:gd;¢¦«Znedeojpd?z¦«Zqed@gdA¢¦«ZredBdCdD serjp¦«z¦«ZtedEgdF¢¦«ZuedGgdH¢¦«ZvdI„ZwdJ„ZxdK„ZyedL„¦«Zze=dMfdN„Z{ ezdO¦«n1#e|$r)e j}¦«edPdQ¦«dRdRdR¦«a~YnwxYwdZ ddSl€mZn1#e�$r)ddl‚Z‚e‚jƒddM¬T¦«Z„e9e„dU¦«rd|dV„ZYnwxYwe�(e3 …dW„e†e¦«D¦«¦«dX„Z‡dY„ZˆdZ„Z‰d[„ZŠd\„Z‹d]„ZŒd^„Z�d_„ZŽej5 6d`¦«sej5 6da¦«rdb„Z�n!ej5 6dc¦«rdd„Z�nde„Z�ej�Z�Gdf„dge|¦«Z‘Gdh„di¦«Z’e’¦«Z“d}dk„Z”dl„Z•dm„Z–ej—Z—d~do„Z˜d~dp„Z™dq„Zšdr„Z›ds„Zœdt„Z�du„Zždv„ZŸdw„Z dx„Z¡dy„Z¢Gdz„d{e<¦«Z£dS)zLinux platform implementation.é)ÚdivisionN)Ú defaultdict)Ú namedtupleé)Ú_common)Ú_psposix)Ú _psutil_linux)Ú _psutil_posix)Ú AccessDenied)Údebug)Údecode)Úget_procfs_path)Ú isfile_strict)Úmemoize)Úmemoize_when_activated)ÚNIC_DUPLEX_FULL)ÚNIC_DUPLEX_HALF)ÚNIC_DUPLEX_UNKNOWN)Ú NoSuchProcess)Ú open_binary)Ú open_text)Úparse_environ_block)Úpath_exists_strict)Ú supports_ipv6)Ú usage_percent)Ú ZombieProcess)Úb)Ú basestring)ÚFileNotFoundError)ÚPermissionError)ÚProcessLookupError)ÚPY3)éé)Ú PROCFS_PATHÚIOPRIO_CLASS_NONEÚIOPRIO_CLASS_RTÚIOPRIO_CLASS_BEÚIOPRIO_CLASS_IDLEÚCONN_ESTABLISHEDÚ CONN_SYN_SENTÚ CONN_SYN_RECVÚCONN_FIN_WAIT1ÚCONN_FIN_WAIT2ÚCONN_TIME_WAITÚ CONN_CLOSEÚCONN_CLOSE_WAITÚ CONN_LAST_ACKÚ CONN_LISTENÚ CONN_CLOSINGz/sys/class/power_supplyz/proc/%s/smapsÚproc_ioprio_getÚproc_cpu_affinity_getÚ SC_CLK_TCKéÿÿÿÿi ÚlittleiÚ AddressFamilyÚAF_LINKér#có—eZdZdZdZdZdZdS)Ú IOPriorityrrr<r#N)Ú__name__Ú __module__Ú __qualname__r&r'r(r)©óúF/opt/imunify360/venv/lib64/python3.11/site-packages/psutil/_pslinux.pyr>r>ws&€€€€€ØÐ؈؈ØÐÐÐrCr>) ÚRÚSÚDÚTÚtÚZÚXÚxÚKÚWÚIÚP) Ú01Ú02Ú03Ú04Ú05Ú06Ú07Ú08Ú09Ú0AÚ0BÚsvmem) ÚtotalÚ availableÚpercentÚusedÚfreeÚactiveÚinactiveÚbuffersÚcachedÚsharedÚslabÚsdiskio) Ú read_countÚ write_countÚ read_bytesÚ write_bytesÚ read_timeÚ write_timeÚread_merged_countÚwrite_merged_countÚ busy_timeÚ popenfile)ÚpathÚfdÚpositionÚmodeÚflagsÚpmemz"rss vms shared text lib data dirtyÚpfullmem)ÚussÚpssÚswapÚ pmmap_grouped) rsÚrssÚsizer{Ú shared_cleanÚ shared_dirtyÚ private_cleanÚ private_dirtyÚ referencedÚ anonymousr|Ú pmmap_extz addr perms ú Úpio)rirjrkrlÚ read_charsÚ write_charsÚ pcputimes)ÚuserÚsystemÚ children_userÚchildren_systemÚiowaitcóþ—t|t¦«s J|¦«‚tj|¦«}| d¦«d}| d¦«rt |¦«s |dd…}|S)zWrapper around os.readlink().úrú (deleted)Néöÿÿÿ)Ú isinstancerÚosÚreadlinkÚsplitÚendswithr)rss rDr—r—Ðs€å �d�JÑ 'Ô 'Ð-Ð-¨Ñ-Ô-Ð 'Ý Œ;�tÑ Ô €Dð �:Š:�fÑ Ô ˜aÔ €Dð ‡}‚}�\Ñ"Ô"ðÕ+=¸dÑ+CÔ+CðØ�D�S�DŒzˆØ €KrCcó(—tjdtjdtjdi}||tjtjztjzz}|tjzr| ddd¦«}| dd¦«}|S)zZConvert file's open() flags into a readable string. Used by Process.open_files(). ÚrÚwzw+Úarzr+)r–ÚO_RDONLYÚO_WRONLYÚO_RDWRÚO_APPENDÚreplace)rwÚ modes_maprvs rDÚfile_flags_to_moder¤äsw€õ”˜c¥2¤;°µR´YÀÐE€IØ �U�bœk­B¬KÑ7½"¼)ÑCÑDÔ E€DØ �rŒ{Ñð)Ø�|Š|˜C  aÑ(Ô(ˆØ �<Š<˜˜dÑ #Ô #€Dà €KrCcóŠ—| dd¦«}d}|rd|z}nd|z}tj|tj¦«S)zÜReturn True if the given name refers to a root device (e.g. "sda", "nvme0n1") as opposed to a logical partition (e.g. "sda1", "nvme0n1p1"). If name is a virtual device (e.g. "loop1", "ram") return True. ú/ú!Tz /sys/block/%sz/sys/block/%s/device)r¢r–ÚaccessÚF_OK)ÚnameÚincluding_virtualrss rDÚis_storage_devicer¬ñsO€ð �<Š<˜˜SÑ !Ô !€DØÐØð-Ø Ñ%ˆˆà%¨Ñ,ˆÝ Œ9�T�2œ7Ñ #Ô #Ð#rCcóž—td|z¦«5}| ¦« ¦«dd…}ddd¦«n #1swxYwYgd¢}t|¦«}|dkr| d¦«|dkr| d¦«|d kr| d ¦«t d |¦«adS) zøSet a namedtuple of variable fields depending on the CPU times available on this Linux kernel version which may be: (user, nice, system, idle, iowait, irq, softirq, [steal, [guest, [guest_nice]]]) Used by cpu_times() function. ú%s/statrN)rŒÚnicer�Úidler�ÚirqÚsoftirqéÚstealé Úguesté Ú guest_niceÚ scputimes)rÚreadliner˜ÚlenÚappendrr¹)Ú procfs_pathÚfÚvaluesÚfieldsÚvlens rDÚset_scputimes_ntuplerÂs€õ �Y Ñ,Ñ -Ô -ð*°Ø—’‘”×#Ò#Ñ%Ô% a b bÔ)ˆð*ð*ð*ñ*ô*ð*ð*ð*ð*ð*ð*øøøð*ð*ð*ð*à KÐ KÐ K€FÝ ˆv‰;Œ;€DØ ˆq‚y€yà� Š �gÑÔÐØ ˆq‚y€yà� Š �gÑÔÐØ ˆr‚z€zà� Š �lÑ#Ô#Ð#ݘ;¨Ñ/Ô/€I€I€Is“/AÁAÁATcó — |rt|¦«nt|¦«5}| ¦« ¦«cddd¦«S#1swxYwYdS#tt f$r|t ur|cYS‚wxYw)z·Return file content. fallback: the value returned in case the file does not exist or cannot be read binary: whether to open the file in binary or text mode. N)rrÚreadÚstripÚIOErrorÚOSErrorÚ_DEFAULT)ÚfnameÚfallbackÚbinaryr¾s rDÚcatrÌsÔ€ð Ø#)Ð ?�[˜Ñ Ô Ð ­y¸Ñ/?Ô/?ð $À1Ø—6’6‘8”8—>’>Ñ#Ô#ð $ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $øå •WÐ ðððØ �8Ð #Ð #؈OˆOˆOà ð øøøs4‚ A"¢&AÁ A"ÁAÁA"ÁAÁA"Á"BÂBú/procr¹zuser system idleç)Úprlimit)Ú use_errnorÏcó—Gd„dtj¦«}|¦«}|€0t ||dtj|¦«¦«}ne|¦«}|d|_|d|_t ||tj|¦«tj|¦«¦«}|dkr5tj¦«}t|tj |¦«¦«‚|j|jfS)Ncó2—eZdZdejfdejfgZdS)úprlimit..StructRlimitÚrlim_curÚrlim_maxN)r?r@rAÚctypesÚ c_longlongÚ_fields_rBrCrDÚ StructRlimitrÓJs+€€€€€Ø'¨Ô):Ð;Ø'¨Ô):Ð;ð=���rCrÙrr) rÖÚ StructureÚlibcrÏÚbyrefrÔrÕÚ get_errnorÇr–Ústrerror)ÚpidÚ resource_ÚlimitsrÙÚcurrentÚretÚnewÚerrnos rDrÏrÏIsý€ð =ð =ð =ð =ð =�vÔ/ñ =ô =ð =ð#�l‘n”nˆG؈~å—l’l 3¨ °4½¼ÀgÑ9NÔ9NÑOÔO��ð#�l‘n”n�Ø% aœy�” Ø% aœy�” Ý—l’lؘ¥F¤L°Ñ$5Ô$5µv´|ÀGÑ7LÔ7LñNôN�ð�aŠxˆxÝÔ(Ñ*Ô*�ݘe¥R¤[°Ñ%7Ô%7Ñ8Ô8Ð8ØÔ$ gÔ&6Ð7Ð 7rCcód—g|]-}| d¦«¯| ¦«¯+|‘Œ.S)ÚRLIM)Ú startswithÚisupper©Ú.0rLs rDú rìbs6€ÐFÐFÐFˆq §¢¨fÑ!5Ô!5ÐF¸!¿)º)¹+¼+ÐFˆÐFÐFÐFrCcó˜—|d}|| dd¦«z} |d}|d}|d}n#t$r|cYSwxYw tdt¦«z¦«}n#t$r|cYSwxYwd}|5|D]U}| ¦«}| d¦«r*|t| ¦«d ¦«z }ŒV d d d ¦«n #1swxYwY|tz}||z } ||z} | t| d z |¦«z} | | z } | |t|d z |¦«z z } t| ¦«S) a…Fallback for kernels < 3.14 where /proc/meminfo does not provide "MemAvailable:" column, see: https://blog.famzah.net/2014/09/24/ This code reimplements the algorithm outlined here: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/ commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 XXX: on recent kernels this calculation differs by ~1.5% than "MemAvailable:" as it's calculated slightly differently, see: https://gitlab.com/procps-ng/procps/issues/42 https://github.com/famzah/linux-memavailable-procfs/issues/2 It is still way more realistic than doing (free + cached) though. óMemFree:óCached:rs Active(file):sInactive(file):ó SReclaimable:z %s/zoneinfoslowrNr<g@) ÚgetÚKeyErrorrrrÆrÅrèÚintr˜ÚPAGESIZEÚmin) ÚmemsrarÊÚlru_active_fileÚlru_inactive_fileÚslab_reclaimabler¾Ú watermark_lowÚlineÚavailÚ pagecaches rDÚcalculate_avail_vmemrþjsÝ€ð. � Ô €DØ�d—h’h˜z¨1Ñ-Ô-Ñ-€HðØÐ/Ô0ˆØ Ð!3Ô4ÐØÐ 0Ô1ÐÐøÝ ðððØˆˆˆðøøøðÝ ˜ ­Ñ(9Ô(9Ñ9Ñ :Ô :ˆˆøÝ ðððØˆˆˆðøøøð€MØ ð6ð6Øð 6ð 6ˆDØ—:’:‘<”<ˆDØ�Š˜vÑ&Ô&ð 6Ø¥ T§Z¢Z¡\¤\°!¤_Ñ!5Ô!5Ñ5� øð 6ð6ð6ð6ñ6ô6ð6ð6ð6ð6ð6ð6øøøð6ð6ð6ð6ð •XÑ€Mà �=Ñ €EØÐ"3Ñ3€IØ •�Y ‘] MÑ2Ô2Ñ2€IØ ˆYÑ€EØ Ð ¥Ð$4°sÑ$:¸MÑ JÔ JÑ JÑJ€EÝ ˆu‰:Œ:Ðs4£<¼ A Á A ÁA.Á. A=Á<A=ÂAC*Ã*C.Ã1C.c ó¨—g}i}tdt¦«z¦«5}|D]7}| ¦«}t|d¦«dz||d<Œ8 ddd¦«n #1swxYwY|d}|d} |d}n'#t$rd}| d ¦«YnwxYw |d }|| d d¦«z }n'#t$rd}| d ¦«YnwxYw |d } nA#t$r4 |d} n'#t$rd} | d¦«YnwxYwYnwxYw |d} n'#t$rd} | d¦«YnwxYw |d} nS#t$rF |d|dz|dz} n'#t$rd} | d¦«YnwxYwYnwxYw |d} n#t$rd} YnwxYw||z |z |z } | dkr||z } |d}n#t$rt|¦«}YnwxYw|dkrd}| d¦«||kr|}t||z |d¬¦«}|rJd  |¦«›dt|¦«dkrdnd›d�}tj |t¦«t|||| || | ||| | ¦ « S) a“Report virtual memory stats. This implementation matches "free" and "vmstat -s" cmdline utility values and procps-ng-3.3.12 source was used as a reference (2016-09-18): https://gitlab.com/procps-ng/procps/blob/ 24fd2605c51fccc375ab0287cec33aa767f06718/proc/sysinfo.c For reference, procps-ng-3.3.10 is the version available on Ubuntu 16.04. Note about "available" memory: up until psutil 4.3 it was calculated as "avail = (free + buffers + cached)". Now "MemAvailable:" column (kernel 3.14) from /proc/meminfo is used as it's more accurate. That matches "available" column in newer versions of "free". ú %s/meminforérNs MemTotal:rîsBuffers:rdrïrðresShmem:s MemShared:rfsActive:rbs Inactive:s Inact_dirty:s Inact_clean:sInact_laundry:rcsSlab:s MemAvailable:r^©Úround_ú, z) memory stats couldn't be determined and ÚwasÚwerez set to 0)rrr˜róròr¼rñrþrÚjoinr»ÚwarningsÚwarnÚRuntimeWarningr\)Úmissing_fieldsrör¾rûrÀr]rardrerfrbrcrgr`rür_Úmsgs rDÚvirtual_memoryr žsI€ð €NØ €DÝ �\¥OÑ$5Ô$5Ñ5Ñ 6Ô 6ð4¸!Øð 4ð 4ˆDØ—Z’Z‘\”\ˆFÝ! &¨¤)™nœn¨tÑ3ˆD�˜”‰OˆOð 4ð4ð4ð4ñ4ô4ð4ð4ð4ð4ð4ð4øøøð4ð4ð4ð4ð �Ô €EØ � Ô €Dð)Ø�{Ô#ˆˆøÝ ð)ð)ð)àˆØ×Ò˜iÑ(Ô(Ð(Ð(Ð(ð)øøøð 0Ø�jÔ!ˆð �$—(’(Ð+¨QÑ/Ô/Ñ/ˆˆøõ ð(ð(ð(؈Ø×Ò˜hÑ'Ô'Ð'Ð'Ð'ð(øøøð,Ø�i”ˆˆøÝ ð,ð,ð,ð ,ؘ-Ô(ˆFˆFøÝð ,ð ,ð ,؈FØ × !Ò ! (Ñ +Ô +Ð +Ð +Ð +ð ,øøøøøð,øøøð(Ø�jÔ!ˆˆøÝ ð(ð(ð(؈Ø×Ò˜hÑ'Ô'Ð'Ð'Ð'ð(øøøð .ؘ Ô%ˆˆøÝ ð.ð.ð.ð .à�_Ô%Ø�_Ô%ñ&àÐ&Ô'ñ(ð ˆHøõð .ð .ð .؈HØ × !Ò ! *Ñ -Ô -Ð -Ð -Ð -ð .øøøøøð .øøøðØ�HŒ~ˆˆøÝ ðððØˆˆˆðøøøð �4‰<˜&Ñ  7Ñ *€DØ ˆa‚x€xð�t‰|ˆð+ØÐ%Ô&ˆˆøÝ ð+ð+ð+Ý$ TÑ*Ô*ˆˆˆð+øøøð ˆq‚y€y؈Ø×Ò˜kÑ*Ô*Ð*ð ˆu‚}€}؈å˜U U™]¨U¸1Ð=Ñ=Ô=€Gðð+à �IŠI�nÑ %Ô %Ð %Ð %ݘÑ(Ô(¨AÒ-Ð-ˆEˆE°6Ð 9Ð 9ð;ˆõ Œ �c�>Ñ*Ô*Ð*å �˜˜w¨¨dؘ 7¨F°F¸Dñ Bô BðBs×£;A+Á+A/Á2A/ÂBÂ!B4Â3B4Â8CÃ!C>Ã=C>ÄD Ä E ÄDÄE Ä!EÅE ÅEÅE ÅE Å EÅ!E:Å9E:Å>FÆ GÆF-Æ,GÆ-!GÇGÇGÇGÇGÇG$Ç$ G3Ç2G3È HÈH2È1H2cóD—i}tdt¦«z¦«5}|D]7}| ¦«}t|d¦«dz||d<Œ8 ddd¦«n #1swxYwY |d}|d}n5#t$r(t j¦«\}}}}}}}||z}||z}YnwxYw||z }t||d¬¦«} td t¦«z¦«}|5dx} } |D]�}| d ¦«r/t| d ¦«d¦«d zdz} nC| d ¦«r.t| d ¦«d¦«d zdz} | �| �n!Œ�d} tj | t¦«dx} } ddd¦«n #1swxYwYnG#t$r:} dt| ¦«z} tj | t¦«dx} } Yd} ~ nd} ~ wwxYwtj|||| | | ¦«S)zReturn swap memory metrics.rrrrNs SwapTotal:s SwapFree:rz %s/vmstatspswpinó r$spswpoutzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0zP'sin' and 'sout' swap memory stats couldn't be determined and were set to 0 (%s))rrr˜róròÚcextÚ linux_sysinforrèrr r rÆÚstrrÚsswap)rör¾rûrÀr]raÚ_Úunit_multiplierr`r_ÚsinÚsoutr Úerrs rDÚ swap_memoryrsõ€à €DÝ �\¥OÑ$5Ô$5Ñ5Ñ 6Ô 6ð4¸!Øð 4ð 4ˆDØ—Z’Z‘\”\ˆFÝ! &¨¤)™nœn¨tÑ3ˆD�˜”‰OˆOð 4ð4ð4ð4ñ4ô4ð4ð4ð4ð4ð4ð4øøøð4ð4ð4ð4ð Ø�]Ô#ˆØ�LÔ!ˆˆøÝ ð ð ð Ý37Ô3EÑ3GÔ3GÑ0ˆˆ1ˆa��E˜4 Ø �Ñ ˆØ �шˆˆð øøøð �4‰<€DݘD %°Ð2Ñ2Ô2€GðÝ ˜ ¥oÑ&7Ô&7Ñ7Ñ 8Ô 8ˆðð ð ØÐ ˆC�$Øð ð �ð—?’? 9Ñ-Ô-ð?ݘdŸjšj¨Ñ.Ô.¨qÔ1Ñ2Ô2°QÑ6¸Ñ=�C�CØ—_’_ ZÑ0Ô0ð?ݘtŸzšz¨$Ñ/Ô/°Ô2Ñ3Ô3°aÑ7¸$Ñ>�DØ�? tÐ'7Ø�Eøð 8�å” ˜c¥>Ñ2Ô2Ð2Ø���dð% ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øøõ ðððð5Ý7:¸3±x´xñ@ˆåŒ �c�>Ñ*Ô*Ð*؈ˆˆdˆdˆdˆdˆdˆdøøøøð øøøõ4 Œ=˜  d¨G°S¸$Ñ ?Ô ?Ð?sN¡;A)Á)A-Á0A-Á5BÂ/B8Â7B8ÃGÃ3B7F6Æ6F:Æ=F:Ç HÇ 0HÈHcóN—t¦«}t|¦«td|z¦«5}| ¦« ¦«}ddd¦«n #1swxYwY|dt t j¦«dz…}d„|D¦«}t |ŽS)zíReturn a named tuple representing the following system-wide CPU times: (user, nice, system, idle, iowait, irq, softirq [steal, [guest, [guest_nice]]]) Last 3 fields may not be available on all Linux kernel versions. r®Nrcó<—g|]}t|¦«tz ‘ŒSrB©ÚfloatÚ CLOCK_TICKSrês rDrìzcpu_times..^s#€Ð 5Ð 5Ð 5¨�e�A‰hŒh�Ñ$Ð 5Ð 5Ð 5rC)rrÂrrºr˜r»r¹Ú_fields)r½r¾r¿rÀs rDÚ cpu_timesr RsØ€õ"Ñ#Ô#€KݘÑ%Ô%Ð%Ý �Y Ñ,Ñ -Ô -ð&°Ø—’‘”×#Ò#Ñ%Ô%ˆð&ð&ð&ñ&ô&ð&ð&ð&ð&ð&ð&øøøð&ð&ð&ð&à �A•c�)Ô+Ñ,Ô,¨qÑ0Ð0Ô 1€FØ 5Ð 5¨fÐ 5Ñ 5Ô 5€FÝ �fÐ Ðs°'A#Á#A'Á*A'có¼—t¦«}t|¦«g}td|z¦«5}| ¦«|D]y}| d¦«rb| ¦«}|dt tj¦«dz…}d„|D¦«}t|Ž}|  |¦«Œz|cddd¦«S#1swxYwYdS)zfReturn a list of namedtuple representing the CPU times for every CPU available on the system. r®scpurcó<—g|]}t|¦«tz ‘ŒSrBrrês rDrìz!per_cpu_times..ps#€ÐAÐAÐA°Q�% ™(œ(¥[Ñ0ÐAÐAÐArCN) rrÂrrºrèr˜r»r¹rr¼)r½Úcpusr¾rûr¿rÀÚentrys rDÚ per_cpu_timesr%bs%€õ"Ñ#Ô#€KݘÑ%Ô%Ð%Ø €DÝ �Y Ñ,Ñ -Ô -ð °à � Š ‰ Œ ˆ Øð #ð #ˆDØ�Š˜vÑ&Ô&ð #ØŸš™œ�Ø ¥#¥iÔ&7Ñ"8Ô"8¸1Ñ"<Ð <Ô=�ØAÐA¸&ÐAÑAÔA�Ý! 6Ð*�Ø— ’ ˜EÑ"Ô"Ð"øØð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s²BCÃCÃCcóN— tjd¦«S#t$�rd}tdt ¦«z¦«5}|D].}| ¦« d¦«r|dz }Œ/ ddd¦«n #1swxYwY|dkr…tjd¦«}tdt ¦«z¦«5}|D]7}|  d ¦«d}|  |¦«r|dz }Œ8 ddd¦«n #1swxYwY|dkrYdS|cYSwxYw) z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNrú %s/cpuinfos processorrNzcpu\dr®r‡) r–ÚsysconfÚ ValueErrorrrÚlowerrèÚreÚcompilerr˜Úmatch)Únumr¾rûÚsearchs rDÚcpu_count_logicalr1vsÅ€ðÝŒzÐ/Ñ0Ô0Ð0øÝ ðñðàˆÝ ˜­Ñ(9Ô(9Ñ9Ñ :Ô :ð ¸aØð ð �Ø—:’:‘<”<×*Ò*¨<Ñ8Ô8ðؘ1‘H�Cøð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �!Š8ˆ8Ý”Z Ñ)Ô)ˆFݘ9¥Ñ'8Ô'8Ñ8Ñ9Ô9ð !¸QØð!ð!�DØŸ:š: c™?œ?¨1Ô-�DØ—|’| DÑ)Ô)ð!ؘq™˜øð!ð !ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð �!Š8ˆ8à�4�4؈ ˆ ˆ ð-øøøs]‚–+D$Á2BÁ4 D$ÂB ÂD$ÂB Â;D$Ã;D Ã? D$Ä D ÄD$ÄD Ä D$ÄD$Ä#D$cóP—t¦«}d}d}tj|¦«ptj|¦«D]b}t|¦«5}| | ¦« ¦«¦«ddd¦«n #1swxYwYŒct |¦«}|dkr|Si}i}tdt¦«z¦«5}|D]�}| ¦« ¦«}|s& |d||d<n#t$rYnwxYwi}ŒP|  d¦«r+|  d d ¦«\} } t| ¦«|| <Œ‘ ddd¦«n #1swxYwYt| ¦«¦«}|pdS) z2Return the number of physical cores in the system.z9/sys/devices/system/cpu/cpu[0-9]*/topology/core_cpus_listz?/sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_listNrr(ó cpu coresó physical id)r4r3s :r)ÚsetÚglobrÚaddrÄrÅr»rr+ròrèr˜róÚsumr¿) ÚlsÚp1Úp2rsr¾ÚresultÚmappingÚ current_inforûÚkeyÚvalues rDÚcpu_count_physicalrA“s0€õ ‰Œ€Bð E€BØ J€BÝ” ˜"‘ ” Ð.¥¤¨2¡¤ð%ð%ˆÝ ˜Ñ Ô ð % !Ø �FŠF�1—6’6‘8”8—>’>Ñ#Ô#Ñ $Ô $Ð $ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %øå �‰WŒW€FØ �‚{€{؈ ð€GØ€LÝ �\¥OÑ$5Ô$5Ñ5Ñ 6Ô 6ð3¸!Øð 3ð 3ˆDØ—:’:‘<”<×%Ò%Ñ'Ô'ˆDØð 3ðà$ \Ô2ð˜L¨Ô8Ñ9Ð9øåðððØ�Dðøøøà!� � ð—?’?Ð#AÑBÔBð3Ø!%§¢¨F°AÑ!6Ô!6‘J�C˜Ý(+¨E© ¬ �L Ñ%øð 3ð3ð3ð3ñ3ô3ð3ð3ð3ð3ð3ð3øøøð3ð3ð3ð3õ"�—’Ñ!Ô!Ñ "Ô "€FØ ˆ>�TÐsIÁ :BÂB ÂB Ã-E8ÄDÄE8Ä D$Ä!E8Ä#D$Ä$AE8Å8E<Å?E<có2—tdt¦«z¦«5}d}d}d}|D]À}| d¦«r(t| ¦«d¦«}ny| d¦«r(t| ¦«d¦«}n<| d¦«r't| ¦«d¦«}|�|�|�nŒÁddd¦«n #1swxYwYd}t j||||¦«S)z*Return various CPU stats as a named tuple.r®Nsctxtrsintrssoftirqr)rrrèrór˜rÚ scpustats)r¾Ú ctx_switchesÚ interruptsÚsoft_interruptsrûÚsyscallss rDÚ cpu_statsrH½sR€å �Y¥Ñ!2Ô!2Ñ2Ñ 3Ô 3ð °q؈ ؈ ؈Øð ð ˆDØ�Š˜wÑ'Ô'ð 7Ý" 4§:¢:¡<¤<°¤?Ñ3Ô3� � Ø—’ Ñ)Ô)ð 7Ý  §¢¡¤¨a¤Ñ1Ô1� � Ø—’ Ñ,Ô,ð 7Ý"% d§j¢j¡l¤l°1¤oÑ"6Ô"6�ØÐ'¨OÐ,GØ"Ð.Ø�øð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð€HÝ Ô Ø�j /°8ñ =ô =ð=sŸC C5Ã5C9Ã<C9z'/sys/devices/system/cpu/cpufreq/policy0z$/sys/devices/system/cpu/cpu0/cpufreqc ó6—d„}g}tt¦«¦«D]÷}||¦«}|sŒtjj}t ||d¦«d¬¦«}|€,t ||d¦«d¬¦«}|€t d¦«‚t|¦«dz }tt ||d¦«¦«¦«dz }tt ||d ¦«¦«¦«dz }| tj |||¦«¦«Œø|S) z‚Return frequency metrics for all CPUs. Contrarily to other OSes, Linux updates these values in real-time. cóf—d|zd|zfD]%}tj |¦«r|cSŒ&dS)Nz(/sys/devices/system/cpu/cpufreq/policy%sz%/sys/devices/system/cpu/cpu%s/cpufreq)r–rsÚexists)r/Úps rDÚget_pathzcpu_freq..get_pathÙsR€Ø@À3ÑFØ=ÀÑCðEð ð �å”7—>’> !Ñ$Ô$ðØ�H�H�Hðð ð rCÚscaling_cur_freqN©rÊÚcpuinfo_cur_freqz!can't find current frequency fileièÚscaling_max_freqÚscaling_min_freq) Úranger1r–rsrrÌÚNotImplementedErrorrór¼rÚscpufreq)rMrãÚnrsÚpjoinÚcurrÚmax_Úmin_s rDÚcpu_freqr[Ôs=€ð  ð ð ð ˆÝÕ(Ñ*Ô*Ñ+Ô+ð ;ð ;ˆAØ�8˜A‘;”;ˆDØð Øå”G”LˆEÝ�u�u˜TÐ#5Ñ6Ô6ÀÐFÑFÔFˆD؈|õ˜5˜5 Ð'9Ñ:Ô:ÀTÐJÑJÔJ�Ø�<Ý-Ø;ñ=ô=ð=å�t‘9”9˜tÑ#ˆDÝ•s˜5˜5 Ð'9Ñ:Ô:Ñ;Ô;Ñ<Ô<¸tÑCˆDÝ•s˜5˜5 Ð'9Ñ:Ô:Ñ;Ô;Ñ<Ô<¸tÑCˆDØ �JŠJ•wÔ'¨¨d°DÑ9Ô9Ñ :Ô :Ð :Ð :؈ rCz /proc/cpuinfoc ón—g}tdt¦«z¦«5}|D]x}| ¦« d¦«rO| dd¦«\}}| t jt|¦«dd¦«¦«Œy ddd¦«n #1swxYwY|S)z}Alternate implementation using /proc/cpuinfo. min and max frequencies are not available and are set to None. r(scpu mhzó:rrÎN) rrr+rèr˜r¼rrUr)rãr¾rûr?r@s rDr[r[õs€ðˆÝ ˜­Ñ(9Ô(9Ñ9Ñ :Ô :ð G¸aØð Gð G�Ø—:’:‘<”<×*Ò*¨:Ñ6Ô6ðGØ!%§¢¨D°!Ñ!4Ô!4‘J�C˜Ø—J’J�wÔ/µ°e± ´ ¸bÀ"ÑEÔEÑFÔFÐFøð Gð Gð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð ˆ s¡A ("10.0.0.5", 22) "0000000000000000FFFF00000100007F:9E49" -> ("::ffff:127.0.0.1", 40521) The IP address portion is a little or big endian four-byte hexadecimal number; that is, the least significant byte is listed first, so we need to reverse the order of the bytes to convert it to an IP address. The port is represented as a two-byte hexadecimal number. Reference: http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html ú:érBÚasciiNr8z>4Iz<4I)r˜rór"ÚencoderorpÚ LITTLE_ENDIANÚ inet_ntopÚbase64Ú b16decoderrÚstructÚpackÚunpackr*rr`rÚaddr)r“ÚfamilyÚipÚports rDÚdecode_addresszConnections.decode_address]sˆ€ð"—:’:˜c‘?”?‰ˆˆDÝ�4˜‰}Œ}ˆðð Ø�2Ý ð $Ø—’˜7Ñ#Ô#ˆBØ •V”^Ò #Ð #åð DÝÔ% f­fÔ.>¸rÑ.BÔ.BÀ4À4ÀRÀ4Ô.HÑIÔI��åÔ% f­fÔ.>¸rÑ.BÔ.BÑCÔC��åÔ! "Ñ%Ô%ˆBð å ðGÝÔ)ݜݜ  EÐE­F¬M¸%ÀÑ,DÔ,DÐEÐEÐEñGôG�B�Bõ Ô)ݜݜ  EÐE­F¬M¸%ÀÑ,DÔ,DÐEÐEÐEñGôG�Bøøõð ð ð å$‘”ðÝ/Ð/àð  øøøõ Œ|˜B Ñ%Ô%Ð%s ÃB EÅ!E<Nc #ó K—| d¦«r!tj |¦«sdSt |t ¬¦«5}| ¦«t|d¦«D]õ\}} | ¦«dd…\ }} } } }}}}}} n&#t$rtd|›d|›d|›�¦«‚wxYw| |vr|| d \} }nd \} }|�|| krŒx|tj krt| } n tj} t  | |¦«} t  | |¦«} n#t$$rYŒæwxYw|||| | | | fV—Œö ddd¦«dS#1swxYwYdS) z.Parse /proc/net/tcp* and /proc/net/udp* files.Ú6N©Ú bufferingrr·úerror while parsing ú; malformed line r‡r©Nr8)r™r–rsrKrÚBIGFILE_BUFFERINGrºÚ enumerater˜r*Ú RuntimeErrorrorqÚ TCP_STATUSESrÚ CONN_NONErbr—r`)Úfiler”Útype_rÚ filter_pidr¾ÚlinenorûrÚladdrÚraddrÚstatusr€rßrts rDÚ process_inetzConnections.process_inet�s6èè€ð �=Š=˜Ñ Ô ð ¥b¤g§n¢n°TÑ&:Ô&:ð à ˆFÝ �tÕ'8Ð 9Ñ 9Ô 9ð I¸QØ �JŠJ‰LŒLˆLÝ )¨!¨Q¡¤ð Ið I‘ �˜ð1àŸ š ™ œ  S b SÔ)ñB�A�u˜e V¨Q°°1°a¸¸E¸Eøå!ð1ð1ð1Ý&˜,à ˜D˜D & & &¨$¨$ð0ñ1ô1ð1ð1øøøð˜F�?�?ð% Uœm¨AÔ.‘G�C˜˜à&‘G�C˜ØÐ)¨j¸CÒ.?Ð.?Øà¥Ô 2Ò2Ð2Ý!-¨fÔ!5˜˜å!(Ô!2˜ð!Ý +× :Ò :¸5À&Ñ IÔ I˜Ý +× :Ò :¸5À&Ñ IÔ I˜˜øÝ0ð!ð!ð!Ø ˜ð!øøøà˜v u¨e°U¸FÀCÐHÐHÐHÐHÐHð= Ið Ið Ið Iñ Iô Ið Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið Ið IsOÁ*E8Á:'B"Â!E8Â"#CÃAE8Ä6EÅ E8Å EÅE8ÅEÅE8Å8E<Å?E<c #ó0K—t|t¬¦«5}| ¦«|D]Ì}| ¦«} |dd…\}}}}}}} n)#t$rd|vrYŒ:t d|›d|›�¦«‚wxYw| |vr || } ndg} | D]f\} } |�|| krŒt |¦«d kr |d } nd } tjt|¦«¦«}d }tj }| ||| ||| fV—ŒgŒÍ ddd¦«dS#1swxYwYdS) zParse /proc/net/unix files.ršrér‡rœr�ržNr³r8Ú) rrŸrºr˜r*r¡r»rÚsocktype_to_enumrór£)r¤r”rr¦r¾rûÚtokensrr¥r€Úpairsrßrtrsr©rªs rDÚ process_unixzConnections.process_unix¸sâèè€õ�tÕ'8Ð 9Ñ 9Ô 9ð! L¸QØ �JŠJ‰LŒLˆLØð Lð L�ØŸš™œ�ð)Ø28¸¸1¸´+Ñ/�A�q˜!˜Q  q¨%¨%øÝ!ð)ð)ð)Ø $��à ˜Ý&˜,à ˜D˜D $ $ð(ñ)ô)ð)ð )øøøð˜F�?�?ð# 5œM�E�Eà'˜L�EØ$ðLðL‘G�C˜Ø!Ð-°*ÀÒ2CÐ2CØ å˜v™;œ;¨!Ò+Ð+Ø#)¨"¤:˜D˜Dà#%˜DÝ 'Ô 8½¸U¹¼Ñ DÔ D˜ð!#˜Ý!(Ô!2˜Ø! 6¨5°$¸¸vÀsÐKÐKÐKÐKÐKðLð# Lð! Lð! Lð! Lñ! Lô! Lð! Lð! Lð! Lð! Lð! Lð! Lð! Løøøð! Lð! Lð! Lð! Lð! Lð! Ls6™-D ÁAÁD ÁBÁ(D Á*BÂA=D Ä DÄDc óΗ||jvr7td|›dd d„|jD¦«¦«›�¦«‚t¦«|_|�| |¦«}|sgSn| ¦«}t¦«}|j|D]¸\}}}|j›d|›�}|tj tj fvr|  |||||¬¦«} n|  ||||¬¦«} | D]U\} }}} } } }|rtj| ||| | | ¦«}ntj| ||| | | |¦«}| |¦«ŒVŒ¹t#|¦«S)Nzinvalid z kind argument; choose between rcó,—g|]}t|¦«‘ŒSrB)Úreprrês rDrìz(Connections.retrieve..ás€Ð0LÐ0LÐ0L¸Qµ°a±´Ð0LÐ0LÐ0LrCz/net/)r¦)rur*rrrvr�r†r5rorprrr«r²rÚpconnÚsconnr7r|)rwÚkindrßrrãÚ proto_namer”r¥rsr9rtr¨r©rªÚ bound_pidÚconns rDÚretrievezConnections.retrieveÞsÈ€Ø �t”yÐ Ð Ý�*Ø $   d§i¢iÐ0LÐ0LÀ$Ä)Ð0LÑ0LÔ0LÑ&MÔ&MÐ&MðOñPôPð På+Ñ-Ô-ˆÔØ ˆ?Ø×)Ò)¨#Ñ.Ô.ˆFØð à� ð ð×(Ò(Ñ*Ô*ˆF݉eŒeˆØ)-¬°4¬ð ð Ñ %ˆJ˜ Ø"&Ô"3Ð"3Ð"3°Z°ZÐ@ˆDØ�&œ.­&¬/Ð:Ð:Ð:Ø×&Ò&ؘ& %¨¸Cð'ñAôA��ð×&Ò&ؘ& &°Sð'ñ:ô:�àFHð ð ÑB��F˜E 5¨%°¸Øð<Ý"œ=¨¨V°U¸EÀ5Ø)/ñ1ô1�D�Dõ#œ=¨¨V°U¸EÀ5Ø)/°ñ<ô<�Dà—’˜‘ ” � � ð õ�C‰yŒyÐrCrƒ) r?r@rAÚ__doc__rxr�r†Ú staticmethodr—r«r²r¼rBrCrDrbrbsÅ€€€€€ð ð ð!ð!ð!ð.ððð,ððð ð0&ð0&ñ„\ð0&ðdð%Ið%Ið%Iñ„\ð%IðNð#Lð#Lð#Lñ„\ð#LðJðððððrCrbrlcó6—t |¦«S)z$Return system-wide open connections.)Ú _connectionsr¼)r¸s rDÚnet_connectionsrÁs€å × Ò  Ñ &Ô &Ð&rCcó—tdt¦«z¦«5}| ¦«}ddd¦«n #1swxYwYi}|dd…D]´}| d¦«}|dksJt |¦«¦«‚|d|… ¦«}||dzd… ¦« ¦«}tt|¦«\}}} } } } } }}}}}}}}}||||| || |f||<Œµ|S)zsReturn network I/O statistics for every network interface installed on the system as a dict of raw tuples. z %s/net/devNr<rˆrr) rrÚ readlinesÚrfindrµrÅr˜Úmapró)r¾ÚlinesÚretdictrûÚcolonrªrÀÚ bytes_recvÚ packets_recvÚerrinÚdropinÚfifoinÚframeinÚ compressedinÚ multicastinÚ bytes_sentÚ packets_sentÚerroutÚdropoutÚfifooutÚ collisionsoutÚ carrieroutÚ compressedouts rDÚnet_io_countersrÙsj€õ �<¥/Ñ"3Ô"3Ñ3Ñ 4Ô 4ð¸Ø— ’ ‘ ” ˆðððñôððððððøøøððððà€GØ�a�b�b” ð9ð9ˆØ— ’ ˜3‘”ˆØ�qŠyˆyˆy�$˜t™*œ*‰yŒyˆyØ�F�U�FŒ|×!Ò!Ñ#Ô#ˆØ�e˜a‘i�j�jÔ!×'Ò'Ñ)Ô)×/Ò/Ñ1Ô1ˆõ&�c 6Ñ*Ô*ñ! ˆØ Ø Ø Ø Ø Ø Ø à Ø Ø Ø Ø Ø Ø Ø à# Z°¸|Ø ¨°ð9ˆ�‰ ˆ à €NsŸAÁAÁAcóØ—tjttjttjt i}t¦« ¦«}i}|D]�} tj |¦«}tj |¦«}tj |¦«\}}tj|||||¦«||<Œc#t$r }|jt jkr‚Yd}~Œˆd}~wwxYw|S)z)Get NIC stats (isup, duplex, speed, mtu).N)rÚ DUPLEX_FULLrÚ DUPLEX_HALFrÚDUPLEX_UNKNOWNrrÙÚkeysÚ cext_posixÚ net_if_mtuÚnet_if_is_runningÚnet_if_duplex_speedrÚ snicstatsrÇråÚENODEV) Ú duplex_mapÚnamesrãrªÚmtuÚisupÚduplexÚspeedrs rDÚ net_if_statsrë+sù€åÔ"¥OÝÔ"¥OÝÔ%Õ'9ð;€Jõ Ñ Ô × "Ò "Ñ $Ô $€EØ €CØð Pð Pˆð PÝÔ'¨Ñ-Ô-ˆCÝÔ/°Ñ5Ô5ˆDÝ Ô4°TÑ:Ô:‰MˆF�Eõ  Ô)¨$° ¸6Ô0BÀEÈ3ÑOÔOˆC�‰IˆIøõ ð ð ð àŒy�EœLÒ(Ð(Øð)Ð(Ð(Ð(Ð(øøøøð øøøð €JsÁ?B=Â= C'ÃC"Ã"C'Fc ó¤—d„}d„}tj dt¦«z¦«r |¦«}nHtj d¦«r |¦«}nt dt¦«z¦«‚i}|D]C}|\ }}}} } } } } }}|st |¦«sŒ!| t z} | t z} ||| | | | | ||f ||<ŒD|S)zcReturn disk I/O statistics for every disk installed on the system as a dict of raw tuples. c 3ó¼K—tdt¦«z¦«5}| ¦«}ddd¦«n #1swxYwY|D�] }| ¦«}t |¦«}|dkrF|d}t |d¦«}t t |dd…¦«\ }}} } } } } }}}n‹|dks|dkr2|d}t t |dd…¦«\ }}}} } } } } }}}nM|dkr5|d}t t |dd…¦«\}}} } d x} x} x}x} }ntd |z¦«‚||| || | | || |f V—�Œ dS) Nú %s/diskstatsér#r<r$éér­rz!not sure how to interpret line %r)rrrÃr˜r»rórÅr*)r¾rÆrûrÀÚflenrªÚreadsÚ reads_mergedÚrbytesÚrtimeÚwritesÚ writes_mergedÚwbytesÚwtimerrqs rDÚ read_procfsz%disk_io_counters..read_procfsLsàèè€õ"�~­Ñ(9Ô(9Ñ9Ñ :Ô :ð "¸aØ—K’K‘M”MˆEð "ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "àð ;ñ ;ˆDØ—Z’Z‘\”\ˆFÝ�v‘;”;ˆDØ�rŠzˆzà˜a”y�ݘF 1œI™œ�å69½#¸vÀaÈÀd¼|Ñ6LÔ6Lñ4�˜v u¨f°mؘE 1 i°°Ø˜’�˜t ršz˜zà˜a”y�å69½#¸vÀaÈÀd¼|Ñ6LÔ6Lñ4�˜  f¨e°V¸]ؘE 1 i°°Ø˜’�à˜a”y�Ý03µC¸ÀÀÀ¼Ñ0DÔ0DÑ-��v˜v vØKLÐL�ÐL˜ÐL  ÐL¨}¸y¸yå Ð!DÀtÑ!KÑLÔLÐLؘ ¨°¸¸uØ ° ð;ð ;ð ;ð ;ñ ;ð+ ;ð ;s¡AÁAÁ Ac 3ó\K—tjd¦«D�]}tjtj d|¦«¦«D]Ý\}}}d|vrŒ t tj |d¦«¦«5}| ¦« ¦« ¦«}ddd¦«n #1swxYwYtj  |¦«}tt|dd…¦«\ }}} } } } } }}}||| | | | ||| |f V—ŒÞ�ŒdS)Nú /sys/blockÚstatr·) r–r}ÚwalkrsrrrÄrÅr˜ÚbasenamerÅró)ÚblockÚrootrÚfilesr¾rÀrªrórôrõrör÷rørùrúrqs rDÚ read_sysfsz$disk_io_counters..read_sysfsws}èè€Ý”Z  Ñ-Ô-ð Fñ FˆEÝ"$¤'­"¬'¯,ª,°|ÀUÑ*KÔ*KÑ"LÔ"Lð Fð F‘��a˜Ø Ð&Ð&ØÝ�rœwŸ|š|¨D°&Ñ9Ô9Ñ:Ô:ð6¸aØŸVšV™XœXŸ^š^Ñ-Ô-×3Ò3Ñ5Ô5�Fð6ð6ð6ñ6ô6ð6ð6ð6ð6ð6ð6øøøð6ð6ð6ð6å”w×'Ò'¨Ñ-Ô-�å36µs¸FÀ3ÀBÀ3¼KÑ3HÔ3Hñ1�˜  f¨e°V¸]ؘE 1 iؘU F¨F°F¸Eؘl¨M¸9ðFðFðFðFðFñ Fð Fð FsÂ9C à C ÃC rîrýzC%s/diskstats nor /sys/block filesystem are available on this system)r–rsrKrrTr¬ÚDISK_SECTOR_SIZE)ÚperdiskrûrÚgenrÇr$rªrór÷rõrùrörúrôrørqs rDÚdisk_io_countersrHs-€ð);ð);ð);ðV Fð Fð Fõ „w‡~‚~�n¥Ñ'8Ô'8Ñ8Ñ9Ô9ð*؈k‰mŒmˆˆÝ Œ�Š˜ Ñ %Ô %ð*؈j‰lŒlˆˆå!ð Ý&Ñ(Ô(ñ )ñ*ô*ð *ð€GØðAðAˆà(-ñ &ˆˆu�f˜f f¨e°U¸LØ ˜9Øð Õ0°Ñ6Ô6ð ð àÕ"Ñ"ˆØÕ"Ñ"ˆØ ¨°¸¸uØ% }°iðAˆ�‰ ˆ ð €NrCc óL—t¦«}t¦«}td|z¦«5}|D]‰}| ¦«}| d¦«s(| | ¦«¦«ŒS| d¦«d}|dkr| d¦«ŒŠ ddd¦«n #1swxYwY|dkr?tj  d¦«r tj  d¦«}n"tj  d |z¦«}g}tj |¦«}|D]P} | \} } }} | d krd } |s | d ks||vrŒdx} }tj| | || | |¦«}| |¦«ŒQ|S) z8Return mounted disk partitions as a list of namedtuples.z%s/filesystemsÚnodevú rÚzfsNrÍz /etc/mtabz%s/self/mountsÚnoner®)r5rrrÅrèr7r˜r–rsÚisfileÚrealpathrÚdisk_partitionsrÚ sdiskpartr¼)riÚfstypesr½r¾rûÚfstypeÚ mounts_pathÚretlistÚ partitionsÚ partitionÚdeviceÚ mountpointÚoptsÚmaxfileÚmaxpathÚntuples rDrr§s÷€å‰eŒe€GÝ!Ñ#Ô#€KÝ Ð# kÑ1Ñ 2Ô 2ð '°aØð 'ð 'ˆDØ—:’:‘<”<ˆDØ—?’? 7Ñ+Ô+ð 'Ø— ’ ˜DŸJšJ™LœLÑ)Ô)Ð)Ð)🚠DÑ)Ô)¨!Ô,�ؘU’?�?Ø—K’K Ñ&Ô&Ð&øð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð�gÒÐ¥"¤'§.¢.°Ñ"=Ô"=ÐÝ”g×&Ò& {Ñ3Ô3ˆ ˆ å”g×&Ò&Ð'7¸+Ñ'EÑFÔFˆ à€GÝÔ% kÑ2Ô2€JØð ð ˆ Ø+4Ñ(ˆ� ˜F DØ �VÒ Ð ØˆFØð ؘŠ|ˆ|˜v¨WÐ4Ð4ØØ Ð ˆ�'ÝÔ" 6¨:°v¸tØ#*¨Gñ5ô5ˆà�Š�vÑÔÐÐà €Ns¯B C à C ÃC c óº—tjt¦«}tjd¦«}| tjd¦«¦«t t d„|D¦«¦«¦«}tjd¦«}tjd¦«}|D]1}|  d|¦«}||vr|  |¦«Œ2|D�]@} |dz}tt|¦«¦«dz }tj tj |¦«d ¦«}t|d ¬ ¦«} n#t"t$t&f$rYŒ�wxYwt|d zd ¬¦«} t|dzd ¬¦«} t|dzdd ¬¦«} | �& t| ¦«dz } n#t&$rd } YnwxYw| �& t| ¦«dz } n#t&$rd } YnwxYw||   | || | f¦«�ŒB|�s0tjd¦«}t t |¦«¦«}|D�]ü} tj |d¦«}tt|¦«¦«dz }tj |d¦«}t|d ¬ ¦«} n9#t"t$t&f$r} t)d| ›d|›�¦«Yd } ~ Œ¦d } ~ wwxYwtj|dz¦«}t d„|D¦«¦«}d } d } |D]ø}tj ||dz¦«}t|dd ¬¦«}|dkr3ttj ||dz¦«d ¬¦«} n8|dkr2ttj ||dz¦«d ¬¦«} | �& t| ¦«dz } n#t&$rd } YnwxYw| �& t| ¦«dz } Œæ#t&$rd } YŒôwxYwŒù||   d|| | f¦«�Œþt+|¦«S)aøReturn hardware (CPU and others) temperatures as a dict including hardware name, label, current, max and critical temperatures. Implementation notes: - /sys/class/hwmon looks like the most recent interface to retrieve this info, and this implementation relies on it only (old distros will probably use something else) - lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon - /sys/class/thermal/thermal_zone* is another one but it's more difficult to parse z/sys/class/hwmon/hwmon*/temp*_*z&/sys/class/hwmon/hwmon*/device/temp*_*cóD—g|]}| d¦«d‘ŒS©rr©r˜rês rDrìz(sensors_temperatures..åó&€Ð?Ð?Ð?°˜AŸGšG C™LœL¨œOÐ?Ð?Ð?rCz5/sys/devices/platform/coretemp.*/hwmon/hwmon*/temp*_*z'/sys/devices/platform/coretemp.*/hwmon/z/sys/class/hwmon/Ú_inputg@�@rªF©rËÚ_maxNrOÚ_critÚ_labelr®©rÊrËz /sys/class/thermal/thermal_zone*ÚtempÚtypez ignoring z for file z /trip_point*có¨—g|]O}d tj |¦« d¦«dd…¦«‘ŒPS)rrr#)rr–rsrr˜)rërLs rDrìz(sensors_temperatures..%sf€ðJðJðJØ9:ð #ŸxšxÝ”× Ò  Ñ#Ô#×)Ò)¨#Ñ.Ô.¨q°¨sÔ3ñ 5ô 5ðJðJðJrCÚ_typeÚcriticalÚ_tempÚhigh)Ú collectionsrr|r6ÚextendÚsortedr5r,r-Úsubr¼rrÌr–rsrÚdirnamerÆrÇr*r Údict)rãÚ basenamesÚ basenames2ÚreplrªÚaltnameÚbasersrâÚ unit_namer/r-ÚlabelrÚ trip_pathsÚ trip_pointsÚ trip_pointÚ trip_types rDÚsensors_temperaturesrAÒsý€õ Ô !¥$Ñ 'Ô '€CÝ” Ð;Ñ<Ô<€Ið×Ò•T”YÐGÑHÔHÑIÔIÐIÝ•sÐ?Ð?°YÐ?Ñ?Ô?Ñ@Ô@ÑAÔA€Iõ ”Ø?ñAôA€Jå Œ:Ð?Ñ @Ô @€DØð#ð#ˆØ—(’(Ð.°Ñ5Ô5ˆØ ˜)Ð #Ð #Ø × Ò ˜TÑ "Ô "Ð "øàð @ñ @ˆð ؘ(‘?ˆDÝ�C ™IœIÑ&Ô&¨Ñ/ˆGÝ”7—<’<¥¤§¢°Ñ 5Ô 5°vÑ>Ô>ˆDݘD¨Ð/Ñ/Ô/ˆIˆIøÝ�¥*Ð-ð ð ð ð ˆHð øøøõ�4˜&‘=¨4Ð0Ñ0Ô0ˆÝ�t˜g‘~°Ð5Ñ5Ô5ˆÝ�D˜8‘O¨b¸Ð?Ñ?Ô?ˆà Ð ð ݘT‘{”{ VÑ+��øÝð ð ð Ø���ð øøøà Ð ð Ý  ™?œ?¨VÑ3��øÝð ð ð Ø���ð øøøð ˆIŒ×Ò˜u g¨t°XÐ>Ñ?Ô?Ð?Ñ?ð ñ(AÝ”IÐ@ÑAÔAˆ Ý�3˜y™>œ>Ñ*Ô*ˆ àð$ Añ$ AˆDð Ý”w—|’| D¨&Ñ1Ô1�Ý¥ D¡ ¤ Ñ*Ô*¨VÑ3�Ý”w—|’| D¨&Ñ1Ô1�Ý ¨UÐ3Ñ3Ô3� � øÝ�W¥jÐ1ð ð ð Ý�°3°3°3¸¸Ð=Ñ>Ô>Ð>Ø����øøøøð øøøõœ 4¨.Ñ#8Ñ9Ô9ˆJÝðJðJØ>HðJñJôJñKôKˆKàˆH؈DØ)ð (ð (� Ý”w—|’| D¨*°wÑ*>Ñ?Ô?�Ý ¨r¸%Ð@Ñ@Ô@� Ø  Ò*Ð*Ý"¥2¤7§<¢<°°jÀ7Ñ6JÑ#KÔ#KØ,0ð 2ñ 2ô 2�H�Hà &Ò(Ð(Ý�rœwŸ|š|¨D°*¸wÑ2FÑGÔGØ(,ð.ñ.ô.�DðÐ#ð$Ý$ T™{œ{¨VÑ3˜˜øÝ%ð$ð$ð$Ø#˜˜˜ð$øøøàÐ'ð(Ý#(¨¡?¤?°VÑ#;˜˜øÝ%ð(ð(ð(Ø#'˜˜˜ð(øøøð(ð � ŒN× !Ò ! 2 w°°hÐ"?Ñ @Ô @Ð @Ñ @å �‰9Œ9ÐstÃA2EÅE*Å)E*Æ-GÇ GÇGÇG(Ç( G7Ç6G7ÉA0KËK;ËK6Ë6K;ÏO2Ï2 PÐPÐPÐ P)Ð(P)cóÒ—tjt¦«}tjd¦«}|stjd¦«}t t d„|D¦«¦«¦«}|D]í} t t|dz¦«¦«}n;#ttf$r'}tj d|zt¦«Yd}~ŒVd}~wwxYwttj tj |¦«d¦«d¬ ¦«}t|d zd d¬ ¦«}|| t%j||¦«¦«Œît)|¦«S) a‡Return hardware fans info (for CPU and other peripherals) as a dict including hardware label and current speed. Implementation notes: - /sys/class/hwmon looks like the most recent interface to retrieve this info, and this implementation relies on it only (old distros will probably use something else) - lm-sensors on Ubuntu 16.04 relies on /sys/class/hwmon z/sys/class/hwmon/hwmon*/fan*_*z%/sys/class/hwmon/hwmon*/device/fan*_*cóD—g|]}| d¦«d‘ŒSr r!rês rDrìz sensors_fans..Tr"rCr#z ignoring %rNrªFr$r'r®r()r0rr|r6r2r5rórÌrÆrÇrr r r–rsrr4r¼rÚsfanr5)rãr6r:rârr;r<s rDÚ sensors_fansrECs\€õ Ô !¥$Ñ 'Ô '€CÝ” Ð:Ñ;Ô;€IØ ðGõ”IÐEÑFÔFˆ å•sÐ?Ð?°YÐ?Ñ?Ô?Ñ@Ô@ÑAÔA€IØð <ð <ˆð Ý�#˜d X™oÑ.Ô.Ñ/Ô/ˆGˆGøÝ�Ð!ð ð ð Ý ŒM˜-¨#Ñ-­~Ñ >Ô >Ð >Ø ˆHˆHˆHˆHøøøøð øøøõ�œŸ š ¥R¤W§_¢_°TÑ%:Ô%:¸FÑCÔCØ$ð&ñ&ô&ˆ å�D˜8‘O¨b¸Ð?Ñ?Ô?ˆØ ˆIŒ×Ò�gœl¨5°'Ñ:Ô:Ñ;Ô;Ð;Ð;å �‰9Œ9ÐsÁ/BÂC CÃCcóF‡ —t¦«Š ˆ fd„}d„tjt¦«D¦«}|sdStj tt |¦«d¦«}||dz|dz¦«}||dz|dz¦«}||d z|d z¦«}||d z¦«}|�|� d |z|z }n;#t$rd }Yn-wxYwtt|dzd¬¦«¦«}|dkrdSd}|tj td¦«tj td¦«¦«} | �| dk}n6t|dzdd¬¦«  ¦«} | dkrd}n| dvrd}|r tj } nj|�5|�3 t||z dz¦«} nO#t$rtj } Yn7wxYw|�%t|dz¦«} | dkr tj } n tj } tj|| |¦«S)aReturn battery information. Implementation note: it appears /sys/class/power_supply/BAT0/ directory structure may vary and provide files with the same meaning but under different names, see: https://github.com/giampaolo/psutil/issues/966 cóŽ•—|D]@}t|‰¬¦«}|‰kr'| ¦«rt|¦«n|cSŒAdS)zvAttempt to read the content of multiple files which may not exist. If none of them exist return None. rON)rÌÚisdigitró)ÚpathsrsrãÚnulls €rDÚ multi_catz"sensors_battery..multi_catls\ø€ðð :ð :ˆDÝ�d TÐ*Ñ*Ô*ˆCØ�dŠ{ˆ{Ø#&§;¢;¡=¤=Ð9•s˜3‘x”x�x°cÐ9Ð9Ð9ðàˆtrCcóh—g|]/}| d¦«sd| ¦«v¯-|‘Œ0S)ÚBATÚbattery)rèr+rês rDrìz#sensors_battery..vsG€ð $ð $ð $�!¸¿ º ÀUÑ8KÔ8Kð $Ø ˜Ÿš™œÐ "Ð "ð Ø "Ð "Ð "rCNrz /energy_nowz /charge_nowz /power_nowz /current_nowz /energy_fullz /charge_fullz/time_to_empty_nowgY@rÎz /capacityr8rOz AC0/onlinez AC/onlinerú/statusr®Fr(Ú discharging)ÚchargingÚfullTié<)Úobjectr–r}ÚPOWER_SUPPLY_PATHrsrr2ÚZeroDivisionErrorrórÌr+rÚPOWER_TIME_UNLIMITEDÚPOWER_TIME_UNKNOWNÚsbattery) rKÚbatsrÚ energy_nowÚ power_nowÚ energy_fullÚ time_to_emptyr_Ú power_pluggedÚonlinerªÚsecsleftrJs @rDÚsensors_batteryrbcsºø€õ ‰8Œ8€Dðððððð $ð $•r”zÕ"3Ñ4Ô4ð $ñ $ô $€Dà ð؈tõ Œ7�<Š<Õ)­6°$©<¬<¸¬?Ñ ;Ô ;€Dð�Ø ˆ}ÑØ ˆ}Ññô€Jð� Ø ˆ|ÑØ ˆ~Ññô€Ið�)Ø ˆ~ÑØ ˆ~Ññô€Kð�I˜dÐ%9Ñ9Ñ:Ô:€MðР:Ð#9ð Ø˜jÑ(¨;Ñ6ˆGˆGøÝ ð ð ð ØˆGˆGˆGð øøøõ•c˜$ Ñ,°rÐ:Ñ:Ô:Ñ;Ô;ˆØ �bŠ=ˆ=Ø�4ð €MØ ˆYÝ Œ� Š Õ&¨ Ñ5Ô5Ý Œ� Š Õ&¨ Ñ4Ô4ñ6ô6€FðÐØ !š ˆ ˆ å�T˜IÑ%°¸5ÐAÑAÔA×GÒGÑIÔIˆØ �]Ò "Ð "Ø!ˆMˆMØ Ð+Ð +Ð +Ø ˆMð ð .ÝÔ/ˆˆØ Ð  IÐ$9ð 2ݘ:¨ Ñ1°DÑ8Ñ9Ô9ˆHˆHøÝ ð 2ð 2ð 2ÝÔ1ˆHˆHˆHð 2øøøà Ð "Ý�} rÑ)Ñ*Ô*ˆØ �aŠ<ˆ<ÝÔ1ˆHøåÔ-ˆå Ô ˜G X¨}Ñ =Ô =Ð=s$Â=Cà CÃCÆ(F>Æ>GÇGcó¼—g}tj¦«}|D]C}|\}}}}}}|sŒ|dvrd}tj||pd|||¦«} | | ¦«ŒD|S)z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú localhostN)rÚusersrÚsuserr¼) rÚrawlistÚitemrŒÚttyÚhostnameÚtstampÚ user_processrßÚnts rDrereÁs…€à€GÝŒj‰lŒl€GØð ð ˆØ9=Ñ6ˆˆc�8˜V \°3ðð Ø Ø �~Ð %Ð %Ø"ˆHÝ Œ]˜4  ¨¨h¸ÀÑ DÔ DˆØ�Š�rÑÔÐÐØ €NrCcóL—dt¦«z}t|¦«5}|D]b}| d¦«rKt| ¦« ¦«d¦«}|a|ccddd¦«SŒctd|z¦«‚#1swxYwYdS)zAReturn the system boot time expressed in seconds since the epoch.r®sbtimerNzline 'btime' not found in %s)rrrèrrÅr˜Ú BOOT_TIMEr¡)rsr¾rûrãs rDÚ boot_timerpÓsù€ð •Ñ(Ô(Ñ (€DÝ �TÑ Ô ð3˜aØð ð ˆDØ�Š˜xÑ(Ô(ð ݘDŸJšJ™LœL×.Ò.Ñ0Ô0°Ô3Ñ4Ô4�Ø� Ø� � ð 3ð3ð3ð3ñ3ô3ð3ð3ð õØ *¨TÑ 1ñ3ô3ð 3ð 3ð3ð3ð3øøøð3ð3ð3ð3ð3ð3s¡ABÂBÂB Bcóp—d„tjtt¦«¦«¦«D¦«S)z7Returns a list of PIDs currently running on the system.cóT—g|]%}| ¦«¯t|¦«‘Œ&SrB)rHrórês rDrìzpids..ès+€Ð LÐ LÐ L�qÀÇ Â Á Ä Ð L�C�‰FŒFÐ LÐ LÐ LrC)r–r}rrrBrCrDr„r„æs.€à LÐ L�BœJ¥q­Ñ):Ô):Ñ';Ô';Ñ<Ô<Ð LÑ LÔ LÐLrCcó®—tj|¦«sdS t¦«›d|›d�}t|¦«5}|D]R}| d¦«r;t | ¦«d¦«}||kccddd¦«SŒStd|z¦«‚#1swxYwYdS#ttf$r|t¦«vcYSwxYw)zcCheck for the existence of a unix PID. Linux TIDs are not supported (always return False). Fr¦rOsTgid:rNz'Tgid' line not found in %s) rÚ pid_existsrrrèrór˜r*ÚEnvironmentErrorr„)rßrsr¾rûÚtgids rDrtrtës[€õ Ô ˜sÑ #Ô #ð!؈uð !õ&5Ñ%6Ô%6Ð%6Ð%6¸¸¸Ð<ˆDݘTÑ"Ô"ð G aØð+ð+�DØ—’ xÑ0Ô0ð+Ý" 4§:¢:¡<¤<°¤?Ñ3Ô3˜ð $ sš{Ð*Ð*ð  Gð Gð Gð Gñ Gô Gð Gð Gð+õ !Ð!>ÀÑ!EÑFÔFÐFð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gøõ!¥*Ð-ð !ð !ð !Ø�$™&œ&�=Ð Ð Ð ð !øøøs;˜#B0»AB# B0ÂB#Â#B'Â'B0Â*B'Â+B0Â0!CÃCcó–—i}t¦«}t¦«D]©} t|›d|›d�¦«5}| ¦«}ddd¦«n #1swxYwY| d¦«}||dzd… ¦«}t |d¦«}|||<Œ“#ttf$rYŒ¦wxYw|S)zsObtain a {pid: ppid, ...} dict for all running processes in one shot. Used to speed up Process.children(). r¦ú/statNó)r<r) rr„rrÄrÄr˜rórr!)rãr½rßr¾ÚdataÚrparÚdsetÚppids rDÚppid_mapr~ s!€ð €CÝ!Ñ#Ô#€K݉vŒvð ð ˆð ݨ[¨[¨[¸#¸#¸#Ð>Ñ?Ô?ð À1Ø—v’v‘x”x�ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð—:’:˜dÑ#Ô#ˆDؘ˜q™˜ ˜ ”?×(Ò(Ñ*Ô*ˆDÝ�t˜A”w‘<”<ˆD؈C�‰HˆHøõ"Õ#5Ð6ð ð ð ð ˆDð øøøð €Js4¢B2·AÁ B2ÁA ÁB2ÁA Á B2Â2CÃCcóF‡—tj‰¦«ˆfd„¦«}|S)zlDecorator which translates bare OSError and IOError exceptions into NoSuchProcess and AccessDenied. cóX•— ‰|g|¢Ri|¤ŽS#t$rt|j|j¦«‚t$rt |j|j¦«‚t $rJtj  |j ›d|j›�¦«st |j|j¦«‚‚wxYw)Nr¦) r r rßÚ_namer!rrr–rsrKrv)rwÚargsÚkwargsÚfuns €rDÚwrapperz wrap_exceptions..wrapper%sÐø€ð Ø�3�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð -øÝð 5ð 5ð 5ݘtœx¨¬Ñ4Ô4Ð 4Ý!ð 6ð 6ð 6Ý ¤¨$¬*Ñ5Ô5Ð 5Ý ð ð ð Ý”7—>’>¨TÔ->Ð->Ð->ÀÄÀÐ"IÑJÔJð :Ý# D¤H¨d¬jÑ9Ô9Ð9ð ð  øøøs ƒ �BB))Ú functoolsÚwraps)r„r…s` rDÚwrap_exceptionsrˆ!s:ø€õ„_�SÑÔð ð ð ð ñÔð ð €NrCcó´—eZdZdZgd¢Zd„Zd„Zeed„¦«¦«Z eed„¦«¦«Z eed„¦«¦«Z d„Z d „Z ed „¦«Zd „Zed „¦«Zed „¦«Zed„¦«Zej dej¦«z¦«r ed„¦«Zed„¦«Zed„¦«Zed5d„¦«Zed„¦«Zed„¦«Zer:eejd¦«ejd¦«ejd¦«fd„¦«Z neZ er ed„¦«Z!ed„¦«Z"eejd¦«fd„¦«Z#eejd¦«fd „¦«Z$ed!„¦«Z%ed"„¦«Z&ed#„¦«Z'e(r)ed$„¦«Z)ejd%¦«fd&„Z*ed'„¦«Z+e,red(„¦«Z-ed)„¦«Z.e/� ed5d*„¦«Z0ed+„¦«Z1ed,„¦«Z2ed6d.„¦«Z3ed/„¦«Z4ed0„¦«Z5eejd1¦«fd2„¦«Z6eejd3¦«fd4„¦«Z7dS)7ÚProcesszLinux process implementation.)rßr�Ú_ppidrvÚ_cachecóV—||_d|_d|_t¦«|_dSrƒ)rßr�r‹rrv)rwrßs rDrxzProcess.__init__;s+€ØˆŒØˆŒ ؈Œ Ý+Ñ-Ô-ˆÔÐÐrCcóL—tj|j›d|j›�¦«dS)z+Raise NSP if the process disappeared on us.r¦N)r–rþrvrß©rws rDÚ _assert_alivezProcess._assert_aliveAs,€õ Œ˜4Ô,Ð,Ð,¨d¬h¨hÐ7Ñ8Ô8Ð8Ð8Ð8rCcó.—t|j›d|j›d�¦«5}| ¦«}ddd¦«n #1swxYwY| d¦«}|| d¦«dz|…}||dzd… ¦«}i}||d<|d |d <|d|d <|d |d <|d|d<|d|d<|d|d<|d|d<|d|d<|d|d<|d|d<|S)aZParse /proc/{pid}/stat file and return a dict with various process info. Using "man proc" as a reference: where "man proc" refers to position N always substract 3 (e.g ppid position 4 in 'man proc' == position 1 in here). The return value is cached in case oneshot() ctx manager is in use. r¦rxNryó(rr<rªrrªr}r$Úttynré Úutimeé Ústimeé Úchildren_utimerðÚchildren_stimeéÚ create_timeé$Úcpu_numé'Ú blkio_ticks)rrvrßrÄrÄÚfindr˜)rwr¾rzr{rªrÀrãs rDÚ_parse_stat_filezProcess._parse_stat_fileGsn€õ¨Ô):Ð):Ð):¸D¼H¸H¸HÐEÑ FÔ Fð È!Ø—6’6‘8”8ˆDð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �zŠz˜$ÑÔˆØ�D—I’I˜d‘O”O aÑ'¨Ð,Ô-ˆØ�d˜Q‘h�i�i”×&Ò&Ñ(Ô(ˆàˆØˆˆF‰ ؘqœ ˆˆH‰ ؘQ”iˆˆF‰ ؘa”yˆˆG‰ ؘb”zˆˆG‰ ؘb”zˆˆG‰ Ø & r¤ ˆÐ ÑØ & r¤ ˆÐ ÑØ# BœZˆˆMÑØ œˆˆI‰Ø# BœZˆˆMÑàˆ ó AÁAÁAcóœ—t|j›d|j›d�¦«5}| ¦«cddd¦«S#1swxYwYdS)z�Read /proc/{pid}/stat file and return its content. The return value is cached in case oneshot() ctx manager is in use. r¦rON)rrvrßrÄ©rwr¾s rDÚ_read_status_filezProcess._read_status_filejs’€õ¨4Ô+<Ð+<Ð+<¸d¼h¸h¸hÐGÑ HÔ Hð ÈAØ—6’6‘8”8ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s AÁAÁAcóΗt|j›d|j›d�t¬¦«5}| ¦« ¦«cddd¦«S#1swxYwYdS)Nr¦z/smapsrš)rrvrßrŸrÄrÅr¥s rDÚ_read_smaps_filezProcess._read_smaps_filets©€õ¨$Ô*;Ð*;Ð*;¸T¼X¸X¸XÐFÝ#4ð6ñ6ô6ð $Ø9:Ø—6’6‘8”8—>’>Ñ#Ô#ð $ð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s§&AÁAÁ!Acó¢—|j |¦«|j |¦«|j |¦«dSrƒ)r¢Úcache_activater¦r¨r�s rDÚ oneshot_enterzProcess.oneshot_enter{sM€Ø Ô×,Ò,¨TÑ2Ô2Ð2Ø Ô×-Ò-¨dÑ3Ô3Ð3Ø Ô×,Ò,¨TÑ2Ô2Ð2Ð2Ð2rCcó¢—|j |¦«|j |¦«|j |¦«dSrƒ)r¢Úcache_deactivater¦r¨r�s rDÚ oneshot_exitzProcess.oneshot_exit€sM€Ø Ô×.Ò.¨tÑ4Ô4Ð4Ø Ô×/Ò/°Ñ5Ô5Ð5Ø Ô×.Ò.¨tÑ4Ô4Ð4Ð4Ð4rCcóf—| ¦«d}trt|¦«}|S)Nrª)r¢r"r )rwrªs rDrªz Process.name…s0€à×$Ò$Ñ&Ô& vÔ.ˆÝ ð ݘ$‘<”<ˆDàˆ rCcó°— t|j›d|j›d�¦«S#ttf$r€t j |j›d|j›�¦«rYdSt|j¦«st|j|j ¦«‚t|j|j |j ¦«‚t$rt|j|j ¦«‚wxYw)Nr¦z/exer®)r—rvrßrr!r–rsÚlexistsrtrr�rr‹r r r�s rDÚexez Process.exe�sä€ð 5ݨ4Ô+<Ð+<Ð+<¸d¼h¸h¸hÐGÑHÔHÐ HøÝ!Õ#5Ð6ð Jð Jð JõŒw�Ѝ$Ô*;Ð*;Ð*;¸T¼X¸XÐFÑGÔGð JØ�r�rå! $¤(Ñ+Ô+ðJÝ'¨¬°$´*Ñ=Ô=Ð=å'¨¬°$´*¸d¼jÑIÔIÐIÝð 5ð 5ð 5ݘtœx¨¬Ñ4Ô4Ð 4ð 5øøøs‚!¡?CÁ#A2Ccó¢—t|j›d|j›d�¦«5}| ¦«}ddd¦«n #1swxYwY|sgS| d¦«rdnd}| |¦«r |dd…}| |¦«}|dkr,t |¦«dkrd|vr| d¦«}|S)Nr¦z/cmdliner’r‡r8r)rrvrßrÄr™r˜r»)rwr¾rzÚsepÚcmdlines rDrµzProcess.cmdlinežs€å ¨$Ô*;Ð*;Ð*;¸T¼X¸X¸XÐFÑ GÔ Gð È1Ø—6’6‘8”8ˆDð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àð àˆI🠚  fÑ-Ô-Ð6ˆfˆf°3ˆØ �=Š=˜Ñ Ô ð Ø˜˜˜”9ˆDØ—*’*˜S‘/”/ˆð �&Š=ˆ=�S ™\œ\¨QÒ.Ð.°3¸$°;°;Ø—j’j ‘o”oˆG؈r£có¶—t|j›d|j›d�¦«5}| ¦«}ddd¦«n #1swxYwYt |¦«S)Nr¦z/environ)rrvrßrÄr)rwr¾rzs rDÚenvironzProcess.environ·s‘€å ¨$Ô*;Ð*;Ð*;¸T¼X¸X¸XÐFÑ GÔ Gð È1Ø—6’6‘8”8ˆDð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å" 4Ñ(Ô(Ð(r£cóª—t| ¦«d¦«}tj¦«} ||S#t$rYdSwxYw)Nr“)rór¢rÚget_terminal_maprò)rwÚtty_nrrus rDÚterminalzProcess.terminal½s_€å�T×*Ò*Ñ,Ô,¨WÔ5Ñ6Ô6ˆÝÔ(Ñ*Ô*ˆð ؘ”<Ð øÝð ð ð Ø�4�4ð øøøs¼AÁ AÁAz /proc/%s/ioc ó —|j›d|j›d�}i}t|¦«5}|D]T}| ¦«}|r< | d¦«\}}t |¦«||<ŒD#t $rYŒPwxYwŒU ddd¦«n #1swxYwY|std|z¦«‚ t|d|d|d|d|d |d ¦«S#t$r"}t |d ›d |›d |›�¦«‚d}~wwxYw)Nr¦z/ios: z%s file was emptyssyscrssyscws read_bytess write_bytessrcharswcharrz field was not found in z; found fields are ) rvrßrrÅr˜rór*r¡rˆrò)rwrÉrÀr¾rûrªr@rs rDÚ io_counterszProcess.io_countersÈs¹€à"&Ô"3Ð"3Ð"3°T´X°X°XÐ>ˆE؈FݘUÑ#Ô#ð 6 qØð 6ð 6�DàŸ:š:™<œ<�DØð6ð6Ø*.¯*ª*°UÑ*;Ô*;™K˜D %õ ,/¨u©:¬:˜F 4™L˜Løõ *ð%ð%ð%à$˜Hð%øøøð6ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ðð @Ý"Ð#6¸Ñ#>Ñ?Ô?Ð?ð EÝØ˜8Ô$ؘ8Ô$ؘ=Ô)ؘ>Ô*ؘ8Ô$ؘ8Ô$ñ ôðøõð Eð Eð EÝ Ø-0°¬V¨V¨V°U°U°U¸F¸Fð"DñEôEðEøøøøð EøøøsM¤B ÁA+ÁB Á+ A8Á5B Á7A8Á8B  B ÂB Â)7C!Ã! D Ã+DÄD cór—| ¦«}t|d¦«tz }t|d¦«tz }t|d¦«tz }t|d¦«tz }t|d¦«tz }t|||||¦«S)Nr•r—r™ršr )r¢rrr‹)rwr¿r•r—r™ršr�s rDr zProcess.cpu_timesçsœ€à×&Ò&Ñ(Ô(ˆÝ�f˜W”oÑ&Ô&­Ñ4ˆÝ�f˜W”oÑ&Ô&­Ñ4ˆÝ˜vÐ&6Ô7Ñ8Ô8½;ÑFˆÝ˜vÐ&6Ô7Ñ8Ô8½;ÑFˆÝ�v˜mÔ,Ñ-Ô-µ Ñ;ˆÝ˜  ~°~ÀvÑNÔNÐNrCcóP—t| ¦«d¦«S)zWhat CPU the process is on.rž©rór¢r�s rDržzProcess.cpu_numñs#€õ�4×(Ò(Ñ*Ô*¨9Ô5Ñ6Ô6Ð6rCNcóB—tj|j||j¦«Srƒ)rÚwait_pidrßr�)rwÚtimeouts rDÚwaitz Process.waitös€åÔ  ¤¨7°D´JÑ?Ô?Ð?rCcó”—t| ¦«d¦«}tp t¦«}|tz |zS)Nrœ)rr¢rorpr)rwÚctimeÚbts rDrœzProcess.create_timeús@€å�d×+Ò+Ñ-Ô-¨mÔ<Ñ=Ô=ˆõ Ð %�)™+œ+ˆØ� Ñ# rÑ)Ð)rCc ó—t|j›d|j›d�¦«5}d„| ¦« ¦«dd…D¦«\}}}}}}}ddd¦«n #1swxYwYt |||||||¦«S)Nr¦z/statmcó<—g|]}t|¦«tz‘ŒSrB)rórôrês rDrìz'Process.memory_info..s#€ÐEÐEÐE q•�Q‘”�(Ñ"ÐEÐEÐErCr­)rrvrßrºr˜rx) rwr¾Úvmsr~rfÚtextÚlibrzÚdirtys rDÚ memory_infozProcess.memory_infoså€õ¨$Ô*;Ð*;Ð*;¸T¼X¸X¸XÐFÑ GÔ Gð FÈ1àEÐE¨A¯JªJ©L¬L×,>Ò,>Ñ,@Ô,@ÀÀ!ÀÔ,DÐEÑEÔEñ 5ˆC��f˜d C¨¨uð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fõ�C˜˜f d¨C°°uÑ=Ô=Ð=s AA-Á-A1Á4A1s\nPrivate.*:\s+(\d+)s\nPss\:\s+(\d+)s\nSwap\:\s+(\d+)cóÀ—| ¦«}| ¦«}ttt| |¦«¦«¦«dz}ttt| |¦«¦«¦«dz}ttt| |¦«¦«¦«dz}t ||||fzŽS)Nr)rÎr¨r8rÅróÚfindallry) rwÚ _private_reÚ_pss_reÚ_swap_reÚ basic_memÚ smaps_datarzr{r|s rDÚmemory_full_infozProcess.memory_full_infos½€ð×(Ò(Ñ*Ô*ˆIð×.Ò.Ñ0Ô0ˆJõ•c�#˜{×2Ò2°:Ñ>Ô>Ñ?Ô?Ñ@Ô@À4ÑGˆCÝ•c�#˜wŸš¨zÑ:Ô:Ñ;Ô;Ñ<Ô<¸tÑCˆCÝ•s�3 × 0Ò 0°Ñ <Ô <Ñ=Ô=Ñ>Ô>ÀÑEˆDݘY¨#¨s°DÐ)9Ñ9Ð:Ð :rCcó—d„}| ¦«}|sgS| d¦«}g}| d¦«}|g}|||¦«D�]¥\}}| dd¦«} |\} } } } } }n#t$r|dgz\} } } } } }YnwxYw|sd}nXtrt |¦«}| ¦«}| d¦«rt|¦«s |dd …}|  t | ¦«t | ¦«||  d d¦«|  d d¦«|  d d¦«|  d d¦«|  dd¦«|  dd¦«|  dd¦«|  dd¦«|  dd¦«|  dd¦«f ¦«�Œ§|S)aPReturn process's mapped memory regions as a list of named tuples. Fields are explained in 'man proc'; here is an updated (Apr 2012) version: http://goo.gl/fmebo /proc/{PID}/smaps does not exist on kernels < 2.6.14 or if CONFIG_MMU kernel configuration option is not enabled. c3óÄK—i}|D]À}| dd¦«}|d d¦«s.| ¦«|fV—| |¦«Œa t |d¦«dz||d<Œ„#t $r0|d d¦«rYŒ«t d|z¦«‚wxYw| ¦«|fV—dS)Nérr]rrsVmFlags:z#don't know how to interpret line %r)r˜r™Úpopr¼rór*rè)rÆÚ current_blockrzrûrÀs rDÚ get_blocksz'Process.memory_maps..get_blocksEs*èè€Ø�Ø!ðIðI�DØ!ŸZšZ¨¨aÑ0Ô0�FØ! !œ9×-Ò-¨dÑ3Ô3ð Ià,×0Ò0Ñ2Ô2°DÐ9Ð9Ð9Ð9Ø%×,Ò,¨TÑ2Ô2Ð2Ð2ðIÝ.1°&¸´)©n¬n¸tÑ.C˜D ¨¤™O˜OøÝ)ðIðIðIØ% aœy×3Ò3°KÑ@Ô@ðIà ( å&0ð2AØCGñ2Hñ'Iô'Ið!Ið Iøøøð%×(Ò(Ñ*Ô*¨DÐ1Ð1Ð1Ð1Ð1Ð1sÁ)!B  %CÂ2Có rNrÙr®z[anon]r“r”sRss:sSize:sPss:s Shared_Clean:s Shared_Dirty:sPrivate_Clean:sPrivate_Dirty:s Referenced:s Anonymous:sSwap:) r¨r˜rÚr*r"r rÅr™rr¼rñ)rwrÜrzrÆr9Ú first_linerÛÚheaderÚhfieldsr“ÚpermsÚoffsetÚdevr€rss rDÚ memory_mapszProcess.memory_maps<s+€ð 2ð 2ð 2ð(×(Ò(Ñ*Ô*ˆDàð Ø� Ø—J’J˜uÑ%Ô%ˆE؈BØŸš 1™œˆJØ'˜LˆMØ *  ¨5°-Ñ @Ô @ð ñ ‘ �˜Ø Ÿ,š, t¨QÑ/Ô/�ð'ØÁ>BÂBcó— t|j›d|j›d�¦«S#ttf$rOt |j¦«st |j|j¦«‚t|j|j|j ¦«‚wxYw)Nr¦z/cwd) r—rvrßrr!rtrr�rr‹r�s rDÚcwdz Process.cwd€sŽ€ð Fݨ4Ô+<Ð+<Ð+<¸d¼h¸h¸hÐGÑHÔHÐ HøÝ!Õ#5Ð6ð Fð Fð Få˜dœhÑ'Ô'ð FÝ# D¤H¨d¬jÑ9Ô9Ð9å# D¤H¨d¬j¸$¼*ÑEÔEÐEð  Føøøs ‚!¡A Bsctxt_switches:\t(\d+)có—| ¦«}| |¦«}|s td|j›d|j›d�¦«‚t jt|d¦«t|d¦«¦«S)NzR'voluntary_ctxt_switches' and 'nonvoluntary_ctxt_switches'lines were not found in r¦z1/status; the kernel is probably older than 2.6.23rr)r¦rÐrTrvrßrÚpctxswró)rwÚ _ctxsw_rerzÚctxsws rDÚnum_ctx_switcheszProcess.num_ctx_switches‹s‰€ð×%Ò%Ñ'Ô'ˆØ×!Ò! $Ñ'Ô'ˆØð @Ý%Ð%ðÔ%Ð%Ð% t¤x x xð1ñ2ô2ð 2õ ”>¥# e¨A¤h¡-¤-µ°U¸1´X±´Ñ?Ô?Ð ?rCsThreads:\t(\d+)cóz—| ¦«}t| |¦«d¦«S©Nr)r¦rórÐ)rwÚ_num_threads_rerzs rDÚ num_threadszProcess.num_threads™s6€ð ×%Ò%Ñ'Ô'ˆÝ�?×*Ò*¨4Ñ0Ô0°Ô3Ñ4Ô4Ð4rCcóò—tj|j›d|j›d�¦«}| ¦«g}d}|D�] }|j›d|j›d|›d�} t |¦«5}| ¦« ¦«}ddd¦«n #1swxYwYn#t$rd}YŒuwxYw||  d¦«dzd…}|  d ¦«}t|d ¦«tz } t|d ¦«tz } tjt|¦«| | ¦«} | | ¦«�Œ"|r| ¦«|S) Nr¦z/taskFz/task/rxTryr<rr”r–)r–r}rvrßÚsortrrÄrÅrr¡r˜rrrÚpthreadrór¼r�) rwÚ thread_idsrÚ hit_enoentÚ thread_idrÉr¾Ústr¿r•r—rs rDÚthreadszProcess.threads¡s¼€å”Z°Ô0AÐ0AÐ0AÀ4Ä8À8À8Ð LÑMÔMˆ Ø�ŠÑÔÐØˆØˆ Ø#ð #ñ #ˆIàÔ!Ð!Ð! 4¤8 8 8¨Y¨Y¨Yð8ˆEð Ý  Ñ'Ô'ð*¨1ØŸš™œŸšÑ)Ô)�Bð*ð*ð*ñ*ô*ð*ð*ð*ð*ð*ð*øøøð*ð*ð*ð*øøå$ð ð ð ð"� Ø�ð  øøøð �B—G’G˜D‘M”M AÑ%Ð&Ð&Ô'ˆBØ—X’X˜d‘^”^ˆFݘ& œ*Ñ%Ô%­ Ñ3ˆEݘ& œ*Ñ%Ô%­ Ñ3ˆEÝ”_¥S¨¡^¤^°U¸EÑBÔBˆFØ �NŠN˜6Ñ "Ô "Ð "Ñ "Ø ð !Ø × Ò Ñ Ô Ð Øˆs6ÁB&Á''B B&ÂB ÂB&Â!B Â"B&Â& B5Â4B5có4—tj|j¦«Srƒ)rßÚ getpriorityrßr�s rDÚnice_getzProcess.nice_get½s€õÔ% d¤hÑ/Ô/Ð/rCcó6—tj|j|¦«Srƒ)rßÚ setpriorityrß)rwr@s rDÚnice_setzProcess.nice_setÆs€åÔ% d¤h°Ñ6Ô6Ð6rCcó4—tj|j¦«Srƒ)rr6rßr�s rDÚcpu_affinity_getzProcess.cpu_affinity_getÍs€åÔ-¨d¬hÑ7Ô7Ð 7rCsCpus_allowed_list:\t(\d+)-(\d+)c óf—| ¦«}| |¦«}|rRttt |dd¦«t |dd¦«dz¦«¦«Sttt t ¦«¦«¦«¦«S)Nrr)r¦rÐr|rSrór»r%)rwÚ_rerzr.s rDÚ_get_eligible_cpuszProcess._get_eligible_cpusÑs�€ð×)Ò)Ñ+Ô+ˆDØ—K’K Ñ%Ô%ˆEØð 9Ý�E¥# e¨A¤h¨q¤kÑ"2Ô"2µC¸¸a¼À¼ Ñ4DÔ4DÀqÑ4HÑIÔIÑJÔJÐJå�E¥#¥m¡o¤oÑ"6Ô"6Ñ7Ô7Ñ8Ô8Ð8rCc óÄ— tj|j|¦«dS#ttf$r°}t |t¦«s|jt jkr€| ¦«}tttt¦«¦«¦«¦«}|D]4}||vrt d|›d|›�¦«‚||vrt d|›d|›�¦«‚Œ5‚d}~wwxYw)Nzinvalid CPU number z; choose between z CPU number z! is not eligible; choose between ) rÚproc_cpu_affinity_setrßrÇr*r•rår~rÚtuplerSr»r%)rwr#rÚ eligible_cpusÚall_cpusÚcpus rDÚcpu_affinity_setzProcess.cpu_affinity_setÛs€ð ÝÔ*¨4¬8°TÑ:Ô:Ð:Ð:Ð:øÝ�ZÐ(ð ð ð ݘc¥:Ñ.Ô.ð E°#´)½u¼|Ò2KÐ2KØ$(×$;Ò$;Ñ$=Ô$=�MÝ$¥U­3­}©¬Ñ+?Ô+?Ñ%@Ô%@ÑAÔA�HØ#ðEðE˜Ø hÐ.Ð.Ý", *à$' C C¨¨ð!8ñ#9ô#9ð9ð mÐ3Ð3Ý", *à03°°°]°]ð!Dñ#Eô#EðEð4ðøøøøð øøøs‚žC¯B+CÃCcó�—tj|j¦«\}}t�t |¦«}t j||¦«Srƒ)rr5rßÚenumr>rÚpionice©rwÚioclassr@s rDÚ ionice_getzProcess.ionice_getñs=€å!Ô1°$´(Ñ;Ô;‰NˆG�UÝÐÝ$ WÑ-Ô-�Ý”? 7¨EÑ2Ô2Ð 2rCcó¾—|€d}|r"|ttfvrtd|z¦«‚|dks|dkrtd¦«‚tj|j||¦«S)Nrz%r ioclass accepts no valuer­zvalue not in 0-7 range)r)r&r*rÚproc_ioprio_setrßr s rDÚ ionice_setzProcess.ionice_setøsq€àˆ}Ø�Øð J˜Õ%6Õ8IÐ$JÐJÐJÝ Ð!>ÀÑ!HÑIÔIÐIØ�qŠyˆy˜E AšI˜IÝ Ð!9Ñ:Ô:Ð:ÝÔ'¨¬°'¸5ÑAÔAÐ ArCcó²—|jdkrtd¦«‚ |€t|j|¦«St|¦«dkrtdt |¦«z¦«‚t|j||¦«dS#t $rO}|jt jkr4t|j¦«r t|j|j |j ¦«‚‚d}~wwxYw)Nrz)can't use prlimit() against PID 0 processr<z4second argument must be a (soft, hard) tuple, got %s) rßr*rÏr»rµrÇråÚENOSYSrtrr�r‹)rwràrárs rDÚrlimitzProcess.rlimitsè€ð Œx˜1Š}ˆ}Ý Ð!LÑMÔMÐMð Ø�>å" 4¤8¨YÑ7Ô7Ð7õ˜6‘{”{ aÒ'Ð'Ý(ð%Ý'+¨F¡|¤|ñ4ñ5ô5ð5õ˜DœH i°Ñ8Ô8Ð8Ð8Ð8øÝð ð ð Ø”9¥¤ Ò,Ð,µ¸D¼HÑ1EÔ1EÐ,õ(¨¬°$´*¸d¼jÑIÔIÐIàøøøøð  øøøsœA=³AA=Á= CÂA CÃCcó¢—| ¦«d}tr| ¦«}t |d¦«S)Nrªú?)r¢r"r Ú PROC_STATUSESrñ)rwÚletters rDrªzProcess.statussC€à×&Ò&Ñ(Ô(¨Ô2ˆÝ ð %Ø—]’]‘_”_ˆFå× Ò  ¨Ñ-Ô-Ð-rCcóÔ—g}tj|j›d|j›d�¦«}d}|D�]¥}|j›d|j›d|›�} t |¦«}| d¦«�r%t |¦«�r|j›d|j›d|›�} t|¦«5}t|  ¦«  ¦«d¦«}t|  ¦«  ¦«dd¦«} ddd¦«n #1swxYwYt| ¦«} t|t|¦«t|¦«| | ¦«} |  | ¦«�ŒO#t$rd}Y�Œ^wxYw�Œd#ttf$rd}Y�Œzt $r!} | jt"jkrYd} ~ �Œž‚d} ~ wwxYw|r| ¦«|S) Nr¦rzFr{z/fdinfo/rr³T)r–r}rvrßr—rèrrrórºr˜r¤rrr¼rr!rÇrår~r�) rwrrrôrtr¤rsr¾Úposrwrvrrs rDÚ open_fileszProcess.open_files&sj€àˆÝ” ¨Ô):Ð):Ð):¸D¼H¸H¸HÐEÑFÔFˆØˆ Øð" /ñ" /ˆBØ$(Ô$5Ð$5Ð$5°t´x°x°xÀÀÐDˆDð /Ý ‘~”~�ð—?’? 3Ñ'Ô'ñ/­M¸$Ñ,?Ô,?ñ/ðÔ)Ð)Ð)¨4¬8¨8¨8°R°Rð9�Dð /Ý(¨Ñ.Ô.ðD°!Ý"% a§j¢j¡l¤l×&8Ò&8Ñ&:Ô&:¸1Ô&=Ñ">Ô">˜CÝ$'¨¯ ª © ¬ ×(:Ò(:Ñ(<Ô(<¸QÔ(?ÀÑ$CÔ$C˜EðDðDðDñDôDðDðDðDðDðDðDøøøðDðDðDðDõ 2°%Ñ8Ô8˜Ý!*Ø ¥# b¡'¤'­3¨s©8¬8°T¸5ñ"Bô"B˜àŸš vÑ.Ô.Ð.Ñ.øõ-ð*ð*ð*ð&*˜ ˜ ™ ð*øøøùøõ-&Õ'9Ð:ð ð ð à!� Ø‘Ýð ð ð Ø”9¥¤ Ò,Ð,à�H�H�H‘HØøøøøð  øøøð6 ð !Ø × Ò Ñ Ô Ð Øˆs[ÁF E:ÂA4DÄ E:ÄD Ä E:Ä#D Ä$E:Å: F Æ F ÆGÆ% GÆ.G Ç G Ç Grlcón—t ||j¦«}| ¦«|Srƒ)rÀr¼rßr�)rwr¸rãs rDÚ connectionszProcess.connectionsRs0€å×#Ò# D¨$¬(Ñ3Ô3ˆØ ×ÒÑÔÐØˆ rCcód—ttj|j›d|j›d�¦«¦«S)Nr¦rz)r»r–r}rvrßr�s rDÚnum_fdszProcess.num_fdsXs.€å•2”:¨DÔ,=Ð,=Ð,=¸t¼x¸x¸xÐHÑIÔIÑJÔJÐJrCcóP—t| ¦«d¦«S)Nr}rÀr�s rDr}z Process.ppid\s!€å�4×(Ò(Ñ*Ô*¨6Ô2Ñ3Ô3Ð3rCsUid:\t(\d+)\t(\d+)\t(\d+)cóâ—| ¦«}| |¦«d\}}}tjt |¦«t |¦«t |¦«¦«Srí)r¦rÐrÚpuidsró)rwÚ_uids_rerzÚrealÚ effectiveÚsaveds rDÚuidsz Process.uids`óX€à×%Ò%Ñ'Ô'ˆØ!)×!1Ò!1°$Ñ!7Ô!7¸Ô!:шˆi˜ÝŒ}�S ™YœY­¨I©¬½¸E¹ ¼ ÑCÔCÐCrCsGid:\t(\d+)\t(\d+)\t(\d+)cóâ—| ¦«}| |¦«d\}}}tjt |¦«t |¦«t |¦«¦«Srí)r¦rÐrÚpgidsró)rwÚ_gids_rerzr%r&r's rDÚgidsz Process.gidsfr)rCrƒ©rl)8r?r@rAr½Ú __slots__rxr�rˆrr¢r¦r¨r«r®rªr²rµr·r»r–rsrKÚgetpidr½r ržrÄrœrÎÚ HAS_SMAPSr,r-rÖrärærërïr÷rúrýÚHAS_CPU_AFFINITYrÿrr ÚHAS_PROC_IO_PRIORITYrrrÏrrªrrr r}r(r-rBrCrDrŠrŠ6sJ€€€€€Ø'Ð'àCÐCÐC€Ið.ð.ð.ð 9ð9ð9ð ØððñÔñ„_ððBØððñÔñ„_ððØð$ð$ñÔñ„_ð$ð 3ð3ð3ð 5ð5ð5ð ððñ„_ðð5ð5ð5ð"ððñ„_ðð0ð)ð)ñ„_ð)ð ððñ„_ðð „w‡~‚~�m i b¤i¡k¤kÑ1Ñ2Ô2ðEØ ð Eð Eñ Œð Eð<ðOðOñ„_ðOðð7ð7ñ„_ð7ðð@ð@ð@ñ„_ð@ðð*ð*ñ„_ð*ðð>ð>ñ„_ð>ð&ð'à ð'˜BœJÐ'?Ñ@Ô@Ø"˜œ Ð#6Ñ7Ô7Ø#˜œÐ$8Ñ9Ô9ð  ;ð ;ð ;ñ Œð ;ð ;ð8'ÐàðDà ðA ðA ñ ŒðA ðFðFðFñ„_ðFðà#- 2¤:Ð.GÑ#HÔ#Hð @ð @ð @ñ„_ð @ðØ*4¨"¬*Ð5HÑ*IÔ*Ið5ð5ð5ñ„_ð5ðððñ„_ðð6ð0ð0ñ„_ð0ðð7ð7ñ„_ð7ðð!à ð 8ð 8ñ Œð 8ð%˜"œ*Ð%HÑIÔIð 9ð 9ð 9ð 9ð ð ð ñ Œð ð&ðBà ð 3ð 3ñ Œð 3ð ð Bð Bñ Œð BðÐà ð ð ð ñ Œð ð2ð.ð.ñ„_ð.ðð)ð)ñ„_ð)ðVðððñ„_ðð ðKðKñ„_ðKðð4ð4ñ„_ð4ðØ&˜BœJÐ'DÑEÔEðDðDðDñ„_ðDð Ø&˜BœJÐ'DÑEÔEðDðDðDñ„_ðDðDðDrCrŠrƒr.)F)¤r½Ú __future__rrŽr0rår†r6r–r,ror�ÚsysÚ tracebackrrrr®rrr rr rßr r r rrrrrrrrrrrrrrrÚ_compatrrrr r!r"Ú version_infor Ú__extra__all__rUrsrKr0r1Úhasattrr3r2rTrÈr)rÚ getpagesizerôrorŸÚ byteorderrŒrÚ AF_PACKETr;ÚIntEnumrór:r&r'r(r)r>Úglobalsr…Ú __members__ÚSTATUS_RUNNINGÚSTATUS_SLEEPINGÚSTATUS_DISK_SLEEPÚSTATUS_STOPPEDÚSTATUS_TRACING_STOPÚ STATUS_ZOMBIEÚ STATUS_DEADÚSTATUS_WAKE_KILLÚ STATUS_WAKINGÚ STATUS_IDLEÚ STATUS_PARKEDrr*r+r,r-r.r/r0r1r2r3r4r¢r\rhrrrxrryr}rr†rˆr‹r—r¤r¬rÂrÌÚ ExceptionÚ print_excr¹rÏÚresourceÚ ImportErrorrÖÚCDLLrÛr1Údirrþr rr r%r1rArHr[Ú net_if_addrsr`rbrÀrÁrÙrëÚ disk_usagerrrArErbrerpr„rtr~rˆrŠrBrCrDúrTsc ðð %Ð$àÐÐÐÐÐà € € € ØÐÐÐØ € € € ØÐÐÐØ € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ€€€Ø#Ð#Ð#Ð#Ð#Ð#Ø"Ð"Ð"Ð"Ð"Ð"àÐÐÐÐÐØÐÐÐÐÐØ#Ð#Ð#Ð#Ð#Ð#Ø)Ð)Ð)Ð)Ð)Ð)Ø!Ð!Ð!Ð!Ð!Ð!ØÐÐÐÐÐØÐÐÐÐÐØ$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØ+Ð+Ð+Ð+Ð+Ð+Ø$Ð$Ð$Ð$Ð$Ð$Ø$Ð$Ð$Ð$Ð$Ð$Ø'Ð'Ð'Ð'Ð'Ð'Ø"Ð"Ð"Ð"Ð"Ð"Ø Ð Ð Ð Ð Ð ØÐÐÐÐÐØ(Ð(Ð(Ð(Ð(Ð(Ø'Ð'Ð'Ð'Ð'Ð'Ø"Ð"Ð"Ð"Ð"Ð"Ø"Ð"Ð"Ð"Ð"Ð"Ø"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØÐÐÐÐÐØ&Ð&Ð&Ð&Ð&Ð&Ø$Ð$Ð$Ð$Ð$Ð$Ø'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐàÔ�vÒÐØ€K€K€K€Kà €Dð 6ð 6ð 6€ð".ÐØ ŒG�NŠNÐ+¨i¨b¬i©k¬kÑ9Ñ :Ô :€ Ø�w˜tÐ%6Ñ7Ô7ÐØ�7˜4Ð!8Ñ9Ô9ÐØ ˆ6‰8Œ8€ðˆbŒj˜Ñ&Ô&€ Ø !ˆ:Ô !Ñ #Ô #€Ø € ðÐ'�B�B 4ÐØ”  Ò)€ ðÐà€<ØÔ€G€Gà �D”L Ø"+¨S¨S°Ô1AÑ-BÔ-BÐ!CñEôE€MàÔ#€Gð€<ØÐØ€OØ€OØÐÐððððð�T”\ñôðð  €G�I„I×Ò�ZÔ+Ñ,Ô,Ð,ð Ô Ø Ô Ø Ô "Ø Ô Ø Ô $Ø Ô Ø Ô Ø Ô Ø Ô !Ø Ô Ø Ô Ø Ô ð ð € ð" Ô "Ø Ô Ø Ô Ø Ô Ø Ô Ø Ô Ø Ô Ø Ô !Ø Ô Ø Ô Ø Ô ð ð € ð* ˆ Ø ðKðKðKñ Lô L€ð ˆ*Ø ðððñ ô €ð ˆJØÐ<Ð<Ð<ñ >ô >€ ð€z�&Ð>Ñ?Ô?€à ˆ:�j $¤,Ð1GÑ"GÑ HÔ H€à� ØðJðJðJñKôK€ ð ˆJØ� §¢¨-Ô*?Ñ!@Ô!@Ñ@ñ Bô B€ ð€j�ð6ð6ð6ñ7ô7€ð ˆJ�{ð"ð"ð"ñ #ô #€ ðððð( ð ð ð$ð$ð$ð& ð0ð0ñ „ð0ð0!¨ð ð ð ð ð KØÐ˜Ñ!Ô!Ð!Ð!øØðKðKðKà€IÔÑÔÐØ;� � ˜;Ð(:Ñ;Ô;¸CÀÀcÑJÔJ€I€I€IðKøøøð €ð8Ø Ð Ð Ð Ð Ð Ð øØð8ð8ð8Ø€M€M€Mà ˆ6Œ;�t tÐ ,Ñ ,Ô ,€Dà€wˆt�YÑÔð8ð 8ð 8ð 8ð 8øøð8øøøð< ÐØ×ÒØFÐF�C�C˜‘I”IÐFÑFÔFñHôHðHð1ð1ð1ðhwBðwBðwBðt2@ð2@ð2@ðt ð ð ð ððð(ððð:'ð'ð'ðT=ð=ð=ð*„7‡>‚>Ð;Ñ<Ô<ð3Ø Œ�ŠÐ=Ñ>Ô>ð3ððððð@„W‡^‚^�OÑ$Ô$ðð ð ð ð ððððÔ&€ ð ð ð ð ð ˜Iñ ô ð ðgðgðgðgðgñgôgðgðTˆ{‰}Œ}€ ð'ð'ð'ð'ð "ð"ð"ðJððð4Ô € ð\ð\ð\ð\ð~#ð#ð#ð#ðVnðnðnðbððð@V>ðV>ðV>ð|ððð$ 3ð 3ð 3ð&MðMðMð !ð!ð!ð@ððð,ððð*tDðtDðtDðtDðtDˆfñtDôtDðtDðtDðtDs$Ì= M Í +M7Í6M7Í=NÎ+N2Î1N2