summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bortolin <simonebortolin@users.noreply.github.com>2022-08-26 12:05:36 +0200
committerSimone Bortolin <simonebortolin@users.noreply.github.com>2022-12-19 23:08:40 +0100
commit5c445086f157001b0cf4cba20ed220e59a11d27c (patch)
tree090d93be6ad96b79d6d4a4778ed655b1de9c2a12
parentUpdate ont-huawei-ma5671a.md (diff)
downloadhack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar.gz
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar.bz2
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar.lz
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar.xz
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.tar.zst
hack-gpon.github.io-5c445086f157001b0cf4cba20ed220e59a11d27c.zip
-rw-r--r--_includes/head_custom.html7
-rw-r--r--android-chrome-192x192.pngbin0 -> 1506 bytes
-rw-r--r--android-chrome-512x512.pngbin0 -> 2547 bytes
-rw-r--r--apple-touch-icon.pngbin0 -> 1469 bytes
-rw-r--r--assets/img/fiber.svg18
-rw-r--r--assets/img/ont-found.pngbin87313 -> 0 bytes
-rw-r--r--assets/img/ont-not-found.svg46
-rw-r--r--assets/static/ascii-hex.html72
-rw-r--r--assets/static/speed-gpon-eth.html209
-rw-r--r--assets/vector/barman.pngbin0 -> 16982 bytes
-rw-r--r--assets/vector/barman.svg220
-rw-r--r--assets/vector/fiber-1.svg51
-rw-r--r--assets/vector/fiber.svg45
-rw-r--r--assets/vector/ont-found-no-bg.svg50
-rw-r--r--assets/vector/ont-found.pngbin0 -> 5060 bytes
-rw-r--r--assets/vector/ont-found.svg (renamed from assets/img/ont-found.svg)0
-rw-r--r--assets/vector/ont-not-found.pngbin0 -> 8899 bytes
-rw-r--r--assets/vector/ont-not-found.svg87
-rw-r--r--browserconfig.xml9
-rw-r--r--favicon-16x16.pngbin0 -> 699 bytes
-rw-r--r--favicon-32x32.pngbin0 -> 1057 bytes
-rw-r--r--favicon.icobin0 -> 15086 bytes
-rw-r--r--mstile-144x144.pngbin0 -> 1633 bytes
-rw-r--r--mstile-150x150.pngbin0 -> 1518 bytes
-rw-r--r--mstile-310x150.pngbin0 -> 1609 bytes
-rw-r--r--mstile-310x310.pngbin0 -> 2413 bytes
-rw-r--r--mstile-70x70.pngbin0 -> 1308 bytes
-rw-r--r--safari-pinned-tab.svg49
-rw-r--r--site.webmanifest20
29 files changed, 538 insertions, 345 deletions
diff --git a/_includes/head_custom.html b/_includes/head_custom.html
new file mode 100644
index 0000000..4aa14b2
--- /dev/null
+++ b/_includes/head_custom.html
@@ -0,0 +1,7 @@
+<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+<link rel="manifest" href="/site.webmanifest">
+<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#27262b">
+<meta name="msapplication-TileColor" content="#27262b">
+<meta name="theme-color" content="#27262b"> \ No newline at end of file
diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png
new file mode 100644
index 0000000..48e2f73
--- /dev/null
+++ b/android-chrome-192x192.png
Binary files differ
diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png
new file mode 100644
index 0000000..b075b38
--- /dev/null
+++ b/android-chrome-512x512.png
Binary files differ
diff --git a/apple-touch-icon.png b/apple-touch-icon.png
new file mode 100644
index 0000000..f813018
--- /dev/null
+++ b/apple-touch-icon.png
Binary files differ
diff --git a/assets/img/fiber.svg b/assets/img/fiber.svg
deleted file mode 100644
index 9efa082..0000000
--- a/assets/img/fiber.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- width="86.783997mm"
- height="43.39167mm"
- viewBox="0 0 86.783997 43.39167"
- version="1.1"
- id="svg963"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <path
- id="path18614"
- d="m 0,0 v 43.39167 h 5.291667 v -3.175 H 7.408333 V 38.1 H 17.4625 a 2.6458333,3.7041666 0 0 0 1.812292,-1.06765 L 31.75,36.5125 c 0.529166,0 1.058333,-0.26458 1.058333,-0.52917 V 34.925 c 0.549111,0 1.058333,0.52917 1.058333,1.05833 v 7.40834 H 34.925 v -7.40834 c 0,-1.05833 -1.058334,-2.11666 -2.116667,-2.11666 v -1.05834 c 0,-0.26458 -0.529167,-0.52916 -1.058333,-0.52916 L 19.317168,31.76138 A 2.6458333,3.7041666 0 0 0 17.4625,30.69167 H 7.408333 V 28.575 H 5.291667 V 27.51667 H 7.408333 V 25.4 H 17.4625 a 2.6458333,3.7041666 0 0 0 1.812292,-1.06765 L 31.75,23.8125 c 0.529166,0 1.058333,-0.26458 1.058333,-0.52917 V 22.225 c 3.175,0 5.291666,2.11667 5.291666,5.29167 v 15.875 h 1.058334 v -15.875 c 0,-4.23334 -2.116667,-6.35 -6.35,-6.35 v -1.05834 c 0,-0.26458 -0.529167,-0.52916 -1.058333,-0.52916 L 19.321301,19.06138 A 2.6458333,3.7041666 0 0 0 17.4625,17.99167 H 7.408333 V 15.875 H 5.291667 V 14.81667 H 7.408333 V 12.7 H 17.4625 a 2.6458333,3.7041666 0 0 0 1.812292,-1.06765 L 31.75,11.1125 c 0.529166,0 1.058333,-0.26458 1.058333,-0.52917 V 9.525 c 5.291666,0 9.525,5.29167 9.525,9.525 v 24.34167 h 1.058333 V 19.05 c 0,-5.29167 -4.233333,-10.58333 -10.583333,-10.58333 V 7.40833 c 0,-0.26458 -0.529167,-0.52916 -1.058333,-0.52916 L 19.321301,6.36138 A 2.6458333,3.7041666 0 0 0 17.4625,5.29167 H 7.408333 V 3.175 H 5.291667 V 0 Z m 1.058333,1.05833 h 3.175 v 3.175 H 6.35 V 5.29167 H 4.233333 V 12.7 H 6.35 v 1.05833 H 4.233333 v 3.175 H 6.35 v 1.05834 H 4.233333 V 25.4 H 6.35 v 1.05833 H 4.233333 v 3.175 H 6.35 v 1.05834 H 4.233333 V 38.1 H 6.35 v 1.05833 H 4.233333 v 3.175 h -3.175 z M 5.291667,6.35 h 5.291666 v 5.29167 H 5.291667 Z m 6.349999,0 H 12.7 v 5.29167 h -1.058334 z m 2.116667,0 h 1.058333 v 5.29167 h -1.058333 z m 2.116667,0 h 1.5875 A 1.5875,2.6458333 0 0 1 19.05,8.99583 1.5875,2.6458333 0 0 1 17.4625,11.64167 H 15.875 V 8.99583 Z m 4.233333,1.05833 h 3.175 V 9.525 h 1.058333 V 7.67292 h 3.175 v 1.5875 H 28.575 V 7.9375 h 3.175 v 2.11667 H 30.691666 V 8.99583 h -1.058333 v 1.05834 h -3.175 V 8.73125 H 25.4 v 1.5875 H 22.225 V 8.46667 h -1.058334 v 2.11666 H 20.108333 Z M 5.291667,19.05 h 5.291666 v 5.29167 H 5.291667 Z m 6.349999,0 H 12.7 v 5.29167 h -1.058334 z m 2.116667,0 h 1.058333 v 5.29167 h -1.058333 z m 2.116667,0 h 1.5875 a 1.5875,2.6458333 0 0 1 1.5875,2.64583 1.5875,2.6458333 0 0 1 -1.5875,2.64584 H 15.875 v -2.64584 z m 4.233333,1.05833 h 3.175 V 22.225 h 1.058333 v -1.85208 h 3.175 v 1.5875 H 28.575 V 20.6375 h 3.175 v 2.11667 h -1.058334 v -1.05834 h -1.058333 v 1.05834 h -3.175 V 21.43125 H 25.4 v 1.5875 h -3.175 v -1.85208 h -1.058334 v 2.11666 H 20.108333 Z M 5.291667,31.75 h 5.291666 v 5.29167 H 5.291667 Z m 6.349999,0 H 12.7 v 5.29167 h -1.058334 z m 2.116667,0 h 1.058333 v 5.29167 h -1.058333 z m 2.116667,0 h 1.5875 a 1.5875,2.6458333 0 0 1 1.5875,2.64583 1.5875,2.6458333 0 0 1 -1.5875,2.64584 H 15.875 v -2.64584 z m 4.233333,1.05833 h 3.175 V 34.925 h 1.058333 v -1.85208 h 3.175 v 1.5875 H 28.575 V 33.3375 h 3.175 v 2.11667 h -1.058334 v -1.05834 h -1.058333 v 1.05834 h -3.175 V 34.13125 H 25.4 v 1.5875 h -3.175 v -1.85208 h -1.058334 v 2.11666 h -1.058333 z" />
- <path
- id="path31930-7"
- d="m 51.858732,0 c -2.619395,0 -5.291708,2.64583 -5.291708,5.29167 v 2.64583 2.64583 h -1.058341 c -0.264586,0 -0.529171,0.52917 -0.529171,1.05834 l -0.519857,12.47521 c -0.668581,0.48371 -1.050986,1.13265 -1.067655,1.81229 v 13.22916 h 1.058341 V 41.275 h 1.058342 c 0,1.16901 0.710756,2.11667 1.587512,2.11667 0.876757,0 1.587512,-0.94766 1.587512,-2.11667 h 1.058342 V 39.15833 H 50.80039 V 25.92917 c 0,-0.69599 -0.38476,-1.36382 -1.069719,-1.8588 l -0.517793,-12.4287 c 0,-0.52917 -0.264585,-1.05834 -0.529171,-1.05834 H 47.625365 V 8.73125 7.9375 5.29167 c 0,-1.5875 2.645855,-4.23334 4.233367,-4.23334 h 8.466731 c 1.587512,0 4.233366,2.64584 4.233366,4.23334 V 38.1 c 0,2.64583 2.672311,5.29167 5.291706,5.29167 h 8.46673 c 2.6194,0 5.291711,-2.64584 5.291711,-5.29167 v -2.64583 -2.64584 h 1.058338 c 0.264582,0 0.529174,-0.52916 0.529174,-1.05833 L 85.714282,19.3213 C 86.399237,18.82632 86.78357,18.15849 86.784,17.4625 V 4.23333 H 85.725652 V 2.11667 H 84.667314 C 84.667314,0.94766 83.956558,0 83.079802,0 82.203045,0 81.49229,0.94766 81.49229,2.11667 H 80.433951 V 4.23333 H 79.375613 V 17.4625 c 0.0167,0.67964 0.399073,1.32858 1.067648,1.81229 L 80.963115,31.75 c 0,0.52917 0.264592,1.05833 0.529175,1.05833 h 1.058338 V 35.45417 38.1 c 0,1.5875 -2.645851,4.23333 -4.233363,4.23333 h -8.46673 C 68.263023,42.33333 65.61717,39.6875 65.61717,38.1 V 5.29167 C 65.61717,2.64583 62.944858,0 60.325463,0 Z m 31.22107,1.05833 c 0.292262,0 0.529174,0.49606 0.529174,1.08314 h -1.058348 c 0,-0.58708 0.236911,-1.08314 0.529174,-1.08314 z M 81.49229,3.175 h 3.175024 V 4.23333 H 81.49229 Z m -1.058339,2.11667 h 5.291701 v 5.29166 h -5.291701 z m -34.396098,6.35 h 2.116683 v 3.175 H 46.831609 V 15.875 h 1.587512 v 3.175 h -1.852097 v 1.05833 h 2.116683 v 3.175 H 45.508683 V 22.225 h 2.116682 v -1.05833 h -1.852097 v -3.175 h 1.587512 v -1.05834 h -1.322927 v -3.175 h 1.058342 V 12.7 h -1.058342 z m 34.396098,0 h 5.291701 V 12.7 h -5.291701 z m 0,2.11666 h 5.291701 v 1.05834 h -5.291701 z m 0,2.11667 h 2.645851 2.64585 v 1.5875 c 0,0.87675 -1.184599,1.5875 -2.64585,1.5875 -1.461252,0 -2.645851,-0.71075 -2.645851,-1.5875 z m 1.058339,4.23333 h 3.175024 v 3.175 h -2.116686 v 1.05834 h 1.852104 v 3.175 H 82.81522 V 28.575 h 1.32292 v 3.175 h -2.116676 v -1.05833 h 1.058338 v -1.05834 h -1.058338 v -3.175 h 1.32292 V 25.4 h -1.587512 v -3.175 h 1.852104 V 21.16667 H 81.49229 Z m -34.396095,4.23334 c 1.461253,0 2.645854,0.71075 2.645854,1.5875 v 1.5875 h -2.645854 -2.645854 v -1.5875 c 0,-0.87675 1.184602,-1.5875 2.645854,-1.5875 z M 44.450341,28.575 h 5.291708 v 1.05833 h -5.291708 z m 0,2.11667 h 5.291708 V 31.75 h -5.291708 z m 0,2.11666 h 5.291708 V 38.1 h -5.291708 z m 1.058342,6.35 h 3.175024 v 1.05834 h -3.175024 z m 1.058341,2.09187 h 1.058341 c 0,0.58708 -0.236908,1.08313 -0.52917,1.08313 -0.292261,0 -0.529171,-0.49605 -0.529171,-1.08313 z" />
-</svg>
diff --git a/assets/img/ont-found.png b/assets/img/ont-found.png
deleted file mode 100644
index a336d0c..0000000
--- a/assets/img/ont-found.png
+++ /dev/null
Binary files differ
diff --git a/assets/img/ont-not-found.svg b/assets/img/ont-not-found.svg
deleted file mode 100644
index fd940af..0000000
--- a/assets/img/ont-not-found.svg
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- width="116.52087mm"
- height="36.783329mm"
- viewBox="0 0 116.52087 36.783329"
- version="1.1"
- id="svg28164"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:svg="http://www.w3.org/2000/svg">
- <path
- id="path31930"
- d="m 0,11.403492 v 6.35 c 0,0.584491 0.473832,1.058334 1.058334,1.058334 0.102211,0 0.19827,0 0.290938,0 h 2.8840618 v 1.058333 c 0,0.264583 0.529166,0.529167 1.058333,0.529167 l 12.4286992,0.517789 c 0.49499,0.684954 1.162822,1.069287 1.858801,1.069711 H 32.808333 V 20.928492 H 34.925 v -1.058333 c 1.169003,0 2.116666,-0.71075 2.116666,-1.5875 0,-0.87675 -0.947663,-1.5875 -2.116666,-1.5875 V 15.636826 H 32.808333 V 14.578492 H 19.579167 c -0.67963,0.01667 -1.328582,0.399071 -1.812293,1.067647 L 5.2916668,16.165992 c -0.529167,0 -1.058333,0.264584 -1.058333,0.529167 v 1.058333 H 1.490348 c -0.131088,-0.0042 -0.276807,0 -0.432014,0 v -6.35 z m 19.579167,4.233334 h 1.5875 v 2.645833 2.645833 h -1.5875 c -0.876753,0 -1.5875,-1.184592 -1.5875,-2.645833 0,-1.461241 0.710747,-2.645833 1.5875,-2.645833 z m 2.645833,0 h 1.058333 v 5.291666 H 22.225 Z m 2.116667,0 H 25.4 v 5.291666 h -1.058333 z m 2.116666,0 H 31.75 v 5.291666 H 26.458333 Z M 15.875,16.695159 h 1.058333 v 3.175 h -3.175 V 17.753492 H 12.7 v 1.852084 H 9.5249998 v -1.5875 h -1.058333 v 1.322916 h -3.175 v -2.116666 h 1.058333 v 1.058333 h 1.058333 v -1.058333 h 3.1750002 v 1.322916 h 1.058334 v -1.5875 h 3.175 v 1.852084 H 15.875 Z m 16.933333,0 h 1.058334 v 3.175 h -1.058334 z m 2.091862,1.058333 c 0.587095,0 1.083138,0.236908 1.083138,0.529167 0,0.292259 -0.496043,0.529167 -1.083138,0.529167 z" />
- <path
- d="M 44.906979,27.034723 H 116.52088 V 9.7486096 H 44.906979 Z m 11.641664,-1.058334 h -10.58333 v -1.940278 h 8.11389 V 12.410555 h -8.11389 v -1.603611 h 10.58333 z m 43.744457,0 H 57.606983 V 10.806944 H 100.2931 Z m 15.16945,0 h -14.11112 v -1.940278 h 12.02973 l -0.0353,-11.1125 h -11.99445 v -2.116667 h 14.11112 z M 53.020873,13.276388 v 9.877779 h -7.05556 v -9.877779 h 3.81 z M 109.46532,14.6875 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 V 21.0375 h -1.76389 v 0.705556 h 1.76389 v 1.411111 h -8.11389 l 0.0706,-4.198056 -0.0706,-4.974167 h 8.11389 z m 2.82223,8.466667 h -1.76389 v -9.172223 l 1.75727,-0.01654"
- id="path2" />
- <rect
- id="rect13056"
- height="8.8194437"
- x="33.669872"
- y="20.397436"
- width="1.058"
- transform="rotate(-30.427871)" />
- <rect
- id="rect13056-0"
- height="8.8194437"
- x="19.819189"
- y="29.127432"
- width="1.058"
- transform="rotate(-47.800842)" />
- <rect
- id="rect13056-3"
- height="8.8194437"
- x="52.298908"
- y="-11.319631"
- width="1.058"
- transform="matrix(0.86226741,0.50645327,0.50645327,-0.86226741,0,0)" />
- <rect
- id="rect13056-0-9"
- height="8.8194437"
- x="47.068806"
- y="4.4197102"
- width="1.058"
- transform="matrix(0.6717097,0.74081447,0.74081447,-0.6717097,0,0)" />
-</svg>
diff --git a/assets/static/ascii-hex.html b/assets/static/ascii-hex.html
deleted file mode 100644
index 7599353..0000000
--- a/assets/static/ascii-hex.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>ASCII - Hex conversion</title>
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
- </head>
- <body>
- <div class="container">
- <h1>ASCII To Hex</h1>
- <form id="ascii-to-hex">
- <div class="form-floating mb-3">
- <input type="text" class="form-control" placeholder="ASCII" name="ascii-to-hex" id="ascii-to-hex" min="1000" max="10000">
- <label for="ascii-to-hex">ASCII</label>
- </div>
- <div class="form-floating mb-3">
- <input type="text" class="form-control" placeholder="Glue" name="ascii-to-hex-glue" id="ascii-to-hex-glue" value=" ">
- <label for="ascii-to-hex-glue">Glue</label>
- </div>
- <div class="mb-3">
- <input type="submit" class="btn btn-primary" value="Calculate!">
- </div>
- <div class="form-floating mb-3">
- <input readonly class="form-control" type="text" id="hex-result" placeholder="HEX Result">
- <label for="hex-result">HEX Result</label>
- </div>
- </form>
- <h1>Hex To ASCII</h1>
- <form id="hex-to-ascii">
- <div class="form-floating mb-3">
- <input type="text" class="form-control" placeholder="HEX" name="hex-to-ascii" id="hex-to-ascii">
- <label for="hex-to-ascii">HEX</label>
- </div>
- <div class="form-floating mb-3">
- <input type="text" class="form-control" placeholder="Separator" name="hex-to-ascii-separator" id="hex-to-ascii-separator" value=" ">
- <label for="hex-to-ascii-separator">Separator</label>
- </div>
- <div class="mb-3">
- <input type="submit" class="btn btn-primary" value="Calculate!">
- </div>
- <div class="form-floating mb-3">
- <input readonly class="form-control" type="text" id="ascii-result" placeholder="ASCII Result">
- <label for="ascii-result">ASCII Result</label>
- </div>
- </form>
- </div>
- </body>
-
- <script>
- var asciiToHexForm = document.getElementById('ascii-to-hex');
- asciiToHexForm.addEventListener('submit',(event) => {
- event.preventDefault();
- var fomrdata = new FormData(asciiToHexForm);
- var str = fomrdata.get('ascii-to-hex');
- var glue = fomrdata.get('ascii-to-hex-glue');
- var hex = [...str].map((elem, n) => "0x"+Number(str.charCodeAt(n)).toString(16)).join(glue);
- document.getElementById('hex-result').value = hex;
- });
-
- var hexToAsciiForm = document.getElementById('hex-to-ascii');
- hexToAsciiForm.addEventListener('submit',(event) => {
- event.preventDefault();
- var fomrdata = new FormData(hexToAsciiForm);
- var str = fomrdata.get('hex-to-ascii');
- var separator = fomrdata.get('hex-to-ascii-separator');
- var ascii = str.split(separator).map(el => String.fromCharCode(Number(el))).join('');
- document.getElementById('ascii-result').value = ascii;
- });
-
-</script>
-</html> \ No newline at end of file
diff --git a/assets/static/speed-gpon-eth.html b/assets/static/speed-gpon-eth.html
deleted file mode 100644
index f910a3e..0000000
--- a/assets/static/speed-gpon-eth.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<!doctype html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Theoretical maximum speed calculator</title>
- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
- </head>
- <body>
- <div class="container">
- <h1>Ethernet calculator</h1>
- <form id="eth-speed-mtu">
- <div class="form-floating mb-3">
- <input type="number" class="form-control" placeholder="MTU L2" name="mtu" id="mtu" value="1500" min="1000" max="10000">
- <label for="mtu">MTU L2 (no overhead for PPPoE/MAP, only Ethernet PPPoE)</label>
- </div>
- <div class="form-floating mb-3">
- <div class="mb-3">
- <div class="form-check form-check-inline">
- <input class="form-check-input" type="radio" id="ip4" name="ip" value="4" checked>
- <label class="form-check-label" for="ip4">IPv4</label>
- </div>
- <div class="form-check form-check-inline">
- <input class="form-check-input" type="radio" id="ip6" name="ip" value="6">
- <label class="form-check-label" for="ip6">IPv6</label>
- </div>
- </div>
- </div>
- <select class="form-select mb-3" placeholder="IPv4 L2 protocol" name="ipv4protocol" id="ipv4protocol">
- <option disabled selected>Select a Protocol</option>
- <option value="ipoe">IPoE</option>
- <option value="pppoe">PPPoE</option>
- <option value="map-t">MAP-T</option>
- <option value="map-e">MAP-E/4in6</option>
- </select>
- <select class="form-select mb-3" placeholder="IPv6 L2 protocol" name="ipv6protocol" id="ipv6protocol" disabled>
- <option disabled selected>Select a Protocol</option>
- <option value="ipoe">IPoE</option>
- <option value="pppoe">PPPoE</option>
- </select>
- <select class="form-select mb-3" placeholder="Speed" name="speed">
- <option disabled selected>Select a link speed</option>
- <option value="10">10 Mbps</option>
- <option value="100">100 Mbps</option>
- <option value="200">200 Mbps</option>
- <option value="500">500 Mbps</option>
- <option value="1000">1 Gbps</option>
- <option value="2500">2.5 Gbps</option>
- <option value="5000">5 Gbps</option>
- <option value="10000">10 Gbps</option>
- </select>
- <div class="mb-3">
- <input type="submit" class="btn btn-primary" value="Calculate!">
- </div>
- <div class="form-floating mb-3">
- <input readonly class="form-control" type="number" id="maxSpeed" placeholder="Theoretical maximum speed">
- <label for="maxSpeed">Theoretical maximum speed (Mbps)</label>
- </div>
- <div class="form-floating mb-3">
- <input readonly class="form-control" type="number" id="overhead" placeholder="Ethernet overhead (%)">
- <label for="overhead">Ethernet overhead (%)</label>
- </div>
-
- </form>
- <h1>Gpon calculator</h1>
- <form id="gpon-speed-mtu">
- <div class="form-floating mb-3">
- <input step="1" type="number" class="form-control" placeholder="ONT number" name="gpon-ont" id="gpon-ont" value="10" min="1" max="128" required>
- <label for="gpon-ont">ONT number</label>
- </div>
- <div class="form-floating mb-3">
- <input step="1" type="number" class="form-control" placeholder="GEM frame number" name="gpon-gem" id="gpon-gem" value="26" min="1" max="40" required>
- <label for="gpon-gem">GEM frame number</label>
- </div>
- <div class="mb-3">
- <div class="form-check form-check-inline">
- <input class="form-check-input" type="radio" id="gpon-ip4" name="gpon-ip" value="4" checked>
- <label class="form-check-label" for="gpon-ip4">IPv4</label>
- </div>
- <div class="form-check form-check-inline">
- <input class="form-check-input" type="radio" id="gpon-ip6" name="gpon-ip" value="6">
- <label class="form-check-label" for="gpon-ip6">IPv6</label>
- </div>
- </div>
- <select class="form-select mb-3" placeholder="IPv4 L2 protocol" name="gpon-ipv4protocol" id="gpon-ipv4protocol" required>
- <option disabled selected>Select a Protocol</option>
- <option value="ipoe">IPoE</option>
- <option value="pppoe">PPPoE</option>
- <option value="map-t">MAP-T</option>
- <option value="map-e">MAP-E/4in6</option>
- </select>
- <select class="form-select mb-3" placeholder="IPv6 L2 protocol" name="gpon-ipv6protocol" id="gpon-ipv6protocol" disabled required>
- <option disabled selected>Select a Protocol</option>
- <option value="ipoe">IPoE</option>
- <option value="pppoe">PPPoE</option>
- </select>
- <div class="mb-3">
- <input type="submit" class="btn btn-primary" value="Calculate!">
- </div>
- <div class="form-floating mb-3">
- <input type="number" class="form-control" placeholder="GPON Average Ethernet Frame Size (Byte)" name="gpon-average-packet-size" id="gpon-average-packet-size" readonly>
- <label for="gpon-average-packet-size">GPON Average Ethernet Frame Size (Byte) must be inside 1000-1500</label>
- </div>
- <div class="form-floating mb-3">
- <input type="number" class="form-control" placeholder="Theoretical maximum speed (Gbps)" name="gpon-maxSpeed" id="gpon-maxSpeed" readonly>
- <label for="gpon-maxSpeed">Theoretical maximum speed (Mbps)</label>
- </div>
- <div class="form-floating mb-3">
- <input type="number" class="form-control" placeholder="GPON overhead (%)" name="gpon-overhead" id="gpon-overhead" readonly>
- <label for="gpon-overhead">GPON overhead (%)</label>
- </div>
- </form>
- </div>
- </body>
-
- <script>
- var form = document.getElementById('eth-speed-mtu');
- var radioIp = document.getElementsByName('ip');
- [...radioIp].forEach(el => {el.addEventListener('change', (event) => {
- var ip = document.querySelector('input[name="ip"]:checked').value;
- document.getElementById('ipv4protocol').disabled = (ip === '6');
- document.getElementById('ipv6protocol').disabled = (ip === '4');
-
- });
- });
- form.addEventListener('submit',(event) => {
-
- var formdata = new FormData(form);
- event.preventDefault();
- var overheadipv4 = {
- "ipoe" : 20,
- "pppoe" : 28,
- "map-t" : 40,
- "map-e" : 60,
- };
- var overheadipv6 = {
- "ipoe" : 40,
- "pppoe" : 48,
- };
- var overheadtcp = 20;
- var overheadeth = 14;
- var overheadfcs = 4;
- var overheadgap = {
- '10' : 5.875,
- '100' : 12,
- '200' : 8,
- '500' : 8,
- '1000' : 8,
- '2500' : 5,
- '5000' : 5,
- '10000' : 5,
- };
- var preamble = 8;
- var cip = formdata.get('ip');
- var coverheadip = formdata.get('ip') === '4' ? overheadipv4[formdata.get('ipv4protocol')] : overheadipv6[formdata.get('ipv6protocol')];
- var mtu = formdata.get('mtu');
- var mss = mtu - coverheadip;
- var overhead = overheadtcp + overheadeth + overheadfcs + overheadgap[formdata.get('speed')] + preamble + coverheadip;
- document.getElementById('overhead').value = overhead/mss * 100;
- var th = mss /(overhead + mss);
-
- document.getElementById('maxSpeed').value = th * formdata.get('speed');
-
- });
- var formgpon = document.getElementById('gpon-speed-mtu');
- var radioIp = document.getElementsByName('gpon-ip');
- [...radioIp].forEach(el => {el.addEventListener('change', (event) => {
- var ip = document.querySelector('input[name="gpon-ip"]:checked').value;
- document.getElementById('gpon-ipv4protocol').disabled = (ip === '6');
- document.getElementById('gpon-ipv6protocol').disabled = (ip === '4');
-
- });
- });
- formgpon.addEventListener('submit',(event) => {
-
- var formdata = new FormData(formgpon);
- event.preventDefault();
- var gtc = 38880;
- var overheadgem = 5;
- var overheadpcbd = 30 + 8*formdata.get('gpon-ont');
- var overheadipv4 = {
- "ipoe" : 20,
- "pppoe" : 28,
- "map-t" : 40,
- "map-e" : 60,
- };
- var overheadipv6 = {
- "ipoe" : 40,
- "pppoe" : 48,
- };
- var overheadtcp = 20;
- var overheadeth = 14;
- var overheadfcs = 4;
- var cip = formdata.get('gpon-ip');
- var coverheadip = formdata.get('gpon-ip') === '4' ? overheadipv4[formdata.get('gpon-ipv4protocol')] : overheadipv6[formdata.get('gpon-ipv6protocol')];
- var overheadframeeth = overheadtcp + overheadeth + overheadfcs + coverheadip;
- var overheadgtc = overheadgem + formdata.get('gpon-gem') * (overheadpcbd+overheadframeeth);
- var payload = gtc - overheadgtc;
- document.getElementById('gpon-average-packet-size').value = payload/formdata.get('gpon-gem');
-
-
- document.getElementById('gpon-overhead').value = overheadgtc/payload * 100;
- var th = payload /gtc;
-
- document.getElementById('gpon-maxSpeed').value = th * 2.48832;
-
- });
-</script>
-</html> \ No newline at end of file
diff --git a/assets/vector/barman.png b/assets/vector/barman.png
new file mode 100644
index 0000000..1225758
--- /dev/null
+++ b/assets/vector/barman.png
Binary files differ
diff --git a/assets/vector/barman.svg b/assets/vector/barman.svg
new file mode 100644
index 0000000..d5dcaa8
--- /dev/null
+++ b/assets/vector/barman.svg
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+
+<svg
+ version="1.1"
+ id="Layer_1"
+ x="0px"
+ y="0px"
+ viewBox="0 0 512 512"
+ style="enable-background:new 0 0 512 512;"
+ xml:space="preserve"
+ sodipodi:docname="barman.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ inkscape:export-filename="C:\Users\simon\source\repos\hack-gpon.github.io\assets\vector\barman.png"
+ inkscape:export-xdpi="96"
+ inkscape:export-ydpi="96"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
+ id="defs81" /><sodipodi:namedview
+ id="namedview79"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="1.7050781"
+ inkscape:cx="133.13173"
+ inkscape:cy="227.26232"
+ inkscape:window-width="2560"
+ inkscape:window-height="1351"
+ inkscape:window-x="2551"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ />
+<rect
+ style="fill:#27262b;fill-opacity:1;fill-rule:evenodd;stroke-width:1.65236;stroke-miterlimit:9.33333"
+ id="rect1781"
+ width="512"
+ height="512"
+ x="0"
+ y="0" /><g
+ id="g6"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g4"
+ style="fill:#ffffff">
+ <path
+ d="m 347.429,311.388 v 159.705 h -10e-4 c 0,12.515 10.145,22.661 22.661,22.661 12.516,0 22.661,-10.145 22.661,-22.661 V 311.388 Z"
+ id="path2"
+ style="fill:#ffffff" />
+ </g>
+</g>
+<g
+ id="g12"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g10"
+ style="fill:#ffffff">
+ <path
+ d="m 402.534,311.388 v 159.705 c 0,12.515 10.145,22.661 22.661,22.661 12.516,0 22.661,-10.145 22.661,-22.661 V 311.388 Z"
+ id="path8"
+ style="fill:#ffffff" />
+ </g>
+</g>
+<g
+ id="g18"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g16"
+ style="fill:#ffffff">
+ <path
+ d="m 433.881,108.75 h -16.977 l -19.355,49.768 -19.355,-49.768 h -16.977 c 0.466,17.299 -2.372,46.04 -13.681,58.211 v 66.302 h 100.025 v -66.302 c -11.323,-12.186 -14.144,-40.915 -13.68,-58.211 z m -35.898,103.01 c -3.081,0 -5.58,-2.499 -5.58,-5.58 0,-3.081 2.499,-5.58 5.58,-5.58 3.081,0 5.58,2.499 5.58,5.58 0,3.081 -2.498,5.58 -5.58,5.58 z m 0,-30.27 c -3.081,0 -5.58,-2.499 -5.58,-5.58 0,-3.081 2.499,-5.58 5.58,-5.58 3.081,0 5.58,2.499 5.58,5.58 0.001,3.082 -2.498,5.58 -5.58,5.58 z"
+ id="path14"
+ style="fill:#ffffff" />
+ </g>
+</g>
+<g
+ id="g24"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g22"
+ style="fill:#ffffff">
+ <path
+ d="m 450.619,109.051 -0.003,0.148 c -0.323,12.019 0.946,26.304 4.732,37.421 l -0.182,86.643 h 37.768 l 0.192,-79.663 c 0,-0.047 0,-0.093 0,-0.14 -0.118,-23.786 -18.992,-43.267 -42.507,-44.409 z"
+ id="path20"
+ style="fill:#ffffff" />
+ </g>
+</g>
+<g
+ id="g34"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g32"
+ style="fill:#ffffff">
+ <g
+ id="g30"
+ style="fill:#ffffff">
+ <polygon
+ points="339.696,233.262 339.696,233.263 "
+ id="polygon26"
+ style="fill:#ffffff" />
+ <path
+ d="m 344.48,109.045 c -23.624,1.022 -42.624,20.549 -42.743,44.415 0,0.047 0,0.093 0,0.139 l 0.192,79.663 h 37.768 l -0.18,-85.98 c 4.068,-11.467 5.28,-26.257 4.963,-38.237 z"
+ id="path28"
+ style="fill:#ffffff" />
+ </g>
+ </g>
+</g>
+<g
+ id="g40"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g38"
+ style="fill:#ffffff">
+ <path
+ d="m 397.431,18.246 c -21.615,0 -39.137,17.522 -39.137,39.137 0,21.74 17.674,39.137 39.137,39.137 21.46,0 39.137,-17.395 39.137,-39.137 0,-21.615 -17.522,-39.137 -39.137,-39.137 z"
+ id="path36"
+ style="fill:#ffffff" />
+ </g>
+</g>
+<g
+ id="g46"
+ style="fill:#ffffff"
+ transform="matrix(0.72265625,0,0,0.72265625,71,70.999914)">
+ <g
+ id="g44"
+ style="fill:#ffffff">
+ <path
+ d="M 16.741,255.585 C 7.496,255.585 0,263.08 0,272.326 c 0,9.246 7.496,16.741 16.741,16.741 h 478.518 c 9.246,0 16.741,-7.496 16.741,-16.741 0,-9.246 -7.496,-16.741 -16.741,-16.741 H 273.563 c 0.853,-0.689 1.449,-1.689 1.577,-2.853 0.621,-5.61 4.337,-39.22 5.158,-46.646 h -39.9 c 0.32,2.9 3.828,34.616 5.158,46.646 0.128,1.163 0.724,2.164 1.577,2.853"
+ id="path42"
+ style="fill:#ffffff"
+ sodipodi:nodetypes="cssssscccccc" />
+ </g>
+</g>
+<g
+ id="g48"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g50"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g52"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g54"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g56"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g58"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g60"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g62"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g64"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g66"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g68"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g70"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g72"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g74"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<g
+ id="g76"
+ transform="matrix(0.78125,0,0,0.78125,62.205957,51.26784)">
+</g>
+<path
+ d="m 88.314033,174.40335 v 78.78584 H 107.3313 v -78.78584 z m 1.164323,12.80754 v -11.64322 h 2.13459 v 8.92648 h 12.789824 v -8.92648 h 1.76421 v 11.64322 z m 0,48.12534 v -46.96101 h 16.688624 v 46.96101 z m 0,16.68863 v -15.5243 h 2.13459 v 13.23447 l 12.225384,-0.0388 v -13.19567 h 2.32865 v 15.52432 z M 103.45022,183.32983 H 92.583215 v -7.76216 h 10.867005 v 4.19157 z m -1.55243,62.0972 h -0.77621 v -1.94054 h -0.77622 v 1.94054 h -0.776207 v -1.94054 h -0.776217 v 1.94054 h -0.776215 v -1.94054 h -0.776215 v 1.94054 h -0.776215 v -1.94054 h -0.776215 v 1.94054 h -0.776215 v -1.94054 h -0.776215 v 1.94054 h -1.552431 v -8.92647 l 4.61848,0.0777 5.472315,-0.0777 v 8.92647 z m -9.314575,3.10487 v -1.94053 h 10.090795 l 0.0182,1.93325"
+ id="path2-9"
+ style="fill:#ffffff;stroke-width:1.10015" /><path
+ d="m 114.93821,174.40335 v 78.78584 h 19.01727 v -78.78584 z m 1.16433,12.80754 v -11.64322 h 2.13458 v 8.92648 h 12.78983 v -8.92648 h 1.76421 v 11.64322 z m 0,48.12534 v -46.96101 h 16.68862 v 46.96101 z m 0,16.68863 v -15.5243 h 2.13458 v 13.23447 l 12.22539,-0.0388 v -13.19567 h 2.32865 v 15.52432 z m 13.97186,-68.69503 h -10.86701 v -7.76216 h 10.86701 v 4.19156 z m -1.55243,62.0972 h -0.77622 v -1.94054 h -0.77621 v 1.94054 h -0.77621 v -1.94054 h -0.77622 v 1.94054 h -0.77621 v -1.94054 h -0.77622 v 1.94054 h -0.77621 v -1.94054 h -0.77621 v 1.94054 h -0.77622 v -1.94054 h -0.77621 v 1.94054 h -1.55244 v -8.92647 l 4.61848,0.0777 5.47232,-0.0777 v 8.92647 z m -9.31458,3.10487 v -1.94053 h 10.0908 l 0.0182,1.93325"
+ id="path2-9-9"
+ style="fill:#ffffff;stroke-width:1.10015" /><path
+ d="m 141.56239,174.40335 v 78.78584 h 19.01727 v -78.78584 z m 1.16432,12.80754 v -11.64322 h 2.1346 v 8.92648 h 12.78981 v -8.92648 h 1.76422 v 11.64322 z m 0,48.12534 v -46.96101 h 16.68863 v 46.96101 z m 0,16.68863 v -15.5243 h 2.1346 v 13.23447 l 12.22538,-0.0388 v -13.19567 h 2.32865 v 15.52432 z m 13.97187,-68.69503 h -10.86701 v -7.76216 h 10.86701 v 4.19157 z m -1.55243,62.0972 h -0.77621 v -1.94054 h -0.77622 v 1.94054 h -0.77621 v -1.94054 h -0.77622 v 1.94054 h -0.77621 v -1.94054 h -0.77621 v 1.94054 h -0.77622 v -1.94054 h -0.77622 v 1.94054 h -0.77621 v -1.94054 H 147.384 v 1.94054 h -1.55243 v -8.92647 l 4.61848,0.0777 5.47231,-0.0777 v 8.92647 z m -9.31458,3.10487 v -1.94053 h 10.09079 l 0.0182,1.93325"
+ id="path2-9-2"
+ style="fill:#ffffff;stroke-width:1.10015" /><path
+ id="path31930-7"
+ d="m 176.26666,179.3903 c -4.36237,0 -8.81288,4.40641 -8.81288,8.81282 v 4.4064 4.40641 h -1.76257 c -0.44065,0 -0.88129,0.88128 -0.88129,1.76257 l -0.86577,20.77637 c -1.11347,0.80558 -1.75033,1.88634 -1.77809,3.01821 v 22.03203 h 1.76257 v 3.52513 h 1.76258 c 0,1.94689 1.1837,3.52514 2.64387,3.52514 1.46016,0 2.64386,-1.57825 2.64386,-3.52514 h 1.76258 v -3.52513 h 1.76257 v -22.03203 c 0,-1.1591 -0.64078,-2.27131 -1.78153,-3.09566 l -0.86234,-20.69892 c 0,-0.88129 -0.44064,-1.76257 -0.88128,-1.76257 h -1.76258 v -3.08449 -1.32192 -4.4064 c 0,-2.64385 4.40644,-7.05026 7.0503,-7.05026 h 14.10061 c 2.64387,0 7.05032,4.40641 7.05032,7.05026 v 54.63943 c 0,4.40641 4.45049,8.81283 8.81287,8.81283 h 14.10061 c 4.36239,0 8.81289,-4.40642 8.81289,-8.81283 v -4.4064 -4.40641 h 1.76257 c 0.44064,0 0.88129,-0.88127 0.88129,-1.76256 l 0.86234,-20.69892 c 1.14074,-0.82435 1.78081,-1.93656 1.78152,-3.09568 v -22.03203 h -1.76259 v -3.52512 h -1.76256 c 0,-1.94688 -1.18371,-3.52513 -2.64387,-3.52513 -1.46016,0 -2.64387,1.57825 -2.64387,3.52513 h -1.76256 v 3.52512 h -1.76258 v 22.03203 c 0.0279,1.13188 0.66462,2.21264 1.77808,3.01821 l 0.86577,20.77639 c 0,0.88129 0.44066,1.76256 0.88129,1.76256 h 1.76258 v 4.40641 4.4064 c 0,2.64385 -4.40643,7.05025 -7.0503,7.05025 h -14.10061 c -2.64386,0 -7.0503,-4.4064 -7.0503,-7.05025 v -54.63943 c 0,-4.40641 -4.4505,-8.81282 -8.81289,-8.81282 z m 51.996,1.76256 c 0.48674,0 0.8813,0.82614 0.8813,1.80387 h -1.76259 c 0,-0.97773 0.39455,-1.80387 0.88129,-1.80387 z m -2.64387,3.52513 h 5.28774 v 1.76256 h -5.28774 z m -1.76256,3.52513 h 8.81286 v 8.81281 h -8.81286 z M 166.5725,198.7785 h 3.52515 v 5.28768 h -2.20322 v 1.76255 h 2.64386 v 5.28769 h -3.08451 v 1.76256 h 3.52516 v 5.28769 h -5.28773 v -1.76255 h 3.52515 v -1.76256 h -3.0845 v -5.28769 h 2.64386 v -1.76258 h -2.20322 v -5.28768 h 1.76258 v -1.76256 h -1.76258 z m 57.28373,0 h 8.81286 v 1.76255 h -8.81286 z m 0,3.52511 h 8.81286 v 1.76257 h -8.81286 z m 0,3.52512 h 4.40643 4.40643 v 2.64385 c 0,1.46015 -1.97284,2.64384 -4.40643,2.64384 -2.43359,0 -4.40643,-1.18369 -4.40643,-2.64384 z m 1.76256,7.05025 h 5.28774 v 5.28769 h -3.52516 v 1.76258 h 3.08451 v 5.28768 h -2.64386 v 1.76256 h 2.2032 v 5.28769 h -3.52513 v -1.76255 h 1.76257 v -1.76258 h -1.76257 v -5.28769 h 2.20321 v -1.76256 h -2.64387 v -5.28768 h 3.08453 v -1.76256 h -3.52517 z m -57.28371,7.05027 c 2.43359,0 4.40644,1.18369 4.40644,2.64383 v 2.64385 h -4.40644 -4.40645 v -2.64385 c 0,-1.46014 1.97285,-2.64383 4.40645,-2.64383 z m -4.40645,7.05024 h 8.81289 v 1.76256 h -8.81289 z m 0,3.52514 h 8.81289 v 1.76255 h -8.81289 z m 0,3.52511 h 8.81289 v 8.81281 h -8.81289 z m 1.76258,10.57537 h 5.28773 v 1.76257 h -5.28773 z m 1.76257,3.48383 h 1.76258 c 0,0.97773 -0.39456,1.80386 -0.88128,1.80386 -0.48674,0 -0.8813,-0.82613 -0.8813,-1.80386 z"
+ style="fill:#0055d4;fill-opacity:1;stroke-width:1.66542" /><path
+ id="path31930-7-7"
+ d="m 185.04508,174.9769 c -4.36237,0 -8.81288,4.40641 -8.81288,8.81281 v 4.40641 4.4064 h -1.76258 c -0.44064,0 -0.88128,0.88129 -0.88128,1.76258 l -0.86578,20.77638 c -1.11346,0.80557 -1.75033,1.88632 -1.77809,3.01821 v 22.03203 h 1.76257 v 3.52513 h 1.76258 c 0,1.94688 1.18371,3.52512 2.64387,3.52512 1.46016,0 2.64387,-1.57824 2.64387,-3.52512 h 1.76257 v -3.52513 h 1.76257 v -22.03203 c 0,-1.15911 -0.64077,-2.27132 -1.78152,-3.09567 l -0.86234,-20.69892 c 0,-0.88129 -0.44064,-1.76258 -0.88128,-1.76258 h -1.76258 v -3.08448 -1.32192 -4.40641 c 0,-2.64383 4.40644,-7.05025 7.0503,-7.05025 h 14.10061 c 2.64387,0 7.05031,4.40642 7.05031,7.05025 v 54.63945 c 0,4.4064 4.4505,8.81281 8.81287,8.81281 h 14.10061 c 4.36239,0 8.81289,-4.40641 8.81289,-8.81281 v -4.40641 -4.40642 h 1.76257 c 0.44064,0 0.8813,-0.88127 0.8813,-1.76255 l 0.86234,-20.69893 c 1.14073,-0.82434 1.7808,-1.93655 1.78152,-3.09567 v -22.03203 h -1.76259 v -3.52512 h -1.76257 c 0,-1.94688 -1.1837,-3.52513 -2.64386,-3.52513 -1.46017,0 -2.64387,1.57825 -2.64387,3.52513 h -1.76256 v 3.52512 h -1.76258 v 22.03203 c 0.0278,1.13189 0.66462,2.21264 1.77807,3.01821 l 0.86577,20.77639 c 0,0.88128 0.44066,1.76255 0.8813,1.76255 h 1.76258 v 4.40642 4.40641 c 0,2.64384 -4.40644,7.05025 -7.05031,7.05025 h -14.10061 c -2.64386,0 -7.05029,-4.40641 -7.05029,-7.05025 v -54.63945 c 0,-4.4064 -4.45051,-8.81281 -8.81289,-8.81281 z m 51.996,1.76256 c 0.48673,0 0.88129,0.82614 0.88129,1.80387 h -1.76258 c 0,-0.97773 0.39455,-1.80387 0.88129,-1.80387 z m -2.64387,3.52513 h 5.28773 v 1.76256 h -5.28773 z m -1.76256,3.52512 h 8.81286 v 8.81281 h -8.81286 z m -57.28374,10.57539 h 3.52515 v 5.28768 h -2.20322 v 1.76256 h 2.64386 v 5.28769 h -3.0845 v 1.76256 h 3.52516 v 5.28768 h -5.28774 v -1.76256 h 3.52516 v -1.76255 h -3.08451 v -5.28769 h 2.64387 v -1.76257 h -2.20323 v -5.28769 h 1.76258 v -1.76256 h -1.76258 z m 57.28374,0 h 8.81286 v 1.76255 h -8.81286 z m 0,3.52511 h 8.81286 v 1.76257 h -8.81286 z m 0,3.52513 h 4.40643 4.40643 v 2.64384 c 0,1.46015 -1.97285,2.64385 -4.40643,2.64385 -2.43359,0 -4.40643,-1.1837 -4.40643,-2.64385 z m 1.76256,7.05025 h 5.28773 v 5.28768 h -3.52515 v 1.76258 h 3.08451 v 5.28768 h -2.64386 v 1.76256 h 2.2032 v 5.28769 h -3.52513 v -1.76256 h 1.76257 v -1.76257 h -1.76257 v -5.28769 h 2.2032 v -1.76256 h -2.64386 v -5.28769 h 3.08452 v -1.76255 h -3.52516 z m -57.28372,7.05026 c 2.43359,0 4.40644,1.18369 4.40644,2.64384 v 2.64384 h -4.40644 -4.40645 v -2.64384 c 0,-1.46015 1.97286,-2.64384 4.40645,-2.64384 z m -4.40645,7.05024 h 8.81289 v 1.76256 h -8.81289 z m 0,3.52513 h 8.81289 v 1.76256 h -8.81289 z m 0,3.52511 h 8.81289 v 8.81283 h -8.81289 z m 1.76258,10.57539 h 5.28774 v 1.76257 h -5.28774 z m 1.76258,3.48382 h 1.76258 c 0,0.97773 -0.39456,1.80387 -0.88129,1.80387 -0.48673,0 -0.88129,-0.82614 -0.88129,-1.80387 z"
+ style="fill:#3cc285;fill-opacity:1;stroke-width:1.66542" /></svg>
diff --git a/assets/vector/fiber-1.svg b/assets/vector/fiber-1.svg
new file mode 100644
index 0000000..9c1248b
--- /dev/null
+++ b/assets/vector/fiber-1.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="512mm"
+ height="512mm"
+ viewBox="0 0 512 512"
+ version="1.1"
+ id="svg916"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ sodipodi:docname="fiber-1.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview918"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="mm"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="0.097214331"
+ inkscape:cx="3096.2513"
+ inkscape:cy="3296.839"
+ inkscape:window-width="2560"
+ inkscape:window-height="1351"
+ inkscape:window-x="2551"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1" />
+ <defs
+ id="defs913" />
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-36.819631,-79.005196)">
+ <path
+ id="path18614"
+ d="M 36.819631,79.005196 V 591.00529 H 99.25866 v -37.46341 h 24.9756 v -24.97565 h 118.63415 a 31.219512,43.707317 0 0 0 21.38415,-12.59774 l 147.20122,-6.13397 c 6.2439,0 12.4878,-3.12191 12.4878,-6.24394 v -12.48777 c 6.47924,0 12.48781,6.24394 12.48781,12.48777 v 87.41471 h 12.48781 v -87.41471 c 0,-12.48777 -12.48781,-24.97554 -24.97562,-24.97554 v -12.48788 c 0,-3.12191 -6.2439,-6.24382 -12.4878,-6.24382 L 264.75257,453.77367 A 31.219512,43.707317 0 0 0 242.86841,441.15163 H 124.23426 v -24.97565 h -24.9756 v -12.48777 h 24.9756 v -24.97565 h 118.63415 a 31.219512,43.707317 0 0 0 21.38415,-12.59773 l 147.20122,-6.13397 c 6.2439,0 12.4878,-3.12191 12.4878,-6.24394 v -12.48777 c 37.46342,0 62.43902,24.97565 62.43902,62.43906 v 187.31708 h 12.48781 V 403.68821 c 0,-49.95129 -24.97561,-74.92683 -74.92683,-74.92683 v -12.48793 c 0,-3.12191 -6.2439,-6.24382 -12.4878,-6.24382 L 264.80134,303.91997 A 31.219512,43.707317 0 0 0 242.86841,291.29792 H 124.23426 v -24.97565 h -24.9756 v -12.48776 h 24.9756 v -24.97565 h 118.63415 a 31.219512,43.707317 0 0 0 21.38415,-12.59774 l 147.20122,-6.13397 c 6.2439,0 12.4878,-3.12191 12.4878,-6.24394 v -12.48777 c 62.43902,0 112.39025,62.43907 112.39025,112.39025 v 287.2196 h 12.4878 v -287.2196 c 0,-62.43907 -49.95122,-124.87801 -124.87805,-124.87801 v -12.48789 c 0,-3.12191 -6.2439,-6.24382 -12.4878,-6.24382 L 264.80134,154.0663 A 31.219512,43.707317 0 0 0 242.86841,141.44426 H 124.23426 V 116.46861 H 99.25866 V 79.005196 Z m 12.487801,12.487766 h 37.463415 v 37.463418 h 24.975613 v 12.48788 H 86.770847 v 87.4146 h 24.975613 v 12.48776 H 86.770847 v 37.46342 h 24.975613 v 12.48788 H 86.770847 v 87.41464 h 24.975613 v 12.48777 H 86.770847 v 37.46342 h 24.975613 v 12.48788 H 86.770847 v 87.4146 h 24.975613 v 12.48776 H 86.770847 v 37.46342 H 49.307432 Z M 99.25866,153.93203 h 62.43902 v 62.43906 H 99.25866 Z m 74.92682,0 h 12.48781 v 62.43906 h -12.48781 z m 24.97561,0 h 12.4878 v 62.43906 h -12.4878 z m 24.97562,0 h 18.7317 a 18.731708,31.219512 0 0 1 18.73171,31.21947 18.731708,31.219512 0 0 1 -18.73171,31.21959 h -18.7317 V 185.1515 Z m 49.95121,12.48776 h 37.46342 v 24.97565 h 12.4878 v -21.85362 h 37.46341 v 18.73171 h 12.48782 v -15.6098 h 37.46341 v 24.97565 H 398.96597 V 185.1515 h -12.4878 v 12.48788 h -37.46342 v -15.60979 h -12.4878 v 18.73171 h -37.46341 v -21.85362 h -12.48782 v 24.97553 h -12.4878 z M 99.25866,303.78569 h 62.43902 V 366.2248 H 99.25866 Z m 74.92682,0 h 12.48781 v 62.43911 h -12.48781 z m 24.97561,0 h 12.4878 v 62.43911 h -12.4878 z m 24.97562,0 h 18.7317 a 18.731708,31.219512 0 0 1 18.73171,31.21952 18.731708,31.219512 0 0 1 -18.73171,31.21959 h -18.7317 v -31.21959 z m 49.95121,12.48776 h 37.46342 v 24.9757 h 12.4878 v -21.85367 h 37.46341 v 18.73176 h 12.48782 v -15.60985 h 37.46341 v 24.9757 h -12.48781 v -12.48788 h -12.4878 v 12.48788 H 349.01475 V 331.8833 h -12.4878 v 18.7317 h -37.46341 v -21.85362 h -12.48782 v 24.97554 h -12.4878 z M 99.25866,453.6394 h 62.43902 v 62.43906 H 99.25866 Z m 74.92682,0 h 12.48781 v 62.43906 h -12.48781 z m 24.97561,0 h 12.4878 v 62.43906 h -12.4878 z m 24.97562,0 h 18.7317 a 18.731708,31.219512 0 0 1 18.73171,31.21947 18.731708,31.219512 0 0 1 -18.73171,31.21959 h -18.7317 v -31.21959 z m 49.95121,12.48776 h 37.46342 v 24.97565 h 12.4878 v -21.85362 h 37.46341 v 18.73171 h 12.48782 v -15.6098 h 37.46341 v 24.97565 h -12.48781 v -12.48788 h -12.4878 v 12.48788 h -37.46342 v -15.60979 h -12.4878 v 18.7317 h -37.46341 v -21.85362 h -12.48782 v 24.97554 h -12.4878 z"
+ style="stroke-width:11.7995" />
+ </g>
+</svg>
diff --git a/assets/vector/fiber.svg b/assets/vector/fiber.svg
new file mode 100644
index 0000000..c787eea
--- /dev/null
+++ b/assets/vector/fiber.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="512mm"
+ height="512mm"
+ viewBox="0 0 512 512"
+ version="1.1"
+ id="svg963"
+ sodipodi:docname="fiber.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs7" />
+ <sodipodi:namedview
+ id="namedview5"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="mm"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="0.23856525"
+ inkscape:cx="2854.5649"
+ inkscape:cy="1309.9142"
+ inkscape:window-width="2560"
+ inkscape:window-height="1351"
+ inkscape:window-x="2551"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg963" />
+ <path
+ id="path31930-7"
+ d="M 99.90244,0 C 68.99513,0 37.46341,31.21947 37.46341,62.439058 V 93.658528 124.878 H 24.975611 c -3.121959,0 -6.243906,6.24394 -6.243906,12.48788 L 12.597699,284.56712 C 4.708838,290.27466 0.196684,297.93182 0,305.95123 V 462.0487 h 12.487799 v 24.97565 H 24.975611 C 24.975611,500.81809 33.362112,512 43.707316,512 54.052531,512 62.43902,500.81809 62.43902,487.02435 H 74.92683 V 462.0487 h 12.4878 V 305.95123 c 0,-8.21233 -4.53994,-16.09239 -12.62205,-21.9329 L 68.68293,137.36588 c 0,-6.24394 -3.12195,-12.48788 -6.24391,-12.48788 H 49.951209 v -21.85362 -9.365852 -31.21947 c 0,-18.731705 31.219531,-49.951293 49.951231,-49.951293 h 99.90243 c 18.73171,0 49.95121,31.219588 49.95121,49.951293 V 449.56094 c 0,31.21947 31.53171,62.43906 62.43902,62.43906 h 99.90242 c 30.90738,0 62.43907,-31.21959 62.43907,-62.43906 v -31.21947 -31.21959 h 12.48775 c 3.12193,0 6.24394,-6.24383 6.24394,-12.48776 l 6.10968,-146.65245 C 507.46001,222.14116 511.99493,214.2611 512,206.04877 V 49.951175 H 499.51212 V 24.975647 H 487.02434 C 487.02434,11.181914 478.63784,0 468.29265,0 457.94742,0 449.56093,11.181914 449.56093,24.975647 H 437.07317 V 49.951175 H 424.58539 V 206.04877 c 0.19705,8.01941 4.70884,15.67657 12.59763,21.38411 l 6.13397,147.20124 c 0,6.24393 3.12203,12.48776 6.24394,12.48776 h 12.48778 v 31.21959 31.21947 c 0,18.73171 -31.21948,49.95118 -49.95119,49.95118 H 312.1951 c -18.7317,0 -49.95121,-31.21947 -49.95121,-49.95118 V 62.439058 C 262.24389,31.21947 230.71219,0 199.80487,0 Z m 368.39021,12.487765 c 3.44852,0 6.24394,5.853259 6.24394,12.78051 h -12.48788 c 0,-6.927251 2.79541,-12.78051 6.24394,-12.78051 z m -18.73172,24.975647 h 37.46341 v 12.487763 h -37.46341 z m -12.48776,24.975646 h 62.43895 V 124.878 H 437.07317 Z M 31.219504,137.36588 h 24.975611 v 37.4634 H 40.585357 v 12.48777 H 59.31706 v 37.46342 H 37.46341 v 12.48776 h 24.97561 v 37.46342 H 24.975611 V 262.24388 H 49.951209 V 249.75612 H 28.097558 V 212.2927 H 46.829263 V 199.80482 H 31.219504 V 162.34141 H 43.707316 V 149.85365 H 31.219504 Z m 405.853666,0 h 62.43895 v 12.48777 h -62.43895 z m 0,24.97553 h 62.43895 v 12.48787 h -62.43895 z m 0,24.97564 h 31.21948 31.21947 v 18.73172 c 0,10.3452 -13.97757,18.7317 -31.21947,18.7317 -17.24191,0 -31.21948,-8.3865 -31.21948,-18.7317 z m 12.48776,49.95118 h 37.46341 v 37.46342 h -24.97563 v 12.48788 h 21.85372 v 37.46341 h -18.73169 v 12.48776 h 15.60966 v 37.46342 h -24.97553 v -12.48777 h 12.48778 v -12.48788 h -12.48778 v -37.46343 h 15.60969 v -12.48776 h -18.7317 v -37.4634 h 21.85373 v -12.48776 h -24.97566 z m -405.853614,49.9513 c 17.241924,0 31.219514,8.3865 31.219514,18.7317 v 18.73171 H 43.707316 12.487799 v -18.73171 c 0,-10.3452 13.977605,-18.7317 31.219517,-18.7317 z M 12.487799,337.1707 H 74.92683 v 12.48777 H 12.487799 Z m 0,24.97565 H 74.92683 v 12.48777 H 12.487799 Z m 0,24.97553 H 74.92683 v 62.43906 H 12.487799 Z M 24.975611,462.0487 H 62.43902 v 12.48789 H 24.975611 Z m 12.487799,24.68301 h 12.487799 c 0,6.92726 -2.795374,12.78041 -6.243893,12.78041 -3.448508,0 -6.243906,-5.85315 -6.243906,-12.78041 z"
+ style="stroke-width:11.7994" />
+</svg>
diff --git a/assets/vector/ont-found-no-bg.svg b/assets/vector/ont-found-no-bg.svg
new file mode 100644
index 0000000..70178c6
--- /dev/null
+++ b/assets/vector/ont-found-no-bg.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="120mm"
+ height="120mm"
+ viewBox="0 0 120 120"
+ version="1.1"
+ id="svg28164"
+ sodipodi:docname="ont-found-no-bg.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs11" />
+ <sodipodi:namedview
+ id="namedview9"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="mm"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="1.0051205"
+ inkscape:cx="-90.536408"
+ inkscape:cy="8.4566975"
+ inkscape:window-width="2560"
+ inkscape:window-height="1351"
+ inkscape:window-x="2551"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg28164" />
+ <path
+ id="path31930"
+ d="m 9.3495634,53.470131 v 6.35 c 0,0.584491 0.473832,1.058334 1.0583346,1.058334 h 0.290938 2.884063 v 1.058333 c 0,0.264583 0.529167,0.529167 1.058334,0.529167 l 12.428702,0.517789 c 0.49499,0.684954 1.162822,1.069287 1.858801,1.069711 h 13.229166 c 0,-2.469445 0,-4.938889 0,-7.408334 H 28.928736 c -0.67963,0.01667 -1.328582,0.399071 -1.812293,1.067647 l -12.47521,0.519853 c -0.529167,0 -1.058334,0.264584 -1.058334,0.529167 v 1.058333 h -2.742987 c -0.131088,-0.0042 -0.276807,0 -0.432014,0 v -6.35 z m 19.5791726,4.233334 h 1.5875 v 2.645833 2.645833 h -1.5875 c -0.876753,0 -1.5875,-1.184592 -1.5875,-2.645833 0,-1.461241 0.710747,-2.645833 1.5875,-2.645833 z m 2.645833,0 h 1.058333 v 5.291666 h -1.058333 z m 2.116667,0 h 1.058333 v 5.291666 h -1.058333 z m 2.116666,0 h 5.291667 v 5.291666 h -5.291667 z m -10.583333,1.058333 h 1.058333 v 3.175 h -3.175 v -2.116667 h -1.058333 v 1.852084 h -3.175001 v -1.5875 h -1.058333 v 1.322916 h -3.175002 v -2.116666 h 1.058334 v 1.058333 H 16.7579 v -1.058333 h 3.175002 v 1.322916 h 1.058334 v -1.5875 h 3.175 v 1.852084 h 1.058333 z"
+ sodipodi:nodetypes="cssccsccccccccscccccscccssscccccccccccccccccccccccccccccccccccccccc"
+ style="fill:#0055d4" />
+ <path
+ d="m 41.55654,69.101362 h 71.6139 V 51.815249 H 41.55654 Z M 53.198204,68.043028 H 42.614874 V 66.10275 h 8.11389 V 54.477194 h -8.11389 v -1.603611 h 10.58333 z m 43.744457,0 H 54.256544 V 52.873583 h 42.686117 z m 15.169449,0 H 98.000991 V 66.10275 h 12.029729 l -0.0353,-11.1125 H 98.000971 V 52.873583 H 112.11209 Z M 49.670434,55.343027 v 9.877779 h -7.05556 v -9.877779 h 3.81 z m 56.444446,1.411112 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 v 0.705556 h -1.76389 v 0.705556 h 1.76389 v 1.411111 h -8.113889 l 0.0706,-4.198056 -0.0706,-4.974167 h 8.113889 z m 2.82223,8.466667 h -1.76389 v -9.172223 l 1.75727,-0.01654"
+ id="path2"
+ style="fill:#ffffff" />
+</svg>
diff --git a/assets/vector/ont-found.png b/assets/vector/ont-found.png
new file mode 100644
index 0000000..8a3e45a
--- /dev/null
+++ b/assets/vector/ont-found.png
Binary files differ
diff --git a/assets/img/ont-found.svg b/assets/vector/ont-found.svg
index a5b6f4b..a5b6f4b 100644
--- a/assets/img/ont-found.svg
+++ b/assets/vector/ont-found.svg
diff --git a/assets/vector/ont-not-found.png b/assets/vector/ont-not-found.png
new file mode 100644
index 0000000..2b595ff
--- /dev/null
+++ b/assets/vector/ont-not-found.png
Binary files differ
diff --git a/assets/vector/ont-not-found.svg b/assets/vector/ont-not-found.svg
new file mode 100644
index 0000000..2ed4453
--- /dev/null
+++ b/assets/vector/ont-not-found.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="116.52087mm"
+ height="36.783329mm"
+ viewBox="0 0 116.52087 36.783329"
+ version="1.1"
+ id="svg28164"
+ sodipodi:docname="ont-not-found.svg"
+ inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+ inkscape:export-filename="C:\Users\simon\source\repos\hack-gpon.github.io\assets\vector\ont-not-found.png"
+ inkscape:export-xdpi="25.4"
+ inkscape:export-ydpi="25.4"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs11" />
+ <sodipodi:namedview
+ id="namedview9"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="mm"
+ showgrid="false"
+ inkscape:zoom="0.25128012"
+ inkscape:cx="1353.0716"
+ inkscape:cy="1052.6101"
+ inkscape:window-width="2560"
+ inkscape:window-height="1351"
+ inkscape:window-x="-9"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg28164" />
+ <rect
+ style="fill:#27262b;fill-opacity:1;fill-rule:evenodd;stroke-width:1.65235;stroke-miterlimit:9.33333"
+ id="rect1781"
+ width="512"
+ height="512"
+ x="0"
+ y="0" />
+ <path
+ id="path31930"
+ d="m 7.423,226.18383 v 27.0933 c 0,2.49383 2.0216806,4.51556 4.515553,4.51556 0.436099,0 0.845951,0 1.241334,0 h 12.305314 v 4.51555 c 0,1.12888 2.257773,2.25777 4.515549,2.25777 l 53.029048,2.20923 c 2.111954,2.92247 4.961367,4.56229 7.930874,4.5641 h 56.444368 v -4.51556 h 9.0311 v -4.51554 c 4.98774,0 9.03109,-3.03253 9.03109,-6.77333 0,-3.74079 -4.04335,-6.77332 -9.03109,-6.77332 v -4.51555 h -9.0311 v -4.51556 H 90.960672 c -2.899751,0.0711 -5.66861,1.70271 -7.73244,4.55529 l -53.227482,2.21804 c -2.257776,0 -4.515549,1.12889 -4.515549,2.25778 v 4.51554 H 13.78181 c -0.559308,-0.0179 -1.181041,0 -1.843257,0 v -27.0933 z m 83.537672,18.06221 h 6.773324 v 11.28887 11.28887 h -6.773324 c -3.740808,0 -6.773325,-5.05425 -6.773325,-11.28887 0,-6.23462 3.032517,-11.28887 6.773325,-11.28887 z m 11.288868,0 h 4.51555 v 22.57774 h -4.51555 z m 9.0311,0 h 4.51555 v 22.57774 h -4.51555 z m 9.0311,0 h 22.57775 v 22.57774 h -22.57775 z m -45.155493,4.51555 h 4.515548 v 13.54665 h -13.54665 v -9.03111 h -4.515548 v 7.90222 h -13.54665 v -6.77333 h -4.515548 v 5.64444 H 30.00075 v -9.0311 h 4.515548 v 4.51555 h 4.515548 v -4.51555 h 13.54665 v 5.64444 h 4.515553 v -6.77333 h 13.546649 v 7.90222 h 4.515549 z m 72.248793,0 h 4.51555 v 13.54665 h -4.51555 z m 8.92526,4.51554 c 2.50494,0 4.62139,1.01081 4.62139,2.25778 0,1.24697 -2.11645,2.25778 -4.62139,2.25778 z"
+ style="fill:#3cc285;fill-opacity:1;stroke-width:4.26666" />
+ <path
+ d="M 199.02587,292.877 H 504.57811 V 219.12301 H 199.02587 Z m 49.67103,-4.51555 h -45.15548 v -8.27851 h 34.61922 v -49.60231 h -34.61922 v -6.84206 h 45.15548 z m 186.64278,0 h -182.1272 v -64.72288 h 182.1272 z m 64.7229,0 h -60.20737 v -8.27851 h 51.32678 l -0.15061,-47.41327 h -51.17625 v -9.0311 h 60.20736 z M 233.6451,234.17485 v 42.14513 h -30.10368 v -42.14513 h 16.25598 z m 240.82934,6.02073 v 3.01037 h -7.52593 v 3.01037 h 7.52593 v 3.01036 h -7.52593 v 3.01037 h 7.52593 v 3.01037 h -7.52593 v 3.01036 h 7.52593 v 3.01037 h -7.52593 v 3.01037 h 7.52593 v 3.01036 h -7.52593 v 3.01037 h 7.52593 v 6.02073 h -34.61923 l 0.30123,-17.91168 -0.30123,-21.22308 h 34.61923 z m 12.04149,36.1244 h -7.52592 v -39.13476 l 7.49767,-0.0706"
+ id="path2"
+ style="fill:#ffffff;stroke-width:4.26666" />
+ <rect
+ id="rect13056"
+ height="37.629578"
+ x="60.148411"
+ y="243.86583"
+ width="4.5141273"
+ transform="rotate(-30.427871)"
+ style="fill:#ffffff;stroke-width:4.26666" />
+ <rect
+ id="rect13056-0"
+ height="37.629578"
+ x="-41.968182"
+ y="249.0239"
+ width="4.5141273"
+ transform="rotate(-47.800843)"
+ style="fill:#ffffff;stroke-width:4.26666" />
+ <rect
+ id="rect13056-3"
+ height="37.629578"
+ x="319.45248"
+ y="-197.6151"
+ width="4.5141273"
+ transform="matrix(0.86226741,0.50645328,0.50645326,-0.86226741,0,0)"
+ style="fill:#ffffff;stroke-width:4.26666" />
+ <rect
+ id="rect13056-0-9"
+ height="37.629578"
+ x="337.3288"
+ y="-94.891479"
+ width="4.5141273"
+ transform="matrix(0.67170969,0.74081448,0.74081446,-0.67170971,0,0)"
+ style="fill:#ffffff;stroke-width:4.26666" />
+</svg>
diff --git a/browserconfig.xml b/browserconfig.xml
new file mode 100644
index 0000000..a4f0642
--- /dev/null
+++ b/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square150x150logo src="/mstile-150x150.png"/>
+ <TileColor>#27262b</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>
diff --git a/favicon-16x16.png b/favicon-16x16.png
new file mode 100644
index 0000000..f955b8b
--- /dev/null
+++ b/favicon-16x16.png
Binary files differ
diff --git a/favicon-32x32.png b/favicon-32x32.png
new file mode 100644
index 0000000..4fab9c3
--- /dev/null
+++ b/favicon-32x32.png
Binary files differ
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..30ece53
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/mstile-144x144.png b/mstile-144x144.png
new file mode 100644
index 0000000..e669fa9
--- /dev/null
+++ b/mstile-144x144.png
Binary files differ
diff --git a/mstile-150x150.png b/mstile-150x150.png
new file mode 100644
index 0000000..9590b46
--- /dev/null
+++ b/mstile-150x150.png
Binary files differ
diff --git a/mstile-310x150.png b/mstile-310x150.png
new file mode 100644
index 0000000..b134c60
--- /dev/null
+++ b/mstile-310x150.png
Binary files differ
diff --git a/mstile-310x310.png b/mstile-310x310.png
new file mode 100644
index 0000000..f8f606f
--- /dev/null
+++ b/mstile-310x310.png
Binary files differ
diff --git a/mstile-70x70.png b/mstile-70x70.png
new file mode 100644
index 0000000..8f2e614
--- /dev/null
+++ b/mstile-70x70.png
Binary files differ
diff --git a/safari-pinned-tab.svg b/safari-pinned-tab.svg
new file mode 100644
index 0000000..5c22938
--- /dev/null
+++ b/safari-pinned-tab.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.14, written by Peter Selinger 2001-2017
+</metadata>
+<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M2429 3977 c-1 -1 -3 -60 -4 -132 -2 -71 -3 -134 -4 -140 -1 -6 -132
+-10 -373 -9 -205 0 -384 -3 -398 -8 -14 -5 -36 -20 -50 -32 -21 -20 -37 -24
+-105 -26 -44 -1 -105 -3 -135 -5 -30 -1 -134 -6 -230 -10 -344 -13 -340 -12
+-340 -71 l0 -34 -90 0 -90 0 -1 38 c0 20 -1 103 -1 185 l-1 147 -31 0 -32 0 2
+-187 c2 -225 0 -208 20 -227 12 -13 38 -16 120 -16 l104 0 0 -34 c0 -59 -5
+-58 315 -71 77 -2 201 -8 275 -11 74 -4 149 -7 167 -8 20 -1 43 -12 63 -31
+l31 -30 379 -1 c208 -1 385 -4 392 -6 10 -4 13 -39 13 -147 l-1 -141 2088 0
+2088 0 1 33 c0 35 0 906 -1 948 l0 27 -2085 0 c-1147 0 -2086 0 -2086 -1z
+m671 -66 c4 -1 4 -834 1 -873 -1 -5 -139 -8 -308 -8 l-308 0 0 55 c0 42 4 55
+15 56 8 0 115 1 238 1 l222 1 -2 340 -3 341 -232 -1 -231 -1 -5 31 c-9 66 -26
+62 306 61 166 -1 304 -2 307 -3z m2551 -11 c4 -43 4 -847 1 -857 -3 -10 -261
+-13 -1243 -13 -984 0 -1239 3 -1240 13 -5 56 -3 863 2 867 4 3 563 5 1243 5
+1092 0 1236 -2 1237 -15z m887 -427 l2 -443 -410 0 c-455 0 -412 -6 -412 60 0
+60 -31 55 352 54 l350 0 -1 323 -2 323 -348 0 c-192 0 -349 3 -350 8 -1 11 -1
+106 0 112 1 3 184 5 409 5 l407 0 3 -442z m-3641 12 c1 -208 -2 -285 -10 -286
+-37 -4 -397 -3 -398 1 -3 15 -4 556 -1 563 2 4 94 7 206 7 l202 0 1 -285z
+m3293 205 l0 -40 -49 0 c-30 0 -51 -5 -53 -12 -10 -26 3 -34 52 -31 45 4 50 2
+50 -17 0 -21 -5 -23 -61 -21 -23 1 -39 -4 -42 -12 -9 -23 6 -33 53 -33 38 0
+45 -3 48 -21 3 -18 -2 -21 -40 -21 -64 1 -67 0 -61 -22 4 -17 14 -20 54 -20
+43 0 49 -3 49 -21 0 -18 -5 -20 -46 -18 -31 2 -48 -1 -54 -11 -14 -23 -2 -30
+51 -30 42 0 49 -3 49 -20 0 -17 -7 -20 -49 -20 -34 0 -51 -5 -54 -15 -9 -21
+12 -30 61 -27 l43 2 -3 -43 -3 -42 -230 0 -230 0 -5 264 c-3 144 -3 265 -1
+267 2 2 109 4 238 4 l233 0 0 -40z m164 -228 c1 -168 -3 -262 -9 -263 -5 -1
+-28 -1 -50 -2 l-40 -1 -2 268 -2 267 51 -3 52 -3 0 -263z m-4586 169 c9 -1 12
+-38 12 -151 0 -166 6 -152 -65 -152 -46 0 -52 2 -78 28 -45 45 -53 158 -15
+226 23 40 55 55 107 52 14 -1 32 -3 39 -3z m136 -155 c1 -153 -1 -158 -45
+-148 -15 3 -17 22 -17 152 0 145 0 149 21 152 12 2 26 1 31 -4 5 -4 10 -72 10
+-152z m123 3 c-1 -99 -4 -149 -11 -150 -6 0 -19 -2 -28 -4 -10 -2 -18 1 -19 6
+0 5 -2 74 -2 154 -2 152 0 158 44 147 14 -3 16 -25 16 -153z m369 1 l-1 -154
+-153 -1 -152 0 0 151 c0 83 2 153 4 155 2 2 71 4 153 4 l149 0 0 -155z m-864
+10 c2 -44 2 -85 0 -90 -2 -6 -44 -10 -93 -10 l-89 0 0 60 0 60 -32 0 -33 0 0
+-52 0 -53 -90 0 -90 0 -3 46 c-3 45 -4 47 -32 45 -28 -1 -30 -4 -30 -38 l0
+-38 -93 0 -93 0 1 58 c0 56 1 57 30 57 25 0 30 -4 30 -25 0 -21 5 -26 33 -28
+18 -2 32 0 31 5 -1 4 -1 18 0 31 1 21 5 22 91 22 96 0 97 -1 89 -57 -1 -11 26
+-22 47 -19 15 2 19 12 20 42 1 21 2 42 3 45 1 3 42 6 91 6 l90 -1 0 -53 c0
+-52 0 -53 30 -53 l30 0 0 60 c0 60 0 60 29 60 l29 0 4 -80z"/>
+</g>
+</svg>
diff --git a/site.webmanifest b/site.webmanifest
new file mode 100644
index 0000000..a1ae808
--- /dev/null
+++ b/site.webmanifest
@@ -0,0 +1,20 @@
+{
+ "name": "Hack GPON",
+ "short_name": "Hack GPON",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#27262b",
+ "background_color": "#27262b",
+ "start_url": "https://hack-gpon.github.io/",
+ "display": "standalone"
+}