From 95f585720e66e0ed2fa329dfb9cb620638f1bf77 Mon Sep 17 00:00:00 2001 From: Nicolargo Date: Sat, 31 May 2014 13:50:05 +0200 Subject: [PATCH] Update documentation for release 2.0 --- docs/glances-doc.rst | 113 +++++++++++++++++++++-------------- docs/images/connected.png | Bin 0 -> 9442 bytes docs/images/disconnected.png | Bin 0 -> 10031 bytes 3 files changed, 69 insertions(+), 44 deletions(-) create mode 100644 docs/images/connected.png create mode 100644 docs/images/disconnected.png diff --git a/docs/glances-doc.rst b/docs/glances-doc.rst index a9e9dc50..06ef36b3 100644 --- a/docs/glances-doc.rst +++ b/docs/glances-doc.rst @@ -16,9 +16,11 @@ Introduction Glances is a cross-platform curses-based monitoring tool which aims to present a maximum of information in a minimum of space, ideally to fit in a classical 80x24 terminal or higher to have additional information. - Glances can adapt dynamically the displayed information depending on the -terminal size. It can also work in a client/server mode for remote monitoring. +terminal size. + +Glances can also work in a client/server mode. Remote monitoring could be +done via terminal or Web interface. Glances is written in Python and uses the `psutil`_ library to get information from your system. @@ -30,6 +32,10 @@ Full view (>80x24) .. image:: images/screenshot-wide.png +Web interface (Firefox) + +.. image:: images/screenshot-web.png + Usage ===== @@ -63,21 +69,36 @@ In server mode, you can set the bind address ``-B ADDRESS`` and listening TCP po In client mode, you can set the TCP port of the server ``-p PORT``. +You can also set a password to access to the server ``--password``. + Default binding address is ``0.0.0.0`` (Glances will listen on all the network interfaces) and TCP port is ``61209``. In client/server mode, limits are set by the server side. -You can also set a password to access to the server ``--password``. - Glances is ``IPv6`` compatible. Just use the ``-B ::`` option to bind to all IPv6 addresses. -If Glances server is not detected by the client, this last one try to grab stats using the SNMP protocol: +As an experimental feature, if Glances server is not detected by the client, this last one try to grab stats using the SNMP protocol: .. code-block:: console client$ glances -c @snmpserver -Known limitation: Grab using SNMP is only validated for GNU/Linux operating system. +Known limitation: Grab using SNMP is only validated for GNU/Linux operating system with SNMP v2/2c server. + +Web Server mode +---------------- + +If you want to remotely monitor a machine, called ``server``, from any device with a Web Browser (called ``client``), just run on the server: + +.. code-block:: console + + server$ glances -w + +and on the client, enter the following URL in your favorite Web Browser: + + http:\\@server:61208\ + +where ``@server`` is the IP address or hostname of the server. Command reference ================= @@ -86,7 +107,7 @@ Command-line options -------------------- -h, --help show this help message and exit ---version show program's version number and exit +-V, --version show program's version number and exit -b, --byte display network rate in byte per second -B BIND_ADDRESS, --bind BIND_ADDRESS bind server to the given IPv4/IPv6 address or hostname @@ -172,6 +193,8 @@ The following commands (key pressed) are supported while in Glances: Configuration ============= +**Caution: be aware that the Glances version 1.x configurations files are not comaptible with the version 2.x.** + No configuration file is mandatory to use Glances. Furthermore a configuration file is needed for setup limits, disks or network interfaces to hide and/or monitored processes list. @@ -217,6 +240,8 @@ Legend | ``MAGENTA`` stat counter is ``"WARNING"`` | ``RED`` stat counter is ``"CRITICAL"`` +Note: Only stats with colored background will be logged in the alert view. + Header ------ @@ -225,7 +250,14 @@ Header The header shows the hostname, OS name, release version, platform architecture and system uptime (on the upper right). Additionnaly, on GNU/Linux operating system, it shows also the kernel version. -In client mode, the server connection status is displayed (Connected or Disconnected) +In client mode, the server connection status is displayed: + +Connected: + +.. image:: images/connected.png + +Disconnected: +.. image:: images/disconnected.png CPU --- @@ -252,7 +284,7 @@ The total CPU usage is displayed on the first line. | If user|system|iowait CPU is ``>70%``, then status is set to ``"WARNING"`` | If user|system|iowait CPU is ``>90%``, then status is set to ``"CRITICAL"`` -*Note*: limit values can be overwritten in the configuration file under the ``[cpu]`` section. +*Note*: limit values can be overwritten in the configuration file under the ``[cpu]`` or/and ``[percpu]`` sections. Load ---- @@ -294,7 +326,7 @@ With Glances, alerts are only set for used memory and swap. | If memory is ``>70%``, then status is set to ``"WARNING"`` | If memory is ``>90%``, then status is set to ``"CRITICAL"`` -*Note*: limit values can be overwritten in the configuration file under the ``[memory]`` and ``[swap]`` sections. +*Note*: limit values can be overwritten in the configuration file under the ``[memory]`` and ``[memswap]`` sections. Network ------- @@ -304,34 +336,9 @@ Network Glances displays the network interface bit rate. The unit is adapted dynamically (bits per second, kbits per second, Mbits per second, etc). -Alerts are only set if the network interface maximum speed is available. +Alerts are only set if the network interface maximum speed is available (see sample in the configuration file). -For example, on a 100 Mbps ethernet interface, the warning status is set -if the bit rate is higher than 70 Mbps. - -| If bit rate is ``<50%``, then status is set to ``"OK"`` -| If bit rate is ``>50%``, then status is set to ``"CAREFUL"`` -| If bit rate is ``>70%``, then status is set to ``"WARNING"`` -| If bit rate is ``>90%``, then status is set to ``"CRITICAL"`` - -*Note*: In the configuration file, you can define a list of network interfaces to hide. - -Sensors -------- - -Glances can displays the sensors information trough `lm-sensors` (only available on GNU/Linux). - -As of lm-sensors, a filter is processed in order to display temperature only: - -.. image:: images/sensors.png - -Glances can also grab hard disk temperature through the `hddtemp` daemon (see here [2]_ to install hddtemp on your system): - -.. image:: images/hddtemp.png - -There is no alert on this information. - -*Note*: limit values can be overwritten in the configuration file under the ``[temperature]`` and ``[hddtemperature]`` sections. +*Note*: In the `[network]`` section of the configuration file, you can define a list of network interfaces to hide and per interface limits value. Disk I/O -------- @@ -361,6 +368,23 @@ Alerts are set for used disk space: *Note*: limit values can be overwritten in the configuration file under ``[filesystem]`` section. +Sensors +------- + +Glances can displays the sensors information trough `lm-sensors` (only available on GNU/Linux), HDDTemp and BatInfo. + +As of lm-sensors, a filter is processed in order to display temperature only: + +.. image:: images/sensors.png + +Glances can also grab hard disk temperature through the `hddtemp` daemon (see here [2]_ to install hddtemp on your system): + +.. image:: images/hddtemp.png + +There is no alert on this information. + +*Note*: limit values can be overwritten in the configuration file under the ``[sensors]`` section. + Processes list -------------- @@ -375,7 +399,7 @@ Full view: Three views are available for processes: * Processes summary -* Optional monitored processes list +* Optional monitored processes list (see bellow) * Processes list The processes summary line display: @@ -385,6 +409,7 @@ The processes summary line display: * Running tasks number * Sleeping tasks number * Other tasks number (not running or sleeping) +* Sort key By default, or if you hit the ``a`` key, the processes list is automatically sorted by: @@ -411,7 +436,7 @@ The number of processes in the list is adapted to the screen size. ``NI`` Nice level of the process ``S`` - Process status (see details bellow) + Process status (see details bellow) (running process is highlighted) ``TIME+`` Cumulative CPU time used ``IOR/s`` @@ -419,7 +444,7 @@ The number of processes in the list is adapted to the screen size. ``IOW/s`` Per process IO write rate (in Byte/s) ``COMMAND`` - Process command line + Process command line (process name is highlighted) Process Status legend: @@ -434,7 +459,7 @@ Process Status legend: ``Z`` Zombie -*Note*: limit values can be overwritten in the configuration file under the ``[process]`` section. +*Note*: limits values can be overwritten in the configuration file under the ``[process]`` section. Monitored processes list ------------------------ @@ -502,7 +527,7 @@ A log messages list is displayed in the bottom of the screen if (and only if): Each alert message displays the following information: 1. start date -2. end date +2. duration if alert is terminated or ongoing if the alert is on going 3. alert name 4. {min/avg/max} values or number of running processes for monitored processes list alerts @@ -511,7 +536,7 @@ API documentation Glances uses a `XML-RPC server`_ and can be used by another client software. -API documentation is available at https://github.com/nicolargo/glances/wiki/The-Glances-API-How-To +API documentation is available at https://github.com/nicolargo/glances/wiki/The-Glances-2.x-API-How-to Others outputs ============== @@ -522,7 +547,7 @@ It is possible to export statistics to CSV file. $ glances --output-csv /tmp/glances.csv -CSV files have two lines per stat: +CSV files have two lines per stats: - Stats description - Stats (comma separated) diff --git a/docs/images/connected.png b/docs/images/connected.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9fac38862ffb8306d03aba206ea2a009a5fe85 GIT binary patch literal 9442 zcmV<8Bpus{P)4fJQ7pG`1)jO=3Y~e?BYL*j}Phqp^!6!5WN-f=01MV(&^cQLGe|B39Z03eua% z0$c9+{ju%tZF^VW`~3FfCt>fNJNKNKIdf*dbIx2O5{Ur=AOHaU9~dwIGF~xUHnySs zs=p3^G5H($I!1s1k)DGM1hKI-g&1Ja-$ia?>J0fq{SMR{fbkyk5A;TuMje~q$nk6{ zHAKA`^XNCF8$cEUg&QUTVd_2fQ6Uaa0y`Thzhc(zQu&1#8A}sP$VIMo4r`TN1`WaCa_=}Wfa$=T0_)H4KE?+kFGaDK|ox-$9z^q${Q)3YK z!U;4@z%1kAKgaaeiqqmEj-?G#S2G?97RB6KT*5x^LwAi>mv#IBs?6q3F|R7z8o{GC z#(B$+1DLlb#bswPHko^D$)U1Zn6!CqazByT(~XqPu3Ka7&7BowX)BsRMn>se-`fEg(v!_-CwZXwE$ka<(eaAoo#3BeJH zHlMg!W%}vY5$|OLBTC0D--xWTBY@;x)?T=O)_S8(nqOK`i|AZ~Zp1ON(hL@O`SK`*QPbVKA z)?7#?i!891c{Y>fgY_IU^3C{%jya~r6uTjArR$G?Bs>QH7n7Z6L>DRsz*uhqnSSS3 zHz?gQHwl)OF@{cJ_GcSbK7_2Z_KezWB!UplzHqqtn2R;Yj25H%@w5xbsBd%5==6<; z9g+BdbNtH2t`6oc1lZtt$v$=)eX_&)yx@quPD>BFd&#j$TQCJAVECrz3N~}_vFR(- zNb7(a#A1m6Bgbh05qZH&7fVDG5pWNb8i*h^zt(YTy9h<_(nV4ceLh%NR;iCCErb># zKr-Vn(>g~VD+UmFef8ad;={4ojk@cuUmec49r>w^u92+khC3Mt$24cPeb!6}(?=Tk z!?j1d``I%nDdsT#X8seB2Tl9&!12G+lT$Ndr+N#i!;|_=IgyS0-E(knCyZ{ zJO`}UcP%|RHT~+5RbP5Z%m*d)3p<{insIcpr@#UlgKYgqE|0l>Cp9DK!L389`#T}> zRFwLK9ZyclII8cDg%44mb?eIQ*Nx_$rX+CbwMV=9+cAL>j82MfMZ`kyX|YM?r}&8| zCXBo)+J3S%KJ{3rn}8w)opB`Uv*NGZe%(lc{fy>Y-wcuHW8TX*Q$wL^-(^u}Z{JVN zNJ@QhZvU#mzBb%AE3yrqwlU_<>uE_T8ONsj2u*Z;*nRfay_Cm^DG$!YtQzcRW6mPe z5RBH$bHIw<|4L0vNxgh{)t8!`^fw&tFA19_HosM48-%CodjlN-jCZ#++ zGRadwUGq&Y2tmcS6Nx1lH%oYN1=%Jd}Kamgy{&hx!O~(BUT^~v6~shVd(h4nuy7C zVGALl*;h6UlX+~2W<6;ky2Nkvgf=gKyIqDEdXGQYuCwcxMeM>7EP=$fHp*vL_a%Pv z?E*Kt1L8YjyClJ1*sGkooK}E*LZ&qvQavrXt?ZA3ea$h)R-^Z-^x#v2?}YEJ8)~shTbqVwSNA1#{dT@9X_x|BnR;@|F-375ZrOL1p3aK~ zgjhT%ajPlYBSzKiTQK>CCPb$X6HWSH#DWZHjKur19z_HZw~-~oa7<9 z+O5tFicoZ1813fo%q1g9z|tg@O5Jc{mXAp2IsJOQO07;^6DUJ&6K<=U)WyfwN8K$^ ztJH7ew}!gwJQ->0vD^R7sZ}?r)$htP|K2ggO<~7uF8( z6as+Af7ZE-x7luGu-Y+^OBPlf_DUB3di~LM{`}uxyYDQ9;(Gxe1YiKz^fm5I9 zLj>3N#a9swPCZ9(sZVUk`|nA4lAQV^IqmrH=0Zc%Ec6(8{N9yyGmP>b+EN67K;$v< z_}z=M_4?3k@c!iM-?W!vfkV$#f8RPX*-MNufY^KTfrR+A{hSaT5z;?iTXrXA|M9r{ z57M4Iyt04C`D&N0f$kzQEM+!w3`A|xo`}e!dVMgG)Rx`dzyJ8v`w!AG9$wk^%Y|y^ zu7Pf1@`{PbC?81thX32I?AZ20_i}TSVz(T6L(&IQGvkWbkh=NnWs!eeyZh*I!kJ$; zU47T`vmPzQdO1jFa_9I6oV(B4cj;k9;=MC#XD>aOd~QN35dZ=Zx9GR{w+qQhDH-?v zI<#nzmjnSIVe=8k?_Ca`zUs*3gp8zw^J{eT3jjdUqTk|OhV}~wdWsECkbfF==Vrv9 zVJr4uOG`?59JhCpml(jdfAph_q?C-L)Z@dA`i21j1P+}iZ~XIWaz;{0;+fxn_{>9O zw03Ww#N{~;9N;T8sfz#rfmGJMn*gBcL1b-369R%Lzg|Se3>DgWN{JP3`9gC#BV*Ce(O10^=Pj9JZ z-CW1SdbV`{0FZ@v&-u-@ZEL~Xr}c&9;?~3Mog`TMruM<{swWv30En#G)RR?@{&-uh z0ual3#rTowjE?ne>xhw~!?4|M{>_oLNZV{$%P#I@mjuz~3DUl)eQ?4=Kg~#AB*7cV__U4&CKQTBBuA`Rq zE4gqgqtUJRqGLOUx*`yIjX!ksyM7*dXQO|KI+0N4->ZXzz=T&LbL3o~MiDr5=;=}Y zB(v5+W>w!UvFDgC8)N2<82SAv!M`?b8QN0F+#VVAZcuRU#<3yY#_y;ZuzXQxI|LfV zzEOcadQLo3u6p!+uO3|jdvu<7wVdEc9wB6$jpXe(Cal@y-|7D^^&7u&WW~;?#2U<% zxC0D;1$O?On=3OP6srILG^MF8>fD0b+Up`8-|-tqRP2mOs3FW?GEB`kV*q5|u8&tm zYTcl%mv1CLymn^S*S%cz#u!We#%&x~@oQ9KH8%I&#GYfmXpEUVV$}Di1Y;w%4Ao88 z`djlp3FPC8Srdh~too?U`^cAgYxJq_vQ8)TI4vPB=;(fm_G8XXaDlYd=(&E?zh@xBs~_vrBX z?l;!#xKoXhDRMUj4CX+Fz^+xu$iB@gQl6D-OzcNM%>e2Wc*rbqKpvMs-a2GNpJtUQ z&nnc|gasRu85jeAz}~-ebLGni#VQN{>avs~Reg!Fh9NVY+gdH^lmo4mU2LJ+j@S^BVpO+k+KVkUr|3nw{U%zvLpV-6%$1naf ztS)9&-@bi9S02x5AOMu{^SbKw4U@+wYBhf6{<-a*{x)~S=#evb-fn8{C^GVvsLM*P zaPQu!nF+oVAOIv1yEp-Ws<6mRrG)-2eYyh_mF*pz6*VOLMm|EF-Fvh%vZCqs!dK^) z7iVh#d)Ye4jQ8oTztLZpg1CcQNH9QZLDabX*cn*|{?LMpbKl-VB#^ZGwwXOZ(T^{- z56|5*@Oi}eic%G56_r<37G6E40)X0U#pjp5KD)lMqzOdrT^Z=~5=uI`1ULXv6i0pe za>v+;DoZ}FR#ACng^B*T<%N3s{;qwx1A0@oH#9psH2bD$yp(i0GDO9V&wiP{@ddcg zI(OkeEg&y)#+G!Y=|PW|4;w#c^02StwO~JZY8N{YyLV_M0C;|4>)K`C%^cD7qkg;d z)w;YmCL1VnAc#b+{_d!{pi0Z;(IYc^3aWd*?fxtCb#B7JtygP_nI>DB^>YkrSIX zffFWrrtUxUO3k{WV(x8%r2bI4N7UUscpd{``j(_zuP>= zJ8u2NDg^Z==5~KxJn)?@fGFr&7L2i+@&s$4; zS|jw#xRH>C?lnB#KJ%BbgoUl4c;Bpu18M-8E+b8Z~9l3Y8cDKvn##1VY-n zilK}P5UhD!s{sInRrM;6%B2Fc{Ro&@_etqK>h1`{5lZNGWQu&pubZOWH~B`X7Nm$n zFcbr)epgXa40URwynM&4n^Lc*!=AP>F;{>PK=F~y`)(F$;Q8*&eZSf>yt~WgEAsK{ z!s_>j-6++9glcXzWlsz1F(3eS@$(W0Y2zlsC2IOAM%r4-EB$F|Byb6tHBfYI;jId6 zDeXiKlMp`zCu$38H9Gdyt3fK42mlB&CQo7VyYyezT{ypIlJNXDb05|ctea*{fO6dO zacRw*+V-EZY}w{%*)#TLHE{0UVPTNAB5uXFG)EnsP1Cby?qQ{40J_xg%1horo!X3? z&W~mmW)B`{?Is_KE zwQV6NxmDPN000_`o|S3Z002llI{DeUh8(&z!bGFG&{4PiXpQ_=DfRP9?9tKB)-~kt zt&wK!g#bEdLtFpyiJ6MAZFoa+pH41s)62ht1GLat*gY# z6FsT5Vyhiy(NBz-Ql^TUD(CXDukpv2y+Gna*q7XSdE(now6E$4OuYj>|8 zc7GKBK-|1bx0V0^&AWc$A-P>=N*Id7LIeOvC>0sP!iN*i!8XfM}>zLI+2g0D%?|APksLYt5W41X!!q(hP!5Dd@|&fSjkpV7`_y zqX~#9dn-W5@*>Kxqf_SJH_#<8Fz)^e! z0BpJrw1>L#cUoBxmCpBZcLtE?P$mIUU-b?&%G^rbtWsCLu7)-qc0!qdpFo$uz^nI{ zoA+nt6}qWnKKg~3gBe6m_tSU6i+zU8>RNJg+_QS~V;RjDPnBY2g5d& zz)sE>P=}zFlEh3Ewlq()wM99#MUeR-2ZFDynjCa=?E@uX3-%pTS4seFZDDq8A!NSD zg^&MQH97Ezi4MgfBI?WPK<;W=b2mKfE`Us@4|O`3*CnkQKh_ojAflm^j1&s&KAs!B zA>`58X}h1j!+JgJgB%QYirUaTUZE_v1Xv9O^q)e z;+~<>?u(i|oL^nhByjuEQIuF+{z_Q|wyxbBJ><#)LKg6;5TNOGK99{?<}I4?lyx9; zP}e7Jt|(Ih0Ek=KI@fCnm8$R+0(YA(10;_QtF(Y*z7j#9N~ysBfHeRBLMgI9N2yU_ zbrZ_qnIQJ)TJXLF{s zp6>pb^h;g(;Rrgjcl-mgPQNGMpqN#h^q~B`g-oeur@@p}OTXgV% zk_%;O(5jS8AeKu6001J#mJULSlrWR%FoBUkEF_JVP$`>0WT4Z`(@|)_jiZ@d1OP~x zuzK`JTY)ZZ-hS@hO@3$REJ-n)ggsj~6WwXh0EnDDo59<% zdZPaRnlU47bk3ML9d`hcdq+<>DyT8=^I{pr??TjVsf2-VG%L@+th9?OG zNFtY-Xo>9I-R)6bd1;-7(b=LMI@Yg+0s)f9WkO>+kzI2)dt6s;t`7sddPoxUR3LWm z(!sv`Zq{2}(w$J26ewt>5ZSh$yeo2a(Uz$j@0M%z&s5%DJ!TY1?h(G{=B_yPRHr|L zvZNr-9LUm?=M)n|gS@1FzG(oEwd~-oOVg@KpDENMdv$O)QCv&#SbD)s6M4_gs2F4QikD6-=UzBN#*L9oDwTfR#3kP|4 zec`kCsb?c0l!@M*>Q-HxTY2|^>&Wizv*PTE2wR_47^jydXJQarSX3wxt>#(z{bw$N zJ9^Ilr&;z3Lgp>=4j>Y~%8Yxi&fHy7f6&o8JYdPF`bs4A_NYD7zbH=w0J!OustKeH zQ++15DC=sKiQB45pX=!?xX~=@xt>nqS6Ok-Dl_ZsgSvW8`Pr_bor@Q%-kZ(1Mml}N zcxT7i6%n@HJ{YH$C1nvb@7|!LBCmh{7Wt)2ov>*9l%~DU4)oi+C+yPTg9ZAwJ_~MU z3@CPO-wNQ}^&_cD5VoEY_h4cD^&9E0mF}MnvIltivQ$lV7?Cl1rn_4A;zo|`luw$A zAHC8g;!s0w{8Pc&Z)Xp!xs*xx4qMPe^n7c!(y(o_&-{6V%Kyl68M-voA!W<`atydW zFTKjWUw{8Sxta1FlgIi9*quaUPt=w9WrBeNdV43{ELCYWO=<%0yZrPj_kR7`?8(iP z_n7oAZvilF_A~9cMYbM(t(w{TI!lm^N1K55@^__*f+}TcfkJv*7T>>_$XDNxnk=Ac>KVJ_pC( z7^24Pix-P0%vm})d)LkCR>K$fw|TtnK?Q-edOBcE2ZR6s;*k0C238!+b{@K9h(pTe zdli^*nKU})dcO7YPP|#B=Nqjj#$1QMwa=_j;-3X~%e9nEENtKjAbE>69oo4N`q)qT zM)9gfW6|$7JNAO>^V2Kc`t|qUqsWx^)X5P55Xe57zJ9jjxo>tRq~dia`t9B{``*M~ zU)E#Bd<_$UKm`3`LZ900JoxpR3JHR^a~6G8wOiQT#c+2x;j`j))!9svMovr7+-C5EhW3+f`43AELB>na)nG)<4@ z=1PC^>KAJ31KRTIr59FKRcHXjEIqbxclHmmb5yDF|E#Mv@TlqGn=9vA4IXaOevA!h#hE*+O6!{LP0J-#w+IQ9 z2Mo~D$u7aT=Ix~g753X)eTO$gr^}wWxCgp2?7h|jA;w-Z(tk8BSN4+ZAC0!a^KGpeaxPbM@>!St?{?7owaE)44y|(z_>LE}R_FGA6b_ zqnqO;mw#C58NO)w;c;?kD7^Q__v@~_(dt4qbjE)#_fz52l=~)PmamgVCq(I<~7;yRh@ri$qM%k zKkPm>Pf-2zRQPuX^3+VnA~2I5O^!1&e_yo5G5ouz*!eiD^0Wn75{gEZi~%SWbq=(2k)E*kQ z{dkX@-nI1Pq;#cjjpV4QVj7X(tX;9Qj9;^U95(TS%lu1+js3Z5?9Ute)YSc<$~m$v zw%ht6_a~HR-POqv0Z2Q}_~~n#3$uSueFqqx>|J%P|ACEjZ%>U(S29G$2;s)68v9Ap z)=lxS6M(Ah>9wC{Z@#Hpx7b8rrVqcwjD!5B5t9#ASJyavIxU<;XG?s!mLrZ(7aU%) z(tX3yU4P6KR6jixzVJYvisN{#ZM(s}Y!Hmxa7d4qqv~@r25(Jor1lcCpaFU{BP!$9 ztvI-4&6YEhREob2oqhdL4=sTKaQ)-RIg1;XE!cQywmqn-avxniP_E$shm{%n_J`-# zgQ_z3(bWUxYG&9J0bpssf{TYt@=aX{ko)UbQxCt^Y6?y){93Sd*@C?noJ38fkI(%Q zuQi;l5P9?ob1e0Evfo;!j2az#HXm0rPv0OL3vCC>G|-( zs_Jft=?b<;*1Vzp21$fJ|B^X}kFJ;r82y&c0KPS)zge{fFU+ zhVql*kLI1&)AH9*Yi`$?8VIQF8D>Au&%O-uH2_v<7G{rVjSHZ$9s{Mw3Zk_nZz$0p z{G#r-GVY{9?8kTMN4pKxj&K_Q00eSLL_t(Y8sq6(OyVcKREyauclLh(0B;{g?Reze z)k{X+^hn95B4+kszPm+`CAM2FYGh4eviDXW>PW3uJ@f&}irAmaer{DyOJr|XbYlC~ z8&w1+_QI11@4-@@(m~dA2{9QG0|bHCY(27ATE}SUKiJk=nmQ(Yk~XQ4yyI6RL;PLk zHqF`%`FglK{ruBfOr1PDQk$5odIdIbfGuo;pw*GmbzkDy#U<_6sDxVcp^1dz_n2xH zYSV&M6<8_0CZFJfwSF>%sOiuTW~r!1C2Aq*jrf=?w+Xl29O_jP9n$W*WF>o52Sm+Q z@$^h7V`q-I*t|r_LlIc2q=~HZDBsU;S`5}WvW09h9k%EPaj=)UF=i5=6;3^O1#N5% zWw6r3V;*I~t*Wiazl67$iD!4u5!pSWTN%q1=l$J$#t|_I3)%NrvMb`NPOcJYEKEGQ zZGH5E3hf7Y^q5wojh+`mh$VKze4-`lO2z=@{6Bp7%u@?GZC&vg&Qkk4DPwCwT8?Rt z*bE*pm7eBdH?0U|5#m4bku@GM<^<_179q0OhJT#S2d_Y!?!t#_HsZ`r04IWGwTS;` zAHF7@tFk$wdh0v|_P;bc$Wl>a;8DsSvw6gHo6ctepe~a<$|akYQU(v!0OrsE1+XGE z#+Y6p5xp<#L04@EnH8g>7bGPYWM&Tu8ACN>9YD#wiWnb+nQ~JY7*3O8miUogZklyy zh}sqb71g4!%uKeJ(;dJVFfRwts#iZCt12*CjZ%P#wC%Zd?v|*2}lZmj9}E&&Q)>b8yL&xElB zkJ2IzK*3co#~Zg8T|7j48I*Z4nl<{Sf7iWthOUv+2pZE-G{o<9Jjl{IYLSN@o}#uG zieW1?n}Z2FUw8)ZwI|^{fEuvs#Zr`CP1Q*eFPqL%?*RkTc|MAcVa9S1h;l%iZFXA% zS}Db3F^7?|`h_O%4QN|j9TDfNkZ3P%<9OMP=)GnQ=JbjXCtKKb4>1CG$Rd|1uRLNb z#m_H?tqv5CLJ9 z%0Jw=JVHE|E^E{hWA=ER&Zzgm^bol&vQ?qghXk;+Biz&=m7jNyI87zuu@+j;I#w@? z-xfK{%X6|~p|3 zh=+sxL4F+PZb*x9>W5^!5ycH>GR+o34Z4HR?ebfNME?)+tH7T0<`H|Dy0dV3hIme}oaf1NHuxW&i*H07*qoM6N<$g13!%_5c6? literal 0 HcmV?d00001 diff --git a/docs/images/disconnected.png b/docs/images/disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..d0bb15ee21810ccb10027f2913a306c5cc30d6e5 GIT binary patch literal 10031 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 FV1i;xF7p5Y literal 0 HcmV?d00001