From 483884f06f11b78c48833daca604cb2e2d18cb90 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 24 Oct 2018 09:25:47 -0400 Subject: [PATCH] Convert to asciidoctor, add more support details, incl. Tidelift. --- README.adoc | 270 +++++++++++++++++++++++++++++++++++ README.md | 256 --------------------------------- logos/patreon.png | Bin 0 -> 6057 bytes logos/staysail.png | Bin 0 -> 17422 bytes tcell.png => logos/tcell.png | Bin logos/tidelift.png | Bin 0 -> 2333 bytes tcell.svg | 93 ------------ 7 files changed, 270 insertions(+), 349 deletions(-) create mode 100644 README.adoc delete mode 100644 README.md create mode 100644 logos/patreon.png create mode 100644 logos/staysail.png rename tcell.png => logos/tcell.png (100%) create mode 100644 logos/tidelift.png delete mode 100644 tcell.svg diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..eba4fb5 --- /dev/null +++ b/README.adoc @@ -0,0 +1,270 @@ += tcell + + +image:https://img.shields.io/travis/gdamore/tcell.svg?label=linux[Linux Status,link="https://travis-ci.org/gdamore/tcell"] +image:https://img.shields.io/appveyor/ci/gdamore/tcell.svg?label=windows[Windows Status,link="https://ci.appveyor.com/project/gdamore/tcell"] +image:https://img.shields.io/badge/license-APACHE2-blue.svg[Apache License,link="https://github.com/gdamore/tcell/blob/master/LICENSE"] +image:https://img.shields.io/badge/gitter-join-brightgreen.svg[Gitter,link="https://gitter.im/gdamore/tcell"] +image:https://img.shields.io/badge/godoc-reference-blue.svg[GoDoc,link="https://godoc.org/github.com/gdamore/tcell"] +image:http://goreportcard.com/badge/gdamore/tcell[Go Report Card,link="http://goreportcard.com/report/gdamore/tcell"] +image:https://codecov.io/gh/gdamore/tcell/branch/master/graph/badge.svg[codecov,link="https://codecov.io/gh/gdamore/tcell"] +image:https://tidelift.com/badges/github/gdamore/tcell?style=flat[Dependencies] + +[cols="2",grid="none"] +|=== +|_Tcell_ is a _Go_ package that provides a cell based view for text terminals, like _xterm_. +It was inspired by _termbox_, but includes many additional improvements. +a|[.right] +image::logos/tcell.png[float="right"] +|=== + +## Examples + +* https://github.com/gdamore/proxima5[proxima5] - space shooter (https://youtu.be/jNxKTCmY_bQ[video]) +* https://github.com/gdamore/govisor[govisor] - service management UI (http://2.bp.blogspot.com/--OsvnfzSNow/Vf7aqMw3zXI/AAAAAAAAARo/uOMtOvw4Sbg/s1600/Screen%2BShot%2B2015-09-20%2Bat%2B9.08.41%2BAM.png[screenshot]) +* mouse demo - included mouse test (http://2.bp.blogspot.com/-fWvW5opT0es/VhIdItdKqJI/AAAAAAAAATE/7Ojc0L1SpB0/s1600/Screen%2BShot%2B2015-10-04%2Bat%2B11.47.13%2BPM.png[screenshot]) +* https://github.com/gdamore/gomatrix[gomatrix] - converted from Termbox +* https://github.com/zyedidia/micro/[micro] - lightweight text editor with syntax-highlighting and themes +* https://github.com/viktomas/godu[godu] - simple golang utility helping to discover large files/folders. +* https://github.com/rivo/tview[tview] - rich interactive widgets for terminal UIs +* https://github.com/marcusolsson/tui-go[tui-go] - UI library for terminal apps +* https://github.com/rgm3/gomandelbrot[gomandelbrot] - Mandelbrot! +* https://github.com/senorprogrammer/wtf[WTF]- Personal information dashboard for your terminal +* https://github.com/browsh-org/browsh[browsh] - A fully-modern text-based browser, rendering to TTY and browsers (https://www.youtube.com/watch?v=HZq86XfBoRo[video]) +* https://github.com/sachaos/go-life[go-life] - Conway's Game of Life. + +## Pure Go Terminfo Database + +_Tcell_ includes a full parser and expander for terminfo capability strings, +so that it can avoid hard coding escape strings for formatting. It also favors +portability, and includes support for all POSIX systems. + +The database is also flexible & extensible, and can modified by either running +a program to build the entire database, or an entry for just a single terminal. + +## More Portable + +_Tcell_ is portable to a wide variety of systems. +_Tcell_ is believed +to work with all of the systems officially supported by golang with +the exception of nacl (which lacks any kind of a terminal interface). +(Plan9 is not supported by _Tcell_, but it is experimental status only +in golang.) For all of these systems *except Solaris/illumos*, _Tcell_ +is pure Go, with no need for CGO. + +## No Async IO + +_Tcell_ is able to operate without requiring `SIGIO` signals (unlike _termbox_), +or asynchronous I/O, and can instead use standard Go file +objects and Go routines. +This means it should be safe, especially for +use with programs that use exec, or otherwise need to manipulate the +tty streams. +This model is also much closer to idiomatic Go, leading +to fewer surprises. + +## Rich Unicode & non-Unicode support + +_Tcell_ includes enhanced support for Unicode, including wide characters and +combining characters, provided your terminal can support them. +Note that +Windows terminals generally don't support the full Unicode repertoire. + +It will also convert to and from Unicode locales, so that the program +can work with UTF-8 internally, and get reasonable output in other locales. +_Tcell_ tries hard to convert to native characters on both input and output, and +on output _Tcell_ even makes use of the alternate character set to facilitate +drawing certain characters. + +## More Function Keys + +_Tcell_ also has richer support for a larger number of special keys that some terminals can send. + +## Better Color Handling + +_Tcell_ will respect your terminal's color space as specified within your terminfo +entries, so that for example attempts to emit color sequences on VT100 terminals +won't result in unintended consequences. + +In Windows mode, _Tcell_ supports 16 colors, bold, dim, and reverse, +instead of just termbox's 8 colors with reverse. (Note that there is some +conflation with bold/dim and colors.) + +_Tcell_ maps 16 colors down to 8, for terminals that need it. +(The upper 8 colors are just brighter versions of the lower 8.) + +## Better Mouse Support + +_Tcell_ supports enhanced mouse tracking mode, so your application can receive +regular mouse motion events, and wheel events, if your terminal supports it. + +## _Termbox_ Compatibility + +A compatibility layer for _termbox_ is provided in the `compat` directory. +To use it, try importing `github.com/gdamore/tcell/termbox` +instead. Most _termbox-go_ programs will probably work without further +modification. + +## Working With Unicode + +Internally Tcell uses UTF-8, just like Go. +However, Tcell understands how to +convert to and from other character sets, using the capabilities of +the `golang.org/x/text/encoding packages`. +Your application must supply +them, as the full set of the most common ones bloats the program by about 2MB. +If you're lazy, and want them all anyway, see the `encoding` sub-directory. + +## Wide & Combining Characters + +The `SetContent()` API takes a primary rune, and an optional list of combining runes. +If any of the runes is a wide (East Asian) rune occupying two cells, +then the library will skip output from the following cell, but care must be +taken in the application to avoid explicitly attempting to set content in the +next cell, otherwise the results are undefined. (Normally wide character +is displayed, and the other character is not; do not depend on that behavior.) + +Experience has shown that the vanilla Windows 8 console application does not +support any of these characters properly, but at least some options like +_ConEmu_ do support Wide characters. + +## Colors + +_Tcell_ assumes the ANSI/XTerm color model, including the 256 color map that +XTerm uses when it supports 256 colors. The terminfo guidance will be +honored, with respect to the number of colors supported. Also, only +terminals which expose ANSI style `setaf` and `setab` will support color; +if you have a color terminal that only has `setf` and `setb`, please let me +know; it wouldn't be hard to add that if there is need. + +## 24-bit Color + +_Tcell_ _supports true color_! (That is, if your terminal can support it, +_Tcell_ can accurately display 24-bit color.) + +To use 24-bit color, you need to use a terminal that supports it. Modern +xterm and similar teminal emulators can support this. As terminfo lacks any +way to describe this capability, we fabricate the capability for +terminals with names ending in `*-truecolor`. The stock distribution ships +with a database that defines `xterm-truecolor`. +To try it out, set your +`TERM` variable to `xterm-truecolor`. + +When using TrueColor, programs will display the colors that the programmer +intended, overriding any "`themes`" you may have set in your terminal +emulator. (For some cases, accurate color fidelity is more important +than respecting themes. For other cases, such as typical text apps that +only use a few colors, its more desirable to respect the themes that +the user has established.) + +If you find this undesirable, you can either use a `TERM` variable +that lacks the `TRUECOLOR` setting, or set `TCELL_TRUECOLOR=disable` in your +environment. + +## Performance + +Reasonable attempts have been made to minimize sending data to terminals, +avoiding repeated sequences or drawing the same cell on refresh updates. + +## Terminfo + +(Not relevent for Windows users.) + +The Terminfo implementation operates with two forms of database. The first +is the built-in go database, which contains a number of real database entries +that are compiled into the program directly. This should minimize calling +out to database file searches. + +The second is in the form of JSON files, that contain the same information, +which can be located either by the `$TCELLDB` environment file, `$HOME/.tcelldb`, +or is located in the Go source directory as `database.json`. + +These files (both the Go and the JSON files) can be generated using the +mkinfo.go program. If you need to regnerate the entire set for some reason, +run the mkdatabase.sh file. The generation uses the infocmp(1) program on +the system to collect the necessary information. + +The `mkinfo.go` program can also be used to generate specific database entries +for named terminals, in case your favorite terminal is missing. (If you +find that this is the case, please let me know and I'll try to add it!) + +_Tcell_ requires that the terminal support the `cup` mode of cursor addressing. +Terminals without absolute cursor addressability are not supported. +This is unlikely to be a problem; such terminals have not been mass produced +since the early 1970s. + +## Mouse Support + +Mouse support is detected via the `kmous` terminfo variable, however, +enablement/disablement and decoding mouse events is done using hard coded +sequences based on the XTerm X11 model. As of this writing all popular +terminals with mouse tracking support this model. (Full terminfo support +is not possible as terminfo sequences are not defined.) + +On Windows, the mouse works normally. + +Mouse wheel buttons on various terminals are known to work, but the support +in terminal emulators, as well as support for various buttons and +live mouse tracking, varies widely. Modern _xterm_, macOS _Terminal_, and _iTerm_ all work well. + +## Testablity + +There is a `SimulationScreen`, that can be used to simulate a real screen +for automated testing. The supplied tests do this. The simulation contains +event delivery, screen resizing support, and capabilities to inject events +and examine "`physical`" screen contents. + +## Platforms + +### POSIX (Linux, FreeBSD, macOS, Solaris, etc.) + +For mainstream systems with a suitably well defined system call interface +to tty settings, everything works using pure Go. + +For the remainder (right now means only Solaris/illumos) we use POSIX function +calls to manage termios, which implies that CGO is required on those platforms. + +### Windows + +Windows console mode applications are supported. Unfortunately _mintty_ +and other _cygwin_ style applications are not supported. + +Modern console applications like ConEmu, as well as the Windows 10 +console itself, support all the good features (resize, mouse tracking, etc.) + +I haven't figured out how to cleanly resolve the dichotomy between cygwin +style termios and the Windows Console API; it seems that perhaps nobody else +has either. If anyone has suggestions, let me know! Really, if you're +using a Windows application, you should use the native Windows console or a +fully compatible console implementation. + +### Plan9 and Native Client (Nacl) + +The nacl and plan9 platforms won't work, but compilation stubs are supplied +for folks that want to include parts of this in software targetting those +platforms. The Simulation screen works, but as Tcell doesn't know how to +allocate a real screen object on those platforms, `NewScreen()` will fail. + +If anyone has wisdom about how to improve support for either of these, +please let me know. PRs are especially welcome. + +### Commercial Support + +_Tcell_ is absolutely free, but if you want to obtain commercial, professional support, there are options. + +[cols="2",align="center"] +|=== +^.^| +image:logos/tidelift.png[100,100] +a| +https://tidelift.com/[Tidelift] subscriptions include support for _Tcell_, as well as many other open source packages. + +^.^| +image:logos/staysail.png[100,100] +a| +mailto:info@staysail.tech[Staysail Systems, Inc.] offers direct support, and custom development around _Tcell_ on an hourly basis. + +^.^| +image:logos/patreon.png[100,100] +a|I also welcome donations at https://www.patron.com/gedamore/[Patreon], if you just want to make a contribution. +|=== diff --git a/README.md b/README.md deleted file mode 100644 index e6d480c..0000000 --- a/README.md +++ /dev/null @@ -1,256 +0,0 @@ -## tcell - -[![Linux Status](https://img.shields.io/travis/gdamore/tcell.svg?label=linux)](https://travis-ci.org/gdamore/tcell) -[![Windows Status](https://img.shields.io/appveyor/ci/gdamore/tcell.svg?label=windows)](https://ci.appveyor.com/project/gdamore/tcell) -[![Apache License](https://img.shields.io/badge/license-APACHE2-blue.svg)](https://github.com/gdamore/tcell/blob/master/LICENSE) -[![Gitter](https://img.shields.io/badge/gitter-join-brightgreen.svg)](https://gitter.im/gdamore/tcell) -[![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg)](https://godoc.org/github.com/gdamore/tcell) -[![Go Report Card](http://goreportcard.com/badge/gdamore/tcell)](http://goreportcard.com/report/gdamore/tcell) -[![codecov](https://codecov.io/gh/gdamore/tcell/branch/master/graph/badge.svg)](https://codecov.io/gh/gdamore/tcell) - - -Package tcell provides a cell based view for text terminals, like xterm. -It was inspired by termbox, but differs from termbox in some important -ways. It also adds substantial functionality beyond termbox. - -## Examples - -* [proxima5](https://github.com/gdamore/proxima5) - space shooter ([video](https://youtu.be/jNxKTCmY_bQ)) -* [govisor](https://github.com/gdamore/govisor) - service management UI ([screenshot](http://2.bp.blogspot.com/--OsvnfzSNow/Vf7aqMw3zXI/AAAAAAAAARo/uOMtOvw4Sbg/s1600/Screen%2BShot%2B2015-09-20%2Bat%2B9.08.41%2BAM.png)) -* mouse demo - [screenshot](http://2.bp.blogspot.com/-fWvW5opT0es/VhIdItdKqJI/AAAAAAAAATE/7Ojc0L1SpB0/s1600/Screen%2BShot%2B2015-10-04%2Bat%2B11.47.13%2BPM.png) - included mouse test -* [gomatrix](https://github.com/gdamore/gomatrix) - converted from Termbox -* [micro](https://github.com/zyedidia/micro/) - lightweight text editor with syntax-highlighting and themes -* [godu](https://github.com/viktomas/godu) - simple golang utility helping to discover large files/folders. -* [tview](https://github.com/rivo/tview) - rich interactive widgets for terminal UIs -* [tui-go](https://github.com/marcusolsson/tui-go) - UI library for terminal apps -* [gomandelbrot](https://github.com/rgm3/gomandelbrot) - Mandelbrot! -* [WTF](https://github.com/senorprogrammer/wtf)- Personal information dashboard for your terminal -* [browsh](https://github.com/browsh-org/browsh) - A fully-modern text-based browser, rendering to TTY and browsers ([video](https://www.youtube.com/watch?v=HZq86XfBoRo)) -* [go-life](https://github.com/sachaos/go-life) - Conway's Game of Life. - -## Pure Go Terminfo Database - -First, it includes a full parser and expander for terminfo capability strings, -so that it can avoid hard coding escape strings for formatting. It also favors -portability, and includes support for all POSIX systems. - -The database is also flexible & extensible, and can modified by either running -a program to build the entire database, or an entry for just a single terminal. - -## More Portable - -Tcell is portable to a wider variety of systems. Tcell is believed -to work with all of the systems officially supported by golang with -the exception of nacl (which lacks any kind of a terminal interface). -(Plan9 is not supported by Tcell, but it is experimental status only -in golang.) For all of these systems *except Solaris/illumos*, Tcell -is pure Go, with no need for CGO. - -## No Async IO - -Tcell is able to operate without requiring SIGIO signals (unlike Termbox), -or asynchronous I/O, and can instead use standard Go file -objects and Go routines. This means it should be safe, especially for -use with programs that use exec, or otherwise need to manipulate the -tty streams. This model is also much closer to idiomatic Go, leading -to fewer surprises. - -## Richer Unicode & non-Unicode support - -Tcell includes enhanced support for Unicode, including wide characters and -combining characters, provided your terminal can support them. Note that -Windows terminals generally don't support the full Unicode repertoire. - -It will also convert to and from Unicode locales, so that the program -can work with UTF-8 internally, and get reasonable output in other locales. -We try hard to convert to native characters on both input and output, and -on output Tcell even makes use of the alternate character set to facilitate -drawing certain characters. - -## More Function Keys - -It also has richer support for a larger number of special keys that some -terminals can send. - -## Better Color Handling - -Tcell will respect your terminal's color space as specified within your terminfo -entries, so that for example attempts to emit color sequences on VT100 terminals -won't result in unintended consequences. - -In Windows mode, Tcell supports 16 colors, bold, dim, and reverse, -instead of just termbox's 8 colors with reverse. (Note that there is some -conflation with bold/dim and colors.) - -Tcell maps 16 colors down to 8, for terminals that need it. (The upper -8 colors are just brighter versions of the lower 8.) - -## Better Mouse Support - -Tcell supports enhanced mouse tracking mode, so your application can receive -regular mouse motion events, and wheel events, if your terminal supports it. - -## Termbox Compatibility - -A compatibility layer for termbox is provided in the compat -directory. To use it, try importing "github.com/gdamore/tcell/termbox" -instead. Most termbox-go programs will probably work without further -modification. - -## Working With Unicode - -Internally Tcell uses UTF-8, just like Go. However, Tcell understands how to -convert to and from other character sets, using the capabilities of -the golang.org/x/text/encoding packages. Your application must supply -them, as the full set of the most common ones bloats the program by about -2MB. If you're lazy, and want them all anyway, see the encoding -sub-directory. - -## Wide & Combining Characters - -The SetContent() API takes a primary rune, and an optional list of combining -runes. If any of the runes is a wide (East Asian) rune occupying two cells, -then the library will skip output from the following cell, but care must be -taken in the application to avoid explicitly attempting to set content in the -next cell, otherwise the results are undefined. (Normally wide character -is displayed, and the other character is not; do not depend on that behavior.) - -Experience has shown that the vanilla Windows 8 console application does not -support any of these characters properly, but at least some options like -ConEmu do support Wide characters at least. - -## Colors - -Tcell assumes the ANSI/XTerm color model, including the 256 color map that -XTerm uses when it supports 256 colors. The terminfo guidance will be -honored, with respect to the number of colors supported. Also, only -terminals which expose ANSI style setaf and setab will support color; -if you have a color terminal that only has setf and setb, please let me -know; it wouldn't be hard to add that if there is need. - -## 24-bit Color - -Tcell _supports true color_! (That is, if your terminal can support it, -Tcell can accurately display 24-bit color.) - -To use 24-bit color, you need to use a terminal that supports it. Modern -xterm and similar teminal emulators can support this. As terminfo lacks any -way to describe this capability, we fabricate the capability for -terminals with names ending in *-truecolor. The stock distribution ships -with a database that defines xterm-truecolor. To try it out, set your -TERM variable to xterm-truecolor. - -When using TrueColor, programs will display the colors that the programmer -intended, overriding any "themes" you may have set in your terminal -emulator. (For some cases, accurate color fidelity is more important -than respecting themes. For other cases, such as typical text apps that -only use a few colors, its more desirable to respect the themes that -the user has established.) - -If you find this undesirable, you can either use a TERM variable -that lacks the TRUECOLOR setting, or set TCELL_TRUECOLOR=disable in your -environment. - -## Performance - -Reasonable attempts have been made to minimize sending data to terminals, -avoiding repeated sequences or drawing the same cell on refresh updates. - -## Terminfo - -(Not relevent for Windows users.) - -The Terminfo implementation operates with two forms of database. The first -is the built-in go database, which contains a number of real database entries -that are compiled into the program directly. This should minimize calling -out to database file searches. - -The second is in the form of JSON files, that contain the same information, -which can be located either by the $TCELLDB environment file, $HOME/.tcelldb, -or is located in the Go source directory as database.json. - -These files (both the Go and the JSON files) can be generated using the -mkinfo.go program. If you need to regnerate the entire set for some reason, -run the mkdatabase.sh file. The generation uses the infocmp(1) program on -the system to collect the necessary information. - -The mkinfo.go program can also be used to generate specific database entries -for named terminals, in case your favorite terminal is missing. (If you -find that this is the case, please let me know and I'll try to add it!) - -Tcell requires that the terminal support the 'cup' mode of cursor addressing. -Terminals without absolute cursor addressability are not supported. -This is unlikely to be a problem; such terminals have not been mass produced -since the early 1970s. - -## Mouse Support - -Mouse support is detected via the "kmous" terminfo variable, however, -enablement/disablement and decoding mouse events is done using hard coded -sequences based on the XTerm X11 model. As of this writing all popular -terminals with mouse tracking support this model. (Full terminfo support -is not possible as terminfo sequences are not defined.) - -On Windows, the mouse works normally. - -Mouse wheel buttons on various terminals are known to work, but the support -in terminal emulators, as well as support for various buttons and -live mouse tracking, varies widely. As a particular datum, MacOS X Terminal -does not support Mouse events at all (as of MacOS 10.10, aka Yosemite.) The -excellent iTerm application is fully supported, as is vanilla XTerm. - -Mouse tracking with live tracking also varies widely. Current XTerm -implementations, as well as current Screen and iTerm2, and Windows -consoles, all support this quite nicely. On other platforms you might -find that only mouse click and release events are reported, with -no intervening motion events. It really depends on your terminal. - -## Testablity - -There is a SimulationScreen, that can be used to simulate a real screen -for automated testing. The supplied tests do this. The simulation contains -event delivery, screen resizing support, and capabilities to inject events -and examine "physical" screen contents. - -## Platforms - -### POSIX (Linux, FreeBSD, MacOS, Solaris, etc.) - -For mainstream systems with a suitably well defined system call interface -to tty settings, everything works using pure Go. - -For the remainder (right now means only Solaris/illumos) we use POSIX function -calls to manage termios, which implies that CGO is required on those platforms. - -### Windows - -Windows console mode applications are supported. Unfortunately mintty -and other cygwin style applications are not supported. - -Modern console applications like ConEmu, as well as the Windows 10 -console itself, support all the good features (resize, mouse tracking, etc.) - -I haven't figured out how to cleanly resolve the dichotomy between cygwin -style termios and the Windows Console API; it seems that perhaps nobody else -has either. If anyone has suggestions, let me know! Really, if you're -using a Windows application, you should use the native Windows console or a -fully compatible console implementation. - -### Plan9 and Native Client (Nacl) - -The nacl and plan9 platforms won't work, but compilation stubs are supplied -for folks that want to include parts of this in software targetting those -platforms. The Simulation screen works, but as Tcell doesn't know how to -allocate a real screen object on those platforms, NewScreen() will fail. - -If anyone has wisdom about how to improve support for either of these, -please let me know. PRs are especially welcome. - -### Commercial Support - -This software is absolutely free, but if you want to obtain commercial -support (giving prioritized access to the developer, etc. on an hourly -rate), please drop a line to info@staysail.tech - -I also welcome donations at Patreon, if you just want to feel good about -defraying development costs: https://www.patreon.com/gedamore diff --git a/logos/patreon.png b/logos/patreon.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a0d52b6a7ce81e3c8ad50c96adba18e3c00339 GIT binary patch literal 6057 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 T6$Bw;00000NkvXXu0mjfc!2KR literal 0 HcmV?d00001 diff --git a/tcell.png b/logos/tcell.png similarity index 100% rename from tcell.png rename to logos/tcell.png diff --git a/logos/tidelift.png b/logos/tidelift.png new file mode 100644 index 0000000000000000000000000000000000000000..924071f4cb4c153588a6816b6b5410a6a388169a GIT binary patch literal 2333 zcmb7GeK=J49v?GijDuLrm}qC(TB=#Li)6jTNYqY$uKNMgB65r{FU|i*H0nBSfLBBh)Oo7mAlhwmLOM&6& zp7nGD@?E`|F6N__7|$LyM#yp=l?zyK&aw>5kYHWjn>`l1g$QLr3D^Ru;)n%tK*$vv zyn_cE3x;cN(~*K61EBZM97PhJiCJIn>@B{}0`bHN>Y%?lvp`~LC)JJKtF&8<5$Lk- z1QS>8NPS8373$L;W9ZvTVY$bP?N^o;VMDYtL`#;U+UCvW)bv_?PPw5>m z2<9^2HmElo$Dd2)|z>fyC86EHYm>^Y-wk_~p24NutjYO1c@bB)^gwA~o)7&FtWoRibjv|l794ZH`oe=UcfvQ{6WThs+>{`DhIadE zny0s|fW`b~znG9q4rpjsz&jeJGmHQFO_Ch5@Q$3)qnpQhlj6+z#VUxI~&e89a%&82l zARqsUBcGWS?ZK8vSM?2=VZ1O$B(tx$rTTs@gjDd#+}9yjC$k>&4;`IgxG z#t6Zoq3W4ulQL!3+S>!F;IqG0zk{tQ`;k4|bW7~h?vdrNWx@pcGGj*FCNncAwQY-g zRuBs>K2q?Nr-NzUFL29?^EPOxbULKdVnhDkPeif3VBnyGPZyCrcy8stCjy?!`mTF5 zQxpuhj0m>E-+7ncHD_ig!keoroiKz3Z=Q12!AlYUsh`~{-LT@-p{Lzt>|#jylHS=uNjj{OT3U2qfR!W7--FHH#=Hyh~mC zHCaInf$9TMxP)LVFp}2~`e_~Oi|d+h2wae76=>E6aQyXvdYw8zKtWP6Q|L&>%ZksY zQL4ZM@wfG_m7r}!vW6T5=wbYmfV!+-vXK!uJ#!^C{;2FPX!1A>fkf6cq_8K4f7Cl; zfB2!&jz#j?dXeDNXP2pl`-)s^AFv^f?U2x9Y=PiT~qW%4+Y~9JGNkRfD{Kuz<Hi0`#mfwig5(7|liTTXaRTKaRxqFkU!YIm~Ge%*Ru+Sx9UmY*Hwt1g+t=b#h zZdH_P8d;fqR47+PC6JHpEK+q<{FV;)f1$K5l6Dv^sq-nSsyi`^D&ED{7TxHutxE=R zxCefSiPmbji1EaW!MFa+$W%YxU6_lPZ=U#YaQ*PIBtttdvBtyP`D4}6(e{Dx7;@I7 zD%XGbg*9GNzSnJ8V)JRvz@72OiLUHA;gs(gn=4M*_McPuy2_cA@Q}viT#H%7v2NMK hvFOedna - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - tcell - -