From ac61ceb1e6fffb10240271891d18131ff380f4f5 Mon Sep 17 00:00:00 2001
From: David Trattnig <david.trattnig@o94.at>
Date: Tue, 25 Aug 2020 12:07:57 +0200
Subject: [PATCH] Created submodules.

---
 .gitmodules                               |    6 +
 contrib/aura-clock/.gitignore             |    4 -
 contrib/aura-clock/README.md              |   93 -
 contrib/aura-clock/package-lock.json      | 2290 ---------------------
 contrib/aura-clock/package.json           |   32 -
 contrib/aura-clock/public/favicon.png     |  Bin 19295 -> 0 bytes
 contrib/aura-clock/public/global.css      |   66 -
 contrib/aura-clock/public/index.html      |   26 -
 contrib/aura-clock/rollup.config.js       |   72 -
 contrib/aura-clock/src/StudioClock.svelte |  490 -----
 contrib/aura-clock/src/main.js            |    1 -
 contrib/engine-api                        |    1 +
 contrib/engine-clock                      |    1 +
 13 files changed, 8 insertions(+), 3074 deletions(-)
 create mode 100644 .gitmodules
 delete mode 100644 contrib/aura-clock/.gitignore
 delete mode 100644 contrib/aura-clock/README.md
 delete mode 100644 contrib/aura-clock/package-lock.json
 delete mode 100644 contrib/aura-clock/package.json
 delete mode 100644 contrib/aura-clock/public/favicon.png
 delete mode 100644 contrib/aura-clock/public/global.css
 delete mode 100644 contrib/aura-clock/public/index.html
 delete mode 100644 contrib/aura-clock/rollup.config.js
 delete mode 100644 contrib/aura-clock/src/StudioClock.svelte
 delete mode 100644 contrib/aura-clock/src/main.js
 create mode 160000 contrib/engine-api
 create mode 160000 contrib/engine-clock

diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..6325ce94
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "contrib/engine-clock"]
+	path = contrib/engine-clock
+	url = git@gitlab.servus.at:aura/engine-clock.git
+[submodule "contrib/engine-api"]
+	path = contrib/engine-api
+	url = git@gitlab.servus.at:aura/engine-api.git
diff --git a/contrib/aura-clock/.gitignore b/contrib/aura-clock/.gitignore
deleted file mode 100644
index da93220b..00000000
--- a/contrib/aura-clock/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/node_modules/
-/public/build/
-
-.DS_Store
diff --git a/contrib/aura-clock/README.md b/contrib/aura-clock/README.md
deleted file mode 100644
index 234b0742..00000000
--- a/contrib/aura-clock/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-*Looking for a shareable component template? Go here --> [sveltejs/component-template](https://github.com/sveltejs/component-template)*
-
----
-
-# svelte app
-
-This is a project template for [Svelte](https://svelte.dev) apps. It lives at https://github.com/sveltejs/template.
-
-To create a new project based on this template using [degit](https://github.com/Rich-Harris/degit):
-
-```bash
-npx degit sveltejs/template svelte-app
-cd svelte-app
-```
-
-*Note that you will need to have [Node.js](https://nodejs.org) installed.*
-
-
-## Get started
-
-Install the dependencies...
-
-```bash
-cd svelte-app
-npm install
-```
-
-...then start [Rollup](https://rollupjs.org):
-
-```bash
-npm run dev
-```
-
-Navigate to [localhost:5000](http://localhost:5000). You should see your app running. Edit a component file in `src`, save it, and reload the page to see your changes.
-
-By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the `sirv` commands in package.json to include the option `--host 0.0.0.0`.
-
-
-## Building and running in production mode
-
-To create an optimised version of the app:
-
-```bash
-npm run build
-```
-
-You can run the newly built app with `npm run start`. This uses [sirv](https://github.com/lukeed/sirv), which is included in your package.json's `dependencies` so that the app will work when you deploy to platforms like [Heroku](https://heroku.com).
-
-
-## Single-page app mode
-
-By default, sirv will only respond to requests that match files in `public`. This is to maximise compatibility with static fileservers, allowing you to deploy your app anywhere.
-
-If you're building a single-page app (SPA) with multiple routes, sirv needs to be able to respond to requests for *any* path. You can make it so by editing the `"start"` command in package.json:
-
-```js
-"start": "sirv public --single"
-```
-
-
-## Deploying to the web
-
-### With [now](https://zeit.co/now)
-
-Install `now` if you haven't already:
-
-```bash
-npm install -g now
-```
-
-Then, from within your project folder:
-
-```bash
-cd public
-now deploy --name my-project
-```
-
-As an alternative, use the [Now desktop client](https://zeit.co/download) and simply drag the unzipped project folder to the taskbar icon.
-
-### With [surge](https://surge.sh/)
-
-Install `surge` if you haven't already:
-
-```bash
-npm install -g surge
-```
-
-Then, from within your project folder:
-
-```bash
-npm run build
-surge public my-project.surge.sh
-```
diff --git a/contrib/aura-clock/package-lock.json b/contrib/aura-clock/package-lock.json
deleted file mode 100644
index 94db01f7..00000000
--- a/contrib/aura-clock/package-lock.json
+++ /dev/null
@@ -1,2290 +0,0 @@
-{
-  "name": "aura-engine-clock",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@babel/code-frame": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-      "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-      "dev": true,
-      "requires": {
-        "@babel/highlight": "^7.8.3"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.8.3",
-      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
-      "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
-      "dev": true,
-      "requires": {
-        "chalk": "^2.0.0",
-        "esutils": "^2.0.2",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@polka/url": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz",
-      "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw=="
-    },
-    "@rollup/plugin-commonjs": {
-      "version": "11.0.2",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz",
-      "integrity": "sha512-MPYGZr0qdbV5zZj8/2AuomVpnRVXRU5XKXb3HVniwRoRCreGlf5kOE081isNWeiLIi6IYkwTX9zE0/c7V8g81g==",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.0.0",
-        "estree-walker": "^1.0.1",
-        "is-reference": "^1.1.2",
-        "magic-string": "^0.25.2",
-        "resolve": "^1.11.0"
-      }
-    },
-    "@rollup/plugin-node-resolve": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz",
-      "integrity": "sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA==",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^3.0.6",
-        "@types/resolve": "0.0.8",
-        "builtin-modules": "^3.1.0",
-        "is-module": "^1.0.0",
-        "resolve": "^1.14.2"
-      }
-    },
-    "@rollup/pluginutils": {
-      "version": "3.0.8",
-      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.8.tgz",
-      "integrity": "sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw==",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^1.0.1"
-      }
-    },
-    "@types/estree": {
-      "version": "0.0.39",
-      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
-      "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
-      "dev": true
-    },
-    "@types/node": {
-      "version": "13.9.0",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz",
-      "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==",
-      "dev": true
-    },
-    "@types/resolve": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
-      "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "acorn": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
-      "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
-      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
-      "dev": true,
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "anymatch": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
-      "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
-      "dev": true,
-      "requires": {
-        "micromatch": "^3.1.4",
-        "normalize-path": "^2.1.1"
-      },
-      "dependencies": {
-        "normalize-path": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
-          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
-          "dev": true,
-          "requires": {
-            "remove-trailing-separator": "^1.0.1"
-          }
-        }
-      }
-    },
-    "arr-diff": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
-      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
-      "dev": true
-    },
-    "arr-flatten": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
-      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
-      "dev": true
-    },
-    "arr-union": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
-      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
-      "dev": true
-    },
-    "array-unique": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
-      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
-      "dev": true
-    },
-    "assign-symbols": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
-      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
-      "dev": true
-    },
-    "async-each": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
-      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
-      "dev": true
-    },
-    "async-limiter": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
-      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
-      "dev": true
-    },
-    "atob": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
-      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
-      "dev": true
-    },
-    "base": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
-      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
-      "dev": true,
-      "requires": {
-        "cache-base": "^1.0.1",
-        "class-utils": "^0.3.5",
-        "component-emitter": "^1.2.1",
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.1",
-        "mixin-deep": "^1.2.0",
-        "pascalcase": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "binary-extensions": {
-      "version": "1.13.1",
-      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
-      "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
-      "dev": true
-    },
-    "bindings": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
-      "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "file-uri-to-path": "1.0.0"
-      }
-    },
-    "braces": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
-      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
-      "dev": true,
-      "requires": {
-        "arr-flatten": "^1.1.0",
-        "array-unique": "^0.3.2",
-        "extend-shallow": "^2.0.1",
-        "fill-range": "^4.0.0",
-        "isobject": "^3.0.1",
-        "repeat-element": "^1.1.2",
-        "snapdragon": "^0.8.1",
-        "snapdragon-node": "^2.0.1",
-        "split-string": "^3.0.2",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
-      "dev": true
-    },
-    "builtin-modules": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
-      "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
-      "dev": true
-    },
-    "cache-base": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
-      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
-      "dev": true,
-      "requires": {
-        "collection-visit": "^1.0.0",
-        "component-emitter": "^1.2.1",
-        "get-value": "^2.0.6",
-        "has-value": "^1.0.0",
-        "isobject": "^3.0.1",
-        "set-value": "^2.0.0",
-        "to-object-path": "^0.3.0",
-        "union-value": "^1.0.0",
-        "unset-value": "^1.0.0"
-      }
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
-      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      }
-    },
-    "chokidar": {
-      "version": "2.1.8",
-      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
-      "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
-      "dev": true,
-      "requires": {
-        "anymatch": "^2.0.0",
-        "async-each": "^1.0.1",
-        "braces": "^2.3.2",
-        "fsevents": "^1.2.7",
-        "glob-parent": "^3.1.0",
-        "inherits": "^2.0.3",
-        "is-binary-path": "^1.0.0",
-        "is-glob": "^4.0.0",
-        "normalize-path": "^3.0.0",
-        "path-is-absolute": "^1.0.0",
-        "readdirp": "^2.2.1",
-        "upath": "^1.1.1"
-      }
-    },
-    "class-utils": {
-      "version": "0.3.6",
-      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
-      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "define-property": "^0.2.5",
-        "isobject": "^3.0.0",
-        "static-extend": "^0.1.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "collection-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
-      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
-      "dev": true,
-      "requires": {
-        "map-visit": "^1.0.0",
-        "object-visit": "^1.0.0"
-      }
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
-      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
-      "dev": true,
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
-    },
-    "commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
-      "dev": true
-    },
-    "component-emitter": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
-      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
-      "dev": true
-    },
-    "console-clear": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
-      "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ=="
-    },
-    "copy-descriptor": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
-      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
-      "dev": true
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
-    },
-    "debug": {
-      "version": "2.6.9",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-      "dev": true,
-      "requires": {
-        "ms": "2.0.0"
-      }
-    },
-    "decode-uri-component": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
-      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
-      "dev": true
-    },
-    "define-property": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
-      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
-      "dev": true,
-      "requires": {
-        "is-descriptor": "^1.0.2",
-        "isobject": "^3.0.1"
-      },
-      "dependencies": {
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
-      "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
-      "dev": true
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true
-    },
-    "expand-brackets": {
-      "version": "2.1.4",
-      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
-      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
-      "dev": true,
-      "requires": {
-        "debug": "^2.3.3",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "posix-character-classes": "^0.1.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "extend-shallow": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
-      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
-      "dev": true,
-      "requires": {
-        "assign-symbols": "^1.0.0",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "extglob": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
-      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
-      "dev": true,
-      "requires": {
-        "array-unique": "^0.3.2",
-        "define-property": "^1.0.0",
-        "expand-brackets": "^2.1.4",
-        "extend-shallow": "^2.0.1",
-        "fragment-cache": "^0.2.1",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "dev": true,
-      "optional": true
-    },
-    "fill-range": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
-      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1",
-        "to-regex-range": "^2.1.0"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
-      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
-      "dev": true
-    },
-    "fragment-cache": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
-      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
-      "dev": true,
-      "requires": {
-        "map-cache": "^0.2.2"
-      }
-    },
-    "fsevents": {
-      "version": "1.2.11",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
-      "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "bindings": "^1.5.0",
-        "nan": "^2.12.1",
-        "node-pre-gyp": "*"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "aproba": {
-          "version": "1.2.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "delegates": "^1.0.0",
-            "readable-stream": "^2.0.6"
-          }
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "balanced-match": "^1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "chownr": {
-          "version": "1.1.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "debug": {
-          "version": "3.2.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        },
-        "deep-extend": {
-          "version": "0.6.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "detect-libc": {
-          "version": "1.0.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "fs-minipass": {
-          "version": "1.2.7",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.6.0"
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "aproba": "^1.0.3",
-            "console-control-strings": "^1.0.0",
-            "has-unicode": "^2.0.0",
-            "object-assign": "^4.1.0",
-            "signal-exit": "^3.0.0",
-            "string-width": "^1.0.1",
-            "strip-ansi": "^3.0.1",
-            "wide-align": "^1.1.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^3.0.4",
-            "once": "^1.3.0",
-            "path-is-absolute": "^1.0.0"
-          }
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "iconv-lite": {
-          "version": "0.4.24",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        },
-        "ignore-walk": {
-          "version": "3.0.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimatch": "^3.0.4"
-          }
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "once": "^1.3.0",
-            "wrappy": "1"
-          }
-        },
-        "inherits": {
-          "version": "2.0.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "number-is-nan": "^1.0.0"
-          }
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "minipass": {
-          "version": "2.9.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.0"
-          }
-        },
-        "minizlib": {
-          "version": "1.3.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minipass": "^2.9.0"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "needle": {
-          "version": "2.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "debug": "^3.2.6",
-            "iconv-lite": "^0.4.4",
-            "sax": "^1.2.4"
-          }
-        },
-        "node-pre-gyp": {
-          "version": "0.14.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "detect-libc": "^1.0.2",
-            "mkdirp": "^0.5.1",
-            "needle": "^2.2.1",
-            "nopt": "^4.0.1",
-            "npm-packlist": "^1.1.6",
-            "npmlog": "^4.0.2",
-            "rc": "^1.2.7",
-            "rimraf": "^2.6.1",
-            "semver": "^5.3.0",
-            "tar": "^4.4.2"
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "abbrev": "1",
-            "osenv": "^0.1.4"
-          }
-        },
-        "npm-bundled": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "npm-normalize-package-bin": "^1.0.1"
-          }
-        },
-        "npm-normalize-package-bin": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "npm-packlist": {
-          "version": "1.4.7",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ignore-walk": "^3.0.1",
-            "npm-bundled": "^1.0.1"
-          }
-        },
-        "npmlog": {
-          "version": "4.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "are-we-there-yet": "~1.1.2",
-            "console-control-strings": "~1.1.0",
-            "gauge": "~2.7.3",
-            "set-blocking": "~2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "wrappy": "1"
-          }
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "osenv": {
-          "version": "0.1.5",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "os-homedir": "^1.0.0",
-            "os-tmpdir": "^1.0.0"
-          }
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "rc": {
-          "version": "1.2.8",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "deep-extend": "^0.6.0",
-            "ini": "~1.3.0",
-            "minimist": "^1.2.0",
-            "strip-json-comments": "~2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "bundled": true,
-              "dev": true,
-              "optional": true
-            }
-          }
-        },
-        "readable-stream": {
-          "version": "2.3.6",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "sax": {
-          "version": "1.2.4",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "5.7.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "string-width": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "code-point-at": "^1.0.0",
-            "is-fullwidth-code-point": "^1.0.0",
-            "strip-ansi": "^3.0.0"
-          }
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "tar": {
-          "version": "4.4.13",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chownr": "^1.1.1",
-            "fs-minipass": "^1.2.5",
-            "minipass": "^2.8.6",
-            "minizlib": "^1.2.1",
-            "mkdirp": "^0.5.0",
-            "safe-buffer": "^5.1.2",
-            "yallist": "^3.0.3"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "wide-align": {
-          "version": "1.1.3",
-          "bundled": true,
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "string-width": "^1.0.2 || 2"
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        },
-        "yallist": {
-          "version": "3.1.1",
-          "bundled": true,
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "get-port": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
-      "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
-    },
-    "get-value": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
-      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
-      "dev": true
-    },
-    "glob-parent": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
-      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
-      "dev": true,
-      "requires": {
-        "is-glob": "^3.1.0",
-        "path-dirname": "^1.0.0"
-      },
-      "dependencies": {
-        "is-glob": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
-          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.0"
-          }
-        }
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.3",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
-      "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
-      "dev": true
-    },
-    "has-flag": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
-      "dev": true
-    },
-    "has-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
-      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
-      "dev": true,
-      "requires": {
-        "get-value": "^2.0.6",
-        "has-values": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "has-values": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
-      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "kind-of": "^4.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
-          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
-    },
-    "is-accessor-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
-      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-binary-path": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
-      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^1.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "dev": true
-    },
-    "is-data-descriptor": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
-      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-descriptor": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
-      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
-      "dev": true,
-      "requires": {
-        "is-accessor-descriptor": "^0.1.6",
-        "is-data-descriptor": "^0.1.4",
-        "kind-of": "^5.0.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
-          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
-          "dev": true
-        }
-      }
-    },
-    "is-extendable": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
-      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
-      "dev": true
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
-      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-module": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
-      "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
-      "dev": true
-    },
-    "is-number": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
-      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "is-plain-object": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
-      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "is-reference": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz",
-      "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "0.0.39"
-      }
-    },
-    "is-windows": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
-      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
-      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
-      "dev": true
-    },
-    "jest-worker": {
-      "version": "24.9.0",
-      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
-      "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
-      "dev": true,
-      "requires": {
-        "merge-stream": "^2.0.0",
-        "supports-color": "^6.1.0"
-      },
-      "dependencies": {
-        "supports-color": {
-          "version": "6.1.0",
-          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
-          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^3.0.0"
-          }
-        }
-      }
-    },
-    "js-tokens": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
-      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
-      "dev": true
-    },
-    "kind-of": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
-      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
-      "dev": true
-    },
-    "kleur": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
-      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
-    },
-    "livereload": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.8.2.tgz",
-      "integrity": "sha512-8wCvhiCL4cGVoT3U5xoe+UjpiiVZLrlOvr6dbhb1VlyC5QarhrlyRRt4z7EMGO4KSgXj+tKF/dr284F28/wI+g==",
-      "dev": true,
-      "requires": {
-        "chokidar": "^2.1.5",
-        "opts": ">= 1.2.0",
-        "ws": "^6.2.1"
-      }
-    },
-    "local-access": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.0.1.tgz",
-      "integrity": "sha512-ykt2pgN0aqIy6KQC1CqdWTWkmUwNgaOS6dcpHVjyBJONA+Xi7AtSB1vuxC/U/0tjIP3wcRudwQk1YYzUvzk2bA=="
-    },
-    "magic-string": {
-      "version": "0.25.7",
-      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
-      "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
-      "dev": true,
-      "requires": {
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
-      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
-      "dev": true
-    },
-    "map-visit": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
-      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
-      "dev": true,
-      "requires": {
-        "object-visit": "^1.0.0"
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
-      "dev": true
-    },
-    "micromatch": {
-      "version": "3.1.10",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
-      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "braces": "^2.3.1",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "extglob": "^2.0.4",
-        "fragment-cache": "^0.2.1",
-        "kind-of": "^6.0.2",
-        "nanomatch": "^1.2.9",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.2"
-      }
-    },
-    "mime": {
-      "version": "2.4.4",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
-      "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
-    },
-    "mixin-deep": {
-      "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
-      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.2",
-        "is-extendable": "^1.0.1"
-      },
-      "dependencies": {
-        "is-extendable": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
-          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
-          "dev": true,
-          "requires": {
-            "is-plain-object": "^2.0.4"
-          }
-        }
-      }
-    },
-    "mri": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz",
-      "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w=="
-    },
-    "ms": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
-    },
-    "nan": {
-      "version": "2.14.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
-      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
-      "dev": true,
-      "optional": true
-    },
-    "nanomatch": {
-      "version": "1.2.13",
-      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
-      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
-      "dev": true,
-      "requires": {
-        "arr-diff": "^4.0.0",
-        "array-unique": "^0.3.2",
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "fragment-cache": "^0.2.1",
-        "is-windows": "^1.0.2",
-        "kind-of": "^6.0.2",
-        "object.pick": "^1.3.0",
-        "regex-not": "^1.0.0",
-        "snapdragon": "^0.8.1",
-        "to-regex": "^3.0.1"
-      }
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-      "dev": true
-    },
-    "object-copy": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
-      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
-      "dev": true,
-      "requires": {
-        "copy-descriptor": "^0.1.0",
-        "define-property": "^0.2.5",
-        "kind-of": "^3.0.3"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "object-visit": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
-      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
-      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "opts": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/opts/-/opts-1.2.7.tgz",
-      "integrity": "sha512-hwZhzGGG/GQ7igxAVFOEun2N4fWul31qE9nfBdCnZGQCB5+L7tN9xZ+94B4aUpLOJx/of3zZs5XsuubayQYQjA==",
-      "dev": true
-    },
-    "pascalcase": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
-      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
-      "dev": true
-    },
-    "path-dirname": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
-      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-      "dev": true
-    },
-    "posix-character-classes": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
-      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
-      "dev": true
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "readdirp": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
-      "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
-      "dev": true,
-      "requires": {
-        "graceful-fs": "^4.1.11",
-        "micromatch": "^3.1.10",
-        "readable-stream": "^2.0.2"
-      }
-    },
-    "regex-not": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
-      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "remove-trailing-separator": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
-      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
-      "dev": true
-    },
-    "repeat-element": {
-      "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
-      "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
-      "dev": true
-    },
-    "repeat-string": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
-      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
-      "dev": true
-    },
-    "require-relative": {
-      "version": "0.8.7",
-      "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
-      "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
-      "dev": true
-    },
-    "resolve": {
-      "version": "1.15.1",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
-      "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
-      "dev": true,
-      "requires": {
-        "path-parse": "^1.0.6"
-      }
-    },
-    "resolve-url": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
-      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
-      "dev": true
-    },
-    "ret": {
-      "version": "0.1.15",
-      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
-      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
-      "dev": true
-    },
-    "rollup": {
-      "version": "1.32.1",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz",
-      "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==",
-      "dev": true,
-      "requires": {
-        "@types/estree": "*",
-        "@types/node": "*",
-        "acorn": "^7.1.0"
-      }
-    },
-    "rollup-plugin-livereload": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-1.0.4.tgz",
-      "integrity": "sha512-nbnSP8Mj2mmLZkrf080z3PrdacmpAW6UkmgM+BWClcJ8MSsruPONGTwirhZaNNHjUYvkJ+iF5/pSk4g0KV2uVQ==",
-      "dev": true,
-      "requires": {
-        "livereload": "0.8.0 || ^0.8.2"
-      }
-    },
-    "rollup-plugin-svelte": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.1.tgz",
-      "integrity": "sha512-wP3CnKHjR4fZUgNm5Iey7eItnxwnH/nAw568WJ8dpMSchBxxZ/DmKSx8e6h8k/B6SwG1wfGvWehadFJHcuFFSw==",
-      "dev": true,
-      "requires": {
-        "require-relative": "^0.8.7",
-        "rollup-pluginutils": "^2.3.3",
-        "sourcemap-codec": "^1.4.4"
-      }
-    },
-    "rollup-plugin-terser": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.2.0.tgz",
-      "integrity": "sha512-jQI+nYhtDBc9HFRBz8iGttQg7li9klmzR62RG2W2nN6hJ/FI2K2ItYQ7kJ7/zn+vs+BP1AEccmVRjRN989I+Nw==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "^7.5.5",
-        "jest-worker": "^24.9.0",
-        "rollup-pluginutils": "^2.8.2",
-        "serialize-javascript": "^2.1.2",
-        "terser": "^4.6.2"
-      }
-    },
-    "rollup-pluginutils": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
-      "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
-      "dev": true,
-      "requires": {
-        "estree-walker": "^0.6.1"
-      },
-      "dependencies": {
-        "estree-walker": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
-          "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
-          "dev": true
-        }
-      }
-    },
-    "sade": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.3.tgz",
-      "integrity": "sha512-m4BctppMvJ60W1dXnHq7jMmFe3hPJZDAH85kQ3ACTo7XZNVUuTItCQ+2HfyaMeV5cKrbw7l4vD/6We3GBxvdJw==",
-      "requires": {
-        "mri": "^1.1.0"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
-    },
-    "safe-regex": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
-      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
-      "dev": true,
-      "requires": {
-        "ret": "~0.1.10"
-      }
-    },
-    "serialize-javascript": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
-      "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
-      "dev": true
-    },
-    "set-value": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
-      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^2.0.1",
-        "is-extendable": "^0.1.1",
-        "is-plain-object": "^2.0.3",
-        "split-string": "^3.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "sirv": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.2.tgz",
-      "integrity": "sha512-dQbZnsMaIiTQPZmbGmktz+c74zt/hyrJEB4tdp2Jj0RNv9J6B/OWR5RyrZEvIn9fyh9Zlg2OlE2XzKz6wMKGAw==",
-      "requires": {
-        "@polka/url": "^0.5.0",
-        "mime": "^2.3.1"
-      }
-    },
-    "sirv-cli": {
-      "version": "0.4.5",
-      "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-0.4.5.tgz",
-      "integrity": "sha512-Fl6icSm0EwPrXSGid2xphMp//WNTSX2yENRAGnJuuZNmdc8LvE/BtdZD3MPn28ifAfDqTMwbB3dpcZojAIOiBg==",
-      "requires": {
-        "console-clear": "^1.1.0",
-        "get-port": "^3.2.0",
-        "kleur": "^3.0.0",
-        "local-access": "^1.0.1",
-        "sade": "^1.4.0",
-        "sirv": "^0.4.2",
-        "tinydate": "^1.0.0"
-      }
-    },
-    "snapdragon": {
-      "version": "0.8.2",
-      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
-      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
-      "dev": true,
-      "requires": {
-        "base": "^0.11.1",
-        "debug": "^2.2.0",
-        "define-property": "^0.2.5",
-        "extend-shallow": "^2.0.1",
-        "map-cache": "^0.2.2",
-        "source-map": "^0.5.6",
-        "source-map-resolve": "^0.5.0",
-        "use": "^3.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        },
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "dev": true,
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        }
-      }
-    },
-    "snapdragon-node": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
-      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^1.0.0",
-        "isobject": "^3.0.0",
-        "snapdragon-util": "^3.0.1"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
-          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^1.0.0"
-          }
-        },
-        "is-accessor-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
-          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-data-descriptor": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
-          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
-          "dev": true,
-          "requires": {
-            "kind-of": "^6.0.0"
-          }
-        },
-        "is-descriptor": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
-          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
-          "dev": true,
-          "requires": {
-            "is-accessor-descriptor": "^1.0.0",
-            "is-data-descriptor": "^1.0.0",
-            "kind-of": "^6.0.2"
-          }
-        }
-      }
-    },
-    "snapdragon-util": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
-      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.2.0"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
-      "dev": true
-    },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
-      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
-      "dev": true,
-      "requires": {
-        "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
-      }
-    },
-    "source-map-support": {
-      "version": "0.5.16",
-      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
-      "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
-      "dev": true,
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
-      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
-      "dev": true
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
-      "dev": true
-    },
-    "split-string": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
-      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
-      "dev": true,
-      "requires": {
-        "extend-shallow": "^3.0.0"
-      }
-    },
-    "static-extend": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
-      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
-      "dev": true,
-      "requires": {
-        "define-property": "^0.2.5",
-        "object-copy": "^0.1.0"
-      },
-      "dependencies": {
-        "define-property": {
-          "version": "0.2.5",
-          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
-          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
-          "dev": true,
-          "requires": {
-            "is-descriptor": "^0.1.0"
-          }
-        }
-      }
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "supports-color": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
-      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
-      "dev": true,
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "svelte": {
-      "version": "3.19.2",
-      "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.19.2.tgz",
-      "integrity": "sha512-Jswg065u8R9QYcN0rdpTQSFIr0hFq7YUzcPpEY6ZpFSAWkJKZG9AJvHE1d8+NJDTfr7SzKrO6EYssYYkUmszpA==",
-      "dev": true
-    },
-    "terser": {
-      "version": "4.6.6",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.6.tgz",
-      "integrity": "sha512-4lYPyeNmstjIIESr/ysHg2vUPRGf2tzF9z2yYwnowXVuVzLEamPN1Gfrz7f8I9uEPuHcbFlW4PLIAsJoxXyJ1g==",
-      "dev": true,
-      "requires": {
-        "commander": "^2.20.0",
-        "source-map": "~0.6.1",
-        "source-map-support": "~0.5.12"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        }
-      }
-    },
-    "tinydate": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.2.0.tgz",
-      "integrity": "sha512-3GwPk8VhDFnUZ2TrgkhXJs6hcMAIIw4x/xkz+ayK6dGoQmp2nUwKzBXK0WnMsqkh6vfUhpqQicQF3rbshfyJkg=="
-    },
-    "to-object-path": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
-      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
-      "dev": true,
-      "requires": {
-        "kind-of": "^3.0.2"
-      },
-      "dependencies": {
-        "kind-of": {
-          "version": "3.2.2",
-          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
-          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
-          "dev": true,
-          "requires": {
-            "is-buffer": "^1.1.5"
-          }
-        }
-      }
-    },
-    "to-regex": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
-      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
-      "dev": true,
-      "requires": {
-        "define-property": "^2.0.2",
-        "extend-shallow": "^3.0.2",
-        "regex-not": "^1.0.2",
-        "safe-regex": "^1.1.0"
-      }
-    },
-    "to-regex-range": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
-      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
-      "dev": true,
-      "requires": {
-        "is-number": "^3.0.0",
-        "repeat-string": "^1.6.1"
-      }
-    },
-    "union-value": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
-      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
-      "dev": true,
-      "requires": {
-        "arr-union": "^3.1.0",
-        "get-value": "^2.0.6",
-        "is-extendable": "^0.1.1",
-        "set-value": "^2.0.1"
-      }
-    },
-    "unset-value": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
-      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
-      "dev": true,
-      "requires": {
-        "has-value": "^0.3.1",
-        "isobject": "^3.0.0"
-      },
-      "dependencies": {
-        "has-value": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
-          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
-          "dev": true,
-          "requires": {
-            "get-value": "^2.0.3",
-            "has-values": "^0.1.4",
-            "isobject": "^2.0.0"
-          },
-          "dependencies": {
-            "isobject": {
-              "version": "2.1.0",
-              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
-              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
-              "dev": true,
-              "requires": {
-                "isarray": "1.0.0"
-              }
-            }
-          }
-        },
-        "has-values": {
-          "version": "0.1.4",
-          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
-          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
-          "dev": true
-        }
-      }
-    },
-    "upath": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
-      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
-      "dev": true
-    },
-    "urix": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
-      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
-      "dev": true
-    },
-    "use": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
-      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
-      "dev": true
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
-    },
-    "ws": {
-      "version": "6.2.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
-      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
-      "dev": true,
-      "requires": {
-        "async-limiter": "~1.0.0"
-      }
-    }
-  }
-}
diff --git a/contrib/aura-clock/package.json b/contrib/aura-clock/package.json
deleted file mode 100644
index d30952b4..00000000
--- a/contrib/aura-clock/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "name": "aura-engine-clock",
-  "version": "1.0.0",
-  "author": {
-    "name": "David Trattnig",
-    "email": "david.trattnig@subsquare.at",
-    "url": "https://subsquare.at"
-  },
-  "license": "AGPL-3.0-only",
-  "homepage": "https://gitlab.servus.at/aura/meta",
-  "repository": {
-    "type": "git",
-    "url": "git@gitlab.servus.at:aura/engine.git"
-  },
-  "scripts": {
-    "build": "rollup -c",
-    "dev": "rollup -c -w",
-    "start": "sirv public"
-  },
-  "devDependencies": {
-    "@rollup/plugin-commonjs": "^11.0.0",
-    "@rollup/plugin-node-resolve": "^7.0.0",
-    "rollup": "^1.20.0",
-    "rollup-plugin-livereload": "^1.0.0",
-    "rollup-plugin-svelte": "^5.0.3",
-    "rollup-plugin-terser": "^5.1.2",
-    "svelte": "^3.0.0"
-  },
-  "dependencies": {
-    "sirv-cli": "^0.4.4"
-  }
-}
diff --git a/contrib/aura-clock/public/favicon.png b/contrib/aura-clock/public/favicon.png
deleted file mode 100644
index b210b336cd8f214dd83f2ea3dc6ce6d9cc413937..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19295
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
Xp$BwdW`X`UpbZS3u6{1-oD!M<<u*b=

diff --git a/contrib/aura-clock/public/global.css b/contrib/aura-clock/public/global.css
deleted file mode 100644
index ec905f5e..00000000
--- a/contrib/aura-clock/public/global.css
+++ /dev/null
@@ -1,66 +0,0 @@
-html, body {
-	position: relative;
-	width: 100%;
-	height: 100%;
-}
-
-body {
-	color: #333;
-	margin: 0;
-	padding: 8px;
-	box-sizing: border-box;
-	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
-}
-
-a {
-	color: rgb(0,100,200);
-	text-decoration: none;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-a:visited {
-	color: rgb(0,80,160);
-}
-
-label {
-	display: block;
-}
-
-input, button, select, textarea {
-	font-family: inherit;
-	font-size: inherit;
-	padding: 0.4em;
-	margin: 0 0 0.5em 0;
-	box-sizing: border-box;
-	border: 1px solid #ccc;
-	border-radius: 2px;
-}
-
-input:disabled {
-	color: #ccc;
-}
-
-input[type="range"] {
-	height: 0;
-}
-
-button {
-	color: #333;
-	background-color: #f4f4f4;
-	outline: none;
-}
-
-button:disabled {
-	color: #999;
-}
-
-button:not(:disabled):active {
-	background-color: #ddd;
-}
-
-button:focus {
-	border-color: #666;
-}
diff --git a/contrib/aura-clock/public/index.html b/contrib/aura-clock/public/index.html
deleted file mode 100644
index 555c98f1..00000000
--- a/contrib/aura-clock/public/index.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-	<meta charset='utf-8'>
-	<meta name='viewport' content='width=device-width,initial-scale=1'>
-
-	<title>Aura Engine - Studio Clock</title>
-
-	<link rel='icon' type='image/png' href='/favicon.png'>
-	<link rel='stylesheet' href='/global.css'>
-	<link rel='stylesheet' href='/build/aura-clock-bundle.css'>
-
-	<script defer src='/build/aura-clock-bundle.js'></script>
-</head>
-
-<body style="background-color: black;">
-	<aura-clock 
-		name="Studio Clock" 
-		logo="https://o94.at/themes/custom/radio_orange/logo1.png" 
-		logosize="180px" 
-		api="http://localhost:3333/api/v1/"
-		css="http://localhost:3333/css/aura.css">
-		
-	</aura-clock>
-</body>
-</html>
diff --git a/contrib/aura-clock/rollup.config.js b/contrib/aura-clock/rollup.config.js
deleted file mode 100644
index c6a5c217..00000000
--- a/contrib/aura-clock/rollup.config.js
+++ /dev/null
@@ -1,72 +0,0 @@
-import svelte from 'rollup-plugin-svelte';
-import resolve from '@rollup/plugin-node-resolve';
-import commonjs from '@rollup/plugin-commonjs';
-import livereload from 'rollup-plugin-livereload';
-import { terser } from 'rollup-plugin-terser';
-
-const production = !process.env.ROLLUP_WATCH;
-
-export default {
-	input: 'src/main.js',
-	output: {
-		sourcemap: true,
-		format: 'iife',
-		name: 'app',
-		file: 'public/build/aura-clock-bundle.js'
-	},
-	plugins: [
-		svelte({
-			// enable run-time checks when not in production
-			dev: !production,
-			// we'll extract any component CSS out into
-			// a separate file - better for performance
-			css: css => {
-				css.write('public/build/aura-clock-bundle.css');
-			},
-			customElement: true
-		}),
-
-		// If you have external dependencies installed from
-		// npm, you'll most likely need these plugins. In
-		// some cases you'll need additional configuration -
-		// consult the documentation for details:
-		// https://github.com/rollup/plugins/tree/master/packages/commonjs
-		resolve({
-			browser: true,
-			dedupe: ['svelte']
-		}),
-		commonjs(),
-
-		// In dev mode, call `npm run start` once
-		// the bundle has been generated
-		!production && serve(),
-
-		// Watch the `public` directory and refresh the
-		// browser on changes when not in production
-		!production && livereload('public'),
-
-		// If we're building for production (npm run build
-		// instead of npm run dev), minify
-		production && terser()
-	],
-	watch: {
-		clearScreen: false
-	}
-};
-
-function serve() {
-	let started = false;
-
-	return {
-		writeBundle() {
-			if (!started) {
-				started = true;
-
-				require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
-					stdio: ['ignore', 'inherit', 'inherit'],
-					shell: true
-				});
-			}
-		}
-	};
-}
diff --git a/contrib/aura-clock/src/StudioClock.svelte b/contrib/aura-clock/src/StudioClock.svelte
deleted file mode 100644
index 7470d42a..00000000
--- a/contrib/aura-clock/src/StudioClock.svelte
+++ /dev/null
@@ -1,490 +0,0 @@
-<svelte:options tag="aura-clock"/>
-<main bind:this={rootElement}></main>
-<script>
-	import { onMount } from 'svelte';
-	export let css = "";
-	export let api = "http://localhost:3333/api/v1";
-	export let name = "Studio Clock";
-	export let logo = "https://gitlab.servus.at/aura/meta/-/raw/master/images/aura-logo.png";
-	export let logosize  = "100px";
-	export let noScheduleMessage = "Nothing scheduled!";
-
-	let time = new Date(); 
-	let queryCurrent = "/clock";
-	let rootElement;
-	let data;
-	let currentTrack = null;
-	let timeLeft;
-
-
-	// these automatically update when `time`
-	// changes, because of the `$:` prefix
-	$: hours = time.getHours();
-	$: minutes = time.getMinutes();
-	$: seconds = time.getSeconds();
-
-	data = fetchApi(queryCurrent);
-
-
-	onMount(() => {
-		const interval = setInterval(() => {
-			time = new Date();
-			timeLeft -= 1;
-
-			if (timeLeft <= 0 || data == null) {
-				currentTrack = null;
-				data = null;
-				data = fetchApi(queryCurrent);
-			}
-		}, 1000);
-
-		return () => {
-			clearInterval(interval);
-		};
-	});
-
-	async function fetchApi(query) {
-		let response;
-		let data;
-
-		try {
-			response = await fetch(api+query);
-		} catch {
-			throw new Error("Cannot connect to Engine!");
-		}
-
-		try {
-			data = await response.json();
-		} catch(e) {
-			console.log("Error while converting response to JSON!", e);
-			throw new Error(response.statusText);
-		}
-
-		if (response.ok) {
-			return data;
-		} else {
-			console.log("Error:", data);
-			throw new Error(data.message);
-		}
-	}
-
-	function initComponent(info) {
-
-		/* Load external CSS */
-		if (css != null)
-			loadExternalCss(rootElement, css);
-
-		/* Set currently loaded data */
-		if (currentTrack == null && info != null && info.track != null) {
-			currentTrack = info;
-			
-			let t = time - Date.parse(info.track_start);
-			t = parseInt(t/1000);
-
-			timeLeft = info.track.duration - t - 3; /* FIXME improve timings in coordination with scheduler/trackservice/LQS */
-			console.log("Current Data", info);
-		}
-		return "";
-	}
-
-	function displayTitle(track) {
-		if (track != null) {
-			let artist = "";
-			if (track.artist != "")
-				artist = track.artist + " - ";
-			return artist + track.title;
-		}
-		return "";
-	}
-
-	function formatTime(seconds) {
-		if (seconds != null && Number.isInteger(seconds)) {
-			let d = new Date(null);
-			d.setSeconds(seconds);
-
-			let s;
-			if (seconds > 3600)
-				s = d.toISOString().substr(11, 8);
-			else
-				s = d.toISOString().substr(14, 5);
-			return s;
-		}
-		return "";
-	}
-
-	function displayShowName(show) {
-		let name = ""
-		if (show == null || show.name == null) {
-			name = '<span class="error">'+noScheduleMessage+'</span>';
-		} else {
-			name = show.name;
-		}
-		return name;
-	}
-
-	function displayShowSchedule(schedule) {
-		let str = "";
-
-		if (schedule != null && schedule.schedule_start != null) {
-			let scheduleStart = ""
-			let scheduleEnd = "";
-
-			if (schedule.schedule_start != null) {
-				let scheduleStart = new Date(Date.parse(schedule.schedule_start));
-				scheduleStart = scheduleStart.toLocaleTimeString(navigator.language, {
-					hour: '2-digit',
-					minute:'2-digit'
-				});
-				str = "(" + scheduleStart;
-			}
-			if (schedule.schedule_end != null) {
-				scheduleEnd = new Date(Date.parse(schedule.schedule_end));
-				scheduleEnd = scheduleEnd.toLocaleTimeString(navigator.language, {
-					hour: '2-digit',
-					minute:'2-digit'
-				});
-				str = str + " - " + scheduleEnd + ")";
-			} else {
-				str += ")";
-			}
-
-		}
-		return str;
-	}
-
-	function isActive(entry, currentTrack) {
-		if (currentTrack != null && entry.id == currentTrack.id) {
-			// Scroll to current playlist entry
-			location.hash = "#current-playlist-entry";
-			return true;
-		}
-		return false;
-	}
-
-	function loadExternalCss(root, file) {
-		let element = document.createElement("link");
-		element.setAttribute("rel", "stylesheet");
-		element.setAttribute("type", "text/css");
-		element.setAttribute("href", file);
-		root.appendChild(element);
-	}
-	
-</script>
-
-<style>
-
-	#station-header {
-		width: 100%;
-		height: 50px;
-		/* margin: 20px 100px; */
-		padding: 40px 100px;
-	}
-
-	#station-name {
-		margin: 0;
-    	font-size: 3em;
-		line-height: 80px;
-	}
-
-	#station-logo {
-		align-content: left;
-		text-align: right;
-		margin: 0 40px 0 10px;
-		opacity: 0.5;
-		filter: invert(100%);
-	}
-
-	#studio-clock {
-		width: calc(100% - 200px);
-		height: calc(100% - 500px);
-		margin: 100px;
-		display: -webkit-flex;
-		display: -ms-flexbox;
-		display: flex;
-		/* border: 2px solid #333; */
-		flex-direction: row;
-	}
-
-	#left-column {
-		width: 30%;
-		padding: 25px;
-	}
-
-	#right-column {
-		width: 70%;
-		padding: 25px 25px 25px 50px;
-	}
-
-	#current-schedule,
-	#next-schedule {
-		margin: 0 0 40px 20px;
-	}
-
-	#next-schedule {
-		background-color:rgb(24, 24, 24);
-		margin-right: 20px;
-		padding: 12px;
-	}
-
-	#current-schedule .schedule-title {
-		color: #ccc;
-		font-size: 3.5em;
-	}
-	#next-schedule .schedule-title {
-		color: gray !important;
-		font-size: 2em;
-	}
-
-	#playlist {
-		border: 2px solid #333;
-		margin: 20px 20px 40px 20px;
-		padding: 10px;
-		height: calc(80% - 100px);
-		overflow-y: auto;
-		scroll-behavior: smooth; 
-		background-color: #111;
-		display: flex;
-   		align-items: center;
-	}
-
-	#playlist::-webkit-scrollbar-track
-	{
-		border-radius: 10px;
-		-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
-		background-color: rgb(77, 73, 73);
-	}
-
-	#playlist::-webkit-scrollbar
-	{
-		width: 12px;
-		background-color: rgb(0, 0, 0);
-	}
-
-	#playlist::-webkit-scrollbar-thumb
-	{
-		border-radius: 10px;
-		-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
-		background-color: rgb(34, 32, 32);
-	}
-
-	.playlist-entry {
-		font-size: 1.9em;
-		padding-left: 53px;
-	}
-
-	#current-track * {
-		font-size: 1.5em;
-	}
-
-	.play-icon,
-	.track-time-left {
-		margin: 25px 50px;
-	}
-
-	.is-active {
-		color: green;
-		padding-left: 0;
-	}
-
-	.is-active .track-title::before {
-		content: "\00a0\00a0â–¶\00a0\00a0\00a0";
-		font-size: larger; 
-		color: green;
-	}
-
-	.is-active .track-time-left {
-		color: rgb(43, 241, 36);
-		background-color: #222;
-		padding: 5px 15px;
-	}
-
-	.error {
-		font-size: 1.3em;
-		color:red;
-		height:100%;
-		display : flex;
-		align-items : center;
-		justify-content: center;
-	}
-
-	svg {
-		width: 100%;
-		height: 100%;
-	}
-
-	.clock-face {
-		stroke: rgb(66, 66, 66);
-		fill: black;
-	}
-
-	.minor {
-		stroke: rgb(132, 132, 132);
-		stroke-width: 0.5;
-	}
-
-	.major {
-		stroke: rgb(162, 162, 162);
-		stroke-width: 1;
-	}
-
-	.hour {
-		stroke: rgba(255, 255, 255, 0.705);
-	}
-
-	.minute {
-		stroke: rgba(255, 255, 255, 0.705);
-	}
-
-	.second, .second-counterweight {
-		stroke: rgb(180,0,0);
-	}
-
-	.second-counterweight {
-		/* stroke-width: 3; */
-	}
-
-	footer {
-		width: 100%;
-		text-align: center;
-		font-size: 0.8em;
-		color: gray;
-		opacity: 0.5;
-	}
-
-	footer a {
-		color: gray;
-		text-decoration: underline;
-	}
-
-	footer #aura-logo {
-		/* opacity: 0.5; */
-		filter: invert(100%);
-		width: 75px;
-		margin: 0 0 20px 0;
-	}
-
-</style>
-
-
-
-<div id="station-header">
-	<img id="station-logo" src="{logo}" style="width:{logosize}" alt="Radio Station" align="left" />
-	<h1 id="station-name">{name}</h1>
-</div>
-
-<div id="studio-clock">
-	<div id="left-column" class="column">
-		<svg viewBox='-50 -50 100 100'>
-			<circle class='clock-face' r='48'/>
-
-			<!-- markers -->
-			{#each [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55] as minute}
-				<line
-					class='major'
-					y1='35'
-					y2='45'
-					transform='rotate({30 * minute})'
-				/>
-
-				{#each [1, 2, 3, 4] as offset}
-					<line
-						class='minor'
-						y1='42'
-						y2='45'
-						transform='rotate({6 * (minute + offset)})'
-					/>
-				{/each}
-			{/each}
-
-			<!-- hour hand -->
-			<line
-				class='hour'
-				y1='2'
-				y2='-20'
-				transform='rotate({30 * hours + minutes / 2})'
-			/>
-
-			<!-- minute hand -->
-			<line
-				class='minute'
-				y1='4'
-				y2='-30'
-				transform='rotate({6 * minutes + seconds / 10})'
-			/>
-
-			<!-- second hand -->
-			<g transform='rotate({6 * seconds})'>
-				<line class='second' y1='10' y2='-38'/>
-				<line class='second-counterweight' y1='10' y2='2'/>
-			</g>
-		</svg>
-	</div>
-
-	<div id="right-column" class="column">
-
-		{#await data}
-			<div class="spinner-border mt-5" role="status">
-				<span class="sr-only">Loading...</span>
-			</div>
-		{:then value}
-			{initComponent(value)}
-			
-			{#if value.current.show}
-
-			<div id="current-schedule">
-				<h1 class="schedule-title">{@html displayShowName(value.current.show)} {displayShowSchedule(value.current)}</h1>
-				<!-- <div class="schedule-details">
-					<b>Type:</b> {value.current.show.type}, <b>Host:</b> {value.current.show.host}</div>-->
-			</div> 
-			<div id="playlist">
-
-				{#if value.current.playlist}
-					<ol>
-					{#each value.current.playlist.entries as entry, index}
-						{#if isActive(entry, value.track)}
-						
-						<li id="current-playlist-entry" class="playlist-entry is-active">
-							<!-- <span class="play-icon">&#9654;</span> -->
-							<span class="track-title">{displayTitle(entry)}</span>
-							<span class="track-time-left">({formatTime(timeLeft)})</span>
-						</li>
-
-						{:else}
-
-						<li class="playlist-entry">
-							<span class="track-title">{displayTitle(entry)}</span>
-							<span class="track-duration">({formatTime(entry.duration)})</span>
-						</li>	
-
-						{/if}
-
-					{/each}
-					</ol>
-				{:else}
-
-					<div id="current-track" class="is-active">
-						<h2>
-							<span class="track-title">{displayTitle(value.track)}</span>
-							<span class="track-time-left">{formatTime(timeLeft)}</span>
-						</h2>
-					</div>
-				{/if}
-			</div>
-			<div id="next-schedule">
-				<h3 class="schedule-title">Next: {@html displayShowName(value.next.show)} {displayShowSchedule(value)}</h3>
-			</div>
-
-			{/if}
-		{:catch error}
-			<div class="error"><p>{error}</p></div>
-		{/await}
-
-	</div>
-
-</div>
-
-<footer>
-	<a href="https://gitlab.servus.at/aura/meta"><img id="aura-logo" src="https://gitlab.servus.at/aura/meta/-/raw/master/images/aura-logo.png" alt="Aura Logo" /></a>
-	<br/>
-	Studio Clock is powered by <a href="https://gitlab.servus.at/autoradio">Aura Engine</a>
-</footer>
\ No newline at end of file
diff --git a/contrib/aura-clock/src/main.js b/contrib/aura-clock/src/main.js
deleted file mode 100644
index edb5da3e..00000000
--- a/contrib/aura-clock/src/main.js
+++ /dev/null
@@ -1 +0,0 @@
-import StudioClock from './StudioClock.svelte';
diff --git a/contrib/engine-api b/contrib/engine-api
new file mode 160000
index 00000000..ae560241
--- /dev/null
+++ b/contrib/engine-api
@@ -0,0 +1 @@
+Subproject commit ae560241e5947f595a793413dfc48657807233b0
diff --git a/contrib/engine-clock b/contrib/engine-clock
new file mode 160000
index 00000000..6ae833ad
--- /dev/null
+++ b/contrib/engine-clock
@@ -0,0 +1 @@
+Subproject commit 6ae833ad05501cfed65d54becf1f749bded1fd0d
-- 
GitLab