diff options
| -rw-r--r-- | coturn.html | 93 | ||||
| -rw-r--r-- | ejabberd.html | 188 | ||||
| -rw-r--r-- | peertube.html | 3 | ||||
| -rw-r--r-- | pix/ejabberd-admin.jpg | bin | 0 -> 22266 bytes | |||
| -rw-r--r-- | pix/ejabberd-login.jpg | bin | 0 -> 18399 bytes | |||
| -rw-r--r-- | pix/matrix.svg | 48 | ||||
| -rw-r--r-- | pix/webrtc.svg | 16 |
7 files changed, 346 insertions, 2 deletions
diff --git a/coturn.html b/coturn.html new file mode 100644 index 0000000..6bbd89e --- /dev/null +++ b/coturn.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<html lang=en> + <head> + <title>Coturn – LandChad.net</title> + <meta charset="utf-8"/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> + <link rel='stylesheet' type='text/css' href='style.css'> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel='alternate' type='application/rss+xml' title='Land Chad RSS' href='/rss.xml'> + </head> +<body> + <header><h1>Coturn</h1></header> + <nav></nav> + <main> + + <img class=titleimg src="pix/webrtc.svg" alt="WebRTC logo"> + + <p><a href="https://github.com/coturn/coturn">Coturn</a> is a libre <strong>STUN</strong> and <strong>TURN</strong> server software that allows users of chat protcols (Such as <a href="xmpp.html">XMPP</a> and <a href="matrix.html">Matrix</a>) to perform WebRTC <strong>voice and video calls</strong> despite them being behind NATs.</p> + + <p>Almost every self-hosted voice and video conferencing program (such as <a href="jitsi.html">Jitsi</a> and <a href="nextcloud.html">Nextcloud's</a> Talk app) will <strong>require</strong> Coturn or some other equivalent turnserver to function properly.</p> + + <h2>Installation</h2> + + <p>Coturn is available in the Debian repositories:</p> + + <pre><code>apt install coturn</code></pre> + + <h2>Configuration</h2> + + <h3>Base configuration</h3> + + <p>Coturn's configuration file is <code>/etc/turnserver.conf</code>. There are a few aspects that need to be changed in order to get a fully-functioning turnserver.</p> + + <p>Here is an example of some sane defaults:</p> + + <pre><code>server-name=<strong>turn.example.org</strong> +realm=<strong>turn.example.org</strong> +listening-ip=<strong>your_public_ip</strong> + +listening-port=3478 +min-port=10000 +max-port=20000 + +## The "verbose" option is useful for debugging issues +verbose</code></pre> + + <h3>Authentication</h3> + + <p>There are two options for authentication on a turnserver:</p> + <ol> + <li><strong>Usernames</strong> and <strong>passwords,</strong></li> + <li>or <strong>authentication secrets.</strong></li> + </ol> + + <p>Depending on what self-hosted service is being used in conjunction with Coturn, you may need one or the other of these two options.</p> + + <h4>Usernames and Passwords</h4> + + <p>To utilize username and password authentication with Coturn, add the following configuration in <code>turnserver.conf</code>:</p> + + <pre><code>lt-cred-mech +user=<strong>username</strong>:<strong>password</strong></code></pre> + + <h4>Authentication Secrets</h4> + + <p>To utilize authentication secrets with Coturn, add the following configuration in <code>turnserver.conf</code>:</p> + + <pre><code>use-auth-secret +static-auth-secret=<strong>your_auth_secret</strong></code></pre> + + <h2>TURNS (TLS Encryption)</h2> + + <p>Some self-hosted services (such as Matrix and XMPP) may support the use of <strong>TURNS:</strong> An encrypted version of TURN, which allows for WebRTC connections to be established with the use of an encrypted TLS tunnel, just like HTTPS allows for encrypted viewing of websites.</p> + + <p>To utilize TURNS, certificates need to be declared for <strong>turn.example.org</strong> in <code>turnserver.conf</code>: + <pre><code>cert=/etc/letsencrypt/live/<strong>turn.example.org</strong>/fullchain.pem +pkey=/etc/letsencrypt/live/<strong>turn.example.org</strong>/privkey.pem</pre></code> + + <h2>Starting Coturn</h2> + + <p>After all configuration changes are complete, Coturn can be started with its systemd daemon:</p> + + <pre><code>systemctl restart coturn</code></pre> + + <p>Congratulations! You've successfully setup a Coturn server!</p> + + <hr> + <p><em>Written by <a href="https://denshi.org">Denshi.</a> Donate Monero <a href="https://denshi.org/donate.html">here</a> <a href="https://denshi.org/images/monero.jpg">[QR]</a></em></p> + + </main> + <footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><a href="index.html"><li><img src="pix/chad.gif" alt="chad"></li></a><a href="rss.xml"><li><img src="pix/rss.svg" alt="RSS"></li></a><a href="pix/btc.png"><li><img src="pix/btc.svg" alt="BTC"></li></a><a href="pix/xmr.png"><li><img src="pix/xmr.svg" alt="XMR"></li></a><a href="https://github.com/lukesmithxyz/landchad"><li><img src="pix/git.svg" alt="Github"></li></a></footer> +</body> +</html> diff --git a/ejabberd.html b/ejabberd.html new file mode 100644 index 0000000..b758e77 --- /dev/null +++ b/ejabberd.html @@ -0,0 +1,188 @@ +<!DOCTYPE html> +<html lang=en> + <head> + <title>XMPP Server (ejabberd) – LandChad.net</title> + <meta charset="utf-8"/> + <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> + <link rel='stylesheet' type='text/css' href='style.css'> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel='alternate' type='application/rss+xml' title='Land Chad RSS' href='/rss.xml'> + </head> +<body> + <header><h1>XMPP Server (ejabberd)</h1></header> + <nav></nav> + <main> + + <img class=titleimg src="pix/xmpp.svg" alt="XMPP logo and icon"> + + <p> + <a href="https://ejabberd.im">Ejabberd</a> is a server for the XMPP protocol written in Erlang. + It's easier to configure and setup than <a href="xmpp.html">Prosody</a> due to having most of its modules built-in and pre-configured by default. + </p> + + <h2>Prerequisites</h2> + <h3>Subdomains</h3> + <p> + Ejabberd presumes that you have already created all the <strong>required and optional subdomains</strong> for its operation prior to running it. + </p> + + <p>Depending on the usecase, you may need any or all of the following domains for XMPP functionality:<p> + <ul> + <li><strong>example.org</strong> - Your XMPP hostname</li> + <li><strong>conference.example.org</strong> - For Multi User Chats (MUCs)</li> + <li><strong>upload.example.org</strong> - For file upload support</li> + <li><strong>proxy.example.org</strong> - For SOCKS5 proxy support</li> + <li><strong>pubsub.example.org</strong> - For publish-subscribe support</li> + </ul> + + <p>This guide will assume <strong>all these subdomains</strong> have been created.</p> + + <h2>Installation</h2> + <p>Ejabberd is available in the Debian repositories:</p> + <pre><code>apt install ejabberd</code></pre> + + <h2>Configuration</h2> + <p>The ejabberd server is configured in <code>/etc/ejabberd/ejabberd.yml</code>. Changes are only applied by restarting the ejabberd daemon in systemd:</p> + <pre><code>systemctl restart ejabberd</code></pre> + + <h3>Hostnames</h3> + <p>The <strong>XMPP hostname</strong> is specified in the <code>hosts</code> section of <code>ejabberd.yml</code>:</p> + + <pre><code>hosts: + - <strong>example.org</strong></code></pre> + + <h3>Certificates</h3> + <p>Unlike <a href="https://prosody.im">Prosody,</a> ejabberd doesn't come equipped with a script that can automatically copy over the relevant certificates to a directory where the ejabberd user can read them.</p> + + <p>One way of organizing certificates for ejabberd is to have them stored in <code>/etc/ejabberd/certs</code>, with each domain having a separate directory for both the fullchain cert and private key.</p> + + <p>Using certbot, this process can be easily automated with this one-liner:</p> + <pre><code>$DOMAIN=<strong>subdomain.example.org</strong> +certbot --nginx -d $DOMAIN certonly; mkdir /etc/ejabberd/certs/$DOMAIN; cp /etc/letsencrypt/live/$DOMAIN/fullchain.pem /etc/ejabberd/certs/$DOMAIN; cp /etc/letsencrypt/live/$DOMAIN/privkey.pem /etc/ejabberd/certs/$DOMAIN</code></pre> + + <p>This should be ran with your XMPP hostname <strong>(example.org)</strong> and repeated for all your desired subdomains.</p> + + <p>To enable the use of all these certificates in ejabberd, the following configuration is necessary:</p> + + <pre><code>certfiles: + - "/etc/ejabberd/certs/*/*.pem"</code></pre> + + <h3>Admin User</h3> + + <p>The <strong>admin user</strong> can be specified in <code>ejabberd.yml</code> under the <code>acl</code> section:</p> + + <pre><code>acl: + admin: + user: <strong>admin</strong></code></pre> + + <p>This would make <strong>admin@example.org</strong> the user with administrator privileges.</p> + + <h3>Message Archives</h3> + + <p>The ejabberd server supports keeping archives of messages through its <code>mod_mam</code> module. This can be enabled by uncommenting the following lines:</p> + + <pre><code>mod_mam: + assume_mam_usage: true + default: always</code></pre> + + <h2>Database</h2> + <h3>Why use a database?</h3> + <p>In the <code>mod_mam</code> section of the ejabberd config file, the following message is in comments:</p> + + <pre><code>mod_mam: + ## Mnesia is limited to 2GB, better to use an <strong>SQL backend</strong> + ## For small servers SQLite is a good fit and is very easy + ## to configure. Uncomment this when you have SQL configured: + ## <strong>db_type: sql</strong></code></pre> + + <p>As these comments imply, an <strong>SQL backend</strong> is strongly recommended if you wish to use your ejabberd server for anything more than just testing. Ejabberd supports <strong>MySQL, SQLite</strong> and <strong>PostgreSQL.</strong></p> + + <p>While all of those are suitable choices, the best database system to use is PostgreSQL. It's the same database backend used by <a href="peertube.html">PeerTube</a> and <a href="matrix.html">Matrix,</a> making it the most convenient option if you're already running those too.</p> + + <h3>Installing PostgreSQL</h3> + + <p>PostgreSQL is available in the Debian repositories:</p> + <pre><code>apt install postgresql</code></pre> + + <p>Start the PostgreSQL daemon to begin using it:</p> + <pre><code>systemctl start postgresql</code></pre> + + <h3>Creating the Database</h3> + <p>To create the database, first create a PostgreSQL user for ejabberd:</p> + + <pre><code>su -c "createuser --pwprompt ejabberd" postgres</code></pre> + + <p>Then, create the database and make <code>ejabberd</code> its owner:</p> + + <pre><code>su -c "psql -c 'CREATE DATABASE ejabberd OWNER ejabberd;'" postgres</code></pre> + + <h3>Importing Database Scheme</h3> + + <p>Ejabberd doesn't create the database scheme by default; It has to be imported into the database before use.</p> + + <pre><code>su -c "curl -s https://raw.githubusercontent.com/processone/ejabberd/master/sql/pg.sql | psql ejabberd" postgres</code></pre> + + <h3>Configuring ejabberd to use PostgreSQL</h3> + <p>Finally, add the following configuration to <code>ejabberd.yml</code>:</p> + + <pre><code>sql_type: pgsql +sql_server: "localhost" +sql_database: <strong>"ejabberd"</strong> +sql_username: <strong>"ejabberd"</strong> +sql_password: <strong>"psql_password"</strong></code></pre> + + <p>Once you've ensured your database name, username and password are all correct, enable SQL storage for <code>mod_mam</code>:</p> + + <pre><code>mod_mam: + ## (Other parameters) + db_type: <strong>sql</strong></code></pre> + + <h2>Using ejabberd</h2> + <h3>Registering the Admin User</h3> + <p>To begin using ejabberd, firstly start the ejabberd daemon:</p> + + <pre><code>systemctl restart ejabberd</code></pre> + + <p>Then, using <code>ejabberdctl</code> as the ejabberd user, register the admin user which is set in <code>ejabberd.yml</code>:</p> + + <pre><code>su -c "ejabberdctl register <strong>admin example.org password</strong>" ejabberd</code></pre> + + <p>This will create the user <strong>admin@example.org.</strong></p> + + <h3>Using the Web Interface</h3> + + <p>By default, ejabberd has a web interface accessible from <strong>http://example.org:5280/admin</strong>. When accessing this interface, you will be prompted for the admin credentials:</p> + + <img src="pix/ejabberd-login.jpg" height="260px"> + + <p>After signing in with the admin credentials, you will be able to manage your ejabberd server from this web interface:</p> + + <img src="pix/ejabberd-admin.jpg" height="300px"> + + <h2>TURN & STUN for Calls</h2> + + <p>Ejabberd supports the <strong>TURN</strong> and <strong>STUN</strong> protocols to allow internet users behind NATs to perform voice and video calls with other XMPP users.</p> + + <p>Firstly, setup a TURN and STUN server with <a href="coturn.html">Coturn,</a> using an <strong>authentication secret.</strong></p> + + <p>Then, edit <code>mod_stun_disco</code> to contain the appropriate information for your turnserver:</p> + + <pre><code> mod_stun_disco: + secret: <strong>"your_auth_secret"</strong> + services: + - + host: <strong>turn.example.org</strong> + type: stun + - + host: <strong>turn.example.org</strong> + type: turn</code></pre> + +<p>And with that, you've successfully setup your ejabberd XMPP server!</p> + + <hr> + <p><em>Written by <a href="https://denshi.org">Denshi.</a> Donate Monero <a href="https://denshi.org/donate.html">here</a> <a href="https://denshi.org/images/monero.jpg">[QR]</a></em></p> + + </main> + <footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><a href="index.html"><li><img src="pix/chad.gif" alt="chad"></li></a><a href="rss.xml"><li><img src="pix/rss.svg" alt="RSS"></li></a><a href="pix/btc.png"><li><img src="pix/btc.svg" alt="BTC"></li></a><a href="pix/xmr.png"><li><img src="pix/xmr.svg" alt="XMR"></li></a><a href="https://github.com/lukesmithxyz/landchad"><li><img src="pix/git.svg" alt="Github"></li></a></footer> +</body> +</html> diff --git a/peertube.html b/peertube.html index 27578d0..1921821 100644 --- a/peertube.html +++ b/peertube.html @@ -215,8 +215,7 @@ NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-passw </p> <hr> - <p><em>Written by <a href="https://denshi.live">Denshi.</a> Donate Monero <a href="https://denshi.live/donate.html">here</a> <a href="https://denshi.live/images/monero.png">[QR]</a></em></p> - + <p><em>Written by <a href="https://denshi.org">Denshi.</a> Donate Monero <a href="https://denshi.org/donate.html">here</a> <a href="https://denshi.org/images/monero.jpg">[QR]</a></em></p> </main> <footer><a href="https://landchad.net">LandChad.net</a></br>Because Everyone should be an Internet LandChad.</br><a href="index.html"><li><img src="pix/chad.gif" alt="chad"></li></a><a href="rss.xml"><li><img src="pix/rss.svg" alt="RSS"></li></a><a href="donate-bitcoin.html"><li><img src="pix/btc.svg" alt="BTC"></li></a><a href="donate-monero.html"><li><img src="pix/xmr.svg" alt="XMR"></li></a><a href="https://github.com/lukesmithxyz/landchad"><li><img src="pix/git.svg" alt="Github"></li></a></footer> </body> diff --git a/pix/ejabberd-admin.jpg b/pix/ejabberd-admin.jpg Binary files differnew file mode 100644 index 0000000..9bbd4ed --- /dev/null +++ b/pix/ejabberd-admin.jpg diff --git a/pix/ejabberd-login.jpg b/pix/ejabberd-login.jpg Binary files differnew file mode 100644 index 0000000..8904aaf --- /dev/null +++ b/pix/ejabberd-login.jpg diff --git a/pix/matrix.svg b/pix/matrix.svg new file mode 100644 index 0000000..9a8b8dd --- /dev/null +++ b/pix/matrix.svg @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="793.322px" height="340.809px" viewBox="0 0 793.322 340.809" fill="#fff" enable-background="new 0 0 793.322 340.809" + xml:space="preserve"> +<path d="M10.875,9.711v321.386h23.13v7.711H1.999V2.001h32.006v7.71H10.875z"/> +<path d="M99.988,111.595v16.264h0.463c4.338-6.191,9.563-10.998,15.684-14.406c6.117-3.402,13.129-5.11,21.027-5.11 + c7.588,0,14.521,1.475,20.793,4.415c6.274,2.945,11.038,8.131,14.291,15.567c3.56-5.265,8.4-9.913,14.521-13.94 + c6.117-4.025,13.358-6.042,21.724-6.042c6.351,0,12.234,0.776,17.66,2.325c5.418,1.549,10.065,4.027,13.938,7.434 + c3.869,3.41,6.889,7.863,9.062,13.357c2.167,5.504,3.253,12.122,3.253,19.869v80.385H219.41v-68.074 + c0-4.025-0.154-7.82-0.465-11.385c-0.313-3.56-1.161-6.656-2.555-9.293c-1.395-2.631-3.45-4.724-6.157-6.274 + c-2.711-1.543-6.391-2.322-11.037-2.322s-8.403,0.896-11.269,2.671c-2.868,1.784-5.112,4.109-6.737,6.971 + c-1.626,2.869-2.711,6.12-3.252,9.762c-0.545,3.638-0.814,7.318-0.814,11.035v66.91h-32.991v-67.375c0-3.562-0.081-7.087-0.23-10.57 + c-0.158-3.487-0.814-6.7-1.978-9.645c-1.162-2.94-3.099-5.304-5.809-7.088c-2.711-1.775-6.699-2.671-11.965-2.671 + c-1.551,0-3.603,0.349-6.156,1.048c-2.556,0.697-5.036,2.016-7.435,3.949c-2.404,1.938-4.454,4.726-6.158,8.363 + c-1.705,3.642-2.556,8.402-2.556,14.287v69.701h-32.99V111.595H99.988z"/> +<path d="M273.544,129.255c3.405-5.113,7.744-9.215,13.012-12.316c5.264-3.097,11.186-5.303,17.771-6.621 + c6.582-1.315,13.205-1.976,19.865-1.976c6.042,0,12.158,0.428,18.354,1.277c6.195,0.855,11.85,2.522,16.962,4.997 + c5.111,2.477,9.292,5.926,12.546,10.338c3.253,4.414,4.879,10.262,4.879,17.543v62.494c0,5.428,0.31,10.611,0.931,15.567 + c0.615,4.959,1.701,8.676,3.251,11.153H347.66c-0.621-1.86-1.126-3.755-1.511-5.693c-0.39-1.933-0.661-3.908-0.813-5.923 + c-5.267,5.422-11.465,9.217-18.585,11.386c-7.127,2.163-14.407,3.251-21.842,3.251c-5.733,0-11.077-0.698-16.033-2.09 + c-4.958-1.395-9.293-3.562-13.01-6.51c-3.718-2.938-6.622-6.656-8.713-11.147s-3.138-9.84-3.138-16.033 + c0-6.813,1.199-12.43,3.604-16.84c2.399-4.417,5.495-7.939,9.295-10.575c3.793-2.632,8.129-4.607,13.01-5.923 + c4.878-1.315,9.795-2.358,14.752-3.137c4.957-0.772,9.835-1.393,14.638-1.857c4.801-0.466,9.062-1.164,12.779-2.093 + c3.718-0.929,6.658-2.282,8.829-4.065c2.165-1.781,3.172-4.375,3.02-7.785c0-3.56-0.58-6.389-1.742-8.479 + c-1.161-2.09-2.711-3.719-4.646-4.88c-1.937-1.161-4.183-1.936-6.737-2.325c-2.557-0.382-5.309-0.58-8.248-0.58 + c-6.506,0-11.617,1.395-15.335,4.183c-3.716,2.788-5.889,7.437-6.506,13.94h-32.991 + C268.199,140.794,270.132,134.363,273.544,129.255z M338.713,175.838c-2.09,0.696-4.337,1.275-6.736,1.741 + c-2.402,0.465-4.918,0.853-7.551,1.161c-2.635,0.313-5.268,0.698-7.899,1.163c-2.48,0.461-4.919,1.086-7.317,1.857 + c-2.404,0.779-4.495,1.822-6.274,3.138c-1.784,1.317-3.216,2.985-4.3,4.994c-1.085,2.014-1.626,4.571-1.626,7.668 + c0,2.94,0.541,5.422,1.626,7.431c1.084,2.017,2.558,3.604,4.416,4.765s4.025,1.976,6.507,2.438c2.475,0.466,5.031,0.698,7.665,0.698 + c6.505,0,11.537-1.082,15.103-3.253c3.561-2.166,6.192-4.762,7.899-7.785c1.702-3.019,2.749-6.072,3.137-9.174 + c0.384-3.097,0.58-5.576,0.58-7.434v-12.316C342.547,174.173,340.805,175.14,338.713,175.838z"/> +<path d="M463.825,111.595v22.072h-24.161v59.479c0,5.573,0.928,9.292,2.788,11.149c1.856,1.859,5.576,2.788,11.152,2.788 + c1.859,0,3.638-0.076,5.343-0.232c1.703-0.152,3.33-0.388,4.878-0.696v25.557c-2.788,0.465-5.887,0.773-9.293,0.931 + c-3.407,0.149-6.737,0.23-9.99,0.23c-5.111,0-9.953-0.35-14.521-1.048c-4.571-0.695-8.597-2.047-12.081-4.063 + c-3.486-2.011-6.236-4.88-8.248-8.597c-2.016-3.714-3.021-8.595-3.021-14.639v-70.859h-19.98v-22.072h19.98V75.583h32.992v36.012 + H463.825z"/> +<path d="M510.988,111.595V133.9h0.465c1.546-3.72,3.636-7.163,6.272-10.341c2.634-3.172,5.652-5.885,9.06-8.131 + c3.405-2.242,7.047-3.985,10.923-5.228c3.868-1.237,7.898-1.859,12.081-1.859c2.168,0,4.566,0.39,7.202,1.163v30.67 + c-1.551-0.312-3.41-0.584-5.576-0.814c-2.17-0.233-4.26-0.35-6.274-0.35c-6.041,0-11.152,1.01-15.332,3.021 + c-4.182,2.014-7.55,4.761-10.107,8.247c-2.555,3.487-4.379,7.55-5.462,12.198c-1.083,4.645-1.625,9.682-1.625,15.102v54.133h-32.991 + V111.595H510.988z"/> +<path d="M570.93,93.007V65.824h32.994v27.183H570.93z M603.924,111.595v120.117H570.93V111.595H603.924z"/> +<path d="M621.115,111.595h37.637l21.144,31.365l20.911-31.365h36.476l-39.496,56.226l44.377,63.892h-37.64l-25.093-37.87 + l-25.094,37.87h-36.938l43.213-63.193L621.115,111.595z"/> +<path d="M782.443,331.097V9.711h-23.13v-7.71h32.008v336.807h-32.008v-7.711H782.443z"/> +</svg> diff --git a/pix/webrtc.svg b/pix/webrtc.svg new file mode 100644 index 0000000..582a506 --- /dev/null +++ b/pix/webrtc.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="256px" height="249px" viewBox="0 0 256 249" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid"> + <g> + <path d="M142.076578,191.086817 C142.076578,159.280656 116.294759,133.494615 84.4885969,133.494615 C52.6782136,133.494615 26.896394,159.280656 26.896394,191.086817 C26.896394,222.892979 52.6782136,248.67902 84.4885969,248.67902 C116.294759,248.67902 142.076578,222.892979 142.076578,191.086817" fill="#FF6600" transform="translate(84.486486, 191.086817) scale(1, -1) translate(-84.486486, -191.086817) "></path> + <path d="M255.979703,110.454356 C255.979703,78.652416 230.197884,52.862153 198.391722,52.862153 C166.581339,52.862153 140.799519,78.652416 140.799519,110.454356 C140.799519,142.260518 166.581339,168.050781 198.391722,168.050781 C230.197884,168.050781 255.979703,142.260518 255.979703,110.454356" fill="#FFCC00" transform="translate(198.389611, 110.456467) scale(1, -1) translate(-198.389611, -110.456467) "></path> + <path d="M115.200498,109.176452 C115.200498,77.3745125 89.4186786,51.5842495 57.6082953,51.5842495 C25.8063553,51.5842495 0.0203140271,77.3745125 0.0203140271,109.176452 C0.0203140271,140.982614 25.8063553,166.772877 57.6082953,166.772877 C89.4186786,166.772877 115.200498,140.982614 115.200498,109.176452" fill="#0089CC" transform="translate(57.610406, 109.178563) scale(1, -1) translate(-57.610406, -109.178563) "></path> + <path d="M230.385749,191.086817 C230.385749,159.280656 204.603929,133.494615 172.789324,133.494615 C140.987384,133.494615 115.201343,159.280656 115.201343,191.086817 C115.201343,222.892979 140.987384,248.67902 172.789324,248.67902 C204.603929,248.67902 230.385749,222.892979 230.385749,191.086817" fill="#009939" transform="translate(172.793546, 191.086817) scale(1, -1) translate(-172.793546, -191.086817) "></path> + <path d="M185.592001,57.9843213 C185.592001,26.1781597 159.805959,0.392118349 127.999798,0.392118349 C96.1936359,0.392118349 70.4075946,26.1781597 70.4075946,57.9843213 C70.4075946,89.790483 96.1936359,115.576524 127.999798,115.576524 C159.805959,115.576524 185.592001,89.790483 185.592001,57.9843213" fill="#BF0000" transform="translate(127.999798, 57.984321) scale(1, -1) translate(-127.999798, -57.984321) "></path> + <path d="M140.798675,57.9788331 C140.798675,56.76721 140.904217,55.580917 140.980207,54.3861807 C166.525612,60.2796505 185.590734,83.1189569 185.590734,110.454356 C185.590734,111.665979 185.485192,112.856494 185.409202,114.05123 C159.863796,108.153539 140.798675,85.3142322 140.798675,57.9788331" fill="#FC0007" transform="translate(163.194704, 84.218705) scale(1, -1) translate(-163.194704, -84.218705) "></path> + <path d="M148.39686,162.570614 C158.322038,145.219495 176.973434,133.495881 198.394255,133.495881 C207.124696,133.495881 215.369643,135.496959 222.787141,138.975626 C212.866185,156.326744 194.214789,168.050358 172.789746,168.050358 C164.059305,168.050358 155.814358,166.049281 148.39686,162.570614" fill="#1CD306" transform="translate(185.592001, 150.773120) scale(1, -1) translate(-185.592001, -150.773120) "></path> + <path d="M115.200498,191.086817 C115.200498,177.015947 120.258075,164.139813 128.642338,154.138646 C137.018157,164.139813 142.075734,177.015947 142.075734,191.086817 C142.075734,205.157688 137.018157,218.033822 128.642338,228.034989 C120.258075,218.033822 115.200498,205.157688 115.200498,191.086817" fill="#0F7504" transform="translate(128.638116, 191.086817) scale(1, -1) translate(-128.638116, -191.086817) "></path> + <path d="M34.806984,138.212768 C41.8023132,135.190043 49.5026635,133.497148 57.6082953,133.497148 C78.818032,133.497148 97.2963396,144.992791 107.293286,162.061056 C100.297956,165.083782 92.5933844,166.772455 84.4919743,166.772455 C63.2822376,166.772455 44.7997083,155.276811 34.806984,138.212768" fill="#0C5E87" transform="translate(71.050135, 150.134801) scale(1, -1) translate(-71.050135, -150.134801) "></path> + <path d="M70.6545631,114.036032 C70.5194692,112.431792 70.4054838,110.819109 70.4054838,109.176875 C70.4054838,81.862584 89.4410536,59.044386 114.956907,53.1255861 C115.087779,54.7298257 115.201765,56.3425087 115.201765,57.9805218 C115.201765,85.2948125 96.1704167,108.121454 70.6545631,114.036032" fill="#6B0001" transform="translate(92.803624, 83.580809) scale(1, -1) translate(-92.803624, -83.580809) "></path> + <path d="M76.0304545,111.503866 L67.0213825,111.503866 C59.0677312,111.503866 52.6001125,117.950377 52.6001125,125.88292 L52.6001125,207.428953 C52.6001125,215.361496 59.0677312,221.812228 67.0213825,221.812228 L179.989405,221.812228 C187.943056,221.812228 194.406453,215.361496 194.406453,207.428953 L194.406453,125.88292 C194.406453,117.950377 187.943056,111.503866 179.989405,111.503866 L141.50454,111.503866 L64.2899534,73.6522544 L76.0304545,111.503866 L76.0304545,111.503866 Z" fill="#FFFFFF" transform="translate(123.503283, 147.732241) scale(1, -1) translate(-123.503283, -147.732241) "></path> + </g> +</svg>
\ No newline at end of file |
