JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr 0itdZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlmZ ddl mZ gdZ)dZ*d Z+d!ejXvZ-ej\d"d#d$iZ/e/j`Z0e jbe jde jfe jhe jje jle jne jpe jre jte jve jxe jze j|e j~e je je je je je je je je*e je ji ZJGd%d&ej\ZKeLjeKjGd'd(ej\ZOeLjeOjePdid)dd*dd+d,d-d.d/d0d1d2d3dd4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQZQe dRgdSZRe dTgdUZSe dVgdWZTe dXeTjdYzZVe dZd[d\gZWe d]d^d_jeWjzZYe d`gdaZZejdbcddZ\edeZ]dfZ^dgZ_e jZ`dhZadiZbdjZcdkZddlZedmZfdnZgdoZhdpaiejZkdqZldrZmddsZndtZoduZpdvZqdwZrdasdxZtdyZudzZvd{ZwGd|d}Zxe jZye jZze jZ{d~Z|ddZ}dZ~dZGddZy#e!$rWZ"e#e"jIjKdr,ejLddkrdZ'e'dz Z'e'dz Z'e(e'e"dZ"["wwxYw)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_windowszdll load failedz3this Windows version is too old (< Windows Vista); z:psutil 3.4.2 is the latest version which supports Windows z2000, XP and 2003 server)win_service_iterwin_service_getrrrrrrIOPRIO_VERYLOW IOPRIO_LOW IOPRIO_NORMAL IOPRIO_HIGHCONN_DELETE_TCBAF_LINK DELETE_TCBi+__pypy__ AddressFamilyr!c$eZdZeZeZeZeZeZeZy)PriorityN) __name__ __module__ __qualname__rrrrrrB/opt/hc_python/lib64/python3.12/site-packages/psutil/_pswindows.pyr'r'es&"="=--15r,r'ceZdZdZdZdZdZy) IOPriorityrrN)r(r)r*rrrrr+r,r-r/r/qsNJMKr,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 wsetpeak_paged_pool paged_poolpeak_non_paged_poolnon_paged_poolpagefile peak_pagefile mem_private scputimes)usersystemidle interruptdpcsvmem)total availablepercentusedfreepmem) rssvmsrErGrIrKrMpeak_nonpaged_pool nonpaged_poolrSrUprivatepfullmem)uss pmmap_groupedpathrf pmmap_extz addr perms  pio) read_count write_count read_bytes write_bytes other_count other_bytesi)maxsizec|jdr|Sdj|jddd}|dvrJdj|jddd}ddj|jdddz}n;|jdr|jdd}ntj|}|t |d}t jj||S) zConvert paths using native DOS format like: "\Device\HarddiskVolume1\Windows\systemew\file.txt" or "\??\C:\Windows\systemew\file.txt" into: "C:\Windows\systemew\file.txt". z\\\Nr1>\??\UNC \Device\Mupr9z\??\r0) startswithjoinsplitcextQueryDosDevicelenosrn)srawdrive driveletter remainders r-convert_dos_pathrs ||Fyyr*+H1199QWWT]2A./tyyq);<<   X &ggdmA& ))(3 #h-/"I 77<< Y //r,c*tjSN)r getpagesizer+r,r-rrs    r,ctj}|\}}}}|}|}|}||z }t||z |d} t||| ||S)z&System virtual memory as a namedtuple.rround_)r virtual_memrr_) memtotphys availphys_totsys _availsysr`availrdrcrbs r-virtual_memoryrs[    C-0*GY E E D 5=DUU]U1=G wd 33r,ctj}|d}|d}||z }|dkDr&tj}td|z|z}nd}d}||z }t |d}t j ||||ddS)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr0g{Gz?r)rr swap_percentintroundrsswap)r total_phys total_systemr` percentswaprcrdrbs r- swap_memoryrs    CQJq6L : %E  qy'') 4+%-.  4z#_getloadavg_impl..Ts6IDtQIs)r getloadavgtuple) raw_loadss r-_getloadavg_implrQs!I 6I6 66r,ctr tSt5tstjdadddtS#1swYtSxYw)zReturn the number of processes in the system run queue averaged over the last 1, 5, and 15 minutes respectively as a tuple. TN)_loadavg_initializedr_lockrinit_loadavg_counterr+r,r-rrWsI !! #  % % '#'       s AAc t|\}}tj|||}t}|D];}|\}}} } } } } t ||| | | | t |dk(r| nd}|j |=t|S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). r%N)pid)r rnet_connectionssetr TCP_STATUSESaddlist)kind_pidfamiliestypesrrrfdfamtypeladdrraddrstatusrnts r-rrms oOHe""459G %C370CueVS        rzt     9r,ci}tj}|jD]M\}}|\}}}}ttdrt j |}t j ||||d||<O|S)z)Get NIC stats (isup, duplex, speed, mtu). NicDuplex)r net_if_statsitemshasattrrr snicstats)rrawdictnamerisupduplexspeedmtus r-rrst C!G}} e#( feS 7K (&&v.F%%dFE3CD ' Jr,c*tjS)zsReturn network I/O statistics for every network interface installed on the system as a dict of raw tuples. )rnet_io_countersr+r,r-rrs    !!r,c*tjS)z,Return the addresses associated to each NIC.)r net_if_addrsr+r,r-rrs    r,ctj\}}}}|dk(}t|dz}t|dz}|ry|s|rtj}n|dk(rtj }tj |||S)zReturn battery information.rr>Nr%)rsensors_batteryboolrPOWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery) acline_statusflagsrbsecsleft power_plugged no_batterychargings r-rrs} /3.B.B.D+M5'8!Q&Meck"JEAIH// R--   GX} ==r,ctjtjz }t|tz dkrtS|a|S)zThe system boot time expressed in seconds since the epoch. This also includes the time spent during hybernate / suspend. r)timeruptimeabs _last_btime)rs r- boot_timers< ))+ %C 3 "  r,cg}tj}|D]2}|\}}}tj|d||d}|j |4|S)z:Return currently connected users as a list of namedtuples.N)rusersrsuserr)retlistrrrZhostnametstamprs r-rrsQGjjlG!%h ]]4x >r Nr,c#`KtjD]\}}t||yw)z*Yields a list of WindowsService instances.N)rwinservice_enumerateWindowsService)r display_names r-rrs+"779lT<00:s,.cNt|d}|jd|_|S)zBOpen a Windows service and return it as a WindowsService instance.Nr)r _query_config _display_name)rservices r-rrs)T4(G#113NCG Nr,ceZdZdZdZdZdZdZdZdZ dZ e jd Z d Zd Zd Zd ZdZdZdZdZdZy)rz(Represents an installed Windows service.c ||_||_yr)_namer)selfrrs r-__init__zWindowsService.__init__s )r,cpd|jd|jd}|jj|S)Nz(name=z, display_name=))rr __class__r()r detailss r-__str__zWindowsService.__str__s;4::.8J8J7MQO..))*7)44r,cBd|jdt|dS)N)r&idr s r-__repr__zWindowsService.__repr__s"4<<>"$r$xj22r,c`t|tstS|j|jk(Sr)rrNotImplementedrr others r-__eq__zWindowsService.__eq__s'%0! !zzU[[((r,c||k( Srr+r/s r-__ne__zWindowsService.__ne__s5=  r,c|j5tj|j\}}}}dddt S#1swYxYw)N)rbinpathusername start_type)_wrap_exceptionsrwinservice_query_configrdict)r rr5r6r7s r-rzWindowsService._query_configsV  " " $,,TZZ8 8L'8Z% %!   % $s %A  Ac|j5tj|j\}}ddddk(rd}t |S#1swYxYw)Nr)rr)r8rwinservice_query_statusrr:)r rrs r- _query_statuszWindowsService._query_statussM  " " $66tzzBKFC% !8C6s++ % $s #AAc#K dy#t$rs}|j}t|rd|d}td||||jt j t jhvrd|d}td|||d}~wwxYww)z{Ctx manager which translates bare OSError and WindowsError exceptions into NoSuchProcess and AccessDenied. Nzservice z( is not querable (not enough privileges)rrmsgz does not exist) OSErrorris_permission_errrwinerrorrERROR_INVALID_NAMEERROR_SERVICE_DOES_NOT_EXISTr)r errrr@s r-r8zWindowsService._wrap_exceptionss    ::D %th&NO#t$C@cI''11"!8#4SAsJ s%B B BA.BBBc|jS)zThe service name. This string is how a service is referenced and can be passed to win_service_get() to get a new WindowsService instance. )rr+s r-rzWindowsService.name/s zzr,c|jS)z_The service display name. The value is cached when this class is instantiated. )rr+s r-rzWindowsService.display_name6s!!!r,c(|jdS)zwThe fully qualified path to the service binary/exe file as a string, including command line arguments. r5rr+s r-r5zWindowsService.binpath<s!!#I..r,c(|jdS)z,The name of the user that owns this service.r6rJr+s r-r6zWindowsService.usernameBs!!#J//r,c(|jdS)zRA string which can either be "automatic", "manual" or "disabled". r7rJr+s r-r7zWindowsService.start_typeFs!!#L11r,c(|jdS)zzThe process PID, if any, else None. This can be passed to Process class to control the service's process. rr=r+s r-rzWindowsService.pidNs!!#E**r,c(|jdS)zService status as a string.rrNr+s r-rzWindowsService.statusTs!!#H--r,cHtj|jS)zService long description.)rwinservice_query_descrrr+s r- descriptionzWindowsService.descriptionXs**499;77r,c|j}|j|j|j|d<|j |d<|j |d<|S)zUUtility method retrieving all the information above as a dictionary. rrrR)rupdater=rrrR)r ds r-as_dictzWindowsService.as_dict^sa     ##%&IIK&  --/.++--r,N)r(r)r*__doc__r!r&r,r1r3rr= contextlibcontextmanagerr8rrr5r6r7rrrRrVr+r,r-rrso2*53)!  ,0" / 02+ .8 r,rct|tsJ|t|txs,|jtj tj hvS)z*Return True if this is a permission error.)rrAPermissionErrorrCrERROR_ACCESS_DENIEDERROR_PRIVILEGE_NOT_HELD)excs r-rBrBsN c7 #(S( # c? + s||    %%@0r,ct|tsJ|t|r t||St|tr t ||S|)z3Convert OSError into NoSuchProcess or AccessDenied.rr)rrArBrProcessLookupErrorr)r^rrs r-convert_oserrorrbsI c7 #(S( #$//#)*400 Ir,cBtjfd}|S)zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c |g|i|S#t$r(}t||j|j|d}~wwxYw)Nr`)rArbrr)r argskwargsrFfuns r-wrapperz wrap_exceptions..wrappersI Ot-d-f- - O!#488$**E3 N Os  A#;A functoolswrapsrgrhs` r-wrap_exceptionsrms)__SOO Nr,cBtjfd}|S)zWorkaround for https://github.com/giampaolo/psutil/issues/875. See: https://stackoverflow.com/questions/4457745#4457745. c@d}d}t|D]} |g|i|cSd|d}t|j|j|#t$rD}|}|jtk(r)t j |t |dzd}Yd}~d}~wwxYw)N-C6?!r0{Gz?z retried z: times, converted to AccessDenied as it's still returning r?) rangerArCERROR_PARTIAL_COPYr sleepminrrr) r rerfdelaytimes_rFr@rgs r-rhz)retry_error_partial_copy..wrappersuA 41$1&11e9UG$"e % txxdjjcBB <<#55JJu% 40E  s A B9BBBrirls` r-retry_error_partial_copyrzs) __SCC& Nr,c@eZdZdZgdZdZdZdZedZ dZ e edZ e e d Ze e d Zd Zd Ze d Ze dZdZe dZe dZe d(dZe dZe d)dZe dZe dZe dZe dZe dZe e dZe dZ e d*dZ!e dZ"e dZ#e d Z$e d!Z%e d"Z&e d#Z'e d$Z(e d%Z)e d&Z*e d'Z+y)+Processz1Wrapper class around underlying C implementation.)_cacher_ppidrc.||_d|_d|_yr)rrr~)r rs r-r!zProcess.__init__s  r,cp|jj||jj|yr) _proc_infocache_activateexer+s r- oneshot_enterzProcess.oneshot_enters& &&t, %r,cp|jj||jj|yr)rcache_deactivaterr+s r- oneshot_exitzProcess.oneshot_exits& ((. !!$'r,c~tj|j}t|ttk(sJ|S)zOReturn multiple information about this process as a raw tuple. )r proc_inforr pinfo_mapr rs r-rzProcess._proc_infos1 nnTXX&3x3y>))) r,c|jdk(ry|jdk(rytjj|j S)zbReturn process name, which on Windows is always the final part of the executable. rzSystem Idle Processr7System)rrrnbasenamerr+s r-rz Process.names; 88q=( 88q=ww ++r,cjtr! tj|j}ntj|j}|jdr t|S|S#t$rD}|j dk(r/t |dt|j|j|d}~wwxYw)Nz translated into AccessDeniedrz) PYPYrproc_exerrAerrnor rrr}r)r rrFs r-rz Process.exes  mmDHH---)C >>$ #C( (  99?SG#@AB&txx<#E  sA%% B2.?B--B2cPtjtjk\r" tj|jdStj|jdS#t $r7}t |r&tj|jdcYd}~Sd}~wwxYw)NT)use_pebF)rWINVER WINDOWS_8_1 proc_cmdlinerrArBr rFs r-cmdlinezProcess.cmdlines ;;$** * ((4@@$$TXXt< <  $S),,TXXuEE  s# A%% B%.+B B%B  B%cVtj|j}t|Sr)r proc_environrr)r rs r-environzProcess.environ#s#   dhh '"1%%r,c t|jS#t$r"t|j|jdwxYwr)ppid_maprKeyErrorrrr+s r-ppidz Process.ppid)sA @:dhh' ' @$**54 ? @s +Ac  tj|jS#t$r}t |rt d|j }|td|td|td|td|td|td|td|td |td |td f cYd}~Sd}~wwxYw) Nz*attempting memory_info() fallback (slower)rErGrIrKrMrOrQrSrUrW)rproc_memory_inforrArBr rr)r rFinfos r-_get_raw_meminfozProcess._get_raw_meminfo/s ((2 2  %BC(#456;/06*+#456<01#89:#345:./?34=12   % s!! C BC?C CC cP|j}|d}|d}t||f|zS)Nr0r<)rre)r trfrgs r- memory_infozProcess.memory_infoFs7  ! ! #ddc3Z!^$$r,c|j}tj|j}|t z}t ||fzSr)rrproc_memory_ussrrrk)r  basic_memrls r-memory_full_infozProcess.memory_full_infoPsB$$& ""488, {}cV+,,r,c#K tj|j}|D]%\}}}}t|}t |}||||f'y#t $r'}t ||j|j|d}~wwxYwwr)rproc_memory_mapsrrhexrArbr)r rawaddrpermrnrfrFs r- memory_mapszProcess.memory_mapsWs .''1C *-%dD#'-4yT4--*-  F"#txx<# E Fs'BA+B A>"A99A>>Bc@tj|jSr)r proc_killrr+s r-killz Process.killds~~dhh''r,c|tjk(r tj|jy|tj tj hvr!tj|j|yd}t|)NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows) signalSIGTERMrrr CTRL_C_EVENTCTRL_BREAK_EVENTrr ValueError)r sigr@s r- send_signalzProcess.send_signalhs_ &.. NN488 $ V((&*A*AB B GGDHHc "+ S/ !r,Nc`|tj}nt|dz}ttdtj}| ||znd} tj |j |}d} t|j s|S|r,||k\r"t||j |jt j|t|dzd}j#tj$r'}t||j |j|d}~wtj$rd}YwxYw)Ni monotonicrpr`r0rr) rINFINITErgetattrr  proc_waitrr rTimeoutAbandoned pid_existsrurv)r timeout cext_timeouttimerstop_at exit_coderFrws r-waitz Process.waitus ?==Lw~.Lk4995'.':%'G# txx>I&dhh'  57g-$W$((LL JJu  4(E '"" I $((DJJ?S H$$ I s CD-0"DD-,D-cr|jdvrytj|j\}}|d|S)Nrr7zNT AUTHORITY\SYSTEMrz)rr proc_username)r domainrZs r-r6zProcess.usernames: 88v )))$((3 D6""r,c tj|j\}}}|S#t$r>}t |r-|rt d|j tdcYd}~Sd}~wwxYw)Nz*attempting create_time() fallback (slower)r6)r proc_timesrrArBr rr)r  fast_only_user_systemcreatedrFs r-r6zProcess.create_timesf &*oodhh&? #E7GN  %BC(=)ABB   s $' A.2A)"A.(A))A.c6|jtdS)Nr8)rrr+s r-r8zProcess.num_threadss =!9::r,ctj|j}g}|D].\}}}tj|||}|j |0|Sr)r proc_threadsrrpthreadr)r rr thread_idutimestimentuples r-threadszProcess.threadssQ##DHH-'. #Iue__Yu=F NN6 "(/r,c$ tj|j\}}}tj||ddS#t$rI}t |st d|j }|td}|td}Yd}~ed}~wwxYw)Nz(attempting cpu_times() fallback (slower)r4r5r) rrrrArBr rrr pcputimes)r rZr[_createdrFrs r-rzProcess.cpu_timess 4%)__TXX%> "D&(  vsC88 4$S) < =??$D +./D)M23F  4s#= B?B  BcDtj|jdy)NTrproc_suspend_or_resumerr+s r-suspendzProcess.suspends ##DHHd3r,cDtj|jdy)NFrr+s r-resumezProcess.resumes ##DHHe4r,c|jdvr t|j|jtj|j}t j j|S)Nr)rrrrproc_cwdrrnnormpath)r rns r-cwdz Process.cwdsN 88v txx4 4}}TXX&ww%%r,c|jdvrgSt}tj|j}|D]@}t |}t |st j|d}|j|Bt|S)Nrr%) rrrproc_open_filesrr r popenfilerr)r rraw_file_namesfilers r- open_fileszProcess.open_filessu 88v Ie --dhh7"D#D)DT" **44 # Cyr,c0t||jS)N)r)rr)r rs r-rzProcess.net_connectionsst$((33r,cZtj|j}t|}|Sr)rproc_priority_getrr'r values r-nice_getzProcess.nice_gets$&&txx0 r,cBtj|j|Sr)rproc_priority_setrrs r-nice_setzProcess.nice_sets%%dhh66r,cZtj|j}t|}|Sr)rproc_io_priority_getrr/rs r- ionice_getzProcess.ionice_gets$''1o r,c|r d}t||tjtjtjtj hvr|d}t |tj|j|y)Nz&value argument not accepted on Windowsz is not a valid priority) TypeErrorr/rrrrrrproc_io_priority_setr)r ioclassrr@s r- ionice_setzProcess.ionice_setsr :CC.   % %  ! !  $ $  " "   I56CS/ ! !!$((G4r,c b tj|j}t|S#t$r|}t |st d|j }|td|td|td|td|td|tdf}Yd}~t|Sd}~wwxYw)Nz*attempting io_counters() fallback (slower)r:r;r=r?rArC) rproc_io_countersrrArBr rrrq)r rrFrs r- io_counterszProcess.io_counterss ''1CCy $S) > ???$DY{+,Y{+,Y{+,Y{+,Y012Y012 CCy s) B.A+B))B.ctj|j}|rtjStj Sr)rproc_is_suspendedrrSTATUS_STOPPEDSTATUS_RUNNING)r  suspendeds r-rzProcess.status*s1**4884 )) ))) )r,cVd}tj|j}||S)NcPtdDcgc] }d|z|zs |c}Scc}w)N@r)rs)ris r- from_bitmaskz.Process.cpu_affinity_get..from_bitmask4s($Ry9y!Q!VqLAy9 99s ##)rproc_cpu_affinity_getr)r rbitmasks r-cpu_affinity_getzProcess.cpu_affinity_get2s( :,,TXX6G$$r,cd}tttt}|D]7}||vst |t sd|d}t |d|}t|||}tj|j|y)NcL|sd|}t|d}|D] }|d|zz} |S)Nzinvalid argument rr0)r)lsr@outbs r- to_bitmaskz,Process.cpu_affinity_set..to_bitmask<s<)"0 o%Cq!t Jr,z invalid CPU z; an integer is required) rrsrrrrrrrproc_cpu_affinity_setr)r rrallcpuscpur@rs r-cpu_affinity_setzProcess.cpu_affinity_set:s uS123C'!!#s+(/GHC#C.($SG, o% U# ""488W5r,c tj|jS#t$r;}t |r*t d|j tdcYd}~Sd}~wwxYw)Nz*attempting num_handles() fallback (slower)r2)rproc_num_handlesrrArBr rrrs r-r2zProcess.num_handlesTsW ((2 2  %BC(=)ABB   s ! A%/A A%A  A%cb|jtd}tj|dS)Nr3r)rrrpctxsw)r r3s r-num_ctx_switcheszProcess.num_ctx_switches^s)(>)BC ~~lA..r,r)F)inet),r(r)r*rW __slots__r!rrrrrrmrrzrrrrrrrrrrr6r6r8rrrrrrrrrrrrrrrr2r!r+r,r-r|r|s;3I&( ," = =&&@ .%%-- .(( " "()()T##   ;; 9 94455&& 44 77  5 5$**%%662//r,r|r+)r%)NN)rWrXenumrjrrsys threadingr  collectionsrrrrrrr r r r r rrrrrrrrrrrr ImportErrorrFstrlowerr}getwindowsversionr@ RuntimeError__extra__all__r rtbuiltin_module_namesrIntEnumr$r!MIB_TCP_STATE_ESTABCONN_ESTABLISHEDMIB_TCP_STATE_SYN_SENT CONN_SYN_SENTMIB_TCP_STATE_SYN_RCVD CONN_SYN_RECVMIB_TCP_STATE_FIN_WAIT1CONN_FIN_WAIT1MIB_TCP_STATE_FIN_WAIT2CONN_FIN_WAIT2MIB_TCP_STATE_TIME_WAITCONN_TIME_WAITMIB_TCP_STATE_CLOSED CONN_CLOSEMIB_TCP_STATE_CLOSE_WAITCONN_CLOSE_WAITMIB_TCP_STATE_LAST_ACK CONN_LAST_ACKMIB_TCP_STATE_LISTEN CONN_LISTENMIB_TCP_STATE_CLOSING CONN_CLOSINGMIB_TCP_STATE_DELETE_TCBPSUTIL_CONN_NONE CONN_NONErr'globalsrT __members__r/r:rrYr_re_fieldsrkrmr~rorq lru_cacherrrrdisk_io_countersrrrrrrrrrLockrrrrrrrrr rrrrrpidsrrrBrbrmrzr|r+r,r-rPs '   "!"##"+("880024)* $S--- _y"o>    g66!6!6!6!6  '"8"8  '"8"8  '"8"8w11!!7#:#:!6!6w22 4 4!!?7,, "6t||6 %%& ''(                        ! "# $% &' () *+ ,-  B {E G  7MN  56 j$,,": ;?VUO< -*?*?!@@ B 78S!0"0*   4;>((:4 $ " > 7 ,. ">2    1 }}X yy __ == 8K/K/a C##$56 !C ! ! #A & * D KK ))3S( sOP7 AP22P7