]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Add documentation draft
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 25 Mar 2019 07:55:44 +0000 (01:55 -0600)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 25 Mar 2019 07:57:51 +0000 (01:57 -0600)
15 files changed:
.gitignore
docs/README.md [new file with mode: 0644]
docs/_config.yml [new file with mode: 0644]
docs/_layouts/default.html [new file with mode: 0644]
docs/css/screen.css [new file with mode: 0644]
docs/doc/index.md [new file with mode: 0644]
docs/doc/installation.md [new file with mode: 0644]
docs/doc/intro-fort.md [new file with mode: 0644]
docs/doc/intro-rpki.md [new file with mode: 0644]
docs/doc/rtr-server.md [new file with mode: 0644]
docs/doc/validator.md [new file with mode: 0644]
docs/img/chain.svg [new file with mode: 0644]
docs/img/design.svg [new file with mode: 0644]
docs/img/tree.svg [new file with mode: 0644]
docs/index.md [new file with mode: 0644]

index cf21d8aa9789def5521a46a3fa030c99c7272299..b9aa85d0edd9cade7a21049e26ce229b33b84d25 100644 (file)
@@ -93,6 +93,7 @@ test-driver
 # Temporal files
 *~
 tmp
+docs/_site
 
 # Unwanted manure shat by imbecile OSs
 .DS_Store*
diff --git a/docs/README.md b/docs/README.md
new file mode 100644 (file)
index 0000000..8b09098
--- /dev/null
@@ -0,0 +1,13 @@
+# Fort's website
+
+This directory contains the source files of Fort's site and documentation.
+
+On account on not being finished, Github does not automatically compile+serve this yet.
+
+You can compile the documentation yourself by running [Jekyll](http://jekyllrb.com/) right here.
+
+```bash
+$ jekyll build
+```
+
+Have a look at your generated files in the new `_site/` directory. (Start at `index.html`.)
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644 (file)
index 0000000..fb06919
--- /dev/null
@@ -0,0 +1,8 @@
+markdown: kramdown
+baseurl: /fort
+defaults:
+  -
+    scope:
+      path: "" # an empty string here means all files in the project
+    values:
+      layout: "default"
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
new file mode 100644 (file)
index 0000000..8d7616b
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+       <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+       <title>{{ page.title }}</title>
+       <link href="../css/screen.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+
+{{ content }}
+
+</body>
+</html>
diff --git a/docs/css/screen.css b/docs/css/screen.css
new file mode 100644 (file)
index 0000000..431d372
--- /dev/null
@@ -0,0 +1,22 @@
+code {
+       background-color: #f8f8f8;
+}
+pre code {
+       display: block;
+       overflow: auto;
+       padding: 1em;
+}
+pre code.terminal {
+       color: lightgray;
+       background-color: black;
+}
+
+.language-bash > .c {
+       color: green;
+}
+.language-bash > .nt {
+       color: purple;
+}
+.language-bash > .s2 {
+       color: blue;
+}
diff --git a/docs/doc/index.md b/docs/doc/index.md
new file mode 100644 (file)
index 0000000..0be75e1
--- /dev/null
@@ -0,0 +1,10 @@
+---
+---
+
+# Documentation Index
+
+1. [Introduction to RPKI](intro-rpki.html)
+2. [Introduction to Fort](intro-fort.html)
+3. [Compilation and Installation](installation.html)
+4. [Validator usage](validator.html)
+5. [RTR Server usage](rtr-server.html)
diff --git a/docs/doc/installation.md b/docs/doc/installation.md
new file mode 100644 (file)
index 0000000..0524135
--- /dev/null
@@ -0,0 +1,66 @@
+---
+---
+
+# Compilation and Installation
+
+## Index
+
+1. [Install dependencies](#install-dependencies)
+       1. [libcrypto](#libcrypto)
+       2. [tomlc99](#tomlc99)
+       3. [rsync](#rsync)
+2. [Install Fort](#install-fort)
+       1. [libcmscodec](#libcmscodec)
+       2. [Validator](#validator)
+       3. [RTR Server](#rtr-server)
+
+## Install dependencies
+
+### libcrypto
+
+Either [LibreSSL](http://www.libressl.org/) or [OpenSSL](https://www.openssl.org/)
+
+### tomlc99
+
+[tomlc99](https://github.com/cktan/tomlc99)
+
+### libcmscodec
+
+{% highlight bash %}
+git clone https://github.com/ydahhrk/libcmscodec.git
+cd libcmscodec
+./autogen.sh
+./configure
+make
+sudo make install
+{% endhighlight %}
+
+### rsync
+
+[rsync](http://rsync.samba.org/)
+
+## Install Fort
+
+There are no packages just yet.
+
+### Validator
+
+{% highlight bash %}
+git clone https://github.com/ydahhrk/rpki-validator.git
+cd rpki-validator
+./autogen.sh
+./configure
+make
+sudo make install
+{% endhighlight %}
+
+### RTR-Server
+
+{% highlight bash %}
+git clone https://github.com/ydahhrk/rtr-server.git
+cd rtr-server
+./autogen.sh
+./configure
+make
+sudo make install
+{% endhighlight %}
diff --git a/docs/doc/intro-fort.md b/docs/doc/intro-fort.md
new file mode 100644 (file)
index 0000000..bbc4e1c
--- /dev/null
@@ -0,0 +1,61 @@
+---
+---
+
+# Introduction to FORT
+
+## Design
+
+FORT is an RPKI Relying Party. It is a service that performs the validation of the entire RPKI repository, and which prepares the ROAs for easy access by your routers.
+
+![../img/design.svg](../img/design.svg)
+
+It is currently made out of two separate binaries. One of them is a command line application that can be used to perform manual validations, and a server that takes the output of the former and communicates it to the routers.
+
+So the idea is to routinely run the command line application in a cron job, and serve its output through the server.
+
+## Standards Compliance 
+
+Further information can be found in the subsections below.
+
+| RFC                                                                        | Implemented |
+|----------------------------------------------------------------------------|-------------|
+| [3779](https://tools.ietf.org/html/rfc3779) (IP & AS Extensions)           | 100%        |
+| [6350](https://tools.ietf.org/html/rfc6350) (vCard)                        | 0%          |
+| [6482](https://tools.ietf.org/html/rfc6482) (ROA)                          | 100%        |
+| [6486](https://tools.ietf.org/html/rfc6486) (Manifests)                    | 75%         |
+| [6487](https://tools.ietf.org/html/rfc6487) (Resource Certificates & CRLs) | 100%        |
+| [6488](https://tools.ietf.org/html/rfc6488) (Signed Objects)               | 90%         |
+| [6493](https://tools.ietf.org/html/rfc6493) (Ghostbusters)                 | 100%        |
+| [7318](https://tools.ietf.org/html/rfc7318) (Policy Qualifiers)            | 100%        |
+| [7730](https://tools.ietf.org/html/rfc7730) (TALs)                         | 100%        |
+| [7935](https://tools.ietf.org/html/rfc7935) (RPKI algorithms)              | 100%        |
+| [8182](https://tools.ietf.org/html/rfc8182) (RRDP)                         | 0%          |
+| [8209](https://tools.ietf.org/html/rfc8209) (BGPSec Certificates)          | 0%          |
+| [8360](https://tools.ietf.org/html/rfc8360) (Validation Reconsidered)      | 100%        |
+
+### RFC 6350 (vCard)
+
+The vCard format is only used by Ghostbusters records. 6350 defines the basic vCard format, while 6493 defines additional requirements for Ghostbusters-specific vCard.
+
+The specific validations have been implemented, while the basic ones have not.
+
+### RFC 6486 (Manifests)
+
+This RFC states a bunch of rules that allow some level of tolerance to missing, invalid or stale manifests. Here's an example:
+
+> signed objects (...) issued by the entity that has published the stale manifest (...) SHOULD be viewed as somewhat suspect, but MAY be used by the RP as per local policy.
+
+These constitute the approximate missing 25%.
+
+### RFC 6488 (Signed Objects)
+
+6488 mandates that all signed objects must be DER-encoded. Fort's current parser cannot tell the difference between BER and DER.
+
+### RFC 8182 (RRDP)
+
+RRDP is a protocol intended to replace RSYNC in the RPKI. Fort only implements RSYNC, currently.
+
+## TO-DO
+
+- Reach full 100% RFC compliance.
+- Maybe a few optimizations, marked as `TODO` in the code.
diff --git a/docs/doc/intro-rpki.md b/docs/doc/intro-rpki.md
new file mode 100644 (file)
index 0000000..db72a68
--- /dev/null
@@ -0,0 +1,35 @@
+---
+title: Introduction to RPKI
+---
+
+# {{ page.title }}
+
+## Problem Statement
+
+Routing, having been conceived near the inception of networking, was hardly designed with security as a primary concern. As a result, routing protocols (in their vanilla forms) are vulnerable to [several attacks](https://tools.ietf.org/html/rfc4593#section-4).
+
+## Solution
+
+The RPKI (Resource Public Key Infrastructure) is a PKI (Public Key Infrastructure) that deals with Internet Resources.
+
+> ### PKI
+> 
+> TODO
+
+> ### Internet Resources
+> 
+> In this context, "resource" refers to IP Addresses and AS numbers.
+
+Basically, the idea is that one should be able to verify the origin of a route by following a chain of criptographically-signed certificates rooted at one of the [RIRs](https://en.wikipedia.org/wiki/Regional_Internet_registry):
+
+![../img/chain.svg](../img/chain.svg)
+
+The end result is a _Route Origin Attestation_ (ROA), a digitally signed object that provides a means of verifying that an IP address block holder has authorized an Autonomous System (AS) to originate routes to its address block or one of its children's.
+
+So the whole infrastructure functions like a tree-shaped trust network (one for each RIR) in which authorities (_Certificate Authority_--CA) attest to their resource suballocations:
+
+![../img/tree.svg](../img/tree.svg)
+
+In the RPKI, all of these files are required to be publicly-available, so anyone can verify them.
+
+This is, however, too much work for a router, so the validation work is deferred to a trusted _Relying Party_ (RP). That's where [FORT](intro-fort.html) comes in.
diff --git a/docs/doc/rtr-server.md b/docs/doc/rtr-server.md
new file mode 100644 (file)
index 0000000..3996059
--- /dev/null
@@ -0,0 +1,5 @@
+---
+---
+
+# 
+
diff --git a/docs/doc/validator.md b/docs/doc/validator.md
new file mode 100644 (file)
index 0000000..b490163
--- /dev/null
@@ -0,0 +1,352 @@
+---
+command: rpki_validator
+---
+
+# Validator Usage
+
+## Index
+
+1. [Syntax](#syntax)
+2. [Arguments](#arguments)
+       1. [`--help`](#--help)
+       2. [`--usage`](#--usage)
+       3. [`--version`](#--version)
+       4. [`--tal`](#--tal)
+       5. [`--local-repository`](#--local-repository)
+       6. [`--roa-output-file`](#--roa-output-file)
+       7. [`--sync-strategy`](#--sync-strategy)
+               1. [`off`](#off)
+               2. [`strict`](#strict)
+               3. [`root`](#root)
+               4. [`root-except-ta`](#root-except-ta)
+       8. [`--maximum-certificate-depth`](#--maximum-certificate-depth)
+       9. [`--shuffle-uris`](#--shuffle-uris)
+       10. [`--color-output`](#--color-output)
+       11. [`--output-file-name-format`](#--output-file-name-format)
+       12. [`--configuration-file`](#--configuration-file)
+       13. [`rsync.program`](#rsyncprogram)
+       14. [`rsync.arguments-recursive`](#rsyncarguments-recursive)
+       15. [`rsync.arguments-flat`](#rsyncarguments-flat)
+
+## Syntax
+
+```
+{{ page.command }}
+       [--help]
+        [--usage]
+        [--version]
+        [--configuration-file=<file>]
+        [--local-repository=<directory>]
+        [--sync-strategy=off|strict|root|root-except-ta]
+        [--maximum-certificate-depth=<unsigned integer>]
+        [--tal=<file>]
+        [--shuffle-uris]
+        [--color-output]
+        [--output-file-name-format=global-url|local-path|file-name]
+        [--roa-output-file=<file>]
+```
+
+If an argument is declared more than once, the last one takes precedence:
+
+{% highlight bash %}
+$ {{ page.command }} --tal="foo"                          # tal is "foo"
+$ {{ page.command }} --tal="foo" --tal="bar"              # tal is "bar"
+$ {{ page.command }} --tal="foo" --tal="bar" --tal="qux"  # tal is "qux"
+{% endhighlight %}
+
+
+## Arguments
+
+### `--help`
+
+- Type: None
+- Availability: `argv` only.
+
+Prints medium-sized usage message.
+
+{% highlight bash %}
+$ {{ page.command }} --help
+Usage: {{ page.command }}
+        [--help]
+            (Give this help list)
+        [--usage]
+            (Give a short usage message)
+        [--version]
+            (Print program version)
+       ...
+        [--output-file-name-format=global-url|local-path|file-name]
+            (File name variant to print during debug/error messages)
+        [--roa-output-file=<file>]
+            (File where the valid ROAs will be dumped.)
+{% endhighlight %}
+
+The slightly larger usage message is `man {{ page.command }}` and the large usage message is this documentation.
+
+### `--usage`
+
+- Type: None
+- Availability: `argv` only.
+
+Prints small-sized help message.
+
+{% highlight bash %}
+$ {{ page.command }} --usage
+Usage: {{ page.command }}
+        [--help]
+        [--usage]
+        [--version]
+       ...
+        [--output-file-name-format=global-url|local-path|file-name]
+        [--roa-output-file=<file>]
+{% endhighlight %}
+
+### `--version`
+
+- Type: None
+- Availability: `argv` only.
+
+Prints small-sized usage message.
+
+{% highlight bash %}
+$ {{ page.command }} --version
+0.0.1
+{% endhighlight %}
+
+### `--tal`
+
+- Type: String (Path to file)
+- Availability: `argv` and TOML
+
+Path to the _Trust Anchor Locator_ (TAL).
+
+The TAL is a file that points to the _Trust Anchor_ (TA). (The TA is the self-signed certificate that serves as the root of the tree you want validated.)
+
+The reason why you provide a TAL instead of a TA is to allow the TA to be updated without needing to redistribute it.
+
+Whichever registry serves as root of the tree you want to validate is responsible for providing you with its TAL. FORT currently ships with the TALs of most of the five RIRs.
+
+> TODO state where they are and which is the missing one.
+
+the TAL file format has been standardized in [RFC 7730](https://tools.ietf.org/html/rfc7730). It is a text file that contains a list of URLs (which serve as alternate access methods for the TA), followed by a blank line, followed by the Base64-encoded public key of the TA.
+
+Just for completeness sake, here's an example on what a typical TAL looks like:
+
+```
+rsync://rpki.example.com/repository/root-ca.cer
+
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsqS+PDB1kArJlBTHeYCu
+4anCWv8DzE8fHHexlGBm4TQBWC0IhNVbpUFg7SOp/7VddcGWyPZQRfdpQi4fdaGu
+d6JJcGRECibaoc0Gs+d2mNyFJ1XXNppLMr5WH3iaL86r00jAnGJiCiNWzz7Rwyvy
+UH0Z4lO12h+z0Zau7ekJ2Oz9to+VcWjHzV4y6gcK1MTlM6fMhKOzQxEA3TeDFgXo
+SMiU+kLHI3dJhv4nJpjc0F+8+6hokIbF0p79yaCgyk0IGz7W3oSPa13KLN6mIPs6
+4/UUJU5DDQvdq5T9FRF0I1mdtLToLSBnDCkTAAC6486UYV1j1Yzv1+DWJHSmiLna
+LQIDAQAB
+```
+
+### `--local-repository`
+
+- Type: String (Path to directory)
+- Availability: `argv` and TOML
+- Default: `/tmp/fort/repository`
+
+> TODO I just came up with the default value. Commit it.
+
+Path to the directory where FORT will store a local cache of the repository.
+
+RPKI repositories are typically accessed by way of [rsync](https://en.wikipedia.org/wiki/Rsync). During the validation cycle, FORT will literally invoke an `rsync` command (see `rsync.program` and `rsync.arguments`), which will download the files into `--local-repository`, and validate the result.
+
+Because rsync uses delta encoding, keeping this cache around significantly speeds up subsequent validation cycles.
+
+### `--roa-output-file`
+
+- Type: String (Path to file)
+- Availability: `argv` and TOML
+- Default: `NULL`
+
+Path to a file where FORT will dump successfully validated ROAs (in CSV format). If `NULL`, the ROAs will be printed in standard error.
+
+This file is meant to be consumed by the beta version of the RTR Server. (In subsequent releases, this will no longer be required.)
+
+### `--sync-strategy`
+
+- Type: Enumeration (`off`, `strict`, `root`, `root-except-ta`)
+- Availability: `argv` and TOML
+- Default: `root`
+
+rsync synchronization strategy. Commands the way rsync URLs are approached during downloads.
+
+#### `off`
+
+Skips all rsyncs. (Validate the existing cache repository pointed by `--local-repository`.)
+
+#### `strict`
+
+rsyncs every repository publication point separately. Only skips publication points that have already been downloaded during the current validation cycle. (Assuming each synchronization is recursive.)
+
+For example, suppose the validator gets certificates whose caRepository access methods (in their Subject Information Access extensions) point to the following publication points:
+
+1. `rsync://rpki.example.com/foo/bar/`
+2. `rsync://rpki.example.com/foo/qux/`
+3. `rsync://rpki.example.com/foo/bar/`
+4. `rsync://rpki.example.com/foo/corge/grault/`
+5. `rsync://rpki.example.com/foo/corge/`
+6. `rsync://rpki.example.com/foo/corge/waldo/`
+
+A  validator following the `strict` strategy would download `bar`, download `qux`, skip `bar`, download `corge/grault`, download `corge` and skip `corge/waldo`.
+
+Though this strategy is the only "strictly" correct one, it is also extremely slow. Its usage is _not_ recommended, unless your repository contains lots of spam files, awkward permissions or can't be found in a repository rooted in a URL that follows the pattern `rsync://.+/.+/`.
+
+#### `root`
+
+For each publication point found, guess the root of its repository and rsync that instead. Then skip
+any subsequent children of said root.
+
+(To guess the root of a repository, the validator counts four slashes, and prunes the rest of the URL.)
+
+Reusing the caRepository URLs from the `strict` strategy (above) as example, a  validator following the `root` strategy would download `rsync://rpki.example.com/foo`, and then skip everything else.
+
+Assuming that the repository is specifically structured to be found within as few roots as possible, and they contain minimal RPKI-unrelated noise files, this is the fastest synchronization strategy. At time of writing, this is true for all the current official repositories.
+
+#### `root-except-ta`
+
+Synchronizes the root certificate (the one pointed by the TAL) in `strict` mode, and once it's validated, synchronizes the rest of the repository in `root` mode.
+
+Useful if you want `root`, but the root certificate is separated from the rest of the repository. Also useful if you don't want the validator to download the entire repository without first confirming the integrity and legitimacy of the root certificate.
+
+### `--maximum-certificate-depth`
+
+### `--shuffle-uris`
+
+- Availability: `argv` and TOML
+
+If enabled, FORT will access TAL URLs in random order. This is meant for load balancing. If disabled, FORT will access TAL URLs in sequential order.
+
+(Regardless of this flag, FORT will stop iterating through the URLs as soon as it finds one that yields a successful traversal.)
+
+Of course, this is only relevant if the TAL lists more than one URL.
+
+### `--color-output`
+
+- Availability: `argv` and TOML
+
+If enabled, the logging output will contain ANSI color codes. Meant for human consumption.
+
+<pre><code class="terminal">$ {{ page.command }} --color-output (...)
+<span style="color:cyan">DBG: Manifest '62gPOPXWxxu0sQa4vQZYUBLaMbY.mft' {</span>
+<span style="color:lightgray">INF: rpkiManifest registered. Its nid is 1061.</span>
+<span style="color:orange">WRN: H2jRmyC2M.mft: The signature algorithm has parameters.</span>
+<span style="color:red">ERR: H2jRmyC2M.mft: Certificate validation failed: certificate has expired</span>
+<span style="color:magenta">CRT: Programming error: Array size is 1 but array is NULL.</span>
+</code></pre>
+
+### `--output-file-name-format`
+
+- Type: Enumeration (`global-url`, `local-path`, `file-name`)
+- Availability: `argv` and TOML
+- Default: `global-url`
+
+Decides which version of file names should be printed during most debug/error messages.
+
+Suppose a certificate was downloaded from `rsync://rpki.example.com/foo/bar/baz.cer` into the local cache `repository/`:
+
+- `global-url`: Will print the certificate's name as `rsync://rpki.example.com/foo/bar/baz.cer`.
+- `local-path`: Will print the certificate's name as `repository/rpki.example.com/foo/bar/baz.cer`.
+- `file-name`: Will print the certificate's name as `baz.cer`.
+
+{% highlight bash %}
+$ {{ page.command }} --output-file-name-format global-url --local-repository tmp/repository/ (...)
+ERR: rsync://rpki.afrinic.net/repository/arin/uHxadfPZV0E6uZhkaUbUVB1RFFU.mft: Certificate validation failed: certificate has expired
+$ {{ page.command }} --output-file-name-format local-path --local-repository tmp/repository/ (...)
+ERR: tmp/repository/rpki.afrinic.net/repository/arin/uHxadfPZV0E6uZhkaUbUVB1RFFU.mft: Certificate validation failed: certificate has expired
+$ {{ page.command }} --output-file-name-format file-name --local-repository tmp/repository/ (...)
+ERR: uHxadfPZV0E6uZhkaUbUVB1RFFU.mft: Certificate validation failed: certificate has expired
+{% endhighlight %}
+
+### `--configuration-file`
+
+- Type: String (Path to file)
+- Availability: `argv`
+
+Path to a TOML file from which additional configuration will be read.
+
+The configuration options are mostly the same as the ones from the `argv` interface. Here's a full configuration file example:
+
+<pre><code>[root]
+<a href="#--local-repository">local-repository</a> = "/tmp/fort/repository"
+<a href="#--sync-strategy">sync-strategy</a> = "root"
+<a href="#--maximum-certificate-depth">maximum-certificate-depth</a> = 32
+
+[tal]
+<a href="#--tal">tal</a> = "/tmp/fort/example.tal"
+<a href="#--shuffle-uris">shuffle-uris</a> = true
+
+[rsync]
+<a href="#rsyncprogram">program</a> = "rsync"
+<a href="#rsyncarguments-recursive">arguments-recursive</a> = [ "--recursive", "--times", "$REMOTE", "$LOCAL" ]
+<a href="#rsyncarguments-flat">arguments-flat</a> = [ "--times", "$REMOTE", "$LOCAL" ]
+
+[output]
+<a href="#--color-output">color-output</a> = true
+<a href="#--output-file-name-format">output-file-name-format</a> = "file-name"
+<a href="#--roa-output-file">roa-output-file</a> = "/tmp/fort/roas.csv"
+</code></pre>
+
+The file acts as a collection of equivalent `argv` arguments; precedence is not modified:
+
+{% highlight bash %}
+$ cat cfg.toml
+[tal]
+tal = "bar"
+$ {{ page.command }} --tal="foo"                                              # tal is "foo"
+$ {{ page.command }} --tal="foo" --configuration-file="cfg.toml"              # tal is "bar"
+$ {{ page.command }} --tal="foo" --configuration-file="cfg.toml" --tal="qux"  # tal is "qux"
+
+$ cat a.toml
+[root]
+local-repository = "a"
+sync-strategy = "root"
+maximum-certificate-depth = 1
+
+$ cat b.toml
+[root]
+sync-strategy = "strict"
+maximum-certificate-depth = 2
+
+$ cat c.toml
+[root]
+maximum-certificate-depth = 4
+
+$ {{ page.command }} \
+       --configuration-file="a.toml" \
+       --configuration-file="b.toml" \
+       --configuration-file="c.toml"
+$ # local-repository is "a", sync-strategy is "strict" and maximum-certificate-depth is 4
+{% endhighlight %}
+
+### rsync.program
+
+- Type: String
+- Availability: TOML
+- Default: `"rsync"`
+
+Name of the program needed to invoke an rsync file transfer.
+
+### rsync.arguments-recursive
+
+- Type: String array
+- Availability: TOML
+- Default: `[ "--recursive", "--delete", "--times", "--contimeout=20", "$REMOTE", "$LOCAL" ]`
+
+Arguments needed by [`rsync.program`](#rsyncprogram) to perform a recursive rsync.
+
+FORT will replace `"$REMOTE"` with the remote URL it needs to download, and `"$LOCAL"` with the target local directory where the file is supposed to be dropped.
+
+### rsync.arguments-flat
+
+- Type: String array
+- Availability: TOML
+- Default: `[ "--times", "--contimeout=20", "$REMOTE", "$LOCAL" ]`
+
+Arguments needed by [`rsync.program`](#rsyncprogram) to perform a single-file rsync.
+
+FORT will replace `"$REMOTE"` with the remote URL it needs to download, and `"$LOCAL"` with the target local directory where the file is supposed to be dropped.
diff --git a/docs/img/chain.svg b/docs/img/chain.svg
new file mode 100644 (file)
index 0000000..6bc7589
--- /dev/null
@@ -0,0 +1,1026 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1112"
+   height="384"
+   viewBox="0 0 294.21664 101.6"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="chain.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker20934"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path20932" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="534.25773"
+     inkscape:cy="169.95574"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-global="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-text-baseline="true"
+     units="px">
+    <inkscape:grid
+       type="xygrid"
+       id="grid14"
+       spacingx="2.1166666"
+       spacingy="2.1166666"
+       empspacing="4"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="paper"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(0,-195.40001)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot25"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+       transform="scale(0.26458333)"><flowRegion
+         id="flowRegion27"><rect
+           id="rect29"
+           width="16"
+           height="80"
+           x="368"
+           y="146.51967" /></flowRegion><flowPara
+         id="flowPara31" /></flowRoot>    <g
+       id="g5708"
+       transform="translate(-6.3500005,4.2333417)">
+      <path
+         sodipodi:nodetypes="ccccccc"
+         inkscape:connector-curvature="0"
+         id="path19"
+         d="m 59.266667,284.3 c 1.058331,10e-6 2.116665,-1.05832 2.116664,-2.11666 1e-6,-1.05833 -1.058333,-2.11666 -2.116664,-2.11668 H 14.816668 c 1.058332,2e-5 2.116665,1.05835 2.116665,2.11668 0,1.05834 -1.058333,2.11667 -2.116665,2.11666 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         inkscape:connector-curvature="0"
+         id="path16"
+         d="M 10.583334,193.28333 C 11.641667,193.28334 12.7,194.34168 12.7,195.4 v 86.78334 c 0,1.05834 1.058333,2.11667 2.116666,2.11667 L 59.266667,284.3 c -1.058335,10e-6 -2.116669,-1.05832 -2.116663,-2.11666 l -6e-6,-86.78333 c 0,-1.05833 -1.058333,-2.11667 -2.116667,-2.11668 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path102"
+         d="m 42.333461,279.00834 -2.116795,8.46668 2.116666,4.23333 2.116667,-2.11667 1.29e-4,-6.35 z"
+         style="fill:#800000;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         inkscape:connector-curvature="0"
+         id="path17"
+         d="m 55.033331,193.28333 c -1.058332,1e-5 -2.116666,1.05835 -2.116664,2.11667 -2e-6,1.05834 1.058332,2.11668 2.116664,2.11667 H 10.583334 C 9.525,197.51668 8.4666667,196.45834 8.4666663,195.4 c 4e-7,-1.05832 1.0583337,-2.11666 2.1166677,-2.11667 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path104"
+         d="m 44.450128,283.24168 2.116665,-4.23334 2.116539,8.46668 -2.116667,4.23333 -2.116666,-2.11667 z"
+         style="fill:#800000;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:transform-center-y="-0.63777596"
+         inkscape:transform-center-x="-0.095051917"
+         d="m 47.598661,281.48221 -0.220072,0.89842 -0.735993,-0.37237 -0.391115,0.83821 -0.649205,-0.50879 -0.547128,0.7458 -0.537469,-0.62567 -0.682114,0.62474 -0.405079,-0.71851 -0.790888,0.47966 -0.257122,-0.78373 -0.869268,0.31614 -0.09928,-0.81883 -0.914242,0.14049 0.06237,-0.82247 -0.924084,-0.0406 0.221628,-0.79449 -0.898412,-0.22008 0.372367,-0.73599 -0.838215,-0.39111 0.508798,-0.64921 -0.745807,-0.54713 0.625675,-0.53747 -0.624737,-0.68211 0.718508,-0.40508 -0.479659,-0.79089 0.783729,-0.25712 -0.316148,-0.86927 0.818832,-0.0993 -0.140487,-0.91424 0.822467,0.0624 0.04057,-0.92409 0.794496,0.22163 0.220072,-0.89841 0.735993,0.37237 0.391115,-0.83822 0.649205,0.5088 0.547128,-0.74581 0.537469,0.62568 0.682114,-0.62474 0.405079,0.71851 0.790888,-0.47966 0.257122,0.78373 0.869268,-0.31615 0.09928,0.81883 0.914242,-0.14048 -0.06237,0.82246 0.924083,0.0406 -0.221628,0.79449 0.898413,0.22007 -0.372368,0.736 0.838215,0.39111 -0.508798,0.64921 0.745807,0.54712 -0.625675,0.53747 0.624737,0.68212 -0.718508,0.40508 0.479659,0.79088 -0.783729,0.25713 0.316148,0.86926 -0.818832,0.0993 0.140487,0.91424 -0.822467,-0.0624 -0.04057,0.92408 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="false"
+         sodipodi:arg2="1.0806917"
+         sodipodi:arg1="0.96961057"
+         sodipodi:r2="6.2212801"
+         sodipodi:r1="5.566525"
+         sodipodi:cy="276.89169"
+         sodipodi:cx="44.450119"
+         sodipodi:sides="32"
+         id="path95"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.33072916;stroke-miterlimit:4;stroke-dasharray:none"
+         sodipodi:type="star" />
+      <ellipse
+         cy="276.89169"
+         cx="44.450119"
+         id="path93"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.33072916;stroke-miterlimit:4;stroke-dasharray:none"
+         rx="5.2917867"
+         ry="5.2916675" />
+      <ellipse
+         cy="276.89169"
+         cx="44.450119"
+         id="path91"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.33072916;stroke-miterlimit:4;stroke-dasharray:none"
+         rx="3.1751201"
+         ry="3.1750009" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path311"
+         d="M 16.933331,265.25001 H 33.866663"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="display:inline;fill:none;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 35.98333,265.25001 H 52.916648"
+         id="path313"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cc" />
+      <text
+         id="text363"
+         y="267.89587"
+         x="44.450008"
+         style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+         xml:space="preserve"><tspan
+           style="stroke-width:0.26458332"
+           y="267.89587"
+           x="44.450008"
+           id="tspan361"
+           sodipodi:role="line">me</tspan></text>
+      <text
+         id="text5676"
+         y="203.86661"
+         x="34.925003"
+         style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+         xml:space="preserve"><tspan
+           style="font-size:4.23333359px;stroke-width:0.26458332"
+           y="203.86661"
+           x="34.925003"
+           id="tspan5674"
+           sodipodi:role="line">Certificate</tspan></text>
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5708"
+       id="use5710"
+       transform="translate(61.383331,-8.1633334e-6)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5708"
+       id="use5712"
+       transform="translate(122.76659,-8.1666667e-6)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use5712"
+       id="use5714"
+       transform="translate(61.383332)"
+       width="100%"
+       height="100%" />
+    <rect
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5663"
+       width="35.983345"
+       height="74.083336"
+       x="253.99998"
+       y="205.98335" />
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.39687499;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5735"
+       width="40.216652"
+       height="78.316673"
+       x="251.88333"
+       y="203.86668" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="270.93332"
+       y="214.44992"
+       id="text5751"><tspan
+         sodipodi:role="line"
+         id="tspan5749"
+         x="270.93332"
+         y="214.44992"
+         style="font-size:4.23333311px;stroke-width:0.26458332">ROA</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker20934)"
+       d="m 55.033329,237.73341 h 8.466665"
+       id="path1093"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1093"
+       id="use1473"
+       transform="translate(61.383332)"
+       width="100%"
+       height="100%" />
+    <use
+       height="100%"
+       width="100%"
+       transform="translate(122.76665)"
+       id="use1475"
+       xlink:href="#path1093"
+       y="0"
+       x="0" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1093"
+       id="use1477"
+       transform="translate(183.92883,0.00459596)"
+       width="100%"
+       height="100%" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="content"
+     style="display:inline"
+     transform="translate(0,-195.40001)">
+    <g
+       style="display:inline"
+       id="g3463"
+       transform="matrix(0.396875,0,0,0.396875,1.8524398,109.55119)">
+      <g
+         id="g3422">
+        <g
+           id="g1464"
+           transform="matrix(1.25,0,0,-1.25,41.687434,394.85376)">
+          <path
+             d="m 0,0 v 2.994 c 0,1.097 0.104,1.62 -1.037,1.62 -1.422,0 -1.318,-0.979 -1.318,-1.969 V 0 H -3.67 v 5.686 h 1.141 V 5.232 c 0.327,0.291 0.839,0.547 1.643,0.547 2.296,0 2.202,-1.445 2.202,-2.679 V 0 Z"
+             style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1466"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1468"
+           transform="matrix(1.25,0,0,-1.25,24.734034,393.61588)">
+          <path
+             d="m 0,0 c -0.898,0 -1.107,0.268 -1.107,0.757 0,0.607 0.257,0.746 1.06,0.746 H 1.48 C 1.48,0.513 1.352,0 0,0 m 0.326,4.789 c -0.948,0 -2.427,-0.311 -2.513,-1.32 -0.049,-0.245 0.058,-0.461 0.322,-0.614 0.349,-0.2 0.656,-0.11 0.852,0.229 0.017,0.03 0.032,0.059 0.044,0.088 0.327,0.517 0.745,0.498 1.225,0.498 1.153,0 1.201,-0.338 1.201,-1.095 H 0 c -1.212,0 -2.424,-0.186 -2.424,-1.84 0,-1.387 0.862,-1.818 2.214,-1.818 0.816,0 1.41,0.244 1.771,0.559 V -0.99 h 1.177 v 3.705 c 0,1.468 -0.885,2.074 -2.412,2.074"
+             style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1470"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1472"
+           transform="matrix(1.25,0,0,-1.25,50.757034,393.51351)">
+          <path
+             d="m 0,0 c -1.188,0 -1.328,0.466 -1.328,1.77 0,1.306 0.14,1.772 1.328,1.772 0.466,0 1.13,0 1.142,-0.629 H 1.144 C 1.146,2.524 1.367,2.295 1.767,2.295 c 0.403,0 0.623,0.232 0.623,0.624 0,0.031 -0.002,0.06 -0.004,0.09 -0.056,1.452 -1.394,1.698 -2.421,1.698 -2.366,0 -2.61,-1.305 -2.61,-2.913 0,-1.608 0.244,-2.959 2.61,-2.959 1.049,0 2.423,0.256 2.423,1.794 H 1.142 C 1.13,0 0.466,0 0,0"
+             style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1474"
+             inkscape:connector-curvature="0" />
+        </g>
+        <path
+           d="m 44.560784,387.66326 h 1.66875 v 7.20875 h -1.66875 z"
+           style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           id="path1476"
+           inkscape:connector-curvature="0" />
+        <g
+           id="g1478"
+           transform="matrix(1.25,0,0,-1.25,32.830134,393.51351)">
+          <path
+             d="m 0,0 c -1.188,0 -1.328,0.466 -1.328,1.77 0,1.306 0.14,1.772 1.328,1.772 0.466,0 1.131,0 1.142,-0.629 H 1.144 C 1.146,2.524 1.367,2.295 1.767,2.295 c 0.403,0 0.624,0.232 0.624,0.624 0,0.031 -0.002,0.06 -0.004,0.09 -0.056,1.452 -1.395,1.698 -2.421,1.698 -2.366,0 -2.611,-1.305 -2.611,-2.913 0,-1.608 0.245,-2.959 2.611,-2.959 1.048,0 2.423,0.256 2.423,1.794 H 1.142 C 1.131,0 0.466,0 0,0"
+             style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1480"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1482"
+           transform="matrix(1.25,0,0,-1.25,19.737434,392.73114)">
+          <path
+             d="M 0,0 0.004,6.035 H -1.313 V 0.374 c 0,-1.093 0.469,-1.719 1.313,-1.98 0.248,-0.077 0.53,-0.121 0.842,-0.137 v 1.15 C 0.199,-0.544 0.058,-0.34 0,0"
+             style="fill:#918f90;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1484"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+      <g
+         id="g3435">
+        <g
+           id="g1486"
+           transform="matrix(1.25,0,0,-1.25,59.986434,391.62514)">
+          <path
+             d="M 0,0 C -2.052,0 -3.182,1.18 -3.182,3.181 -3.182,5.234 -2,6.312 0,6.312 2.001,6.312 3.181,5.234 3.181,3.181 3.181,1.18 2.053,0 0,0"
+             style="fill:#e42015;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1488"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1490"
+           transform="matrix(1.25,0,0,-1.25,60.824534,389.16788)">
+          <path
+             d="M 0,0 C -1.232,0 -1.909,0.708 -1.909,1.909 -1.909,3.14 -1.201,3.787 0,3.787 1.201,3.787 1.908,3.14 1.908,1.909 1.908,0.708 1.231,0 0,0"
+             style="fill:#f8aa00;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1492"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1494"
+           transform="matrix(1.25,0,0,-1.25,61.326834,387.96626)">
+          <path
+             d="m 0,0 c -0.738,0 -1.145,0.425 -1.145,1.145 0,0.739 0.425,1.127 1.145,1.127 0.721,0 1.146,-0.388 1.146,-1.127 C 1.146,0.425 0.739,0 0,0"
+             style="fill:#0099ae;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1496"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1498"
+           transform="matrix(1.25,0,0,-1.25,58.930334,397.32626)">
+          <path
+             d="M 0,0 C -1.232,0 -1.909,0.708 -1.909,1.908 -1.909,3.14 -1.2,3.786 0,3.786 1.201,3.786 1.908,3.14 1.908,1.908 1.908,0.708 1.231,0 0,0"
+             style="fill:#0099ae;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1500"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1502"
+           transform="matrix(1.25,0,0,-1.25,58.537134,396.74776)">
+          <path
+             d="m 0,0 c -0.739,0 -1.145,0.425 -1.145,1.145 0,0.739 0.425,1.127 1.145,1.127 0.721,0 1.146,-0.388 1.146,-1.127 C 1.146,0.425 0.739,0 0,0"
+             style="fill:#ffe684;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1504"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1506"
+           transform="matrix(1.25,0,0,-1.25,58.375034,396.27489)">
+          <path
+             d="M 0,0 C -0.444,0 -0.688,0.254 -0.688,0.687 -0.688,1.13 -0.432,1.362 0,1.362 0.432,1.362 0.687,1.13 0.687,0.687 0.687,0.254 0.444,0 0,0"
+             style="fill:#f8aa00;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1508"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1510"
+           transform="matrix(1.25,0,0,-1.25,55.200734,384.01314)">
+          <path
+             d="M 0,0 C -1.231,0 -1.908,0.708 -1.908,1.909 -1.908,3.141 -1.2,3.787 0,3.787 1.201,3.787 1.91,3.141 1.91,1.909 1.91,0.708 1.232,0 0,0"
+             style="fill:#0099ae;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1512"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1514"
+           transform="matrix(1.25,0,0,-1.25,55.459834,383.55688)">
+          <path
+             d="m 0,0 c -0.738,0 -1.145,0.425 -1.145,1.145 0,0.739 0.425,1.127 1.145,1.127 0.721,0 1.146,-0.388 1.146,-1.127 C 1.146,0.425 0.739,0 0,0"
+             style="fill:#e42015;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1516"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1518"
+           transform="matrix(1.25,0,0,-1.25,55.674334,383.17513)">
+          <path
+             d="M 0,0 C -0.443,0 -0.687,0.255 -0.687,0.687 -0.687,1.13 -0.432,1.363 0,1.363 0.432,1.363 0.687,1.13 0.687,0.687 0.687,0.255 0.443,0 0,0"
+             style="fill:#f8aa00;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1520"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1522"
+           transform="matrix(1.25,0,0,-1.25,58.633134,379.31226)">
+          <path
+             d="m 0,0 c -0.739,0 -1.146,0.425 -1.146,1.145 0,0.739 0.426,1.127 1.146,1.127 0.721,0 1.146,-0.388 1.146,-1.127 C 1.146,0.425 0.739,0 0,0"
+             style="fill:#e42015;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1524"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1526"
+           transform="matrix(1.25,0,0,-1.25,58.398034,378.96501)">
+          <path
+             d="M 0,0 C -0.443,0 -0.688,0.255 -0.688,0.687 -0.688,1.13 -0.433,1.363 0,1.363 0.432,1.363 0.687,1.13 0.687,0.687 0.687,0.255 0.443,0 0,0"
+             style="fill:#ffe684;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1528"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1530"
+           transform="matrix(1.25,0,0,-1.25,57.962434,401.10776)">
+          <path
+             d="m 0,0 c -0.74,0 -1.146,0.425 -1.146,1.146 0,0.739 0.425,1.127 1.146,1.127 0.72,0 1.144,-0.388 1.144,-1.127 C 1.144,0.425 0.738,0 0,0"
+             style="fill:#f8aa00;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1532"
+             inkscape:connector-curvature="0" />
+        </g>
+        <g
+           id="g1534"
+           transform="matrix(1.25,0,0,-1.25,57.725934,400.76101)">
+          <path
+             d="m 0,0 c -0.443,0 -0.687,0.255 -0.687,0.687 0,0.445 0.255,0.677 0.687,0.677 0.433,0 0.686,-0.232 0.686,-0.677 C 0.686,0.255 0.443,0 0,0"
+             style="fill:#e42015;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path1536"
+             inkscape:connector-curvature="0" />
+        </g>
+      </g>
+    </g>
+    <use
+       style="display:inline"
+       x="0"
+       y="0"
+       xlink:href="#g3463"
+       id="use291"
+       transform="translate(21.200729,1.8441667e-4)"
+       width="100%"
+       height="100%" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="19.049999"
+       y="272.12927"
+       id="text363-3"><tspan
+         sodipodi:role="line"
+         id="tspan361-6"
+         x="19.049999"
+         y="272.12927"
+         style="stroke-width:0.26458332">lacnic</tspan></text>
+    <text
+       id="text511"
+       y="272.12927"
+       x="80.433319"
+       style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.26458332"
+         y="272.12927"
+         x="80.433319"
+         id="tspan509"
+         sodipodi:role="line">lacnic</tspan></text>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g3463"
+       id="use513"
+       transform="translate(61.383332)"
+       width="100%"
+       height="100%" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="141.81696"
+       y="272.12927"
+       id="text611"><tspan
+         sodipodi:role="line"
+         id="tspan609"
+         x="141.81696"
+         y="272.12927"
+         style="stroke-width:0.26458332">potato</tspan></text>
+    <g
+       id="g5535"
+       transform="translate(-26.987511,6.3500003)">
+      <path
+         sodipodi:nodetypes="czsssc"
+         inkscape:connector-curvature="0"
+         id="path632"
+         d="m 185.85366,261.31361 c 1.96828,0.75974 4.167,0.61455 5.96672,-0.48921 1.79972,-1.10376 2.05759,-5.5916 -0.30939,-6.90459 -1.18306,-0.65625 -2.75616,-0.66762 -3.91806,-0.55276 -1.16275,0.11494 -1.8392,0.3191 -3.03101,0.91782 -2.38276,1.19698 -1.70857,5.66078 1.29174,7.02874 z"
+         style="fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.21254431;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccccccccccccccccc"
+         inkscape:connector-curvature="0"
+         id="path646"
+         d="m 186.96876,254.13331 c -0.82959,-0.90482 -2.92833,-0.97702 -2.92833,-0.97702 0,0 2.19565,-0.26707 3.26743,0.70803 l 0.31571,-0.0234 -0.0234,-0.40925 -0.12094,-0.46088 0.5302,-0.12378 0.3274,0.80682 c 0.33206,-0.86136 0.75734,-1.17618 1.63703,-1.27449 -0.86497,0.21285 -1.01755,0.78109 -1.25116,1.56687 1.18031,-1.29989 3.62484,-1.32134 3.62484,-1.32134 0,0 -2.15629,0.23082 -3.20389,1.43824 1.8821,-0.93408 4.45104,-0.21856 4.45104,-0.21856 0,0 -2.4965,-0.35376 -4.53289,0.86173 0.60669,0.83867 0.31569,2.65432 0.31569,2.65432 0,0 -0.13572,-1.6482 -0.68992,-2.47891 l -0.72497,0.0819 -0.6665,-0.0234 c -1.18853,0.77295 -1.43824,2.59586 -1.43824,2.59586 0,0 0.013,-1.9657 1.22781,-2.8531 -2.18622,-0.94664 -4.56028,0.1637 -4.56028,0.1637 -0.004,-8.8e-4 1.7189,-1.43255 4.44337,-0.71334 z"
+         style="display:inline;fill:#008000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g5336"
+       transform="translate(-74.521799,5.9290508)">
+      <path
+         sodipodi:nodetypes="zzzzzzzzzzz"
+         inkscape:connector-curvature="0"
+         id="path5196"
+         d="m 171.91732,262.83379 c -0.75183,-0.21243 -0.85161,-0.55891 -1.21411,-0.94306 -0.36251,-0.38414 -0.97609,-0.85772 -1.17554,-1.40194 -0.19944,-0.54423 -0.40227,-0.48838 0.0428,-1.713 0.44507,-1.22461 2.40991,-4.18266 3.84099,-5.0835 1.43107,-0.90085 2.69804,-0.95835 3.26827,-0.83652 0.57024,0.12183 1.16731,0.55254 1.6326,1.20405 0.4653,0.6515 0.55767,1.412 0.52099,2.23147 -0.0367,0.81947 -0.22777,1.49188 -0.84385,2.53506 -0.61609,1.04319 -1.92175,2.90142 -3.12887,3.52416 -1.20712,0.62272 -2.19145,0.69571 -2.94328,0.48328 z"
+         style="display:inline;fill:#ecb64c;fill-opacity:1;stroke:none;stroke-width:0.06678628px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5198"
+         d="m 172.99781,257.90492 0.26003,-0.0764"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5200"
+         d="m 172.51038,256.70193 0.16151,-0.13476"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5202"
+         d="m 174.55654,257.15901 -0.082,0.10914"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5204"
+         d="m 176.20634,257.82087 0.15224,0.0728"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5206"
+         d="m 175.61852,258.36758 0.15856,0.15984"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5208"
+         d="m 176.05097,258.91341 -0.082,0.10914"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5210"
+         d="m 173.29481,259.0614 0.1288,0.012"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5212"
+         d="m 172.06626,261.31591 0.23649,-0.13696"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5214"
+         d="m 171.85228,261.90191 0.19585,0.16714"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5216"
+         d="m 170.17721,258.13562 0.1468,-0.20858"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5218"
+         d="m 171.38772,257.84305 0.13474,-0.0616"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5220"
+         d="m 171.17968,258.35548 0.2749,-0.002"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5222"
+         d="m 171.70576,257.95179 0.13906,-0.0681"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5224"
+         d="m 171.23831,257.47574 0.12335,-0.10859"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5226"
+         d="m 173.49547,255.7395 0.17697,0.0833"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5228"
+         d="m 173.8117,255.577 0.20463,-0.0236"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5230"
+         d="m 174.24677,256.36061 0.1287,0.18952"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5232"
+         d="m 173.98371,257.60215 0.13573,0.0659"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5234"
+         d="m 175.79706,255.27302 0.10939,0.29972"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5236"
+         d="m 177.21138,255.68344 0.0537,0.1917"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5238"
+         d="m 178.15222,255.86884 -0.0712,0.18975"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5240"
+         d="m 178.25055,256.28223 -0.26909,0.10632"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5242"
+         d="m 176.67532,257.02119 -0.0992,0.13566"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5244"
+         d="m 176.35211,259.03193 0.33676,-0.32291"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5246"
+         d="m 176.91028,258.8531 0.31803,0.10875"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5248"
+         d="m 177.25837,253.90279 0.2017,0.0937"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5250"
+         d="m 177.03435,253.52094 -0.0339,-0.31864"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5252"
+         d="m 176.4047,253.72879 -0.2226,-0.0939"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5254"
+         d="m 177.46731,253.87256 0.22223,0.11058"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5256"
+         d="m 174.53075,260.3095 0.0646,-0.0826"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5258"
+         d="m 175.02957,260.17328 0.0657,-0.13291"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5260"
+         d="m 174.99467,260.75872 0.0992,-0.13567"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5262"
+         d="m 175.22803,261.27132 0.0622,-0.15978"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path5264"
+         d="m 174.65701,261.9857 0.19215,-0.19792"
+         style="display:inline;fill:none;stroke:#b27b38;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5336"
+       id="use5338"
+       transform="translate(42.333332)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5535"
+       id="use5537"
+       transform="translate(41.804168)"
+       width="100%"
+       height="100%" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="203.20041"
+       y="272.12927"
+       id="text5541"><tspan
+         sodipodi:role="line"
+         id="tspan5539"
+         x="203.20041"
+         y="272.12927"
+         style="stroke-width:0.26458332">tomato</tspan></text>
+    <g
+       id="g5568"
+       transform="translate(-37.90158,7.4083337)">
+      <path
+         sodipodi:nodetypes="zzzzz"
+         inkscape:connector-curvature="0"
+         id="path5543"
+         d="m 255.37603,261.26607 c -0.56134,-0.32746 3.29744,-7.36662 4.41997,-8.04481 1.12254,-0.67819 1.44994,-0.8419 2.05798,-0.46772 0.60804,0.37418 0.79512,0.86529 0.0935,1.75396 -0.70158,0.88867 -6.01014,7.08603 -6.57149,6.75857 z"
+         style="fill:#ff6600;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path5564"
+         d="m 260.69726,250.59871 c 0,0 0.95359,0.31967 1.17409,1.0914 0.43446,-0.96357 0.79375,-3.04271 0.79375,-3.04271 0,0 0.32157,2.49282 -0.0661,3.24115 0.93318,-0.21335 2.81119,0.39689 2.81119,0.39689 0,0 -1.79112,0.092 -2.46209,0.56072 0.40656,0.0295 1.01355,0.49713 1.01355,0.49713 0,0 -1.44466,-0.37473 -2.16609,-0.11044 -0.19611,-0.052 -0.38243,-0.1254 -0.40377,-0.35213 0.14443,-0.85029 -0.69453,-2.28201 -0.69453,-2.28201 z"
+         style="fill:#008000;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.33072916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 263.5251,268.42501 h 16.93334"
+       id="path5665"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5568"
+       id="use5667"
+       transform="translate(49.21253,-1.0583336)"
+       width="100%"
+       height="100%" />
+    <text
+       id="text5739"
+       y="271.07083"
+       x="271.99179"
+       style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       xml:space="preserve"><tspan
+         style="stroke-width:0.26458332"
+         y="271.07083"
+         x="271.99179"
+         id="tspan5737"
+         sodipodi:role="line">carrot</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777791px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="10.583336"
+       y="216.56656"
+       id="text986"><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="216.56656"
+         style="stroke-width:0.26458332"
+         id="tspan988">Hello</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="220.97629"
+         style="stroke-width:0.26458332"
+         id="tspan993">My name is LACNIC.</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="225.386"
+         style="stroke-width:0.26458332"
+         id="tspan995" /><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="229.79573"
+         style="stroke-width:0.26458332"
+         id="tspan997">I own</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="234.20544"
+         style="stroke-width:0.26458332"
+         id="tspan999">- IPv4 0.0.0.0/0</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="238.61517"
+         style="stroke-width:0.26458332"
+         id="tspan1001">- IPv6 ::/0</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="243.02489"
+         style="stroke-width:0.26458332"
+         id="tspan1003">- AS 0-4294967295</tspan><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="247.43462"
+         style="stroke-width:0.26458332"
+         id="tspan1005" /><tspan
+         sodipodi:role="line"
+         x="10.583336"
+         y="251.84435"
+         style="stroke-width:0.26458332"
+         id="tspan1007">Sincerely,</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="84.666664"
+       y="205.98334"
+       id="text1011"><tspan
+         sodipodi:role="line"
+         id="tspan1009"
+         x="84.666664"
+         y="209.1046"
+         style="stroke-width:0.26458332" /></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="71.96666"
+       y="216.56656"
+       id="text1033"><tspan
+         sodipodi:role="line"
+         id="tspan1031"
+         x="71.96666"
+         y="216.56656"
+         style="stroke-width:0.26458332">Hello</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="220.97629"
+         style="stroke-width:0.26458332"
+         id="tspan1035">My name is Potato.</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="225.386"
+         style="stroke-width:0.26458332"
+         id="tspan1037" /><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="229.79573"
+         style="stroke-width:0.26458332"
+         id="tspan1039">I own</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="234.20544"
+         style="stroke-width:0.26458332"
+         id="tspan1041">- IPv4 192.0.2.0/24</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="238.61517"
+         style="stroke-width:0.26458332"
+         id="tspan1043">- IPv6 2001:db8::/96</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="243.02489"
+         style="stroke-width:0.26458332"
+         id="tspan1045">- AS 60000-70000</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="247.43462"
+         style="stroke-width:0.26458332"
+         id="tspan1047" /><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="251.84433"
+         style="stroke-width:0.26458332"
+         id="tspan1049">Here's LACNIC's</tspan><tspan
+         sodipodi:role="line"
+         x="71.96666"
+         y="256.25406"
+         style="stroke-width:0.26458332"
+         id="tspan1051">signature, proving it:</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="133.35028"
+       y="216.56656"
+       id="text1055"><tspan
+         sodipodi:role="line"
+         id="tspan1053"
+         x="133.35028"
+         y="216.56656"
+         style="stroke-width:0.26458332">Hello</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="220.97629"
+         style="stroke-width:0.26458332"
+         id="tspan1057">My name is Tomato.</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="225.386"
+         style="stroke-width:0.26458332"
+         id="tspan1059" /><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="229.79573"
+         style="stroke-width:0.26458332"
+         id="tspan1061">I own</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="234.20544"
+         style="stroke-width:0.26458332"
+         id="tspan1063">- IPv4 192.0.2.0/26</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="238.61517"
+         style="stroke-width:0.26458332"
+         id="tspan1065">- AS 64000-64100</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="243.02489"
+         style="stroke-width:0.26458332"
+         id="tspan1067" /><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="247.43462"
+         style="stroke-width:0.26458332"
+         id="tspan1069">Here's Potato's</tspan><tspan
+         sodipodi:role="line"
+         x="133.35028"
+         y="251.84433"
+         style="stroke-width:0.26458332"
+         id="tspan1071">signature, proving it:</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="194.73373"
+       y="216.56656"
+       id="text1075"><tspan
+         sodipodi:role="line"
+         id="tspan1073"
+         x="194.73373"
+         y="216.56656"
+         style="stroke-width:0.26458332">Hello</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="220.97629"
+         style="stroke-width:0.26458332"
+         id="tspan1077">My name is Carrot.</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="225.386"
+         style="stroke-width:0.26458332"
+         id="tspan1079" /><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="229.79573"
+         style="stroke-width:0.26458332"
+         id="tspan1081">I own</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="234.20544"
+         style="stroke-width:0.26458332"
+         id="tspan1083">- IPv4 192.0.2.0/30</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="238.61517"
+         style="stroke-width:0.26458332"
+         id="tspan1085">- AS 64050</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="243.02489"
+         style="stroke-width:0.26458332"
+         id="tspan1087" /><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="247.43462"
+         style="stroke-width:0.26458332"
+         id="tspan1089">Here's Tomato's</tspan><tspan
+         sodipodi:role="line"
+         x="194.73373"
+         y="251.84433"
+         style="stroke-width:0.26458332"
+         id="tspan1091">signature, proving it:</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="258.23334"
+       y="222.9166"
+       id="text1481"><tspan
+         sodipodi:role="line"
+         id="tspan1479"
+         x="258.23334"
+         y="222.9166"
+         style="stroke-width:0.26458332">64050</tspan><tspan
+         sodipodi:role="line"
+         x="258.23334"
+         y="227.32632"
+         style="stroke-width:0.26458332"
+         id="tspan1483">can originate</tspan><tspan
+         sodipodi:role="line"
+         x="258.23334"
+         y="231.73604"
+         style="stroke-width:0.26458332"
+         id="tspan1485">routes to</tspan><tspan
+         sodipodi:role="line"
+         x="258.23334"
+         y="236.14577"
+         style="stroke-width:0.26458332"
+         id="tspan1487">192.0.2.0/30</tspan></text>
+  </g>
+</svg>
diff --git a/docs/img/design.svg b/docs/img/design.svg
new file mode 100644 (file)
index 0000000..422393b
--- /dev/null
@@ -0,0 +1,731 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="800"
+   height="464"
+   viewBox="0 0 211.66669 122.76665"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="design.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4430"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path4428" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker2811"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path2809"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker1275"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path1273" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker56533"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path56531"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker53751"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path53749"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker37787"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path37785" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker1643"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1641"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker3997"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path3995"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker25461"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path25459"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker2311"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path2309"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker2149"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path2147"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker1999"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path1997"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1074"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1056"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="484.64395"
+     inkscape:cy="285.177"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-global="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-text-baseline="true"
+     units="px"
+     inkscape:snap-bbox="false"
+     inkscape:measure-start="0,0"
+     inkscape:measure-end="0,0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid14"
+       spacingx="1.0583333"
+       spacingy="1.0583333"
+       empspacing="4"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="paper"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(0,-174.23336)">
+    <rect
+       style="fill:#ffb380;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1049"
+       width="42.333332"
+       height="97.366669"
+       x="97.366653"
+       y="195.40004" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 8.4666663,190.10837 H 38.099999 v 33.86666 H 8.4666663"
+       id="path1150"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 8.4666663,208.10003 H 118.53333 v 28.37681 m 0,18.33469 v 21.02183 H 190.5"
+       id="path1152"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 173.56669,263.13336 h 29.63333"
+       id="path1118"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 203.20002,288.53336 h -29.63333 v -38.09999 h 16.93333"
+       id="path1120"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot25"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+       transform="scale(0.26458333)"><flowRegion
+         id="flowRegion27"><rect
+           id="rect29"
+           width="16"
+           height="80"
+           x="368"
+           y="146.51967" /></flowRegion><flowPara
+         id="flowPara31" /></flowRoot>    <path
+       style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 38.027059,194.04736 c -2.965093,0 -5.375482,2.02349 -5.53455,4.57144 -2.925385,0.13854 -5.248632,2.23792 -5.248632,4.82047 0,1.64727 0.945659,3.11068 2.389455,3.98444 -1.443796,0.87374 -2.389455,2.33713 -2.389455,3.98442 0,2.67209 2.487048,4.83825 5.554973,4.83825 0.814922,0 1.590121,-0.15234 2.287341,-0.4269 -0.0014,0.0473 0,0.0947 0,0.14231 0,2.67207 2.487048,4.83824 5.554973,4.83824 1.88692,0 3.550307,-0.82858 4.554262,-2.08115 0.921713,0.59222 2.054777,0.94275 3.288053,0.94275 3.067926,0 5.554973,-2.16618 5.554973,-4.83826 0,-0.29104 -0.04555,-0.57691 -0.102105,-0.8538 2.963787,-0.10268 5.330322,-2.23169 5.330322,-4.83824 0,-1.43091 -0.724832,-2.70733 -1.858464,-3.59312 0.351047,-0.63455 0.551412,-1.34742 0.551412,-2.09894 0,-2.67212 -2.487046,-4.83825 -5.554973,-4.83825 -0.334155,0 -0.66238,0.0397 -0.980289,0.0889 -0.117871,-2.58138 -2.56228,-4.64258 -5.554972,-4.64258 -1.533964,0 -2.915904,0.54746 -3.921158,1.42302 -1.005254,-0.87556 -2.387194,-1.42302 -3.921158,-1.42302 z"
+       id="path4188"
+       inkscape:connector-curvature="0" />
+    <g
+       style="display:inline"
+       id="g3150"
+       transform="matrix(0.26458333,0,0,0.26458333,112.15595,44.387082)">
+      <path
+         sodipodi:nodetypes="cczccc"
+         inkscape:connector-curvature="0"
+         id="path3789"
+         d="m 272.5,764.42468 v 19.84375 c 0,9.52811 12.85831,14.5 23.59375,14.5 10.73544,0 23.46875,-6.29616 23.46875,-16.15625 v -18.1875 z"
+         style="fill:#008080;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <circle
+         r="48.57143"
+         cy="235.21933"
+         cx="74.285713"
+         transform="matrix(0.48595445,0,0,0.29851852,260.00403,694.04082)"
+         id="path3771"
+         style="fill:#008080;stroke:#000000;stroke-width:2.62552762;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path3800"
+         d="m 283,757.36218 25,10"
+         style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cc"
+         inkscape:connector-curvature="0"
+         id="path3802"
+         d="m 308,757.36218 -25,10"
+         style="fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g3150"
+       id="use1065"
+       transform="translate(12.7,12.302984)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use1065"
+       id="use1067"
+       transform="translate(-12.699999,13.097015)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use1067"
+       id="use1069"
+       transform="translate(12.699999,12.302985)"
+       width="100%"
+       height="100%" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1071"
+       width="33.866661"
+       height="16.933338"
+       x="101.59998"
+       y="199.63336" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1073"
+       width="33.866673"
+       height="16.933325"
+       x="101.59998"
+       y="271.60004" />
+    <g
+       id="g1104"
+       transform="translate(69.849998,-10.054168)">
+      <path
+         sodipodi:nodetypes="csc"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 38.099999,244.08337 2e-6,4.76249 c -9e-6,1.169 4.738313,2.11667 10.583333,2.11667 5.84502,0 10.583342,-0.94767 10.583333,-2.11667 l -2e-6,-4.76249"
+         id="path1078"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="csccscc"
+         inkscape:connector-curvature="0"
+         d="m 59.266667,260.48754 c 9e-6,1.169 -4.738313,2.11667 -10.583333,2.11667 -5.84502,0 -10.583342,-0.94767 -10.583333,-2.11667 v 4.7625 c -9e-6,1.169 4.738313,2.11667 10.583333,2.11667 5.84502,0 10.583342,-0.94767 10.583333,-2.11667 z"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1084" />
+      <path
+         sodipodi:nodetypes="csccscc"
+         inkscape:connector-curvature="0"
+         d="m 59.266667,249.9042 c 9e-6,1.169 -4.738313,2.11667 -10.583333,2.11667 -5.84502,0 -10.583342,-0.94767 -10.583333,-2.11667 v 4.23333 c -9e-6,1.169 4.738313,2.11667 10.583333,2.11667 5.84502,0 10.583342,-0.94767 10.583333,-2.11667 z"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1090" />
+      <path
+         sodipodi:nodetypes="csccscc"
+         inkscape:connector-curvature="0"
+         d="m 59.266667,255.19587 c 9e-6,1.169 -4.738313,2.11667 -10.583333,2.11667 -5.84502,0 -10.583342,-0.94767 -10.583333,-2.11667 v 4.23333 c -9e-6,1.169 4.738313,2.11667 10.583333,2.11667 5.84502,0 10.583342,-0.94767 10.583333,-2.11667 z"
+         style="fill:#b3b3b3;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path1092" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path1075"
+         d="m 59.266667,244.08336 a 10.583333,2.1166666 0 0 1 -10.583333,2.11667 10.583333,2.1166666 0 0 1 -10.583333,-2.11667 10.583333,2.1166666 0 0 1 10.583333,-2.11667 10.583333,2.1166666 0 0 1 10.583333,2.11667 z"
+         style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:4.23333311px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="118.53333"
+       y="209.15836"
+       id="text1108"><tspan
+         sodipodi:role="line"
+         id="tspan1106"
+         x="118.53333"
+         y="209.15836"
+         style="stroke-width:0.26458332">Validator</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:4.23333311px;line-height:1.25;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+       x="118.53333"
+       y="279.00842"
+       id="text1112"><tspan
+         sodipodi:role="line"
+         id="tspan1110"
+         x="118.53333"
+         y="279.00842"
+         style="stroke-width:0.26458332">RTR</tspan><tspan
+         sodipodi:role="line"
+         x="118.53333"
+         y="284.30008"
+         style="stroke-width:0.26458332"
+         id="tspan1114">Server</tspan></text>
+    <g
+       id="use3037"
+       style="display:inline"
+       transform="matrix(0.26458333,0,0,0.26458333,1.8520831,132.1117)">
+      <path
+         style="display:inline;fill:#e3dedb;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         d="m 30,194.625 -30,9 v 40 l 30,-9 20,6 v -40 z"
+         id="path3046"
+         inkscape:connector-curvature="0" />
+      <rect
+         style="display:inline;fill:#ffe680;stroke:#000000;stroke-width:1.14458966;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3048"
+         width="20"
+         height="40"
+         x="0"
+         y="1000"
+         transform="matrix(1,0.3,0,1,0,-796.36218)" />
+      <rect
+         transform="matrix(1,-0.3,0,1,0,-796.36218)"
+         y="1012"
+         x="20"
+         height="40"
+         width="30"
+         id="rect3050"
+         style="display:inline;fill:#e3dedb;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         transform="matrix(1,0.3,0,1,0,-796.36218)"
+         y="1000"
+         x="0"
+         height="40"
+         width="20"
+         id="rect3052"
+         style="display:inline;fill:#e3dedb;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3054"
+         width="15"
+         height="3"
+         x="2.5"
+         y="210"
+         transform="skewY(16.699244)" />
+      <rect
+         transform="skewY(16.699244)"
+         y="216"
+         x="2.5"
+         height="3"
+         width="15"
+         id="rect3056"
+         style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         style="display:inline;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="rect3058"
+         width="15"
+         height="2"
+         x="2.5"
+         y="239"
+         transform="skewY(16.699244)" />
+      <circle
+         r="2.5"
+         cy="227"
+         cx="9.5"
+         style="fill:none;stroke:#000000;stroke-width:1.18426466;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         id="path3060"
+         transform="matrix(0.71302118,0,0,1,2.0088518,0)" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use3037"
+       id="use1144"
+       transform="translate(5.0000262e-8,16.933334)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use3037"
+       id="use1148"
+       transform="translate(5.0000021e-8,33.866667)"
+       width="100%"
+       height="100%" />
+    <g
+       transform="translate(37.287877,-88.051281)"
+       id="use5499"
+       style="display:inline">
+      <path
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 32.808329,280.0667 c 1.058333,0 2.116666,-1.05833 2.116666,-2.11666 0,-1.05834 -1.058333,-2.11667 -2.116666,-2.11667 H 20.10833 c 1.058334,0 2.116667,1.05833 2.116667,2.11667 0,1.05833 -1.058333,2.11666 -2.116667,2.11666 z"
+         id="path1169"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccc" />
+      <path
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 15.874997,266.30837 c 1.058334,0 2.116667,1.05834 2.11667,2.11664 l -3e-6,9.52503 c 0,1.05833 1.058333,2.11666 2.116666,2.11666 h 12.699999 c -1.058334,0 -2.116667,-1.05833 -2.116667,-2.11666 l 8e-6,-9.52503 c -8e-6,-1.0583 -1.058341,-2.11664 -2.116673,-2.11667 z"
+         id="path1171"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccc" />
+      <path
+         style="fill:#800000;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 24.341663,277.95003 -1.058333,5.29167 1.058333,2.11667 1.058333,-1.05834 v -6.35 z"
+         id="path1173"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccc" />
+      <path
+         style="fill:#800000;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 25.399996,277.95003 h 1.058334 l 1.058333,5.29167 -1.058333,2.11667 -1.058334,-1.05834 z"
+         id="path1175"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="cccccc" />
+      <path
+         sodipodi:type="star"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         id="path1177"
+         sodipodi:sides="32"
+         sodipodi:cx="25.400124"
+         sodipodi:cy="275.83334"
+         sodipodi:r1="3.8372068"
+         sodipodi:r2="4.1422229"
+         sodipodi:arg1="0.90835061"
+         sodipodi:arg2="0.99424258"
+         inkscape:flatsided="false"
+         inkscape:rounded="0"
+         inkscape:randomized="0"
+         d="m 27.760187,278.85894 -0.10198,0.44702 -0.533634,-0.0447 -0.187229,0.41854 -0.514654,-0.14798 -0.265283,0.37396 -0.475896,-0.24553 -0.333143,0.31502 -0.418851,-0.33366 -0.388199,0.24398 -0.345709,-0.40896 -0.428337,0.16355 -0.259282,-0.46855 -0.452015,0.0768 -0.16289,-0.51013 -0.458323,-0.0128 -0.06024,-0.5321 -0.447017,-0.10198 0.04473,-0.53364 -0.418532,-0.18723 0.147974,-0.51465 -0.373963,-0.26528 0.245535,-0.4759 -0.315024,-0.33314 0.33366,-0.41885 -0.243978,-0.3882 0.408963,-0.34571 -0.163556,-0.42834 0.468549,-0.25928 -0.07685,-0.45202 0.510129,-0.16289 0.01281,-0.45832 0.532106,-0.0602 0.101979,-0.44701 0.533634,0.0447 0.187229,-0.41853 0.514654,0.14798 0.265283,-0.37397 0.475897,0.24554 0.333142,-0.31503 0.418851,0.33366 0.388199,-0.24397 0.345709,0.40896 0.428338,-0.16356 0.259281,0.46855 0.452016,-0.0768 0.16289,0.51013 0.458322,0.0128 0.06024,0.53211 0.447017,0.10198 -0.04473,0.53363 0.418532,0.18723 -0.147975,0.51466 0.373964,0.26528 -0.245536,0.4759 0.315024,0.33314 -0.33366,0.41885 0.243978,0.3882 -0.408963,0.34571 0.163556,0.42834 -0.468549,0.25928 0.07685,0.45201 -0.51013,0.16289 -0.01281,0.45833 z"
+         inkscape:transform-center-x="-0.095051917"
+         inkscape:transform-center-y="-0.63777596" />
+      <ellipse
+         cx="25.400124"
+         cy="275.83334"
+         rx="3.175127"
+         ry="3.1749761"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         id="ellipse1179" />
+      <ellipse
+         ry="2.1166427"
+         rx="2.1167939"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         id="ellipse1181"
+         cx="25.400124"
+         cy="275.83334" />
+      <path
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 28.574995,266.30836 c -1.058333,0 -2.116666,1.05834 -2.116666,2.11667 0,1.05833 1.058333,2.11667 2.116666,2.11667 H 15.874997 c -1.058333,0 -2.116667,-1.05834 -2.116667,-2.11667 0,-1.05833 1.058334,-2.11667 2.116667,-2.11667 z"
+         id="path1183"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccc" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use5499"
+       id="use1219"
+       transform="translate(1.3412915,2.8554615)"
+       width="100%"
+       height="100%" />
+    <g
+       id="g5436"
+       transform="translate(0,5.2916666)">
+      <g
+         transform="translate(52.916666,-104.77496)"
+         id="g2459"
+         style="display:inline">
+        <rect
+           ry="0"
+           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.3175;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect2135"
+           width="8.4666662"
+           height="12.699995"
+           x="22.224997"
+           y="279.00836" />
+        <rect
+           style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3175;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect2133"
+           width="7.4083338"
+           height="11.641658"
+           x="22.754164"
+           y="279.53754" />
+      </g>
+      <use
+         height="100%"
+         width="100%"
+         transform="translate(2.1166667,2.1166648)"
+         id="use1221"
+         xlink:href="#g2459"
+         y="0"
+         x="0" />
+      <use
+         height="100%"
+         width="100%"
+         transform="translate(2.1166666,2.1166666)"
+         id="use1223"
+         xlink:href="#use1221"
+         y="0"
+         x="0" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use5499"
+       id="use1225"
+       transform="translate(3.1878112,4.8333434)"
+       width="100%"
+       height="100%" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2311)"
+       d="M 63.499997,203.8667 H 84.666663"
+       id="path1227"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path1271"
+       d="m 105.83333,220.80003 v 12.7"
+       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1275)"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2811)"
+       d="m 105.83333,254.66669 v 12.7"
+       id="path2807"
+       inkscape:connector-curvature="0" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path4426"
+       d="m 143.93333,271.60003 h 21.16666"
+       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4430)"
+       sodipodi:nodetypes="cc" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use5423"
+       transform="translate(6.3500006,11.641638)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5436"
+       id="use5438"
+       transform="translate(14.816665,39.158289)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5436"
+       id="use5440"
+       transform="translate(14.816667,73.024969)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g5436"
+       id="use5610"
+       transform="translate(69.849995,73.024954)"
+       width="100%"
+       height="100%" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="content"
+     style="display:inline"
+     transform="translate(0,-174.23336)" />
+</svg>
diff --git a/docs/img/tree.svg b/docs/img/tree.svg
new file mode 100644 (file)
index 0000000..6deb960
--- /dev/null
@@ -0,0 +1,757 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="732"
+   height="408"
+   viewBox="0 0 193.67502 107.94999"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="tree.svg">
+  <defs
+     id="defs2">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker56533"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path56531"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker53751"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path53749"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker37787"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path37785" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker1643"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1641"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker3997"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path3995"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker2353"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend"
+       inkscape:collect="always">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path2351"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker25461"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path25459"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker2311"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path2309"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker2149"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path2147"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker1999"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Mend">
+      <path
+         transform="matrix(-0.4,0,0,-0.4,-4,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         id="path1997"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1074"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path1056"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="379.80632"
+     inkscape:cy="231.24197"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-global="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1015"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-others="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-text-baseline="true"
+     units="px"
+     inkscape:snap-bbox="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid14"
+       spacingx="1.0583333"
+       spacingy="1.0583333"
+       empspacing="4"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="paper"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     transform="translate(0,-189.05003)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot25"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+       transform="scale(0.26458333)"><flowRegion
+         id="flowRegion27"><rect
+           id="rect29"
+           width="16"
+           height="80"
+           x="368"
+           y="146.51967" /></flowRegion><flowPara
+         id="flowPara31" /></flowRoot>    <g
+       id="g1049"
+       transform="translate(22.224998,-47.625002)">
+      <path
+         sodipodi:nodetypes="ccccccc"
+         inkscape:connector-curvature="0"
+         id="path19"
+         d="m 32.808329,280.0667 c 1.058333,0 2.116666,-1.05833 2.116666,-2.11666 0,-1.05834 -1.058333,-2.11667 -2.116666,-2.11667 H 20.10833 c 1.058334,0 2.116667,1.05833 2.116667,2.11667 0,1.05833 -1.058333,2.11666 -2.116667,2.11666 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         inkscape:connector-curvature="0"
+         id="path16"
+         d="m 15.874997,266.30837 c 1.058334,0 2.116667,1.05834 2.11667,2.11664 l -3e-6,9.52503 c 0,1.05833 1.058333,2.11666 2.116666,2.11666 h 12.699999 c -1.058334,0 -2.116667,-1.05833 -2.116667,-2.11666 l 8e-6,-9.52503 c -8e-6,-1.0583 -1.058341,-2.11664 -2.116673,-2.11667 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path102"
+         d="m 24.341663,277.95003 -1.058333,5.29167 1.058333,2.11667 1.058333,-1.05834 v -6.35 z"
+         style="fill:#800000;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         inkscape:connector-curvature="0"
+         id="path104"
+         d="m 25.399996,277.95003 h 1.058334 l 1.058333,5.29167 -1.058333,2.11667 -1.058334,-1.05834 z"
+         style="fill:#800000;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:transform-center-y="-0.63777596"
+         inkscape:transform-center-x="-0.095051917"
+         d="m 27.760187,278.85894 -0.10198,0.44702 -0.533634,-0.0447 -0.187229,0.41854 -0.514654,-0.14798 -0.265283,0.37396 -0.475896,-0.24553 -0.333143,0.31502 -0.418851,-0.33366 -0.388199,0.24398 -0.345709,-0.40896 -0.428337,0.16355 -0.259282,-0.46855 -0.452015,0.0768 -0.16289,-0.51013 -0.458323,-0.0128 -0.06024,-0.5321 -0.447017,-0.10198 0.04473,-0.53364 -0.418532,-0.18723 0.147974,-0.51465 -0.373963,-0.26528 0.245535,-0.4759 -0.315024,-0.33314 0.33366,-0.41885 -0.243978,-0.3882 0.408963,-0.34571 -0.163556,-0.42834 0.468549,-0.25928 -0.07685,-0.45202 0.510129,-0.16289 0.01281,-0.45832 0.532106,-0.0602 0.101979,-0.44701 0.533634,0.0447 0.187229,-0.41853 0.514654,0.14798 0.265283,-0.37397 0.475897,0.24554 0.333142,-0.31503 0.418851,0.33366 0.388199,-0.24397 0.345709,0.40896 0.428338,-0.16356 0.259281,0.46855 0.452016,-0.0768 0.16289,0.51013 0.458322,0.0128 0.06024,0.53211 0.447017,0.10198 -0.04473,0.53363 0.418532,0.18723 -0.147975,0.51466 0.373964,0.26528 -0.245536,0.4759 0.315024,0.33314 -0.33366,0.41885 0.243978,0.3882 -0.408963,0.34571 0.163556,0.42834 -0.468549,0.25928 0.07685,0.45201 -0.51013,0.16289 -0.01281,0.45833 z"
+         inkscape:randomized="0"
+         inkscape:rounded="0"
+         inkscape:flatsided="false"
+         sodipodi:arg2="0.99424258"
+         sodipodi:arg1="0.90835061"
+         sodipodi:r2="4.1422229"
+         sodipodi:r1="3.8372068"
+         sodipodi:cy="275.83334"
+         sodipodi:cx="25.400124"
+         sodipodi:sides="32"
+         id="path95"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         sodipodi:type="star" />
+      <ellipse
+         id="path93"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         ry="3.1749761"
+         rx="3.175127"
+         cy="275.83334"
+         cx="25.400124" />
+      <ellipse
+         cy="275.83334"
+         cx="25.400124"
+         id="path91"
+         style="fill:#ffff00;stroke:#000000;stroke-width:0.26458332;stroke-miterlimit:4;stroke-dasharray:none"
+         rx="2.1167939"
+         ry="2.1166427" />
+      <path
+         sodipodi:nodetypes="ccccccc"
+         inkscape:connector-curvature="0"
+         id="path17"
+         d="m 28.574995,266.30836 c -1.058333,0 -2.116666,1.05834 -2.116666,2.11667 0,1.05833 1.058333,2.11667 2.116666,2.11667 H 15.874997 c -1.058333,0 -2.116667,-1.05834 -2.116667,-2.11667 0,-1.05833 1.058334,-2.11667 2.116667,-2.11667 z"
+         style="fill:#ffffff;stroke:#000000;stroke-width:0.3175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker37787)"
+       d="m 47.624999,241.9667 v 6.35"
+       id="path1051"
+       inkscape:connector-curvature="0" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g1049"
+       id="use1411"
+       transform="translate(0.30092225,34.027606)"
+       width="100%"
+       height="100%" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path1467"
+       d="m 33.866667,241.9667 -4.233333,6.35"
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker53751)"
+       sodipodi:nodetypes="cc" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path1775"
+       d="m 61.38334,241.9667 4.233332,6.35"
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker56533)"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g2459"
+       transform="translate(21.166664,4.2333334)">
+      <rect
+         y="279.53754"
+         x="22.754164"
+         height="11.641658"
+         width="7.4083338"
+         id="rect2133"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3175;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <rect
+         y="279.00836"
+         x="22.224997"
+         height="12.699995"
+         width="8.4666662"
+         id="rect2135"
+         style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3175;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         ry="0" />
+    </g>
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use2461"
+       transform="translate(-9.5249993,9.7366666e-6)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use2463"
+       transform="translate(9.5250003,9.7366666e-6)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g1049"
+       id="use5499"
+       width="100%"
+       height="100%"
+       transform="translate(49.741658,-28.575002)" />
+    <path
+       inkscape:connector-curvature="0"
+       id="path2269"
+       d="m 80.433333,208.10003 -15.96242,6.29081"
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2353)"
+       sodipodi:nodetypes="cc" />
+    <path
+       sodipodi:nodetypes="cc"
+       style="fill:none;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3997)"
+       d="m 114.38742,208.04084 16.93335,6.35"
+       id="path3993"
+       inkscape:connector-curvature="0" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1051"
+       id="use14343"
+       transform="translate(0,31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1467"
+       id="use14345"
+       transform="translate(8.4666659,31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1775"
+       id="use14347"
+       transform="translate(-8.4666703,31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use1411"
+       id="use14541"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use14543"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2461"
+       id="use14545"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2463"
+       id="use14547"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14343"
+       id="use14549"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14345"
+       id="use14551"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14347"
+       id="use14553"
+       width="100%"
+       height="100%"
+       transform="translate(-31.749998)" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use1411"
+       id="use14555"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use14557"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2461"
+       id="use14559"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2463"
+       id="use14561"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14343"
+       id="use14563"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14345"
+       id="use14565"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14347"
+       id="use14567"
+       transform="translate(31.749998)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g1049"
+       id="use56613"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1051"
+       id="use56615"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use1411"
+       id="use56617"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1467"
+       id="use56619"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path1775"
+       id="use56621"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#g2459"
+       id="use56623"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2461"
+       id="use56625"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use2463"
+       id="use56627"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14343"
+       id="use56629"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14345"
+       id="use56631"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14347"
+       id="use56633"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14541"
+       id="use56635"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14543"
+       id="use56637"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14545"
+       id="use56639"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14547"
+       id="use56641"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14549"
+       id="use56643"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14551"
+       id="use56645"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14553"
+       id="use56647"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14555"
+       id="use56649"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14557"
+       id="use56651"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14559"
+       id="use56653"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14561"
+       id="use56655"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14563"
+       id="use56657"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14565"
+       id="use56659"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#use14567"
+       id="use56661"
+       transform="translate(99.483333)"
+       width="100%"
+       height="100%" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="content"
+     style="display:inline"
+     transform="translate(0,-189.05003)" />
+</svg>
diff --git a/docs/index.md b/docs/index.md
new file mode 100644 (file)
index 0000000..7ed79c7
--- /dev/null
@@ -0,0 +1,12 @@
+---
+---
+
+# Home
+
+## Introduction
+
+The documentation can be found [here](doc/index.html).
+
+## Status
+
+The first release of Fort is planned to be released later this month.